Makerules: Do not require startup files for format.lds probe object

Message ID 871reqjrbi.fsf@oldenburg2.str.redhat.com
State Committed
Commit 0400f928335a5e04c788e1c831d8825d42612c49
Headers
Series Makerules: Do not require startup files for format.lds probe object |

Commit Message

Florian Weimer Jan. 12, 2021, 12:02 p.m. UTC
  During statically linked bootstrap, the compiler does not have
the required startup files, so do a smaller dummy link to obtain
the output format information.

Fixes commit 87d583c6e8cd0e49f64da76636ebeec033298b4d ("install:
Replace scripts/output-format.sed with objdump -f [BZ #26559]").

Testing is still in progress, but looks good so far.

---
 Makerules | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)
  

Comments

Adhemerval Zanella Netto Jan. 12, 2021, 12:07 p.m. UTC | #1
On 12/01/2021 09:02, Florian Weimer wrote:
> During statically linked bootstrap, the compiler does not have
> the required startup files, so do a smaller dummy link to obtain
> the output format information.
> 
> Fixes commit 87d583c6e8cd0e49f64da76636ebeec033298b4d ("install:
> Replace scripts/output-format.sed with objdump -f [BZ #26559]").
> 
> Testing is still in progress, but looks good so far.
> 

LGTM, this does fix the bootstrap issue I am also seeing.

> ---
>  Makerules | 5 ++---
>  1 file changed, 2 insertions(+), 3 deletions(-)
> 
> diff --git a/Makerules b/Makerules
> index 06c7c48310..ca9885436e 100644
> --- a/Makerules
> +++ b/Makerules
> @@ -1067,9 +1067,8 @@ install: $(inst_slibdir)/libc.so$(libc.so-version)
>  # used by a link for a different format on a multi-architecture system.
>  $(common-objpfx)format.lds: $(common-objpfx)config.make \
>  			    $(common-objpfx)config.h $(..)Makerules
> -	$(LINK.o) -shared $(sysdep-LDFLAGS) $(rtld-LDFLAGS) \
> -		  $(LDFLAGS.so) $(LDFLAGS-lib.so) \
> -		  -x c /dev/null -o $@.so 2>/dev/null
> +	$(LINK.o) -shared -nostdlib -nostartfiles \
> +		  -x assembler /dev/null -o $@.so
>  	$(OBJDUMP) -f $@.so | sed -n 's/.*file format \(.*\)/OUTPUT_FORMAT(\1)/;T;p' > $@
>  	rm -f $@.so
>  common-generated += format.lds
>
  

Patch

diff --git a/Makerules b/Makerules
index 06c7c48310..ca9885436e 100644
--- a/Makerules
+++ b/Makerules
@@ -1067,9 +1067,8 @@  install: $(inst_slibdir)/libc.so$(libc.so-version)
 # used by a link for a different format on a multi-architecture system.
 $(common-objpfx)format.lds: $(common-objpfx)config.make \
 			    $(common-objpfx)config.h $(..)Makerules
-	$(LINK.o) -shared $(sysdep-LDFLAGS) $(rtld-LDFLAGS) \
-		  $(LDFLAGS.so) $(LDFLAGS-lib.so) \
-		  -x c /dev/null -o $@.so 2>/dev/null
+	$(LINK.o) -shared -nostdlib -nostartfiles \
+		  -x assembler /dev/null -o $@.so
 	$(OBJDUMP) -f $@.so | sed -n 's/.*file format \(.*\)/OUTPUT_FORMAT(\1)/;T;p' > $@
 	rm -f $@.so
 common-generated += format.lds