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@mozilla.com/libgklayout.so text data bss dec hex filename 12135799 1088572 29152 13253523 ca3b93 object_samples/zweinberg@mozilla.com/libgklayout.so [acme@doppio pahole]$ readelf -SW object_samples/zweinberg@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@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