aboutsummaryrefslogtreecommitdiffstats
path: root/exec (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Correct build on systems without PAGE_MASKPo Lu2023-09-181-1/+1
| | | | | * exec/exec.c (write_load_command) <PAGE_MASK, PAGE_SIZE>: Uniformly define even if !HAVE_GETPAGESIZE.
* Correct crash in child processes under armeabi AndroidPo Lu2023-09-181-8/+14
| | | | | | | * exec/trace.c (process_system_call) <READLINKAT_SYSCALL>: Examine tracee->waiting_for_syscall and avoid rewriting user arguments if a system call is presently being executed by the kernel. Reported by Romário Rios <romariorios@protonmail.com>.
* Avoid stpncpyPaul Eggert2023-08-122-74/+7
| | | | | | | | | | | | | It’s not worth the porting hassle, and as the glibc manual says, “this function is generally a poor choice for processing strings”. * admin/merge-gnulib (GNULIB_MODULES): Remove stpncpy. * exec/configure.ac: Do not check for stpncpy. * exec/exec.c (rpl_stpncpy, stpncpy): Remove this replacement. (exec_0): Properly clear buffer1. Use memcpy instead of stpncpy to add the trailing name. This code is clearly still suboptimal but efficiency is not that important here and I tried to minimize the change. * lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate.
* Merge from origin/emacs-29Eli Zaretskii2023-08-122-2/+1
| | | | | | | | | | | | | | | | 4767f5eaeed Better fix for bug#65156 dd1d8414b33 Fix insert-file-contents with pipes and /dev/stdin 50649a6d1a2 ; * etc/PROBLEMS: Fix wording. f0dda682ffb ; * etc/NEWS.28: Add deletion of levents.el. f4acae842c0 Fix bug#65042 e1874c4e8bf * configure.ac (HAVE_TREE_SITTER): Set NEED_DYNLIB=yes (b... ef8838c3a5f * etc/NEWS: Mention tramp-show-ad-hoc-proxies. 495bee253fc * test/lisp/net/tramp-tests.el (tramp-test42-utf8): Skip ... de1effd73b4 ; Fix last change 7c7966862bc * test/lisp/net/tramp-tests.el (tramp-test10-write-region... 16205e8db65 ; Improve help-echo in package.el a95e7006989 ; Filter packages available for upgrade via menu bar adff72dd1d2 Fix reverting Rmail buffers
* Stop tracking exec/config.h.inPo Lu2023-08-071-358/+0
| | | | | | * .gitignore: Add exec/config.h.in. * exec/config.h.in: Remove from Git.
* Update Android portPo Lu2023-07-201-3/+3
| | | | | | | * exec/trace.c (handle_readlinkat): Adjust commentary to match behavior. * src/android.c (android_get_keysym_name): NULL terminate *name_return.
* ; * exec/loader-mips64el.s (rest_of_exec): Fix typo in comment.Po Lu2023-06-271-1/+1
|
* ; * exec/Makefile.in (clean): Add `exec1'.Po Lu2023-06-191-1/+1
|
* Update Android portPo Lu2023-05-311-30/+63
| | | | | | * exec/exec.c (insert_args): New argument `arg3'. Replace argv[1] with that argument. (exec_0): Pass file name of script to `insert_args'.
* ; * exec/exec.c (exec_0): Use strcpy.Po Lu2023-05-231-1/+1
|
* Remove arbitrary process count limitPo Lu2023-05-201-0/+12
| | | | | | * exec/trace.c (handle_clone_prepare): (handle_clone): When !REENTRANT, use malloc to allocate tracees after running out of static ones.
* Fix execution of /proc/self/exe within child processesPo Lu2023-05-052-39/+154
| | | | | | | | | | | | | | * exec/exec.h (struct exec_tracee): New field `new_child'. Also, make `waiting_for_syscall' a bitfield. * exec/trace.c (PTRACE_GETEVENTMSG): New declaration. (MAX_TRACEES): Bump to 4096. (handle_clone_prepare): New function. (handle_clone): If required, set `new_child' and wait for a ptrace event describing the parent to arrive. (after_fork): Clear new field. (exec_waitpid): Upon a ptrace event describing a clone, create the child's tracee if it doesn't already exist. Otherwise, copy over the parent's cmdline and start running it.
* Update Android portPo Lu2023-05-051-30/+46
| | | | | | | * doc/emacs/android.texi (Android Environment): Document lossage with SIGSTOP. * exec/exec.c (exec_0): Check X_OK on file being opened. Also handle /proc/self/exe.
* Update Android portPo Lu2023-05-051-0/+4
| | | | * exec/trace.c (SYS_SECCOMP): Define when not present.
* Update Android portPo Lu2023-05-041-21/+97
| | | | | | * exec/trace.c (check_signal): New function. (handle_exec, process_system_call): Handle signal-delivery-stop while waiting synchronously for syscall completion.
* Update Android portPo Lu2023-05-033-0/+32
| | | | | | | | * exec/config.h.in: Autoheader. * exec/configure.ac: Check for siginfo_t.si_syscall. * exec/trace.c (exec_waitpid): If SIGSYS is received, and caused by seccomp, drop it should the call number be the invalid system call used by Emacs.
* Update Android portPo Lu2023-05-033-2/+161
| | | | | | | | | * exec/config.h.in: Autoheader. * exec/configure.ac: Use system extensions. (HAVE_PROCESS_VM): Define if process_vm_readv and process_vm_writev are available. * exec/trace.c (read_memory, user_copy): Implement in terms of process_vm if possible.
* Remove extra debugging codePo Lu2023-05-031-4/+4
| | | | | * exec/loader-mipsel.s (__start): Remove extraneous debugging code.
* Update Android portPo Lu2023-05-031-1/+2
| | | | | | * exec/Makefile.in: (.PHONY): Add `bootstrap-clean' and `extraclean'. (bootstrap-clean): New rule.
* Update Android portPo Lu2023-05-025-20/+288
| | | | | | | | | | | | | | * exec/config.h.in (__bool_true_false_are_defined): * exec/configure.ac (REENTRANT): New definition. (READLINKAT_SYSCALL, READLINK_SYSCALL): New defines. Set on all hosts. * exec/exec.c (MIN, MAX): Remove redundant declarations. Move to config.h. (exec_0): Copy name of executable into NAME when !REENTRANT. * exec/exec.h (struct exec_tracee): New struct `exec_file'. * exec/trace.c (remove_tracee, handle_exec, handle_readlinkat) (process_system_call, after_fork): Handle readlinkat system calls.
* Fix ps name in Android subprocessesPo Lu2023-05-027-28/+115
| | | | | | | | | | | | * exec/Makefile.in (.SUFFIXES): Include ., then `srcdir'. * exec/loader-aarch64.s (_start): * exec/loader-armeabi.s (_start): * exec/loader-mips64el.s (__start): * exec/loader-mipsel.s (__start): * exec/loader-x86.s (_start): * exec/loader-x86_64.s (_start): Get basename of opened exec file and make it the command name. Fix envp skipping on x86 and various leaks.
* Port Android port to older Android systemsPo Lu2023-05-023-5/+14
| | | | | | | | | * exec/config.h.in: Autoheader. * exec/configure.ac: Check for declarations of stpcpy and stpncpy. * exec/exec.c (stpcpy, stpncpy): Use replacements if declarations are not present; this happens when a new Android NDK is building for an old version of Android.
* Update Android portPo Lu2023-05-013-5/+109
| | | | | | | | * exec/config.h.in: Update config.h.in. * exec/configure.ac: Check for stpcpy and stpncpy. * exec/exec.c (rpl_stpcpy, rpl_stpncpy): Define replacements when they are not present on the system. (process_program_header): Fill comment.
* Fix cwd relative process execution on AndroidPo Lu2023-05-012-14/+78
| | | | | | | | * exec/exec.c (format_pid): New function. (exec_0): Make cwd relative file names relative to /proc/pid/cwd. * exec/trace.c (handle_exec): Handle EINTR. (process_system_call): Report failure without clobbering x0.
* Fix syscall error reporting on aarch64Po Lu2023-05-011-1/+20
| | | | | | * exec/trace.c (process_system_call): Save and restore x0, x1 and x2 regs after replacing them with an invalid file descriptor.
* Update Android portPo Lu2023-05-016-35/+95
| | | | | | | | | | | | | | | | | | | * Makefile.in (extraclean): Clean in exec as well. * configure.ac: Fix detection of absolute srcdir. Also, pass CFLAGS. * exec/Makefile.in: (.c.o): Add -I. so config.h can be found.:(.s.o): Don't create m4 temporary in srcdir. * exec/config-mips.m4.in (DADDI2, DADDI3): New macros. Define to substitute if as cannot assemble daddi. * exec/configure.ac (user_h): Look for user.h in asm/ as well. Use new user.h. Also look in ptrace.h on arm systems. Check if as supports daddi on mips64. * exec/exec.c (check_interpreter): Fix char signedness bug. * exec/loader-mips64el.s (__start): Use DADDI2 and DADDI3 for two- and 3-operand daddi. * exec/mipsel-user.h: Don't include sgidefs.h. * java/INSTALL: Document that m4 is now required. * src/android.c (android_rewrite_spawn_argv): Add missing NULL.
* Work around system restrictions regarding execPo Lu2023-05-011-0/+6
| | | | | | | | | | | | * doc/emacs/android.texi (Android Environment): Document `android-use-exec-loader'. * exec/exec1.c (main): Set program group of child process. * src/android.c (android_rewrite_spawn_argv): New function. * src/android.h: Update prototypes. * src/androidfns.c (syms_of_androidfns): New variable `android_use_exec_loader'. * src/callproc.c (emacs_spawn): Rewrite the argument vector to use exec1 if necessary.
* Remove exec/configurePo Lu2023-05-011-6940/+0
| | | | | * exec/configure: Remove file. * .gitignore: Add exec/configure.
* Add helper binary `exec1'Po Lu2023-04-3024-0/+15915
* .gitignore: New files. * Makefile.in (mostlyclean_dirs): Add libexec, if its Makefile exists. * autogen.sh (do_git): Autoreconf in exec as well. * configure.ac: Configure libexec on Android. * exec/Makefile.in: * exec/README: * exec/config-mips.m4.in: * exec/config.guess: * exec/config.h.in: * exec/config.sub: * exec/configure: * exec/configure.ac: * exec/deps.mk: * exec/exec.c (MIN, struct exec_open_command) (struct exec_map_command, struct exec_jump_command) (write_open_command, write_load_command, process_interpreter_1) (process_interpreter, process_program_header, insert_args) (exec_0): * exec/exec.h (_EXEC_H_, struct elf_header_32) (struct program_header_32, struct dt_entry_32) (struct elf_header_64, struct program_header_64) (struct dt_entry_64, struct exec_tracee): * exec/exec1.c (main): * exec/install-sh (scriptversion): * exec/loader-aarch64.s (_start): * exec/loader-armeabi.s (_start): * exec/loader-mips64el.s (__start): * exec/loader-mipsel.s (__start): * exec/loader-x86.s (_start): * exec/loader-x86_64.s (_start): * exec/mipsel-user.h (_MIPSEL_USER_H_): * exec/mipsfpu.c (MIPS_ABI_FP_ANY, fpu_reqs, valid_abi_p) (fp_mode_for_abi, cpu_supports_fr0_p, determine_fpu_mode): * exec/mipsfpu.h (_MIPSFPU_H_, FP_FR0): * exec/test.c (print_usage, main): * exec/trace.c (MAX_TRACEES, aarch64_set_regs, read_memory) (user_alloca, user_copy, remove_tracee, handle_clone) (syscall_trap_p, handle_exec, process_system_call, tracing_execve) (after_fork, find_tracee, exec_waitpid, exec_init): New files. * java/Makefile.in (CROSS_EXEC_BINS): Add exec1 and loader. ($(CROSS_EXEC_BINS) &): New target.