Add ltrace (and libelf) utilities.
Marked as BROKEN for others to debug that if they need it.
1 From http://www.mail-archive.com/pld-cvs-commit@pld-linux.org/msg00229.html
3 rtld.c: In function '_dl_start':
4 dynamic-link.h:47: error: nested function 'elf_machine_rela_relative' declared but never defined
5 dynamic-link.h:41: error: nested function 'elf_machine_rela' declared but never defined
6 when compiling glibc-2.3.4 with gcc-4.0
9 http://sources.redhat.com/ml/libc-hacker/2005-02/msg00000.html
11 http://sources.redhat.com/ml/libc-hacker/2005-03/msg00008.html
12 which seem to propose less radical fixes?
14 Aha. See also http://sources.redhat.com/bugzilla/show_bug.cgi?id=721
16 --- glibc-2.3.6.orig/elf/dynamic-link.h 2005-03-12 18:12:37.000000000 -0800
17 +++ glibc-2.3.6/elf/dynamic-link.h 2005-03-12 18:12:59.777820848 -0800
24 -/* We pass reloc_addr as a pointer to void, as opposed to a pointer to
25 - ElfW(Addr), because not all architectures can assume that the
26 - relocated address is properly aligned, whereas the compiler is
27 - entitled to assume that a pointer to a type is properly aligned for
28 - the type. Even if we cast the pointer back to some other type with
29 - less strict alignment requirements, the compiler might still
30 - remember that the pointer was originally more aligned, thereby
31 - optimizing away alignment tests or using word instructions for
32 - copying memory, breaking the very code written to handle the
34 -# if ! ELF_MACHINE_NO_REL
35 -auto inline void __attribute__((always_inline))
36 -elf_machine_rel (struct link_map *map, const ElfW(Rel) *reloc,
37 - const ElfW(Sym) *sym, const struct r_found_version *version,
38 - void *const reloc_addr);
39 -auto inline void __attribute__((always_inline))
40 -elf_machine_rel_relative (ElfW(Addr) l_addr, const ElfW(Rel) *reloc,
41 - void *const reloc_addr);
43 -# if ! ELF_MACHINE_NO_RELA
44 -auto inline void __attribute__((always_inline))
45 -elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc,
46 - const ElfW(Sym) *sym, const struct r_found_version *version,
47 - void *const reloc_addr);
48 -auto inline void __attribute__((always_inline))
49 -elf_machine_rela_relative (ElfW(Addr) l_addr, const ElfW(Rela) *reloc,
50 - void *const reloc_addr);
52 -# if ELF_MACHINE_NO_RELA || defined ELF_MACHINE_PLT_REL
53 -auto inline void __attribute__((always_inline))
54 -elf_machine_lazy_rel (struct link_map *map,
55 - ElfW(Addr) l_addr, const ElfW(Rel) *reloc);
57 -auto inline void __attribute__((always_inline))
58 -elf_machine_lazy_rel (struct link_map *map,
59 - ElfW(Addr) l_addr, const ElfW(Rela) *reloc);
63 #include <dl-machine.h>
67 Signed-off-by: Robert P. J. Day <rpjday@mindspring.com>