Matthias Klose wrote: > Emilio Pozuelo Monfort schrieb: >> I'll look into gcc-4.4 and gcc-4.3 next.
OK, here they are. I've tested both only on i386 (I don't have any other arch right now). They seem to work fine (pass build-id by default, can be overridden with -Wl,--build-id=none). I've also put gcc-4.3 in my chroot and built a couple of packages (rarian and libsoup2.4), both built successfully. The patch is the same from gcc trunk, not the one Fedora uses. How do they look? Thanks, Emilio
diff -u gcc-4.3-4.3.3/debian/changelog gcc-4.3-4.3.3/debian/changelog --- gcc-4.3-4.3.3/debian/changelog +++ gcc-4.3-4.3.3/debian/changelog @@ -1,3 +1,12 @@ +gcc-4.3 (4.3.3-14) UNRELEASED; urgency=low + + * debian/patches/gcc-build-id.dpatch, debian/rules.patch: + Backport change from trunk to pass --build-id to the linker + when it supports it. + * debian/rules2: Build with --enable-linker-build-id. + + -- Emilio Pozuelo Monfort <po...@ubuntu.com> Sat, 11 Jul 2009 00:55:51 +0200 + gcc-4.3 (4.3.3-13) unstable; urgency=low * Update to SVN 20090625 from the gcc-4_3-branch. diff -u gcc-4.3-4.3.3/debian/rules2 gcc-4.3-4.3.3/debian/rules2 --- gcc-4.3-4.3.3/debian/rules2 +++ gcc-4.3-4.3.3/debian/rules2 @@ -176,6 +176,7 @@ --prefix=/$(PF) \ --enable-shared \ --enable-multiarch \ + --enable-linker-build-id \ --with-system-zlib \ ifneq ($(PKGSOURCE),gcc-snapshot) diff -u gcc-4.3-4.3.3/debian/rules.patch gcc-4.3-4.3.3/debian/rules.patch --- gcc-4.3-4.3.3/debian/rules.patch +++ gcc-4.3-4.3.3/debian/rules.patch @@ -34,6 +34,7 @@ gcc-textdomain \ gcc-driver-extra-langs \ gcc-hash-style-both \ + gcc-build-id \ libstdc++-pic \ libstdc++-doclink \ libobjc-gc-link \ only in patch2: unchanged: --- gcc-4.3-4.3.3.orig/debian/patches/gcc-build-id.dpatch +++ gcc-4.3-4.3.3/debian/patches/gcc-build-id.dpatch @@ -0,0 +1,139 @@ +#! /bin/sh -e + +# DP: Link with --build-id when the linker supports it + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +Index: gcc/c-common.c + +Index: gcc/configure.ac +=================================================================== +--- gcc/configure.ac (revision 146981) ++++ gcc/configure.ac (working copy) +@@ -3510,6 +3510,41 @@ + ;; + esac + ++AC_CACHE_CHECK(linker --build-id support, ++ gcc_cv_ld_buildid, ++ [gcc_cv_ld_buildid=no ++ if test $in_tree_ld = yes ; then ++ if test "$gcc_cv_gld_major_version" -eq 2 -a \ ++ "$gcc_cv_gld_minor_version" -ge 18 -o \ ++ "$gcc_cv_gld_major_version" -gt 2 \ ++ && test $in_tree_ld_is_elf = yes; then ++ gcc_cv_ld_buildid=yes ++ fi ++ elif test x$gcc_cv_ld != x; then ++ if $gcc_cv_ld --help 2>/dev/null | grep build-id > /dev/null; then ++ gcc_cv_ld_buildid=yes ++ fi ++ fi]) ++if test x"$gcc_cv_ld_buildid" = xyes; then ++ AC_DEFINE(HAVE_LD_BUILDID, 1, ++ [Define if your linker supports --build-id.]) ++fi ++ ++AC_ARG_ENABLE(linker-build-id, ++[ --enable-linker-build-id ++ compiler will always pass --build-id to linker], ++[], ++enable_linker_build_id=no) ++ ++if test x"$enable_linker_build_id" = xyes; then ++ if test x"$gcc_cv_ld_buildid" = xyes; then ++ AC_DEFINE(ENABLE_LD_BUILDID, 1, ++ [Define if gcc should always pass --build-id to linker.]) ++ else ++ AC_MSG_WARN(--build-id is not supported by your linker; --enable-linker-build-id ignored) ++ fi ++fi ++ + AC_CACHE_CHECK(linker --sysroot support, + gcc_cv_ld_sysroot, + [gcc_cv_ld_sysroot=no +Index: gcc/gcc.c +=================================================================== +--- gcc/gcc.c (revision 146981) ++++ gcc/gcc.c (working copy) +@@ -730,6 +730,13 @@ + #endif + #endif + ++#ifndef LINK_BUILDID_SPEC ++# if defined(HAVE_LD_BUILDID) && defined(ENABLE_LD_BUILDID) ++# define LINK_BUILDID_SPEC "%{!r:--build-id} " ++# endif ++#endif ++ ++ + /* -u* was put back because both BSD and SysV seem to support it. */ + /* %{static:} simply prevents an error message if the target machine + doesn't handle -static. */ +@@ -1844,9 +1851,16 @@ + asm_spec = XOBFINISH (&obstack, const char *); + } + #endif +-#ifdef LINK_EH_SPEC ++ ++#if defined LINK_EH_SPEC || defined LINK_BUILDID_SPEC ++# ifdef LINK_BUILDID_SPEC ++ /* Prepend LINK_BUILDID_SPEC to whatever link_spec we had before. */ ++ obstack_grow (&obstack, LINK_BUILDID_SPEC, sizeof(LINK_BUILDID_SPEC) - 1); ++# endif ++# ifdef LINK_EH_SPEC + /* Prepend LINK_EH_SPEC to whatever link_spec we had before. */ + obstack_grow (&obstack, LINK_EH_SPEC, sizeof(LINK_EH_SPEC) - 1); ++# endif + obstack_grow0 (&obstack, link_spec, strlen (link_spec)); + link_spec = XOBFINISH (&obstack, const char *); + #endif +Index: gcc/config.in +=================================================================== +--- gcc/config.in (revision 146981) ++++ gcc/config.in (working copy) +@@ -101,6 +101,12 @@ + #endif + + ++/* Define if gcc should always pass --build-id to linker. */ ++#ifndef USED_FOR_TARGET ++#undef ENABLE_LD_BUILDID ++#endif ++ ++ + /* Define to 1 if translation of program messages to the user's native + language is requested. */ + #ifndef USED_FOR_TARGET +@@ -1025,6 +1031,12 @@ + #endif + + ++/* Define if your linker supports --build-id. */ ++#ifndef USED_FOR_TARGET ++#undef HAVE_LD_BUILDID ++#endif ++ ++ + /* Define if your linker supports --demangle option. */ + #ifndef USED_FOR_TARGET + #undef HAVE_LD_DEMANGLE
diff -u gcc-4.4-4.4.0/debian/changelog gcc-4.4-4.4.0/debian/changelog --- gcc-4.4-4.4.0/debian/changelog +++ gcc-4.4-4.4.0/debian/changelog @@ -1,3 +1,12 @@ +gcc-4.4 (4.4.0-11) UNRELEASED; urgency=low + + * debian/patches/gcc-build-id.diff, debian/rules.patch: + Backport change from trunk to pass --build-id to the linker + when it supports it. + * debian/rules2: Build with --enable-linker-build-id. + + -- Emilio Pozuelo Monfort <po...@ubuntu.com> Fri, 10 Jul 2009 20:21:26 +0200 + gcc-4.4 (4.4.0-10) unstable; urgency=low [ Arthur Loiret ] diff -u gcc-4.4-4.4.0/debian/rules2 gcc-4.4-4.4.0/debian/rules2 --- gcc-4.4-4.4.0/debian/rules2 +++ gcc-4.4-4.4.0/debian/rules2 @@ -122,6 +122,7 @@ --prefix=/$(PF) \ --enable-shared \ --enable-multiarch \ + --enable-linker-build-id \ --with-system-zlib \ ifneq ($(PKGSOURCE),gcc-snapshot) diff -u gcc-4.4-4.4.0/debian/rules.patch gcc-4.4-4.4.0/debian/rules.patch --- gcc-4.4-4.4.0/debian/rules.patch +++ gcc-4.4-4.4.0/debian/rules.patch @@ -32,6 +32,7 @@ gcc-textdomain \ gcc-driver-extra-langs \ gcc-hash-style-both \ + gcc-build-id \ libstdc++-pic \ libstdc++-doclink \ libstdc++-man-3cxx \ only in patch2: unchanged: --- gcc-4.4-4.4.0.orig/debian/patches/gcc-build-id.diff +++ gcc-4.4-4.4.0/debian/patches/gcc-build-id.diff @@ -0,0 +1,112 @@ +Index: a/src/gcc/configure.ac +=================================================================== +--- a/src/gcc/configure.ac (revision 146981) ++++ b/src/gcc/configure.ac (working copy) +@@ -3510,6 +3510,41 @@ + ;; + esac + ++AC_CACHE_CHECK(linker --build-id support, ++ gcc_cv_ld_buildid, ++ [gcc_cv_ld_buildid=no ++ if test $in_tree_ld = yes ; then ++ if test "$gcc_cv_gld_major_version" -eq 2 -a \ ++ "$gcc_cv_gld_minor_version" -ge 18 -o \ ++ "$gcc_cv_gld_major_version" -gt 2 \ ++ && test $in_tree_ld_is_elf = yes; then ++ gcc_cv_ld_buildid=yes ++ fi ++ elif test x$gcc_cv_ld != x; then ++ if $gcc_cv_ld --help 2>/dev/null | grep build-id > /dev/null; then ++ gcc_cv_ld_buildid=yes ++ fi ++ fi]) ++if test x"$gcc_cv_ld_buildid" = xyes; then ++ AC_DEFINE(HAVE_LD_BUILDID, 1, ++ [Define if your linker supports --build-id.]) ++fi ++ ++AC_ARG_ENABLE(linker-build-id, ++[ --enable-linker-build-id ++ compiler will always pass --build-id to linker], ++[], ++enable_linker_build_id=no) ++ ++if test x"$enable_linker_build_id" = xyes; then ++ if test x"$gcc_cv_ld_buildid" = xyes; then ++ AC_DEFINE(ENABLE_LD_BUILDID, 1, ++ [Define if gcc should always pass --build-id to linker.]) ++ else ++ AC_MSG_WARN(--build-id is not supported by your linker; --enable-linker-build-id ignored) ++ fi ++fi ++ + AC_CACHE_CHECK(linker --sysroot support, + gcc_cv_ld_sysroot, + [gcc_cv_ld_sysroot=no +Index: a/src/gcc/gcc.c +=================================================================== +--- a/src/gcc/gcc.c (revision 146981) ++++ b/src/gcc/gcc.c (working copy) +@@ -730,6 +730,13 @@ + #endif + #endif + ++#ifndef LINK_BUILDID_SPEC ++# if defined(HAVE_LD_BUILDID) && defined(ENABLE_LD_BUILDID) ++# define LINK_BUILDID_SPEC "%{!r:--build-id} " ++# endif ++#endif ++ ++ + /* -u* was put back because both BSD and SysV seem to support it. */ + /* %{static:} simply prevents an error message if the target machine + doesn't handle -static. */ +@@ -1844,9 +1851,16 @@ + asm_spec = XOBFINISH (&obstack, const char *); + } + #endif +-#ifdef LINK_EH_SPEC ++ ++#if defined LINK_EH_SPEC || defined LINK_BUILDID_SPEC ++# ifdef LINK_BUILDID_SPEC ++ /* Prepend LINK_BUILDID_SPEC to whatever link_spec we had before. */ ++ obstack_grow (&obstack, LINK_BUILDID_SPEC, sizeof(LINK_BUILDID_SPEC) - 1); ++# endif ++# ifdef LINK_EH_SPEC + /* Prepend LINK_EH_SPEC to whatever link_spec we had before. */ + obstack_grow (&obstack, LINK_EH_SPEC, sizeof(LINK_EH_SPEC) - 1); ++# endif + obstack_grow0 (&obstack, link_spec, strlen (link_spec)); + link_spec = XOBFINISH (&obstack, const char *); + #endif +Index: a/src/gcc/config.in +=================================================================== +--- a/src/gcc/config.in (revision 146981) ++++ b/src/gcc/config.in (working copy) +@@ -101,6 +101,12 @@ + #endif + + ++/* Define if gcc should always pass --build-id to linker. */ ++#ifndef USED_FOR_TARGET ++#undef ENABLE_LD_BUILDID ++#endif ++ ++ + /* Define to 1 if translation of program messages to the user's native + language is requested. */ + #ifndef USED_FOR_TARGET +@@ -1025,6 +1031,12 @@ + #endif + + ++/* Define if your linker supports --build-id. */ ++#ifndef USED_FOR_TARGET ++#undef HAVE_LD_BUILDID ++#endif ++ ++ + /* Define if your linker supports --demangle option. */ + #ifndef USED_FOR_TARGET + #undef HAVE_LD_DEMANGLE
signature.asc
Description: OpenPGP digital signature