This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug ada/81361] [8 regression] broken exception handling at -O2
- From: "ebotcazou at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Fri, 15 Sep 2017 09:48:16 +0000
- Subject: [Bug ada/81361] [8 regression] broken exception handling at -O2
- Auto-submitted: auto-generated
- References: <bug-81361-4@http.gcc.gnu.org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81361
--- Comment #11 from Eric Botcazou <ebotcazou at gcc dot gnu.org> ---
> Darwin's linker (ld64) needs code/data to be separable into "atoms" =>
> non-zero-length chunks of code/data starting with a linker-visible label.
My initial assumption, but I don't think so in the end.
> I'm starting to look at the Darwin hot/cold partitioning issues (which have
> produced these problems in the past, e.g. 81033, I suspect), but a lot of
> state to re-load since I've not been able to put many cycles into Darwin
> recently.
You can reproduce the failure without hot/cold partitioning: compile the
reduced testcase at -O2 and manually edit the assembly file, remove the
partioning and you get the same outcome; the key is the presence of the 2nd
FDE.
> Anything that's common with Linux is definitely useful, but it's possible
> that Darwin will have additional fallout from changes that affect the
> splitting of code into such "atom" chunks.
I think it's a bug in the CFI machinery, either assembler or unwinder.