[ELDK] ELDK v4.1 - ld-2.3.5.so missing symbols
Jonathan Moore
Jonathan.Moore at ubidyne.com
Wed Mar 12 10:45:27 CET 2008
Hi,
I've been playing with Valgrind (version 3.3.0) cross compiled for a
PPC32_LINUX target.
I'm hitting an interesting bug when trying to execute Valgrind. I'm
using the following debug flags to find out what is going on. valgrind
-d --trace-redir=yes --trace-symtab=yes .......
It seems that I'm missing a symbol from ld-2.3.5.so, which is provided
by the ELDK library (version 4.1). I don't know if the ELDK library has
its symbols stripped off, but I don't think so, otherwise I assume it
wouldn't see any symbols at all.
Has anyone else come across a symbol problem like this ? Any solution
suggests would be welcome, where I can find my missing symbols ? Or
should the strlen symbol be even expected to be here ? Is this really an
ELDK issue ?
I've looked at the installation pages of ELDK, but not seen any method
mentioning symbols. Below is a debug print out from Valgrind.
--733:1:debuglog DebugLog system started by Stage 1, level 1 logging
requested
--733:1:launcher tool 'memcheck' requested
--733:1:launcher selected platform 'ppc32-linux'
--733:1:launcher launching
/data/valgrind-3.0.0/lib/valgrind/ppc32-linux/memcheck
--733:1:debuglog DebugLog system started by Stage 2 (main), level 1
logging requested
--733:1:main Welcome to Valgrind version 3.3.0 debug logging
--733:1:main Checking current stack is plausible
--733:1:main Checking initial stack was noted
--733:1:main Starting the address space manager
--733:1:main Address space manager is running
--733:1:main Starting the dynamic memory manager
--733:1:mallocfr newSuperblock at 0x41C4D000 (pszB 4194288) owner
VALGRIND/tool
--733:1:main Dynamic memory manager is running
--733:1:main Getting stage1's name
--733:1:main Get hardware capabilities ...
--733:1:main ... arch = PPC32, hwcaps = ppc32-int-flt-GX
--733:1:main Getting the working directory at startup
--733:1:main ... /opt/ubd
--733:1:main Split up command line
--733:1:main Preprocess command line opts
--733:1:main Create initial image
--733:1:initimg Loading client
--733:1:initimg Setup client env
--733:1:initimg Setup client stack
--733:1:initimg Setup client data (brk) segment
--733:1:main Setup file descriptors
--733:1:main Create fake /proc/<pid>/cmdline
--733:1:main Initialise the tool part 1 (pre_clo_init)
--733:1:main Print help and quit, if requested
--733:1:main Process Valgrind's command line options, setup logging
--733:1:mallocfr newSuperblock at 0x4204D000 (pszB 1048560) owner
VALGRIND/core
--733:1:main Print the preamble...
==733== Memcheck, a memory error detector.
==733== Copyright (C) 2002-2007, and GNU GPL'd, by Julian Seward et al.
==733== Using LibVEX rev 1804, a library for dynamic binary translation.
==733== Copyright (C) 2004-2007, and GNU GPL'd, by OpenWorks LLP.
==733== Using valgrind-3.3.0, a dynamic binary instrumentation
framework.
==733== Copyright (C) 2000-2007, and GNU GPL'd, by Julian Seward et al.
==733== For more details, rerun with: -v
==733==
--733:1:main ...finished the preamble
--733:1:main Initialise the tool part 2 (post_clo_init)
--733:1:main Initialise TT/TC
--733:1:main Initialise redirects
--733:1:mallocfr newSuperblock at 0x421C8000 (pszB 1048560) owner
VALGRIND/symtab
--733-- <<
--733-- ------ REDIR STATE after VG_(redir_initialise) ------
--733-- TOPSPECS of soname (hardwired)
--733-- ld.so.1 index
R-> 0x380320d0
--733-- ld.so.1 strcmp
R-> 0x3803205c
--733-- ld.so.1 strlen
R-> 0x38032034
--733-- ------ ACTIVE ------
--733-- >>
--733:1:main Load initial debug info
--733-- Reading syms from /lib/ld-2.3.5.so (0x4000000)
soname=ld.so.1
--733-- svma 0x0000000000, avma 0x0004000000
shoff = 98036, shnum = 21, size = 40, n_vg_oimage = 98876
.dynsym : filea 0x40281D0 .. 0x402840F, vma 0x40001D0 ..
0x400040F
.dynstr : filea 0x4028410 .. 0x402858E, vma 0x4000410 ..
0x400058E
.eh_frame : filea 0x403EA98 .. 0x403EBF7, vma 0x4016A98 ..
0x4016BF7
.got : filea 0x403F2E0 .. 0x403FA17, vma 0x40272E0 ..
0x4027A17
.plt : filea 0x403FE48 .. 0x403FECB, vma 0x4027EB8 ..
0x4027F3B
Reading (ELF, standard) dynamic symbol table (36 entries)
raw symbol [ 1]: LOC SEC : val 0x0004001D20, sz 0 NONAME
raw symbol [ 2]: LOC SEC : val 0x0004013A44, sz 0 NONAME
raw symbol [ 3]: LOC SEC : val 0x0004016A44, sz 0 NONAME
raw symbol [ 4]: LOC SEC : val 0x0004016A98, sz 0 NONAME
raw symbol [ 5]: LOC SEC : val 0x0004026E5C, sz 0 NONAME
raw symbol [ 6]: LOC SEC : val 0x0004027000, sz 0 NONAME
raw symbol [ 7]: LOC SEC : val 0x0004027A18, sz 0 NONAME
raw symbol [ 8]: LOC SEC : val 0x0004027E48, sz 0 NONAME
raw symbol [ 9]: LOC SEC : val 0x0004027F3C, sz 0 NONAME
raw symbol [ 10]: GLO OBJ : val 0x0004027A18, sz 1072 _rtld_global
raw symbol [ 11]: GLO FUN : val 0x000400F050, sz 220
_dl_make_stack_executable
record [ 11]: val 0x000400F050, sz 220
_dl_make_stack_executable
raw symbol [ 12]: GLO OBJ : val 0x0004026F48, sz 4 __libc_stack_end
raw symbol [ 13]: WEA FUN : val 0x000400FEA0, sz 308 __libc_memalign
record [ 13]: val 0x000400FEA0, sz 308 __libc_memalign
raw symbol [ 14]: WEA FUN : val 0x000400FFD4, sz 40 malloc
record [ 14]: val 0x000400FFD4, sz 40 malloc
raw symbol [ 15]: GLO OBJ : val 0x0004000000, sz 0 GLIBC_2.1
raw symbol [ 16]: GLO FUN : val 0x000400EA2C, sz 132
_dl_deallocate_tls
record [ 16]: val 0x000400EA2C, sz 132
_dl_deallocate_tls
raw symbol [ 17]: GLO OBJ : val 0x0004026F44, sz 4
__libc_enable_secure
raw symbol [ 18]: GLO FUN : val 0x000400EB28, sz 832 __tls_get_addr
record [ 18]: val 0x000400EB28, sz 832 __tls_get_addr
raw symbol [ 19]: GLO FUN : val 0x000400E74C, sz 56
_dl_get_tls_static_info
record [ 19]: val 0x000400E74C, sz 56
_dl_get_tls_static_info
raw symbol [ 20]: WEA FUN : val 0x000400FFFC, sz 36 calloc
record [ 20]: val 0x000400FFFC, sz 36 calloc
raw symbol [ 21]: GLO FUN : val 0x000400C5A0, sz 12 _dl_debug_state
record [ 21]: val 0x000400C5A0, sz 12 _dl_debug_state
raw symbol [ 22]: GLO OBJ : val 0x0004026E5C, sz 4 _dl_argv
raw symbol [ 23]: GLO FUN : val 0x000400E838, sz 448
_dl_allocate_tls_init
record [ 23]: val 0x000400E838, sz 448
_dl_allocate_tls_init
raw symbol [ 24]: GLO OBJ : val 0x0004000000, sz 0 GLIBC_2.0
raw symbol [ 25]: GLO OBJ : val 0x0004000000, sz 0 GLIBC_PRIVATE
raw symbol [ 26]: GLO OBJ : val 0x0004026E60, sz 168 _rtld_global_ro
raw symbol [ 27]: WEA FUN : val 0x0004010088, sz 152 realloc
record [ 27]: val 0x0004010088, sz 152 realloc
raw symbol [ 28]: GLO FUN : val 0x000400E61C, sz 184 _dl_tls_setup
record [ 28]: val 0x000400E61C, sz 184 _dl_tls_setup
raw symbol [ 29]: GLO FUN : val 0x0004007C64, sz 440
_dl_rtld_di_serinfo
record [ 29]: val 0x0004007C64, sz 440
_dl_rtld_di_serinfo
raw symbol [ 30]: GLO OBJ : val 0x0004013EA8, sz 14
_dl_out_of_memory
raw symbol [ 31]: GLO FUN : val 0x000400DE8C, sz 768 _dl_mcount
record [ 31]: val 0x000400DE8C, sz 768 _dl_mcount
raw symbol [ 32]: GLO FUN : val 0x000400E9F8, sz 52 _dl_allocate_tls
record [ 32]: val 0x000400E9F8, sz 52 _dl_allocate_tls
raw symbol [ 33]: GLO OBJ : val 0x0004027F58, sz 20 _r_debug
raw symbol [ 34]: GLO OBJ : val 0x0004000000, sz 0 GLIBC_2.3
raw symbol [ 35]: WEA FUN : val 0x0004010020, sz 104 free
record [ 35]: val 0x0004010020, sz 104 free
0 merged
valgrind: Fatal error at startup: a function redirection
valgrind: which is mandatory for this platform-tool combination
valgrind: cannot be set up. Details of the redirection are:
valgrind:
valgrind: A must-be-redirected function
valgrind: whose name matches the pattern: strlen
valgrind: in an object with soname matching: ld.so.1
valgrind: was not found whilst processing
valgrind: symbols from the object with soname: ld.so.1
valgrind:
valgrind: Possible fix: install glibc's debuginfo package on this
machine.
valgrind:
valgrind: Cannot continue -- exiting now. Sorry.
Best Regards,
Jon.
More information about the eldk
mailing list