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

--- Comment #23 from Tristan Gingold <gingold at adacore dot com> ---
On 11/05/2017 10:11, iains at gcc dot gnu.org wrote:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80556
>
> --- Comment #22 from Iain Sandoe <iains at gcc dot gnu.org> ---
> (In reply to Tristan Gingold from comment #21)
>> On 11/05/2017 09:44, iains at gcc dot gnu.org wrote:
>>> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80556
>>>
>>> --- Comment #20 from Iain Sandoe <iains at gcc dot gnu.org> ---
>>> (In reply to Tristan Gingold from comment #19)
>>>> On 10/05/2017 18:04, dominiq at lps dot ens.fr wrote:
>>>>> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80556
>>>>
>>>>> In the commit r247301 I see in gcc/ada/gcc-interface/Make-lang.in
>>>>>
>>>>> --- trunk/gcc/ada/gcc-interface/Make-lang.in    2017/04/27 09:44:28     
>>>>> 247300
>>>>> +++ trunk/gcc/ada/gcc-interface/Make-lang.in    2017/04/27 09:48:45     
>>>>> 247301
>>>>> @@ -99,6 +99,8 @@
>>>>>  ada-warn = $(ADA_CFLAGS) $(filter-out -pedantic, $(STRICT_WARN))
>>>>>  # Unresolved warnings in specific files.
>>>>>  ada/adaint.o-warn = -Wno-error
>>>>> +# For unwind-pe.h
>>>>> +CFLAGS-ada/raise-gcc.o += -I$(srcdir)/../libgcc -Iinclude
>>>>>
>>>>>  ada/%.o: ada/gcc-interface/%.c
>>>>>         $(COMPILE) $<
>>>>>
>>>>> Isn't this wrong for darwin?
>>>>
>>>> Why ?
>>>>
>>>> The header unwind-pe.h is needed for the personality routine.
>>>
>>> What we need to do is to remove the (use of) libgcc_s and not use libgcc_eh
>>> (static-libgcc) for Darwin > 10, since the unwinder is now in
>>> usr/lib/system/libunwind.dylib.
>>>
>>> Needs two chunks (1) move the content for TLS emulation somewhere else, 
>>> since
>>> that's a reason to need libgcc_s (2) adjust the use of libgcc for Darwin > 
>>> 10
>>> to not include libgcc_eh for -static-libgcc.  I have some patches for gcc-5 
>>> and
>>> 6 that do this, will forward-port them.
>>
>> Great!
>
> .. but might not be 'this week' ;-)
>
>
>>> I'm a little surprised that we need explicit -static-libstdc++ for gnat, the
>>> rest of the compiler already handles this?
>>
>> We just need to remove -static-libgcc but keep -static-libstdc++
>
> OK. So looking at the breaking rev. (and to check I've understood correctly) -
> the change switches gnat from using setjmp/longjmp to using DWARF unwinding
> (and thus exposes the incompatibility)?

Yes.

> In the short-term, what ought to work is to ensure that -lSystem appears 
> before
> any -lgcc on the link line (so that the correct unwinder is used), and to
> remove -static-libgcc.

Might work too.

> TBH static-libgcc should actually work unless gnat is now pulling in any other
> system libraries which cause two unwinders to be present - I guess it might 
> be?

No, I think static-libgcc cannot work because it is not able to get the 
address of the unwind tables (on recent Darwin versions).

> (probably, as an aside, we ought to look at putting libstdc++ on top of
> libc++abi instead of libsupc++ - but that's on the TODO, no patches yet).

Hum, yes.

Reply via email to