* Re: Emit a warning when -z relro is unsupported [not found] ` <20200729003850.GO9601@bubble.grove.modra.org> @ 2020-07-29 7:10 ` Alan Modra via Libc-alpha 2020-07-29 16:25 ` Florian Weimer via Libc-alpha 0 siblings, 1 reply; 5+ messages in thread From: Alan Modra via Libc-alpha @ 2020-07-29 7:10 UTC (permalink / raw) To: Joseph Myers; +Cc: libc-alpha, binutils [-- Attachment #1: Type: text/plain, Size: 1163 bytes --] I believe the ia64-linux glibc problem is triggered by a fairly simple glibc build bug. There is a linker bug too. I was able to reproduce the problem, with .IA_64.unwind__libc_freeres_fn being mapped to bfd_abs_section, which is what happens when a section is discarded by a linker script. On looking at glibc/shlib.lds I see toward the end: .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_/home/local/bin/../lib/gcc/ia64-linux/9.3.1/../../../../ia64-linux/bin/ld: warning: -z relro ignored *) } } Uh oh, the script will discard all orphan sections due to *(*) appearing. (Yes there are some odd section match patterns before that from the warning, but the final * gets everything.) Now .IA_64.unwind__libc_freeres_fn is not an orphan, but it is SHF_LINK_ORDER and __libc_freeres_fn is its linked-to section, and that one is an orphan. ldelf_before_place_orphans handles linked-to sections, correctly discarding .IA_64.unwind__libc_freeres_fn but failing to set SEC_EXCLUDE which would avoid the ldwrite.c assertion. glibc patch attached -- Alan Modra Australia Development Lab, IBM [-- Attachment #2: 0006-Don-t-mix-linker-error-messages-into-edited-scripts.patch --] [-- Type: text/x-diff, Size: 1110 bytes --] From 3425515f19d47eb2e13180fe031d94a9c13ce39b Mon Sep 17 00:00:00 2001 From: Alan Modra <amodra@gmail.com> Date: Wed, 29 Jul 2020 16:28:57 +0930 Subject: Don't mix linker error messages into edited scripts * Makerules (shlib.lds): Discard linker warning output. (format.lds): Likewise. diff --git a/Makerules b/Makerules index 341db86c7e..ef0fe67d9a 100644 --- a/Makerules +++ b/Makerules @@ -557,7 +557,7 @@ $(common-objpfx)shlib.lds: $(common-objpfx)config.make $(..)Makerules $(LINK.o) -shared -Wl,-O1 \ -nostdlib -nostartfiles \ $(sysdep-LDFLAGS) $(rtld-LDFLAGS) $(LDFLAGS.so) \ - -Wl,--verbose 2>&1 | \ + -Wl,--verbose 2>/dev/null | \ sed > $@T \ -e '/^=========/,/^=========/!d;/^=========/d' \ $(if $(filter yes,$(have-hash-style)), \ @@ -1073,7 +1073,7 @@ ifneq (unknown,$(output-format)) else $(LINK.o) -shared $(sysdep-LDFLAGS) $(rtld-LDFLAGS) \ $(LDFLAGS.so) $(LDFLAGS-lib.so) \ - -x c /dev/null -o $@.so -Wl,--verbose -v 2>&1 \ + -x c /dev/null -o $@.so -Wl,--verbose -v 2>/dev/null \ | sed -n -f $< > $@.new test -s $@.new rm -f $@.so ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: Emit a warning when -z relro is unsupported 2020-07-29 7:10 ` Emit a warning when -z relro is unsupported Alan Modra via Libc-alpha @ 2020-07-29 16:25 ` Florian Weimer via Libc-alpha 2020-07-29 22:47 ` Joseph Myers 2020-08-04 20:57 ` Carlos O'Donell via Libc-alpha 0 siblings, 2 replies; 5+ messages in thread From: Florian Weimer via Libc-alpha @ 2020-07-29 16:25 UTC (permalink / raw) To: Alan Modra via Libc-alpha; +Cc: binutils, Joseph Myers, Alan Modra * Alan Modra via Libc-alpha: > From 3425515f19d47eb2e13180fe031d94a9c13ce39b Mon Sep 17 00:00:00 2001 > From: Alan Modra <amodra@gmail.com> > Date: Wed, 29 Jul 2020 16:28:57 +0930 > Subject: Don't mix linker error messages into edited scripts > > * Makerules (shlib.lds): Discard linker warning output. > (format.lds): Likewise. > > diff --git a/Makerules b/Makerules > index 341db86c7e..ef0fe67d9a 100644 > --- a/Makerules > +++ b/Makerules > @@ -557,7 +557,7 @@ $(common-objpfx)shlib.lds: $(common-objpfx)config.make $(..)Makerules > $(LINK.o) -shared -Wl,-O1 \ > -nostdlib -nostartfiles \ > $(sysdep-LDFLAGS) $(rtld-LDFLAGS) $(LDFLAGS.so) \ > - -Wl,--verbose 2>&1 | \ > + -Wl,--verbose 2>/dev/null | \ > sed > $@T \ > -e '/^=========/,/^=========/!d;/^=========/d' \ > $(if $(filter yes,$(have-hash-style)), \ > @@ -1073,7 +1073,7 @@ ifneq (unknown,$(output-format)) > else > $(LINK.o) -shared $(sysdep-LDFLAGS) $(rtld-LDFLAGS) \ > $(LDFLAGS.so) $(LDFLAGS-lib.so) \ > - -x c /dev/null -o $@.so -Wl,--verbose -v 2>&1 \ > + -x c /dev/null -o $@.so -Wl,--verbose -v 2>/dev/null \ > | sed -n -f $< > $@.new > test -s $@.new > rm -f $@.so This change looks reasonable to me. Thanks for tracking this down. We are in the glibc 2.32, so Carlos as the release manager needs to approve this. Florian ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Emit a warning when -z relro is unsupported 2020-07-29 16:25 ` Florian Weimer via Libc-alpha @ 2020-07-29 22:47 ` Joseph Myers 2020-08-04 20:57 ` Carlos O'Donell via Libc-alpha 1 sibling, 0 replies; 5+ messages in thread From: Joseph Myers @ 2020-07-29 22:47 UTC (permalink / raw) To: Florian Weimer; +Cc: Alan Modra via Libc-alpha, binutils, Alan Modra On Wed, 29 Jul 2020, Florian Weimer via Libc-alpha wrote: > This change looks reasonable to me. Thanks for tracking this down. > > We are in the glibc 2.32, so Carlos as the release manager needs to > approve this. I confirm this patch gets clean test results for build-many-glibcs.py (compilers and glibcs) with GCC 9 branch (where previously ia64 failed). -- Joseph S. Myers joseph@codesourcery.com ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Emit a warning when -z relro is unsupported 2020-07-29 16:25 ` Florian Weimer via Libc-alpha 2020-07-29 22:47 ` Joseph Myers @ 2020-08-04 20:57 ` Carlos O'Donell via Libc-alpha 2020-08-04 23:54 ` Carlos O'Donell via Libc-alpha 1 sibling, 1 reply; 5+ messages in thread From: Carlos O'Donell via Libc-alpha @ 2020-08-04 20:57 UTC (permalink / raw) To: Florian Weimer, Alan Modra via Libc-alpha Cc: binutils, Joseph Myers, Alan Modra On 7/29/20 12:25 PM, Florian Weimer via Libc-alpha wrote: > * Alan Modra via Libc-alpha: > >> From 3425515f19d47eb2e13180fe031d94a9c13ce39b Mon Sep 17 00:00:00 2001 >> From: Alan Modra <amodra@gmail.com> >> Date: Wed, 29 Jul 2020 16:28:57 +0930 >> Subject: Don't mix linker error messages into edited scripts >> >> * Makerules (shlib.lds): Discard linker warning output. >> (format.lds): Likewise. >> >> diff --git a/Makerules b/Makerules >> index 341db86c7e..ef0fe67d9a 100644 >> --- a/Makerules >> +++ b/Makerules >> @@ -557,7 +557,7 @@ $(common-objpfx)shlib.lds: $(common-objpfx)config.make $(..)Makerules >> $(LINK.o) -shared -Wl,-O1 \ >> -nostdlib -nostartfiles \ >> $(sysdep-LDFLAGS) $(rtld-LDFLAGS) $(LDFLAGS.so) \ >> - -Wl,--verbose 2>&1 | \ >> + -Wl,--verbose 2>/dev/null | \ >> sed > $@T \ >> -e '/^=========/,/^=========/!d;/^=========/d' \ >> $(if $(filter yes,$(have-hash-style)), \ >> @@ -1073,7 +1073,7 @@ ifneq (unknown,$(output-format)) >> else >> $(LINK.o) -shared $(sysdep-LDFLAGS) $(rtld-LDFLAGS) \ >> $(LDFLAGS.so) $(LDFLAGS-lib.so) \ >> - -x c /dev/null -o $@.so -Wl,--verbose -v 2>&1 \ >> + -x c /dev/null -o $@.so -Wl,--verbose -v 2>/dev/null \ >> | sed -n -f $< > $@.new >> test -s $@.new >> rm -f $@.so > > This change looks reasonable to me. Thanks for tracking this down. > > We are in the glibc 2.32, so Carlos as the release manager needs to > approve this. I'm testing this fix for inclusion today before I cut the branch. -- Cheers, Carlos. ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Emit a warning when -z relro is unsupported 2020-08-04 20:57 ` Carlos O'Donell via Libc-alpha @ 2020-08-04 23:54 ` Carlos O'Donell via Libc-alpha 0 siblings, 0 replies; 5+ messages in thread From: Carlos O'Donell via Libc-alpha @ 2020-08-04 23:54 UTC (permalink / raw) To: Florian Weimer, Alan Modra via Libc-alpha Cc: binutils, Joseph Myers, Alan Modra On 8/4/20 4:57 PM, Carlos O'Donell wrote: > On 7/29/20 12:25 PM, Florian Weimer via Libc-alpha wrote: >> * Alan Modra via Libc-alpha: >> >>> From 3425515f19d47eb2e13180fe031d94a9c13ce39b Mon Sep 17 00:00:00 2001 >>> From: Alan Modra <amodra@gmail.com> >>> Date: Wed, 29 Jul 2020 16:28:57 +0930 >>> Subject: Don't mix linker error messages into edited scripts >>> >>> * Makerules (shlib.lds): Discard linker warning output. >>> (format.lds): Likewise. >>> >>> diff --git a/Makerules b/Makerules >>> index 341db86c7e..ef0fe67d9a 100644 >>> --- a/Makerules >>> +++ b/Makerules >>> @@ -557,7 +557,7 @@ $(common-objpfx)shlib.lds: $(common-objpfx)config.make $(..)Makerules >>> $(LINK.o) -shared -Wl,-O1 \ >>> -nostdlib -nostartfiles \ >>> $(sysdep-LDFLAGS) $(rtld-LDFLAGS) $(LDFLAGS.so) \ >>> - -Wl,--verbose 2>&1 | \ >>> + -Wl,--verbose 2>/dev/null | \ >>> sed > $@T \ >>> -e '/^=========/,/^=========/!d;/^=========/d' \ >>> $(if $(filter yes,$(have-hash-style)), \ >>> @@ -1073,7 +1073,7 @@ ifneq (unknown,$(output-format)) >>> else >>> $(LINK.o) -shared $(sysdep-LDFLAGS) $(rtld-LDFLAGS) \ >>> $(LDFLAGS.so) $(LDFLAGS-lib.so) \ >>> - -x c /dev/null -o $@.so -Wl,--verbose -v 2>&1 \ >>> + -x c /dev/null -o $@.so -Wl,--verbose -v 2>/dev/null \ >>> | sed -n -f $< > $@.new >>> test -s $@.new >>> rm -f $@.so >> >> This change looks reasonable to me. Thanks for tracking this down. >> >> We are in the glibc 2.32, so Carlos as the release manager needs to >> approve this. > > I'm testing this fix for inclusion today before I cut the branch. Fix looks good. I just pushed for glibc 2.32. Thanks Alan! Reviewed-by: Carlos O'Donell <carlos@redhat.com> -- Cheers, Carlos. ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2020-08-04 23:55 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- [not found] <20200619024818.GA21885@bubble.grove.modra.org> [not found] ` <alpine.DEB.2.21.2007282255020.6112@digraph.polyomino.org.uk> [not found] ` <20200729003850.GO9601@bubble.grove.modra.org> 2020-07-29 7:10 ` Emit a warning when -z relro is unsupported Alan Modra via Libc-alpha 2020-07-29 16:25 ` Florian Weimer via Libc-alpha 2020-07-29 22:47 ` Joseph Myers 2020-08-04 20:57 ` Carlos O'Donell via Libc-alpha 2020-08-04 23:54 ` Carlos O'Donell via Libc-alpha
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).