All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 1/2] external-arm-toolchain-versions: Use ldd to get libc version
@ 2022-04-29  6:21 Sumit Garg
  2022-04-29  6:21 ` [PATCH v2 2/2] external-arm-toolchain: Add support for Arm GCC 11.2 binary release Sumit Garg
  2022-04-29 16:08 ` [PATCH v2 1/2] external-arm-toolchain-versions: Use ldd to get libc version Denys Dmytriyenko
  0 siblings, 2 replies; 7+ messages in thread
From: Sumit Garg @ 2022-04-29  6:21 UTC (permalink / raw)
  To: meta-arm; +Cc: jon.mason, ross.burton, denis, daniel.thompson, Sumit Garg

Arm GCC 11.2 binary release has moved away from keeping libc library
versioning info as libc-{EAT_VER_LIBC}.so. So rather switch to
retrieving libc version by parsing output from "$ ldd --version".

Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
---

Changes in v2:
- Directly invoke interpreter (/bin/sh) rather than sed-in-place ldd
  executable which can lead to permissions issue.

 .../external-arm-toolchain-versions.inc       | 41 +++++++------------
 1 file changed, 15 insertions(+), 26 deletions(-)

diff --git a/meta-arm-toolchain/conf/distro/include/external-arm-toolchain-versions.inc b/meta-arm-toolchain/conf/distro/include/external-arm-toolchain-versions.inc
index a89f2f0..244de26 100644
--- a/meta-arm-toolchain/conf/distro/include/external-arm-toolchain-versions.inc
+++ b/meta-arm-toolchain/conf/distro/include/external-arm-toolchain-versions.inc
@@ -50,37 +50,26 @@ def eat_get_gcc_version(d):
 
 def eat_get_libc_version(d):
     import os,bb
+    import subprocess
+
     syspath = bb.data.expand('${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}', d)
     if not syspath:
         return 'UNKNOWN'
 
-    libpath = syspath + '/libc/' + bb.data.expand('${EAT_LIBDIR}/${EAT_TARGET_SYS}/', d)
-
-    if os.path.exists(libpath):
-        for file in os.listdir(libpath):
-            if file.find('libc-') == 0:
-                return file[5:-3]
-
-    libpath = syspath + '/libc/' + bb.data.expand('${EAT_LIBDIR}/', d)
-
-    if os.path.exists(libpath):
-        for file in os.listdir(libpath):
-            if file.find('libc-') == 0:
-                return file[5:-3]
-
-    libpath = syspath + '/libc/usr/' + bb.data.expand('${EAT_LIBDIR}/${EAT_TARGET_SYS}/', d)
-
-    if os.path.exists(libpath):
-        for file in os.listdir(libpath):
-            if file.find('libc-') == 0:
-                return file[5:-3]
-
-    libpath = syspath + '/libc/usr/' + bb.data.expand('${EAT_LIBDIR}/', d)
+    topdir = d.getVar('TOPDIR', True)
+    lddpath = syspath + '/libc/usr/bin/ldd'
+
+    if os.path.exists(lddpath):
+        cmd = '/bin/sh ' + lddpath + ' --version'
+        try:
+            stdout, stderr = bb.process.run(cmd, cwd=topdir, stderr=subprocess.PIPE)
+        except bb.process.CmdError as exc:
+            bb.error('Failed to obtain external Arm libc version: %s' % exc)
+            return 'UNKNOWN'
+        else:
+            first_line = stdout.splitlines()[0]
+            return first_line.split()[2]
 
-    if os.path.exists(libpath):
-        for file in os.listdir(libpath):
-            if file.find('libc-') == 0:
-                return file[5:-3]
     return 'UNKNOWN'
 
 def eat_get_kernel_version(d):
-- 
2.25.1



^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v2 2/2] external-arm-toolchain: Add support for Arm GCC 11.2 binary release
  2022-04-29  6:21 [PATCH v2 1/2] external-arm-toolchain-versions: Use ldd to get libc version Sumit Garg
@ 2022-04-29  6:21 ` Sumit Garg
  2022-04-29 16:10   ` Denys Dmytriyenko
  2022-05-03  9:27   ` Ross Burton
  2022-04-29 16:08 ` [PATCH v2 1/2] external-arm-toolchain-versions: Use ldd to get libc version Denys Dmytriyenko
  1 sibling, 2 replies; 7+ messages in thread
From: Sumit Garg @ 2022-04-29  6:21 UTC (permalink / raw)
  To: meta-arm; +Cc: jon.mason, ross.burton, denis, daniel.thompson, Sumit Garg

Arm GCC 11.2 binary release has completely changed the way how libc was
packaged in earlier binary releases. So adjust do_install() accordingly
to support Arm GCC 11.2 as well as earlier binary releases.

Along with this update CI as well to point at Arm GCC 11.2 binary
releases.

Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
---

Changes in v2:
- None

 ci/get-binary-toolchains                      | 10 ++--
 .../external-arm-toolchain.bb                 | 47 ++++++++-----------
 2 files changed, 25 insertions(+), 32 deletions(-)

diff --git a/ci/get-binary-toolchains b/ci/get-binary-toolchains
index 838342a..bfdd8c5 100755
--- a/ci/get-binary-toolchains
+++ b/ci/get-binary-toolchains
@@ -2,7 +2,7 @@
 set -u
 
 HOST_ARCH=$(uname -m)
-VER="10.3-2021.07"
+VER="11.2-2022.02"
 
 DOWNLOAD_DIR=$1
 TOOLCHAIN_DIR=$2
@@ -15,18 +15,18 @@ if [ $HOST_ARCH = "aarch64" ]; then
 	#AArch64 Linux hosted cross compilers
 
 	#AArch32 target with hard float (arm-none-linux-gnueabihf)
-	wget -P $DOWNLOAD_DIR -nc https://developer.arm.com/-/media/Files/downloads/gnu-a/$VER/binrel/gcc-arm-$VER-$HOST_ARCH-arm-none-linux-gnueabihf.tar.xz
+	wget -P $DOWNLOAD_DIR -nc https://developer.arm.com/-/media/Files/downloads/gnu/$VER/binrel/gcc-arm-$VER-$HOST_ARCH-arm-none-linux-gnueabihf.tar.xz
 elif [ $HOST_ARCH = "x86_64" ]; then
 	#x86_64 Linux hosted cross compilers
 
 	#AArch32 target with hard float (arm-linux-none-gnueabihf)
-	wget -P $DOWNLOAD_DIR -nc https://developer.arm.com/-/media/Files/downloads/gnu-a/$VER/binrel/gcc-arm-$VER-$HOST_ARCH-arm-none-linux-gnueabihf.tar.xz
+	wget -P $DOWNLOAD_DIR -nc https://developer.arm.com/-/media/Files/downloads/gnu/$VER/binrel/gcc-arm-$VER-$HOST_ARCH-arm-none-linux-gnueabihf.tar.xz
 
 	#AArch64 GNU/Linux target (aarch64-none-linux-gnu)
-	wget -P $DOWNLOAD_DIR -nc https://developer.arm.com/-/media/Files/downloads/gnu-a/$VER/binrel/gcc-arm-$VER-$HOST_ARCH-aarch64-none-linux-gnu.tar.xz
+	wget -P $DOWNLOAD_DIR -nc https://developer.arm.com/-/media/Files/downloads/gnu/$VER/binrel/gcc-arm-$VER-$HOST_ARCH-aarch64-none-linux-gnu.tar.xz
 
 	#AArch64 GNU/Linux target (aarch64_be-none-linux-gnu)
-	wget -P $DOWNLOAD_DIR -nc https://developer.arm.com/-/media/Files/downloads/gnu-a/$VER/binrel/gcc-arm-$VER-$HOST_ARCH-aarch64_be-none-linux-gnu.tar.xz
+	wget -P $DOWNLOAD_DIR -nc https://developer.arm.com/-/media/Files/downloads/gnu/$VER/binrel/gcc-arm-$VER-$HOST_ARCH-aarch64_be-none-linux-gnu.tar.xz
 else
 	echo "ERROR - Unknown build arch of $HOST_ARCH"
 	exit 1
diff --git a/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-toolchain.bb b/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-toolchain.bb
index a58eeb4..dcc8ebf 100644
--- a/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-toolchain.bb
+++ b/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-toolchain.bb
@@ -79,29 +79,10 @@ do_install() {
 
 	CP_ARGS="-Prf --preserve=mode,timestamps --no-preserve=ownership"
 	cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/${EAT_LIBDIR}/*  ${D}${base_libdir}
-	if [ -d ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/${EAT_LIBDIR}/${EAT_TARGET_SYS} ]; then
-		cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/${EAT_LIBDIR}/${EAT_TARGET_SYS}/*  ${D}${base_libdir}
-	else
-		if [ -f ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/${EAT_LIBDIR}/ld-${EAT_VER_LIBC}.so ]; then
-			cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/${EAT_LIBDIR}/*  ${D}${base_libdir}
-		else
-			cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/${EAT_LIBDIR}/*.so*  ${D}${base_libdir}
-		fi
-	fi
-	if [ -d ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/${EAT_LIBDIR}/${EAT_TARGET_SYS} ]; then
-		cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/${EAT_LIBDIR}/${EAT_TARGET_SYS}/*  ${D}${libdir}
-	else
-		cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/${EAT_LIBDIR}/*  ${D}${libdir}
-		if [ ! -f ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/${EAT_LIBDIR}/ld-${EAT_VER_LIBC}.so ]; then
-			rm -rf ${D}${libdir}/*.so*
-		fi
-	fi
+	cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/${EAT_LIBDIR}/*  ${D}${base_libdir}
+	cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/${EAT_LIBDIR}/*  ${D}${libdir}
 	cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/share/*  ${D}${datadir}
 	cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/include/*  ${D}${includedir}
-	if [ -d ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/include/${EAT_TARGET_SYS} ]; then
-		cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/include/${EAT_TARGET_SYS}/*  ${D}${includedir}
-		rm -r ${D}${includedir}/${EAT_TARGET_SYS}
-	fi
 
 	cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/include/* ${D}${includedir}
 	if [ -d ${D}${includedir}/c++/${EAT_VER_GCC}/${EAT_TARGET_SYS} ]; then
@@ -128,7 +109,11 @@ do_install() {
 
 	# fix up the copied symlinks (they are still pointing to the multiarch directory)
 	linker_name="${@bb.utils.contains("TUNE_FEATURES", "aarch64", "ld-linux-aarch64.so.1", bb.utils.contains("TUNE_FEATURES", "callconvention-hard", "ld-linux-armhf.so.3", "ld-linux.so.3",d), d)}"
-	ln -sf ld-${EAT_VER_LIBC}.so ${D}${base_libdir}/${linker_name}
+	if [ -f ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/${EAT_LIBDIR}/ld-${EAT_VER_LIBC}.so ]; then
+		ln -sf ld-${EAT_VER_LIBC}.so ${D}${base_libdir}/${linker_name}
+	else
+		cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/lib/${linker_name} ${D}${base_libdir}/
+	fi
 	ln -sf ../../lib/librt.so.1 ${D}${libdir}/librt.so
 	ln -sf ../../lib/libcrypt.so.1 ${D}${libdir}/libcrypt.so
 	ln -sf ../../lib/libresolv.so.2 ${D}${libdir}/libresolv.so
@@ -144,6 +129,7 @@ do_install() {
 	ln -sf ../../lib/libnss_files.so.2 ${D}${libdir}/libnss_files.so
 	ln -sf ../../lib/libnss_compat.so.2 ${D}${libdir}/libnss_compat.so
 	ln -sf ../../lib/libm.so.6 ${D}${libdir}/libm.so
+	ln -sf ../../lib/libc_malloc_debug.so.0 ${D}${libdir}/libc_malloc_debug.so
 
 	# remove potential .so duplicates from base_libdir
 	# for all symlinks created above in libdir
@@ -164,7 +150,7 @@ do_install() {
 	rm -f ${D}${base_libdir}/libm.so
 
 	# Move these completely to ${libdir} and delete duplicates in ${base_libdir}
-	for lib in asan atomic gfortran gomp itm lsan sanitizer stdc++ tsan ubsan; do
+	for lib in asan hwasan atomic gfortran gomp itm lsan sanitizer stdc++ tsan ubsan; do
 		if [ -e ${D}${base_libdir}/lib${lib}.spec ] ; then
 			mv ${D}${base_libdir}/lib${lib}.spec ${D}${libdir}
 		fi
@@ -180,6 +166,10 @@ do_install() {
 	# Besides ld-${EAT_VER_LIBC}.so, other libs can have duplicates like lib*-${EAT_VER_LIBC}.so
 	# Only remove them if both are regular files and are identical
 	for i in ${D}${base_libdir}/lib*-${EAT_VER_LIBC}.so; do
+		if [ ! -e $i ] ; then
+			continue
+		fi
+
 		f=$(echo $i | sed 's/-${EAT_VER_LIBC}//')
 		l=$(ls $f.*)
 		if [ $(readlink -f $i ) = $l ]; then
@@ -217,9 +207,9 @@ do_install() {
 	fi
 
 	if [ -f ${D}${base_libdir}/libc.so ];then
-		sed -i -e "s# /${EAT_LIBDIR}/${EAT_TARGET_SYS}# ../../lib#g" -e "s# /usr/${EAT_LIBDIR}/${EAT_TARGET_SYS}# .#g" "s# /${EAT_LIBDIR}/# /lib/#g" ${D}${base_libdir}/libc.so
+		sed -i -e "s# /${EAT_LIBDIR}/${EAT_TARGET_SYS}# ../../lib#g" -e "s# /usr/${EAT_LIBDIR}/${EAT_TARGET_SYS}# .#g" -e "s# /${EAT_LIBDIR}/# /lib/#g" ${D}${base_libdir}/libc.so
 		if [ -f ${D}${base_libdir}/libc.so.6 ]; then
-			sed -i -e "s# /usr/${EAT_LIBDIR}/libc.so.6# /lib/libc.so.6#g" "s# /${EAT_LIBDIR}/libc.so.6# /lib/libc.so.6#g" ${D}${base_libdir}/libc.so.6
+			sed -i -e "s# /usr/${EAT_LIBDIR}/libc.so.6# /lib/libc.so.6#g" -e "s# /${EAT_LIBDIR}/libc.so.6# /lib/libc.so.6#g" ${D}${base_libdir}/libc.so.6
 		fi
 	fi
 
@@ -460,13 +450,16 @@ FILES:libgfortran-staticdev = "${libdir}/libgfortran.a"
 
 # From gcc-sanitizers.inc:
 
-FILES:libasan += "${libdir}/libasan.so.*"
+FILES:libasan += "${libdir}/libasan.so.* ${libdir}/libhwasan.so.*"
 FILES:libasan-dev += "\
     ${libdir}/libasan_preinit.o \
     ${libdir}/libasan.so \
+    ${libdir}/libhwasan.so \
     ${libdir}/libasan.la \
 "
-FILES:libasan-staticdev += "${libdir}/libasan.a"
+FILES:libasan-staticdev += "${libdir}/libasan.a \
+    ${libdir}/libhwasan.a \
+"
 
 FILES:libubsan += "${libdir}/libubsan.so.*"
 FILES:libubsan-dev += "\
-- 
2.25.1



^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH v2 1/2] external-arm-toolchain-versions: Use ldd to get libc version
  2022-04-29  6:21 [PATCH v2 1/2] external-arm-toolchain-versions: Use ldd to get libc version Sumit Garg
  2022-04-29  6:21 ` [PATCH v2 2/2] external-arm-toolchain: Add support for Arm GCC 11.2 binary release Sumit Garg
@ 2022-04-29 16:08 ` Denys Dmytriyenko
  1 sibling, 0 replies; 7+ messages in thread
From: Denys Dmytriyenko @ 2022-04-29 16:08 UTC (permalink / raw)
  To: Sumit Garg; +Cc: meta-arm, jon.mason, ross.burton, daniel.thompson

On Fri, Apr 29, 2022 at 11:51:41AM +0530, Sumit Garg wrote:
> Arm GCC 11.2 binary release has moved away from keeping libc library
> versioning info as libc-{EAT_VER_LIBC}.so. So rather switch to
> retrieving libc version by parsing output from "$ ldd --version".
> 
> Signed-off-by: Sumit Garg <sumit.garg@linaro.org>

Reviewed-by: Denys Dmytriyenko <denis@denix.org>


> ---
> 
> Changes in v2:
> - Directly invoke interpreter (/bin/sh) rather than sed-in-place ldd
>   executable which can lead to permissions issue.
> 
>  .../external-arm-toolchain-versions.inc       | 41 +++++++------------
>  1 file changed, 15 insertions(+), 26 deletions(-)
> 
> diff --git a/meta-arm-toolchain/conf/distro/include/external-arm-toolchain-versions.inc b/meta-arm-toolchain/conf/distro/include/external-arm-toolchain-versions.inc
> index a89f2f0..244de26 100644
> --- a/meta-arm-toolchain/conf/distro/include/external-arm-toolchain-versions.inc
> +++ b/meta-arm-toolchain/conf/distro/include/external-arm-toolchain-versions.inc
> @@ -50,37 +50,26 @@ def eat_get_gcc_version(d):
>  
>  def eat_get_libc_version(d):
>      import os,bb
> +    import subprocess
> +
>      syspath = bb.data.expand('${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}', d)
>      if not syspath:
>          return 'UNKNOWN'
>  
> -    libpath = syspath + '/libc/' + bb.data.expand('${EAT_LIBDIR}/${EAT_TARGET_SYS}/', d)
> -
> -    if os.path.exists(libpath):
> -        for file in os.listdir(libpath):
> -            if file.find('libc-') == 0:
> -                return file[5:-3]
> -
> -    libpath = syspath + '/libc/' + bb.data.expand('${EAT_LIBDIR}/', d)
> -
> -    if os.path.exists(libpath):
> -        for file in os.listdir(libpath):
> -            if file.find('libc-') == 0:
> -                return file[5:-3]
> -
> -    libpath = syspath + '/libc/usr/' + bb.data.expand('${EAT_LIBDIR}/${EAT_TARGET_SYS}/', d)
> -
> -    if os.path.exists(libpath):
> -        for file in os.listdir(libpath):
> -            if file.find('libc-') == 0:
> -                return file[5:-3]
> -
> -    libpath = syspath + '/libc/usr/' + bb.data.expand('${EAT_LIBDIR}/', d)
> +    topdir = d.getVar('TOPDIR', True)
> +    lddpath = syspath + '/libc/usr/bin/ldd'
> +
> +    if os.path.exists(lddpath):
> +        cmd = '/bin/sh ' + lddpath + ' --version'
> +        try:
> +            stdout, stderr = bb.process.run(cmd, cwd=topdir, stderr=subprocess.PIPE)
> +        except bb.process.CmdError as exc:
> +            bb.error('Failed to obtain external Arm libc version: %s' % exc)
> +            return 'UNKNOWN'
> +        else:
> +            first_line = stdout.splitlines()[0]
> +            return first_line.split()[2]
>  
> -    if os.path.exists(libpath):
> -        for file in os.listdir(libpath):
> -            if file.find('libc-') == 0:
> -                return file[5:-3]
>      return 'UNKNOWN'
>  
>  def eat_get_kernel_version(d):
> -- 
> 2.25.1
> 

-- 
Regards,
Denys Dmytriyenko <denis@denix.org>
PGP: 0x420902729A92C964 - https://denix.org/0x420902729A92C964
Fingerprint: 25FC E4A5 8A72 2F69 1186  6D76 4209 0272 9A92 C964


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v2 2/2] external-arm-toolchain: Add support for Arm GCC 11.2 binary release
  2022-04-29  6:21 ` [PATCH v2 2/2] external-arm-toolchain: Add support for Arm GCC 11.2 binary release Sumit Garg
@ 2022-04-29 16:10   ` Denys Dmytriyenko
  2022-05-03  9:27   ` Ross Burton
  1 sibling, 0 replies; 7+ messages in thread
From: Denys Dmytriyenko @ 2022-04-29 16:10 UTC (permalink / raw)
  To: Sumit Garg; +Cc: meta-arm, jon.mason, ross.burton, daniel.thompson

On Fri, Apr 29, 2022 at 11:51:42AM +0530, Sumit Garg wrote:
> Arm GCC 11.2 binary release has completely changed the way how libc was
> packaged in earlier binary releases. So adjust do_install() accordingly
> to support Arm GCC 11.2 as well as earlier binary releases.
> 
> Along with this update CI as well to point at Arm GCC 11.2 binary
> releases.
> 
> Signed-off-by: Sumit Garg <sumit.garg@linaro.org>

Reviewed-by: Denys Dmytriyenko <denis@denix.org>


> ---
> 
> Changes in v2:
> - None
> 
>  ci/get-binary-toolchains                      | 10 ++--
>  .../external-arm-toolchain.bb                 | 47 ++++++++-----------
>  2 files changed, 25 insertions(+), 32 deletions(-)
> 
> diff --git a/ci/get-binary-toolchains b/ci/get-binary-toolchains
> index 838342a..bfdd8c5 100755
> --- a/ci/get-binary-toolchains
> +++ b/ci/get-binary-toolchains
> @@ -2,7 +2,7 @@
>  set -u
>  
>  HOST_ARCH=$(uname -m)
> -VER="10.3-2021.07"
> +VER="11.2-2022.02"
>  
>  DOWNLOAD_DIR=$1
>  TOOLCHAIN_DIR=$2
> @@ -15,18 +15,18 @@ if [ $HOST_ARCH = "aarch64" ]; then
>  	#AArch64 Linux hosted cross compilers
>  
>  	#AArch32 target with hard float (arm-none-linux-gnueabihf)
> -	wget -P $DOWNLOAD_DIR -nc https://developer.arm.com/-/media/Files/downloads/gnu-a/$VER/binrel/gcc-arm-$VER-$HOST_ARCH-arm-none-linux-gnueabihf.tar.xz
> +	wget -P $DOWNLOAD_DIR -nc https://developer.arm.com/-/media/Files/downloads/gnu/$VER/binrel/gcc-arm-$VER-$HOST_ARCH-arm-none-linux-gnueabihf.tar.xz
>  elif [ $HOST_ARCH = "x86_64" ]; then
>  	#x86_64 Linux hosted cross compilers
>  
>  	#AArch32 target with hard float (arm-linux-none-gnueabihf)
> -	wget -P $DOWNLOAD_DIR -nc https://developer.arm.com/-/media/Files/downloads/gnu-a/$VER/binrel/gcc-arm-$VER-$HOST_ARCH-arm-none-linux-gnueabihf.tar.xz
> +	wget -P $DOWNLOAD_DIR -nc https://developer.arm.com/-/media/Files/downloads/gnu/$VER/binrel/gcc-arm-$VER-$HOST_ARCH-arm-none-linux-gnueabihf.tar.xz
>  
>  	#AArch64 GNU/Linux target (aarch64-none-linux-gnu)
> -	wget -P $DOWNLOAD_DIR -nc https://developer.arm.com/-/media/Files/downloads/gnu-a/$VER/binrel/gcc-arm-$VER-$HOST_ARCH-aarch64-none-linux-gnu.tar.xz
> +	wget -P $DOWNLOAD_DIR -nc https://developer.arm.com/-/media/Files/downloads/gnu/$VER/binrel/gcc-arm-$VER-$HOST_ARCH-aarch64-none-linux-gnu.tar.xz
>  
>  	#AArch64 GNU/Linux target (aarch64_be-none-linux-gnu)
> -	wget -P $DOWNLOAD_DIR -nc https://developer.arm.com/-/media/Files/downloads/gnu-a/$VER/binrel/gcc-arm-$VER-$HOST_ARCH-aarch64_be-none-linux-gnu.tar.xz
> +	wget -P $DOWNLOAD_DIR -nc https://developer.arm.com/-/media/Files/downloads/gnu/$VER/binrel/gcc-arm-$VER-$HOST_ARCH-aarch64_be-none-linux-gnu.tar.xz
>  else
>  	echo "ERROR - Unknown build arch of $HOST_ARCH"
>  	exit 1
> diff --git a/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-toolchain.bb b/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-toolchain.bb
> index a58eeb4..dcc8ebf 100644
> --- a/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-toolchain.bb
> +++ b/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-toolchain.bb
> @@ -79,29 +79,10 @@ do_install() {
>  
>  	CP_ARGS="-Prf --preserve=mode,timestamps --no-preserve=ownership"
>  	cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/${EAT_LIBDIR}/*  ${D}${base_libdir}
> -	if [ -d ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/${EAT_LIBDIR}/${EAT_TARGET_SYS} ]; then
> -		cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/${EAT_LIBDIR}/${EAT_TARGET_SYS}/*  ${D}${base_libdir}
> -	else
> -		if [ -f ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/${EAT_LIBDIR}/ld-${EAT_VER_LIBC}.so ]; then
> -			cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/${EAT_LIBDIR}/*  ${D}${base_libdir}
> -		else
> -			cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/${EAT_LIBDIR}/*.so*  ${D}${base_libdir}
> -		fi
> -	fi
> -	if [ -d ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/${EAT_LIBDIR}/${EAT_TARGET_SYS} ]; then
> -		cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/${EAT_LIBDIR}/${EAT_TARGET_SYS}/*  ${D}${libdir}
> -	else
> -		cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/${EAT_LIBDIR}/*  ${D}${libdir}
> -		if [ ! -f ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/${EAT_LIBDIR}/ld-${EAT_VER_LIBC}.so ]; then
> -			rm -rf ${D}${libdir}/*.so*
> -		fi
> -	fi
> +	cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/${EAT_LIBDIR}/*  ${D}${base_libdir}
> +	cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/${EAT_LIBDIR}/*  ${D}${libdir}
>  	cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/share/*  ${D}${datadir}
>  	cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/include/*  ${D}${includedir}
> -	if [ -d ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/include/${EAT_TARGET_SYS} ]; then
> -		cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/include/${EAT_TARGET_SYS}/*  ${D}${includedir}
> -		rm -r ${D}${includedir}/${EAT_TARGET_SYS}
> -	fi
>  
>  	cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/include/* ${D}${includedir}
>  	if [ -d ${D}${includedir}/c++/${EAT_VER_GCC}/${EAT_TARGET_SYS} ]; then
> @@ -128,7 +109,11 @@ do_install() {
>  
>  	# fix up the copied symlinks (they are still pointing to the multiarch directory)
>  	linker_name="${@bb.utils.contains("TUNE_FEATURES", "aarch64", "ld-linux-aarch64.so.1", bb.utils.contains("TUNE_FEATURES", "callconvention-hard", "ld-linux-armhf.so.3", "ld-linux.so.3",d), d)}"
> -	ln -sf ld-${EAT_VER_LIBC}.so ${D}${base_libdir}/${linker_name}
> +	if [ -f ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/${EAT_LIBDIR}/ld-${EAT_VER_LIBC}.so ]; then
> +		ln -sf ld-${EAT_VER_LIBC}.so ${D}${base_libdir}/${linker_name}
> +	else
> +		cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/lib/${linker_name} ${D}${base_libdir}/
> +	fi
>  	ln -sf ../../lib/librt.so.1 ${D}${libdir}/librt.so
>  	ln -sf ../../lib/libcrypt.so.1 ${D}${libdir}/libcrypt.so
>  	ln -sf ../../lib/libresolv.so.2 ${D}${libdir}/libresolv.so
> @@ -144,6 +129,7 @@ do_install() {
>  	ln -sf ../../lib/libnss_files.so.2 ${D}${libdir}/libnss_files.so
>  	ln -sf ../../lib/libnss_compat.so.2 ${D}${libdir}/libnss_compat.so
>  	ln -sf ../../lib/libm.so.6 ${D}${libdir}/libm.so
> +	ln -sf ../../lib/libc_malloc_debug.so.0 ${D}${libdir}/libc_malloc_debug.so
>  
>  	# remove potential .so duplicates from base_libdir
>  	# for all symlinks created above in libdir
> @@ -164,7 +150,7 @@ do_install() {
>  	rm -f ${D}${base_libdir}/libm.so
>  
>  	# Move these completely to ${libdir} and delete duplicates in ${base_libdir}
> -	for lib in asan atomic gfortran gomp itm lsan sanitizer stdc++ tsan ubsan; do
> +	for lib in asan hwasan atomic gfortran gomp itm lsan sanitizer stdc++ tsan ubsan; do
>  		if [ -e ${D}${base_libdir}/lib${lib}.spec ] ; then
>  			mv ${D}${base_libdir}/lib${lib}.spec ${D}${libdir}
>  		fi
> @@ -180,6 +166,10 @@ do_install() {
>  	# Besides ld-${EAT_VER_LIBC}.so, other libs can have duplicates like lib*-${EAT_VER_LIBC}.so
>  	# Only remove them if both are regular files and are identical
>  	for i in ${D}${base_libdir}/lib*-${EAT_VER_LIBC}.so; do
> +		if [ ! -e $i ] ; then
> +			continue
> +		fi
> +
>  		f=$(echo $i | sed 's/-${EAT_VER_LIBC}//')
>  		l=$(ls $f.*)
>  		if [ $(readlink -f $i ) = $l ]; then
> @@ -217,9 +207,9 @@ do_install() {
>  	fi
>  
>  	if [ -f ${D}${base_libdir}/libc.so ];then
> -		sed -i -e "s# /${EAT_LIBDIR}/${EAT_TARGET_SYS}# ../../lib#g" -e "s# /usr/${EAT_LIBDIR}/${EAT_TARGET_SYS}# .#g" "s# /${EAT_LIBDIR}/# /lib/#g" ${D}${base_libdir}/libc.so
> +		sed -i -e "s# /${EAT_LIBDIR}/${EAT_TARGET_SYS}# ../../lib#g" -e "s# /usr/${EAT_LIBDIR}/${EAT_TARGET_SYS}# .#g" -e "s# /${EAT_LIBDIR}/# /lib/#g" ${D}${base_libdir}/libc.so
>  		if [ -f ${D}${base_libdir}/libc.so.6 ]; then
> -			sed -i -e "s# /usr/${EAT_LIBDIR}/libc.so.6# /lib/libc.so.6#g" "s# /${EAT_LIBDIR}/libc.so.6# /lib/libc.so.6#g" ${D}${base_libdir}/libc.so.6
> +			sed -i -e "s# /usr/${EAT_LIBDIR}/libc.so.6# /lib/libc.so.6#g" -e "s# /${EAT_LIBDIR}/libc.so.6# /lib/libc.so.6#g" ${D}${base_libdir}/libc.so.6
>  		fi
>  	fi
>  
> @@ -460,13 +450,16 @@ FILES:libgfortran-staticdev = "${libdir}/libgfortran.a"
>  
>  # From gcc-sanitizers.inc:
>  
> -FILES:libasan += "${libdir}/libasan.so.*"
> +FILES:libasan += "${libdir}/libasan.so.* ${libdir}/libhwasan.so.*"
>  FILES:libasan-dev += "\
>      ${libdir}/libasan_preinit.o \
>      ${libdir}/libasan.so \
> +    ${libdir}/libhwasan.so \
>      ${libdir}/libasan.la \
>  "
> -FILES:libasan-staticdev += "${libdir}/libasan.a"
> +FILES:libasan-staticdev += "${libdir}/libasan.a \
> +    ${libdir}/libhwasan.a \
> +"
>  
>  FILES:libubsan += "${libdir}/libubsan.so.*"
>  FILES:libubsan-dev += "\
> -- 
> 2.25.1
> 

-- 
Regards,
Denys Dmytriyenko <denis@denix.org>
PGP: 0x420902729A92C964 - https://denix.org/0x420902729A92C964
Fingerprint: 25FC E4A5 8A72 2F69 1186  6D76 4209 0272 9A92 C964


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v2 2/2] external-arm-toolchain: Add support for Arm GCC 11.2 binary release
  2022-04-29  6:21 ` [PATCH v2 2/2] external-arm-toolchain: Add support for Arm GCC 11.2 binary release Sumit Garg
  2022-04-29 16:10   ` Denys Dmytriyenko
@ 2022-05-03  9:27   ` Ross Burton
  2022-05-03 12:37     ` Sumit Garg
  1 sibling, 1 reply; 7+ messages in thread
From: Ross Burton @ 2022-05-03  9:27 UTC (permalink / raw)
  To: Sumit Garg; +Cc: meta-arm, Jon Mason, denis, daniel.thompson

We might need to temporarily revert this, as the binaries contain instructions that are only available in Broadwell cores.

Specifically, our CI explodes, for example:

../../micropython/py/formatfloat.c:105:5: internal compiler error: Illegal instruction
  105 |     MICROPY_FLOAT_CONST(1e32), MICROPY_FLOAT_CONST(1e16), MICROPY_FLOAT_CONST(1e8), MICROPY_FLOAT_CONST(1e4), MICROPY_FLOAT_CONST(1e2), MICROPY_FLOAT_CONST(1e1)
      |     ^~~~~~~~~~~~~~~~~~~
0x1521b50 diagnostic_impl(rich_location*, diagnostic_metadata const*, int, char const*, __va_list_tag (*) [1], diagnostic_t)
	???:0
0x15227d6 internal_error(char const*, ...)
	???:0
0xb7838f crash_signal(int)
	???:0
0x171b592 __gmpn_mul_basecase
	???:0

There’s an internal ticket and the next release will be fixed.

Ross

> On 29 Apr 2022, at 07:21, Sumit Garg <sumit.garg@linaro.org> wrote:
> 
> Arm GCC 11.2 binary release has completely changed the way how libc was
> packaged in earlier binary releases. So adjust do_install() accordingly
> to support Arm GCC 11.2 as well as earlier binary releases.
> 
> Along with this update CI as well to point at Arm GCC 11.2 binary
> releases.
> 
> Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
> ---
> 
> Changes in v2:
> - None
> 
> ci/get-binary-toolchains                      | 10 ++--
> .../external-arm-toolchain.bb                 | 47 ++++++++-----------
> 2 files changed, 25 insertions(+), 32 deletions(-)
> 
> diff --git a/ci/get-binary-toolchains b/ci/get-binary-toolchains
> index 838342a..bfdd8c5 100755
> --- a/ci/get-binary-toolchains
> +++ b/ci/get-binary-toolchains
> @@ -2,7 +2,7 @@
> set -u
> 
> HOST_ARCH=$(uname -m)
> -VER="10.3-2021.07"
> +VER="11.2-2022.02"
> 
> DOWNLOAD_DIR=$1
> TOOLCHAIN_DIR=$2
> @@ -15,18 +15,18 @@ if [ $HOST_ARCH = "aarch64" ]; then
> 	#AArch64 Linux hosted cross compilers
> 
> 	#AArch32 target with hard float (arm-none-linux-gnueabihf)
> -	wget -P $DOWNLOAD_DIR -nc https://developer.arm.com/-/media/Files/downloads/gnu-a/$VER/binrel/gcc-arm-$VER-$HOST_ARCH-arm-none-linux-gnueabihf.tar.xz
> +	wget -P $DOWNLOAD_DIR -nc https://developer.arm.com/-/media/Files/downloads/gnu/$VER/binrel/gcc-arm-$VER-$HOST_ARCH-arm-none-linux-gnueabihf.tar.xz
> elif [ $HOST_ARCH = "x86_64" ]; then
> 	#x86_64 Linux hosted cross compilers
> 
> 	#AArch32 target with hard float (arm-linux-none-gnueabihf)
> -	wget -P $DOWNLOAD_DIR -nc https://developer.arm.com/-/media/Files/downloads/gnu-a/$VER/binrel/gcc-arm-$VER-$HOST_ARCH-arm-none-linux-gnueabihf.tar.xz
> +	wget -P $DOWNLOAD_DIR -nc https://developer.arm.com/-/media/Files/downloads/gnu/$VER/binrel/gcc-arm-$VER-$HOST_ARCH-arm-none-linux-gnueabihf.tar.xz
> 
> 	#AArch64 GNU/Linux target (aarch64-none-linux-gnu)
> -	wget -P $DOWNLOAD_DIR -nc https://developer.arm.com/-/media/Files/downloads/gnu-a/$VER/binrel/gcc-arm-$VER-$HOST_ARCH-aarch64-none-linux-gnu.tar.xz
> +	wget -P $DOWNLOAD_DIR -nc https://developer.arm.com/-/media/Files/downloads/gnu/$VER/binrel/gcc-arm-$VER-$HOST_ARCH-aarch64-none-linux-gnu.tar.xz
> 
> 	#AArch64 GNU/Linux target (aarch64_be-none-linux-gnu)
> -	wget -P $DOWNLOAD_DIR -nc https://developer.arm.com/-/media/Files/downloads/gnu-a/$VER/binrel/gcc-arm-$VER-$HOST_ARCH-aarch64_be-none-linux-gnu.tar.xz
> +	wget -P $DOWNLOAD_DIR -nc https://developer.arm.com/-/media/Files/downloads/gnu/$VER/binrel/gcc-arm-$VER-$HOST_ARCH-aarch64_be-none-linux-gnu.tar.xz
> else
> 	echo "ERROR - Unknown build arch of $HOST_ARCH"
> 	exit 1
> diff --git a/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-toolchain.bb b/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-toolchain.bb
> index a58eeb4..dcc8ebf 100644
> --- a/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-toolchain.bb
> +++ b/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-toolchain.bb
> @@ -79,29 +79,10 @@ do_install() {
> 
> 	CP_ARGS="-Prf --preserve=mode,timestamps --no-preserve=ownership"
> 	cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/${EAT_LIBDIR}/*  ${D}${base_libdir}
> -	if [ -d ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/${EAT_LIBDIR}/${EAT_TARGET_SYS} ]; then
> -		cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/${EAT_LIBDIR}/${EAT_TARGET_SYS}/*  ${D}${base_libdir}
> -	else
> -		if [ -f ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/${EAT_LIBDIR}/ld-${EAT_VER_LIBC}.so ]; then
> -			cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/${EAT_LIBDIR}/*  ${D}${base_libdir}
> -		else
> -			cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/${EAT_LIBDIR}/*.so*  ${D}${base_libdir}
> -		fi
> -	fi
> -	if [ -d ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/${EAT_LIBDIR}/${EAT_TARGET_SYS} ]; then
> -		cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/${EAT_LIBDIR}/${EAT_TARGET_SYS}/*  ${D}${libdir}
> -	else
> -		cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/${EAT_LIBDIR}/*  ${D}${libdir}
> -		if [ ! -f ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/${EAT_LIBDIR}/ld-${EAT_VER_LIBC}.so ]; then
> -			rm -rf ${D}${libdir}/*.so*
> -		fi
> -	fi
> +	cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/${EAT_LIBDIR}/*  ${D}${base_libdir}
> +	cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/${EAT_LIBDIR}/*  ${D}${libdir}
> 	cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/share/*  ${D}${datadir}
> 	cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/include/*  ${D}${includedir}
> -	if [ -d ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/include/${EAT_TARGET_SYS} ]; then
> -		cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/include/${EAT_TARGET_SYS}/*  ${D}${includedir}
> -		rm -r ${D}${includedir}/${EAT_TARGET_SYS}
> -	fi
> 
> 	cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/include/* ${D}${includedir}
> 	if [ -d ${D}${includedir}/c++/${EAT_VER_GCC}/${EAT_TARGET_SYS} ]; then
> @@ -128,7 +109,11 @@ do_install() {
> 
> 	# fix up the copied symlinks (they are still pointing to the multiarch directory)
> 	linker_name="${@bb.utils.contains("TUNE_FEATURES", "aarch64", "ld-linux-aarch64.so.1", bb.utils.contains("TUNE_FEATURES", "callconvention-hard", "ld-linux-armhf.so.3", "ld-linux.so.3",d), d)}"
> -	ln -sf ld-${EAT_VER_LIBC}.so ${D}${base_libdir}/${linker_name}
> +	if [ -f ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/${EAT_LIBDIR}/ld-${EAT_VER_LIBC}.so ]; then
> +		ln -sf ld-${EAT_VER_LIBC}.so ${D}${base_libdir}/${linker_name}
> +	else
> +		cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/lib/${linker_name} ${D}${base_libdir}/
> +	fi
> 	ln -sf ../../lib/librt.so.1 ${D}${libdir}/librt.so
> 	ln -sf ../../lib/libcrypt.so.1 ${D}${libdir}/libcrypt.so
> 	ln -sf ../../lib/libresolv.so.2 ${D}${libdir}/libresolv.so
> @@ -144,6 +129,7 @@ do_install() {
> 	ln -sf ../../lib/libnss_files.so.2 ${D}${libdir}/libnss_files.so
> 	ln -sf ../../lib/libnss_compat.so.2 ${D}${libdir}/libnss_compat.so
> 	ln -sf ../../lib/libm.so.6 ${D}${libdir}/libm.so
> +	ln -sf ../../lib/libc_malloc_debug.so.0 ${D}${libdir}/libc_malloc_debug.so
> 
> 	# remove potential .so duplicates from base_libdir
> 	# for all symlinks created above in libdir
> @@ -164,7 +150,7 @@ do_install() {
> 	rm -f ${D}${base_libdir}/libm.so
> 
> 	# Move these completely to ${libdir} and delete duplicates in ${base_libdir}
> -	for lib in asan atomic gfortran gomp itm lsan sanitizer stdc++ tsan ubsan; do
> +	for lib in asan hwasan atomic gfortran gomp itm lsan sanitizer stdc++ tsan ubsan; do
> 		if [ -e ${D}${base_libdir}/lib${lib}.spec ] ; then
> 			mv ${D}${base_libdir}/lib${lib}.spec ${D}${libdir}
> 		fi
> @@ -180,6 +166,10 @@ do_install() {
> 	# Besides ld-${EAT_VER_LIBC}.so, other libs can have duplicates like lib*-${EAT_VER_LIBC}.so
> 	# Only remove them if both are regular files and are identical
> 	for i in ${D}${base_libdir}/lib*-${EAT_VER_LIBC}.so; do
> +		if [ ! -e $i ] ; then
> +			continue
> +		fi
> +
> 		f=$(echo $i | sed 's/-${EAT_VER_LIBC}//')
> 		l=$(ls $f.*)
> 		if [ $(readlink -f $i ) = $l ]; then
> @@ -217,9 +207,9 @@ do_install() {
> 	fi
> 
> 	if [ -f ${D}${base_libdir}/libc.so ];then
> -		sed -i -e "s# /${EAT_LIBDIR}/${EAT_TARGET_SYS}# ../../lib#g" -e "s# /usr/${EAT_LIBDIR}/${EAT_TARGET_SYS}# .#g" "s# /${EAT_LIBDIR}/# /lib/#g" ${D}${base_libdir}/libc.so
> +		sed -i -e "s# /${EAT_LIBDIR}/${EAT_TARGET_SYS}# ../../lib#g" -e "s# /usr/${EAT_LIBDIR}/${EAT_TARGET_SYS}# .#g" -e "s# /${EAT_LIBDIR}/# /lib/#g" ${D}${base_libdir}/libc.so
> 		if [ -f ${D}${base_libdir}/libc.so.6 ]; then
> -			sed -i -e "s# /usr/${EAT_LIBDIR}/libc.so.6# /lib/libc.so.6#g" "s# /${EAT_LIBDIR}/libc.so.6# /lib/libc.so.6#g" ${D}${base_libdir}/libc.so.6
> +			sed -i -e "s# /usr/${EAT_LIBDIR}/libc.so.6# /lib/libc.so.6#g" -e "s# /${EAT_LIBDIR}/libc.so.6# /lib/libc.so.6#g" ${D}${base_libdir}/libc.so.6
> 		fi
> 	fi
> 
> @@ -460,13 +450,16 @@ FILES:libgfortran-staticdev = "${libdir}/libgfortran.a"
> 
> # From gcc-sanitizers.inc:
> 
> -FILES:libasan += "${libdir}/libasan.so.*"
> +FILES:libasan += "${libdir}/libasan.so.* ${libdir}/libhwasan.so.*"
> FILES:libasan-dev += "\
>     ${libdir}/libasan_preinit.o \
>     ${libdir}/libasan.so \
> +    ${libdir}/libhwasan.so \
>     ${libdir}/libasan.la \
> "
> -FILES:libasan-staticdev += "${libdir}/libasan.a"
> +FILES:libasan-staticdev += "${libdir}/libasan.a \
> +    ${libdir}/libhwasan.a \
> +"
> 
> FILES:libubsan += "${libdir}/libubsan.so.*"
> FILES:libubsan-dev += "\
> -- 
> 2.25.1
> 


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v2 2/2] external-arm-toolchain: Add support for Arm GCC 11.2 binary release
  2022-05-03  9:27   ` Ross Burton
@ 2022-05-03 12:37     ` Sumit Garg
  2022-05-03 15:24       ` Denys Dmytriyenko
  0 siblings, 1 reply; 7+ messages in thread
From: Sumit Garg @ 2022-05-03 12:37 UTC (permalink / raw)
  To: Ross Burton; +Cc: meta-arm, Jon Mason, denis, daniel.thompson

Hi Ross,

On Tue, 3 May 2022 at 14:57, Ross Burton <Ross.Burton@arm.com> wrote:
>
> We might need to temporarily revert this, as the binaries contain instructions that are only available in Broadwell cores.

Okay I see. But I don't think we need a revert here since the binary
toolchain recipe isn't just tied to 11.2 but rather supports all the
prior binary toolchain releases as well. So it's just a framework
improvement which should work with the upcoming release as well.

>
> Specifically, our CI explodes, for example:

If we need our CI to stop using 11.2 then that can be reverted to use
10.3 instead via a separate patch.

-Sumit

>
> ../../micropython/py/formatfloat.c:105:5: internal compiler error: Illegal instruction
>   105 |     MICROPY_FLOAT_CONST(1e32), MICROPY_FLOAT_CONST(1e16), MICROPY_FLOAT_CONST(1e8), MICROPY_FLOAT_CONST(1e4), MICROPY_FLOAT_CONST(1e2), MICROPY_FLOAT_CONST(1e1)
>       |     ^~~~~~~~~~~~~~~~~~~
> 0x1521b50 diagnostic_impl(rich_location*, diagnostic_metadata const*, int, char const*, __va_list_tag (*) [1], diagnostic_t)
>         ???:0
> 0x15227d6 internal_error(char const*, ...)
>         ???:0
> 0xb7838f crash_signal(int)
>         ???:0
> 0x171b592 __gmpn_mul_basecase
>         ???:0
>
> There’s an internal ticket and the next release will be fixed.
>
> Ross
>
> > On 29 Apr 2022, at 07:21, Sumit Garg <sumit.garg@linaro.org> wrote:
> >
> > Arm GCC 11.2 binary release has completely changed the way how libc was
> > packaged in earlier binary releases. So adjust do_install() accordingly
> > to support Arm GCC 11.2 as well as earlier binary releases.
> >
> > Along with this update CI as well to point at Arm GCC 11.2 binary
> > releases.
> >
> > Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
> > ---
> >
> > Changes in v2:
> > - None
> >
> > ci/get-binary-toolchains                      | 10 ++--
> > .../external-arm-toolchain.bb                 | 47 ++++++++-----------
> > 2 files changed, 25 insertions(+), 32 deletions(-)
> >
> > diff --git a/ci/get-binary-toolchains b/ci/get-binary-toolchains
> > index 838342a..bfdd8c5 100755
> > --- a/ci/get-binary-toolchains
> > +++ b/ci/get-binary-toolchains
> > @@ -2,7 +2,7 @@
> > set -u
> >
> > HOST_ARCH=$(uname -m)
> > -VER="10.3-2021.07"
> > +VER="11.2-2022.02"
> >
> > DOWNLOAD_DIR=$1
> > TOOLCHAIN_DIR=$2
> > @@ -15,18 +15,18 @@ if [ $HOST_ARCH = "aarch64" ]; then
> >       #AArch64 Linux hosted cross compilers
> >
> >       #AArch32 target with hard float (arm-none-linux-gnueabihf)
> > -     wget -P $DOWNLOAD_DIR -nc https://developer.arm.com/-/media/Files/downloads/gnu-a/$VER/binrel/gcc-arm-$VER-$HOST_ARCH-arm-none-linux-gnueabihf.tar.xz
> > +     wget -P $DOWNLOAD_DIR -nc https://developer.arm.com/-/media/Files/downloads/gnu/$VER/binrel/gcc-arm-$VER-$HOST_ARCH-arm-none-linux-gnueabihf.tar.xz
> > elif [ $HOST_ARCH = "x86_64" ]; then
> >       #x86_64 Linux hosted cross compilers
> >
> >       #AArch32 target with hard float (arm-linux-none-gnueabihf)
> > -     wget -P $DOWNLOAD_DIR -nc https://developer.arm.com/-/media/Files/downloads/gnu-a/$VER/binrel/gcc-arm-$VER-$HOST_ARCH-arm-none-linux-gnueabihf.tar.xz
> > +     wget -P $DOWNLOAD_DIR -nc https://developer.arm.com/-/media/Files/downloads/gnu/$VER/binrel/gcc-arm-$VER-$HOST_ARCH-arm-none-linux-gnueabihf.tar.xz
> >
> >       #AArch64 GNU/Linux target (aarch64-none-linux-gnu)
> > -     wget -P $DOWNLOAD_DIR -nc https://developer.arm.com/-/media/Files/downloads/gnu-a/$VER/binrel/gcc-arm-$VER-$HOST_ARCH-aarch64-none-linux-gnu.tar.xz
> > +     wget -P $DOWNLOAD_DIR -nc https://developer.arm.com/-/media/Files/downloads/gnu/$VER/binrel/gcc-arm-$VER-$HOST_ARCH-aarch64-none-linux-gnu.tar.xz
> >
> >       #AArch64 GNU/Linux target (aarch64_be-none-linux-gnu)
> > -     wget -P $DOWNLOAD_DIR -nc https://developer.arm.com/-/media/Files/downloads/gnu-a/$VER/binrel/gcc-arm-$VER-$HOST_ARCH-aarch64_be-none-linux-gnu.tar.xz
> > +     wget -P $DOWNLOAD_DIR -nc https://developer.arm.com/-/media/Files/downloads/gnu/$VER/binrel/gcc-arm-$VER-$HOST_ARCH-aarch64_be-none-linux-gnu.tar.xz
> > else
> >       echo "ERROR - Unknown build arch of $HOST_ARCH"
> >       exit 1
> > diff --git a/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-toolchain.bb b/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-toolchain.bb
> > index a58eeb4..dcc8ebf 100644
> > --- a/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-toolchain.bb
> > +++ b/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-toolchain.bb
> > @@ -79,29 +79,10 @@ do_install() {
> >
> >       CP_ARGS="-Prf --preserve=mode,timestamps --no-preserve=ownership"
> >       cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/${EAT_LIBDIR}/*  ${D}${base_libdir}
> > -     if [ -d ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/${EAT_LIBDIR}/${EAT_TARGET_SYS} ]; then
> > -             cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/${EAT_LIBDIR}/${EAT_TARGET_SYS}/*  ${D}${base_libdir}
> > -     else
> > -             if [ -f ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/${EAT_LIBDIR}/ld-${EAT_VER_LIBC}.so ]; then
> > -                     cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/${EAT_LIBDIR}/*  ${D}${base_libdir}
> > -             else
> > -                     cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/${EAT_LIBDIR}/*.so*  ${D}${base_libdir}
> > -             fi
> > -     fi
> > -     if [ -d ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/${EAT_LIBDIR}/${EAT_TARGET_SYS} ]; then
> > -             cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/${EAT_LIBDIR}/${EAT_TARGET_SYS}/*  ${D}${libdir}
> > -     else
> > -             cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/${EAT_LIBDIR}/*  ${D}${libdir}
> > -             if [ ! -f ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/${EAT_LIBDIR}/ld-${EAT_VER_LIBC}.so ]; then
> > -                     rm -rf ${D}${libdir}/*.so*
> > -             fi
> > -     fi
> > +     cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/${EAT_LIBDIR}/*  ${D}${base_libdir}
> > +     cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/${EAT_LIBDIR}/*  ${D}${libdir}
> >       cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/share/*  ${D}${datadir}
> >       cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/include/*  ${D}${includedir}
> > -     if [ -d ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/include/${EAT_TARGET_SYS} ]; then
> > -             cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/include/${EAT_TARGET_SYS}/*  ${D}${includedir}
> > -             rm -r ${D}${includedir}/${EAT_TARGET_SYS}
> > -     fi
> >
> >       cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/include/* ${D}${includedir}
> >       if [ -d ${D}${includedir}/c++/${EAT_VER_GCC}/${EAT_TARGET_SYS} ]; then
> > @@ -128,7 +109,11 @@ do_install() {
> >
> >       # fix up the copied symlinks (they are still pointing to the multiarch directory)
> >       linker_name="${@bb.utils.contains("TUNE_FEATURES", "aarch64", "ld-linux-aarch64.so.1", bb.utils.contains("TUNE_FEATURES", "callconvention-hard", "ld-linux-armhf.so.3", "ld-linux.so.3",d), d)}"
> > -     ln -sf ld-${EAT_VER_LIBC}.so ${D}${base_libdir}/${linker_name}
> > +     if [ -f ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/${EAT_LIBDIR}/ld-${EAT_VER_LIBC}.so ]; then
> > +             ln -sf ld-${EAT_VER_LIBC}.so ${D}${base_libdir}/${linker_name}
> > +     else
> > +             cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/lib/${linker_name} ${D}${base_libdir}/
> > +     fi
> >       ln -sf ../../lib/librt.so.1 ${D}${libdir}/librt.so
> >       ln -sf ../../lib/libcrypt.so.1 ${D}${libdir}/libcrypt.so
> >       ln -sf ../../lib/libresolv.so.2 ${D}${libdir}/libresolv.so
> > @@ -144,6 +129,7 @@ do_install() {
> >       ln -sf ../../lib/libnss_files.so.2 ${D}${libdir}/libnss_files.so
> >       ln -sf ../../lib/libnss_compat.so.2 ${D}${libdir}/libnss_compat.so
> >       ln -sf ../../lib/libm.so.6 ${D}${libdir}/libm.so
> > +     ln -sf ../../lib/libc_malloc_debug.so.0 ${D}${libdir}/libc_malloc_debug.so
> >
> >       # remove potential .so duplicates from base_libdir
> >       # for all symlinks created above in libdir
> > @@ -164,7 +150,7 @@ do_install() {
> >       rm -f ${D}${base_libdir}/libm.so
> >
> >       # Move these completely to ${libdir} and delete duplicates in ${base_libdir}
> > -     for lib in asan atomic gfortran gomp itm lsan sanitizer stdc++ tsan ubsan; do
> > +     for lib in asan hwasan atomic gfortran gomp itm lsan sanitizer stdc++ tsan ubsan; do
> >               if [ -e ${D}${base_libdir}/lib${lib}.spec ] ; then
> >                       mv ${D}${base_libdir}/lib${lib}.spec ${D}${libdir}
> >               fi
> > @@ -180,6 +166,10 @@ do_install() {
> >       # Besides ld-${EAT_VER_LIBC}.so, other libs can have duplicates like lib*-${EAT_VER_LIBC}.so
> >       # Only remove them if both are regular files and are identical
> >       for i in ${D}${base_libdir}/lib*-${EAT_VER_LIBC}.so; do
> > +             if [ ! -e $i ] ; then
> > +                     continue
> > +             fi
> > +
> >               f=$(echo $i | sed 's/-${EAT_VER_LIBC}//')
> >               l=$(ls $f.*)
> >               if [ $(readlink -f $i ) = $l ]; then
> > @@ -217,9 +207,9 @@ do_install() {
> >       fi
> >
> >       if [ -f ${D}${base_libdir}/libc.so ];then
> > -             sed -i -e "s# /${EAT_LIBDIR}/${EAT_TARGET_SYS}# ../../lib#g" -e "s# /usr/${EAT_LIBDIR}/${EAT_TARGET_SYS}# .#g" "s# /${EAT_LIBDIR}/# /lib/#g" ${D}${base_libdir}/libc.so
> > +             sed -i -e "s# /${EAT_LIBDIR}/${EAT_TARGET_SYS}# ../../lib#g" -e "s# /usr/${EAT_LIBDIR}/${EAT_TARGET_SYS}# .#g" -e "s# /${EAT_LIBDIR}/# /lib/#g" ${D}${base_libdir}/libc.so
> >               if [ -f ${D}${base_libdir}/libc.so.6 ]; then
> > -                     sed -i -e "s# /usr/${EAT_LIBDIR}/libc.so.6# /lib/libc.so.6#g" "s# /${EAT_LIBDIR}/libc.so.6# /lib/libc.so.6#g" ${D}${base_libdir}/libc.so.6
> > +                     sed -i -e "s# /usr/${EAT_LIBDIR}/libc.so.6# /lib/libc.so.6#g" -e "s# /${EAT_LIBDIR}/libc.so.6# /lib/libc.so.6#g" ${D}${base_libdir}/libc.so.6
> >               fi
> >       fi
> >
> > @@ -460,13 +450,16 @@ FILES:libgfortran-staticdev = "${libdir}/libgfortran.a"
> >
> > # From gcc-sanitizers.inc:
> >
> > -FILES:libasan += "${libdir}/libasan.so.*"
> > +FILES:libasan += "${libdir}/libasan.so.* ${libdir}/libhwasan.so.*"
> > FILES:libasan-dev += "\
> >     ${libdir}/libasan_preinit.o \
> >     ${libdir}/libasan.so \
> > +    ${libdir}/libhwasan.so \
> >     ${libdir}/libasan.la \
> > "
> > -FILES:libasan-staticdev += "${libdir}/libasan.a"
> > +FILES:libasan-staticdev += "${libdir}/libasan.a \
> > +    ${libdir}/libhwasan.a \
> > +"
> >
> > FILES:libubsan += "${libdir}/libubsan.so.*"
> > FILES:libubsan-dev += "\
> > --
> > 2.25.1
> >
>


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v2 2/2] external-arm-toolchain: Add support for Arm GCC 11.2 binary release
  2022-05-03 12:37     ` Sumit Garg
@ 2022-05-03 15:24       ` Denys Dmytriyenko
  0 siblings, 0 replies; 7+ messages in thread
From: Denys Dmytriyenko @ 2022-05-03 15:24 UTC (permalink / raw)
  To: Sumit Garg; +Cc: Ross Burton, meta-arm, Jon Mason, daniel.thompson

On Tue, May 03, 2022 at 06:07:41PM +0530, Sumit Garg wrote:
> Hi Ross,
> 
> On Tue, 3 May 2022 at 14:57, Ross Burton <Ross.Burton@arm.com> wrote:
> >
> > We might need to temporarily revert this, as the binaries contain instructions that are only available in Broadwell cores.
> 
> Okay I see. But I don't think we need a revert here since the binary
> toolchain recipe isn't just tied to 11.2 but rather supports all the
> prior binary toolchain releases as well. So it's just a framework
> improvement which should work with the upcoming release as well.
> 
> >
> > Specifically, our CI explodes, for example:
> 
> If we need our CI to stop using 11.2 then that can be reverted to use
> 10.3 instead via a separate patch.

I agree here - should probably keep the recipe update, which is 
version-agnostic, but switch CI back to 10.3 for now. Thanks.


> > ../../micropython/py/formatfloat.c:105:5: internal compiler error: Illegal instruction
> >   105 |     MICROPY_FLOAT_CONST(1e32), MICROPY_FLOAT_CONST(1e16), MICROPY_FLOAT_CONST(1e8), MICROPY_FLOAT_CONST(1e4), MICROPY_FLOAT_CONST(1e2), MICROPY_FLOAT_CONST(1e1)
> >       |     ^~~~~~~~~~~~~~~~~~~
> > 0x1521b50 diagnostic_impl(rich_location*, diagnostic_metadata const*, int, char const*, __va_list_tag (*) [1], diagnostic_t)
> >         ???:0
> > 0x15227d6 internal_error(char const*, ...)
> >         ???:0
> > 0xb7838f crash_signal(int)
> >         ???:0
> > 0x171b592 __gmpn_mul_basecase
> >         ???:0
> >
> > There’s an internal ticket and the next release will be fixed.
> >
> > Ross
> >
> > > On 29 Apr 2022, at 07:21, Sumit Garg <sumit.garg@linaro.org> wrote:
> > >
> > > Arm GCC 11.2 binary release has completely changed the way how libc was
> > > packaged in earlier binary releases. So adjust do_install() accordingly
> > > to support Arm GCC 11.2 as well as earlier binary releases.
> > >
> > > Along with this update CI as well to point at Arm GCC 11.2 binary
> > > releases.
> > >
> > > Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
> > > ---
> > >
> > > Changes in v2:
> > > - None
> > >
> > > ci/get-binary-toolchains                      | 10 ++--
> > > .../external-arm-toolchain.bb                 | 47 ++++++++-----------
> > > 2 files changed, 25 insertions(+), 32 deletions(-)
> > >
> > > diff --git a/ci/get-binary-toolchains b/ci/get-binary-toolchains
> > > index 838342a..bfdd8c5 100755
> > > --- a/ci/get-binary-toolchains
> > > +++ b/ci/get-binary-toolchains
> > > @@ -2,7 +2,7 @@
> > > set -u
> > >
> > > HOST_ARCH=$(uname -m)
> > > -VER="10.3-2021.07"
> > > +VER="11.2-2022.02"
> > >
> > > DOWNLOAD_DIR=$1
> > > TOOLCHAIN_DIR=$2
> > > @@ -15,18 +15,18 @@ if [ $HOST_ARCH = "aarch64" ]; then
> > >       #AArch64 Linux hosted cross compilers
> > >
> > >       #AArch32 target with hard float (arm-none-linux-gnueabihf)
> > > -     wget -P $DOWNLOAD_DIR -nc https://developer.arm.com/-/media/Files/downloads/gnu-a/$VER/binrel/gcc-arm-$VER-$HOST_ARCH-arm-none-linux-gnueabihf.tar.xz
> > > +     wget -P $DOWNLOAD_DIR -nc https://developer.arm.com/-/media/Files/downloads/gnu/$VER/binrel/gcc-arm-$VER-$HOST_ARCH-arm-none-linux-gnueabihf.tar.xz
> > > elif [ $HOST_ARCH = "x86_64" ]; then
> > >       #x86_64 Linux hosted cross compilers
> > >
> > >       #AArch32 target with hard float (arm-linux-none-gnueabihf)
> > > -     wget -P $DOWNLOAD_DIR -nc https://developer.arm.com/-/media/Files/downloads/gnu-a/$VER/binrel/gcc-arm-$VER-$HOST_ARCH-arm-none-linux-gnueabihf.tar.xz
> > > +     wget -P $DOWNLOAD_DIR -nc https://developer.arm.com/-/media/Files/downloads/gnu/$VER/binrel/gcc-arm-$VER-$HOST_ARCH-arm-none-linux-gnueabihf.tar.xz
> > >
> > >       #AArch64 GNU/Linux target (aarch64-none-linux-gnu)
> > > -     wget -P $DOWNLOAD_DIR -nc https://developer.arm.com/-/media/Files/downloads/gnu-a/$VER/binrel/gcc-arm-$VER-$HOST_ARCH-aarch64-none-linux-gnu.tar.xz
> > > +     wget -P $DOWNLOAD_DIR -nc https://developer.arm.com/-/media/Files/downloads/gnu/$VER/binrel/gcc-arm-$VER-$HOST_ARCH-aarch64-none-linux-gnu.tar.xz
> > >
> > >       #AArch64 GNU/Linux target (aarch64_be-none-linux-gnu)
> > > -     wget -P $DOWNLOAD_DIR -nc https://developer.arm.com/-/media/Files/downloads/gnu-a/$VER/binrel/gcc-arm-$VER-$HOST_ARCH-aarch64_be-none-linux-gnu.tar.xz
> > > +     wget -P $DOWNLOAD_DIR -nc https://developer.arm.com/-/media/Files/downloads/gnu/$VER/binrel/gcc-arm-$VER-$HOST_ARCH-aarch64_be-none-linux-gnu.tar.xz
> > > else
> > >       echo "ERROR - Unknown build arch of $HOST_ARCH"
> > >       exit 1
> > > diff --git a/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-toolchain.bb b/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-toolchain.bb
> > > index a58eeb4..dcc8ebf 100644
> > > --- a/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-toolchain.bb
> > > +++ b/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-toolchain.bb
> > > @@ -79,29 +79,10 @@ do_install() {
> > >
> > >       CP_ARGS="-Prf --preserve=mode,timestamps --no-preserve=ownership"
> > >       cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/${EAT_LIBDIR}/*  ${D}${base_libdir}
> > > -     if [ -d ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/${EAT_LIBDIR}/${EAT_TARGET_SYS} ]; then
> > > -             cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/${EAT_LIBDIR}/${EAT_TARGET_SYS}/*  ${D}${base_libdir}
> > > -     else
> > > -             if [ -f ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/${EAT_LIBDIR}/ld-${EAT_VER_LIBC}.so ]; then
> > > -                     cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/${EAT_LIBDIR}/*  ${D}${base_libdir}
> > > -             else
> > > -                     cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/${EAT_LIBDIR}/*.so*  ${D}${base_libdir}
> > > -             fi
> > > -     fi
> > > -     if [ -d ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/${EAT_LIBDIR}/${EAT_TARGET_SYS} ]; then
> > > -             cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/${EAT_LIBDIR}/${EAT_TARGET_SYS}/*  ${D}${libdir}
> > > -     else
> > > -             cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/${EAT_LIBDIR}/*  ${D}${libdir}
> > > -             if [ ! -f ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/${EAT_LIBDIR}/ld-${EAT_VER_LIBC}.so ]; then
> > > -                     rm -rf ${D}${libdir}/*.so*
> > > -             fi
> > > -     fi
> > > +     cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/${EAT_LIBDIR}/*  ${D}${base_libdir}
> > > +     cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/${EAT_LIBDIR}/*  ${D}${libdir}
> > >       cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/share/*  ${D}${datadir}
> > >       cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/include/*  ${D}${includedir}
> > > -     if [ -d ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/include/${EAT_TARGET_SYS} ]; then
> > > -             cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/usr/include/${EAT_TARGET_SYS}/*  ${D}${includedir}
> > > -             rm -r ${D}${includedir}/${EAT_TARGET_SYS}
> > > -     fi
> > >
> > >       cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/include/* ${D}${includedir}
> > >       if [ -d ${D}${includedir}/c++/${EAT_VER_GCC}/${EAT_TARGET_SYS} ]; then
> > > @@ -128,7 +109,11 @@ do_install() {
> > >
> > >       # fix up the copied symlinks (they are still pointing to the multiarch directory)
> > >       linker_name="${@bb.utils.contains("TUNE_FEATURES", "aarch64", "ld-linux-aarch64.so.1", bb.utils.contains("TUNE_FEATURES", "callconvention-hard", "ld-linux-armhf.so.3", "ld-linux.so.3",d), d)}"
> > > -     ln -sf ld-${EAT_VER_LIBC}.so ${D}${base_libdir}/${linker_name}
> > > +     if [ -f ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/${EAT_LIBDIR}/ld-${EAT_VER_LIBC}.so ]; then
> > > +             ln -sf ld-${EAT_VER_LIBC}.so ${D}${base_libdir}/${linker_name}
> > > +     else
> > > +             cp ${CP_ARGS} ${EXTERNAL_TOOLCHAIN}/${EAT_TARGET_SYS}/libc/lib/${linker_name} ${D}${base_libdir}/
> > > +     fi
> > >       ln -sf ../../lib/librt.so.1 ${D}${libdir}/librt.so
> > >       ln -sf ../../lib/libcrypt.so.1 ${D}${libdir}/libcrypt.so
> > >       ln -sf ../../lib/libresolv.so.2 ${D}${libdir}/libresolv.so
> > > @@ -144,6 +129,7 @@ do_install() {
> > >       ln -sf ../../lib/libnss_files.so.2 ${D}${libdir}/libnss_files.so
> > >       ln -sf ../../lib/libnss_compat.so.2 ${D}${libdir}/libnss_compat.so
> > >       ln -sf ../../lib/libm.so.6 ${D}${libdir}/libm.so
> > > +     ln -sf ../../lib/libc_malloc_debug.so.0 ${D}${libdir}/libc_malloc_debug.so
> > >
> > >       # remove potential .so duplicates from base_libdir
> > >       # for all symlinks created above in libdir
> > > @@ -164,7 +150,7 @@ do_install() {
> > >       rm -f ${D}${base_libdir}/libm.so
> > >
> > >       # Move these completely to ${libdir} and delete duplicates in ${base_libdir}
> > > -     for lib in asan atomic gfortran gomp itm lsan sanitizer stdc++ tsan ubsan; do
> > > +     for lib in asan hwasan atomic gfortran gomp itm lsan sanitizer stdc++ tsan ubsan; do
> > >               if [ -e ${D}${base_libdir}/lib${lib}.spec ] ; then
> > >                       mv ${D}${base_libdir}/lib${lib}.spec ${D}${libdir}
> > >               fi
> > > @@ -180,6 +166,10 @@ do_install() {
> > >       # Besides ld-${EAT_VER_LIBC}.so, other libs can have duplicates like lib*-${EAT_VER_LIBC}.so
> > >       # Only remove them if both are regular files and are identical
> > >       for i in ${D}${base_libdir}/lib*-${EAT_VER_LIBC}.so; do
> > > +             if [ ! -e $i ] ; then
> > > +                     continue
> > > +             fi
> > > +
> > >               f=$(echo $i | sed 's/-${EAT_VER_LIBC}//')
> > >               l=$(ls $f.*)
> > >               if [ $(readlink -f $i ) = $l ]; then
> > > @@ -217,9 +207,9 @@ do_install() {
> > >       fi
> > >
> > >       if [ -f ${D}${base_libdir}/libc.so ];then
> > > -             sed -i -e "s# /${EAT_LIBDIR}/${EAT_TARGET_SYS}# ../../lib#g" -e "s# /usr/${EAT_LIBDIR}/${EAT_TARGET_SYS}# .#g" "s# /${EAT_LIBDIR}/# /lib/#g" ${D}${base_libdir}/libc.so
> > > +             sed -i -e "s# /${EAT_LIBDIR}/${EAT_TARGET_SYS}# ../../lib#g" -e "s# /usr/${EAT_LIBDIR}/${EAT_TARGET_SYS}# .#g" -e "s# /${EAT_LIBDIR}/# /lib/#g" ${D}${base_libdir}/libc.so
> > >               if [ -f ${D}${base_libdir}/libc.so.6 ]; then
> > > -                     sed -i -e "s# /usr/${EAT_LIBDIR}/libc.so.6# /lib/libc.so.6#g" "s# /${EAT_LIBDIR}/libc.so.6# /lib/libc.so.6#g" ${D}${base_libdir}/libc.so.6
> > > +                     sed -i -e "s# /usr/${EAT_LIBDIR}/libc.so.6# /lib/libc.so.6#g" -e "s# /${EAT_LIBDIR}/libc.so.6# /lib/libc.so.6#g" ${D}${base_libdir}/libc.so.6
> > >               fi
> > >       fi
> > >
> > > @@ -460,13 +450,16 @@ FILES:libgfortran-staticdev = "${libdir}/libgfortran.a"
> > >
> > > # From gcc-sanitizers.inc:
> > >
> > > -FILES:libasan += "${libdir}/libasan.so.*"
> > > +FILES:libasan += "${libdir}/libasan.so.* ${libdir}/libhwasan.so.*"
> > > FILES:libasan-dev += "\
> > >     ${libdir}/libasan_preinit.o \
> > >     ${libdir}/libasan.so \
> > > +    ${libdir}/libhwasan.so \
> > >     ${libdir}/libasan.la \
> > > "
> > > -FILES:libasan-staticdev += "${libdir}/libasan.a"
> > > +FILES:libasan-staticdev += "${libdir}/libasan.a \
> > > +    ${libdir}/libhwasan.a \
> > > +"
> > >
> > > FILES:libubsan += "${libdir}/libubsan.so.*"
> > > FILES:libubsan-dev += "\
> > > --
> > > 2.25.1
> > >
> >
> 


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2022-05-03 15:24 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-29  6:21 [PATCH v2 1/2] external-arm-toolchain-versions: Use ldd to get libc version Sumit Garg
2022-04-29  6:21 ` [PATCH v2 2/2] external-arm-toolchain: Add support for Arm GCC 11.2 binary release Sumit Garg
2022-04-29 16:10   ` Denys Dmytriyenko
2022-05-03  9:27   ` Ross Burton
2022-05-03 12:37     ` Sumit Garg
2022-05-03 15:24       ` Denys Dmytriyenko
2022-04-29 16:08 ` [PATCH v2 1/2] external-arm-toolchain-versions: Use ldd to get libc version Denys Dmytriyenko

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.