Subject: bug#9926: patch: emacs-24.0.91 FTBFS on GNU/Hurd

From: Paul Eggert <[email-masked]>
Date: Tue, 08 Nov 2011 12:36:31 -0800

On 11/08/11 09:23, Eli Zaretskii wrote:
> I wonder if the above change for ms-w32.h is TRT.

Yes, Stefan wondered the same thing.  I expect the answer is "no".
Here's a revised patch (intended for 24.2).

=== modified file 'src/ChangeLog'
--- src/ChangeLog	2011-11-08 20:15:17 +0000
+++ src/ChangeLog	2011-11-08 20:31:58 +0000
@@ -1,5 +1,17 @@
 2011-11-08  Paul Eggert  <[email-masked]>
 
+	Make GC_MAKE_GCPROS_NOOPS the default (Bug#9926).
+	* lisp.h (GC_MARK_STACK): Default to GC_MAKE_GCPROS_NOOPS.
+	* s/cygwin.h, s/darwin.h, s/freebsd.h, s/gnu.h, s/irix6-5.h, s/msdos.h:
+	* s/netbsd.h, s/sol2-6.h:
+	Remove definition of GC_MARK_STACK, since the default now works.
+	* s/aix4-2.h, s/hpux10-20.h, s/unixware.h:
+	Define GC_MARK_STACK to GC_USE_GCPROS_AS_BEFORE, since that's
+	no longer the default.
+	* s/gnu-linux.h (GC_MARK_STACK): Adjust to change in default.
+
+2011-11-08  Paul Eggert  <[email-masked]>
+
 	* s/gnu.h (GC_MARK_STACK): Define to GC_MAKE_GCPROS_NOOPS (Bug#9926).
 
 2011-11-08  Paul Eggert  <[email-masked]>

=== modified file 'src/lisp.h'
--- src/lisp.h	2011-11-07 17:04:01 +0000
+++ src/lisp.h	2011-11-08 20:31:58 +0000
@@ -2213,7 +2213,7 @@
 #define GC_USE_GCPROS_CHECK_ZOMBIES	3
 
 #ifndef GC_MARK_STACK
-#define GC_MARK_STACK GC_USE_GCPROS_AS_BEFORE
+#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS
 #endif
 
 /* Whether we do the stack marking manually.  */

=== modified file 'src/s/aix4-2.h'
--- src/s/aix4-2.h	2011-07-07 01:32:56 +0000
+++ src/s/aix4-2.h	2011-11-08 20:31:58 +0000
@@ -75,3 +75,7 @@
    Emacs currently calls xrealloc on the results of get_current_dir name,
    to avoid a crash just use the Emacs implementation for that function.  */
 #define BROKEN_GET_CURRENT_DIR_NAME 1
+
+/* Conservative garbage collection has not been tested, so for now
+   play it safe and stick with the old-fashioned way of marking.  */
+#define GC_MARK_STACK GC_USE_GCPROS_AS_BEFORE

=== modified file 'src/s/cygwin.h'
--- src/s/cygwin.h	2011-03-17 05:15:08 +0000
+++ src/s/cygwin.h	2011-11-08 20:31:58 +0000
@@ -85,12 +85,6 @@
    change their controlling terminal */
 #define vfork fork
 
-/* This should work (at least when compiling with gcc).  But I have no way
-   or intention to verify or even test it.  If you encounter a problem with
-   it, feel free to change this setting, but please add a comment here about
-   why it needed to be changed.  */
-#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS
-
 /* Virtual addresses of pure and impure space can vary, as on Windows.  */
 #define VIRT_ADDR_VARIES

=== modified file 'src/s/darwin.h'
--- src/s/darwin.h	2011-08-09 22:13:11 +0000
+++ src/s/darwin.h	2011-11-08 20:31:58 +0000
@@ -145,6 +145,3 @@
    It is already a controlling terminal of subprocess, because we did
    ioctl TIOCSCTTY.  */
 #define DONT_REOPEN_PTY
-
-/* Use the GC_MAKE_GCPROS_NOOPS (see lisp.h) method for marking the stack.  */
-#define GC_MARK_STACK   GC_MAKE_GCPROS_NOOPS

=== modified file 'src/s/freebsd.h'
--- src/s/freebsd.h	2011-02-16 01:35:20 +0000
+++ src/s/freebsd.h	2011-11-08 20:31:58 +0000
@@ -58,6 +58,3 @@
 /* Tell that garbage collector that setjmp is known to save all
    registers relevant for conservative garbage collection in the jmp_buf.  */
 #define GC_SETJMP_WORKS 1
-
-/* Use the GC_MAKE_GCPROS_NOOPS (see lisp.h) method for marking the stack.  */
-#define GC_MARK_STACK 	GC_MAKE_GCPROS_NOOPS

=== modified file 'src/s/gnu-linux.h'
--- src/s/gnu-linux.h	2011-09-09 01:06:52 +0000
+++ src/s/gnu-linux.h	2011-11-08 20:31:58 +0000
@@ -145,7 +145,6 @@
     || defined __arm__ || defined __powerpc__ || defined __amd64__ \
     || defined __ia64__ || defined __sh__
 #define GC_SETJMP_WORKS 1
-#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS
 #ifdef __mc68000__
 #define GC_LISP_OBJECT_ALIGNMENT 2
 #endif
@@ -158,4 +157,6 @@
 		 __builtin_ia64_bsp (), 0);			\
   } while (0)
 #endif
+#else
+#define GC_MARK_STACK GC_USE_GCPROS_AS_BEFORE
 #endif

=== modified file 'src/s/gnu.h'
--- src/s/gnu.h	2011-11-08 20:15:17 +0000
+++ src/s/gnu.h	2011-11-08 20:31:58 +0000
@@ -43,6 +43,3 @@
   ((FILE)->_IO_write_ptr - (FILE)->_IO_write_base)
 #endif /* !_IO_STDIO_H */
 #endif /* emacs */
-
-/* Use the GC_MAKE_GCPROS_NOOPS (see lisp.h) method for marking the stack.  */
-#define GC_MARK_STACK 	GC_MAKE_GCPROS_NOOPS

=== modified file 'src/s/hpux10-20.h'
--- src/s/hpux10-20.h	2011-02-16 01:35:20 +0000
+++ src/s/hpux10-20.h	2011-11-08 20:31:58 +0000
@@ -101,6 +101,10 @@
    on HP-UX.  (You get duplicate symbol errors on linking). */
 #undef _FILE_OFFSET_BITS
 
+/* Conservative garbage collection has not been tested, so for now
+   play it safe and stick with the old-fashioned way of marking.  */
+#define GC_MARK_STACK GC_USE_GCPROS_AS_BEFORE
+
 /* Define VIRT_ADDR_VARIES if the virtual addresses of
    pure and impure space as loaded can vary, and even their
    relative order cannot be relied on.

=== modified file 'src/s/irix6-5.h'
--- src/s/irix6-5.h	2011-07-07 03:24:33 +0000
+++ src/s/irix6-5.h	2011-11-08 20:31:58 +0000
@@ -95,7 +95,6 @@
 
 /* Tested on Irix 6.5.  SCM worked on earlier versions.  */
 #define GC_SETJMP_WORKS 1
-#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS

 /* DATA_SEG_BITS forces extra bits to be or'd in with any pointers which

=== modified file 'src/s/msdos.h'
--- src/s/msdos.h	2011-02-26 12:55:10 +0000
+++ src/s/msdos.h	2011-11-08 20:31:58 +0000
@@ -137,5 +137,3 @@
 /* Tell the garbage collector that setjmp is known to save all
    registers relevant for conservative garbage collection in the jmp_buf.  */
 #define GC_SETJMP_WORKS 1
-#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS
-

=== modified file 'src/s/netbsd.h'
--- src/s/netbsd.h	2011-02-16 01:35:20 +0000
+++ src/s/netbsd.h	2011-11-08 20:31:58 +0000
@@ -38,6 +38,3 @@
 /* Tell that garbage collector that setjmp is known to save all
    registers relevant for conservative garbage collection in the jmp_buf.  */
 #define GC_SETJMP_WORKS 1
-
-/* Use the GC_MAKE_GCPROS_NOOPS (see lisp.h) method.  */
-#define GC_MARK_STACK	GC_MAKE_GCPROS_NOOPS

=== modified file 'src/s/sol2-6.h'
--- src/s/sol2-6.h	2011-04-16 22:06:00 +0000
+++ src/s/sol2-6.h	2011-11-08 20:31:58 +0000
@@ -59,4 +59,3 @@
   }
 
 #define GC_SETJMP_WORKS 1
-#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS

=== modified file 'src/s/unixware.h'
--- src/s/unixware.h	2011-04-16 22:06:00 +0000
+++ src/s/unixware.h	2011-11-08 20:31:58 +0000
@@ -50,3 +50,7 @@
   }
 
 #define	PENDING_OUTPUT_COUNT(FILE) ((FILE)->__ptr - (FILE)->__base)
+
+/* Conservative garbage collection has not been tested, so for now
+   play it safe and stick with the old-fashioned way of marking.  */
+#define GC_MARK_STACK GC_USE_GCPROS_AS_BEFORE