Re: [gcc 9.1.0] addr2line can't find file name and line number with shared library when enable -flto

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



# /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
>>>>>>>>>>>> >
>>>>>>>>>>>>
>>>>>>>>>>>>



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux