--gc-sections and GDC

Mike via D.gnu d.gnu at puremagic.com
Wed Jul 16 07:12:22 PDT 2014


On Wednesday, 16 July 2014 at 13:52:57 UTC, Mike wrote:
> I received a question from Dicebot in at the end of my 
> presentation.  He asked about the --gc-sections linker flag 
> breaking code from GDC.
>
> I recently discovered how one can see why this is occurring, 
> and I hope this will help identify the problem and lead to a 
> solution.
>
> Compile any simple hello world program with the following gcc 
> command:
> gcc --verbose -Wl,--verbose test.c.
>
> Part of the output is GCC's internal linker script as shown 
> below.  I believe this is the source of the problem.  Here's my 
> theory.
>
> D is not C, and is likely generating code that the GCC internal 
> linker script doesn't know about.  This code may be incorrectly 
> identified as dead code because there is no 'link' to it and, 
> therefore, appears unused.  If D or GDC is generating any code 
> like this, it needs to be marked as KEEP in the linker script.  
> You can see examples of this in GCC's internal linker script 
> below.
>
> If my theory is correct, GDC may have to make an internal 
> linker script specifically for D's code generation that marks 
> such code as KEEP.
>
> I hope I'm not just blowing smoke.
>
> Mike

And I just checked with GDC...
gdc --verbose -Wl,--verbose test.d

... and the internal linker script is exactly the same as the C 
version.  That doesn't seem right to me.  I would expect them to 
be at least a little different.

Mike


More information about the D.gnu mailing list