Date: Tue, 26 Jun 2012 03:26:01 +0530 From: Shrikanth Kamath <shrikanth07@gmail.com> To: freebsd-hackers@freebsd.org Subject: DTrace 32 bit on 64 bit machine? Message-ID: <CAEOAkMXo83s6OmdcLDz6-LiW2PZ9YZomLfVagd8-vM44sKZSWg@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
Can the DTrace user space application compiled as 32 bit app be run on machine with x86_64 kernel I have this DTrace port done for code base based on FreeBSD 6.1, and the app is crashing on the amd64 machine with assert Assertion failed: (fsz > 0), function _libelf_getphdr, file ../../../../src/bsd/lib/libelf/libelf_phdr.c, lie 83. I do not have the user space DTrace enabled. Pretty much stuff picked up from FreeBSD 8.1 Looking at libdtrace code, there is this section in function "dt_module_update", #if defined(__i386__) /* * Find the first load section and figure out the relocation * offset for the symbols. The kernel module will not need * relocation, but the kernel linker modules will. */ for (i = 0; gelf_getphdr(dmp->dm_elf, i, &ph) != NULL; i++) { But the actual failure is because of faulty elf header... #2 0xc822bb02 in abort () from /usr/lib/libc.so.6 #3 0xc8205aea in __assert from /usr/lib/libc.so.6 #4 0xc812fbb4 in _libelf_getphdr (e=0xffefc4c4, ec=2) at libelf_phdr.c:83 <<== The same is not getting passed down, 'e' is now different and gibberish. #5 0xc812c3ac in gelf_getphdr (e=0x805df80, index=0, ...) at libelf/gelf_phdr.c:87 <<== The struct _Elf 'e' is sane #6 0xc80ea26c in dt_module_update at dt_module.c:934 But the elf header read from the kernel module is sane.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAEOAkMXo83s6OmdcLDz6-LiW2PZ9YZomLfVagd8-vM44sKZSWg>