[PATCH] Makeconfig: Move $(CC) to +link command variables

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

[PATCH] Makeconfig: Move $(CC) to +link command variables

Florian Weimer-5
This change is needed to add linker flags which come very early in the
command linke (before LDFLAGS) and are not applied to test programs
(only to installed programs).

2019-04-25  Florian Weimer  <[hidden email]>

        * Makeconfig (+link-pie-before-libc): Remove $(CC).
        (+link-pie, +link-pie-tests, +link-pie-printers-tests): Add $(CC).
        (+link-static-before-libc): Remove $(CC).
        (+link-static, +link-static-tests): Add $(CC).
        (+link-before-libc): Remove $(CC).
        (+link, +link-pie, +link-pie-printers): Add $(CC).

diff --git a/Makeconfig b/Makeconfig
index 89443e9a90..92c9b59bb5 100644
--- a/Makeconfig
+++ b/Makeconfig
@@ -415,7 +415,7 @@ link-extra-libs-tests = $(libsupport)
 
 # Command for linking PIE programs with the C library.
 ifndef +link-pie
-+link-pie-before-libc = $(CC) $(if $($(@F)-no-pie),$(no-pie-ldflag),-pie) \
++link-pie-before-libc = $(if $($(@F)-no-pie),$(no-pie-ldflag),-pie) \
      -Wl,-O1 -nostdlib -nostartfiles -o $@ \
      $(sysdep-LDFLAGS) $(LDFLAGS) $(LDFLAGS-$(@F)) \
      $(combreloc-LDFLAGS) $(relro-LDFLAGS) $(hashstyle-LDFLAGS) \
@@ -428,23 +428,24 @@ ifndef +link-pie
      $(link-extra-libs)
 +link-pie-after-libc = $(+postctorS) $(+postinit)
 define +link-pie
-$(+link-pie-before-libc) $(rtld-LDFLAGS) $(link-extra-flags) $(link-libc) $(+link-pie-after-libc)
+$(CC) $(+link-pie-before-libc) $(rtld-LDFLAGS) $(link-extra-flags) \
+  $(link-libc) $(+link-pie-after-libc)
 $(call after-link,$@)
 endef
 define +link-pie-tests
-$(+link-pie-before-libc) $(rtld-tests-LDFLAGS) $(link-libc-tests) \
- $(+link-pie-after-libc)
+$(CC) $(+link-pie-before-libc) $(rtld-tests-LDFLAGS) $(link-libc-tests) \
+  $(+link-pie-after-libc)
 $(call after-link,$@)
 endef
 define +link-pie-printers-tests
-$(+link-pie-before-libc) $(built-rtld-LDFLAGS) $(link-libc-printers-tests) \
- $(+link-pie-after-libc)
+$(CC) $(+link-pie-before-libc) $(built-rtld-LDFLAGS) \
+  $(link-libc-printers-tests) $(+link-pie-after-libc)
 $(call after-link,$@)
 endef
 endif
 # Command for statically linking programs with the C library.
 ifndef +link-static
-+link-static-before-libc = $(CC) -nostdlib -nostartfiles -static -o $@ \
++link-static-before-libc = -nostdlib -nostartfiles -static -o $@ \
       $(if $($(@F)-no-pie),$(no-pie-ldflag),$(default-pie-ldflag)) \
       $(sysdep-LDFLAGS) $(LDFLAGS) $(LDFLAGS-$(@F))  \
       $(firstword $(CRT-$(@F)) $(csu-objpfx)$(real-static-start-installed-name)) \
@@ -456,11 +457,13 @@ ifndef +link-static
       $(link-extra-libs-static)
 +link-static-after-libc = $(+postctorT) $(+postinit)
 define +link-static
-$(+link-static-before-libc) $(link-extra-flags) $(link-libc-static) $(+link-static-after-libc)
+$(CC) $(+link-static-before-libc) $(link-extra-flags) $(link-libc-static) \
+  $(+link-static-after-libc)
 $(call after-link,$@)
 endef
 define +link-static-tests
-$(+link-static-before-libc) $(link-libc-static-tests) $(+link-static-after-libc)
+$(CC) $(+link-static-before-libc) $(link-libc-static-tests) \
+  $(+link-static-after-libc)
 $(call after-link,$@)
 endef
 endif
@@ -475,7 +478,7 @@ ifeq (yes,$(build-pie-default))
 +link-tests = $(+link-pie-tests)
 +link-printers-tests = $(+link-pie-printers-tests)
 else  # not build-pie-default
-+link-before-libc = $(CC) -nostdlib -nostartfiles -o $@ \
++link-before-libc = -nostdlib -nostartfiles -o $@ \
       $(sysdep-LDFLAGS) $(LDFLAGS) $(LDFLAGS-$(@F)) \
       $(combreloc-LDFLAGS) $(relro-LDFLAGS) $(hashstyle-LDFLAGS) \
       $(firstword $(CRT-$(@F)) $(csu-objpfx)$(start-installed-name)) \
@@ -487,16 +490,17 @@ else  # not build-pie-default
       $(link-extra-libs)
 +link-after-libc = $(+postctor) $(+postinit)
 define +link
-$(+link-before-libc) $(rtld-LDFLAGS) $(link-extra-flags) $(link-libc) $(+link-after-libc)
+$(CC) $(+link-before-libc) $(rtld-LDFLAGS) $(link-extra-flags) $(link-libc) \
+  $(+link-after-libc)
 $(call after-link,$@)
 endef
 define +link-tests
-$(+link-before-libc) $(rtld-tests-LDFLAGS) $(link-libc-tests) \
+$(CC) $(+link-before-libc) $(rtld-tests-LDFLAGS) $(link-libc-tests) \
      $(+link-after-libc)
 $(call after-link,$@)
 endef
 define +link-printers-tests
-$(+link-before-libc) $(built-rtld-LDFLAGS) $(link-libc-printers-tests) \
+$(CC) $(+link-before-libc) $(built-rtld-LDFLAGS) $(link-libc-printers-tests) \
      $(+link-after-libc)
 $(call after-link,$@)
 endef
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] Makeconfig: Move $(CC) to +link command variables

Carlos O'Donell-5
On 4/25/19 8:33 AM, Florian Weimer wrote:
> This change is needed to add linker flags which come very early in the
> command linke (before LDFLAGS) and are not applied to test programs
> (only to installed programs).

Thank you for working on this kind of cleanup.

> 2019-04-25  Florian Weimer  <[hidden email]>
>
> * Makeconfig (+link-pie-before-libc): Remove $(CC).
> (+link-pie, +link-pie-tests, +link-pie-printers-tests): Add $(CC).
> (+link-static-before-libc): Remove $(CC).
> (+link-static, +link-static-tests): Add $(CC).
> (+link-before-libc): Remove $(CC).
> (+link, +link-pie, +link-pie-printers): Add $(CC).

This looks good to me.

Reviewed-by: Carlos O'Donell <[hidden email]>

>
> diff --git a/Makeconfig b/Makeconfig
> index 89443e9a90..92c9b59bb5 100644
> --- a/Makeconfig
> +++ b/Makeconfig
> @@ -415,7 +415,7 @@ link-extra-libs-tests = $(libsupport)
>  
>   # Command for linking PIE programs with the C library.
>   ifndef +link-pie
> -+link-pie-before-libc = $(CC) $(if $($(@F)-no-pie),$(no-pie-ldflag),-pie) \
> ++link-pie-before-libc = $(if $($(@F)-no-pie),$(no-pie-ldflag),-pie) \

OK, remove $(CC).

>       -Wl,-O1 -nostdlib -nostartfiles -o $@ \
>       $(sysdep-LDFLAGS) $(LDFLAGS) $(LDFLAGS-$(@F)) \
>       $(combreloc-LDFLAGS) $(relro-LDFLAGS) $(hashstyle-LDFLAGS) \
> @@ -428,23 +428,24 @@ ifndef +link-pie
>       $(link-extra-libs)
>   +link-pie-after-libc = $(+postctorS) $(+postinit)
>   define +link-pie
> -$(+link-pie-before-libc) $(rtld-LDFLAGS) $(link-extra-flags) $(link-libc) $(+link-pie-after-libc)
> +$(CC) $(+link-pie-before-libc) $(rtld-LDFLAGS) $(link-extra-flags) \
> +  $(link-libc) $(+link-pie-after-libc)

OK, put $(CC) ahead of everything else.

>   $(call after-link,$@)
>   endef
>   define +link-pie-tests
> -$(+link-pie-before-libc) $(rtld-tests-LDFLAGS) $(link-libc-tests) \
> - $(+link-pie-after-libc)
> +$(CC) $(+link-pie-before-libc) $(rtld-tests-LDFLAGS) $(link-libc-tests) \
> +  $(+link-pie-after-libc)

OK, likewise.

>   $(call after-link,$@)
>   endef
>   define +link-pie-printers-tests
> -$(+link-pie-before-libc) $(built-rtld-LDFLAGS) $(link-libc-printers-tests) \
> - $(+link-pie-after-libc)
> +$(CC) $(+link-pie-before-libc) $(built-rtld-LDFLAGS) \
> +  $(link-libc-printers-tests) $(+link-pie-after-libc)

OK, likewise.

>   $(call after-link,$@)
>   endef
>   endif
>   # Command for statically linking programs with the C library.
>   ifndef +link-static
> -+link-static-before-libc = $(CC) -nostdlib -nostartfiles -static -o $@ \
> ++link-static-before-libc = -nostdlib -nostartfiles -static -o $@ \

OK, remove $(CC).

>        $(if $($(@F)-no-pie),$(no-pie-ldflag),$(default-pie-ldflag)) \
>        $(sysdep-LDFLAGS) $(LDFLAGS) $(LDFLAGS-$(@F))  \
>        $(firstword $(CRT-$(@F)) $(csu-objpfx)$(real-static-start-installed-name)) \
> @@ -456,11 +457,13 @@ ifndef +link-static
>        $(link-extra-libs-static)
>   +link-static-after-libc = $(+postctorT) $(+postinit)
>   define +link-static
> -$(+link-static-before-libc) $(link-extra-flags) $(link-libc-static) $(+link-static-after-libc)
> +$(CC) $(+link-static-before-libc) $(link-extra-flags) $(link-libc-static) \
> +  $(+link-static-after-libc)

OK, put $(CC) ahead of everything else.

>   $(call after-link,$@)
>   endef
>   define +link-static-tests
> -$(+link-static-before-libc) $(link-libc-static-tests) $(+link-static-after-libc)
> +$(CC) $(+link-static-before-libc) $(link-libc-static-tests) \
> +  $(+link-static-after-libc)

OK, likewise.

>   $(call after-link,$@)
>   endef
>   endif
> @@ -475,7 +478,7 @@ ifeq (yes,$(build-pie-default))
>   +link-tests = $(+link-pie-tests)
>   +link-printers-tests = $(+link-pie-printers-tests)
>   else  # not build-pie-default
> -+link-before-libc = $(CC) -nostdlib -nostartfiles -o $@ \
> ++link-before-libc = -nostdlib -nostartfiles -o $@ \

OK, remove $(CC).

>        $(sysdep-LDFLAGS) $(LDFLAGS) $(LDFLAGS-$(@F)) \
>        $(combreloc-LDFLAGS) $(relro-LDFLAGS) $(hashstyle-LDFLAGS) \
>        $(firstword $(CRT-$(@F)) $(csu-objpfx)$(start-installed-name)) \
> @@ -487,16 +490,17 @@ else  # not build-pie-default
>        $(link-extra-libs)
>   +link-after-libc = $(+postctor) $(+postinit)
>   define +link
> -$(+link-before-libc) $(rtld-LDFLAGS) $(link-extra-flags) $(link-libc) $(+link-after-libc)
> +$(CC) $(+link-before-libc) $(rtld-LDFLAGS) $(link-extra-flags) $(link-libc) \
> +  $(+link-after-libc)

OK, put $(CC) ahead of everything else.

>   $(call after-link,$@)
>   endef
>   define +link-tests
> -$(+link-before-libc) $(rtld-tests-LDFLAGS) $(link-libc-tests) \
> +$(CC) $(+link-before-libc) $(rtld-tests-LDFLAGS) $(link-libc-tests) \


OK, likewise.

>       $(+link-after-libc)
>   $(call after-link,$@)
>   endef
>   define +link-printers-tests
> -$(+link-before-libc) $(built-rtld-LDFLAGS) $(link-libc-printers-tests) \
> +$(CC) $(+link-before-libc) $(built-rtld-LDFLAGS) $(link-libc-printers-tests) \

OK, likewise.

>       $(+link-after-libc)
>   $(call after-link,$@)
>   endef
>


--
Cheers,
Carlos.