Created attachment 355772 [details]
Testing program for gcc test suite
This was found by Uros Bizjak using the gcc test suite.
Testing program is attached. Compile with -fexceptions -fnon-call-exceptions -O2
On broken glibc/alpha, it yields this output:
RA = 0x120000cbc, CFA = 0x11fd9cde0
RA = 0x120000cf4, CFA = 0x11fd9cde0
RA = 0x120000d18, CFA = 0x11fd9cdf0
RA = 0x120000d3c, CFA = 0x11fd9cdf0
RA = 0x2000009cee0, CFA = 0x11fd9ce00
RA = (nil), CFA = 0x11fd9d088
The (nil) should not be there but rather a proper address. From Uros' report:
The return address is deduced from RT signal context, but for some
reason it is wrong now (nil). The breakage is system wide and is not
dependent on gcc or libgcc version.
I will mask glibc-2.17 on alpha in a moment.
when you dekeyword things in toolchain ebuilds, don't just delete the keyword. a missing keyword means it'll get built (and maybe runtime) tested before ~arch gets added back. if you want to actually indicate support is actively disabled, use -arch instead.
(In reply to Tobias Klausmann from comment #0)
seems to me that glibc-2.16 fails the same way. can you confirm/deny ?
(In reply to SpanKY from comment #2)
> (In reply to Tobias Klausmann from comment #0)
> seems to me that glibc-2.16 fails the same way. can you confirm/deny ?
Indeed, freshly made chroot with only glibc updated to 2.16.0:
RA = 0x120000bfc, CFA = 0x11fd091c0
RA = 0x120000c34, CFA = 0x11fd091c0
RA = 0x120000c58, CFA = 0x11fd091d0
RA = 0x120000c7c, CFA = 0x11fd091d0
RA = 0x200000a29f0, CFA = 0x11fd091e0
RA = (nil), CFA = 0x11fd09468
bisecting these earlier versions are a pita as glibc-ports is a sep repo :/
Created attachment 363228 [details, diff]
Patch from Richard. Seems to work.
RA = 0x120000c44, CFA = 0x11fc9e800
RA = 0x120000c78, CFA = 0x11fc9e810
RA = 0x200000b49d0, CFA = 0x11fc9e820
RA = 0x120000aac, CFA = 0x11fc9eb58
RA = 0x120000b38, CFA = 0x11fc9eb90
RA = 0x120000b58, CFA = 0x11fc9ec30
RA = 0x1200008e8, CFA = 0x11fc9ec40
RA = 0x2000009ad00, CFA = 0x11fc9ec50
I've tested with glibc-2.17, but should be applied to 2.16, 2.17, and 2.18. Please apply.
added to glibc 2.16 & 2.17
still need to do 2.18
added to 2.18 now