| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When compiled without framepointer, the DWARF-2 CFI data is required
for proper stack unwinding.
This patch adds the CFI information to:
* syscalls (so we get proper backtrace even for release builds)
the ebx hack was removed as it would complicate the CFI generation
* new thread stub function (so the backtrace is clean for user
created threads)
Also pads the signal return trampolines separate from other functions.
If CFI info was found for signal return code (which seems to happen if
it's located right next a valid function), it will not be recognized
as signal trampoline (gcc unwinder and gdb check first CFI info, and
only if it does not exists it compares the exact opcode sequence to
see if we are at signal return code block). This fixes a real crash
if thread is cancelled and the cancellation handler fails to detect the
signal return frame.
Signed-off-by: Timo Teräs <timo.teras@iki.fi>
Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
|
|
|
|
|
|
|
|
|
|
| |
We should not check for SIGCANCEL in __libc_sigaction because nptl calls this
function to setup this signal. Nptl provides it's own override for sigaction
that checks that the user cannot override signals nptl uses internally.
Linuxthreads does not use SIGCANCEL at all so this affects nptl only.
Signed-off-by: Timo Teräs <timo.teras@iki.fi>
Signed-off-by: Austin Foxley <austinf@cetoncorp.com>
|
|
|
|
|
| |
Run tested on i386.
|
|
|
|
|
|
| |
"Bounds Checking Projects... This project has been abandoned"
for four years at least.
|
|
|
|
|
|
|
| |
fix _NSIG for it.
better document what's going on in sigaction().
seems to not induce any actual code changes (sans mips).
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In issue #5554 Michael wrote:
The implementation of sigaction on i386 for older kernels makes the system call using an inline asm element with two flaws:
1. The asm is not marked as depending on the kact structure or modifying the koact structure. Thus, GCC is free to assume these structures need not be kept consistent, allowing it to remove all initialization of kact.
2. The asm allows the signal number to be provided as a memory reference. But this allows GCC to provide a stack-relative operand, which will break because the assembler saves %ebx on the stack before using that operand.
1 didn't use to be a problem in practice because GCC 4.2.* didn't seize the optimization opportunity. GCC 4.3.2, however, optimizes out the "kact.sa_flags = act->sa_flags | SA_RESTORER;" line, so that the kernel sees garbage in sa_flags. This can result in the kernel seeing the SA_RESETHAND flag, causing erratic behaviour in signal dependent programs.
2 becomes an issue if "-fomit-frame-pointer" is provided. In uClibc-0.9.29 it isn't, uClibc-0.9.30-rc2 does use the flag by default.
|
| |
|
|
|
|
|
|
|
|
|
| |
in string.h and strings.h. This caught unguarded string ops in
libc/inet/ethers.c __ether_line_w() function.
I will wait for fallout reports for a week or so,
then continue converting more libc_hidden_proto's.
|
|
|
|
|
| |
from i386 and x86_64.
|
|
|
|
| |
to be weaks
|
| |
|
| |
|
|
|
|
| |
libpthread as well
|
| |
|
| |
|
|
|
|
| |
missing headers, other jump relocs removed
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
implementation such that gdb can actually debug signal handlers. Gdb behaves
much better now, for example, on multi-threaded apps.
-Erik
|