[OE-core] [PATCH] go-runtime: prevent host leakage into target objects

Matt Madison matt at madison.systems
Wed Oct 4 11:18:16 UTC 2017


On Tue, Oct 3, 2017 at 3:02 PM, Wold, Saul <saul.wold at intel.com> wrote:
> On Fri, 2017-09-29 at 14:15 +0000, Matt Madison wrote:
>> When building for a target whose architecture matches
>> the build host's, the second pass through make.bash
>> to build the shareable runtime would also overwrite
>> the target's static cgo library with host-compatibile
>> binaries.
>>
>> Fix this by running the host-side build once and
>> target-only passes of make.bash twice, for static
>> and shareable.  This ensures that what gets installed
>> is target-compatible.
>>
>> [YOCTO #12136]
>>
> This does not appear to actually fix the bug mentioned here, I just
> found the failure again with intel-corei7-64 (from meta-intel) and then
> confirmed that it fails with qemux86-64 and genericx86-64 when using
> TCLIBC = "musl"
>
> Can you please verify and test with MUSL.

Hmm.  I had tested with MUSL before sending that patch, but I'll try
it again to see what I might have missed.

-Matt


>
> Thanks
>    Sau!
>
>
>> Signed-off-by: Matt Madison <matt at madison.systems>
>> ---
>>  meta/recipes-devtools/go/go-runtime.inc | 11 ++++++++---
>>  1 file changed, 8 insertions(+), 3 deletions(-)
>>
>> diff --git a/meta/recipes-devtools/go/go-runtime.inc b/meta/recipes-
>> devtools/go/go-runtime.inc
>> index 934d1aa..bd26e2e 100644
>> --- a/meta/recipes-devtools/go/go-runtime.inc
>> +++ b/meta/recipes-devtools/go/go-runtime.inc
>> @@ -23,9 +23,13 @@ do_compile() {
>>       rm -rf ${GOBIN} ${B}/pkg
>>       mkdir ${GOBIN}
>>       cd src
>> -     GO_FLAGS="" ./make.bash
>> +     ./make.bash --host-only
>> +     cp ${B}/pkg/tool/${BUILD_GOTUPLE}/go_bootstrap ${B}
>> +     rm -rf ${B}/pkg/${TARGET_GOTUPLE}
>> +     ./make.bash --target-only
>>       if [ -n "${GO_DYNLINK}" ]; then
>> -             GO_FLAGS="-buildmode=shared" GO_LDFLAGS="-extldflags
>> \"${LDFLAGS}\"" ./make.bash
>> +             cp ${B}/go_bootstrap ${B}/pkg/tool/${BUILD_GOTUPLE}
>> +             GO_FLAGS="-buildmode=shared" GO_LDFLAGS="-extldflags
>> \"${LDFLAGS}\"" ./make.bash --target-only
>>       fi
>>       cd ${B}
>>  }
>> @@ -41,8 +45,9 @@ do_install() {
>>       rm -rf ${D}${libdir}/go/pkg/obj
>>       rm -rf ${D}${libdir}/go/pkg/bootstrap
>>       find src -mindepth 1 -maxdepth 1 -type d | while read
>> srcdir; do
>> -             [ "$srcdir" = "./cmd" ] || cp --
>> preserve=mode,timestamps -R $srcdir ${D}${libdir}/go/src/
>> +             cp --preserve=mode,timestamps -R $srcdir
>> ${D}${libdir}/go/src/
>>       done
>> +     rm -f ${D}${libdir}/go/src/cmd/dist/dist
>>  }
>>
>>  # Remove test binaries that cannot be relocated
>> --
>> 2.7.4
>>



More information about the Openembedded-core mailing list