[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#10780: 24.0.93 fails to build with 'Invalid function: "DEAD"'
From: |
Dan Horák |
Subject: |
bug#10780: 24.0.93 fails to build with 'Invalid function: "DEAD"' |
Date: |
Tue, 21 Feb 2012 10:32:19 +0100 |
Paul Eggert píše v Po 20. 02. 2012 v 15:14 -0800:
> On 02/15/2012 02:09 AM, Andreas Schwab wrote:
>
> > What about local variables in registers? They are split between two
> > registers, but mark_stack does not handle that.
>
> True. Teerrroooo. Thanks for diagnosing that.
>
> I pushed the following fix into the trunk. It's needed
> regardless of this particular bug. Dan, can you please
> check whether it indeed fixes the bug for you? Thanks.
yes, this change fixed the issue for me. Thanks to all involved.
>
> Fix crash due to non-contiguous EMACS_INT (Bug#10780).
> * lisp.h (VALBITS): Move definition up, so that USE_LSB_TAG can use it.
> (USE_LSB_TAG): Do not define if UINTPTR_MAX >> VALBITS == 0.
> It's useless in that case, and it can cause problems on hosts
> that allocate halves of EMACS_INT values separately.
> Reported by Dan Horák. Diagnosed by Andreas Schwab in
> <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=10780#30>.
> * mem-limits.h (EXCEEDS_LISP_PTR): Define to 0 on hosts where
> UINTPTR_MAX >> VALBITS == 0. This is required by the above change;
> it avoids undefined behavior on hosts where shifting right by more
> than the word width has undefined behavior.
> === modified file 'src/lisp.h'
> --- src/lisp.h 2012-01-19 07:21:25 +0000
> +++ src/lisp.h 2012-02-20 16:27:49 +0000
> @@ -168,6 +168,10 @@
> #define GCTYPEBITS 3
> #endif
>
> +#ifndef VALBITS
> +#define VALBITS (BITS_PER_EMACS_INT - GCTYPEBITS)
> +#endif
> +
> #ifndef NO_DECL_ALIGN
> # ifndef DECL_ALIGN
> # if HAVE_ATTRIBUTE_ALIGNED
> @@ -191,7 +195,15 @@
> || defined DARWIN_OS || defined __sun)
> /* We also need to be able to specify mult-of-8 alignment on static vars. */
> # if defined DECL_ALIGN
> -# define USE_LSB_TAG
> +/* mark_maybe_object assumes that EMACS_INT values are contiguous,
> + but this is not true on some hosts where EMACS_INT is wider than a
> pointer,
> + as they may allocate the halves of an EMACS_INT separately.
> + On these hosts USE_LSB_TAG is not needed because the top bits of an
> + EMACS_INT are unused, so define USE_LSB_TAG only on hosts where it
> + might be useful. */
> +# if UINTPTR_MAX >> VALBITS != 0
> +# define USE_LSB_TAG
> +# endif
> # endif
> #endif
>
> @@ -309,11 +321,6 @@
> Lisp_Fwd_Kboard_Obj, /* Fwd to a Lisp_Object field of kboards. */
> };
>
> -/* These values are overridden by the m- file on some machines. */
> -#ifndef VALBITS
> -#define VALBITS (BITS_PER_EMACS_INT - GCTYPEBITS)
> -#endif
> -
> #ifdef USE_LISP_UNION_TYPE
>
> #ifndef WORDS_BIGENDIAN
>
> === modified file 'src/mem-limits.h'
> --- src/mem-limits.h 2012-01-19 07:21:25 +0000
> +++ src/mem-limits.h 2012-02-20 22:53:46 +0000
> @@ -34,7 +34,7 @@
> #endif
>
> extern char *start_of_data (void);
> -#if defined USE_LSB_TAG
> +#if defined USE_LSB_TAG || UINTPTR_MAX >> VALBITS == 0
> #define EXCEEDS_LISP_PTR(ptr) 0
> #elif defined DATA_SEG_BITS
> #define EXCEEDS_LISP_PTR(ptr) \
>
>
- bug#10749: 24.0.93; does not compile on Mac OS X 10.4.11/PPC in international/mule-conf, (continued)
- bug#10749: 24.0.93; does not compile on Mac OS X 10.4.11/PPC in international/mule-conf, Peter Dyballa, 2012/02/09
- bug#10749: 24.0.93 fails to build with 'Invalid function: "DEAD"', Paul Eggert, 2012/02/15
- bug#10749: 24.0.93 fails to build with 'Invalid function: "DEAD"', Dan Horák, 2012/02/15
- bug#10780: 24.0.93 fails to build with 'Invalid function: "DEAD"', Paul Eggert, 2012/02/15
- bug#10780: 24.0.93 fails to build with 'Invalid function: "DEAD"', Andreas Schwab, 2012/02/15
- bug#10780: 24.0.93 fails to build with 'Invalid function: "DEAD"', Paul Eggert, 2012/02/20
- bug#10780: 24.0.93 fails to build with 'Invalid function: "DEAD"',
Dan Horák <=
- bug#10749: 24.0.93 fails to build with 'Invalid function: "DEAD"', Paul Eggert, 2012/02/21
- bug#10780: 24.0.93 fails to build with 'Invalid function: "DEAD"', Dan Horák, 2012/02/15