Re: [PATCH v2 0/3] kbuild: fix host progs build with libs in non standard locations
2018-02-28, Masahiro Yamada: [snip] > So, my idea is to rename existing > > HOSTCFLAGS -> KBUILD_HOSTCFLAGS > HOSTCXXFLAGS -> KBUILD_HOSTCXXFLAGS > HOSTLDFLAGS-> KBUILD_HOSTLDFLAGS > HOST_LOADLIBES -> KBUILD_HOSTLDLIBS > > > ("LOADLIBES" is too long, so rename it to "LDLIBS") > > > Then, re-add no-prefix ones as user interface. Hi Masahiro, Ok, I'll add the rename patch in a v3 of my series. -- Robin
Re: [PATCH v2 0/3] kbuild: fix host progs build with libs in non standard locations
2018-02-28, Masahiro Yamada: [snip] > So, my idea is to rename existing > > HOSTCFLAGS -> KBUILD_HOSTCFLAGS > HOSTCXXFLAGS -> KBUILD_HOSTCXXFLAGS > HOSTLDFLAGS-> KBUILD_HOSTLDFLAGS > HOST_LOADLIBES -> KBUILD_HOSTLDLIBS > > > ("LOADLIBES" is too long, so rename it to "LDLIBS") > > > Then, re-add no-prefix ones as user interface. Hi Masahiro, Ok, I'll add the rename patch in a v3 of my series. -- Robin
Re: [PATCH v2 3/3] objtool: use global host flags for compilation
2018-02-27, Josh Poimboeuf: > On Mon, Feb 26, 2018 at 07:41:48PM +0100, Robin Jarry wrote: [snip] > > ifdef CONFIG_STACK_VALIDATION > >has_libelf := $(call try-run,\ > > - echo "int main() {}" | $(HOSTCC) -xc -o /dev/null -lelf -,1,0) > > + echo "int main() {}" | $(HOSTCC) $(HOSTLDFLAGS) -xc -o /dev/null -lelf > > -,1,0) > > This should probably also have HOSTCFLAGS, since the objtool makefile > uses it as well. I had intentionally omitted HOSTCFLAGS since the compiled code does not contain any #include statements (only -lelf). But adding them cannot hurt. -- Robin
Re: [PATCH v2 3/3] objtool: use global host flags for compilation
2018-02-27, Josh Poimboeuf: > On Mon, Feb 26, 2018 at 07:41:48PM +0100, Robin Jarry wrote: [snip] > > ifdef CONFIG_STACK_VALIDATION > >has_libelf := $(call try-run,\ > > - echo "int main() {}" | $(HOSTCC) -xc -o /dev/null -lelf -,1,0) > > + echo "int main() {}" | $(HOSTCC) $(HOSTLDFLAGS) -xc -o /dev/null -lelf > > -,1,0) > > This should probably also have HOSTCFLAGS, since the objtool makefile > uses it as well. I had intentionally omitted HOSTCFLAGS since the compiled code does not contain any #include statements (only -lelf). But adding them cannot hurt. -- Robin
Re: [PATCH v2 0/3] kbuild: fix host progs build with libs in non standard locations
2018-02-27, Josh Poimboeuf: > In Documentation/kbuild/kbuild.txt, we have the following environment > variables: > > KCFLAGS > -- > Additional options to the C compiler (for built-in and modules). > > CFLAGS_KERNEL > -- > Additional options for $(CC) when used to compile > code that is compiled as built-in. > > CFLAGS_MODULE > -- > Additional module specific options to use for $(CC). > > LDFLAGS_MODULE > -- > Additional options used for $(LD) when linking modules. > > LDFLAGS_vmlinux > -- > Additional options passed to final link of vmlinux. > > So instead of > > HOST_CFLAGS > HOST_LDFLAGS > > maybe it would be more consistent to call them > > CFLAGS_HOST > LDFLAGS_HOST > > ? I had missed this file. Indeed {C,LD}FLAGS_HOST are much less confusing! > Also, the new environment variables should be documented in the above > file. Sure, I'll do that. However, I feel like I should also leave the paragraph in Documentation/admin-guide/README.txt. What do you think? -- Robin
Re: [PATCH v2 0/3] kbuild: fix host progs build with libs in non standard locations
2018-02-27, Josh Poimboeuf: > In Documentation/kbuild/kbuild.txt, we have the following environment > variables: > > KCFLAGS > -- > Additional options to the C compiler (for built-in and modules). > > CFLAGS_KERNEL > -- > Additional options for $(CC) when used to compile > code that is compiled as built-in. > > CFLAGS_MODULE > -- > Additional module specific options to use for $(CC). > > LDFLAGS_MODULE > -- > Additional options used for $(LD) when linking modules. > > LDFLAGS_vmlinux > -- > Additional options passed to final link of vmlinux. > > So instead of > > HOST_CFLAGS > HOST_LDFLAGS > > maybe it would be more consistent to call them > > CFLAGS_HOST > LDFLAGS_HOST > > ? I had missed this file. Indeed {C,LD}FLAGS_HOST are much less confusing! > Also, the new environment variables should be documented in the above > file. Sure, I'll do that. However, I feel like I should also leave the paragraph in Documentation/admin-guide/README.txt. What do you think? -- Robin
[PATCH v2 0/3] kbuild: fix host progs build with libs in non standard locations
This patchset allows to build host programs that depend on external libs installed in non standard locations (i.e. not in /usr/include, /usr/lib, etc.). For now, the only way is to force HOSTCC to include both the path to the host compiler and the build flags. I have encountered this issue when building linux into the buildroot framework. host-* versions of libs may be compiled and installed in a host staging dir removing the need to install them on the build system. I'm not really satisfied with the new HOST_{C,LD}FLAGS variables. They are too similar to HOST{C,LD}FLAGS and I find them confusing. However, HOST_EXTRA*FLAGS are already reserved for local use in makefiles (see Documentation/kbuild/makefiles.txt). And I didn't want to have even longer USER_HOST_*FLAGS. If someone has a better proposition, I'll happily make a v3. Comments are welcome. Changes since v1: - Fix typos. - Do not use HOST_EXTRA*FLAGS. Add new user specifiable variables. - Pass HOSTLDFLAGS to build single .c programs. - Build objtool with host flags. Robin Jarry (3): kbuild: introduce HOST_{C,LD}FLAGS kbuild: use HOSTLDFLAGS for single .c executables objtool: use global host flags for compilation Documentation/admin-guide/README.rst | 16 Makefile | 9 + scripts/Makefile.host| 2 +- tools/objtool/Makefile | 4 ++-- 4 files changed, 24 insertions(+), 7 deletions(-) -- 2.11.0
[PATCH v2 1/3] kbuild: introduce HOST_{C,LD}FLAGS
Add user-specifiable compiler/linker flags for host programs. Append these to already existing HOST{C,CXX,LD}FLAGS. Update documentation accordingly. Signed-off-by: Robin Jarry <robin.ja...@6wind.com> Cc: Josh Poimboeuf <jpoim...@redhat.com> Cc: Ingo Molnar <mi...@kernel.org> --- Documentation/admin-guide/README.rst | 16 Makefile | 7 --- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/Documentation/admin-guide/README.rst b/Documentation/admin-guide/README.rst index af5a437198d0..22ba3140e85f 100644 --- a/Documentation/admin-guide/README.rst +++ b/Documentation/admin-guide/README.rst @@ -271,6 +271,22 @@ Compiling the kernel To have the build system also tell the reason for the rebuild of each target, use ``V=2``. The default is ``V=0``. + - Host libs in non standard locations: + + Some host programs are linked with external libraries, such as openssl + or libelf. If these libs are installed in non standard locations on + your build system, you may specify it via the ``HOST_CFLAGS`` and + ``HOST_LDFLAGS`` parameters on the ``make`` command line. + + For example, if you have installed host libs in ``/foo/staging``, you + may use the following command:: + + make HOST_CFLAGS="-I/foo/staging/include" \ + HOST_LDFLAGS="-L/foo/staging/lib -Wl,-rpath=/foo/staging/lib" + + Please note: If the ``HOST_CFLAGS`` or ``HOST_LDFLAGS`` options are + used, then they must be used for all invocations of make. + - Keep a backup kernel handy in case something goes wrong. This is especially true for the development releases, since each new release contains new code which has not been debugged. Make sure you keep a diff --git a/Makefile b/Makefile index 659a7780aeb3..f7c543cebfc6 100644 --- a/Makefile +++ b/Makefile @@ -362,9 +362,10 @@ HOST_LFS_LIBS := $(shell getconf LFS_LIBS) HOSTCC = gcc HOSTCXX = g++ HOSTCFLAGS := -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 \ - -fomit-frame-pointer -std=gnu89 $(HOST_LFS_CFLAGS) -HOSTCXXFLAGS := -O2 $(HOST_LFS_CFLAGS) -HOSTLDFLAGS := $(HOST_LFS_LDFLAGS) + -fomit-frame-pointer -std=gnu89 $(HOST_LFS_CFLAGS) \ + $(HOST_CFLAGS) +HOSTCXXFLAGS := -O2 $(HOST_LFS_CFLAGS) $(HOST_CFLAGS) +HOSTLDFLAGS := $(HOST_LFS_LDFLAGS) $(HOST_LDFLAGS) HOST_LOADLIBES := $(HOST_LFS_LIBS) # Make variables (CC, etc...) -- 2.11.0
[PATCH v2 2/3] kbuild: use HOSTLDFLAGS for single .c executables
When compiling executables from a single .c file, the linker is also invoked. Pass the HOSTLDFLAGS like for other linker commands. Signed-off-by: Robin Jarry <robin.ja...@6wind.com> Cc: Josh Poimboeuf <jpoim...@redhat.com> Cc: Ingo Molnar <mi...@kernel.org> --- scripts/Makefile.host | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/Makefile.host b/scripts/Makefile.host index e6dc6ae2d7c4..aa971cc3f339 100644 --- a/scripts/Makefile.host +++ b/scripts/Makefile.host @@ -84,7 +84,7 @@ hostcxx_flags = -Wp,-MD,$(depfile) $(__hostcxx_flags) # Create executable from a single .c file # host-csingle -> Executable quiet_cmd_host-csingle = HOSTCC $@ - cmd_host-csingle = $(HOSTCC) $(hostc_flags) -o $@ $< \ + cmd_host-csingle = $(HOSTCC) $(hostc_flags) $(HOSTLDFLAGS) -o $@ $< \ $(HOST_LOADLIBES) $(HOSTLOADLIBES_$(@F)) $(host-csingle): $(obj)/%: $(src)/%.c FORCE $(call if_changed_dep,host-csingle) -- 2.11.0
[PATCH v2 0/3] kbuild: fix host progs build with libs in non standard locations
This patchset allows to build host programs that depend on external libs installed in non standard locations (i.e. not in /usr/include, /usr/lib, etc.). For now, the only way is to force HOSTCC to include both the path to the host compiler and the build flags. I have encountered this issue when building linux into the buildroot framework. host-* versions of libs may be compiled and installed in a host staging dir removing the need to install them on the build system. I'm not really satisfied with the new HOST_{C,LD}FLAGS variables. They are too similar to HOST{C,LD}FLAGS and I find them confusing. However, HOST_EXTRA*FLAGS are already reserved for local use in makefiles (see Documentation/kbuild/makefiles.txt). And I didn't want to have even longer USER_HOST_*FLAGS. If someone has a better proposition, I'll happily make a v3. Comments are welcome. Changes since v1: - Fix typos. - Do not use HOST_EXTRA*FLAGS. Add new user specifiable variables. - Pass HOSTLDFLAGS to build single .c programs. - Build objtool with host flags. Robin Jarry (3): kbuild: introduce HOST_{C,LD}FLAGS kbuild: use HOSTLDFLAGS for single .c executables objtool: use global host flags for compilation Documentation/admin-guide/README.rst | 16 Makefile | 9 + scripts/Makefile.host| 2 +- tools/objtool/Makefile | 4 ++-- 4 files changed, 24 insertions(+), 7 deletions(-) -- 2.11.0
[PATCH v2 1/3] kbuild: introduce HOST_{C,LD}FLAGS
Add user-specifiable compiler/linker flags for host programs. Append these to already existing HOST{C,CXX,LD}FLAGS. Update documentation accordingly. Signed-off-by: Robin Jarry Cc: Josh Poimboeuf Cc: Ingo Molnar --- Documentation/admin-guide/README.rst | 16 Makefile | 7 --- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/Documentation/admin-guide/README.rst b/Documentation/admin-guide/README.rst index af5a437198d0..22ba3140e85f 100644 --- a/Documentation/admin-guide/README.rst +++ b/Documentation/admin-guide/README.rst @@ -271,6 +271,22 @@ Compiling the kernel To have the build system also tell the reason for the rebuild of each target, use ``V=2``. The default is ``V=0``. + - Host libs in non standard locations: + + Some host programs are linked with external libraries, such as openssl + or libelf. If these libs are installed in non standard locations on + your build system, you may specify it via the ``HOST_CFLAGS`` and + ``HOST_LDFLAGS`` parameters on the ``make`` command line. + + For example, if you have installed host libs in ``/foo/staging``, you + may use the following command:: + + make HOST_CFLAGS="-I/foo/staging/include" \ + HOST_LDFLAGS="-L/foo/staging/lib -Wl,-rpath=/foo/staging/lib" + + Please note: If the ``HOST_CFLAGS`` or ``HOST_LDFLAGS`` options are + used, then they must be used for all invocations of make. + - Keep a backup kernel handy in case something goes wrong. This is especially true for the development releases, since each new release contains new code which has not been debugged. Make sure you keep a diff --git a/Makefile b/Makefile index 659a7780aeb3..f7c543cebfc6 100644 --- a/Makefile +++ b/Makefile @@ -362,9 +362,10 @@ HOST_LFS_LIBS := $(shell getconf LFS_LIBS) HOSTCC = gcc HOSTCXX = g++ HOSTCFLAGS := -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 \ - -fomit-frame-pointer -std=gnu89 $(HOST_LFS_CFLAGS) -HOSTCXXFLAGS := -O2 $(HOST_LFS_CFLAGS) -HOSTLDFLAGS := $(HOST_LFS_LDFLAGS) + -fomit-frame-pointer -std=gnu89 $(HOST_LFS_CFLAGS) \ + $(HOST_CFLAGS) +HOSTCXXFLAGS := -O2 $(HOST_LFS_CFLAGS) $(HOST_CFLAGS) +HOSTLDFLAGS := $(HOST_LFS_LDFLAGS) $(HOST_LDFLAGS) HOST_LOADLIBES := $(HOST_LFS_LIBS) # Make variables (CC, etc...) -- 2.11.0
[PATCH v2 2/3] kbuild: use HOSTLDFLAGS for single .c executables
When compiling executables from a single .c file, the linker is also invoked. Pass the HOSTLDFLAGS like for other linker commands. Signed-off-by: Robin Jarry Cc: Josh Poimboeuf Cc: Ingo Molnar --- scripts/Makefile.host | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/Makefile.host b/scripts/Makefile.host index e6dc6ae2d7c4..aa971cc3f339 100644 --- a/scripts/Makefile.host +++ b/scripts/Makefile.host @@ -84,7 +84,7 @@ hostcxx_flags = -Wp,-MD,$(depfile) $(__hostcxx_flags) # Create executable from a single .c file # host-csingle -> Executable quiet_cmd_host-csingle = HOSTCC $@ - cmd_host-csingle = $(HOSTCC) $(hostc_flags) -o $@ $< \ + cmd_host-csingle = $(HOSTCC) $(hostc_flags) $(HOSTLDFLAGS) -o $@ $< \ $(HOST_LOADLIBES) $(HOSTLOADLIBES_$(@F)) $(host-csingle): $(obj)/%: $(src)/%.c FORCE $(call if_changed_dep,host-csingle) -- 2.11.0
[PATCH v2 3/3] objtool: use global host flags for compilation
When libelf headers and libs are not found and CONFIG_UNWINDER_ORC is selected, there is a make error introduced by commit 3dd40cb320fe ("objtool: Upgrade libelf-devel warning to error for CONFIG_ORC_UNWINDER"). Host headers and libs may be in a non-standard location and the check is performed without host flags. Make sure to use host flags for the check and for building objtool. Remove duplicate flags. Fixes: 3b27a0c85d70 ("objtool: Detect and warn if libelf is missing and don't break the build") Signed-off-by: Robin Jarry <robin.ja...@6wind.com> Cc: Josh Poimboeuf <jpoim...@redhat.com> Cc: Ingo Molnar <mi...@kernel.org> --- Makefile | 2 +- tools/objtool/Makefile | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index f7c543cebfc6..c9dc35fe0e48 100644 --- a/Makefile +++ b/Makefile @@ -955,7 +955,7 @@ export mod_sign_cmd ifdef CONFIG_STACK_VALIDATION has_libelf := $(call try-run,\ - echo "int main() {}" | $(HOSTCC) -xc -o /dev/null -lelf -,1,0) + echo "int main() {}" | $(HOSTCC) $(HOSTLDFLAGS) -xc -o /dev/null -lelf -,1,0) ifeq ($(has_libelf),1) objtool_target := tools/objtool FORCE else diff --git a/tools/objtool/Makefile b/tools/objtool/Makefile index e6acc281dd37..4d4b810313e2 100644 --- a/tools/objtool/Makefile +++ b/tools/objtool/Makefile @@ -31,8 +31,8 @@ INCLUDES := -I$(srctree)/tools/include \ -I$(srctree)/tools/arch/$(HOSTARCH)/include/uapi \ -I$(srctree)/tools/objtool/arch/$(ARCH)/include WARNINGS := $(EXTRA_WARNINGS) -Wno-switch-default -Wno-switch-enum -Wno-packed -CFLAGS += -Wall -Werror $(WARNINGS) -fomit-frame-pointer -O2 -g $(INCLUDES) -LDFLAGS += -lelf $(LIBSUBCMD) +CFLAGS += $(HOSTCFLAGS) -Werror $(WARNINGS) -g $(INCLUDES) +LDFLAGS += $(HOSTLDFLAGS) -lelf $(LIBSUBCMD) # Allow old libelf to be used: elfshdr := $(shell echo '\#include ' | $(CC) $(CFLAGS) -x c -E - | grep elf_getshdr) -- 2.11.0
[PATCH v2 3/3] objtool: use global host flags for compilation
When libelf headers and libs are not found and CONFIG_UNWINDER_ORC is selected, there is a make error introduced by commit 3dd40cb320fe ("objtool: Upgrade libelf-devel warning to error for CONFIG_ORC_UNWINDER"). Host headers and libs may be in a non-standard location and the check is performed without host flags. Make sure to use host flags for the check and for building objtool. Remove duplicate flags. Fixes: 3b27a0c85d70 ("objtool: Detect and warn if libelf is missing and don't break the build") Signed-off-by: Robin Jarry Cc: Josh Poimboeuf Cc: Ingo Molnar --- Makefile | 2 +- tools/objtool/Makefile | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index f7c543cebfc6..c9dc35fe0e48 100644 --- a/Makefile +++ b/Makefile @@ -955,7 +955,7 @@ export mod_sign_cmd ifdef CONFIG_STACK_VALIDATION has_libelf := $(call try-run,\ - echo "int main() {}" | $(HOSTCC) -xc -o /dev/null -lelf -,1,0) + echo "int main() {}" | $(HOSTCC) $(HOSTLDFLAGS) -xc -o /dev/null -lelf -,1,0) ifeq ($(has_libelf),1) objtool_target := tools/objtool FORCE else diff --git a/tools/objtool/Makefile b/tools/objtool/Makefile index e6acc281dd37..4d4b810313e2 100644 --- a/tools/objtool/Makefile +++ b/tools/objtool/Makefile @@ -31,8 +31,8 @@ INCLUDES := -I$(srctree)/tools/include \ -I$(srctree)/tools/arch/$(HOSTARCH)/include/uapi \ -I$(srctree)/tools/objtool/arch/$(ARCH)/include WARNINGS := $(EXTRA_WARNINGS) -Wno-switch-default -Wno-switch-enum -Wno-packed -CFLAGS += -Wall -Werror $(WARNINGS) -fomit-frame-pointer -O2 -g $(INCLUDES) -LDFLAGS += -lelf $(LIBSUBCMD) +CFLAGS += $(HOSTCFLAGS) -Werror $(WARNINGS) -g $(INCLUDES) +LDFLAGS += $(HOSTLDFLAGS) -lelf $(LIBSUBCMD) # Allow old libelf to be used: elfshdr := $(shell echo '\#include ' | $(CC) $(CFLAGS) -x c -E - | grep elf_getshdr) -- 2.11.0
Re: [PATCH 2/2] objtool: use host flags to detect if libelf is missing
2018-02-23, Josh Poimboeuf: > Hi Robin, > > Did you test this? I see some issues: > > a) I don't see where the host_cflags variable comes from (and btw, it's >misspelled...) Hi Josh, Shame on me... Last minute fix. I had tested this first by forcing HOSTCC="gcc " but I found it rather dirty. As it turns out, my patch is not better. > b) I don't see where objtool uses HOSTLDFLAGS. Indeed, I also missed this (see above). It looks like objtool does not use HOSTCFLAGS nor HOSTLDFLAGS (defined in top Makefile). Do you see a reason why? Maybe it would be a good idea to share these flags (adding some specific ones for objtool, if needed). What do you think? -- Robin
Re: [PATCH 2/2] objtool: use host flags to detect if libelf is missing
2018-02-23, Josh Poimboeuf: > Hi Robin, > > Did you test this? I see some issues: > > a) I don't see where the host_cflags variable comes from (and btw, it's >misspelled...) Hi Josh, Shame on me... Last minute fix. I had tested this first by forcing HOSTCC="gcc " but I found it rather dirty. As it turns out, my patch is not better. > b) I don't see where objtool uses HOSTLDFLAGS. Indeed, I also missed this (see above). It looks like objtool does not use HOSTCFLAGS nor HOSTLDFLAGS (defined in top Makefile). Do you see a reason why? Maybe it would be a good idea to share these flags (adding some specific ones for objtool, if needed). What do you think? -- Robin
[PATCH 1/2] kbuild: introduce HOST_EXTRALDFLAGS
Add a new user specifiable variable to provide specific linker options (-L, -rpath, ...) for host programs build. Append these options to HOSTLDFLAGS. Signed-off-by: Robin Jarry <robin.ja...@6wind.com> Cc: Josh Poimboeuf <jpoim...@redhat.com> Cc: Ingo Molnar <mi...@kernel.org> --- Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile b/Makefile index d9cf3a40eda9..e9609319d2b8 100644 --- a/Makefile +++ b/Makefile @@ -365,6 +365,7 @@ HOSTCFLAGS := -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 \ -fomit-frame-pointer -std=gnu89 $(HOST_LFS_CFLAGS) HOSTCXXFLAGS := -O2 $(HOST_LFS_CFLAGS) HOSTLDFLAGS := $(HOST_LFS_LDFLAGS) +HOSTLDFLAGS += $(HOST_EXTRALDFLAGS) HOST_LOADLIBES := $(HOST_LFS_LIBS) # Make variables (CC, etc...) -- 2.11.0
[PATCH 0/2] objtool: fix libelf detection in non-standard locations
When libelf headers and libs are not in standard locations, the check fails and host flags are ignored. I have encountered this issue when building linux into the buildroot framework. host-* versions of libs may be compiled and installed in a host staging dir removing the need to install them on the build system. Comments are welcome. Regards, Robin Jarry (2): kbuild: introduce HOST_EXTRALDFLAGS objtool: use host flags to detect if libelf is missing Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) -- 2.11.0
[PATCH 1/2] kbuild: introduce HOST_EXTRALDFLAGS
Add a new user specifiable variable to provide specific linker options (-L, -rpath, ...) for host programs build. Append these options to HOSTLDFLAGS. Signed-off-by: Robin Jarry Cc: Josh Poimboeuf Cc: Ingo Molnar --- Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile b/Makefile index d9cf3a40eda9..e9609319d2b8 100644 --- a/Makefile +++ b/Makefile @@ -365,6 +365,7 @@ HOSTCFLAGS := -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 \ -fomit-frame-pointer -std=gnu89 $(HOST_LFS_CFLAGS) HOSTCXXFLAGS := -O2 $(HOST_LFS_CFLAGS) HOSTLDFLAGS := $(HOST_LFS_LDFLAGS) +HOSTLDFLAGS += $(HOST_EXTRALDFLAGS) HOST_LOADLIBES := $(HOST_LFS_LIBS) # Make variables (CC, etc...) -- 2.11.0
[PATCH 0/2] objtool: fix libelf detection in non-standard locations
When libelf headers and libs are not in standard locations, the check fails and host flags are ignored. I have encountered this issue when building linux into the buildroot framework. host-* versions of libs may be compiled and installed in a host staging dir removing the need to install them on the build system. Comments are welcome. Regards, Robin Jarry (2): kbuild: introduce HOST_EXTRALDFLAGS objtool: use host flags to detect if libelf is missing Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) -- 2.11.0
[PATCH 2/2] objtool: use host flags to detect if libelf is missing
When libelf headers and libs are not found and CONFIG_UNWINDER_ORC is selected, there is a make error introduced by commit 3dd40cb320fe ("objtool: Upgrade libelf-devel warning to error for CONFIG_ORC_UNWINDER"). Host headers and libs may be in a non-standard location and the check is performed without host flags. Make sure to use host flags for the check (they will be used later when building objtool anyway). Fixes: 3b27a0c85d70 ("objtool: Detect and warn if libelf is missing and don't break the build") Signed-off-by: Robin Jarry <robin.ja...@6wind.com> Cc: Josh Poimboeuf <jpoim...@redhat.com> Cc: Ingo Molnar <mi...@kernel.org> --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index e9609319d2b8..4e8c667b9f3f 100644 --- a/Makefile +++ b/Makefile @@ -955,7 +955,7 @@ export mod_sign_cmd ifdef CONFIG_STACK_VALIDATION has_libelf := $(call try-run,\ - echo "int main() {}" | $(HOSTCC) -xc -o /dev/null -lelf -,1,0) + echo "int main() {}" | $(HOSTCC) $(host_clfags) $(HOSTLDFLAGS) -xc -o /dev/null -lelf -,1,0) ifeq ($(has_libelf),1) objtool_target := tools/objtool FORCE else -- 2.11.0
[PATCH 2/2] objtool: use host flags to detect if libelf is missing
When libelf headers and libs are not found and CONFIG_UNWINDER_ORC is selected, there is a make error introduced by commit 3dd40cb320fe ("objtool: Upgrade libelf-devel warning to error for CONFIG_ORC_UNWINDER"). Host headers and libs may be in a non-standard location and the check is performed without host flags. Make sure to use host flags for the check (they will be used later when building objtool anyway). Fixes: 3b27a0c85d70 ("objtool: Detect and warn if libelf is missing and don't break the build") Signed-off-by: Robin Jarry Cc: Josh Poimboeuf Cc: Ingo Molnar --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index e9609319d2b8..4e8c667b9f3f 100644 --- a/Makefile +++ b/Makefile @@ -955,7 +955,7 @@ export mod_sign_cmd ifdef CONFIG_STACK_VALIDATION has_libelf := $(call try-run,\ - echo "int main() {}" | $(HOSTCC) -xc -o /dev/null -lelf -,1,0) + echo "int main() {}" | $(HOSTCC) $(host_clfags) $(HOSTLDFLAGS) -xc -o /dev/null -lelf -,1,0) ifeq ($(has_libelf),1) objtool_target := tools/objtool FORCE else -- 2.11.0