[Ltrace-devel] [PATCH 0/1] Fix only first argument decoded on MIPS uClibc

Oliver Spornitz ospornit at rz-online.de
Sun Feb 10 15:30:28 UTC 2013


Hello,

I tested the current HEAD of master branch on a mipseb uclibc machine
with a simple hello program and got the following result:

# ltrace -iS /opt/bin/hello
[0x2aaa9bb4] SYS_mmap(0, )                         = 
[0x2aaa9858] SYS_stat("etc/ld.so.cache", )         = 
[0x2aaa9eb4] SYS_open("/lib/libc.so.0", )          = 
[0x2aaa9ef4] SYS_fstat(3, )                        = 
[0x2aaa9fc0] SYS_mmap(0, )                         = 
[0x2aaaa048] SYS_read(3, )                         = 4096
[0x2aaaa228] SYS_mmap(0, )                         = 
[0x2aaaa524] SYS_mmap(0x2aabd000, )                = 
[0x2aaaa364] SYS_mmap(0x2ab29000, )                = 
[0x2aaaa4b0] SYS_mmap(0x2ab2b000, )                = 
[0x2aaaa5f0] SYS_close(3)                        = 0
[0x2aaaa874] SYS_munmap(0x2aaae000, )              = 
[0x2ab0be14] SYS_ioctl(0, )                        = 
[0x2ab0be14] SYS_ioctl(1, )                        = 
[0x4005a4] __uClibc_main(0x400720,  <unfinished ...>
[0x2aae6240] _init(0x7f948dc8, )                   = 
[0x2aae628c] main(1,  <unfinished ...>
[0x400754] puts("" <unfinished ...>
[0x2ab0f604] SYS_write(1, 
)                        = 
[0x400754] <... puts resumed> )                  = 1
[0x2aae628c] <... main resumed> )                = 
[0x2ab03384] _fini(0x7f948ce0, )                   = 
[0x2ab09094] SYS_exit(0 <unfinished ...>
[0xffffffff] +++ exited (status 0) +++

Only the first argument is shown and return codes are missing.
I tracked this down to commit 2ae374a196ca76406cd14503622060c2c5dc4cef

Before that commit ltrace output looks like this:

# ltrace -iS /opt/bin/hello
[0x2aaa9bb4] SYS_mmap(0, 20, 3, 2050)            = 0x2aaad000
[0x2aaa9858] SYS_stat("etc/ld.so.cache", 0x7fa36a18) = -1
[0x2aaa9eb4] SYS_open("/lib/libc.so.0", 0, 00)   = 3
[0x2aaa9ef4] SYS_fstat(3, 0x7fa36128)            = 0
[0x2aaa9fc0] SYS_mmap(0, 4096, 3, 2050)          = 0x2aaae000
[0x2aaaa048] SYS_read(3, "\177ELF\001\002\001", 4096) = 4096
[0x2aaaa228] SYS_mmap(0, 0x72000, 0, 2050)       = 0x2aabd000
[0x2aaaa524] SYS_mmap(0x2aabd000, 0x5b134, 5, 18) = 0x2aabd000
[0x2aaaa364] SYS_mmap(0x2ab29000, 4644, 3, 18)   = 0x2ab29000
[0x2aaaa4b0] SYS_mmap(0x2ab2b000, 0x3f88, 3, 2066) = 0x2ab2b000
[0x2aaaa5f0] SYS_close(3)                        = 0
[0x2aaaa874] SYS_munmap(0x2aaae000, 4096)        = 0
[0x2ab0be14] SYS_ioctl(0, 0x540d, 0x7fa369f8, 0) = 0
[0x2ab0be14] SYS_ioctl(1, 0x540d, 0x7fa369f8, 0) = 0
[0x4000000] --- SIGSEGV (Segmentation fault) ---
[0xffffffff] +++ killed by SIGSEGV +++

I did not see this problem with ltrace on my x86 machine ubuntu linux 
machine. It seems to be specific to uClibc, probably not only on mips.
The following patch fixes that.

Regards
OS





More information about the Ltrace-devel mailing list