1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-18 17:01:01 -08:00
Commit graph

833 commits

Author SHA1 Message Date
Mattias Engdegård
de45864cf7 Fix lexing of numbers with trailing decimal point and exponent
Numbers with a trailing dot and an exponent were incorrectly read as
integers (with the exponent ignored) instead of the floats they should
be.  For example, 1.e6 was read as the integer 1, not 1000000.0 as
every sane person would agree was meant. (Bug#48678)

Numbers with a trailing dot but no exponent are still read as
integers.

* src/lread.c (string_to_number): Fix float lexing.
* test/src/lread-tests.el (lread-float): Add test.
* doc/lispref/numbers.texi (Float Basics): Clarify syntax.
2021-05-27 14:16:28 +02:00
Glenn Morris
dd031f311f * test/src/emacs-module-tests.el (mod-test-file): Unbreak out-of-tree. 2021-05-10 11:37:40 -07:00
Philipp Stephani
a2842a1172 Don't use symbolic links in the test resource directory.
This doesn't work on Windows.  Instead, use the EMACS_TEST_DIRECTORY
environment variable to find the BPF files.

* test/src/emacs-tests.el (emacs-tests--lib-src): New constant.
(emacs-tests/seccomp/allows-stdout)
(emacs-tests/seccomp/forbids-subprocess)
(emacs-tests/bwrap/allows-stdout): Use it.
2021-05-07 18:36:57 +02:00
Andrea Corallo
94c69eb1d7 Rename comp-debug -> native-comp-debug
* src/comp.c (emit_ctxt_code, syms_of_comp): Rename comp-debug ->
native-comp-debug.
* lisp/emacs-lisp/comp.el (native-comp-debug, comp-ctxt)
(comp-spill-lap-function, comp-run-async-workers): Likewise.
* lisp/emacs-lisp/bytecomp.el (byte-compile-from-buffer): Likewise.
* test/src/comp-tests.el (comp-tests-bootstrap): Likewise.
2021-05-06 17:16:07 +02:00
Andrea Corallo
43f29696ad Rename comp-speed -> native-comp-speed
* lisp/emacs-lisp/bytecomp.el (byte-compile-from-buffer): Rename
comp-speed -> native-comp-speed.
* lisp/emacs-lisp/comp.el (native-comp-speed, comp-ctxt, comp-func,
comp-spill-lap-function, comp-trampoline-compile,
comp-run-async-workers): Likewise.
* src/comp.c (emit_ctxt_code, load_comp_unit, syms_of_comp): Likewise.
* test/src/comp-tests.el (comp-tests-tco, comp-tests-fw-prop-1)
(comp-tests-check-ret-type-spec, comp-tests-pure): Likewise.
2021-05-06 17:16:07 +02:00
Andrea Corallo
40736357b8 Rename feature nativecomp' into native-compile'
* test/src/comp-tests.el : Rename feature `nativecomp' into
	`native-compile'.
	* test/lisp/help-fns-tests.el (help-fns-test-lisp-defun): Likewise.
	* src/comp.c (syms_of_comp): Likewise.
	* lisp/startup.el (normal-top-level): Likewise.
	* lisp/loadup.el: Likewise.
	* lisp/help.el (help-function-arglist): Likewise.
	* lisp/emacs-lisp/package.el (package--native-compile-async)
	(package--delete-directory): Likewise.
	* lisp/emacs-lisp/nadvice.el (advice--add-function): Likewise.
	* lisp/emacs-lisp/comp.el (comp-ensure-native-compiler): Likewise.
	* lisp/emacs-lisp/advice.el (ad-add-advice): Likewise.
2021-05-05 22:27:29 +02:00
Stefan Kangas
233c0af31e ; Fix typos 2021-04-27 18:54:37 +02:00
Andrea Corallo
449045b2a6 Make use of ert-resource-file' ert-resource-directory' in comp-tests
* test/src/comp-resources/comp-test-pure.el: Rename.
	* test/src/comp-resources/comp-test-funcs.el: Likewise.
	* test/src/comp-resources/comp-test-funcs-dyn.el: Likewise.
	* test/src/comp-resources/comp-test-45603.el: Likewise.
	* test/src/comp-tests.el (comp-test-src, comp-test-dyn-src): Use
	`ert-resource-file'.
	(comp-tests-bootstrap): Use ert-resource-directory.
	(comp-tests-45603-1, comp-tests-pure): Use `ert-resource-file'.
2021-04-26 20:01:50 +02:00
Andrea Corallo
9d34fd8b33 * Use expand-file-name' in place of concat' in comp-tests.el
* test/src/comp-tests.el (comp-test-src,
	comp-test-dyn-src) (comp-tests-bootstrap, comp-tests-pure,
	comp-test-src): Use `expand-file-name' in place of `concat'.
2021-04-26 17:28:38 +02:00
Andrea Corallo
244e97d5f8 Move native compiler test data into proper directory (bug#48031)
* test/src/comp-tests-resources/comp-test-45603.el: Rename.
	* test/src/comp-tests-resources/comp-test-funcs-dyn.el: Likewise.
	* test/src/comp-tests-resources/comp-test-funcs.el: Likewise.
	* test/src/comp-tests-resources/comp-test-pure.el: Likewise.
	* test/src/comp-tests.el (comp-test-directory): Update.
2021-04-26 17:28:18 +02:00
Andrea Corallo
d164436b2a * test/src/comp-tests.el: Fix it for non native compiled build (bug#48031). 2021-04-26 16:59:17 +02:00
Glenn Morris
b7c22fab7d ; Add 2021 to copyright years 2021-04-25 17:24:48 -07:00
Andrea Corallo
289000eee7 Merge branch 'feature/native-comp' into into trunk 2021-04-25 20:06:22 +02:00
Andrea Corallo
062e599480 Improve a native compiler test
* test/src/comp-tests.el (comp-test-47868-1): Improve
	testcase.
	* test/src/comp-test-funcs.el (comp-test-47868-3-f)
	(comp-test-47868-4-f): New functions.
2021-04-22 10:02:46 +02:00
Stefan Kangas
71b14f2806 Avoid lowering gc-cons-threshold
* lisp/cedet/semantic/wisent/comp.el (wisent--compile-grammar):
* lisp/international/mule-cmds.el (ucs-names):
* lisp/progmodes/ebrowse.el (ebrowse-read):
* test/src/coding-tests.el (benchmark-decoder): Avoid lowering
gc-cons-treshold.
2021-04-22 04:11:02 +02:00
Andrea Corallo
f842816125 Fix native compiler string hash consing strategy (bug#47868)
* test/src/comp-tests.el (comp-test-47868-1): Add new test.
	* test/src/comp-test-funcs.el (comp-test-47868-1-f)
	(comp-test-47868-2-f): New functions.
	* lisp/emacs-lisp/comp.el (comp-imm-equal-test): Define new hash
	tanble test.
	(comp-data-container): Use it.
	(comp-final, comp-run-async-workers): have comp required before
	reading dumped hashes so that `comp-imm-equal-test' is defined.
2021-04-21 17:36:59 +02:00
Andrea Corallo
b5c76530fa Merge remote-tracking branch 'savannah/master' into native-comp 2021-04-19 18:46:50 +02:00
Stefan Kangas
0a4dc70830 ; Normalize and add missing first and last lines 2021-04-19 12:21:01 +02:00
Philipp Stephani
568ce6826f Attempt to print some debugging information on Seccomp failures.
Try to search the audit log as well as recent core dumps.

* test/src/emacs-tests.el (emacs-tests--seccomp-debug): New helper
function.
(emacs-tests/seccomp/allows-stdout)
(emacs-tests/seccomp/forbids-subprocess)
(emacs-tests/bwrap/allows-stdout): Use it.
2021-04-17 21:08:17 +02:00
Eli Zaretskii
d1559ede54 Add two optional arguments to 'string-width'
* src/character.c (Fstring_width, lisp_string_width): Accept two
optional arguments FROM and TO, to indicate the substring to be
considered.
(Fstring_width): Add caveats in the doc string about display
features ignored by the function.  (Bug#47712)
* src/character.h (lisp_string_width): Update prototype.
* src/editfns.c (styled_format): Adjust call of lisp_string_width
to its changed signature.

* test/src/character-tests.el (character-test-string-width): New
file with tests for 'string-width'.

* doc/lispref/display.texi (Size of Displayed Text): Document
caveats of using 'string-width'.

* etc/NEWS: Announce the change.
2021-04-14 11:47:55 +03:00
Andrea Corallo
b064ddd3f6 Merge remote-tracking branch 'savannah/master' into native-comp 2021-04-13 12:06:23 +02:00
Philipp Stephani
c8d542fd59 Add a variant of the Seccomp filter file that allows 'execve'.
This is useful when starting Emacs with a Seccomp filter enabled,
e.g. using 'bwrap'.

* lib-src/seccomp-filter.c (main): Generate new Seccomp files.

* lib-src/Makefile.in (all)
(seccomp-filter.bpf seccomp-filter.pfc seccomp-filter-exec.bpf
seccomp-filter-exec.pfc): Generate new Seccomp files.

* .gitignore: Ignore new Seccomp files.

* test/src/emacs-tests.el (emacs-tests/bwrap/allows-stdout): New unit
test.
2021-04-11 21:19:09 +02:00
Philipp Stephani
1060289f51 Add a helper binary to create a basic Secure Computing filter.
The binary uses the 'seccomp' helper library.  The library isn't
needed to load the generated Secure Computing filter.

* configure.ac: Check for 'seccomp' header and library.

* lib-src/seccomp-filter.c: New helper binary to generate a generic
Secure Computing filter for GNU/Linux.

* lib-src/Makefile.in (DONT_INSTALL): Add 'seccomp-filter' helper
binary if possible.
(all): Add Secure Computing filter file if possible.
(seccomp-filter$(EXEEXT)): Compile helper binary.
(seccomp-filter.bpf seccomp-filter.pfc): Generate filter files.

* test/src/emacs-tests.el (emacs-tests/seccomp/allows-stdout)
(emacs-tests/seccomp/forbids-subprocess): New unit tests.

* test/Makefile.in (src/emacs-tests.log): Add dependency on the helper
binary.
2021-04-10 21:10:16 +02:00
Philipp Stephani
be8328acf9 Add support for --seccomp command-line option.
When passing this option on GNU/Linux, Emacs installs a Secure
Computing kernel system call filter.  See Bug#45198.

* configure.ac: Check for seccomp header.

* src/emacs.c (usage_message): Document --seccomp option.
(emacs_seccomp): New wrapper for 'seccomp' syscall.
(load_seccomp, maybe_load_seccomp): New helper functions.
(main): Potentially load seccomp filters during startup.
(standard_args): Add --seccomp option.

* lisp/startup.el (command-line): Detect and ignore --seccomp option.

* test/src/emacs-tests.el (emacs-tests/seccomp/absent-file)
(emacs-tests/seccomp/empty-file)
(emacs-tests/seccomp/file-too-large)
(emacs-tests/seccomp/invalid-file-size): New unit tests.
(emacs-tests--with-temp-file): New helper macro.

* etc/NEWS: Document new --seccomp option.
2021-04-10 18:47:26 +02:00
Andrea Corallo
74b58f28ec Merge remote-tracking branch 'savannah/master' into native-comp 2021-04-05 21:00:18 +02:00
Stefan Kangas
4865ded551 Remove redundant #' before lambda in tests
* test/lisp/electric-tests.el (save-electric-modes)
(inhibit-in-mismatched-string-inside-ruby-comments)
(inhibit-in-mismatched-string-inside-c-comments, js-mode-braces)
(js-mode-braces-with-layout)
(js-mode-braces-with-layout-and-indent, autowrapping-1)
(autowrapping-2, autowrapping-3, autowrapping-4, autowrapping-5)
(autowrapping-6, autowrapping-7):
* test/lisp/progmodes/xref-tests.el
(xref--xref-file-name-display-is-relative-to-project-root):
* test/src/thread-tests.el (threads-signal-early)
(threads-signal-main-thread): Remove redundant #' before lambda.
2021-04-04 13:06:33 +02:00
Andrea Corallo
515378434a Merge remote-tracking branch 'savannah/master' into native-comp 2021-03-31 10:48:02 +02:00
Matt Armstrong
c4ab173df3 File unlock errors now issue warnings (Bug#46397)
The primary idea is to allow `kill-buffer' and `kill-emacs' to
complete even if Emacs has trouble unlocking the buffer's file.

* lisp/userlock.el (userlock--handle-unlock-error): New function, call
`display-error'.
* src/filelock.c (unlock_file_body): New function, do what
'unlock_file' used to.
(unlock_file_handle_error): New function, call
`userlock--handle-unlock-error' with the captured error.
(unlock_file): Handle `file-error' conditions by calling the handler
defined above.
* test/src/filelock-tests.el (filelock-tests-kill-buffer-spoiled):
(filelock-tests-unlock-spoiled): Modify to test new behavior.
2021-03-27 12:17:31 +03:00
Matt Armstrong
a443a379c5 Add test coverage for src/filelock.c (Bug#46397)
* test/src/filelock-tests.el: New file.
2021-03-27 12:16:03 +03:00
Spencer Baugh
c24766c4d5 Assert not local-variable-p after setq in let_default binding
Breaking this is a likely way to break this test, so this saves a bit
of time in debugging.

* test/src/data-tests.el (data-tests--let-buffer-local):
Add assertion to test.
2021-03-25 12:39:26 -04:00
Spencer Baugh
b29bf8181f Add a test for let-binding unwinding
Bindings in other buffers are not un-set when we unwind a let-binding
which set the default value.  There doesn't seem to be an existing
test which covers this, so here's one.

* test/src/data-tests.el (data-tests--let-buffer-local-no-unwind-other-buffers):
  Add test for let-binding unwinding behavior
2021-03-25 12:38:50 -04:00
Andrea Corallo
c6c7b30e4b Merge remote-tracking branch 'savannah/master' into native-comp 2021-03-25 16:29:07 +01:00
Stefan Kangas
cb5d1fe1aa Remove unnecessary requires of rx
* lisp/cedet/semantic/wisent/python.el (rx):
* test/src/process-tests.el (rx): Remove unnecessary requires.
2021-03-22 01:06:32 +01:00
Andrea Corallo
6ca6c71cd0 Merge remote-tracking branch 'savannah/master' into native-comp 2021-03-19 15:28:00 +01:00
Stefan Kangas
0a305dffb8 Fix a warning due to not preloading facemenu.el
* test/src/undo-tests.el (facemenu): Require.
2021-03-19 02:12:01 +01:00
Lars Ingebrigtsen
869b3efe1e Fix breaking undo-test 2021-03-18 09:22:28 +01:00
Andrea Corallo
5e4ec4d3c9 Fix some entry in `comp-known-type-specifiers' (bug#46847)
* lisp/emacs-lisp/comp.el (comp-known-type-specifiers): Some
	fix.
	* test/src/comp-tests.el (comp-tests-46670-1): Update test.
2021-03-14 22:05:02 +01:00
Andrea Corallo
7672b15c27 * test/src/comp-test-funcs.el (comp-test-46670-1-f): Remove a warning. 2021-03-09 12:06:28 +01:00
Andrea Corallo
43b0df62cd Merge commit '9cbdf20316' into native-comp 2021-03-09 10:03:47 +01:00
Andrea Corallo
c60f2f458a Fix `comp-cstr-intersection-no-hashcons' for negated result cstr
* lisp/emacs-lisp/comp-cstr.el
	(comp-cstr-intersection-no-hashcons): When negated and
	necessary relax dst to t.
	* test/src/comp-tests.el (comp-tests-type-spec-tests): Add a test.
2021-03-06 23:17:14 +01:00
Andrea Corallo
05259c4a23 Fix `=' propagation to handle -0.0 0.0 case
* lisp/emacs-lisp/comp-cstr.el
	(comp-cstr-intersection-homogeneous): Fix indent + use `memql'.
	(comp-cstr-=): Handle 0.0 -0.0 idiosyncrasy
	* test/src/comp-tests.el (comp-tests-type-spec-tests): Add two
	tests and fix enumeration.
2021-03-06 20:38:00 +01:00
Stefan Kangas
106e6f48bf Add some new tests for keymap.c
* test/src/keymap-tests.el (keymap-define-key/undefined)
(keymap-define-key/keyboard-macro, keymap-define-key/lambda)
(keymap-define-key/keymap, keymap-define-key/menu-item)
(keymap-lookup-key/list-of-keymaps, keymap-lookup-key/too-long):
New tests.
(keymap-lookup-key): Extend test slightly.
2021-03-06 04:10:45 +01:00
Pip Cet
43b40bc880 Don't call _setjmp through a function pointer (Bug#46824)
* src/comp.c (helper_link_table): Don't include SETJMP except on Windows.
(emit_setjmp): Don't use function pointers except on Windows.
(declare_runtime_imported_funcs): Don't import SETJMP at runtime.
(ABI_VERSION): Bump.
* test/src/comp-tests.el (46824-1): New test.
* test/src/comp-test-funcs.el (comp-test-46824-1-f): New function.
2021-03-03 20:36:16 +01:00
Andrea Corallo
0c5ba41b72 Fix two compiler ICEs dealing with nan and infinity
* lisp/emacs-lisp/comp-cstr.el (comp-cstr-=): Don't crash when
	truncate fails.
	* test/src/comp-test-funcs.el (comp-test-=-nan): Add two functions
	to be compiled.
2021-03-03 20:36:12 +01:00
Andrea Corallo
8c7228e8cd Fix = propagation semantic for constrained inputs
* lisp/emacs-lisp/comp-cstr.el (comp-cstr): Synthesize
	`comp-cstr-shallow-copy'.
	(comp-cstr-=): Relax inputs before intersecting them.
	* test/src/comp-tests.el (comp-tests-type-spec-tests): Add three
	tests.
2021-03-02 14:36:09 +01:00
Andrea Corallo
3d014e1bf4 Fix eql' equal' propagation of non hash consed values (bug#46843)
Extend assumes allowing the following form:

(assume dst (and-nhc src1 src2))

`and-nhc' assume operator allow for constraining correctly
intersections where non hash consed values are not propagated as
values but rather promoted to their types.

	* lisp/emacs-lisp/comp-cstr.el
	(comp-cstr-intersection-no-hashcons): New function.
	* lisp/emacs-lisp/comp.el (comp-emit-assume): Logic update to emit
	`and-nhc' operator (implemented in fwprop by
	`comp-cstr-intersection-no-hashcons').
	(comp-add-cond-cstrs): Map `eq' to `and' assume operator and
	`equal' `eql' into `and-nhc'.
	(comp-fwprop-insn): Update to handle `and-nhc'.
	* test/src/comp-tests.el (comp-tests-type-spec-tests): Add two
	tests covering `eql' and `equal' propagation of non hash consed
	values.
2021-03-01 18:09:40 +01:00
Andrea Corallo
5bc08559e8 Don't treat '=' as simple equality emitting constraints (bug#46812)
Extend assumes allowing the following form

(assume dst (= src1 src2))

to caputure '=' semanting during fwprop handling float integer
conversions.

	* lisp/emacs-lisp/comp.el (comp-equality-fun-p): Don't treat '=' as
	simple equality.
	(comp-arithm-cmp-fun-p, comp-negate-arithm-cmp-fun)
	(comp-reverse-arithm-fun): Rename and add '=' '!='.
	(comp-emit-assume, comp-add-cond-cstrs, comp-fwprop-insn): Update
	for new function nameing and to handle '='.
	* lisp/emacs-lisp/comp-cstr.el (comp-cstr-=): New function.
	* test/src/comp-tests.el (comp-tests-type-spec-tests): Add a bunch
	of '=' specific tests.
2021-02-28 23:30:03 +01:00
Andrea Corallo
2acc46b55b Migrate and rename a bunch of functions from comp.el to comp-cstr.el
* lisp/emacs-lisp/comp-cstr.el (comp-cstr-imm-vld-p)
	(comp-cstr-imm, comp-cstr-fixnum-p, comp-cstr-symbol-p)
	(comp-cstr-cons-p): Move and rename from 'comp.el'.
	* lisp/emacs-lisp/comp.el (comp-mvar-type-hint-match-p)
	(make-comp-mvar, comp-emit-assume, comp-fwprop-prologue)
	(comp-function-foldable-p, comp-function-call-maybe-fold)
	(comp-fwprop-call, comp-fwprop-insn, comp-call-optim-func)
	(comp-compute-function-type): Update for renamed functions.
	* src/comp.c (emit_mvar_rval): Likewise.
	* test/src/comp-tests.el (comp-tests-mentioned-p-1)
	(comp-tests-cond-rw-checker-val): Likewise.
2021-02-28 23:29:49 +01:00
Andrea Corallo
5c922cc3a4 Merge remote-tracking branch 'savannah/master' into native-comp 2021-02-26 19:54:59 +01:00
Andrea Corallo
bddd7a2d13 Do not emit assumptions referencing clobbered mvars (bug#46670)
* lisp/emacs-lisp/comp.el (comp-func): Add `vframe-size' slot.
	(comp-new-frame): Add `vsize' parameter.
	(comp-limplify-top-level, comp-limplify-function): Update for new
	`comp-new-frame'.
	(comp-maybe-add-vmvar): New function.
	(comp-add-cond-cstrs): Logic update to emit assumptions not
	referencing clobbered variables.
	(comp-place-phis, comp-ssa, comp-ssa-rename-insn)
	(comp-ssa-rename): Update rename logic to rename also negative
	slots.
	(comp-fwprop-insn): Update to handle `(assume mvar mvar)' form.
	* test/src/comp-tests.el (46670-1): Add testcase.
	* test/src/comp-test-funcs.el (comp-test-46670-1-f)
	(comp-test-46670-2-f): New functions.
2021-02-23 23:19:36 +01:00