This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]