Message ID | 20220411123520.95107-1-lkml@jv-coder.de |
---|---|
State | Accepted, archived |
Commit | 6b54215074d7f3dbba07f096f16b9c0acf51527c |
Headers | show |
Series | go: Always pass interpreter to linker | expand |
J?rg Vehlow <lkml@jv-coder.de> escreveu no dia segunda, 11/04/2022 à(s) 13:35: > From: Joerg Vehlow <joerg.vehlow@aox.de> > > When gos internal linker is used, it uses hardcoded paths to the > interpreter (dynamic linker). For x86_64 this hardcoded path is > /lib64/ld-linux-x86-64.so.2, but yocto's default dynamic linker path > is /lib64/ld-linux-x86-64.so.2. > Is this correct? The first path is the seme one of the second. Jose > Most of the time, the internal linker is not used and binutils linker > sets the correct path, but sometimes the internal linker is used and > the resulting binary will not work on x86_64. > > To ensure the path is always correct, pass it to the linker. > > Signed-off-by: Joerg Vehlow <joerg.vehlow@aox.de> > --- > meta/classes/go.bbclass | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/meta/classes/go.bbclass b/meta/classes/go.bbclass > index 9c4c92bffd..df8d4db26d 100644 > --- a/meta/classes/go.bbclass > +++ b/meta/classes/go.bbclass > @@ -1,4 +1,5 @@ > inherit goarch > +inherit linuxloader > > GO_PARALLEL_BUILD ?= "${@oe.utils.parallel_make_argument(d, '-p %d')}" > > @@ -44,7 +45,7 @@ GO_LINKMODE ?= "" > GO_LINKMODE:class-nativesdk = "--linkmode=external" > GO_LINKMODE:class-native = "--linkmode=external" > GO_EXTRA_LDFLAGS ?= "" > -GO_LDFLAGS ?= '-ldflags="${GO_RPATH} ${GO_LINKMODE} ${GO_EXTRA_LDFLAGS} > -extldflags '${GO_EXTLDFLAGS}'"' > +GO_LDFLAGS ?= '-ldflags="${GO_RPATH} ${GO_LINKMODE} -I > ${@get_linuxloader(d)} ${GO_EXTRA_LDFLAGS} -extldflags '${GO_EXTLDFLAGS}'"' > export GOBUILDFLAGS ?= "-v ${GO_LDFLAGS} -trimpath" > export GOPATH_OMIT_IN_ACTIONID ?= "1" > export GOPTESTBUILDFLAGS ?= "${GOBUILDFLAGS} -c" > -- > 2.25.1 > > > -=-=-=-=-=-=-=-=-=-=-=- > Links: You receive all messages sent to this group. > View/Reply Online (#164219): > https://lists.openembedded.org/g/openembedded-core/message/164219 > Mute This Topic: https://lists.openembedded.org/mt/90393660/5052612 > Group Owner: openembedded-core+owner@lists.openembedded.org > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [ > quaresma.jose@gmail.com] > -=-=-=-=-=-=-=-=-=-=-=- > >
Hi Jose, Am 4/11/2022 um 3:30 PM schrieb Jose Quaresma: > > > J?rg Vehlow <lkml@jv-coder.de <mailto:lkml@jv-coder.de>> escreveu no dia > segunda, 11/04/2022 à(s) 13:35: > > From: Joerg Vehlow <joerg.vehlow@aox.de <mailto:joerg.vehlow@aox.de>> > > When gos internal linker is used, it uses hardcoded paths to the > interpreter (dynamic linker). For x86_64 this hardcoded path is > /lib64/ld-linux-x86-64.so.2, but yocto's default dynamic linker path > is /lib64/ld-linux-x86-64.so.2. > > > Is this correct? The first path is the seme one of the second. Yes... of course this is wrong. /lib/ld-linux-x86-64.so.2 is the default linker path for yocto on x86_64 Sorry about that Joerg
On Mon, Apr 11, 2022 at 6:30 AM Jose Quaresma <quaresma.jose@gmail.com> wrote: > > > > J?rg Vehlow <lkml@jv-coder.de> escreveu no dia segunda, 11/04/2022 à(s) 13:35: >> >> From: Joerg Vehlow <joerg.vehlow@aox.de> >> >> When gos internal linker is used, it uses hardcoded paths to the >> interpreter (dynamic linker). For x86_64 this hardcoded path is >> /lib64/ld-linux-x86-64.so.2, but yocto's default dynamic linker path >> is /lib64/ld-linux-x86-64.so.2. > > > Is this correct? The first path is the seme one of the second. its a typo, Sadly we do differ in baselib naming convention on x86_64 ( without multilib ) compared to other distributions which are inherently multilib and use /lib64 OE instead uses /lib when multilib is not enabled but lib64/ when multilib is enabled. > > Jose > >> >> Most of the time, the internal linker is not used and binutils linker >> sets the correct path, but sometimes the internal linker is used and >> the resulting binary will not work on x86_64. >> >> To ensure the path is always correct, pass it to the linker. >> >> Signed-off-by: Joerg Vehlow <joerg.vehlow@aox.de> >> --- >> meta/classes/go.bbclass | 3 ++- >> 1 file changed, 2 insertions(+), 1 deletion(-) >> >> diff --git a/meta/classes/go.bbclass b/meta/classes/go.bbclass >> index 9c4c92bffd..df8d4db26d 100644 >> --- a/meta/classes/go.bbclass >> +++ b/meta/classes/go.bbclass >> @@ -1,4 +1,5 @@ >> inherit goarch >> +inherit linuxloader >> >> GO_PARALLEL_BUILD ?= "${@oe.utils.parallel_make_argument(d, '-p %d')}" >> >> @@ -44,7 +45,7 @@ GO_LINKMODE ?= "" >> GO_LINKMODE:class-nativesdk = "--linkmode=external" >> GO_LINKMODE:class-native = "--linkmode=external" >> GO_EXTRA_LDFLAGS ?= "" >> -GO_LDFLAGS ?= '-ldflags="${GO_RPATH} ${GO_LINKMODE} ${GO_EXTRA_LDFLAGS} -extldflags '${GO_EXTLDFLAGS}'"' >> +GO_LDFLAGS ?= '-ldflags="${GO_RPATH} ${GO_LINKMODE} -I ${@get_linuxloader(d)} ${GO_EXTRA_LDFLAGS} -extldflags '${GO_EXTLDFLAGS}'"' >> export GOBUILDFLAGS ?= "-v ${GO_LDFLAGS} -trimpath" >> export GOPATH_OMIT_IN_ACTIONID ?= "1" >> export GOPTESTBUILDFLAGS ?= "${GOBUILDFLAGS} -c" >> -- >> 2.25.1 >> >> >> -=-=-=-=-=-=-=-=-=-=-=- >> Links: You receive all messages sent to this group. >> View/Reply Online (#164219): https://lists.openembedded.org/g/openembedded-core/message/164219 >> Mute This Topic: https://lists.openembedded.org/mt/90393660/5052612 >> Group Owner: openembedded-core+owner@lists.openembedded.org >> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [quaresma.jose@gmail.com] >> -=-=-=-=-=-=-=-=-=-=-=- >> > > > -- > Best regards, > > José Quaresma
Hi, Am 4/11/2022 um 6:04 PM schrieb Khem Raj: > On Mon, Apr 11, 2022 at 6:30 AM Jose Quaresma <quaresma.jose@gmail.com> wrote: >> >> >> >> J?rg Vehlow <lkml@jv-coder.de> escreveu no dia segunda, 11/04/2022 à(s) 13:35: >>> >>> From: Joerg Vehlow <joerg.vehlow@aox.de> >>> >>> When gos internal linker is used, it uses hardcoded paths to the >>> interpreter (dynamic linker). For x86_64 this hardcoded path is >>> /lib64/ld-linux-x86-64.so.2, but yocto's default dynamic linker path >>> is /lib64/ld-linux-x86-64.so.2. >> >> >> Is this correct? The first path is the seme one of the second. > > its a typo, Sadly we do differ in baselib naming convention on x86_64 > ( without multilib ) > compared to other distributions which are inherently multilib and use > /lib64 OE instead uses > /lib when multilib is not enabled but lib64/ when multilib is enabled. Any comment on the content of the patch or do I have to send a v2 with a fixed commit message? Thanks, Joerg
On Thu, 2022-04-14 at 07:24 +0200, J?rg Vehlow wrote: > Hi, > > Am 4/11/2022 um 6:04 PM schrieb Khem Raj: > > On Mon, Apr 11, 2022 at 6:30 AM Jose Quaresma <quaresma.jose@gmail.com> wrote: > > > > > > > > > > > > J?rg Vehlow <lkml@jv-coder.de> escreveu no dia segunda, 11/04/2022 à(s) 13:35: > > > > > > > > From: Joerg Vehlow <joerg.vehlow@aox.de> > > > > > > > > When gos internal linker is used, it uses hardcoded paths to the > > > > interpreter (dynamic linker). For x86_64 this hardcoded path is > > > > /lib64/ld-linux-x86-64.so.2, but yocto's default dynamic linker path > > > > is /lib64/ld-linux-x86-64.so.2. > > > > > > > > > Is this correct? The first path is the seme one of the second. > > > > its a typo, Sadly we do differ in baselib naming convention on x86_64 > > ( without multilib ) > > compared to other distributions which are inherently multilib and use > > /lib64 OE instead uses > > /lib when multilib is not enabled but lib64/ when multilib is enabled. > > Any comment on the content of the patch or do I have to send a v2 with a > fixed commit message? It merged: https://git.yoctoproject.org/poky/commit/?id=460012e04a89e0b84fd5949c9a2229ef46e7a341 Cheers, Richard
diff --git a/meta/classes/go.bbclass b/meta/classes/go.bbclass index 9c4c92bffd..df8d4db26d 100644 --- a/meta/classes/go.bbclass +++ b/meta/classes/go.bbclass @@ -1,4 +1,5 @@ inherit goarch +inherit linuxloader GO_PARALLEL_BUILD ?= "${@oe.utils.parallel_make_argument(d, '-p %d')}" @@ -44,7 +45,7 @@ GO_LINKMODE ?= "" GO_LINKMODE:class-nativesdk = "--linkmode=external" GO_LINKMODE:class-native = "--linkmode=external" GO_EXTRA_LDFLAGS ?= "" -GO_LDFLAGS ?= '-ldflags="${GO_RPATH} ${GO_LINKMODE} ${GO_EXTRA_LDFLAGS} -extldflags '${GO_EXTLDFLAGS}'"' +GO_LDFLAGS ?= '-ldflags="${GO_RPATH} ${GO_LINKMODE} -I ${@get_linuxloader(d)} ${GO_EXTRA_LDFLAGS} -extldflags '${GO_EXTLDFLAGS}'"' export GOBUILDFLAGS ?= "-v ${GO_LDFLAGS} -trimpath" export GOPATH_OMIT_IN_ACTIONID ?= "1" export GOPTESTBUILDFLAGS ?= "${GOBUILDFLAGS} -c"