summary |
shortlog | log |
commit |
commitdiff |
tree
first ⋅ prev ⋅ next
Mathieu Desnoyers [Wed, 15 Dec 2021 15:56:52 +0000 (10:56 -0500)]
ppc rseq thread pointer: add extended asm
It appears that using "register void *__result asm ("r2")" is not sufficient
to guarantee that the compiler will indeed use this register. It's documented
as being just a hint that the compiler is free to optimize away. [1]
However, when used as input or output operands when calling Extended
asm, the use of the register is forced, which is our intent:
"The only supported use for this feature is to specify registers for input
and output operands when calling Extended asm (see Extended Asm). This may
be necessary if the constraints for a particular machine don't provide sufficient
control to select the desired register. To force an operand into a register,
create a local variable and specify the register name after the variable's
declaration. Then use the local variable for the asm operand and specify
any constraint letter that matches the register: [...]"
Link: https://gcc.gnu.org/onlinedocs/gcc-6.1.0/gcc/Local-Register-Variables.html
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I30ba3cc163a6e52cee5df0ba6806a4a5f9ec97d6
Mathieu Desnoyers [Tue, 14 Dec 2021 20:30:20 +0000 (15:30 -0500)]
Introduce rseq-generic-thread-pointer.h
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ie1cf34d64626babd5d81bad5b1f00de88173f1b6
Mathieu Desnoyers [Tue, 14 Dec 2021 18:39:14 +0000 (13:39 -0500)]
rseq thread pointer: extern C
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ibd91f0a8c831b5080a52a5e3bdab2358758068f7
Mathieu Desnoyers [Tue, 14 Dec 2021 18:27:06 +0000 (13:27 -0500)]
Introduce RSEQ_GET_ABI_OVERRIDE
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I17c2a2f15b4e45cb95785ff03424a662ca74bbd2
Mathieu Desnoyers [Tue, 14 Dec 2021 18:24:54 +0000 (13:24 -0500)]
Add missing rseq thread pointer headers to makefile
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I0aecd00cc91dde3b99083d12516ca8aa1a76c55f
Mathieu Desnoyers [Tue, 14 Dec 2021 18:23:55 +0000 (13:23 -0500)]
Introduce rseq-thread-pointer.h
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I89469b2af7da6159ae3348747caab3a33d3b6118
Mathieu Desnoyers [Mon, 13 Dec 2021 15:40:54 +0000 (10:40 -0500)]
Update librseq to co-exist with glibc rseq integration
Update librseq to co-exist with the rseq integration merged within the
glibc 2.35 release cycle.
librseq exposes its own "rseq_offset, rseq_size, rseq_flags" ABI.
Query for glibc rseq ABI (__rseq_offset, __rseq_size, __rseq_flags)
using dlsym() in a librseq library constructor. If those are found,
copy their values into rseq_offset, rseq_size, and rseq_flags.
Else, if those glibc symbols are not found, handle rseq registration
ourselves and use our own IE-model TLS to implement the rseq ABI
per-thread storage.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I1220cb5c31e823e9cddf211ec56fee03b729b137
Mathieu Desnoyers [Mon, 13 Dec 2021 20:13:49 +0000 (15:13 -0500)]
Remove rseq_deref_loadoffp placeholders
Remove those empty placeholders.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ic40e350c27ccc3da4168a4107cd206da0a08b68e
Michael Jeanson [Tue, 14 Dec 2021 18:09:28 +0000 (13:09 -0500)]
Add git-review config
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ic3794a3a323d0865b0ac714077c1e2aecfb0a444
Michael Jeanson [Fri, 19 Mar 2021 17:45:34 +0000 (13:45 -0400)]
Modernize autotools setup
This is part of an effort to standardise our autotools setup across
project to simplify maintenance.
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Michael Jeanson [Mon, 13 Jul 2020 15:27:27 +0000 (11:27 -0400)]
Skip the tests if the rseq syscall is unavailable
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Michael Jeanson [Wed, 8 Jul 2020 21:09:36 +0000 (17:09 -0400)]
Convert test suite to the TAP test protocol
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 9 Jul 2020 15:10:52 +0000 (11:10 -0400)]
Remove __rseq_handled declaration
Adapt to glibc's ABI.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 8 Jul 2020 21:13:58 +0000 (17:13 -0400)]
Add parametrized tests
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 8 Jul 2020 21:09:54 +0000 (17:09 -0400)]
Add basic test
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 8 Jul 2020 20:45:47 +0000 (16:45 -0400)]
Cleanup: powerpc: Use "long" and "int" to clarify load/store macros
Using "WORD" to mean either a 32-bit or 64-bit type depending on
the architecture is misleading. The term "WORD" really means a
32-bit type in both 32-bit and 64-bit powerpc assembler. The intent
here is to wrap load/store to intptr_t into common macros for both
32-bit and 64-bit.
Rename the macros with a RSEQ_ prefix, and use the terms "INT"
for always 32-bit type, and "LONG" for architecture bitness-sized
type.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 8 Jul 2020 14:01:14 +0000 (10:01 -0400)]
Fix: powerpc: Add missing instruction selection "u" and "x" for load/store
Building the rseq basic test with
gcc version 5.4.0
20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.12)
Target: powerpc-linux-gnu
leads to these errors:
/tmp/ccieEWxU.s: Assembler messages:
/tmp/ccieEWxU.s:118: Error: syntax error; found `,', expected `('
/tmp/ccieEWxU.s:118: Error: junk at end of line: `,8'
/tmp/ccieEWxU.s:121: Error: syntax error; found `,', expected `('
/tmp/ccieEWxU.s:121: Error: junk at end of line: `,8'
/tmp/ccieEWxU.s:626: Error: syntax error; found `,', expected `('
/tmp/ccieEWxU.s:626: Error: junk at end of line: `,8'
/tmp/ccieEWxU.s:629: Error: syntax error; found `,', expected `('
/tmp/ccieEWxU.s:629: Error: junk at end of line: `,8'
/tmp/ccieEWxU.s:735: Error: syntax error; found `,', expected `('
/tmp/ccieEWxU.s:735: Error: junk at end of line: `,8'
/tmp/ccieEWxU.s:738: Error: syntax error; found `,', expected `('
/tmp/ccieEWxU.s:738: Error: junk at end of line: `,8'
/tmp/ccieEWxU.s:741: Error: syntax error; found `,', expected `('
/tmp/ccieEWxU.s:741: Error: junk at end of line: `,8'
Makefile:581: recipe for target 'basic_percpu_ops_test.o' failed
Based on discussion with Linux powerpc maintainers and review of
the use of the "m" operand in powerpc kernel code, add the missing
%Un%Xn (where n is operand number) to the lwz, stw, ld, and std
instructions when used with "m" operands.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Tue, 7 Jul 2020 16:47:47 +0000 (12:47 -0400)]
Wire up basic percpu ops test
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Tue, 7 Jul 2020 15:58:12 +0000 (11:58 -0400)]
Add basic percpu ops test
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Tue, 7 Jul 2020 15:46:32 +0000 (11:46 -0400)]
Adapt rseq registration to glibc's userspace ABI for __rseq_abi
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 5 Jun 2020 18:33:37 +0000 (14:33 -0400)]
Update man page based on Michael Kerrisk's comments
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 5 Jun 2020 18:22:50 +0000 (14:22 -0400)]
Update rseq.2 man page
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 5 Jun 2020 18:11:53 +0000 (14:11 -0400)]
Wire up man pages build
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 5 Jun 2020 18:06:18 +0000 (14:06 -0400)]
Initial import of rseq.2 man page
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 5 Jun 2020 17:36:16 +0000 (13:36 -0400)]
Remove do_on_cpu dependencies
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 5 Jun 2020 17:30:35 +0000 (13:30 -0400)]
Remove do_on_cpu (prototype)
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 19 Sep 2019 14:05:01 +0000 (10:05 -0400)]
Cleanup: cplusplus ifdef coding style update
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Matthew Glazar [Thu, 19 Sep 2019 06:18:02 +0000 (23:18 -0700)]
Allow using librseq APIs from C++ code
If you call librseq APIs like rseq_available and
rseq_register_current_thread from C++ code, linking fails:
rseq.cpp:365: undefined reference to `rseq_available()'
rseq.cpp:46: undefined reference to `rseq_register_current_thread()'
Tell the C++ compiler to treat librseq's exported APIs as having C
mangling, fixing these linker errors.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 7 Aug 2019 15:03:20 +0000 (11:03 -0400)]
memcpy: copy 8 bytes loop
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 26 Jul 2019 18:57:20 +0000 (14:57 -0400)]
Bump do_on_cpu system call number to 434
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 26 Jul 2019 13:43:38 +0000 (09:43 -0400)]
Implement percpu_fence()
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 26 Jul 2019 01:24:48 +0000 (21:24 -0400)]
Fix: add missing do-on-cpu-insn.h to make dist
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 24 Jul 2019 12:33:44 +0000 (13:33 +0100)]
Move to do_on_cpu system call
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Sun, 30 Jun 2019 13:41:15 +0000 (09:41 -0400)]
Add ARM big-endian support to rseq headers
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Sun, 30 Jun 2019 13:32:40 +0000 (09:32 -0400)]
Fix: Thumb mode build failure on arm32
Using ".arm .inst" for the arm signature introduces build issues for
programs compiled in Thumb mode because the assembler stays in the
arm mode for the rest of the inline assembly. Revert to using a ".word"
to express the signature as data instead.
The choice of signature is a valid trap instruction on arm32 little
endian, where both code and data are little endian.
ARMv6+ big endian (BE8) generates mixed endianness code vs data:
little-endian code and big-endian data. The data value of the signature
needs to have its byte order reversed to generate the trap instruction.
Prior to ARMv6, -mbig-endian generates big-endian code and data
(which match), so the endianness of the data representation of the
signature should not be reversed. However, the choice between BE32
and BE8 is done by the linker, so we cannot know whether code and
data endianness will be mixed before the linker is invoked. So rather
than try to play tricks with the linker, the rseq signature is simply
data (not a trap instruction) prior to ARMv6 on big endian. This is
why the signature is expressed as data (.word) rather than as
instruction (.inst) in assembler.
Because a ".word" is used to emit the signature, it will be interpreted
as a literal pool by a disassembler, not as an actual instruction.
Considering that the signature is not meant to be executed except in
scenarios where the program execution is completely bogus, this should
not be an issue.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Acked-by: Will Deacon <will.deacon@arm.com>
Mathieu Desnoyers [Mon, 29 Apr 2019 15:28:02 +0000 (11:28 -0400)]
rseq/selftests: mips: use break instruction for RSEQ_SIG
Use break as guard instruction for the restartable sequence abort
handler.
Previously, the chosen signature was simply data, based on the
assumption that it could always sit in a literal pool. However,
some compilation environments favor disabling literal pool. Therefore,
ensure the signature is a valid uncommon trap instruction.
commit
16b96b6ed87f "rseq/selftests: mips: use break instruction for
RSEQ_SIG" in the Linux kernel.
Suggested-by: Paul Burton <paul.burton@mips.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 29 Apr 2019 15:28:01 +0000 (11:28 -0400)]
rseq/selftests: powerpc code signature: generate valid instructions
Use "twui" as the guard instruction for the restartable sequence abort
handler.
commit
496fd0fc9f5c "rseq/selftests: powerpc code signature: generate valid
instructions" in the Linux kernel.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 29 Apr 2019 15:28:00 +0000 (11:28 -0400)]
rseq/selftests: aarch64 code signature: handle big-endian environment
Handle compiling with -mbig-endian on aarch64, which generates binaries
with mixed code vs data endianness (little endian code, big endian
data).
Else mismatch between code endianness for the generated signatures and
data endianness for the RSEQ_SIG parameter passed to the rseq
registration will trigger application segmentation faults when the
kernel try to abort rseq critical sections.
commit
7cd4ce2e466f "rseq/selftests: aarch64 code signature: handle
big-endian environment" in the Linux kernel.
Acked-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 3 May 2019 19:38:58 +0000 (15:38 -0400)]
rseq/selftests: arm: use udf instruction for RSEQ_SIG
Use udf as the guard instruction for the restartable sequence abort
handler.
Previously, the chosen signature was not a valid instruction, based
on the assumption that it could always sit in a literal pool. However,
there are compilation environments in which literal pools are not
available, for instance execute-only code. Therefore, we need to
choose a signature value that is also a valid instruction.
Handle compiling with -mbig-endian on ARMv6+, which generates binaries
with mixed code vs data endianness (little endian code, big endian
data).
Else mismatch between code endianness for the generated signatures and
data endianness for the RSEQ_SIG parameter passed to the rseq
registration will trigger application segmentation faults when the
kernel try to abort rseq critical sections.
Prior to ARMv6, -mbig-endian generates big-endian code and data, so
endianness should not be reversed in that case.
commit
2b845d4b4acd "rseq/selftests: arm: use udf instruction for RSEQ_SIG"
in the Linux kernel.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Martin Schwidefsky [Mon, 29 Apr 2019 15:27:58 +0000 (11:27 -0400)]
rseq/selftests: s390: use trap4 for RSEQ_SIG
Use trap4 as the guard instruction for the restartable sequence abort
handler.
commit
3d4d1f05bc99 "rseq/selftests: s390: use trap4 for RSEQ_SIG"
in the Linux kernel.
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 29 Apr 2019 15:27:57 +0000 (11:27 -0400)]
rseq/selftests: x86: use ud1 instruction as RSEQ_SIG opcode
Use ud1 as the guard instruction for the restartable sequence abort
handler. Its benefit compared to nopl is to trap execution if the
program ends up trying to execute it by mistake, which makes debugging
easier.
The 4-byte signature per se is unchanged (it is the instruction
operand). Only the opcode is changed from nopl to ud1.
commit
24fa5d1efe98 "rseq/selftests: x86: use ud1 instruction as RSEQ_SIG
opcode" in the Linux kernel.
Suggested-by: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Tue, 28 May 2019 12:56:12 +0000 (08:56 -0400)]
Remove volatile, use READ/WRITE ONCE
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Tue, 23 Apr 2019 18:56:11 +0000 (14:56 -0400)]
cpu-op: change _mb_ API to _release
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Tue, 23 Apr 2019 18:51:52 +0000 (14:51 -0400)]
cpu-op: add add_release API
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Tue, 23 Apr 2019 18:46:44 +0000 (14:46 -0400)]
cpu-op lib: Change code layout to remove gcc-4.8 warnings
gcc-4.8 seems to mistakenly think there are missing field initializers
in the cpu-op.c code, e.g.:
cpu-op.c: In function ‘cpu_op_cmpxchg’:
cpu-op.c:94:4: warning: missing initializer for field ‘src’ of ‘struct <anonymous>’ [-Wmissing-field-initializers]
.u.memcpy_op.src = (unsigned long)n,
Change the code layout so these warnings are not triggered.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Tue, 23 Apr 2019 18:25:35 +0000 (14:25 -0400)]
Extend extra/README
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Michael Jeanson [Mon, 22 Apr 2019 20:46:37 +0000 (16:46 -0400)]
Add embedded rseq/opv headers for test builds
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Tue, 23 Apr 2019 15:37:30 +0000 (11:37 -0400)]
rseq: set refcount back to 1 on unregister failure
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Michael Jeanson [Mon, 22 Apr 2019 20:21:43 +0000 (16:21 -0400)]
Add configure report
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Michael Jeanson [Mon, 22 Apr 2019 19:48:31 +0000 (15:48 -0400)]
Update macros from the autoconf archive
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 22 Apr 2019 15:17:12 +0000 (11:17 -0400)]
rseq/selftests: x86: Work-around bogus gcc-8 optimisation
At least the following versions of gcc-8:
- gcc version 8.0.1
20180414 (experimental) [trunk revision 259383] (Ubuntu 8-
20180414-1ubuntu2)
- gcc 8.2.0-7ubuntu1 (Ubuntu 18.10 (Cosmic)),
- gcc 8.3.0
generate broken assembler with asm goto that have a thread-local storage
"m" input operand on both x86-32 and x86-64. For instance:
__thread int var;
static int fct(void)
{
asm goto ( "jmp %l[testlabel]\n\t"
: : [var] "m" (var) : : testlabel);
return 0;
testlabel:
return 1;
}
int main()
{
return fct();
}
% gcc-8 -O2 -o test-asm-goto test-asm-goto.c
/tmp/ccAdHJbe.o: In function `main':
test-asm-goto.c:(.text.startup+0x1): undefined reference to `.L2'
collect2: error: ld returned 1 exit status
% gcc-8 -m32 -O2 -o test-asm-goto test-asm-goto.c
/tmp/ccREsVXA.o: In function `main':
test-asm-goto.c:(.text.startup+0x1): undefined reference to `.L2'
collect2: error: ld returned 1 exit status
Work-around this compiler bug in the rseq-x86.h header by passing the
address of the __rseq_abi TLS as a register operand rather than using
the "m" input operand.
Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90193
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 27 Mar 2019 19:56:59 +0000 (15:56 -0400)]
s390: use jg instruction for jumps outside of the asm
The branch target range of the "j" instruction is 64K, which is not
enough for the general case.
Suggested-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 25 Mar 2019 02:43:22 +0000 (22:43 -0400)]
Introduce __rseq_handled and rseq_ownership
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Sun, 24 Mar 2019 15:27:11 +0000 (11:27 -0400)]
Remove "weak" attribute from symbols
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 13 Mar 2019 20:59:06 +0000 (16:59 -0400)]
Update exit points comments
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 13 Mar 2019 20:21:41 +0000 (16:21 -0400)]
Update arm64 SPDX license identifier
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 13 Mar 2019 17:20:42 +0000 (13:20 -0400)]
Introduce __rseq_cs_ptr_array, rename __rseq_table to __rseq_cs
The entries within __rseq_table are aligned on 32 bytes due to
linux/rseq.h struct rseq_cs uapi requirements, but the start of the
__rseq_table section is not guaranteed to be 32-byte aligned. It can
cause padding to be added at the start of the section, which makes it
hard to use as an array of items by debuggers.
Considering that __rseq_table does not really consist of a table due to
the presence of padding, rename this section to __rseq_cs.
Create a new __rseq_cs_ptr_array section which contains 64-bit packed
pointers to entries within the __rseq_cs section.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 13 Mar 2019 15:41:01 +0000 (11:41 -0400)]
Add __rseq_exit_point_array section for debuggers
Knowing all exit points is useful to assist debuggers stepping over the
rseq critical sections without requiring them to disassemble the content
of the critical section to figure out the exit points.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 13 Mar 2019 15:18:56 +0000 (11:18 -0400)]
Add arm64 rseq header
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Michael Jeanson [Mon, 11 Mar 2019 19:59:22 +0000 (15:59 -0400)]
Autotools all the things!
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Michael Jeanson [Mon, 11 Mar 2019 19:26:57 +0000 (15:26 -0400)]
Clarify licensing and update to SPDX 3.0 identifiers
See this article for more details on the new GNU identifiers :
https://spdx.org/news/news/2018/01/license-list-30-released
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Sat, 27 Oct 2018 23:33:53 +0000 (19:33 -0400)]
Update to follow cpu-opv uapi
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 24 Oct 2018 11:54:25 +0000 (07:54 -0400)]
Use __rseq_refcount symbol
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 11 Oct 2018 15:23:40 +0000 (11:23 -0400)]
rseq: error out on refcount overflow/underflow
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 10 Oct 2018 16:15:46 +0000 (12:15 -0400)]
rseq available check: use documented behavior
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Tue, 9 Oct 2018 19:31:10 +0000 (15:31 -0400)]
Test rseq and cpu_opv availability
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Tue, 9 Oct 2018 18:59:09 +0000 (14:59 -0400)]
Update percpu ops test and header
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Sun, 7 Oct 2018 18:03:12 +0000 (14:03 -0400)]
Update test makefile
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Sun, 7 Oct 2018 17:19:15 +0000 (13:19 -0400)]
Add percpu ops test
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 3 Oct 2018 21:24:09 +0000 (17:24 -0400)]
Implement availability API checks
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 3 Oct 2018 21:04:18 +0000 (17:04 -0400)]
Add cpu-opv helpers
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 1 Oct 2018 20:46:35 +0000 (16:46 -0400)]
Update readme markdown
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 1 Oct 2018 20:34:20 +0000 (16:34 -0400)]
Install rseq headers
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 1 Oct 2018 20:30:36 +0000 (16:30 -0400)]
Makefile: install/uninstall targets
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 1 Oct 2018 20:24:20 +0000 (16:24 -0400)]
Update readme
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 1 Oct 2018 20:22:28 +0000 (16:22 -0400)]
Update makefile and readme
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 1 Oct 2018 20:19:33 +0000 (16:19 -0400)]
Update requirements
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 1 Oct 2018 20:15:03 +0000 (16:15 -0400)]
Add s390 target
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 1 Oct 2018 20:12:42 +0000 (16:12 -0400)]
Initial import
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 1 Oct 2018 20:05:41 +0000 (16:05 -0400)]
Initial commit
This page took 0.036484 seconds and 4 git commands to generate.