# /usr/bin/addr2line -e libtime_opt.so -f 0x65a foo ??:? # readelf -a libtime_opt.so | grep foo 000000201020 000700000007 R_X86_64_JUMP_SLO 000000000000065a foo + 0 7: 000000000000065a 18 FUNC GLOBAL DEFAULT 12 foo 46: 000000000000065a 18 FUNC GLOBAL DEFAULT 12 foo # objdump -dlSC libtime_opt.so --start-address=0x650 --stop-address=0x65f libtime_opt.so: file format elf64-x86-64 Disassembly of section .text: 0000000000000650 <frame_dummy>: frame_dummy(): 650: 55 push %rbp 651: 48 89 e5 mov %rsp,%rbp 654: 5d pop %rbp 655: e9 66 ff ff ff jmpq 5c0 <register_tm_clones> 000000000000065a <foo>: foo(): 65a: 55 push %rbp 65b: 48 89 e5 mov %rsp,%rbp 65e: 48 rex.W On Thu, Oct 15, 2020 at 4:55 PM Jiany Wu <wujianyue000@xxxxxxxxx> wrote: > Is it a bug? Can I create an account in bugzilla? Thanks in advance:) > > readelf and objdump works fine, only addr2line is not working. > > On Thu, Oct 15, 2020 at 4:53 PM Jiany Wu <wujianyue000@xxxxxxxxx> wrote: > >> symbol will appear when I remove flto in CMakeLists.txt. But I have to >> enable flto.. >> >> On Thu, Oct 15, 2020 at 4:40 PM Jiany Wu <wujianyue000@xxxxxxxxx> wrote: >> >>> I tried to reproduce with ubuntu, with this zip. >>> >>> Could you please give a hand about this issue? thanks indeed, seems no >>> matter what gcc version above 9.1.0, will also have this issue. >>> >>> ## Reproduce step >>> cd build >>> cmake .. >>> make >>> readelf -a libtime_opt.so | grep foo >>> >>> output is: >>> 00000201020 000a00000007 R_X86_64_JUMP_SLO 000000000000066a _Z3foov >>> + 0 >>> 10: 000000000000066a 18 FUNC GLOBAL DEFAULT 12 _Z3foov >>> 49: 000000000000066a 18 FUNC GLOBAL DEFAULT 12 _Z3foov >>> >>> addr2line -e libtime_opt.so -f 0x66a >>> >>> output is: >>> _Z3foov >>> ??:? >>> >>> ./Jianyue >>> >>> On Wed, Oct 14, 2020 at 5:24 PM Jiany Wu <wujianyue000@xxxxxxxxx> wrote: >>> >>>> Seems gcc help is missing, add back gcc help >>>> >>>> On Wed, Oct 14, 2020 at 5:22 PM Jiany Wu <wujianyue000@xxxxxxxxx> >>>> wrote: >>>> >>>>> When try to check Line Table, seems there are many errors saying There >>>>> is a hole. I checked the OK version, seems also has holes, but not so many >>>>> holes;-) >>>>> >>>>> # readelf --debug-dump=loc libfoo.so | head >>>>> readelf: libfoo.so: Warning: Location lists in .debug_loc >>>>> section start at 0x6 >>>>> readelf: libfoo.so: Warning: There is a hole [0x52 - 0x54] in . >>>>> debug_loc section. >>>>> readelf: libfoo.so: Warning: There is a hole [0x77 - 0x7d] in . >>>>> debug_loc section. >>>>> readelf: libfoo.so: Warning: There is a hole [0xc6 - 0xd2] in . >>>>> debug_loc section. >>>>> Contents of the .debug_loc section: >>>>> readelf: libfoo.so: Warning: >>>>> There is a hole [0x157 - 0x163] in .debug_loc section. >>>>> Offset Begin End Expression >>>>> 00000006 0000000000257a70 0000000000257a81 (DW_OP_reg5 (rdi)) >>>>> 00000019 0000000000257a81 0000000000257aae (DW_OP_reg6 (rbp)) >>>>> 0000002c 0000000000257aae 0000000000257aaf >>>>> (DW_OP_GNU_entry_value: (DW_OP_reg5 (rdi)); DW_OP_stack_value) >>>>> 00000042 <End of list> >>>>> readelf: libfoo.so: Warning: There is a hole [0x1fa - 0x202] in . >>>>> debug_loc section. >>>>> 00000054 0000000000257a8e 0000000000257a98 (DW_OP_reg3 (rbx)) >>>>> 00000067 <End of list> >>>>> 0000007d 0000000000257a7c 0000000000257a8e (DW_OP_reg3 (rbx)) >>>>> readelf: libfoo.so: Warning: There is a hole [0x25e - 0x260] in . >>>>> debug_loc section. >>>>> >>>>> On Wed, Oct 14, 2020 at 4:30 PM Jiany Wu <wujianyue000@xxxxxxxxx> >>>>> wrote: >>>>> >>>>>> Also tried -flto=thin -ffat-lto-objects, result seems same, still >>>>>> can't find file and line. >>>>>> >>>>>> On Wed, Oct 14, 2020 at 2:58 PM Jiany Wu <wujianyue000@xxxxxxxxx> >>>>>> wrote: >>>>>> >>>>>>> x86_64-pc-linux-gnu-gcc *.a(many internal .a, checked, they all >>>>>>> built with gcc 9.1.0) -ldpdk -Wl,--no-whole-archive -lz -llzma -lcurl -lssl >>>>>>> -lcrypto -lcrypt -lcap -lpthread -lrt -lstdc++ -ldl -lm -lsctp -lpcap >>>>>>> -lminizip -o libfoo.so >>>>>>> >>>>>>> >>>>>>> On Wed, Oct 14, 2020 at 2:56 PM Jiany Wu <wujianyue000@xxxxxxxxx> >>>>>>> wrote: >>>>>>> >>>>>>>> It has different static libraries, shared libraries, so >>>>>>>> different GCC used, like 6.4.1(assume from other shared libraries), project >>>>>>>> itself is using 9.1.0. >>>>>>>> >>>>>>>> On Wed, Oct 14, 2020 at 2:54 PM Jiany Wu <wujianyue000@xxxxxxxxx> >>>>>>>> wrote: >>>>>>>> >>>>>>>>> I also tried to use -flto -fno-fat-lto-objects, but seems still >>>>>>>>> not working. >>>>>>>>> >>>>>>>>> strings -a libfoo.so | grep GNU.*march >>>>>>>>> GNU C17 9.1.0 -m64 -march=corei7 -g -O2 -O3 >>>>>>>>> -feliminate-unused-debug-types -fPIC >>>>>>>>> GNU C17 9.1.0 -m64 -march=corei7 -mavx2 -g -O2 -O3 >>>>>>>>> -feliminate-unused-debug-types -fPIC >>>>>>>>> GNU C17 9.1.0 -m64 -march=corei7 -g -O2 >>>>>>>>> -feliminate-unused-debug-types -fPIC >>>>>>>>> GNU C17 9.1.0 -m64 -march=corei7 -g -O2 -O3 >>>>>>>>> -feliminate-unused-debug-types -fno-strict-aliasing -fPIC >>>>>>>>> GNU C99 9.1.0 -m64 -march=corei7 -g -O2 -O3 -std=gnu99 >>>>>>>>> -feliminate-unused-debug-types -fPIC >>>>>>>>> GNU C17 9.1.0 -m64 -march=corei7 -g -O2 -O3 >>>>>>>>> -feliminate-unused-debug-types -flax-vector-conversions -fPIC >>>>>>>>> GNU C17 9.1.0 -m64 -march=corei7 -g -O2 -Ofast >>>>>>>>> -feliminate-unused-debug-types -fno-prefetch-loop-arrays -fPIC >>>>>>>>> GNU C17 9.1.0 -m64 -march=corei7 -g -g -O2 -O3 >>>>>>>>> -feliminate-unused-debug-types -fPIC >>>>>>>>> GNU C17 9.1.0 -P -m64 -march=tremont -mtune=tremont -mfpmath=sse >>>>>>>>> -msse4.2 -ggdb3 -g3 -O3 -ftree-vectorize -fno-dwarf2-cfi-asm >>>>>>>>> -funwind-tables -fPIC -ftls-model=initial-exec -flto -fno-fat-lto-objects >>>>>>>>> -fno-strict-aliasing -fasynchronous-unwind-tables -fmessage-length=0 >>>>>>>>> GNU C++11 9.1.0 -P -m64 -march=tremont -mtune=tremont -mfpmath=sse >>>>>>>>> -msse4.2 -ggdb3 -g3 -O3 -std=c++11 -fno-exceptions -fPIC >>>>>>>>> -ftls-model=initial-exec -flto -fno-fat-lto-objects -fno-strict-aliasing >>>>>>>>> -fasynchronous-unwind-tables -fmessage-length=0 >>>>>>>>> GNU C++98 9.1.0 -P -m64 -march=tremont -mtune=tremont -mfpmath=sse >>>>>>>>> -msse4.2 -ggdb3 -g3 -O3 -std=c++98 -fPIC -ftls-model=initial-exec -flto >>>>>>>>> -fno-fat-lto-objects -fno-strict-aliasing -fasynchronous-unwind-tables >>>>>>>>> -fmessage-length=0 >>>>>>>>> GNU C17 9.1.0 -P -m64 -march=tremont -mtune=tremont -mfpmath=sse >>>>>>>>> -msse4.2 -ggdb3 -g3 -O3 -fvisibility=hidden -ftree-vectorize >>>>>>>>> -fno-dwarf2-cfi-asm -funwind-tables -fPIC -ftls-model=initial-exec -flto >>>>>>>>> -fno-fat-lto-objects -fno-strict-aliasing -fasynchronous-unwind-tables >>>>>>>>> -fmessage-length=0 >>>>>>>>> GNU C++14 9.1.0 -P -m64 -march=tremont -mtune=tremont -mfpmath=sse >>>>>>>>> -msse4.2 -ggdb3 -g3 -O3 -fvisibility=hidden -fPIC -ftls-model=initial-exec >>>>>>>>> -flto -fno-fat-lto-objects -fno-strict-aliasing >>>>>>>>> -fasynchronous-unwind-tables -fmessage-length=0 >>>>>>>>> GNU C++14 9.1.0 -P -m64 -march=tremont -mtune=tremont -mfpmath=sse >>>>>>>>> -msse4.2 -ggdb3 -g3 -O3 -fPIC -ftls-model=initial-exec -flto >>>>>>>>> -fno-fat-lto-objects -fno-strict-aliasing -fasynchronous-unwind-tables >>>>>>>>> -fmessage-length=0 >>>>>>>>> GNU C17 9.1.0 -P -m64 -march=tremont -mtune=tremont -mfpmath=sse >>>>>>>>> -msse4.2 -ggdb3 -g3 -O3 -O0 -ftree-vectorize -fno-dwarf2-cfi-asm >>>>>>>>> -funwind-tables -fPIC -ftls-model=initial-exec -flto -fno-fat-lto-objects >>>>>>>>> -fno-strict-aliasing -fasynchronous-unwind-tables -fmessage-length=0 >>>>>>>>> GNU C17 9.1.0 -P -m64 -march=tremont -mtune=tremont -mfpmath=sse >>>>>>>>> -msse4.2 -ggdb3 -g3 -O3 -fdefer-pop -fmerge-constants -fthread-jumps >>>>>>>>> -fif-conversion -fif-conversion2 -fguess-branch-probability >>>>>>>>> -fcprop-registers -foptimize-sibling-calls -fcse-follow-jumps >>>>>>>>> -frerun-cse-after-loop -fgcse -fgcse-lm -fgcse-sm -fgcse-las >>>>>>>>> -fdelete-null-pointer-checks -fexpensive-optimizations -fsched-interblock >>>>>>>>> -fsched-spec -fcaller-saves -fpeephole2 -freorder-blocks >>>>>>>>> -freorder-functions -funit-at-a-time -falign-functions -falign-jumps >>>>>>>>> -falign-loops -falign-labels -fcrossjumping -finline-functions >>>>>>>>> -ftree-vectorize -fno-dwarf2-cfi-asm -funwind-tables -fPIC >>>>>>>>> -ftls-model=initial-exec -flto -fno-fat-lto-objects -fno-strict-aliasing >>>>>>>>> -fasynchronous-unwind-tables -fmessage-length=0 >>>>>>>>> GNU C11 9.1.0 -P -m64 -march=tremont -mtune=tremont -mfpmath=sse >>>>>>>>> -msse4.2 -ggdb3 -g3 -O3 -std=gnu11 -ftree-vectorize -fno-dwarf2-cfi-asm >>>>>>>>> -funwind-tables -fPIC -ftls-model=initial-exec -flto -fno-fat-lto-objects >>>>>>>>> -fno-strict-aliasing -fasynchronous-unwind-tables -fmessage-length=0 >>>>>>>>> GNU C++11 9.1.0 -P -m64 -march=tremont -mtune=tremont -mfpmath=sse >>>>>>>>> -msse4.2 -ggdb3 -g3 -O3 -std=c++11 -fPIC -ftls-model=initial-exec -flto >>>>>>>>> -fno-fat-lto-objects -fno-strict-aliasing -fasynchronous-unwind-tables >>>>>>>>> -fmessage-length=0 >>>>>>>>> GNU C++14 9.1.0 -P -m64 -march=tremont -mtune=tremont -mfpmath=sse >>>>>>>>> -msse4.2 -ggdb3 -g3 -O3 -std=c++14 -fpermissive -fPIC >>>>>>>>> -ftls-model=initial-exec -flto -fno-fat-lto-objects -fno-strict-aliasing >>>>>>>>> -fasynchronous-unwind-tables -fmessage-length=0 >>>>>>>>> GNU C++14 9.1.0 -m64 -march=tremont -mtune=tremont -mfpmath=sse >>>>>>>>> -msse4.2 -ggdb3 -O3 -std=c++14 -fPIC -flto -fno-fat-lto-objects >>>>>>>>> -ftls-model=initial-exec -fvisibility=hidden >>>>>>>>> GNU C17 9.1.0 -m64 -march=tremont -mtune=tremont -mfpmath=sse >>>>>>>>> -msse4.2 -ggdb3 -O3 -fPIC -flto -fno-fat-lto-objects >>>>>>>>> -ftls-model=initial-exec -fvisibility=hidden >>>>>>>>> GNU C11 6.4.1 20180518 -mtune=generic -march=x86-64 -g -O2 >>>>>>>>> -std=gnu11 -fgnu89-inline -feliminate-unused-debug-types >>>>>>>>> -fmerge-all-constants -fno-stack-protector -frounding-math -fno-math-errno >>>>>>>>> -fPIC -ftls-model=initial-exec >>>>>>>>> >>>>>>>>> On Wed, Oct 14, 2020 at 2:53 PM Jiany Wu <wujianyue000@xxxxxxxxx> >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>>> Hi Dan >>>>>>>>>> >>>>>>>>>> Sorry, I put the command wrongly. >>>>>>>>>> I abbreviated ths steps, actually I'm using libfoo.optdebug, >>>>>>>>>> which is copied from original file, without flto option, same file, same >>>>>>>>>> build, addr2line has file and line. >>>>>>>>>> >>>>>>>>>> objcopy --only-keep-debug libfoo.so libfoo.optdebug >>>>>>>>>> >>>>>>>>>> x86_64-pc-linux-gnu-addr2line -e libfoo.optdebug 0x6a1e20 -f >>>>>>>>>> foo >>>>>>>>>> ??:? >>>>>>>>>> >>>>>>>>>> ./Jianyue >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Wed, Oct 14, 2020 at 2:16 PM Dan Kegel <dank@xxxxxxxxx> wrote: >>>>>>>>>> >>>>>>>>>>> Did you want to run addr2line on libfoo.so instead of the >>>>>>>>>>> default a.out? If so, you may need to add -e libfoo.so or the like. >>>>>>>>>>> >>>>>>>>>>> Jiany Wu via Gcc-help <gcc-help@xxxxxxxxxxx> schrieb am Di., >>>>>>>>>>> 13. Okt. 2020, 22:53: >>>>>>>>>>> >>>>>>>>>>>> BTW, I used gcc-ar, and only -flto is used for lto >>>>>>>>>>>> optimization, without >>>>>>>>>>>> -fuse-linker-plugin, I had tried to add it, but seems the same. >>>>>>>>>>>> >>>>>>>>>>>> On Wed, Oct 14, 2020 at 1:47 PM Jiany Wu < >>>>>>>>>>>> wujianyue000@xxxxxxxxx> wrote: >>>>>>>>>>>> >>>>>>>>>>>> > Hi, >>>>>>>>>>>> > >>>>>>>>>>>> > Could you help give a hand about this issue? Or any >>>>>>>>>>>> suggestions? >>>>>>>>>>>> > >>>>>>>>>>>> > Can find function but can't find file and line. >>>>>>>>>>>> > Thanks indeed in advance. >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> > $ readelf -a libfoo.so | grep foo >>>>>>>>>>>> > >>>>>>>>>>>> > 9374: 0000000000783080 179 FUNC GLOBAL DEFAULT 12 foo >>>>>>>>>>>> > >>>>>>>>>>>> > 30182: 0000000000783080 179 FUNC GLOBAL DEFAULT 12 foo >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> > $ addr2line 0x783080 -f >>>>>>>>>>>> > >>>>>>>>>>>> > foo >>>>>>>>>>>> > >>>>>>>>>>>> > ??:? >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> > Gcc version: >>>>>>>>>>>> > >>>>>>>>>>>> > Target: x86_64-poky-linux >>>>>>>>>>>> > >>>>>>>>>>>> > Configured with: >>>>>>>>>>>> > ../../../../../../work-shared/gcc-9.1.0-r0/gcc-9.1.0/configure >>>>>>>>>>>> > --build=x86_64-linux --host=x86_64-pokysdk-linux >>>>>>>>>>>> --target=x86_64-poky-linux >>>>>>>>>>>> > --prefix=/opt/poky/2.1.1/sysroots/x86_64-pokysdk-linux/usr >>>>>>>>>>>> > >>>>>>>>>>>> --exec_prefix=/opt/poky/2.1.1/sysroots/x86_64-pokysdk-linux/usr >>>>>>>>>>>> > >>>>>>>>>>>> --bindir=/opt/poky/2.1.1/sysroots/x86_64-pokysdk-linux/usr/bin/x86_64-poky-linux >>>>>>>>>>>> > >>>>>>>>>>>> --sbindir=/opt/poky/2.1.1/sysroots/x86_64-pokysdk-linux/usr/bin/x86_64-poky-linux >>>>>>>>>>>> > >>>>>>>>>>>> --libexecdir=/opt/poky/2.1.1/sysroots/x86_64-pokysdk-linux/usr/libexec/x86_64-poky-linux >>>>>>>>>>>> > >>>>>>>>>>>> --datadir=/opt/poky/2.1.1/sysroots/x86_64-pokysdk-linux/usr/share >>>>>>>>>>>> > --sysconfdir=/opt/poky/2.1.1/sysroots/x86_64-pokysdk-linux/etc >>>>>>>>>>>> > >>>>>>>>>>>> --sharedstatedir=/opt/poky/2.1.1/sysroots/x86_64-pokysdk-linux/com >>>>>>>>>>>> > >>>>>>>>>>>> --localstatedir=/opt/poky/2.1.1/sysroots/x86_64-pokysdk-linux/var >>>>>>>>>>>> > >>>>>>>>>>>> --libdir=/opt/poky/2.1.1/sysroots/x86_64-pokysdk-linux/usr/lib/x86_64-poky-linux >>>>>>>>>>>> > >>>>>>>>>>>> --includedir=/opt/poky/2.1.1/sysroots/x86_64-pokysdk-linux/usr/include >>>>>>>>>>>> > >>>>>>>>>>>> --oldincludedir=/opt/poky/2.1.1/sysroots/x86_64-pokysdk-linux/usr/include >>>>>>>>>>>> > >>>>>>>>>>>> --infodir=/opt/poky/2.1.1/sysroots/x86_64-pokysdk-linux/usr/share/info >>>>>>>>>>>> > >>>>>>>>>>>> --mandir=/opt/poky/2.1.1/sysroots/x86_64-pokysdk-linux/usr/share/man >>>>>>>>>>>> > --disable-silent-rules >>>>>>>>>>>> > --disable-dependency-tracking--enable-clocale=generic >>>>>>>>>>>> --with-gnu-ld >>>>>>>>>>>> > --enable-shared --enable-languages=c,c++ >>>>>>>>>>>> --enable-threads=posix >>>>>>>>>>>> > --enable-multilib --enable-c99 --enable-long-long >>>>>>>>>>>> --enable-symvers=gnu >>>>>>>>>>>> > --program-prefix=x86_64-poky-linux- --without-local-prefix >>>>>>>>>>>> --enable-lto >>>>>>>>>>>> > --disable-libssp --enable-libitm --disable-bootstrap >>>>>>>>>>>> --disable-libmudflap >>>>>>>>>>>> > --with-system-zlib --with-linker-hash-style=gnu >>>>>>>>>>>> --enable-linker-build-id >>>>>>>>>>>> > --with-ppl=no --with-cloog=no --enable-checking=release >>>>>>>>>>>> > --enable-cheaders=c_global --without-isl >>>>>>>>>>>> > --with-gxx-include-dir=/not/exist/usr/include/c++/9.1.0 >>>>>>>>>>>> > --with-sysroot=/not/exist --enable-poison-system-directories >>>>>>>>>>>> > --disable-static --with-glibc-version=2.28 >>>>>>>>>>>> --enable-__cxa_atexit >>>>>>>>>>>> > --disable-plugin --enable-fix-cortex-a53-835769 >>>>>>>>>>>> --enable-__cxa_atexit >>>>>>>>>>>> > --enable-libmudflap --enable-libgomp --disable-libstdcxx-pch >>>>>>>>>>>> > >>>>>>>>>>>> > Thread model: posix >>>>>>>>>>>> > >>>>>>>>>>>> > gcc version 9.1.0 (GCC) >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> > Addr2line version: >>>>>>>>>>>> > >>>>>>>>>>>> > GNU addr2line (GNU Binutils) 2.31.0.20180718 >>>>>>>>>>>> > >>>>>>>>>>>> > Copyright (C) 2018 Free Software Foundation, Inc. >>>>>>>>>>>> > >>>>>>>>>>>> > This program is free software; you may redistribute it under >>>>>>>>>>>> the terms of >>>>>>>>>>>> > >>>>>>>>>>>> > the GNU General Public License version 3 or (at your option) >>>>>>>>>>>> any later >>>>>>>>>>>> > version. >>>>>>>>>>>> > >>>>>>>>>>>> > This program has absolutely no warranty. >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> > ./Jianyue >>>>>>>>>>>> > >>>>>>>>>>>> >>>>>>>>>>>>