diff options
author | Po Lu <[email protected]> | 2025-04-17 09:33:06 +0800 |
---|---|---|
committer | Po Lu <[email protected]> | 2025-04-17 09:33:38 +0800 |
commit | 0fc2fc9a4de3855cf14b6e1f548795831099981b (patch) | |
tree | f05d4c084f127e510d36bda55e6f79b68a97d4e5 | |
parent | c0cb59578b5aeb75b4856dda518d80cd015caa7d (diff) | |
download | emacs-master.tar.gz |
* src/pdumper.c (dump_builtin_symbol_p): Test BARE_SYMBOL_P
\(object) rather than SYMBOLP to avoid depending on the value of
symbols_with_pos_enabled or depositing non-relocated references
to vectorlikes in the dump file. Clarify commentary.
-rw-r--r-- | src/pdumper.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/pdumper.c b/src/pdumper.c index 1deb847..5cd8499 100644 --- a/src/pdumper.c +++ b/src/pdumper.c @@ -727,12 +727,18 @@ emacs_offset (const void *emacs_ptr) return ptrdiff_t_to_dump_off (emacs_ptr_relative); } -/* Return whether OBJECT is a symbol the storage of which is built - into Emacs (and so is invariant across ASLR). */ +/* Return whether OBJECT is a symbol the storage of which is built into + Emacs (and hence is implicitly offset from an address in the Emacs + image). */ + static bool dump_builtin_symbol_p (Lisp_Object object) { - return SYMBOLP (object) && c_symbol_p (XSYMBOL (object)); + /* Symbols with position cannot be dumped, but not returning true for + them avoids producing references to unrelocated Lisp_Objects in + fixup processing or depending on the value of + symbols_with_pos_enabled. */ + return BARE_SYMBOL_P (object) && c_symbol_p (XSYMBOL (object)); } /* Return whether OBJECT has the same bit pattern in all Emacs |