2019-04-11 08:47:37

by Nicolas Dichtel

[permalink] [raw]
Subject: [PATCH linux] objtool: fix pkg-config query in case of cross-compilation

In case of cross-compilation, there may be two pkg-config tools, one for
the host and one for the target. Enable to override the default name.

Fixes: 056d28d135bc ("objtool: Query pkg-config for libelf location")
Signed-off-by: Nicolas Dichtel <[email protected]>
---
Makefile | 3 ++-
tools/objtool/Makefile | 4 ++--
2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/Makefile b/Makefile
index 15c8251d4d5e..f12ca3598fc4 100644
--- a/Makefile
+++ b/Makefile
@@ -953,7 +953,8 @@ mod_sign_cmd = true
endif
export mod_sign_cmd

-HOST_LIBELF_LIBS = $(shell pkg-config libelf --libs 2>/dev/null || echo -lelf)
+export HOST_PKG_CONFIG ?= pkg-config
+HOST_LIBELF_LIBS = $(shell $(HOST_PKG_CONFIG) libelf --libs 2>/dev/null || echo -lelf)

ifdef CONFIG_STACK_VALIDATION
has_libelf := $(call try-run,\
diff --git a/tools/objtool/Makefile b/tools/objtool/Makefile
index 53f8be0f4a1f..4e229e77aacf 100644
--- a/tools/objtool/Makefile
+++ b/tools/objtool/Makefile
@@ -25,8 +25,8 @@ LIBSUBCMD = $(LIBSUBCMD_OUTPUT)libsubcmd.a
OBJTOOL := $(OUTPUT)objtool
OBJTOOL_IN := $(OBJTOOL)-in.o

-LIBELF_FLAGS := $(shell pkg-config libelf --cflags 2>/dev/null)
-LIBELF_LIBS := $(shell pkg-config libelf --libs 2>/dev/null || echo -lelf)
+LIBELF_FLAGS := $(shell $(HOST_PKG_CONFIG) libelf --cflags 2>/dev/null)
+LIBELF_LIBS := $(shell $(HOST_PKG_CONFIG) libelf --libs 2>/dev/null || echo -lelf)

all: $(OBJTOOL)

--
2.21.0


2019-04-11 08:54:48

by Rolf Eike Beer

[permalink] [raw]
Subject: Re: [PATCH linux] objtool: fix pkg-config query in case of cross-compilation

Am Donnerstag, 11. April 2019, 10:39:40 CEST schrieb Nicolas Dichtel:
> In case of cross-compilation, there may be two pkg-config tools, one for
> the host and one for the target. Enable to override the default name.
>
> Fixes: 056d28d135bc ("objtool: Query pkg-config for libelf location")
> Signed-off-by: Nicolas Dichtel <[email protected]>

If you do that, you have to fix a lot of other places, too. This starts in
scripts/kconfig/ and also includes e.g. tools/testing/.

Usually you have pkg-config for host and ${target_platform}-pkg-config for the
target, and the PKG_CONFIG variable for the target, usually initialized to $
(CROSS_COMPILE)pkg-config. I have sent a bunch of patches to replace the usage
of plain pkg-config at several places with the cross-aware version, but sadly
a lot of them have not been picked up. It break cross-building tests basically
all the time. One example is here:

https://marc.info/?l=linux-acpi&m=153544231529066&w=2

For me it looks like you are trying to go into the wrong direction.

Greetings,

Eike
--
Rolf Eike Beer, emlix GmbH, http://www.emlix.com
Fon +49 551 30664-0, Fax +49 551 30664-11
Gothaer Platz 3, 37083 Göttingen, Germany
Sitz der Gesellschaft: Göttingen, Amtsgericht Göttingen HR B 3160
Geschäftsführung: Heike Jordan, Dr. Uwe Kracke – Ust-IdNr.: DE 205 198 055

emlix - smart embedded open source


Attachments:
signature.asc (321.00 B)
This is a digitally signed message part.

2019-04-11 09:28:22

by Nicolas Dichtel

[permalink] [raw]
Subject: Re: [PATCH linux] objtool: fix pkg-config query in case of cross-compilation

Le 11/04/2019 à 10:52, Rolf Eike Beer a écrit :
> Am Donnerstag, 11. April 2019, 10:39:40 CEST schrieb Nicolas Dichtel:
>> In case of cross-compilation, there may be two pkg-config tools, one for
>> the host and one for the target. Enable to override the default name.
>>
>> Fixes: 056d28d135bc ("objtool: Query pkg-config for libelf location")
>> Signed-off-by: Nicolas Dichtel <[email protected]>
>
> If you do that, you have to fix a lot of other places, too. This starts in
> scripts/kconfig/ and also includes e.g. tools/testing/.
>
> Usually you have pkg-config for host and ${target_platform}-pkg-config for the
My use case was for buildroot, which define pkg-config and host-pkgconf. In
fact, I've just seen that a buildroot patch was accepted for this problem:
https://patchwork.ozlabs.org/patch/1081379/


Regards,
Nicolas

2019-04-11 13:52:57

by Rolf Eike Beer

[permalink] [raw]
Subject: Re: [PATCH linux] objtool: fix pkg-config query in case of cross-compilation

Am Donnerstag, 11. April 2019, 11:26:12 CEST schrieb Nicolas Dichtel:
> Le 11/04/2019 à 10:52, Rolf Eike Beer a écrit :
> > Am Donnerstag, 11. April 2019, 10:39:40 CEST schrieb Nicolas Dichtel:
> >> In case of cross-compilation, there may be two pkg-config tools, one for
> >> the host and one for the target. Enable to override the default name.
> >>
> >> Fixes: 056d28d135bc ("objtool: Query pkg-config for libelf location")
> >> Signed-off-by: Nicolas Dichtel <[email protected]>
> >
> > If you do that, you have to fix a lot of other places, too. This starts in
> > scripts/kconfig/ and also includes e.g. tools/testing/.
> >
> > Usually you have pkg-config for host and ${target_platform}-pkg-config for
> > the
> My use case was for buildroot, which define pkg-config and host-pkgconf. In
> fact, I've just seen that a buildroot patch was accepted for this problem:
> https://patchwork.ozlabs.org/patch/1081379/

I agree that it makes sense to have both host and target pkg-config
configurable. But IMHO that must happen in a central place (i.e. ./Makefile),
and it has to be used everywhere. Currently PKG_CONFIG is defined at multiple
places, sometimes host, sometimes target, and often pkg-config is called
directly, also mixing both usages.

So, IMHO, if you want to fix this: fix it once and for all in the whole
kernel, not just one place. What I have introduced was just the same as
kconfig is using to find the dependencies for some of the *config variants, so
this usecase would break for you anyway, although I don't think anyone in
buildroot will notice this.

Eike
--
Rolf Eike Beer, emlix GmbH, http://www.emlix.com
Fon +49 551 30664-0, Fax +49 551 30664-11
Gothaer Platz 3, 37083 Göttingen, Germany
Sitz der Gesellschaft: Göttingen, Amtsgericht Göttingen HR B 3160
Geschäftsführung: Heike Jordan, Dr. Uwe Kracke – Ust-IdNr.: DE 205 198 055

emlix - smart embedded open source


Attachments:
signature.asc (321.00 B)
This is a digitally signed message part.