Closed Kitty-Hawk1 closed 3 years ago
This is taken from one of our i.MX6 solutions.
We’re migrating our Infineon Trust M software, which was running Linux 4.9.11 built with GCC version 7.3.0, To Linux version 5.4.47 built with GCC version 10.2.0 [to add in new features]
Yocto recipe snippet:
SRC_URI = "gitsm://github.com/Infineon/cli-optiga-trust-m.git;protocol=https" SRC_URI += file://28db645eb6f121becd968ba62b775fa56a189f46.patch;patchdir=trustm_lib SRC_URI += file://c0ec9b28dbc27748d18b52d1351fc1c1e44f54be.patch;patchdir=trustm_lib PV = "1.0+git${SRCPV}" SRCREV = "44f942c04424c03970242281667f01a5aa442d49" S = "${WORKDIR}/git" TARGET_CFLAGS = "-I${STAGING_INCDIR} -fPIC -DENGINE_DYNAMIC_SUPPORT" TARGET_LDFLAGS = "-lpthread -lssl -lcrypto -lrt" do_compile () { oe_runmake -C ${WORKDIR}/git workaround_patch oe_runmake -C ${WORKDIR}/git 'CC=${CC}' }
The same software but with newer compiler shows the problem below…
NOTE: make -j 8 -C /home/wblinux/Development/scripts/scripts/sn-gpm-249.rel.1.01/build-devel/tmp/work/cortexa7t2hf-neon-cwr-linux-gnueabi/cli-optiga-trust-m/1.0+gitAUTOINC+44 f942c044-r0/git CC=arm-cwr-linux-gnueabi-gcc -mthumb -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a7 --sysroot=/home/wblinux/Development/scripts/scripts/sn-gpm-249.rel.1.01/buil d-devel/tmp/work/cortexa7t2hf-neon-cwr-linux-gnueabi/cli-optiga-trust-m/1.0+gitAUTOINC+44f942c044-r0/recipe-sysroot make: Entering directory '/home/wblinux/Development/scripts/scripts/sn-gpm-249.rel.1.01/build-devel/tmp/work/cortexa7t2hf-neon-cwr-linux-gnueabi/cli-optiga-trust-m/1.0+gitAUT OINC+44f942c044-r0/git' +++++++ Generating lib object: trustm_lib/pal/linux/pal_os_datastore.c +++++++ Generating lib object: trustm_lib/pal/linux/pal_os_event.c ******* Linking bin/libtrustm.so ******* Linking linux_example/trustm_data ******* Linking linux_example/trustm_readmetadata_status ******* Linking linux_example/trustm_read_data ******* Linking linux_example/trustm_rsa_keygen ******* Linking linux_example/trustm_readmetadata_data ******* Linking linux_example/trustm_rsa_sign ******* Linking linux_example/trustm_rsa_dec ******* Linking linux_example/trustm_rsa_enc ******* Linking linux_example/trustm_ecc_keygen ******* Linking linux_example/trustm_readmetadata_private ******* Linking linux_example/trustm_errorcode ******* Linking linux_example/trustm_monotonic_counter ******* Linking linux_example/trustm_chipinfo ******* Linking linux_example/trustm_ecc_verify ******* Linking linux_example/trustm_rsa_verify ******* Linking linux_example/trustm_read_status ******* Linking linux_example/simpleTest_Server ******* Linking linux_example/trustm_metadata ******* Linking linux_example/simpleTest_Client ******* Linking linux_example/trustm_cert ******* Linking linux_example/trustm_ecc_sign ******* Linking bin/trustm_engine.so /home/wblinux/Development/scripts/scripts/sn-gpm-249.rel.1.01/build-devel/tmp/work/cortexa7t2hf-neon-cwr-linux-gnueabi/cli-optiga-trust-m/1.0+gitAUTOINC+44f942c044-r0/recipe- sysroot-native/usr/bin/arm-cwr-linux-gnueabi/../../libexec/arm-cwr-linux-gnueabi/gcc/arm-cwr-linux-gnueabi/10.2.0/ld: trustm_engine/trustm_engine.o:(.bss+0x0): multiple defin ition of `lock'; trustm_engine/trustm_engine_rsa.o:(.bss+0x0): first defined here /home/wblinux/Development/scripts/scripts/sn-gpm-249.rel.1.01/build-devel/tmp/work/cortexa7t2hf-neon-cwr-linux-gnueabi/cli-optiga-trust-m/1.0+gitAUTOINC+44f942c044-r0/recipe- sysroot-native/usr/bin/arm-cwr-linux-gnueabi/../../libexec/arm-cwr-linux-gnueabi/gcc/arm-cwr-linux-gnueabi/10.2.0/ld: trustm_engine/trustm_engine_ec.o:(.bss+0x0): multiple de finition of `lock'; trustm_engine/trustm_engine_rsa.o:(.bss+0x0): first defined here /home/wblinux/Development/scripts/scripts/sn-gpm-249.rel.1.01/build-devel/tmp/work/cortexa7t2hf-neon-cwr-linux-gnueabi/cli-optiga-trust-m/1.0+gitAUTOINC+44f942c044-r0/recipe- sysroot-native/usr/bin/arm-cwr-linux-gnueabi/../../libexec/arm-cwr-linux-gnueabi/gcc/arm-cwr-linux-gnueabi/10.2.0/ld: trustm_engine/trustm_engine_rand.o:(.bss+0x0): multiple definition of `lock'; trustm_engine/trustm_engine_rsa.o:(.bss+0x0): first defined here
Thanks. Thanks a lot for your feedback. Please remove this line "pthread_mutex_t lock;": in the trustm_engine_common.h https://github.com/Infineon/linux-optiga-trust-m/blob/44f942c04424c03970242281667f01a5aa442d49/trustm_engine/trustm_engine_common.h#L171
For greater stability and performance, please upgrade to development_v3 branch https://github.com/Infineon/linux-optiga-trust-m/commit/1718b8211f01738373f5e45548c964d2138a0a6a
Yes removing it from the header builds, haven't tested yet though.
Thanks for the feedback and will close this GCC build issue for now.
This is taken from one of our i.MX6 solutions.
We’re migrating our Infineon Trust M software, which was running Linux 4.9.11 built with GCC version 7.3.0, To Linux version 5.4.47 built with GCC version 10.2.0 [to add in new features]
Yocto recipe snippet:
The same software but with newer compiler shows the problem below…
Thanks.