All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Vladimir 'φ-coder/phcoder' Serbinenko" <phcoder@gmail.com>
To: The development of GNU GRUB <grub-devel@gnu.org>
Subject: Re: NEED_REGISTER_FRAME_INFO can be replaced by -static-libgcc
Date: Sat, 17 Apr 2010 22:52:11 +0200	[thread overview]
Message-ID: <4BCA1F7B.7080601@gmail.com> (raw)
In-Reply-To: <4BC59A74.5080900@t-online.de>

[-- Attachment #1: Type: text/plain, Size: 2128 bytes --]

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
> Grub-devel@gnu.org
> http://lists.gnu.org/mailman/listinfo/grub-devel


-- 
Regards
Vladimir 'φ-coder/phcoder' Serbinenko



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 293 bytes --]

  reply	other threads:[~2010-04-17 20:52 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-04-13 19:10 NEED_REGISTER_FRAME_INFO can be replaced by -static-libgcc Christian Franke
2010-04-13 19:24 ` Vladimir 'φ-coder/phcoder' Serbinenko
2010-04-14 10:35   ` Christian Franke
2010-04-17 20:52     ` Vladimir 'φ-coder/phcoder' Serbinenko [this message]
2010-04-19 15:13       ` Christian Franke
2010-04-24 21:19     ` Vladimir 'φ-coder/phcoder' Serbinenko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4BCA1F7B.7080601@gmail.com \
    --to=phcoder@gmail.com \
    --cc=grub-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.