bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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


From: Paul Eggert
Subject: bug#9926: patch: emacs-24.0.91 FTBFS on GNU/Hurd
Date: Tue, 08 Nov 2011 08:44:21 -0800
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:7.0) Gecko/20110927 Thunderbird/7.0

On 11/08/11 04:21, Svante Signell wrote:
> the previous comment by Stefan Monnier says that
> GC_MAKE_GCPROS_NOOPS should be set as the default. So what is wrong
> with patching gnu.h??

I don't see anything wrong with changing Emacs to use GC_MAKE_GCPROS_NOOPS
on GNU/Hurd.  If there's no objection I would like to install the change
suggested by Stefan, which should have the same effect as patching gnu.h
but results in cleaner code internally.  Please see the patch below.

> Anyway, which are the differences/consequences of that part of the code
> in which_symbols being executed compared to not when GC_MARK_STACK is
> unset or set to GC_MAKE_GCPROS_NOOPS?

As Stefan wrote, which_symbols is executed only if you run Emacs under
a debugger and execute it yourself.  And in that case, the new DEADP
macro should do the right thing, regardless of what GC_MARK_STACK is set
or unset to.

=== modified file 'src/ChangeLog'
--- src/ChangeLog       2011-11-08 07:25:56 +0000
+++ src/ChangeLog       2011-11-08 16:36:16 +0000
@@ -1,3 +1,15 @@
+2011-11-08  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Set GC_MARK_STACK to GC_MAKE_GCPROS_NOOPS on GNU/Hurd (Bug#9926).
+       * lisp.h (GC_MARK_STACK): Default to GC_MAKE_GCPROS_NOOPS.
+       * s/cygwin.h, s/darwin.h, s/freebsd.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/ms-w32.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  Chong Yidong  <cyd@gnu.org>
 
        * window.c (Fwindow_left_column, Fwindow_top_line): Doc fix.

=== modified file 'src/lisp.h'
--- src/lisp.h  2011-11-07 17:04:01 +0000
+++ src/lisp.h  2011-11-08 16:29:11 +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 16:29:11 +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 16:29:11 +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 16:29:11 +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 16:29:11 +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 16:29:11 +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/hpux10-20.h'
--- src/s/hpux10-20.h   2011-02-16 01:35:20 +0000
+++ src/s/hpux10-20.h   2011-11-08 16:29:11 +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 16:29:11 +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/ms-w32.h'
--- src/s/ms-w32.h      2011-11-05 16:30:13 +0000
+++ src/s/ms-w32.h      2011-11-08 16:29:11 +0000
@@ -402,5 +402,8 @@
 #define DebPrint(stuff)
 #endif
 
+/* 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/msdos.h'
--- src/s/msdos.h       2011-02-26 12:55:10 +0000
+++ src/s/msdos.h       2011-11-08 16:29:11 +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 16:29:11 +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 16:29:11 +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 16:29:11 +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






reply via email to

[Prev in Thread] Current Thread [Next in Thread]