This release supports X86/Linux, AMD64/Linux, ARM32/Linux, ARM64/Linux,
PPC32/Linux, PPC64BE/Linux, PPC64LE/Linux, S390X/Linux, MIPS32/Linux,
MIPS64/Linux, RISCV64/Linux, ARM/Android, ARM64/Android, MIPS32/Android,
-X86/Android, X86/Solaris, AMD64/Solaris, AMD64/MacOSX 10.12, X86/FreeBSD,
-AMD64/FreeBSD and ARM64/FreeBSD There is also preliminary support for
-X86/macOS 10.13, AMD64/macOS 10.13 and nanoMIPS/Linux.
+X86/Android, X86/Solaris, AMD64/Solaris, X86/macOS, AMD64/macOS.
+X86/FreeBSD, AMD64/FreeBSD and ARM64/FreeBSD. There is preliminary support
+for nanoMIPS/Linux. macOS is supported up to version 10.13 High Sierra.
* ==================== CORE CHANGES ===================
".text\n" \
".globl my_sigreturn\n" \
"my_sigreturn:\n" \
- " movl $" VG_STRINGIFY(__NR_DARWIN_FAKE_SIGRETURN) ",%eax\n" \
+ " movl $" VG_STRINGIFY(__NR_darwin_fake_sigreturn) ",%eax\n" \
" int $0x80\n"
#elif defined(VGP_amd64_darwin)
".text\n" \
".globl my_sigreturn\n" \
"my_sigreturn:\n" \
- " movq $" VG_STRINGIFY(__NR_DARWIN_FAKE_SIGRETURN) ",%rax\n" \
+ " movq $" VG_STRINGIFY(__NR_darwin_fake_sigreturn) ",%rax\n" \
" syscall\n"
#elif defined(VGP_s390x_linux)
DECL_TEMPLATE(darwin, setegid); // 182
DECL_TEMPLATE(darwin, seteuid); // 183
DECL_TEMPLATE(darwin, sigreturn); // 184
-DECL_TEMPLATE(darwin, FAKE_SIGRETURN);
+DECL_TEMPLATE(darwin, fake_sigreturn); // 1000
// NYI chud 185
#if DARWIN_VERS >= DARWIN_10_13
// NYI thread_selfcounts // 186
}
-PRE(FAKE_SIGRETURN)
+PRE(fake_sigreturn)
{
/* See comments on PRE(sys_rt_sigreturn) in syswrap-amd64-linux.c for
an explanation of what follows. */
sigframe-x86-darwin.c. */
/* See also comments just below on PRE(sigreturn). */
- PRINT("FAKE_SIGRETURN ( )");
+ PRINT("fake_sigreturn ( )");
vg_assert(VG_(is_valid_tid)(tid));
vg_assert(tid >= 1 && tid < VG_N_THREADS);
1. Change the second argument of VG_(sigframe_destroy) from
"Bool isRT" to "UInt sysno", so we can pass the syscall
number, so it can distinguish this case from the
- __NR_DARWIN_FAKE_SIGRETURN case.
+ __NR_darwin_fake_sigreturn case.
2. In VG_(sigframe_destroy), look at sysno to distinguish the
- cases. For __NR_DARWIN_FAKE_SIGRETURN, behave as at present.
+ cases. For __NR_darwin_fake_sigreturn, behave as at present.
For this case, restore the thread's CPU state (or at least
the integer regs) from the ucontext in ARG1 (and do all the
other "signal-returns" stuff too).
// _____(__NR_ntp_gettime), // 528
// _____(__NR_os_fault_with_payload), // 529
#endif
-// _____(__NR_MAXSYSCALL)
- MACX_(__NR_DARWIN_FAKE_SIGRETURN, FAKE_SIGRETURN)
+
+ MACX_(__NR_darwin_fake_sigreturn, fake_sigreturn)
};
BSDX_(__NR_jail_attach_jd, sys_jail_attach_jd), // 597
BSDX_(__NR_jail_remove_jd, sys_jail_remove_jd), // 598
- BSDX_(__NR_fake_sigreturn, sys_fake_sigreturn), // 1000, fake sigreturn
+ BSDX_(__NR_freebsd_fake_sigreturn, sys_fake_sigreturn), // 1000, fake sigreturn
};
pushl %eax
pushl %eax /* fake return addr */
/* movl 0x44(%eax), %gs ; restore %gs, not done by sigreturn */
- movl $__NR_fake_sigreturn, %eax
+ movl $__NR_freebsd_fake_sigreturn, %eax
int $0x80
ud2
/* This is a very specific sequence which GDB uses to
recognize signal handler frames. */
- movq $__NR_fake_sigreturn, %rax
+ movq $__NR_freebsd_fake_sigreturn, %rax
/* running the preprocessor on
* src/amd64.amd64/lib/libc/sigreturn.S
.global VG_(arm64_freebsd_SUBST_FOR_sigreturn)
.type VG_(arm64_freebsd_SUBST_FOR_sigreturn),#function
VG_(arm64_freebsd_SUBST_FOR_sigreturn):
- mov x8, # __NR_fake_sigreturn
+ mov x8, # __NR_freebsd_fake_sigreturn
mov x0, sp
svc #0
.long 0xFFFFFFFF /*illegal insn*/
VG_(x86_darwin_SUBST_FOR_sigreturn):
/* XXX does this need to have any special form? (cf x86-linux
version) */
- movl $ __NR_DARWIN_FAKE_SIGRETURN, %eax
+ movl $ __NR_darwin_fake_sigreturn, %eax
int $0x80
ud2
VG_(amd64_darwin_SUBST_FOR_sigreturn):
/* XXX does this need to have any special form? (cf x86-linux
version) */
- movq $ __NR_DARWIN_FAKE_SIGRETURN, %rax
+ movq $ __NR_darwin_fake_sigreturn, %rax
syscall
ud2
#define __NR_os_fault_with_payload VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(529)
#endif /* DARWIN_VERS >= DARWIN_10_13 */
-#if DARWIN_VERS < DARWIN_10_6
-#define __NR_MAXSYSCALL VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(427)
-#elif DARWIN_VERS < DARWIN_10_7
-#define __NR_MAXSYSCALL VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(430)
-#elif DARWIN_VERS < DARWIN_10_9
-#define __NR_MAXSYSCALL VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(430)
-#elif DARWIN_VERS == DARWIN_10_9
-#define __NR_MAXSYSCALL VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(456)
-#elif DARWIN_VERS == DARWIN_10_10
-#define __NR_MAXSYSCALL VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(490)
-#elif DARWIN_VERS == DARWIN_10_11
-#define __NR_MAXSYSCALL VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(500)
-#elif DARWIN_VERS == DARWIN_10_12
-#define __NR_MAXSYSCALL VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(522)
-#elif DARWIN_VERS == DARWIN_10_13
-#define __NR_MAXSYSCALL VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(530)
-#else
-#error unknown darwin version
-#endif
-
-#define __NR_DARWIN_FAKE_SIGRETURN (1 + __NR_MAXSYSCALL)
+#define __NR_darwin_fake_sigreturn VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(1000)
#endif
#define __NR_jail_attach_jd 597
#define __NR_jail_remove_jd 598
-#define __NR_fake_sigreturn 1000
+#define __NR_freebsd_fake_sigreturn 1000
#endif /* VKI_UNISTD_FREEBSD_H */