This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[vta, vta4.4, trunk, 4.4] ignore .eh_frame relocations in compare-debug
- From: Alexandre Oliva <aoliva at redhat dot com>
- To: gcc-patches at gcc dot gnu dot org
- Date: Tue, 18 Aug 2009 16:41:11 -0300
- Subject: [vta, vta4.4, trunk, 4.4] ignore .eh_frame relocations in compare-debug
I got bootstrap-debug compare failures on i686, because of relocations
in the .eh_frame section, generated by the assembler when debug
information is enabled.
The compare-debug script was already smart enough to drop the .eh_frame
section itself, but objcopy and strip wouldn't drop the corresponding
relocation sections. This patch teaches it how to do that.
I'm installing it in both VTA branches, as well as in the trunk and 4.4
branch.
for contrib/ChangeLog.vta
from Alexandre Oliva <aoliva@redhat.com>
* compare-debug: Drop .eh_frame relocations too.
Index: contrib/compare-debug
===================================================================
--- contrib/compare-debug.orig 2009-06-11 08:48:22.000000000 -0300
+++ contrib/compare-debug 2009-08-18 15:01:40.000000000 -0300
@@ -107,41 +107,33 @@ else
trap 'rm -f "$1.$suf1" "$2.$suf2" "$1.$suf3" "$2.$suf4"' 0 1 2 15
- if (objcopy -v) 2>&1 | grep -e "--remove-section" > /dev/null; then
- objcopy --remove-section .eh_frame "$1.$suf1" "$1.$suf3"
- cmp "$1.$suf1" "$1.$suf3" > /dev/null
- cmp1=$?
-
- objcopy --remove-section .eh_frame "$2.$suf2" "$2.$suf4"
- cmp "$2.$suf2" "$2.$suf4" > /dev/null
- cmp2=$?
+ echo stripping off .eh_frame, then retrying >&2
+ if (objcopy -v) 2>&1 | grep -e "--remove-section" > /dev/null; then
+ objcopy --remove-section .eh_frame --remove-section .rel.eh_frame --remove-section .rela.eh_frame "$1.$suf1" "$1.$suf3"
mv "$1.$suf3" "$1.$suf1"
+
+ objcopy --remove-section .eh_frame --remove-section .rel.eh_frame --remove-section .rela.eh_frame "$2.$suf2" "$2.$suf4"
mv "$2.$suf4" "$2.$suf2"
elif (strip --help) 2>&1 | grep -e --remove-section > /dev/null; then
cp "$1.$suf1" "$1.$suf3"
- strip --remove-section .eh_frame "$1.$suf3"
+ strip --remove-section .eh_frame --remove-section .rel.eh_frame --remove-section .rela.eh_frame "$1.$suf3"
+ mv "$1.$suf3" "$1.$suf1"
cp "$2.$suf2" "$2.$suf4"
- strip --remove-section .eh_frame "$2.$suf4"
-
- cmp "$1.$suf1" "$1.$suf3" > /dev/null
- cmp1=$?
-
- cmp "$2.$suf2" "$2.$suf4" > /dev/null
- cmp2=$?
-
- mv "$1.$suf3" "$1.$suf1"
+ strip --remove-section .eh_frame --remove-section .rel.eh_frame --remove-section .rela.eh_frame "$2.$suf4"
mv "$2.$suf4" "$2.$suf2"
+ else
+ echo failed to strip off .eh_frame >&2
fi
trap 'rm -f "$1.$suf1" "$2.$suf2"' 0 1 2 15
- fi
- if test "x$cmp1" != "x$cmp2" && cmp "$1.$suf1" "$2.$suf2"; then
- status=0
- else
- status=1
+ if cmp "$1.$suf1" "$2.$suf2"; then
+ status=0
+ else
+ status=1
+ fi
fi
fi
--
Alexandre Oliva, freedom fighter http://FSFLA.org/~lxoliva/
You must be the change you wish to see in the world. -- Gandhi
Be Free! -- http://FSFLA.org/ FSF Latin America board member
Free Software Evangelist Red Hat Brazil Compiler Engineer