[Ltrace-devel] Problem running ltrace on Android

pmachata at redhat.com pmachata at redhat.com
Mon May 16 15:31:09 UTC 2011


DUSHYANT ARORA <dushyantarora13 at gmail.com> writes:

> Hello All,
>
> I cross-compiled ltrace to ARM architecture. I statically linked arm
> version of libelf and libiberty to create the executable.
>
>
>  gcc main.o /../../libelf.a /../../libiberty.a -libsupc++ -o ltrace
>
> In the last step of compilation I had got this warning.
>
>   [sbox-android: ~/ltrace-0.5.3] > gcc --static main.o libltrace.a
>   -lsupc++ -o ltrace
>   /scratchbox/compilers/arm-linux-cs2009q3-67/lib/libelf/usr/lib/libelf.a
>   /scratchbox/compilers/arm-linux-cs2009q3-67/lib/binutils-dev/usr/lib/libiberty.a
>
>   libltrace.a(execute_program.o): In function `change_uid':
>   /home/bruce/Desktop/ltrace-0.5.3/execute_program.c:35: warning: Using
>   'initgroups' in statically linked applications requires at runtime the
>   shared libraries from the glibc version used for linking
>   /home/bruce/Desktop/ltrace-0.5.3/execute_program.c:28: warning: Using
>   'getpwnam' in statically linked applications requires at runtime the
>   shared libraries from the glibc version used for linking
>
> When I run ltrace on the Android Emulator I get the following error:
>
>  # ./ltrace ls -l
>  ./ltrace ls -l
>  ./ltrace: Couldn't get .hash data from "/system/bin/ls"

Hi there,

I had a discussion off-list with Dushyant Arora and he kindly provided
me with a "ping" binary that exhibits the same problems as ls in the
example above.  I don't see what could be causing it, to me it looks
like a perfectly ordinary binary with standard (non-GNU) hash table.
When I turn off the arch detection in my x86_64 build of ltrace, it can
open the file and load the data without problems.  (Of course it then
fails to exec the binary, but the point is that hash loading works.)

There are two places where the error that we see might occur in ltrace.
Figuring out what exactly triggers it might help.  I created a small
patch that dissects the conditionals and gives a unique error message
for each separate case.  That would at least point us to a single
location in the source where the error occurs.

In any case, this would need someone with the ARM experience,  I don't
think I'll get to setting up the emulator anytime soon.

By the way, I don't think ltrace really needs to use the hash data.  We
could just iterate all the symbols in a brute-force manner.

Thanks,
PM

P.S. there's some dubious business with sh_info of .rel.plt and .rel.dyn
pointing to .dynamic, but the the relocated data are all in .got, so I
don't see how this could cause problems.  I'm attaching full readelf
output for further peruse.

===File ~/ltrace-hash-diagnostics.patch=====================
diff --git a/ltrace-elf.c b/ltrace-elf.c
index 68cc67c..3697de1 100644
--- a/ltrace-elf.c
+++ b/ltrace-elf.c
@@ -315,17 +314,22 @@ do_init_elf(struct ltelf *lte, const char *filename) {
 			lte->hash_type = SHT_HASH;
 
 			data = elf_getdata(scn, NULL);
-			if (data == NULL || elf_getdata(scn, data) != NULL
-			    || data->d_off || data->d_size != shdr.sh_size)
+			if (data == NULL)
 				error(EXIT_FAILURE, 0,
 				      "Couldn't get .hash data from \"%s\"",
 				      filename);
 
+			if (elf_getdata(scn, data) != NULL
+			    || data->d_off || data->d_size != shdr.sh_size)
+				error(EXIT_FAILURE, 0,
+				      "Multiple data chunks in .hash from \"%s\"",
+				      filename);
+
 			if (shdr.sh_entsize == 4) {
 				/* Standard conforming ELF.  */
 				if (data->d_type != ELF_T_WORD)
 					error(EXIT_FAILURE, 0,
-					      "Couldn't get .hash data from \"%s\"",
+					      "Wrong type of .hash data from \"%s\"",
 					      filename);
 				lte->hash = (Elf32_Word *) data->d_buf;
 			} else if (shdr.sh_entsize == 8) {
============================================================

===File ~/tmp/arm-ping-readelf.txt==========================
ELF Header:
  Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
  Class:                             ELF32
  Data:                              2's complement, little endian
  Ident Version:                     1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              EXEC (Executable file)
  Machine:                           ARM
  Version:                           1 (current)
  Entry point address:               0x9120
  Start of program headers:          52 (bytes into file)
  Start of section headers:          25788 (bytes into file)
  Flags:                             0x5000000
  Size of this header:               52 (bytes)
  Size of program header entries:    32 (bytes)
  Number of program headers entries: 7
  Size of section header entries:    40 (bytes)
  Number of section headers entries: 23
  Section header string table index: 22

Section Headers:
[Nr] Name                 Type         Addr     Off    Size   ES Flags Lk Inf Al
[ 0]                      NULL         00000000 000000 000000  0        0   0  0
[ 1] .interp              PROGBITS     00008114 000114 000013  0 A      0   0  1
[ 2] .hash                HASH         00008128 000128 000268  4 A      3   0  4
[ 3] .dynsym              DYNSYM       00008390 000390 000550 16 A      4   0  4
[ 4] .dynstr              STRTAB       000088e0 0008e0 000348  0 A      0   0  1
[ 5] .rel.plt             REL          00008c28 000c28 0001e0  8 A      3   2  4
[ 6] .rel.dyn             REL          00008e08 000e08 000028  8 A      3   2  4
[ 7] .plt                 PROGBITS     00008e30 000e30 0002e4  0 AX     0   0  4
[ 8] .text                PROGBITS     00009120 001120 0030ec  0 AX     0   0 16
[ 9] .rodata              PROGBITS     0000c20c 00420c 001196  1 A      0   0  4
[10] .ARM.extab           PROGBITS     0000d3a4 0053a4 00000c  0 A      0   0  4
[11] .ARM.exidx           ARM_EXIDX    0000d3b0 0053b0 0000d0  8 A      8   0  4
[12] .preinit_array       PREINIT_ARRAY 0000e000 006000 000008  0 WA     0   0  1
[13] .init_array          INIT_ARRAY   0000e008 006008 000008  0 WA     0   0  1
[14] .fini_array          FINI_ARRAY   0000e010 006010 000008  0 WA     0   0  1
[15] .ctors               PROGBITS     0000e018 006018 000008  0 WA     0   0  1
[16] .dynamic             DYNAMIC      0000e020 006020 0000c0  8 WA     4   0  4
[17] .got                 PROGBITS     0000e0e0 0060e0 0001c4  0 WA     0   0  4
[18] .data                PROGBITS     0000e2a4 0062a4 00010c  0 WA     0   0  4
[19] .bss                 NOBITS       0000e3b0 0063b0 013134  0 WA     0   0 16
[20] .note.gnu.gold-version NOTE         00000000 0063b0 000018  0        0   0  4
[21] .ARM.attributes      ARM_ATTRIBUTES 00000000 0063c8 000027  0        0   0  1
[22] .shstrtab            STRTAB       00000000 0063ef 0000cd  0        0   0  1

Program Headers:
  Type           Offset   VirtAddr   PhysAddr   FileSiz  MemSiz   Flg Align
  PHDR           0x000034 0x00008034 0x00008034 0x0000e0 0x0000e0 R   0x4
  INTERP         0x000114 0x00008114 0x00008114 0x000013 0x000013 R   0x1
	[Requesting program interpreter: /system/bin/linker]
  LOAD           0x000000 0x00008000 0x00008000 0x005480 0x005480 R E 0x1000
  LOAD           0x006000 0x0000e000 0x0000e000 0x0003b0 0x0134e4 RW  0x1000
  DYNAMIC        0x006020 0x0000e020 0x0000e020 0x0000c0 0x0000c0 RW  0x4
  GNU_STACK      0x000000 0x00000000 0x00000000 0x000000 0x000000 RW  0x0
  ARM_EXIDX      0x0053b0 0x0000d3b0 0x0000d3b0 0x0000d0 0x0000d0 R   0x4

 Section to Segment mapping:
  Segment Sections...
   00     
   01      [RO: .interp]
   02      [RO: .interp .hash .dynsym .dynstr .rel.plt .rel.dyn .plt .text .rodata .ARM.extab .ARM.exidx]
   03      .preinit_array .init_array .fini_array .ctors .dynamic .got .data .bss
   04      .dynamic
   05     
   06      [RO: .ARM.exidx]

Dynamic segment contains 24 entries:
 Addr: 0x0000e020  Offset: 0x006020  Link to section: [ 4] '.dynstr'
  Type              Value
  PLTGOT            0x0000e1a8
  PLTRELSZ          480 (bytes)
  JMPREL            0x00008c28
  PLTREL            REL
  REL               0x00008e08
  RELSZ             40 (bytes)
  RELENT            8 (bytes)
  DEBUG             
  SYMTAB            0x00008390
  SYMENT            16 (bytes)
  STRTAB            0x000088e0
  STRSZ             840 (bytes)
  HASH              0x00008128
  NEEDED            Shared library: [libc.so]
  NEEDED            Shared library: [libstdc++.so]
  NEEDED            Shared library: [libm.so]
  PREINIT_ARRAY     0x0000e000
  PREINIT_ARRAYSZ   0x00000008
  INIT_ARRAY        0x0000e008
  INIT_ARRAYSZ      8 (bytes)
  FINI_ARRAY        0x0000e010
  FINI_ARRAYSZ      8 (bytes)
  FLAGS             
  NULL              

Relocation section [ 5] '.rel.plt' for section [ 2] '.hash' at offset 0xc28 contains 60 entries:
  Offset      Type                 Value       Name
  0x0000e1b4  ARM_JUMP_SLOT        0000000000  __libc_init
  0x0000e1b8  ARM_JUMP_SLOT        0000000000  __aeabi_idiv
  0x0000e1bc  ARM_JUMP_SLOT        0000000000  setsockopt
  0x0000e1c0  ARM_JUMP_SLOT        0000000000  perror
  0x0000e1c4  ARM_JUMP_SLOT        0000000000  fputs
  0x0000e1c8  ARM_JUMP_SLOT        0000000000  exit
  0x0000e1cc  ARM_JUMP_SLOT        0000000000  strtol
  0x0000e1d0  ARM_JUMP_SLOT        0000000000  fprintf
  0x0000e1d4  ARM_JUMP_SLOT        0000000000  gethostbyaddr
  0x0000e1d8  ARM_JUMP_SLOT        0000000000  inet_ntoa
  0x0000e1dc  ARM_JUMP_SLOT        0000000000  strcpy
  0x0000e1e0  ARM_JUMP_SLOT        0000000000  snprintf
  0x0000e1e4  ARM_JUMP_SLOT        0000000000  sscanf
  0x0000e1e8  ARM_JUMP_SLOT        0000000000  printf
  0x0000e1ec  ARM_JUMP_SLOT        0000000000  putchar
  0x0000e1f0  ARM_JUMP_SLOT        0000000000  memcpy
  0x0000e1f4  ARM_JUMP_SLOT        0000000000  gettimeofday
  0x0000e1f8  ARM_JUMP_SLOT        0000000000  __aeabi_lmul
  0x0000e1fc  ARM_JUMP_SLOT        0000000000  __aeabi_idivmod
  0x0000e200  ARM_JUMP_SLOT        0000000000  write
  0x0000e204  ARM_JUMP_SLOT        0000000000  puts
  0x0000e208  ARM_JUMP_SLOT        0000000000  memset
  0x0000e20c  ARM_JUMP_SLOT        0000000000  sendmsg
  0x0000e210  ARM_JUMP_SLOT        0000000000  __aeabi_ldivmod
  0x0000e214  ARM_JUMP_SLOT        0000000000  fputc
  0x0000e218  ARM_JUMP_SLOT        0000000000  __aeabi_uidiv
  0x0000e21c  ARM_JUMP_SLOT        0000000000  __aeabi_uidivmod
  0x0000e220  ARM_JUMP_SLOT        0000000000  setitimer
  0x0000e224  ARM_JUMP_SLOT        0000000000  sigaction
  0x0000e228  ARM_JUMP_SLOT        0000000000  getpid
  0x0000e22c  ARM_JUMP_SLOT        0000000000  getsockopt
  0x0000e230  ARM_JUMP_SLOT        0000000000  atoi
  0x0000e234  ARM_JUMP_SLOT        0000000000  strchr
  0x0000e238  ARM_JUMP_SLOT        0000000000  __aeabi_fmul
  0x0000e23c  ARM_JUMP_SLOT        0000000000  __aeabi_f2iz
  0x0000e240  ARM_JUMP_SLOT        0000000000  abort
  0x0000e244  ARM_JUMP_SLOT        0000000000  __swbuf
  0x0000e248  ARM_JUMP_SLOT        0000000000  fflush
  0x0000e24c  ARM_JUMP_SLOT        0000000000  memcmp
  0x0000e250  ARM_JUMP_SLOT        0000000000  __errno
  0x0000e254  ARM_JUMP_SLOT        0000000000  recvmsg
  0x0000e258  ARM_JUMP_SLOT        0000000000  strerror
  0x0000e25c  ARM_JUMP_SLOT        0000000000  __stack_chk_fail
  0x0000e260  ARM_JUMP_SLOT        0000000000  sched_yield
  0x0000e264  ARM_JUMP_SLOT        0000000000  poll
  0x0000e268  ARM_JUMP_SLOT        0000000000  ioctl
  0x0000e26c  ARM_JUMP_SLOT        0000000000  socket
  0x0000e270  ARM_JUMP_SLOT        0000000000  getuid
  0x0000e274  ARM_JUMP_SLOT        0000000000  setuid
  0x0000e278  ARM_JUMP_SLOT        0000000000  strcmp
  0x0000e27c  ARM_JUMP_SLOT        0000000000  getopt
  0x0000e280  ARM_JUMP_SLOT        0000000000  inet_aton
  0x0000e284  ARM_JUMP_SLOT        0000000000  gethostbyname
  0x0000e288  ARM_JUMP_SLOT        0000000000  strncpy
  0x0000e28c  ARM_JUMP_SLOT        0000000000  strlen
  0x0000e290  ARM_JUMP_SLOT        0000000000  connect
  0x0000e294  ARM_JUMP_SLOT        0000000000  getsockname
  0x0000e298  ARM_JUMP_SLOT        0000000000  close
  0x0000e29c  ARM_JUMP_SLOT        0000000000  bind
  0x0000e2a0  ARM_JUMP_SLOT        0000000000  malloc

Relocation section [ 6] '.rel.dyn' for section [ 2] '.hash' at offset 0xe08 contains 5 entries:
  Offset      Type                 Value       Name
  0x0000e184  ARM_GLOB_DAT         0000000000  __stack_chk_guard
  0x0000e100  ARM_GLOB_DAT         0000000000  __sF
  0x0000e1a0  ARM_GLOB_DAT         0000000000  optind
  0x0000e16c  ARM_GLOB_DAT         0000000000  optarg
  0x0000e108  ARM_GLOB_DAT         0000000000  _ctype_

Histogram for bucket list length in section [ 2] '.hash' (total of 67 buckets):
 Addr: 0x00008128  Offset: 0x000128  Link to section: [ 3] '.dynsym'
 Length  Number  % of total  Coverage
      0      16       23,9%
      1      31       46,3%     36,9%
      2      11       16,4%     63,1%
      3       6        9,0%     84,5%
      4       2        3,0%     94,0%
      5       1        1,5%    100,0%
 Average number of tests:   successful lookup: 1,607143
			  unsuccessful lookup: 1,253731

Symbol table [ 3] '.dynsym' contains 85 entries:
 0 local symbols  String table: [ 4] '.dynstr'
  Num:    Value   Size Type    Bind   Vis          Ndx Name
    0: 00000000      0 NOTYPE  LOCAL  DEFAULT    UNDEF 
    1: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF __aeabi_unwind_cpp_pr0
    2: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF strlen
    3: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF __errno
    4: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF snprintf
    5: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF write
    6: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF close
    7: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF __stack_chk_fail
    8: 00000000      0 OBJECT  GLOBAL DEFAULT    UNDEF __stack_chk_guard
    9: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF memset
   10: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF memcmp
   11: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF sscanf
   12: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF abort
   13: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF fprintf
   14: 00000000      0 OBJECT  GLOBAL DEFAULT    UNDEF __sF
   15: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF __aeabi_uidiv
   16: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF memcpy
   17: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF __aeabi_uidivmod
   18: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF malloc
   19: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF atoi
   20: 000091ed      4 FUNC    GLOBAL DEFAULT        8 dlopen
   21: 000091f1      4 FUNC    GLOBAL DEFAULT        8 dlsym
   22: 000091f5      4 FUNC    GLOBAL DEFAULT        8 dlclose
   23: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF getpid
   24: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF __libc_init
   25: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF exit
   26: 00020450      0 NOTYPE  GLOBAL DEFAULT       19 __dso_handle
   27: 0000e008      0 NOTYPE  GLOBAL DEFAULT       13 __INIT_ARRAY__
   28: 0000e010      0 NOTYPE  GLOBAL DEFAULT       14 __FINI_ARRAY__
   29: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF getuid
   30: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF gettimeofday
   31: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF setitimer
   32: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF sigaction
   33: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF socket
   34: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF bind
   35: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF connect
   36: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF getsockname
   37: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF setsockopt
   38: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF getsockopt
   39: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF sendmsg
   40: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF recvmsg
   41: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF sched_yield
   42: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF poll
   43: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF __aeabi_unwind_cpp_pr1
   44: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF strchr
   45: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF __aeabi_idiv
   46: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF __aeabi_idivmod
   47: 00000000      0 OBJECT  GLOBAL DEFAULT    UNDEF optind
   48: 00000000      0 OBJECT  GLOBAL DEFAULT    UNDEF optarg
   49: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF getopt
   50: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF ioctl
   51: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF strcmp
   52: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF perror
   53: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF setuid
   54: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF strerror
   55: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF fflush
   56: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF fputc
   57: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF __swbuf
   58: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF fputs
   59: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF printf
   60: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF putchar
   61: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF puts
   62: 00000000      0 OBJECT  GLOBAL DEFAULT    UNDEF _ctype_
   63: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF __aeabi_ldivmod
   64: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF __aeabi_lmul
   65: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF strcpy
   66: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF strtol
   67: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF strncpy
   68: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF inet_aton
   69: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF inet_ntoa
   70: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF gethostbyaddr
   71: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF gethostbyname
   72: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF __aeabi_f2iz
   73: 00000000      0 FUNC    GLOBAL DEFAULT    UNDEF __aeabi_fmul
   74: 0000d3b0      0 NOTYPE  GLOBAL DEFAULT      ABS __exidx_start
   75: 0000d480      0 NOTYPE  GLOBAL DEFAULT      ABS __exidx_end
   76: 0000e2a4      0 NOTYPE  GLOBAL DEFAULT       18 __data_start
   77: 0000e3b0      0 NOTYPE  GLOBAL DEFAULT      ABS _edata
   78: 0000e3b0      0 NOTYPE  GLOBAL DEFAULT      ABS __bss_start
   79: 0000e3b0      0 NOTYPE  GLOBAL DEFAULT      ABS __bss_start__
   80: 000214e4      0 NOTYPE  GLOBAL DEFAULT      ABS _bss_end__
   81: 000214e4      0 NOTYPE  GLOBAL DEFAULT      ABS __bss_end__
   82: 000214e4      0 NOTYPE  GLOBAL DEFAULT      ABS __end__
   83: 000214e4      0 NOTYPE  GLOBAL DEFAULT      ABS _end
   84: 00080000      0 NOTYPE  GLOBAL DEFAULT      ABS _stack

Object attributes section [21] '.ARM.attributes' of 39 bytes at offset 0x63c8:
  Owner          Size
  aeabi            38
    File:          28
      CPU_name: 0
      CPU_arch: v5TE
      ARM_ISA_use: Yes

String section [4] '.dynstr' contains 840 bytes at offset 0x8e0:
  [     0]  
  [     1]  __aeabi_unwind_cpp_pr0
  [    18]  strlen
  [    1f]  __errno
  [    27]  snprintf
  [    30]  write
  [    36]  close
  [    3c]  __stack_chk_fail
  [    4d]  __stack_chk_guard
  [    5f]  memset
  [    66]  memcmp
  [    6d]  sscanf
  [    74]  abort
  [    7a]  fprintf
  [    82]  __sF
  [    87]  __aeabi_uidiv
  [    95]  memcpy
  [    9c]  __aeabi_uidivmod
  [    ad]  malloc
  [    b4]  atoi
  [    b9]  dlopen
  [    c0]  dlsym
  [    c6]  dlclose
  [    ce]  getpid
  [    d5]  __libc_init
  [    e1]  exit
  [    e6]  __dso_handle
  [    f3]  __INIT_ARRAY__
  [   102]  __FINI_ARRAY__
  [   111]  getuid
  [   118]  gettimeofday
  [   125]  setitimer
  [   12f]  sigaction
  [   139]  socket
  [   140]  bind
  [   145]  connect
  [   14d]  getsockname
  [   159]  setsockopt
  [   164]  getsockopt
  [   16f]  sendmsg
  [   177]  recvmsg
  [   17f]  sched_yield
  [   18b]  poll
  [   190]  __aeabi_unwind_cpp_pr1
  [   1a7]  strchr
  [   1ae]  __aeabi_idiv
  [   1bb]  __aeabi_idivmod
  [   1cb]  optind
  [   1d2]  optarg
  [   1d9]  getopt
  [   1e0]  ioctl
  [   1e6]  strcmp
  [   1ed]  perror
  [   1f4]  setuid
  [   1fb]  strerror
  [   204]  fflush
  [   20b]  fputc
  [   211]  __swbuf
  [   219]  fputs
  [   21f]  printf
  [   226]  putchar
  [   22e]  puts
  [   233]  _ctype_
  [   23b]  __aeabi_ldivmod
  [   24b]  __aeabi_lmul
  [   258]  strcpy
  [   25f]  strtol
  [   266]  strncpy
  [   26e]  inet_aton
  [   278]  inet_ntoa
  [   282]  gethostbyaddr
  [   290]  gethostbyname
  [   29e]  __aeabi_f2iz
  [   2ab]  __aeabi_fmul
  [   2b8]  __exidx_start
  [   2c6]  __exidx_end
  [   2d2]  __data_start
  [   2df]  _edata
  [   2e6]  __bss_start
  [   2f2]  __bss_start__
  [   300]  _bss_end__
  [   30b]  __bss_end__
  [   317]  __end__
  [   31f]  _end
  [   324]  _stack
  [   32b]  libc.so
  [   333]  libstdc++.so
  [   340]  libm.so

Note section [20] '.note.gnu.gold-version' of 24 bytes at offset 0x63b0:
  Owner          Data size  Type
  GNU                    8  GNU_GOLD_VERSION
    Linker version: gold 1.9
============================================================



More information about the Ltrace-devel mailing list