diff options
| author | Po Lu | 2025-03-09 23:02:21 +0800 |
|---|---|---|
| committer | Po Lu | 2025-03-09 23:07:33 +0800 |
| commit | a5f8ce9f1eae29f87fe13adb61bd4e15faa628a2 (patch) | |
| tree | 602dba32bf3efcd7743f0d2df5e73339d98a5b2e /src/eval.c | |
| parent | 57cef07710d91988b6332ad3ed2f5c4b4b371585 (diff) | |
| download | emacs-a5f8ce9f1eae29f87fe13adb61bd4e15faa628a2.tar.gz emacs-a5f8ce9f1eae29f87fe13adb61bd4e15faa628a2.zip | |
Re-port to 32-bit systems without alignment primitives
* configure.ac (ALIGNOF_INT, ALIGNOF_LONG, ALIGNOF_LONG_LONG):
New variables.
(emacs_cv_alignas_unavailable): Define if alignas and structure
alignment primitives are unavailable. In such an environment,
the MSB tagging scheme must be enabled, as must the GNU malloc.
* msdos/sed2v2.inp: Adjust correspondingly.
* src/alloc.c (union emacs_align_type): Remove types which
contain flexible array members. The address of a field
subsequent to an aggregate with flexible array members cannot
validly be taken.
(mark_memory) [!USE_LSB_TAG && !WIDE_EMACS_INT]: Strip type bits
before scanning memory.
* src/emacs.c (main):
* src/eval.c (Fautoload_do_load):
* src/fns.c (Frequire): Rename a number of illogically named
fields.
* src/lisp.h (ALIGNOF_EMACS_INT): Define to the natural
alignment of EMACS_INT.
(IDEAL_GCALIGNMENT): New macro.
(USE_LSB_TAG): Disable if no alignment specifiers are available,
WIDE_EMACS_INT is undefined, and the natural alignment of
EMACS_INT falls short of LSB tagging's requirements.
(gflags): Rename illogically named fields and don't define them
as bitfields, which runs afoul of certain compiler issues.
(will_dump_p, will_bootstrap_p, will_dump_with_pdumper_p)
(dumped_with_pdumper_p): Adjust accordingly.
* src/pdumper.c (VM_SUPPORTED): Define to 0 when !USE_LSB_TAG.
It is better to read dump files into the heap by hand than to be
supplied with an address that is not representable.
(_dump_object_start_pseudovector): Rename to
dump_object_start_pseudovector, to avoid encroaching on reserved
names.
(START_DUMP_PVEC): Adjust correspondingly.
(dump_mmap_contiguous_vm): Preserve errno around failure
cleanup.
(dump_bitset_bit_set_p): Work around certain compiler issues.
(pdumper_load) [!USE_LSB_TAG]: Reject dump file allocations
that are not representable as Lisp_Objects.
Tested on i386-unknown-solaris2.10, sparc-sun-solaris2.10.
Diffstat (limited to 'src/eval.c')
| -rw-r--r-- | src/eval.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/eval.c b/src/eval.c index a514bb4b8f9..5de723cf3bc 100644 --- a/src/eval.c +++ b/src/eval.c | |||
| @@ -2389,7 +2389,7 @@ it defines a macro. */) | |||
| 2389 | { | 2389 | { |
| 2390 | /* Avoid landing here recursively while outputting the | 2390 | /* Avoid landing here recursively while outputting the |
| 2391 | backtrace from the error. */ | 2391 | backtrace from the error. */ |
| 2392 | gflags.will_dump_ = false; | 2392 | gflags.will_dump = false; |
| 2393 | error ("Attempt to autoload %s while preparing to dump", | 2393 | error ("Attempt to autoload %s while preparing to dump", |
| 2394 | SDATA (SYMBOL_NAME (funname))); | 2394 | SDATA (SYMBOL_NAME (funname))); |
| 2395 | } | 2395 | } |