Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Backports:SLE-15-SP6
mingw64-cross-binutils
0001-COFF-Check-for-symbols-defined-in-discarde...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0001-COFF-Check-for-symbols-defined-in-discarded-section.patch of Package mingw64-cross-binutils
From 2219ae0b0ebe14373850b000c2abaa31dab1d741 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" <hjl.tools@gmail.com> Date: Fri, 15 Mar 2019 22:19:01 +0800 Subject: [PATCH] COFF: Check for symbols defined in discarded section For LTO, a symbol may defined in discarded section. We should mark it as undefined so that LTO plugin will make IR definition available. PR ld/24267 * coffgen.c (_bfd_coff_section_already_linked): Skip discarded section. * cofflink.c (coff_link_add_symbols): Check for symbols defined in discarded section. --- bfd/ChangeLog | 8 ++++++++ bfd/coffgen.c | 3 +++ bfd/cofflink.c | 6 +++++- 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/bfd/coffgen.c b/bfd/coffgen.c index 5db35c7ddf..ccf4b4302c 100644 --- a/bfd/coffgen.c +++ b/bfd/coffgen.c @@ -2652,6 +2652,9 @@ _bfd_coff_section_already_linked (bfd *abfd, struct bfd_section_already_linked_hash_entry *already_linked_list; struct coff_comdat_info *s_comdat; + if (sec->output_section == bfd_abs_section_ptr) + return FALSE; + flags = sec->flags; if ((flags & SEC_LINK_ONCE) == 0) return FALSE; diff --git a/bfd/cofflink.c b/bfd/cofflink.c index e4031b9a31..ac07d05e57 100644 --- a/bfd/cofflink.c +++ b/bfd/cofflink.c @@ -310,7 +310,9 @@ coff_link_add_symbols (bfd *abfd, case COFF_SYMBOL_GLOBAL: flags = BSF_EXPORT | BSF_GLOBAL; section = coff_section_from_bfd_index (abfd, sym.n_scnum); - if (! obj_pe (abfd)) + if (discarded_section (section)) + section = bfd_und_section_ptr; + else if (! obj_pe (abfd)) value -= section->vma; break; @@ -327,6 +329,8 @@ coff_link_add_symbols (bfd *abfd, case COFF_SYMBOL_PE_SECTION: flags = BSF_SECTION_SYM | BSF_GLOBAL; section = coff_section_from_bfd_index (abfd, sym.n_scnum); + if (discarded_section (section)) + section = bfd_und_section_ptr; break; } -- 2.21.0
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor