shellcode

collection of shellcodes
git clone https://git.afify.dev/shellcode.git
Log | Files | Refs | LICENSE

commit d6717bf99e45cd6ddec0f43b900ecee03bb741a9
parent 9b565d7be83b5ec5c9c2ce28a9ce8bb28454307e
Author: afify <hassan@afify.dev>
Date:   Wed, 23 Mar 2022 16:47:58 +0300

[feat] signals in getchar

Diffstat:
Mgetchar.s | 26+++++++++++++++++++++-----
Mmacros.inc | 6+++---
Mportable.inc | 6+++---
Msignals.inc | 348+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----
Msyscalls.inc | 6+++---
5 files changed, 361 insertions(+), 31 deletions(-)

diff --git a/getchar.s b/getchar.s @@ -4,15 +4,13 @@ BITS 64 %include "signals.inc" %include "portable.inc" -%define SIGUSR1 10 ; User-defined signal r1 - section .rodata usage_msg: db "usage: azan [-AaNnUuv]", 10, 0 usage_len: equ $ - usage_msg section .data dchar: db 1 - SIGACTION sa + SIGACTION sigaction section .bss @@ -22,11 +20,18 @@ section .text _start: signal: + mov rax,sigFPEHandler ;set handler to pointer to procSigInt + mov qword[sigaction.sa_handler],rax ;in sigaction structure + mov rax,SA_RESTORER | SA_SIGINFO ;sa_flags + mov qword [sigaction.sa_flags],rax + mov rax,exit + mov qword[sigaction.sa_restorer],rax + mov rax, SYS_sigaction mov rdi, SIGUSR1 ;int sig - mov rsi, sa ;const struct sigaction * act + mov rsi, sigaction ;const struct sigaction * act mov rdx, 0 ;struct sigaction * oact - mov r10, 0 ;size_t sigsetsize + mov r10, NSIG_WORDS ;size_t sigsetsize syscall read: @@ -52,3 +57,14 @@ writes: exit: EEXIT EXIT_SUCCESS + +sigFPEHandler: + ; rdi=signum, rsi=siginfo_t pointer, rdx=sigcontext* + mov rax,[rdx+UCONTEXT_STRUC.uc_mcontext+SIGCONTEXT_STRUC.rip] ; get rip where error occured + mov rax, SYS_write + mov rdi, STDOUT ;unsigned int fd + mov rsi, usage_msg, ;char *buf + mov rdx, usage_len ;size_t count + syscall + ;syscall write,stderr,msgDivisionByZero,msgDivisionByZero.len + ret diff --git a/macros.inc b/macros.inc @@ -1,7 +1,7 @@ ; See LICENSE file for copyright and license details. -%ifndef MACROS_S -%define MACROS_S +%ifndef MACROS_INC +%define MACROS_INC %define EXIT_SUCCESS 0 %define EXIT_FAILURE 1 @@ -24,4 +24,4 @@ EEXIT EXIT_FAILURE %endmacro -%endif ;MACROS_S +%endif ;MACROS_INC diff --git a/portable.inc b/portable.inc @@ -1,7 +1,7 @@ ; See LICENSE file for copyright and license details. -%ifndef PORTABLE_S -%define PORTABLE_S +%ifndef PORTABLE_INC +%define PORTABLE_INC %ifdef OpenBSD section .note.openbsd.ident note @@ -17,4 +17,4 @@ section .note.openbsd.ident note dd 0 %endif -%endif ;PORTABLE_S +%endif ;PORTABLE_INC diff --git a/signals.inc b/signals.inc @@ -1,30 +1,344 @@ ; See LICENSE file for copyright and license details. -%ifndef SIGNALS_S -%define SIGNALS_S +%ifndef SIGNALS_INC +%define SIGNALS_INC + + +;Sigset constants %define NSIG 64 %define NSIG_BPW 8 %define NSIG_WORDS NSIG / NSIG_BPW +; Linux x86_64 signals + +%define SIGHUP 1 ; Hangup +%define SIGINT 2 ; User interrupt requested from terminal, e.g. when Ctrl-C is pressed +%define SIGQUIT 3 ; Quit, e.g. when Ctrl-\ is pressed +%define SIGILL 4 ; Illegal instruction +%define SIGTRAP 5 ; Trace trap (used by debugger) +%define SIGABRT 6 ; abort +%define SIGBUS 7 ; Bus error +%define SIGFPE 8 ; Floating-point arithmetic exception +%define SIGKILL 9 ; Kill (Cannot be caught or ignored) +%define SIGUSR1 10 ; User-defined signal 1 +%define SIGSEGV 11 ; Segmentation violation +%define SIGUSR2 12 ; User-defined signal 2 +%define SIGPIPE 13 ; Broken pipe (attempt to write to a pipe without a process connected to the other end) +%define SIGALRM 14 ; Timer set by alarm or setitimer function expired +%define SIGTERM 15 ; Software termination signal from kill +%define SIGSTKFLT 16 ; x86 FPU stack fault +%define SIGCHLD 17 ; Child process status has changed +%define SIGCONT 18 ; The stopped process is continued +%define SIGSTOP 19 ; Stop (Cannot be caught or ignored) +%define SIGTSTP 20 ; User stop requested from terminal, e.g. when Ctrl-Z is pressed +%define SIGTTIN 21 ; Terminal read attempted when the process is in the background +%define SIGTTOU 22 ; Terminal write attempted when the process is in the background +%define SIGURG 23 ; Urgent condition on socket, e.g. out-of-band data is received on a network connection +%define SIGXCPU 24 ; CPU limit exceeded +%define SIGXFSZ 25 ; File size limit exceeded +%define SIGVTALRM 26 ; Virtual interval timer set by the setitimer function expired +%define SIGPROF 27 ; Profiling interval timer set by the setitimer function expired +%define SIGWINCH 28 ; Terminal window size change +%define SIGIO 29 ; Pollable or async I/O event occurred +%define SIGPWR 30 ; Power failure restart +%define SIGSYS 31 ; Illegal system call +%define SIGRTMIN 32 +%define SIGRTMAX 64 + +%define SIGIOT SIGABRT +%define SIGPOLL SIGIO +%define SIGLOST SIGIO +%define SIGIO SIGPOLL +%define SIGINFO SIGPWR +%define SIGUNUSED SIGSYS +%define SIGCLD SIGCHLD + +; SA_FLAGS values: +; +; SA_ONSTACK indicates that a registered stack_t will be used. +; SA_RESTART flag to get restarting signals (which were the default long ago) +; SA_NOCLDSTOP flag to turn off SIGCHLD when children stop. +; SA_RESETHAND clears the handler when the signal is delivered. +; SA_NOCLDWAIT flag on SIGCHLD to inhibit zombies. +; SA_NODEFER prevents the current signal from being masked in the handler. +; +; SA_ONESHOT and SA_NOMASK are the historical Linux names for the Single +; Unix names RESETHAND and NODEFER respectively. + +%define SA_NOCLDSTOP 0x00000001 +%define SA_NOCLDWAIT 0x00000002 +%define SA_SIGINFO 0x00000004 +%define SA_ONSTACK 0x08000000 +%define SA_RESTART 0x10000000 +%define SA_NODEFER 0x40000000 +%define SA_RESETHAND 0x80000000 +%define SA_NOMASK SA_NODEFER +%define SA_ONESHOT SA_RESETHAND +%define SA_RESTORER 0x04000000 + +; sigaltstack controls + +%define SS_ONSTACK 1 +%define SS_DISABLE 2 +%define MINSIGSTKSZ 2048 +%define SIGSTKSZ 8192 + +; macros + STRUC SIGACTION_STRUC - .sa_handler: resq 1 - .sa_flags: resq 1 - .sa_restorer: resq 1 - .sa_mask: resb 128 + .sa_handler: resq 1 + .sa_flags: resq 1 + .sa_restorer: resq 1 + .sa_mask: resb 128 ENDSTRUC %macro SIGACTION 1 - %1: ISTRUC SIGACTION_STRUC - at SIGACTION_STRUC.sa_handler, dq 0 - at SIGACTION_STRUC.sa_flags, dq 0 - at SIGACTION_STRUC.sa_restorer, dq 0 - at SIGACTION_STRUC.sa_mask, times 128 db 0 - IEND - %define %1.sa_handler %1+SIGACTION_STRUC.sa_handler - %define %1.sa_flags %1+SIGACTION_STRUC.sa_flags - %define %1.sa_restorer %1+SIGACTION_STRUC.sa_restorer - %define %1.sa_mask %1+SIGACTION_STRUC.sa_mask + %1: ISTRUC SIGACTION_STRUC + at SIGACTION_STRUC.sa_handler, dq 0 + at SIGACTION_STRUC.sa_flags, dq 0 + at SIGACTION_STRUC.sa_restorer, dq 0 + at SIGACTION_STRUC.sa_mask, times 128 db 0 + IEND + %define %1.sa_handler %1+SIGACTION_STRUC.sa_handler + %define %1.sa_flags %1+SIGACTION_STRUC.sa_flags + %define %1.sa_restorer %1+SIGACTION_STRUC.sa_restorer + %define %1.sa_mask %1+SIGACTION_STRUC.sa_mask +%endmacro + +STRUC SIGINFO_T_STRUC + .si_signo: resd 1 ; Signal number */int + .si_errno: resd 1 ; An errno value */int + .si_code: resd 1 ; Signal code */int + .si_trapno: resd 1 ; Trap number that caused hardware-generated signal (unused on most architectures) */ int + .si_pid: resq 1 ; Sending process ID */pid_t + .si_uid: resd 1 ; Real user ID of sending process */uid_t + .si_status: resq 1 ; Exit value or signal */int + .si_utime: resq 1 ; User time consumed */ clock_t + .si_stime: resq 1 ; System time consumed */clock_t + .si_value: resq 1 ; Signal value */sigval_t + .si_int: resq 1 ; POSIX.1b signal */int + .si_ptr: resq 1 ; POSIX.1b signal */void + .si_overrun: resq 1 ; Timer overrun count; POSIX.1b timers */int + .si_timerid: resq 1 ; Timer ID; POSIX.1b timers */int + .si_addr: resq 1 ; Memory location which caused fault */void + .si_band: resq 1 ; Band event (was int in glibc 2.3.2 and earlier) */long + .si_fd: resq 1 ; File descriptor */ int + .si_addr_lsb: resd 1 ; Least significant bit of address (since kernel 2.6.32) */ short +ENDSTRUC + +%macro SIGINFO_T 1 + %1: ISTRUC SIGINFO_T_STRUC + at SIGINFO_T_STRUC.si_signo, dd 0 ; Signal number */int + at SIGINFO_T_STRUC.si_errno, dd 0 ; An errno value */int + at SIGINFO_T_STRUC.si_code, dd 0 ; Signal code */int + at SIGINFO_T_STRUC.si_trapno, dd 0 ; Trap number that caused hardware-generated signal (unused on most architectures) */ int + at SIGINFO_T_STRUC.si_pid, dq 0 ; Sending process ID */pid_t + at SIGINFO_T_STRUC.si_uid, dd 0 ; Real user ID of sending process */uid_t + at SIGINFO_T_STRUC.si_status, dq 0 ; Exit value or signal */int + at SIGINFO_T_STRUC.si_utime, dq 0 ; User time consumed */ clock_t + at SIGINFO_T_STRUC.si_stime, dq 0 ; System time consumed */clock_t + at SIGINFO_T_STRUC.si_value, dq 0 ; Signal value */sigval_t + at SIGINFO_T_STRUC.si_int, dq 0 ; POSIX.1b signal */int + at SIGINFO_T_STRUC.si_ptr, dq 0 ; POSIX.1b signal */void + at SIGINFO_T_STRUC.si_overrun, dq 0 ; Timer overrun count; POSIX.1b timers */int + at SIGINFO_T_STRUC.si_timerid, dq 0 ; Timer ID; POSIX.1b timers */int + at SIGINFO_T_STRUC.si_addr, dq 0 ; Memory location which caused fault */void + at SIGINFO_T_STRUC.si_band, dq 0 ; Band event (was int in glibc 2.3.2 and earlier) */long + at SIGINFO_T_STRUC.si_fd, dq 0 ; File descriptor */ int + at SIGINFO_T_STRUC.si_addr_lsb, dd 0 ; Least significant bit of address (since kernel 2.6.32) */ short + IEND + + %define %1.si_signo: %1+SIGINFO_T_STRUC.si_signo ; Signal number */int + %define %1.si_errno: %1+SIGINFO_T_STRUC.si_errno ; An errno value */int + %define %1.si_code: %1+SIGINFO_T_STRUC.si_code ; Signal code */int + %define %1.si_trapno: %1+SIGINFO_T_STRUC.si_trapno ; Trap number that caused hardware-generated signal (unused on most architectures) */ int + %define %1.si_pid: %1+SIGINFO_T_STRUC.si_pid ; Sending process ID */pid_t + %define %1.si_uid: %1+SIGINFO_T_STRUC.si_uid ; Real user ID of sending process */uid_t + %define %1.si_status: %1+SIGINFO_T_STRUC.si_status ; Exit value or signal */int + %define %1.si_utime: %1+SIGINFO_T_STRUC.si_utime ; User time consumed */ clock_t + %define %1.si_stime: %1+SIGINFO_T_STRUC.si_stime ; System time consumed */clock_t + %define %1.si_value: %1+SIGINFO_T_STRUC.si_value ; Signal value */sigval_t + %define %1.si_int: %1+SIGINFO_T_STRUC.si_int ; POSIX.1b signal */int + %define %1.si_ptr: %1+SIGINFO_T_STRUC.si_ptr ; POSIX.1b signal */void + %define %1.si_overrun: %1+SIGINFO_T_STRUC.si_overrun ; Timer overrun count; POSIX.1b timers */int + %define %1.si_timerid: %1+SIGINFO_T_STRUC.si_timerid ; Timer ID; POSIX.1b timers */int + %define %1.si_addr: %1+SIGINFO_T_STRUC.si_addr ; Memory location which caused fault */void + %define %1.si_band: %1+SIGINFO_T_STRUC.si_band ; Band event (was int in glibc 2.3.2 and earlier) */long + %define %1.si_fd: %1+SIGINFO_T_STRUC.si_fd ; File descriptor */ int + %define %1.si_addr_lsb: %1+SIGINFO_T_STRUC.si_addr_lsb ; Least significant bit of address (since kernel 2.6.32) */ short +%endmacro + +STRUC SIGCONTEXT_STRUC + .r8: resq 1 + .r9: resq 1 + .r10: resq 1 + .r11: resq 1 + .r12: resq 1 + .r13: resq 1 + .r14: resq 1 + .r15: resq 1 + .rdi: resq 1 + .rsi: resq 1 + .rbp: resq 1 + .rbx: resq 1 + .rdx: resq 1 + .rax: resq 1 + .rcx: resq 1 + .rsp: resq 1 + .rip: resq 1 + .rflags: resq 1 + .cs: resw 1 + .gs: resw 1 + .fs: resw 1 + .__pad0: resw 1 + .err: resq 1 + .trapno: resq 1 + .oldmask: resq 1 + .cr2: resq 1 + .fpstate: resq 1 + .reserved: resq 8 + .size: equ $-.r8 +ENDSTRUC + +%macro SIGCONTEXT 1 + %1: ISTRUC SIGCONTEXT_STRUC + at SIGCONTEXT_STRUC.r8, dq 0 + at SIGCONTEXT_STRUC.r9, dq 0 + at SIGCONTEXT_STRUC.r10, dq 0 + at SIGCONTEXT_STRUC.r11, dq 0 + at SIGCONTEXT_STRUC.r12, dq 0 + at SIGCONTEXT_STRUC.r13, dq 0 + at SIGCONTEXT_STRUC.r14, dq 0 + at SIGCONTEXT_STRUC.r15, dq 0 + at SIGCONTEXT_STRUC.rdi, dq 0 + at SIGCONTEXT_STRUC.rsi, dq 0 + at SIGCONTEXT_STRUC.rbp, dq 0 + at SIGCONTEXT_STRUC.rbx, dq 0 + at SIGCONTEXT_STRUC.rdx, dq 0 + at SIGCONTEXT_STRUC.rax, dq 0 + at SIGCONTEXT_STRUC.rcx, dq 0 + at SIGCONTEXT_STRUC.rsp, dq 0 + at SIGCONTEXT_STRUC.rip, dq 0 + at SIGCONTEXT_STRUC.rflags, dq 0 + at SIGCONTEXT_STRUC.cs, dw 0 + at SIGCONTEXT_STRUC.gs, dw 0 + at SIGCONTEXT_STRUC.fs, dw 0 + at SIGCONTEXT_STRUC.__pad0, dw 0 + at SIGCONTEXT_STRUC.err, dq 0 + at SIGCONTEXT_STRUC.trapno, dq 0 + at SIGCONTEXT_STRUC.oldmask, dq 0 + at SIGCONTEXT_STRUC.cr2, dq 0 + at SIGCONTEXT_STRUC.fpstate, dq 0 + at SIGCONTEXT_STRUC.reserved, times 8 dq 0 + IEND + + %define %1.r8: %1+SIGINFO_T_STRUC.r8 + %define %1.r9: %1+SIGINFO_T_STRUC.r9 + %define %1.r10: %1+SIGINFO_T_STRUC.r10 + %define %1.r11: %1+SIGINFO_T_STRUC.r11 + %define %1.r12: %1+SIGINFO_T_STRUC.r12 + %define %1.r13: %1+SIGINFO_T_STRUC.r13 + %define %1.r14: %1+SIGINFO_T_STRUC.r14 + %define %1.r15: %1+SIGINFO_T_STRUC.r15 + %define %1.rdi: %1+SIGINFO_T_STRUC.rdi + %define %1.rsi: %1+SIGINFO_T_STRUC.rsi + %define %1.rbp: %1+SIGINFO_T_STRUC.rbp + %define %1.rbx: %1+SIGINFO_T_STRUC.rbx + %define %1.rdx: %1+SIGINFO_T_STRUC.rdx + %define %1.rax: %1+SIGINFO_T_STRUC.rax + %define %1.rcx: %1+SIGINFO_T_STRUC.rcx + %define %1.rsp: %1+SIGINFO_T_STRUC.rsp + %define %1.rip: %1+SIGINFO_T_STRUC.rip + %define %1.rflags: %1+SIGINFO_T_STRUC.rflags + %define %1.cs: %1+SIGINFO_T_STRUC.cs + %define %1.gs: %1+SIGINFO_T_STRUC.gs + %define %1.fs: %1+SIGINFO_T_STRUC.fs + %define %1.err: %1+SIGINFO_T_STRUC.err + %define %1.trapno: %1+SIGINFO_T_STRUC.trapno + %define %1.oldmask: %1+SIGINFO_T_STRUC.oldmask + %define %1.cr2: %1+SIGINFO_T_STRUC.cr2 + %define %1.fpstate: %1+SIGINFO_T_STRUC.fpstate +%endmacro + +STRUC SIGNALSTACK_STRUC + .ss_sp: resq 1 + .ss_flags: resq 1 + .ss_size: resq 1 + .size: equ $-.ss_sp +ENDSTRUC + +%macro SIGNALSTACK 1 + %1 ISTRUC SIGNALSTACK_STRUC + at .ss_sp, dq 0 + at .ss_flags, dq 0 + at .ss_size: dq 0 + ENDSTRUC + %define %1.ss_sp: %1+SIGNALSTACK_STRUC.ss_sp + %define %1.ss_flags: %1+SIGNALSTACK_STRUC.ss_flags + %define %1.ss_size: %1+SIGNALSTACK_STRUC.ss_size +%endmacro + +STRUC SIGSET_T_STRUC + .sig: resq NSIG_WORDS + .size: equ $-.sig +ENDSTRUC + +%macro SIGSET_T 1 + %1 ISTRUC SIGSET_T_STRUC + at .sig, times NSIG_WORDS dq 0 + ENDSTRUC + %define %1.sig: %1+SIGSET_T_STRUC.sig +%endmacro + +STRUC UCONTEXT_STRUC + .uc_flags: resq 1 + .uc_link: resq 1 + .uc_stack: resb SIGNALSTACK_STRUC.size + .uc_mcontext: resb SIGCONTEXT_STRUC.size + .uc_sigmask: resb SIGSET_T_STRUC.size +ENDSTRUC + +%macro UCONTEXT 1 + %1 ISTRUC UCONTEXT_STRUC + at .uc_flags, dq 0 + at .uc_link, dq 0 + at .uc_stack, times SIGNALSTACK_STRUC.size db 0 + at .uc_mcontext: times SIGCONTEXT_STRUC.size db 0 + at .uc_sigmask: times SIGSET_T_STRUC.size db 0 + ENDSTRUC + %define %1.uc_flags: %1+UCONTEXT_STRUC.uc_flags + %define %1.uc_link: %1+UCONTEXT_STRUC.uc_link + %define %1.uc_stack.ss_sp: %1+UCONTEXT_STRUC.uc_stack+SIGNALSTACK_STRUC.ss_sp + %define %1.uc_stack.ss_flags: %1+UCONTEXT_STRUC.uc_stack+SIGNALSTACK_STRUC.ss_flags + %define %1.uc_stack.ss_size: %1+UCONTEXT_STRUC.uc_stack+SIGNALSTACK_STRUC.ss_size + %define %1.uc_mcontext.r8: %1+UCONTEXT_STRUC.uc_mcontext+SIGCONTEXT_STRUC.r8 + %define %1.uc_mcontext.r9: %1+UCONTEXT_STRUC.uc_mcontext+SIGCONTEXT_STRUC.r9 + %define %1.uc_mcontext.r10: %1+UCONTEXT_STRUC.uc_mcontext+SIGCONTEXT_STRUC.r10 + %define %1.uc_mcontext.r11: %1+UCONTEXT_STRUC.uc_mcontext+SIGCONTEXT_STRUC.r11 + %define %1.uc_mcontext.r12: %1+UCONTEXT_STRUC.uc_mcontext+SIGCONTEXT_STRUC.r12 + %define %1.uc_mcontext.r13: %1+UCONTEXT_STRUC.uc_mcontext+SIGCONTEXT_STRUC.r13 + %define %1.uc_mcontext.r14: %1+UCONTEXT_STRUC.uc_mcontext+SIGCONTEXT_STRUC.r14 + %define %1.uc_mcontext.r15: %1+UCONTEXT_STRUC.uc_mcontext+SIGCONTEXT_STRUC.r15 + %define %1.uc_mcontext.rdi: %1+UCONTEXT_STRUC.uc_mcontext+SIGCONTEXT_STRUC.rdi + %define %1.uc_mcontext.rsi: %1+UCONTEXT_STRUC.uc_mcontext+SIGCONTEXT_STRUC.rsi + %define %1.uc_mcontext.rbp: %1+UCONTEXT_STRUC.uc_mcontext+SIGCONTEXT_STRUC.rbp + %define %1.uc_mcontext.rbx: %1+UCONTEXT_STRUC.uc_mcontext+SIGCONTEXT_STRUC.rbx + %define %1.uc_mcontext.rdx: %1+UCONTEXT_STRUC.uc_mcontext+SIGCONTEXT_STRUC.rdx + %define %1.uc_mcontext.rax: %1+UCONTEXT_STRUC.uc_mcontext+SIGCONTEXT_STRUC.rax + %define %1.uc_mcontext.rcx: %1+UCONTEXT_STRUC.uc_mcontext+SIGCONTEXT_STRUC.rcx + %define %1.uc_mcontext.rsp: %1+UCONTEXT_STRUC.uc_mcontext+SIGCONTEXT_STRUC.rsp + %define %1.uc_mcontext.rip: %1+UCONTEXT_STRUC.uc_mcontext+SIGCONTEXT_STRUC.rip + %define %1.uc_mcontext.rflags: %1+UCONTEXT_STRUC.uc_mcontext+SIGCONTEXT_STRUC.rflags + %define %1.uc_mcontext.cs: %1+UCONTEXT_STRUC.uc_mcontext+SIGCONTEXT_STRUC.cs + %define %1.uc_mcontext.gs: %1+UCONTEXT_STRUC.uc_mcontext+SIGCONTEXT_STRUC.gs + %define %1.uc_mcontext.fs: %1+UCONTEXT_STRUC.uc_mcontext+SIGCONTEXT_STRUC.fs + %define %1.uc_mcontext.err: %1+UCONTEXT_STRUC.uc_mcontext+SIGCONTEXT_STRUC.err + %define %1.uc_mcontext.trapno: %1+UCONTEXT_STRUC.uc_mcontext+SIGCONTEXT_STRUC.trapno + %define %1.uc_mcontext.oldmask: %1+UCONTEXT_STRUC.uc_mcontext+SIGCONTEXT_STRUC.oldmask + %define %1.uc_mcontext.cr2: %1+UCONTEXT_STRUC.uc_mcontext+SIGCONTEXT_STRUC.cr2 + %define %1.uc_mcontext.fpstate: %1+UCONTEXT_STRUC.uc_mcontext+SIGCONTEXT_STRUC.fpstate + %define %1.uc_sigmask.sig: %1++UCONTEXT_STRUC.uc_sigmask+SIGSET_T_STRUC.sig %endmacro -%endif ;SIGNALS_S +%endif ;SIGNALS_INC diff --git a/syscalls.inc b/syscalls.inc @@ -1,7 +1,7 @@ ; See LICENSE file for copyright and license details. -%ifndef SYSCALLS_S -%define SYSCALLS_S +%ifndef SYSCALLS_INC +%define SYSCALLS_INC %ifdef Linux %define SYS_read 0 @@ -20,4 +20,4 @@ %fatal "OS not supported" %endif -%endif ;SYSCALLS_S +%endif ;SYSCALLS_INC