Bug 11052

Summary: pseudo x32 target build fails
Product: [Yocto Project Subprojects] Pseudo Reporter: Saul Wold <sgw>
Component: pseudoAssignee: Joshua Lock <joshuagloe>
Status: RESOLVED WORKSFORME QA Contact:
Severity: normal    
Priority: Medium+ CC: randy.macleod, seebs, yp.pseudo.watcher, yp.watcher
Version: unspecified   
Target Milestone: 2.3 M3   
Hardware: x86   
OS: Multiple   
Whiteboard:
OS type for building Yocto: --- Type of Regression: New (Never tested)
Verified: Documentation change: Yes (doc changes required)

Description Saul Wold 2017-02-14 17:19:40 UTC
Using the following settings, pseudo fails to build

MACHINE="intel-corei7-64"
DEFAULTTUNE = "corei7-64-x32"

t.o: In function `pseudo_client_op':
| /usr/src/debug/pseudo/1.8.1-r0/pseudo-1.8.1/pseudo_client.c:1695: undefined reference to `memcpy@GLIBC_2.2.5'
| /usr/src/debug/pseudo/1.8.1-r0/pseudo-1.8.1/pseudo_client.c:1697: undefined reference to `memcpy@GLIBC_2.2.5'
| /usr/src/debug/pseudo/1.8.1-r0/pseudo-1.8.1/pseudo_client.c:1700: undefined reference to `memcpy@GLIBC_2.2.5'
| pseudo_client.o:/usr/src/debug/pseudo/1.8.1-r0/pseudo-1.8.1/pseudo_client.c:1719: more undefined references to `memcpy@GLIBC_2.2.5' follow
| /srv/sdc/builds/poky/build/tmp/work/corei7-64-x32-poky-linux-gnux32/pseudo/1.8.1-r0/recipe-sysroot-native/usr/bin/x86_64-poky-linux-gnux32/../../libexec/x86_64-poky-linux-gnux32/gcc/x86_64-poky-linux-gnux32/6.3.0/ld: bin/pseudo: No symbol version section for versioned symbol `memcpy@GLIBC_2.2.5'
| /srv/sdc/builds/poky/build/tmp/work/corei7-64-x32-poky-linux-gnux32/pseudo/1.8.1-r0/recipe-sysroot-native/usr/bin/x86_64-poky-linux-gnux32/../../libexec/x86_64-poky-linux-gnux32/gcc/x86_64-poky-linux-gnux32/6.3.0/ld: final link failed: Nonrepresentable section on output
| collect2: error: ld returned 1 exit status
| Makefile:110: recipe for target 'bin/pseudo' failed
Comment 1 Seebs 2017-02-16 16:18:14 UTC
So this is weird because this is exactly the failure we previously coded around, and the #if condition on the 2.2.5 versioning is explicitly checking for what I thought was the define used for x32.

See ports/linux/portdefs.h, it's the test for __amd64__ and __ILP32__. If x32 isn't ILP32, I am very confused.
Comment 2 Joshua Lock 2017-02-16 16:29:16 UTC
The x32 fix wasn't in pseudo 1.8.1, it *is* in pseudo 1.8.2 but that only landed in OE-Core/poky master in the last 24hrs.

I just verified that I can build pseudo 1.8.2 with Saul's settings.