]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core.git/commitdiff
gcc: remove paths to sysroot from configargs.h and checksum-options for gcc-cross...
authorOleksandr Hnatiuk <ohnatiuk@cisco.com>
Mon, 22 Jul 2024 05:34:58 +0000 (01:34 -0400)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Sat, 3 Aug 2024 06:55:32 +0000 (07:55 +0100)
Apply fixes from gcc-cross (84a78f46d594 and 0ead8cbdfb96) to gcc-cross-canadian.
This will improve (but not fix) reproducibility of gcc-cross-canadian.
Also move this code to functions to avoid code duplication.

[RP: Tweak patch to make the function parameters clear and fix quoting issues
ensuring the code exactly matches the original replacements with an additional
parameter.]

Signed-off-by: Oleksandr Hnatiuk <ohnatiuk@cisco.com>
Signed-off-by: Denys Dmytriyenko <denys@konsulko.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/recipes-devtools/gcc/gcc-common.inc
meta/recipes-devtools/gcc/gcc-configure-common.inc
meta/recipes-devtools/gcc/gcc-cross-canadian.inc
meta/recipes-devtools/gcc/gcc-cross.inc
meta/recipes-devtools/gcc/gcc-target.inc

index 5ac82b1b577175f4f24382080193398a359d748c..7f5cc109e63bea2f8c4661992329f4ee6b0ae0d7 100644 (file)
@@ -116,3 +116,25 @@ target_prefix ?= "${prefix}"
 # The real WORKDIR location isn't a dependency for the shared workdir.
 src_patches[vardepsexclude] = "WORKDIR"
 should_apply[vardepsexclude] += "PN"
+
+remove_sysroot_paths_from_configargs () {
+       replacement=${1}
+       # Prevent sysroot path from being used in configargs.h header, as it will
+       # be rewritten when used by other sysroots preventing support for gcc
+       # plugins. Additionally the path is embeddeded into the output binary, this
+       # prevents building a reproducible binary.
+       oe_runmake configure-gcc
+       sed -i "s@${STAGING_DIR_TARGET}@$replacement@g" ${B}/gcc/configargs.h
+       sed -i "s@${STAGING_DIR_HOST}@/$replacement@g" ${B}/gcc/configargs.h
+}
+
+remove_sysroot_paths_from_checksum_options () {
+       stagingdir=${1}
+       replacement=${2}
+       # Prevent sysroot/workdir paths from being used in checksum-options.
+       # checksum-options is used to generate a checksum which is embedded into
+       # the output binary.
+       oe_runmake TARGET-gcc=checksum-options all-gcc
+       sed -i "s@${DEBUG_PREFIX_MAP}@@g" ${B}/gcc/checksum-options
+       sed -i "s@$stagingdir@$replacement@g" ${B}/gcc/checksum-options
+}
index d77b2ec3d1de05dc20d1e03ea389ed2b35d79cc0..5c7993624290d3c50aa0c1325ab38e49355a66e9 100644 (file)
@@ -119,4 +119,3 @@ do_configure () {
 
        oe_runconf
 }
-
index 7c4233c211571e49a2963b62af3b0e23624df178..1b183d6fc19974a7aa9e0dd4f69eb15d6dfb8704 100644 (file)
@@ -64,6 +64,9 @@ do_configure () {
 }
 
 do_compile () {
+       remove_sysroot_paths_from_configargs '/host'
+       remove_sysroot_paths_from_checksum_options '${STAGING_DIR_HOST}' '/host'
+
        oe_runmake all-host configure-target-libgcc
        (cd ${B}/${TARGET_SYS}/libgcc; oe_runmake enable-execute-stack.c unwind.h md-unwind-support.h sfp-machine.h gthr-default.h)
 }
index c04177df5a8c0183ee29203c2fe6bd741995d847..68e33c735827cee2966e19e5532c393d3b6032f1 100644 (file)
@@ -63,19 +63,8 @@ do_compile () {
        export CXXFLAGS_FOR_TARGET="${TARGET_CXXFLAGS}"
        export LDFLAGS_FOR_TARGET="${TARGET_LDFLAGS}"
 
-       # Prevent native/host sysroot path from being used in configargs.h header,
-       # as it will be rewritten when used by other sysroots preventing support
-       # for gcc plugins
-       oe_runmake configure-gcc
-       sed -i 's@${STAGING_DIR_TARGET}@/host@g' ${B}/gcc/configargs.h
-       sed -i 's@${STAGING_DIR_HOST}@/host@g' ${B}/gcc/configargs.h
-
-       # Prevent sysroot/workdir paths from being used in checksum-options.
-       # checksum-options is used to generate a checksum which is embedded into
-       # the output binary.
-       oe_runmake TARGET-gcc=checksum-options all-gcc
-       sed -i 's@${DEBUG_PREFIX_MAP}@@g' ${B}/gcc/checksum-options
-       sed -i 's@${STAGING_DIR_HOST}@/host@g' ${B}/gcc/checksum-options
+       remove_sysroot_paths_from_configargs '/host'
+       remove_sysroot_paths_from_checksum_options '${STAGING_DIR_HOST}' '/host'
 
        oe_runmake all-host configure-target-libgcc
        (cd ${B}/${TARGET_SYS}/libgcc; oe_runmake enable-execute-stack.c unwind.h md-unwind-support.h sfp-machine.h gthr-default.h)
index e9187fc444b9238f03dd116997b1e987df259622..c847838ec7aefd9f2ea0e13fbc8aaf2017ebb5bc 100644 (file)
@@ -132,20 +132,8 @@ FILES:${PN}-doc = "\
 "
 
 do_compile () {
-       # Prevent full target sysroot path from being used in configargs.h header,
-       # as it will be rewritten when used by other sysroots preventing support
-       # for gcc plugins. Additionally the path is embeddeded into the output
-       # binary, this prevents building a reproducible binary.
-       oe_runmake configure-gcc
-       sed -i 's@${STAGING_DIR_TARGET}@/@g' ${B}/gcc/configargs.h
-       sed -i 's@${STAGING_DIR_HOST}@/@g' ${B}/gcc/configargs.h
-
-       # Prevent sysroot/workdir paths from being used in checksum-options.
-       # checksum-options is used to generate a checksum which is embedded into
-       # the output binary.
-       oe_runmake TARGET-gcc=checksum-options all-gcc
-       sed -i 's@${DEBUG_PREFIX_MAP}@@g' ${B}/gcc/checksum-options
-       sed -i 's@${STAGING_DIR_TARGET}@/@g' ${B}/gcc/checksum-options
+       remove_sysroot_paths_from_configargs '/'
+       remove_sysroot_paths_from_checksum_options '${STAGING_DIR_TARGET}' '/'
 
        oe_runmake all-host
 }