Hi, I have a shared library `/opt/evince-3.28.4/lib/evince/4/backends/libpdfdocument.so`. In GDB, I can easily detect a function at offset `0xa830` of this library, as shown below:
(gdb) disas 0xa830 Dump of assembler code for function ev_link_from_action(PdfDocument*, PopplerAction*): 0x000000000000a830 <+0>: cmpl $0xa,(%rsi) 0x000000000000a833 <+3>: ja 0xaaf0 <ev_link_from_action(PdfDocument*, PopplerAction*)+704> 0x000000000000a839 <+9>: push %r15 0x000000000000a83b <+11>: push %r14 0x000000000000a83d <+13>: lea 0x5f28(%rip),%rdx # 0x1076c The output of `objdump -D` on the library for this offset is shown below: a826: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) a82d: 00 00 00 a830: 83 3e 0a cmpl $0xa,(%rsi) a833: 0f 87 b7 02 00 00 ja aaf0 <__cxa_finalize@plt+0x1d10> a839: 41 57 push %r15 No function name is printed at `0xa830`. Also, the output of `objdump -t` on the library does not contain this offset. How can I detect the symbol name assuming the offset is known and GDB is not available? Regards. ------------------- P.S.: The shared library contains debuginfo. The relevant portion of `objdump -h` on the library is shown below: 25 .debug_aranges 00000030 0000000000000000 0000000000000000 00014bd9 2**0 CONTENTS, READONLY, DEBUGGING 26 .debug_info 00014b8d 0000000000000000 0000000000000000 00014c09 2**0 CONTENTS, READONLY, DEBUGGING 27 .debug_abbrev 00000773 0000000000000000 0000000000000000 00029796 2**0 CONTENTS, READONLY, DEBUGGING 28 .debug_line 00002036 0000000000000000 0000000000000000 00029f09 2**0 CONTENTS, READONLY, DEBUGGING 29 .debug_str 0000c377 0000000000000000 0000000000000000 0002bf3f 2**0 CONTENTS, READONLY, DEBUGGING 30 .debug_loc 0000d45f 0000000000000000 0000000000000000 000382b6 2**0 CONTENTS, READONLY, DEBUGGING 31 .debug_ranges 00001080 0000000000000000 0000000000000000 00045715 2**0 CONTENTS, READONLY, DEBUGGING ------------------- P.S.2: The question issue is also notified here: https://stackoverflow.com/questions/79196334/symbol-not-detectable-by-objdump