Remove any .comment sections if the first cmp failed
authorH.J. Lu <hongjiu.lu@intel.com>
Fri, 25 May 2012 11:47:05 +0000 (11:47 +0000)
committerH.J. Lu <hjl@gcc.gnu.org>
Fri, 25 May 2012 11:47:05 +0000 (04:47 -0700)
PR bootstrap/53472
* contrib/compare-debug (remove_comment): New function.
Remove any .comment sections if the first cmp failed.

From-SVN: r187879

contrib/ChangeLog
contrib/compare-debug

index 383e576..c1e3499 100644 (file)
@@ -1,3 +1,9 @@
+2012-05-25  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR bootstrap/53472
+       * contrib/compare-debug (remove_comment): New function.
+       Remove any .comment sections if the first cmp failed.
+
 2012-05-09  David Edelsohn  <dje.gcc@gmail.com>
 
        * gcc_update: Use $GCC_SVN to retrieve branch and revision.
index 010d17f..fb8986d 100755 (executable)
@@ -73,11 +73,35 @@ Darwin)
   ;;
 esac
 
+remove_comment ()
+{
+  file=$1
+  opts=
+  for s in `objdump --section-headers "$file" | awk '{ print $2 }'`; do
+    case "$s" in
+    .comment*)
+      opts="$opts --remove-section $s"
+      ;;
+    esac
+  done
+  [ -n "$opts" ] && objcopy $opts $file
+}
+
 if cmp "$1.$suf1" "$2.$suf2"; then
   status=0
 else
   status=1
 
+  # Remove any .comment sections.
+  if (objcopy -v) 2>&1 | grep ' --remove-section' > /dev/null \
+     && (objdump --help) 2>&1 | grep ' --\[*section-\]*headers' > /dev/null; then
+    remove_comment "$1.$suf1"
+    remove_comment "$2.$suf2"
+    if cmp "$1.$suf1" "$2.$suf2"; then
+      status=0
+    fi
+  fi
+
   # Assembler-generated CFI will add an .eh_frame section for -g not
   # present in -g0.  Try to cope with it by checking that an .eh_frame
   # section is present in either object file, and then stripping it