PERFORCE change 151783 for review
Peter Wemm
peter at FreeBSD.org
Thu Oct 23 06:25:37 UTC 2008
http://perforce.freebsd.org/chv.cgi?CH=151783
Change 151783 by peter at peter_cheese on 2008/10/23 06:25:33
Checkpoint catchup to 3.3.2
Affected files ...
.. //depot/projects/valgrind/coregrind/m_debugger.c#3 edit
.. //depot/projects/valgrind/coregrind/m_libcfile.c#4 edit
.. //depot/projects/valgrind/coregrind/m_libcproc.c#4 edit
.. //depot/projects/valgrind/coregrind/m_libcsignal.c#4 edit
.. //depot/projects/valgrind/coregrind/pub_core_machine.h#3 edit
.. //depot/projects/valgrind/include/pub_tool_machine.h#3 edit
.. //depot/projects/valgrind/include/vki/vki-freebsd.h#3 edit
Differences ...
==== //depot/projects/valgrind/coregrind/m_debugger.c#3 (text+ko) ====
@@ -1,4 +1,4 @@
-
+
/*--------------------------------------------------------------------*/
/*--- Attaching a debugger. m_debugger.c ---*/
/*--------------------------------------------------------------------*/
@@ -211,6 +211,9 @@
#elif defined(VGP_ppc64_aix5)
I_die_here;
+#elif defined(VGP_x86_freebsd) || defined(VGP_amd64_freebsd)
+ I_die_here;
+
#else
# error Unknown arch
#endif
==== //depot/projects/valgrind/coregrind/m_libcfile.c#4 (text+ko) ====
@@ -227,6 +227,13 @@
TRANSLATE_TO_vg_stat(vgbuf, &buf);
return res;
}
+# elif defined(VGO_freebsd)
+ { struct vki_stat buf;
+ res = VG_(do_syscall2)(__NR_stat, (UWord)file_name, (UWord)&buf);
+ if (!res.isError)
+ TRANSLATE_TO_vg_stat(vgbuf, &buf);
+ return res;
+ }
# elif defined(VGO_aix5)
{ struct vki_stat buf;
res = VG_(do_syscall4)(__NR_AIX5_statx,
@@ -272,6 +279,13 @@
TRANSLATE_TO_vg_stat(vgbuf, &buf);
return res.isError ? (-1) : 0;
}
+# elif defined(VGO_freebsd)
+ { struct vki_stat buf;
+ res = VG_(do_syscall2)(__NR_fstat, (UWord)fd, (UWord)&buf);
+ if (!res.isError)
+ TRANSLATE_TO_vg_stat(vgbuf, &buf);
+ return res.isError ? (-1) : 0;
+ }
# elif defined(VGO_aix5)
I_die_here;
# else
@@ -306,6 +320,8 @@
{
# if defined(VGO_linux)
return VG_(do_syscall2)(__NR_dup2, oldfd, newfd);
+# elif defined(VGO_freebsd)
+ return VG_(do_syscall2)(__NR_dup2, oldfd, newfd);
# elif defined(VGO_aix5)
I_die_here;
# else
@@ -383,11 +399,20 @@
return True;
}
# elif defined(VGO_freebsd)
- res = VG_(do_syscall2)(__NR___getcwd, (UWord)buf, size);
+ /* Simple: just ask the kernel */
+ { SysRes res
+ = VG_(do_syscall2)(__NR___getcwd, (UWord)startup_wd, szB-1);
+ vg_assert(startup_wd[szB-1] == 0);
+ if (res.isError) {
+ return False;
+ } else {
+ startup_wd_acquired = True;
+ return True;
+ }
+ }
# else
# error Unknown OS
# endif
-#endif
}
/* Copy the previously acquired startup_wd into buf[0 .. size-1],
==== //depot/projects/valgrind/coregrind/m_libcproc.c#4 (text+ko) ====
@@ -228,7 +228,7 @@
Int VG_(waitpid)(Int pid, Int *status, Int options)
{
-# if defined(VGO_linux)
+# if defined(VGO_linux) || defined(VGO_freebsd)
SysRes res = VG_(do_syscall4)(__NR_wait4, pid, (UWord)status, options, 0);
return res.isError ? -1 : res.res;
# elif defined(VGO_aix5)
@@ -372,7 +372,7 @@
Int VG_(gettid)(void)
{
// VG_(printf)("valgrind: gettid() faked\n");
- return VG_(do_syscall0)(__NR_getpid) . val;
+ return VG_(do_syscall0)(__NR_getpid).res;
}
#else
Int VG_(gettid)(void)
@@ -653,7 +653,7 @@
res = VG_(do_syscall6)(__NR___sysctl, (UWord)name, namelen, (UWord)oldp, (UWord)oldlenp, (UWord)newp, newlen);
if (res.isError)
return -1;
- return res.val;
+ return res.res;
}
Int VG_(sysctlbyname)(const Char *name, void *oldp, vki_size_t *oldlenp, void *newp, vki_size_t newlen)
@@ -681,7 +681,7 @@
res = VG_(do_syscall1)(__NR_modfind, (UWord)modname);
if (res.isError)
return -1;
- return res.val;
+ return res.res;
}
#endif
==== //depot/projects/valgrind/coregrind/m_libcsignal.c#4 (text+ko) ====
@@ -234,7 +234,7 @@
static const struct vki_timespec zero = { 0, 0 };
/* only on freebsd6.x and higher */
SysRes res = VG_(do_syscall3)(__NR_sigtimedwait, (UWord)set, (UWord)info,
- (UWord)timeout);
+ (UWord)&zero);
return res.isError ? -1 : res.res;
}
#elif defined(VGO_aix5) || (defined(VGO_freebsd) && __FreeBSD__ < 6)
==== //depot/projects/valgrind/coregrind/pub_core_machine.h#3 (text+ko) ====
@@ -39,12 +39,12 @@
#include "pub_tool_machine.h"
-#if defined(VGP_x86_linux)
+#if defined(VGP_x86_linux) || defined(VGP_x86_freebsd)
# define VG_ELF_DATA2XXX ELFDATA2LSB
# define VG_ELF_MACHINE EM_386
# define VG_ELF_CLASS ELFCLASS32
# undef VG_PLAT_USES_PPCTOC
-#elif defined(VGP_amd64_linux)
+#elif defined(VGP_amd64_linux) || defined(VGP_amd64_freebsd)
# define VG_ELF_DATA2XXX ELFDATA2LSB
# define VG_ELF_MACHINE EM_X86_64
# define VG_ELF_CLASS ELFCLASS64
==== //depot/projects/valgrind/include/pub_tool_machine.h#3 (text+ko) ====
@@ -31,13 +31,13 @@
#ifndef __PUB_TOOL_MACHINE_H
#define __PUB_TOOL_MACHINE_H
-#if defined(VGP_x86_linux)
+#if defined(VGP_x86_linux) || defined(VGP_x86_freebsd)
# define VG_MIN_INSTR_SZB 1 // min length of native instruction
# define VG_MAX_INSTR_SZB 16 // max length of native instruction
# define VG_CLREQ_SZB 14 // length of a client request, may
// be larger than VG_MAX_INSTR_SZB
# define VG_STACK_REDZONE_SZB 0 // number of addressable bytes below %RSP
-#elif defined(VGP_amd64_linux)
+#elif defined(VGP_amd64_linux) || defined(VGP_amd64_freebsd)
# define VG_MIN_INSTR_SZB 1
# define VG_MAX_INSTR_SZB 16
# define VG_CLREQ_SZB 19
==== //depot/projects/valgrind/include/vki/vki-freebsd.h#3 (text+ko) ====
@@ -255,6 +255,11 @@
// From sys/time.h
//----------------------------------------------------------------------
+#define VKI_CLOCK_REALTIME 0
+#define VKI_CLOCK_MONOTONIC 1
+#define VKI_CLOCK_PROCESS_CPUTIME_ID 2
+#define VKI_CLOCK_THREAD_CPUTIME_ID 3
+
struct vki_timezone {
int tz_minuteswest; /* minutes west of Greenwich */
int tz_dsttime; /* type of dst correction */
@@ -336,9 +341,18 @@
vki_uid_t st_uid;
vki_gid_t st_gid;
vki_dev_t st_rdev;
+#if 0
struct vki_timespec st_atimespec;
struct vki_timespec st_mtimespec;
struct vki_timespec st_ctimespec;
+#else
+ vki_time_t st_atime;
+ long st_atime_nsec;
+ vki_time_t st_mtime;
+ long st_mtime_nsec;
+ vki_time_t st_ctime;
+ long st_ctime_nsec;
+#endif
vki_off_t st_size;
vki_blkcnt_t st_blocks;
vki_blksize_t st_blksize;
More information about the p4-projects
mailing list