]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
libgcc/gcc-runtime: Improve source reference handling
authorRichard Purdie <richard.purdie@linuxfoundation.org>
Wed, 20 Jul 2022 11:29:39 +0000 (12:29 +0100)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Wed, 17 Aug 2022 18:55:32 +0000 (19:55 +0100)
This code was some of the earliest reproducible build work we did. To
correctly handle the encoding of file paths, we used relative build
paths to run configure which resulted in relative build paths in the
binaries.

We now have more modern approaches used elsewhere with the prefix remapping
options. These work best with absolute paths, not relative ones. As such,
drop the relative path mangling and switch to using prefix mapping
exclusively on absolute paths.

This makes the code matc the rest of the system and triggers the correct
code to be added in /usr/src/debug.

We have to include both file-prefix and debug-prefix since the assembler
only looks at debug-prefix.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/recipes-devtools/gcc/gcc-runtime.inc
meta/recipes-devtools/gcc/libgcc-common.inc

index b8bfdcedadfe0ad6c96405a50a45c347a3fe21c0..35a3077a4a7ce1c4a4049e3ee6b1f12de85968ec 100644 (file)
@@ -51,16 +51,15 @@ RUNTIMETARGET:libc-newlib = "libstdc++-v3"
 # libgfortran needs separate recipe due to libquadmath dependency
 
 # Relative path to be repaced into debug info
-REL_S = "/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}"
-
-DEBUG_PREFIX_MAP:class-target = " \
-   -fdebug-prefix-map=${WORKDIR}/${MLPREFIX}recipe-sysroot= \
-   -fdebug-prefix-map=${WORKDIR}/recipe-sysroot-native= \
-   -fdebug-prefix-map=${S}=${REL_S} \
-   -fdebug-prefix-map=${S}/include=${REL_S}/libstdc++-v3/../include \
-   -fdebug-prefix-map=${S}/libiberty=${REL_S}/libstdc++-v3/../libiberty \
-   -fdebug-prefix-map=${S}/libgcc=${REL_S}/libstdc++-v3/../libgcc \
-   -fdebug-prefix-map=${B}=${REL_S} \
+DEBUGSOURCE = "/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}"
+
+DEBUG_PREFIX_MAP = " \
+   -ffile-prefix-map=${WORKDIR}/${MLPREFIX}recipe-sysroot= \
+   -ffile-prefix-map=${WORKDIR}/recipe-sysroot-native= \
+   -ffile-prefix-map=${B}=${DEBUGSOURCE} \
+   -ffile-prefix-map=${S}=${DEBUGSOURCE} \
+   -fdebug-prefix-map=${B}=${DEBUGSOURCE} \
+   -fdebug-prefix-map=${S}=${DEBUGSOURCE} \
    -ffile-prefix-map=${B}/${HOST_SYS}/libstdc++-v3/include=${includedir}/c++/${BINV} \
    "
 
@@ -77,8 +76,7 @@ do_configure () {
                mkdir -p ${B}/${TARGET_SYS}/$d/
                cd ${B}/${TARGET_SYS}/$d/
                chmod a+x ${S}/$d/configure
-               relpath=${@os.path.relpath("${S}/$d", "${B}/${TARGET_SYS}/$d")}
-               $relpath/configure ${CONFIGUREOPTS} ${EXTRA_OECONF}
+               ${S}/$d/configure ${CONFIGUREOPTS} ${EXTRA_OECONF}
                if [ "$d" = "libgcc" ]; then
                        (cd ${B}/${TARGET_SYS}/libgcc; oe_runmake enable-execute-stack.c unwind.h md-unwind-support.h sfp-machine.h gthr-default.h)
                fi
index cf8d6b7ed6e4ef5d1a1d9ec6ad90bdcd81bb5fc3..e8139263132429149ede21debfad55b87ebb0b26 100644 (file)
@@ -4,14 +4,21 @@ require gcc-configure-common.inc
 
 INHIBIT_DEFAULT_DEPS = "1"
 
+DEBUGSOURCE = "/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}"
+DEBUG_PREFIX_MAP = " \
+   -fdebug-prefix-map=${WORKDIR}/${MLPREFIX}recipe-sysroot= \
+   -fdebug-prefix-map=${WORKDIR}/recipe-sysroot-native= \
+   -fdebug-prefix-map=${B}=${DEBUGSOURCE} \
+   -fdebug-prefix-map=${S}=${DEBUGSOURCE} \
+   "
+
 do_configure () {
        install -d ${D}${base_libdir} ${D}${libdir}
        mkdir -p ${B}/${BPN}
        mkdir -p ${B}/${TARGET_SYS}/${BPN}/
        cd ${B}/${BPN}
        chmod a+x ${S}/${BPN}/configure
-       relpath=${@os.path.relpath("${S}/${BPN}", "${B}/${BPN}")}
-       $relpath/configure ${CONFIGUREOPTS} ${EXTRA_OECONF}
+       ${S}/${BPN}/configure ${CONFIGUREOPTS} ${EXTRA_OECONF}
 }
 EXTRACONFFUNCS += "extract_stashed_builddir"
 do_configure[depends] += "${COMPILERDEP}"