From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2124) id 4F36D3858D33; Tue, 21 Nov 2023 09:27:09 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 4F36D3858D33 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Nick Clifton To: bfd-cvs@sourceware.org Subject: [binutils-gdb] Fix: symbols eliminated by --gc-sections still trigger warnings for gnu.warning.SYM X-Act-Checkin: binutils-gdb X-Git-Author: Nick Clifton X-Git-Refname: refs/heads/master X-Git-Oldrev: a68722065fd544995137677fb0e57c392ef00e0e X-Git-Newrev: 1c320501655ec8d5077d0a3231652c7d661249bc Message-Id: <20231121092709.4F36D3858D33@sourceware.org> Date: Tue, 21 Nov 2023 09:27:09 +0000 (GMT) X-BeenThere: binutils-cvs@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Binutils-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 21 Nov 2023 09:27:09 -0000 https://sourceware.org/git/gitweb.cgi?p=3Dbinutils-gdb.git;h=3D1c320501655e= c8d5077d0a3231652c7d661249bc commit 1c320501655ec8d5077d0a3231652c7d661249bc Author: Nick Clifton Date: Tue Nov 21 09:26:19 2023 +0000 Fix: symbols eliminated by --gc-sections still trigger warnings for gnu= .warning.SYM =20 PR 31067 * linker.c (_bfd_generic_link_add_one_symbol): When issuing a warning= message, also display a message about the warning not being affected by ga= rbage colleciton. * ld.texi (Special Sections): New entry in the linker manual. Describ= es how the .gnu.warning and .gnu.warning.SYM sections behave. Diff: --- bfd/ChangeLog | 7 +++++++ bfd/linker.c | 8 ++++++++ ld/ChangeLog | 7 +++++++ ld/ld.texi | 45 +++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 67 insertions(+) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 143069894c1..e9f571acac2 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,10 @@ +2023-11-21 Nick Clifton + + PR 31067 + linker.c (_bfd_generic_link_add_one_symbol): When issuing a + warning message, also display a message about the warning not + being affected by garbage colleciton. + 2023-11-15 Arsen Arsenovi=C4=87 =20 * aclocal.m4: Regenerate. diff --git a/bfd/linker.c b/bfd/linker.c index 28fffc3ad63..90dc581cfe3 100644 --- a/bfd/linker.c +++ b/bfd/linker.c @@ -1784,6 +1784,14 @@ _bfd_generic_link_add_one_symbol (struct bfd_link_in= fo *info, { (*info->callbacks->warning) (info, string, h->root.string, hash_entry_bfd (h), NULL, 0); + /* PR 31067: If garbage collection is enabled then the + referenced symbol may actually be discarded later on. + This could be very confusing to the user. So give them + a hint as to what might be happening. */ + if (info->gc_sections) + (*info->callbacks->info) + (_("%P: %pB: note: the message above does not take linker garbage coll= ection into account\n"), + hash_entry_bfd (h)); break; } /* Fall through. */ diff --git a/ld/ChangeLog b/ld/ChangeLog index a30d3ad39b6..1766bd86dc2 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,10 @@ +2023-11-21 Nick Clifton + + PR 31067 + * ld.texi (Special Sections): New entry in the linker manual. + Describes how the .gnu.warning and .gnu.warning.SYM sections + behave. + 2023-11-15 Arsen Arsenovi=C4=87 =20 * aclocal.m4: Regenerate. diff --git a/ld/ld.texi b/ld/ld.texi index 5a143b2b518..0704eece8d6 100644 --- a/ld/ld.texi +++ b/ld/ld.texi @@ -127,6 +127,7 @@ in the section entitled ``GNU Free Documentation Licens= e''. * Invocation:: Invocation * Scripts:: Linker Scripts * Plugins:: Linker Plugins +* Special Sections:: Special Sections @ifset GENERIC * Machine Dependent:: Machine Dependent Features @end ifset @@ -7525,6 +7526,50 @@ the @samp{__.LIBDEP} member of @file{libssl.a} would= contain -L/usr/local/lib -lcrypto @end smallexample =20 +@node Special Sections +When linking ELF format object files @command{ld} treats some sections +in a special, non standard manner. This part of the manual describes +these sections. + +@table @gcctabopt +@item .gnu.warning +The contents of any section with this name are assumed to be an ascii +format warning message. The contents will be displayed to the user if +the sections appears in any input file, but the section will not be +copied into the output image. If the @option{--fatal-warnings} option +is enabled then the warnings - if any are encountered - will also stop +the link from completing. + +Note - the @samp{.gnu.warning} section is not subject to linker +garbage collection or orphan handling. + +@item .gnu.warning.@var{SYM} +The contents of any section whoes name starts with the prefix +@samp{.gnu.warning.} and then finishes with the name of a symbol is +treated in a similar fashion to the @samp{.gnu.warning} section, but +only if the named symbol is defined. So for example the contents of a +section called @samp{.gnu.warning.foo} will be displayed as warning +message if, and only if, the symbol @samp{foo} is defined by one or +more of the input files. This includes object files pulled in from +static libraries, shared objects needed to complete the link and so +on. + +Note - because these warning messages are generated before the linker +performs garbage collection (if enabled) it is possible for a warning +to be displayed for a symbol that is later removed and then never +appears in the final output. + +@item .note.gnu.property +When the linker combines sections of this name it will merge them +together according to various rules encoded into the notes +themselves. Therefore the contents of the output .note.gnu.property +section may not correspond to a simple concatenation of the input +sections. If the @option{-Map} option has been used to request a +linker map then details of any property merging will be included in +the map. + +@end table + @ifset GENERIC @node Machine Dependent @chapter Machine Dependent Features