OSDN Git Service

* c-pragma.c (pending_weak_d, pending_weak): New.
[pf3gnuchains/gcc-fork.git] / contrib / compare-debug
index e91e05d..98c80f9 100755 (executable)
@@ -57,11 +57,19 @@ done
 
 trap 'rm -f "$1.$suf1" "$2.$suf2"' 0 1 2 15
 
-cp "$1" "$1.$suf1"
-strip "$1.$suf1"
+case `uname -s` in
+Darwin)
+  ld -S -x -r -no_uuid "$1" -o "$1.$suf1"
+  ld -S -x -r -no_uuid "$2" -o "$2.$suf2"
+  ;;
+*)
+  cp "$1" "$1.$suf1"
+  strip "$1.$suf1"
 
-cp "$2" "$2.$suf2"
-strip "$2.$suf2"
+  cp "$2" "$2.$suf2"
+  strip "$2.$suf2"
+  ;;
+esac
 
 if cmp "$1.$suf1" "$2.$suf2"; then
   status=0
@@ -78,7 +86,7 @@ else
   cmp2=
 
   for t in objdump readelf eu-readelf; do
-    if ($t --help) 2>&1 | grep -e '--\[*section-\]*headers' > /dev/null; then
+    if ($t --help) 2>&1 | grep --\[*section-\]*headers' > /dev/null; then
       cmd=$t
 
       $cmd --section-headers "$1.$suf1" | grep '\.eh_frame' > /dev/null
@@ -107,41 +115,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 ' --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
+    elif (strip --help) 2>&1 | grep ' --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
 
@@ -149,4 +149,12 @@ $rm "$1.$suf1" "$2.$suf2"
 
 trap "exit $status; exit" 0 1 2 15
 
+if test -f "$1".gkd || test -f "$2".gkd; then
+  if cmp "$1".gkd "$2".gkd; then
+    :
+  else
+    status=$?
+  fi
+fi
+
 exit $status