[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