diff options
| author | Po Lu | 2023-05-02 20:45:57 +0800 |
|---|---|---|
| committer | Po Lu | 2023-05-02 20:45:57 +0800 |
| commit | c47716f95b8fda9438047d2683a415a65c18ecbd (patch) | |
| tree | 947c45293556f41ce02426889890b3442f2b7b36 /exec/configure.ac | |
| parent | f4512cca0b996e5343ebe57511f45a29f64c4a8e (diff) | |
| download | emacs-c47716f95b8fda9438047d2683a415a65c18ecbd.tar.gz emacs-c47716f95b8fda9438047d2683a415a65c18ecbd.zip | |
Update Android port
* 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.
Diffstat (limited to 'exec/configure.ac')
| -rw-r--r-- | exec/configure.ac | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/exec/configure.ac b/exec/configure.ac index f3eef60173c..b948e184896 100644 --- a/exec/configure.ac +++ b/exec/configure.ac | |||
| @@ -42,6 +42,11 @@ General Public License for more details. | |||
| 42 | You should have received a copy of the GNU General Public License | 42 | You should have received a copy of the GNU General Public License |
| 43 | along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */]) | 43 | along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */]) |
| 44 | 44 | ||
| 45 | AC_ARG_WITH([reentrancy], | ||
| 46 | [AS_HELP_STRING([--with-reentrancy], | ||
| 47 | [Generate library which can be used within a signal handler.])], | ||
| 48 | [AC_DEFINE([REENTRANT], [1])]) | ||
| 49 | |||
| 45 | AC_PROG_CC | 50 | AC_PROG_CC |
| 46 | AC_PROG_CPP | 51 | AC_PROG_CPP |
| 47 | AC_PROG_INSTALL | 52 | AC_PROG_INSTALL |
| @@ -56,6 +61,7 @@ AC_TYPE_PID_T | |||
| 56 | AC_HEADER_STDBOOL | 61 | AC_HEADER_STDBOOL |
| 57 | AC_CHECK_FUNCS([getpagesize stpcpy stpncpy]) | 62 | AC_CHECK_FUNCS([getpagesize stpcpy stpncpy]) |
| 58 | AC_CHECK_DECLS([stpcpy, stpncpy]) | 63 | AC_CHECK_DECLS([stpcpy, stpncpy]) |
| 64 | AC_CHECK_HEADERS([sys/param.h]) dnl for MIN and MAX | ||
| 59 | 65 | ||
| 60 | AH_BOTTOM([ | 66 | AH_BOTTOM([ |
| 61 | #ifdef HAVE_STDBOOL_H | 67 | #ifdef HAVE_STDBOOL_H |
| @@ -73,6 +79,18 @@ typedef bool _Bool; | |||
| 73 | # define true 1 | 79 | # define true 1 |
| 74 | # define __bool_true_false_are_defined 1 | 80 | # define __bool_true_false_are_defined 1 |
| 75 | #endif | 81 | #endif |
| 82 | |||
| 83 | #ifdef HAVE_SYS_PARAM_H | ||
| 84 | #include <sys/param.h> | ||
| 85 | #endif /* HAVE_SYS_PARAM_H */ | ||
| 86 | |||
| 87 | #ifndef MAX | ||
| 88 | #define MAX(a, b) ((a) > (b) ? (a) : (b)) | ||
| 89 | #endif /* MAX */ | ||
| 90 | |||
| 91 | #ifndef MIN | ||
| 92 | #define MIN(a, b) ((a) < (b) ? (a) : (b)) | ||
| 93 | #endif /* MIN */ | ||
| 76 | ]) | 94 | ]) |
| 77 | 95 | ||
| 78 | AC_C_BIGENDIAN | 96 | AC_C_BIGENDIAN |
| @@ -83,6 +101,8 @@ AH_TEMPLATE([USER_REGS_STRUCT], [Define to structure holding user registers.]) | |||
| 83 | AH_TEMPLATE([SYSCALL_NUM_REG], [Define to register holding the system call number.]) | 101 | AH_TEMPLATE([SYSCALL_NUM_REG], [Define to register holding the system call number.]) |
| 84 | AH_TEMPLATE([SYSCALL_ARG_REG], [Define to register holding arg0 to system calls.]) | 102 | AH_TEMPLATE([SYSCALL_ARG_REG], [Define to register holding arg0 to system calls.]) |
| 85 | AH_TEMPLATE([SYSCALL_ARG1_REG], [Define to register holding arg1 to system calls.]) | 103 | AH_TEMPLATE([SYSCALL_ARG1_REG], [Define to register holding arg1 to system calls.]) |
| 104 | AH_TEMPLATE([SYSCALL_ARG2_REG], [Define to register holding arg2 to system calls.]) | ||
| 105 | AH_TEMPLATE([SYSCALL_ARG3_REG], [Define to register holding arg3 to system calls.]) | ||
| 86 | AH_TEMPLATE([SYSCALL_RET_REG], [Define to register holding value of system calls.]) | 106 | AH_TEMPLATE([SYSCALL_RET_REG], [Define to register holding value of system calls.]) |
| 87 | AH_TEMPLATE([STACK_POINTER], [Define to register holding the stack pointer.]) | 107 | AH_TEMPLATE([STACK_POINTER], [Define to register holding the stack pointer.]) |
| 88 | AH_TEMPLATE([EXEC_SYSCALL], [Define to number of the `exec' system call.]) | 108 | AH_TEMPLATE([EXEC_SYSCALL], [Define to number of the `exec' system call.]) |
| @@ -94,6 +114,9 @@ AH_TEMPLATE([EXECUTABLE_BASE], [Virtual address for loading PIC executables]) | |||
| 94 | AH_TEMPLATE([INTERPRETER_BASE], [Virtual address for loading PIC interpreters]) | 114 | AH_TEMPLATE([INTERPRETER_BASE], [Virtual address for loading PIC interpreters]) |
| 95 | AH_TEMPLATE([CLONE_SYSCALL], [Define to number of the `clone' system call.]) | 115 | AH_TEMPLATE([CLONE_SYSCALL], [Define to number of the `clone' system call.]) |
| 96 | AH_TEMPLATE([CLONE3_SYSCALL], [Define to number of the `clone3' system call.]) | 116 | AH_TEMPLATE([CLONE3_SYSCALL], [Define to number of the `clone3' system call.]) |
| 117 | AH_TEMPLATE([READLINK_SYSCALL], [Define to number of the `readlink' system call.]) | ||
| 118 | AH_TEMPLATE([READLINKAT_SYSCALL], [Define to number of the `readlinkat' system call.]) | ||
| 119 | AH_TEMPLATE([REENTRANT], [Define to 1 if the library is used within a signal handler.]) | ||
| 97 | 120 | ||
| 98 | AC_CANONICAL_HOST | 121 | AC_CANONICAL_HOST |
| 99 | 122 | ||
| @@ -206,6 +229,8 @@ AS_CASE([$host], [x86_64-*linux*], | |||
| 206 | AC_DEFINE([SYSCALL_RET_REG], [rax]) | 229 | AC_DEFINE([SYSCALL_RET_REG], [rax]) |
| 207 | AC_DEFINE([SYSCALL_ARG_REG], [rdi]) | 230 | AC_DEFINE([SYSCALL_ARG_REG], [rdi]) |
| 208 | AC_DEFINE([SYSCALL_ARG1_REG], [rsi]) | 231 | AC_DEFINE([SYSCALL_ARG1_REG], [rsi]) |
| 232 | AC_DEFINE([SYSCALL_ARG2_REG], [rdx]) | ||
| 233 | AC_DEFINE([SYSCALL_ARG3_REG], [r10]) | ||
| 209 | AC_DEFINE([STACK_POINTER], [rsp]) | 234 | AC_DEFINE([STACK_POINTER], [rsp]) |
| 210 | AC_DEFINE([EXEC_SYSCALL], [__NR_execve]) | 235 | AC_DEFINE([EXEC_SYSCALL], [__NR_execve]) |
| 211 | AC_DEFINE([USER_WORD], [uintptr_t]) | 236 | AC_DEFINE([USER_WORD], [uintptr_t]) |
| @@ -215,6 +240,8 @@ AS_CASE([$host], [x86_64-*linux*], | |||
| 215 | AC_DEFINE([INTERPRETER_BASE], [0x600000000000]) | 240 | AC_DEFINE([INTERPRETER_BASE], [0x600000000000]) |
| 216 | AC_DEFINE([STACK_GROWS_DOWNWARDS], [1]) | 241 | AC_DEFINE([STACK_GROWS_DOWNWARDS], [1]) |
| 217 | AC_DEFINE([CLONE_SYSCALL], [__NR_clone]) | 242 | AC_DEFINE([CLONE_SYSCALL], [__NR_clone]) |
| 243 | AC_DEFINE([READLINK_SYSCALL], [__NR_readlink]) | ||
| 244 | AC_DEFINE([READLINKAT_SYSCALL], [__NR_readlinkat]) | ||
| 218 | exec_CHECK_LINUX_CLONE3 | 245 | exec_CHECK_LINUX_CLONE3 |
| 219 | # Make sure the loader doesn't conflict with other position | 246 | # Make sure the loader doesn't conflict with other position |
| 220 | # dependent code. | 247 | # dependent code. |
| @@ -232,6 +259,8 @@ AS_CASE([$host], [x86_64-*linux*], | |||
| 232 | AC_DEFINE([SYSCALL_RET_REG], [eax]) | 259 | AC_DEFINE([SYSCALL_RET_REG], [eax]) |
| 233 | AC_DEFINE([SYSCALL_ARG_REG], [ebx]) | 260 | AC_DEFINE([SYSCALL_ARG_REG], [ebx]) |
| 234 | AC_DEFINE([SYSCALL_ARG1_REG], [ecx]) | 261 | AC_DEFINE([SYSCALL_ARG1_REG], [ecx]) |
| 262 | AC_DEFINE([SYSCALL_ARG2_REG], [edx]) | ||
| 263 | AC_DEFINE([SYSCALL_ARG3_REG], [esi]) | ||
| 235 | AC_DEFINE([STACK_POINTER], [esp]) | 264 | AC_DEFINE([STACK_POINTER], [esp]) |
| 236 | AC_DEFINE([EXEC_SYSCALL], [__NR_execve]) | 265 | AC_DEFINE([EXEC_SYSCALL], [__NR_execve]) |
| 237 | AC_DEFINE([USER_WORD], [uintptr_t]) | 266 | AC_DEFINE([USER_WORD], [uintptr_t]) |
| @@ -239,6 +268,8 @@ AS_CASE([$host], [x86_64-*linux*], | |||
| 239 | AC_DEFINE([INTERPRETER_BASE], [0xaf000000]) | 268 | AC_DEFINE([INTERPRETER_BASE], [0xaf000000]) |
| 240 | AC_DEFINE([STACK_GROWS_DOWNWARDS], [1]) | 269 | AC_DEFINE([STACK_GROWS_DOWNWARDS], [1]) |
| 241 | AC_DEFINE([CLONE_SYSCALL], [__NR_clone]) | 270 | AC_DEFINE([CLONE_SYSCALL], [__NR_clone]) |
| 271 | AC_DEFINE([READLINK_SYSCALL], [__NR_readlink]) | ||
| 272 | AC_DEFINE([READLINKAT_SYSCALL], [__NR_readlinkat]) | ||
| 242 | exec_CHECK_LINUX_CLONE3 | 273 | exec_CHECK_LINUX_CLONE3 |
| 243 | # Make sure the loader doesn't conflict with other position | 274 | # Make sure the loader doesn't conflict with other position |
| 244 | # dependent code. | 275 | # dependent code. |
| @@ -256,6 +287,8 @@ AS_CASE([$host], [x86_64-*linux*], | |||
| 256 | AC_DEFINE([SYSCALL_RET_REG], [[regs[0]]]) | 287 | AC_DEFINE([SYSCALL_RET_REG], [[regs[0]]]) |
| 257 | AC_DEFINE([SYSCALL_ARG_REG], [[regs[0]]]) | 288 | AC_DEFINE([SYSCALL_ARG_REG], [[regs[0]]]) |
| 258 | AC_DEFINE([SYSCALL_ARG1_REG], [[regs[1]]]) | 289 | AC_DEFINE([SYSCALL_ARG1_REG], [[regs[1]]]) |
| 290 | AC_DEFINE([SYSCALL_ARG2_REG], [[regs[2]]]) | ||
| 291 | AC_DEFINE([SYSCALL_ARG3_REG], [[regs[3]]]) | ||
| 259 | AC_DEFINE([STACK_POINTER], [sp]) | 292 | AC_DEFINE([STACK_POINTER], [sp]) |
| 260 | AC_DEFINE([EXEC_SYSCALL], [__NR_execve]) | 293 | AC_DEFINE([EXEC_SYSCALL], [__NR_execve]) |
| 261 | AC_DEFINE([USER_WORD], [uintptr_t]) | 294 | AC_DEFINE([USER_WORD], [uintptr_t]) |
| @@ -264,6 +297,8 @@ AS_CASE([$host], [x86_64-*linux*], | |||
| 264 | AC_DEFINE([INTERPRETER_BASE], [0x3f00000000]) | 297 | AC_DEFINE([INTERPRETER_BASE], [0x3f00000000]) |
| 265 | AC_DEFINE([STACK_GROWS_DOWNWARDS], [1]) | 298 | AC_DEFINE([STACK_GROWS_DOWNWARDS], [1]) |
| 266 | AC_DEFINE([CLONE_SYSCALL], [__NR_clone]) | 299 | AC_DEFINE([CLONE_SYSCALL], [__NR_clone]) |
| 300 | # Note that aarch64 has no `readlink'. | ||
| 301 | AC_DEFINE([READLINKAT_SYSCALL], [__NR_readlinkat]) | ||
| 267 | exec_CHECK_LINUX_CLONE3 | 302 | exec_CHECK_LINUX_CLONE3 |
| 268 | # Make sure the loader doesn't conflict with other position | 303 | # Make sure the loader doesn't conflict with other position |
| 269 | # dependent code. ARM places rather significant restrictions on | 304 | # dependent code. ARM places rather significant restrictions on |
| @@ -282,6 +317,8 @@ AS_CASE([$host], [x86_64-*linux*], | |||
| 282 | AC_DEFINE([SYSCALL_RET_REG], [[uregs[0]]]) | 317 | AC_DEFINE([SYSCALL_RET_REG], [[uregs[0]]]) |
| 283 | AC_DEFINE([SYSCALL_ARG_REG], [[uregs[0]]]) | 318 | AC_DEFINE([SYSCALL_ARG_REG], [[uregs[0]]]) |
| 284 | AC_DEFINE([SYSCALL_ARG1_REG], [[uregs[1]]]) | 319 | AC_DEFINE([SYSCALL_ARG1_REG], [[uregs[1]]]) |
| 320 | AC_DEFINE([SYSCALL_ARG2_REG], [[uregs[2]]]) | ||
| 321 | AC_DEFINE([SYSCALL_ARG3_REG], [[uregs[3]]]) | ||
| 285 | AC_DEFINE([STACK_POINTER], [[uregs[13]]]) | 322 | AC_DEFINE([STACK_POINTER], [[uregs[13]]]) |
| 286 | AC_DEFINE([EXEC_SYSCALL], [__NR_execve]) | 323 | AC_DEFINE([EXEC_SYSCALL], [__NR_execve]) |
| 287 | AC_DEFINE([USER_WORD], [uintptr_t]) | 324 | AC_DEFINE([USER_WORD], [uintptr_t]) |
| @@ -289,6 +326,8 @@ AS_CASE([$host], [x86_64-*linux*], | |||
| 289 | AC_DEFINE([INTERPRETER_BASE], [0x1f000000]) | 326 | AC_DEFINE([INTERPRETER_BASE], [0x1f000000]) |
| 290 | AC_DEFINE([STACK_GROWS_DOWNWARDS], [1]) | 327 | AC_DEFINE([STACK_GROWS_DOWNWARDS], [1]) |
| 291 | AC_DEFINE([CLONE_SYSCALL], [__NR_clone]) | 328 | AC_DEFINE([CLONE_SYSCALL], [__NR_clone]) |
| 329 | AC_DEFINE([READLINK_SYSCALL], [__NR_readlink]) | ||
| 330 | AC_DEFINE([READLINKAT_SYSCALL], [__NR_readlinkat]) | ||
| 292 | exec_CHECK_LINUX_CLONE3 | 331 | exec_CHECK_LINUX_CLONE3 |
| 293 | LOADERFLAGS="$LOADERFLAGS $LDPREFIX-Ttext=0x20000000" | 332 | LOADERFLAGS="$LOADERFLAGS $LDPREFIX-Ttext=0x20000000" |
| 294 | exec_loader=loader-armeabi.s], | 333 | exec_loader=loader-armeabi.s], |
| @@ -300,6 +339,8 @@ AS_CASE([$host], [x86_64-*linux*], | |||
| 300 | AC_DEFINE([SYSCALL_RET_REG], [[uregs[0]]]) | 339 | AC_DEFINE([SYSCALL_RET_REG], [[uregs[0]]]) |
| 301 | AC_DEFINE([SYSCALL_ARG_REG], [[uregs[0]]]) | 340 | AC_DEFINE([SYSCALL_ARG_REG], [[uregs[0]]]) |
| 302 | AC_DEFINE([SYSCALL_ARG1_REG], [[uregs[1]]]) | 341 | AC_DEFINE([SYSCALL_ARG1_REG], [[uregs[1]]]) |
| 342 | AC_DEFINE([SYSCALL_ARG2_REG], [[uregs[2]]]) | ||
| 343 | AC_DEFINE([SYSCALL_ARG3_REG], [[uregs[3]]]) | ||
| 303 | AC_DEFINE([STACK_POINTER], [[uregs[13]]]) | 344 | AC_DEFINE([STACK_POINTER], [[uregs[13]]]) |
| 304 | AC_DEFINE([EXEC_SYSCALL], [__NR_execve]) | 345 | AC_DEFINE([EXEC_SYSCALL], [__NR_execve]) |
| 305 | AC_DEFINE([USER_WORD], [uintptr_t]) | 346 | AC_DEFINE([USER_WORD], [uintptr_t]) |
| @@ -307,6 +348,8 @@ AS_CASE([$host], [x86_64-*linux*], | |||
| 307 | AC_DEFINE([INTERPRETER_BASE], [0x1f000000]) | 348 | AC_DEFINE([INTERPRETER_BASE], [0x1f000000]) |
| 308 | AC_DEFINE([STACK_GROWS_DOWNWARDS], [1]) | 349 | AC_DEFINE([STACK_GROWS_DOWNWARDS], [1]) |
| 309 | AC_DEFINE([CLONE_SYSCALL], [__NR_clone]) | 350 | AC_DEFINE([CLONE_SYSCALL], [__NR_clone]) |
| 351 | AC_DEFINE([READLINK_SYSCALL], [__NR_readlink]) | ||
| 352 | AC_DEFINE([READLINKAT_SYSCALL], [__NR_readlinkat]) | ||
| 310 | exec_CHECK_LINUX_CLONE3 | 353 | exec_CHECK_LINUX_CLONE3 |
| 311 | LOADERFLAGS="$LOADERFLAGS $LDPREFIX-Ttext=0x20000000" | 354 | LOADERFLAGS="$LOADERFLAGS $LDPREFIX-Ttext=0x20000000" |
| 312 | exec_loader=loader-armeabi.s], | 355 | exec_loader=loader-armeabi.s], |
| @@ -324,6 +367,8 @@ AS_CASE([$host], [x86_64-*linux*], | |||
| 324 | AC_DEFINE([SYSCALL_RET_REG], [[gregs[4]]]) # a0 | 367 | AC_DEFINE([SYSCALL_RET_REG], [[gregs[4]]]) # a0 |
| 325 | AC_DEFINE([SYSCALL_ARG_REG], [[gregs[4]]]) # a0 | 368 | AC_DEFINE([SYSCALL_ARG_REG], [[gregs[4]]]) # a0 |
| 326 | AC_DEFINE([SYSCALL_ARG1_REG], [[gregs[5]]]) # a1 | 369 | AC_DEFINE([SYSCALL_ARG1_REG], [[gregs[5]]]) # a1 |
| 370 | AC_DEFINE([SYSCALL_ARG2_REG], [[gregs[4]]]) # a2 | ||
| 371 | AC_DEFINE([SYSCALL_ARG3_REG], [[gregs[5]]]) # a3 | ||
| 327 | AC_DEFINE([STACK_POINTER], [[gregs[29]]]) # sp | 372 | AC_DEFINE([STACK_POINTER], [[gregs[29]]]) # sp |
| 328 | AC_DEFINE([EXEC_SYSCALL], [__NR_execve]) | 373 | AC_DEFINE([EXEC_SYSCALL], [__NR_execve]) |
| 329 | AC_DEFINE([USER_WORD], [uintptr_t]) | 374 | AC_DEFINE([USER_WORD], [uintptr_t]) |
| @@ -331,6 +376,8 @@ AS_CASE([$host], [x86_64-*linux*], | |||
| 331 | AC_DEFINE([INTERPRETER_BASE], [0x1f000000]) | 376 | AC_DEFINE([INTERPRETER_BASE], [0x1f000000]) |
| 332 | AC_DEFINE([STACK_GROWS_DOWNWARDS], [1]) | 377 | AC_DEFINE([STACK_GROWS_DOWNWARDS], [1]) |
| 333 | AC_DEFINE([CLONE_SYSCALL], [__NR_clone]) | 378 | AC_DEFINE([CLONE_SYSCALL], [__NR_clone]) |
| 379 | AC_DEFINE([READLINK_SYSCALL], [__NR_readlink]) | ||
| 380 | AC_DEFINE([READLINKAT_SYSCALL], [__NR_readlinkat]) | ||
| 334 | AC_CHECK_DECL([_MIPS_SIM], [exec_CHECK_MIPS_NABI], | 381 | AC_CHECK_DECL([_MIPS_SIM], [exec_CHECK_MIPS_NABI], |
| 335 | [AC_MSG_ERROR([_MIPS_SIM could not be determined]), | 382 | [AC_MSG_ERROR([_MIPS_SIM could not be determined]), |
| 336 | [[ | 383 | [[ |
| @@ -347,6 +394,8 @@ AS_CASE([$host], [x86_64-*linux*], | |||
| 347 | AC_DEFINE([SYSCALL_RET_REG], [[gregs[4]]]) # a0 | 394 | AC_DEFINE([SYSCALL_RET_REG], [[gregs[4]]]) # a0 |
| 348 | AC_DEFINE([SYSCALL_ARG_REG], [[gregs[4]]]) # a0 | 395 | AC_DEFINE([SYSCALL_ARG_REG], [[gregs[4]]]) # a0 |
| 349 | AC_DEFINE([SYSCALL_ARG1_REG], [[gregs[5]]]) # a1 | 396 | AC_DEFINE([SYSCALL_ARG1_REG], [[gregs[5]]]) # a1 |
| 397 | AC_DEFINE([SYSCALL_ARG2_REG], [[gregs[4]]]) # a2 | ||
| 398 | AC_DEFINE([SYSCALL_ARG3_REG], [[gregs[5]]]) # a3 | ||
| 350 | AC_DEFINE([STACK_POINTER], [[gregs[29]]]) # sp | 399 | AC_DEFINE([STACK_POINTER], [[gregs[29]]]) # sp |
| 351 | AC_DEFINE([EXEC_SYSCALL], [__NR_execve]) | 400 | AC_DEFINE([EXEC_SYSCALL], [__NR_execve]) |
| 352 | AC_DEFINE([USER_WORD], [uintptr_t]) | 401 | AC_DEFINE([USER_WORD], [uintptr_t]) |
| @@ -355,6 +404,8 @@ AS_CASE([$host], [x86_64-*linux*], | |||
| 355 | AC_DEFINE([INTERPRETER_BASE], [0x3f00000000]) | 404 | AC_DEFINE([INTERPRETER_BASE], [0x3f00000000]) |
| 356 | AC_DEFINE([STACK_GROWS_DOWNWARDS], [1]) | 405 | AC_DEFINE([STACK_GROWS_DOWNWARDS], [1]) |
| 357 | AC_DEFINE([CLONE_SYSCALL], [__NR_clone]) | 406 | AC_DEFINE([CLONE_SYSCALL], [__NR_clone]) |
| 407 | AC_DEFINE([READLINK_SYSCALL], [__NR_readlink]) | ||
| 408 | AC_DEFINE([READLINKAT_SYSCALL], [__NR_readlinkat]) | ||
| 358 | AC_CACHE_CHECK([whether as understands `daddi'], | 409 | AC_CACHE_CHECK([whether as understands `daddi'], |
| 359 | [exec_cv_as_daddi], | 410 | [exec_cv_as_daddi], |
| 360 | [exec_cv_as_daddi=no | 411 | [exec_cv_as_daddi=no |