Commit Graph

112 Commits (b6e60b5d64b181a4f76a372d75bc350f83fb9b58)

Author SHA1 Message Date
osy 73d5e101ad build: respect EXPORT_UNPREFIXED for libucontext_makecontext 2021-01-08 03:02:43 -07:00
Ariadne Conill e45956896a common-trampoline: use register keyword to force register allocation 2021-01-08 03:00:37 -07:00
osy e1e6508af2 defs: use register output only for FETCH_LINKPTR 2021-01-08 02:59:43 -07:00
Ariadne Conill 638770cfd0 x86_64: add static assert verifying memory layout 2021-01-08 02:56:45 -07:00
Ariadne Conill 39a2958561 add previous ABI symbols 2021-01-08 02:30:50 -07:00
Daniel Kolesa cf05112306 ppc, ppc64: use common ALIAS/FUNC/END macros 2021-01-08 04:52:46 +01:00
Daniel Kolesa 6026980cac ppc, ppc64: tag global symbols as functions
it is necessary to tag these symbols as functions otherwise the
linker gets confused; this previously manifested as the internal
functions (pre-rename) like __getcontext leaking into the symbol
table of things linked against libucontext that used the ucontext
POSIX API through the weak aliases

it also had another bad effect and that is if you tried to use
libucontext's API (post-rename), the linker would warn you during
compile time that the type is unknown, and the resulting program
would crash at runtime

after properly tagging everything, I no longer notice any leakage,
i.e. there don't seem to be any references to the aliased symbols
in the resulting symbol table when using the aliases, and using
the libucontext prefixed symbols directly also works
2021-01-08 04:27:27 +01:00
Ariadne Conill d81154a61c riscv64: port to C trampoline 2020-12-12 00:08:48 -07:00
Ariadne Conill 11a40293be riscv64: simplify the context swapping 2020-12-12 07:05:09 +00:00
Ariadne Conill 22b91690bc aarch64: move to C trampoline 2020-12-12 06:43:58 +00:00
Ariadne Conill afcca79d7b arm: move to C trampoline 2020-12-12 06:40:27 +00:00
Ariadne Conill 388edbe121 x86: port to use common trampoline 2020-12-12 06:32:01 +00:00
Ariadne Conill b6542e1a6a m68k: port to use common trampoline 2020-12-12 00:17:26 -06:00
Ariadne Conill 09d3f81dcf sh: use new common trampoline 2020-12-12 06:08:33 +00:00
Ariadne Conill 2d51d7bfa4 x86_64: add common trampoline code written in C, port to it 2020-12-11 23:04:47 -07:00
Ariadne Conill 5c3ca5a7e1 sh: add freestanding bits 2020-12-12 06:02:47 +00:00
Ariadne Conill 8d58adb3ba sh: fix up setcontext/swapcontext 2020-12-12 05:57:58 +00:00
Ariadne Conill dd7ef8a806 sh: makecontext: fix stack alignment 2020-12-12 05:04:39 +00:00
Ariadne Conill f9a3f65f5b sh: fix getcontext implementation 2020-12-12 05:04:17 +00:00
Ariadne Conill 82f734ab47 sh: makecontext: set up stack pointer in r15 2020-12-12 04:53:50 +00:00
Ariadne Conill da3c8d170f sh: add remaining port files 2020-12-11 23:18:04 +00:00
Ariadne Conill a42fb86da0 sh: add plausible swapcontext implementation 2020-12-11 22:37:21 +00:00
Ariadne Conill 00261d70e8 sh: add plausible setcontext implementation 2020-12-11 22:25:23 +00:00
Ariadne Conill fd06f42bc3 sh: add first attempt at a getcontext implementation 2020-12-11 21:58:56 +00:00
Ariadne Conill 2692ecf74a sh: defs: define REG_GBR, REG_MACH, REG_MACL 2020-12-11 21:35:12 +00:00
Ariadne Conill 42a4fbe9d1 sh: add makecontext 2020-12-11 21:13:20 +00:00
Ariadne Conill c10cde83da ppc: fix build with libucontext_ namespacing changes 2020-12-06 14:04:22 +00:00
Ariadne Conill a04dc12d72 aarch64: add freestanding port 2020-12-06 13:50:50 +00:00
Ariadne Conill f3f52fc17c arm: add freestanding port 2020-12-06 13:43:04 +00:00
Ariadne Conill 7d149e6358 mips: add freestanding port 2020-12-06 06:34:56 -07:00
Ariadne Conill 20fd2b6f52 mips64: add freestanding port 2020-12-06 06:24:50 -07:00
Ariadne Conill 0c6077854a riscv64: add freestanding port 2020-12-06 06:10:00 -07:00
Ariadne Conill 50bb9432c8 s390x: add freestanding port 2020-12-06 12:37:08 +00:00
Ariadne Conill b33c7df219 s390x: update makecontext prototype 2020-12-06 12:30:44 +00:00
Ariadne Conill da736b6add ppc64: chase API changes related to freestanding stuff
freestanding is however NOT supported here
2020-12-06 12:23:09 +00:00
Ariadne Conill 131e825f50 x86: add freestanding port 2020-12-06 11:37:19 +00:00
Ariadne Conill 9c0ffd8fbb x86: fix conflicts with musl headers + freestanding adaptations 2020-12-06 11:24:23 +00:00
Ariadne Conill 9aef11752f x86_64: add freestanding port 2020-12-06 03:22:27 -07:00
Ariadne Conill a8415a0c4e m68k: add freestanding bits.h file 2020-12-06 03:53:45 -06:00
Ariadne Conill c31decc3d4 build: use internal definitions to replace things pulled in from ucontext.h 2020-12-06 03:44:45 -06:00
Ariadne Conill 40c8016144 bits: alias greg_t as libucontext_greg_t in non-freestanding builds 2020-12-06 03:40:55 -06:00
Ariadne Conill 0953d71ed1 build: fill in more details for freestanding builds 2020-12-06 03:31:48 -06:00
Ariadne Conill 2979186379 common: define libucontext_ucontext_t for non-freestanding case 2020-12-06 03:18:41 -06:00
Ariadne Conill e65e485630 everywhere: rename __swapcontext to libucontext_swapcontext 2020-12-06 03:04:22 -06:00
Ariadne Conill 37fe7afd5f everywhere: rename __setcontext to libucontext_setcontext 2020-12-06 03:03:07 -06:00
Ariadne Conill 99ed5bbe12 everywhere: rename __getcontext to libucontext_getcontext 2020-12-06 03:02:25 -06:00
Ariadne Conill 2f31efaa95 everywhere: rename __start_context to better descriptive libucontext_trampoline 2020-12-06 02:59:59 -06:00
Ariadne Conill c693dc663c rename __makecontext to libucontext_makecontext 2020-12-06 02:56:59 -06:00
Ariadne Conill fe19127c66 build: add support for EXPORT_UNPREFIXED=no
In an EXPORT_UNPREFIXED=no build, getcontext/makecontext/setcontext/swapcontext
symbols are not provided.
2020-12-06 02:54:01 -06:00
Ariadne Conill 15ba7b039c m68k: add startcontext trampoline 2020-12-06 02:24:49 -06:00