[lld] r361830 - Reland D61583 [ELF] Error on relocations to STT_SECTION symbols if the sections were discarded

Hans Wennborg via llvm-commits llvm-commits at lists.llvm.org
Tue Jun 25 06:25:14 PDT 2019


We're seeing debug info problems in Chromium/V8 too after this:
https://bugs.chromium.org/p/chromium/issues/detail?id=978067

On Fri, Jun 7, 2019 at 9:18 AM Stephan Bergmann via llvm-commits
<llvm-commits at lists.llvm.org> wrote:
>
> With bisecting, I found that the below commit breaks the debuginfo in my
> Linux LibreOffice builds that use lld with --gdb-index.  I wasn't able
> to reduce the test case in any meaningful way, but what I observe is
> that a gdb backtrace will print source information for some of the
> frames, but for others will only print the .so pathname.  I could not
> reproduce with a small test executable, but the shared libraries
> involved in LibreOffice can be rather large, so maybe the issue is
> related to size.  The backtraces look fine when I rebuild LibreOffice
> without using --gdb-index (though I appear to have some issue with
> "step" commands in gdb not stepping into function calls even then, but
> didn't investigate that further).
>
> (I see that this commit has yesterday been reverted in r362739 and then
> re-reverted in r362743, so I assume the situation on trunk hasn't
> effectively changed from what I observed with my build from earlier this
> week.)
>
> On 28/05/2019 16:34, Fangrui Song via llvm-commits wrote:
> > Author: maskray
> > Date: Tue May 28 07:34:28 2019
> > New Revision: 361830
> >
> > URL: http://llvm.org/viewvc/llvm-project?rev=361830&view=rev
> > Log:
> > Reland D61583 [ELF] Error on relocations to STT_SECTION symbols if the sections were discarded
> >
> > This is implemented by creating Undefined (instead of Defined) for such
> > local STT_SECTION symbols. It allows us to catch errors when there are
> > relocations to such discarded sections (e.g. in PR41693, ld.bfd and gold
> > error but we don't). Updated comdat-discarded-error.s checks we emit
> > friendly error message.
> >
> > For relocatable-eh-frame.s, ld.lld -r a.o a.o will now error
> > "STT_SECTION symbol should be defined" because the section .eh_frame
> > refers to is now an Undefined instead of a Defined.
> > So I have to change `error()` to `warn()` to retain the output.
> >
> > rLLD361144 inadvertently enabled the error for --gdb-index
> > (in LLDDwarfObj<ELFT>::findAux()).
> >
> > Relocations from .debug_info (not in comdat) to .text.* (in comdat) for
> > DW_AT_low_pc are common. If an .text.* was discarded, rLLD361144 would error,
> > which was unexpected. (Note, if we don't error as this patch does,
> > InputSection::relocateNonAlloc() will resolve such relocations).
> >
> > Added:
> >      lld/trunk/test/ELF/comdat-discarded-gdb-index.s
> > Modified:
> >      lld/trunk/ELF/DWARF.cpp
> >      lld/trunk/ELF/InputFiles.cpp
> >      lld/trunk/ELF/InputSection.cpp
> >      lld/trunk/ELF/Relocations.cpp
> >      lld/trunk/test/ELF/comdat-discarded-error.s
> >      lld/trunk/test/ELF/comdat-discarded-reloc.s
> >      lld/trunk/test/ELF/comdat.s
> >      lld/trunk/test/ELF/invalid-undef-section-symbol.test
> >      lld/trunk/test/ELF/relocatable-eh-frame.s
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits


More information about the llvm-commits mailing list