PERFORCE change 152765 for review
Peter Wemm
peter at FreeBSD.org
Mon Nov 10 13:17:50 PST 2008
http://perforce.freebsd.org/chv.cgi?CH=152765
Change 152765 by peter at peter_freefall on 2008/11/10 21:17:30
Make the 64 bit to 32 bit sysctl converter work. I think I may have set
a new personal best in number of errors per line of code.
Affected files ...
.. //depot/projects/valgrind/coregrind/m_aspacemgr/aspacemgr-freebsd.c#13 edit
.. //depot/projects/valgrind/coregrind/m_ume.c#6 edit
Differences ...
==== //depot/projects/valgrind/coregrind/m_aspacemgr/aspacemgr-freebsd.c#13 (text+ko) ====
@@ -2920,7 +2920,7 @@
static Char procmap_buf[M_PROCMAP_BUF];
#if defined(VGP_x86_freebsd)
-static Bool is32on64(void)
+static Bool test_is32on64(void)
{
Int oid[2];
vki_size_t len;
@@ -2954,24 +2954,27 @@
{
struct vki_kinfo_vmentry_32on64 *kve64, t;
struct vki_kinfo_vmentry *kve32;
+ Int i;
- aspacem_assert(sizeof(vki_kinfo_vmentry) < sizeof(vki_kinfo_vmentry_32on64));
+ aspacem_assert(sizeof(struct vki_kinfo_vmentry) < sizeof(struct vki_kinfo_vmentry_32on64));
kve64 = (struct vki_kinfo_vmentry_32on64 *)procmap_buf;
kve32 = (struct vki_kinfo_vmentry *)procmap_buf;
- for (i = 0; i < *len / sizeof(vki_kinfo_vmentry_32on64); i++, kve32++, kve64++) {
+ aspacem_assert(sizeof(kve32->kve_path) == sizeof(kve64->kve_path));
+ for (i = 0; i < *len / sizeof(struct vki_kinfo_vmentry_32on64); i++, kve32++, kve64++) {
t = *kve64;
- aspacem_assert(t.kve_start < 0x100000000ul);
- aspacem_assert(t.kve_end < 0x100000000ul);
- kve32->kve_structsize = t.kve_structsize;
- kve32->kve_start = t.kve_start;
- kve32->kve_end = t.kve_end;
+ aspacem_assert(t.kve_start < 0x100000000ull);
+ aspacem_assert(t.kve_end < 0x100000000ull);
+ aspacem_assert(t.kve_structsize == sizeof(struct vki_kinfo_vmentry_32on64));
+ kve32->kve_structsize = sizeof(struct vki_kinfo_vmentry);
+ kve32->kve_start = (void *)(UWord)t.kve_start;
+ kve32->kve_end = (void *)(UWord)t.kve_end;
kve32->kve_protection = t.kve_protection;
- kve32->kve_path = t.kve_path;
+ VG_(memcpy)(kve32->kve_path, t.kve_path, sizeof(t.kve_path));
kve32->kve_offset = t.kve_offset;
kve32->kve_fsid = t.kve_fsid;
kve32->kve_fileid = t.kve_fileid;
}
- *len = *len * sizeof(vki_kinfo_vmentry) / sizeof(vki_kinfo_vmentry_32on64);
+ *len = *len * sizeof(struct vki_kinfo_vmentry) / sizeof(struct vki_kinfo_vmentry_32on64);
}
#endif
@@ -3007,7 +3010,7 @@
ML_(am_exit)(1);
}
#if defined(VGP_x86_freebsd)
- if (is32on64())
+ if (test_is32on64())
fix_32on64(&len);
#endif
==== //depot/projects/valgrind/coregrind/m_ume.c#6 (text+ko) ====
@@ -402,6 +402,7 @@
//VG_(printf)("interpreter is %s\n", buf);
#if defined(VGP_x86_freebsd)
+ sres.isError = True;
/* Hack. FreeBSD's kernel overloads the interpreter name. */
if (VG_(strcmp)(buf, "/libexec/ld-elf.so.1") == 0 ||
VG_(strcmp)(buf, "/usr/libexec/ld-elf.so.1") == 0) {
More information about the p4-projects
mailing list