[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: NEED_REGISTER_FRAME_INFO can be replaced by -static-libgcc
From: |
Vladimir 'φ-coder/phcoder' Serbinenko |
Subject: |
Re: NEED_REGISTER_FRAME_INFO can be replaced by -static-libgcc |
Date: |
Sat, 17 Apr 2010 22:52:11 +0200 |
User-agent: |
Mozilla-Thunderbird 2.0.0.22 (X11/20091109) |
Christian Franke wrote:
> Vladimir 'φ-coder/phcoder' Serbinenko wrote:
>> Christian Franke wrote:
>>
>>> The *_frame_info symbols are set undefined to force linkage of the
>>> libgcc_s shared library or dll.
>>>
>>> This can be prevented by TARGET_LDFLAGS=-static-libgcc. To build from
>>> grub-1.98 tarball on Cygwin, run configure with this argument.
>>>
>>> May also be necessary on other build platforms when -shared-libgcc is
>>> the default. It may be possible simply set -static-libgcc
>>> unconditionally.
>>>
>>>
>> We already supply -lgcc --static-libgcc. Do you know why it still had
>> issues?
>>
>
> The above is only set when linking the kernel image.
>
> According to 'gcc -dumpspecs' of Cygwin gcc 4.3.4-3, options '-u
> ___[de]register_frame_info' are always passed to the linker if
> -static-libgcc is not specified. This is Cygwin and MinGW specific: In
> the exe startup code these symbols are loaded only if present, so the
> DLL must be forced to load first.
>
> As a consequence, the symbols are also set undefined when the GRUB
> pre-*.o files are generated with 'ld -r'.
>
> The attached patch works for me with the bzr revision preceding the
> NEED_REGISTER_FRAME_INFO fix.
>
Doesn't it risk linking e.g. __bswapsi2 into every module which uses it
during partial link? It would increase module size on RISC
>
>> And I also doubt usefullness of pulling these functions since reference
>> to them is purely dummy: no relocation uses it so it will only increase
>> code size. Another concern is the behviour of these functions in grub
>> environment if they ever get called.
>>
>>
>
> AFAICS from the gcc source, the functions are used in EH stack
> unwinding code in libgcc. The compiler itself does not generate calls
> to these functions.
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Grub-devel mailing list
> address@hidden
> http://lists.gnu.org/mailman/listinfo/grub-devel
--
Regards
Vladimir 'φ-coder/phcoder' Serbinenko
signature.asc
Description: OpenPGP digital signature