This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug ada/81361] [8 regression] broken exception handling at -O2


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81361

--- Comment #9 from Iain Sandoe <iains at gcc dot gnu.org> ---
(In reply to Eric Botcazou from comment #7)
> Created attachment 42177 [details]
> Tentative fix
> 
> Lightly tested on Darwin and Linux so far.

Hi Eric,

Will look at this patch shortly; 

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.  It's
quite possible that this can get broken since that constraint doesn't apply to
BINUTILS ld, so will go unnoticed there. ld64 also doesn't like 0-length FDEs
(actually, I'm not really sure why BINUTILS doesn't warn on that too, since
it's nonsensical, and at least a waste of binary space and linker parse time).

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.

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.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]