unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#17176: 24.3.50; Problem with manifests on cygw32 build with new binutils
@ 2014-04-02 19:07 Ken Brown
  2014-04-02 19:38 ` Daniel Colascione
  2014-04-02 20:29 ` Eli Zaretskii
  0 siblings, 2 replies; 8+ messages in thread
From: Ken Brown @ 2014-04-02 19:07 UTC (permalink / raw)
  To: 17176

binutils has changed so that, on Cygwin, executables have a manifest 
built in by default.  A consequence is that the cygw32 build of emacs 
produces an emacs.exe which, after it is stripped, won't run:

$ ./emacs-stripped.exe
-bash: ./emacs-stripped.exe: cannot execute binary file

This is presumably caused by the fact that the cygw32 build already 
incorporates a manifest via nt/emacs.res.  The following patch fixes 
this and does some related manifest-related cleanup:

=== modified file 'configure.ac'
--- configure.ac        2014-03-27 21:29:32 +0000
+++ configure.ac        2014-04-02 17:47:41 +0000
@@ -1834,11 +1834,6 @@
    W32_OBJ="w32fns.o w32menu.o w32reg.o w32font.o w32term.o"
    W32_OBJ="$W32_OBJ w32xfns.o w32select.o w32uniscribe.o"
    EMACSRES="emacs.res"
-  case "$canonical" in
-    x86_64-*-*) EMACS_MANIFEST="emacs-x64.manifest" ;;
-    *) EMACS_MANIFEST="emacs-x86.manifest" ;;
-  esac
-  UPDATE_MANIFEST=update-game-score.exe.manifest
    if test "${opsys}" = "cygwin"; then
      W32_LIBS="$W32_LIBS -lkernel32 -luser32 -lgdi32 -lole32 -lcomdlg32"
      W32_LIBS="$W32_LIBS -lusp10 -lcomctl32 -lwinspool"
@@ -1846,6 +1841,11 @@
      # the rc file), not a linker script.
      W32_RES_LINK="-Wl,emacs.res"
    else
+    case "$canonical" in
+      x86_64-*-*) EMACS_MANIFEST="emacs-x64.manifest" ;;
+      *) EMACS_MANIFEST="emacs-x86.manifest" ;;
+    esac
+    UPDATE_MANIFEST=update-game-score.exe.manifest
      W32_OBJ="$W32_OBJ w32.o w32console.o w32heap.o w32inevt.o w32proc.o"
      W32_LIBS="$W32_LIBS -lwinmm -lgdi32 -lcomdlg32"
      W32_LIBS="$W32_LIBS -lmpr -lwinspool -lole32 -lcomctl32 -lusp10"

=== modified file 'nt/emacs.rc'
--- nt/emacs.rc 2014-03-21 10:12:53 +0000
+++ nt/emacs.rc 2014-04-02 18:30:53 +0000
@@ -1,10 +1,12 @@
  Emacs ICON   icons/emacs.ico
  32649 CURSOR icons/hand.cur
-#if defined (WIN64) || defined (__x86_64__)
+#ifndef __CYGWIN__
+#ifdef WIN64
  1 24 "emacs-x64.manifest"
  #else
  1 24 "emacs-x86.manifest"
  #endif
+#endif

  #ifndef VS_VERSION_INFO
  #define VS_VERSION_INFO 1

=== modified file 'src/Makefile.in'
--- src/Makefile.in     2014-01-12 17:27:17 +0000
+++ src/Makefile.in     2014-04-02 18:29:50 +0000
@@ -259,7 +259,7 @@

  ## emacs.res if HAVE_W32
  EMACSRES = @EMACSRES@
-## emacs-*.manifest if HAVE_W32
+## emacs-*.manifest if WINDOWSNT
  EMACS_MANIFEST = @EMACS_MANIFEST@
  ## If HAVE_W32, compiler arguments for including
  ## the resource file in the binary.


OK to apply to the emacs-24 branch?

Ken





^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2014-04-03 19:12 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-04-02 19:07 bug#17176: 24.3.50; Problem with manifests on cygw32 build with new binutils Ken Brown
2014-04-02 19:38 ` Daniel Colascione
2014-04-02 20:29 ` Eli Zaretskii
2014-04-02 20:59   ` Eli Zaretskii
2014-04-02 22:19     ` Ken Brown
2014-04-03  2:48       ` Eli Zaretskii
2014-04-03 12:50         ` Ken Brown
2014-04-03 19:12           ` Ken Brown

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).