Commit Graph

140 Commits (da736b6add19eba9b07807065e893d304d58ef55)

Author SHA1 Message Date
A. Wilcox 467ee2916d
x86: Update copyright statement
Commit d0ccf2f96f contains the makecontext
fix from Adélie commit aaeb73ea701388e55b7640e32509a5f6a57f6350[1], as
seen at AdelieLinux/libucontext@aaeb73ea – but it didn't include the
addition of my author line.

The full commit text, for future documentation/reference, was:

```
x86: Write link pointer at correct stack offset

It must come *after* the parameters, not *before*.
```

Fixes: d0ccf2f96f ("x86: modernize")
Signed-off-by: A. Wilcox <AWilcox@Wilcox-Tech.com>

[1]: aaeb73ea70
2020-03-30 17:25:30 -05:00
Khem Raj e2178de76a Makefile: Add LIBDIR variable
This ensures that it can be installed into custom location and also

Upstream-Status: Submitted
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2020-03-30 08:21:52 +00:00
Ariadne Conill e040915105
Merge pull request #17 from awilfox/master
README: Remove support section
2020-03-30 02:11:55 -06:00
Ariadne Conill 136ebdffd9
Merge branch 'master' into master 2020-03-30 02:11:45 -06:00
Ariadne Conill b784d75440 README: drop gcompat mailing list mention 2020-03-30 08:10:19 +00:00
A. Wilcox d7688a41df
README: Remove support section
This is no longer a member of the gcompat family of projects;
remove the mention of that and the gcompat mailing list link.
2020-03-30 02:22:43 -05:00
Ariadne Conill e786bc9409 README: ARCH=mips64 does support N32 ABI in theory 2020-03-30 06:38:23 +00:00
Ariadne Conill 1ee8d2f360 add NEWS for pending 0.10 release 2020-03-30 06:36:08 +00:00
Ariadne Conill d7d746f44e s390x: modernize assembly code 2020-03-30 01:12:07 -05:00
Ariadne Conill ef42ad682a s390x: fix makecontext(3) implementation for passing arguments via stack 2020-03-30 01:04:16 -05:00
Ariadne Conill f708c95659 arm: modernize 2020-03-30 05:04:18 +00:00
Ariadne Conill fb27ad693b aarch64: modernize 2020-03-30 04:38:53 +00:00
Ariadne Conill b04da78fb8 mips: use REG_OFFSET 2020-03-30 04:07:41 +00:00
Ariadne Conill 08e8a41d6c mips64: use REG_OFFSET 2020-03-30 04:05:00 +00:00
Ariadne Conill 3d40ad902a readme: note mips support 2020-03-29 15:59:18 +00:00
Ariadne Conill add34ddac7 mips: add MIPS O32 ABI implementation (closes #2) 2020-03-29 15:54:32 +00:00
Ariadne Conill 01432abb3e test: swaps to f1 not main 2020-03-29 15:10:17 +00:00
Ariadne Conill d0ccf2f96f x86: modernize 2020-03-29 15:04:03 +00:00
Ariadne Conill d8cfe83e34 common: use REG_SZ, not SZ_REG in line with mips64 port for REG_OFFSET macro 2020-03-29 14:50:38 +00:00
Ariadne Conill 8631580fbb mips64: use ALIAS() macro for aliases 2020-03-29 14:37:13 +00:00
Ariadne Conill e00902b5b1 x86_64: modernize implementation 2020-03-29 14:27:40 +00:00
Ariadne Conill 2411cdfb54 common: add REG_OFFSET accesso 2020-03-29 14:27:19 +00:00
Ariadne Conill c385d69aa9 common: add ALIAS() macro 2020-03-29 14:12:23 +00:00
Ariadne Conill fd32a2fa8c common: factor out .ent handling 2020-03-29 14:03:18 +00:00
Ariadne Conill 2f4eb16f38 mips64: factor out frame management macros into arch/common/common-defs.h 2020-03-29 13:49:57 +00:00
Ariadne Conill 8536f1fa3b makefile: add include path for arch/common 2020-03-29 13:46:19 +00:00
Ariadne Conill 87f58af294 remove pointless gitignore entries 2020-03-29 13:44:06 +00:00
Ariadne Conill 7c60f4576c mips64: elide emulation of the magic flag crap glibc does 2020-03-29 13:40:32 +00:00
Ariadne Conill e8115eb013 test: add additional verbosity 2020-03-29 12:37:01 +00:00
Ariadne Conill 80a6ca3854 add mips64 implementation 2020-03-29 12:05:52 +00:00
Ariadne Conill f3a873e6e6 test: add additional verbosity 2020-03-29 12:05:00 +00:00
Ariadne Conill d696a0b692 tests: add additional verbosity 2020-03-27 12:43:09 +00:00
Ariadne Conill d31eaabbaf update copyright statements, add mailmap 2020-03-27 09:23:49 +00:00
Ariadne Conill 5f137a1fe4
Merge pull request #16 from gabrielivascu/master
Makefile: i386, i686 -> x86
2020-03-27 03:09:32 -06:00
Khem Raj 6cfab025e0 pass LDFLAGS to link step
This helps to use OE specific linker flags and fixes

do_package_qa: QA Issue: No GNU_HASH in the ELF binary

Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2020-03-27 08:54:56 +00:00
Gabriel Ivașcu acff6c83eb Makefile: i386, i686 -> x86 2019-10-22 18:08:47 +03:00
William Pitcock 0b4f9ecf33
Merge pull request #14 from gabrielivascu/master
Makefile: Handle static library at clean/install
2019-04-14 19:33:06 -05:00
Gabriel Ivașcu 2e15b38327 Makefile: Handle static library at clean/install 2019-04-12 10:48:24 +03:00
William Pitcock 05cb8ecbee
Merge pull request #13 from gabrielivascu/master
Build static library too
2019-04-11 13:17:18 -05:00
Gabriel Ivașcu 9cc1a2c0e6 Build static library too 2019-04-09 16:07:39 +03:00
William Pitcock 7599fe5ff2
Merge pull request #11 from koorogi/ppc-fixes
Ppc fixes
2019-04-06 10:30:37 -04:00
Bobby Bingham 2610c7faa7 ppc32/64: rewrite get/set/swapcontext in assembly
getcontext cannot be correctly implemented in C.

If this calls another function, as it does to call syscall, it needs to
first spill its return address to the stack.  If, after getcontext returns,
its caller then calls other functions, this saved return address can be
clobbered.  When the context saved by getcontext is later restored, the
(now clobbered) return address will be reloaded from the stack, and the
second return from getcontext will return to the wrong location.

Because the powerpc swapcontext syscall allows either the old context or
new context pointers to be null, it is usable for implementing all of
get/set/swapcontext.

We therefore rewrite swapcontext in assembly, and get/setcontext as simple
assembly function wrappers around swapcontext.

The one piece we keep in C is the code to check the return value of the
system call and to set errno.  This code was actually unnecessary before --
libc does this within syscall.  However, now that the system call is made
directly in assembly, bypassing libc, it is truly necessary.  Because errno
is thread-local and the details of how to set it can vary by libc, this
code remains written in C.
2019-04-05 14:44:54 -05:00
Bobby Bingham 90ff6330e6 ppc32/64: update copyright 2019-04-05 14:18:20 -05:00
Bobby Bingham 29eac4259a ppc32/64: remove unused includes 2019-04-05 14:18:20 -05:00
Bobby Bingham edf69879ea ppc64: remove unnecessary parentheses 2019-04-05 14:18:20 -05:00
Bobby Bingham 40d07758a5 ppc32/64: correct signature of function parameter to makecontext
Because makecontext can pass a set of integer arguments to the provided
function, it is incorrect to require that this function accept no
parameters.
2019-04-05 14:18:20 -05:00
Bobby Bingham a00a05ce29 ppc64: fix incorrect position of parameters within stack frame
On PPC64, there are 4 register-sized stack slots below the parameter save
area, which is different from the 2 stack slots on PPC32.
2019-04-05 14:18:20 -05:00
Bobby Bingham 8ea5f548b9 ppc64: fix makecontext with more than 8 parameters
The ELFv2 ABI used on PPC64 differs from the ELFv1 ABI used on PPC32 here.
On PPC64, once there are any parameters that need to be passed on the
stack, space needs to be reserved on the stack to pass all parameters.
Parameters 0-7 are still only passed by register, but if the callee needs
to spill them, it can use the stack space reserved for the corresponding
parameter to do so.
2019-04-05 14:18:20 -05:00
Bobby Bingham 55168fcb18 ppc32/64: simplify storage of stack parameters
The switch statement is simpler as an if/else, and removing the argp
variable makes the code more symmetric between the register and stack
parameter cases.
2019-04-05 14:18:20 -05:00
Bobby Bingham b500b054c7 ppc32/64: don't store uc_link on the stack
This was previously stored either in the CR (ppc64) or LR (ppc32) save
area of the stack, or to one of the parameter save slots.

In either case, the saved value was unused.  This value is also passed
to __start_context via r31, so there's no need to pass it on the stack.
2019-04-05 14:15:49 -05:00