From: Daniel Cederman <cederman@gaisler.com>
To: Adhemerval Zanella Netto <adhemerval.zanella@linaro.org>,
libc-alpha@sourceware.org
Cc: daniel@gaisler.com, andreas@gaisler.com
Subject: Re: [PATCH] sparc: Remove unwind information from signal return stub functions
Date: Mon, 15 Jan 2024 15:22:12 +0100 [thread overview]
Message-ID: <886f330f-c386-45a7-9105-1baf769a787b@gaisler.com> (raw)
In-Reply-To: <db60e945-f345-4d24-b180-714a620829ba@linaro.org>
On 2024-01-15 14:41, Adhemerval Zanella Netto wrote:
>
>
> On 12/01/24 06:26, Daniel Cederman wrote:
>> The functions were previously written in C, but were not compiled
>> with unwind information. The ENTRY/END macros includes .cfi_startproc
>> and .cfi_endproc which adds unwind information. This caused the
>> tests cleanup-8 and cleanup-10 in the GCC testsuite to fail.
>> This patch adds a version of the ENTRY/END macros without the
>> CFI instructions that can be used instead.
>>
>> sigaction registers a restorer address that is located two instructions
>> before the stub function. This patch adds a two instruction padding to
>> avoid that the unwinder accesses the unwind information from the function
>> that the linker has placed right before it in memory. This fixes an issue
>> with pthread_cancel that caused tst-mutex8-static (and other tests) to fail.
>>
>> This patch fixes the issues I have seen, but I am not sure if this is
>> the right solution, so any feedback is welcome!
>>
>> Signed-off-by: Daniel Cederman <cederman@gaisler.com>
>
> I am not sure this is the correct fix, at least on a sparc machine I
> do not any improvements on a sparcv9 build. But do I agree that this
With sparcv9 build, do you mean a 32-bit or 64-bit build? The patch only
targeted the 32-bit version of the stubs and it has been working fine
for me on both hardware and in QEMU.
> seems to be a wrong/missing unwind information for the signal return
> stub: the tst-mutex8-static does seems be on an infinite loop in the
> libgcc unwinder code.
>
> Does it help to restore the stub to be coded in C? It seems that the
Yes, that helps. And the only difference I noticed was that the assembly
version had unwind information while the C version did not.
> problem that lead to rewrite the stubs in assembly (b33e946fbb1659d)
> is mainly caused by '-fPIE/-fpic/-fPIC' which seems to generate a
> stack frame. I see it has started with gcc 8, and I am not sure if
> this is really required by sparc ABI or it is something related to
> to other compiler flags we are using (I tried to use
> -fno-asynchronous-unwind-tables -fno-exceptions to prevent it, but
> without much success).
>
next prev parent reply other threads:[~2024-01-15 14:22 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-01-12 9:26 [PATCH] sparc: Do not test preservation of NaN payloads for LEON Daniel Cederman
2024-01-12 9:26 ` [PATCH] sparc: Prevent stfsr from directly following floating-point instruction Daniel Cederman
2024-01-12 14:38 ` Adhemerval Zanella Netto
2024-01-15 9:37 ` Daniel Cederman
2024-01-12 9:26 ` [PATCH] sparc: Force calculation that raises exception Daniel Cederman
2024-01-12 16:45 ` Adhemerval Zanella Netto
2024-01-15 9:41 ` Daniel Cederman
2024-01-15 11:47 ` Adhemerval Zanella Netto
2024-01-12 9:26 ` [PATCH] sparc: Treat the version field in the FPU control word as reserved Daniel Cederman
2024-01-12 17:42 ` Adhemerval Zanella Netto
2024-02-15 9:31 ` Daniel Cederman
2024-02-19 14:55 ` Adhemerval Zanella Netto
2024-01-12 9:26 ` [PATCH] sparc: Fix llrint and llround missing exceptions on SPARC32 Daniel Cederman
2024-01-12 18:05 ` Adhemerval Zanella Netto
2024-01-15 14:38 ` Daniel Cederman
2024-01-15 17:52 ` Adhemerval Zanella Netto
2024-01-12 9:26 ` [PATCH] sparc: Remove unwind information from signal return stub functions Daniel Cederman
2024-01-15 13:41 ` Adhemerval Zanella Netto
2024-01-15 14:22 ` Daniel Cederman [this message]
2024-01-15 16:57 ` Adhemerval Zanella Netto
2024-01-16 15:37 ` [PATCH] sparc: Do not test preservation of NaN payloads for LEON Adhemerval Zanella Netto
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=886f330f-c386-45a7-9105-1baf769a787b@gaisler.com \
--to=cederman@gaisler.com \
--cc=adhemerval.zanella@linaro.org \
--cc=andreas@gaisler.com \
--cc=daniel@gaisler.com \
--cc=libc-alpha@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).