Way to disable relocations being performed
by Arnaldo Carvalho de Melo
Hi,
While working on pahole and the perf tools that now ship in the
Linux kernel sources I noticed this:
[acme@doppio pahole]$ size object_samples/zweinberg\(a)mozilla.com/libgklayout.so
text data bss dec hex filename
12135799 1088572 29152 13253523 ca3b93 object_samples/zweinberg(a)mozilla.com/libgklayout.so
[acme@doppio pahole]$ readelf -SW object_samples/zweinberg\(a)mozilla.com/libgklayout.so | grep debug
[26] .debug_aranges PROGBITS 0000000000000000 ca2d50 1d1f80 00 0 0 16
[27] .debug_pubnames PROGBITS 0000000000000000 e74cd0 5d29ed 00 0 0 1
[28] .debug_info PROGBITS 0000000000000000 14476bd 431ca1e 00 0 0 1
[29] .debug_abbrev PROGBITS 0000000000000000 57640db 1999c5 00 0 0 1
[30] .debug_line PROGBITS 0000000000000000 58fdaa0 58281c 00 0 0 1
[31] .debug_frame PROGBITS 0000000000000000 5e802c0 4454f0 00 0 0 8
[32] .debug_str PROGBITS 0000000000000000 62c57b0 571e13 01 MS 0 0 1
[33] .debug_loc PROGBITS 0000000000000000 68375c3 131493a 00 0 0 1
[34] .debug_ranges PROGBITS 0000000000000000 7b4bf00 2e7130 00 0 0 16
[acme@doppio pahole]$
[acme@doppio pahole]$ perf record -f -- pahole object_samples/zweinberg\(a)mozilla.com/libgklayout.so > /dev/null
[ perf record: Captured and wrote 10.779 MB perf.data (~470950 samples) ]
[acme@doppio pahole]$ perf report --sort comm,dso,symbol | head -25
#
# (470890 samples)
#
# Overhead Command Shared Object Symbol
# ........ ................ ......................... ......
#
13.51% pahole /usr/lib64/libdw-0.141.so [.] relocate.6672
10.61% pahole /lib64/libc-2.10.1.so [.] __GI_strcmp
8.84% pahole /lib64/libc-2.10.1.so [.] _int_malloc
8.07% pahole /usr/lib64/libdw-0.141.so [.] __dwfl_linux_kernel_report_modules_internal
7.84% pahole /lib64/libc-2.10.1.so [.] __tsearch
5.51% pahole ./build/libdwarves.so.1.0.0 [.] tag__recode_dwarf_type
5.19% pahole /lib64/libc-2.10.1.so [.] malloc_consolidate
4.41% pahole ./build/libdwarves.so.1.0.0 [.] namespace__recode_dwarf_types
3.61% pahole /usr/lib64/libdw-0.141.so [.] __libdwfl_report_elf
3.47% pahole ./build/libdwarves.so.1.0.0 [.] list__for_all_tags
2.49% pahole /lib64/libc-2.10.1.so [.] _int_free
2.07% pahole /lib64/libc-2.10.1.so [.] __tfind
1.89% pahole /lib64/libc-2.10.1.so [.] __GI___libc_free
1.74% pahole ./build/libdwarves.so.1.0.0 [.] cu__table_add_tag
1.60% pahole /usr/lib64/libdw-0.141.so [.] check_notes
1.35% pahole /lib64/libc-2.10.1.so [.] __GI_vfprintf
0.96% pahole /lib64/libc-2.10.1.so [.] __malloc
0.88% pahole ./build/libdwarves.so.1.0.0 [.] __die__process_tag
[acme@doppio pahole]$
Relocation is being always performed, but I don't need this, is there a
way for me to ask libdwfl to not perform relocations?
- Arnaldo