The last fix made for PR lto/85574 introduced a comparison of executables and 
this cannot directly work on Windows because they are timestamped.  Moreover 
nobody sets $(exeext) at top level, at least on MinGW, so you get a weird 
behavior because some tools add the implicit .exe suffix and others don't.

Bootstrapped in LTO mode on Windows, OK for all active branches?


2021-01-28  Eric Botcazou  <ebotca...@adacore.com>

contrib/
        PR lto/85574
        * compare-lto: Deal with PE-COFF executables specifically.

-- 
Eric Botcazou
diff --git a/contrib/compare-lto b/contrib/compare-lto
index 17379e196a7..c0bb71c0765 100755
--- a/contrib/compare-lto
+++ b/contrib/compare-lto
@@ -32,7 +32,7 @@ case $1 in
 esac
 
 if test $# != 2; then
-  echo 'usage: compare-lto file1.o file2.o' >&2
+  echo 'usage: compare-lto file1 file2' >&2
   exit 1
 fi
 
@@ -101,6 +101,25 @@ else
     else
       status=1
     fi
+
+  # PE-COFF executables are timestamped so skip leading bytes for them.
+  else
+    case "$1" in
+      *.exe)
+        if cmp -i 256 "$1" "$2"; then
+          status=0
+        else
+          status=1
+        fi
+        ;;
+      *)
+        if test -f "$1.exe" && cmp -i 256 "$1.exe" "$2.exe"; then
+          status=0
+        else
+          status=1
+        fi
+        ;;
+    esac
   fi
 fi
 

Reply via email to