--gc-sections and GDC

Iain Buclaw via D.gnu d.gnu at puremagic.com
Wed Jul 16 14:09:35 PDT 2014


On 16 July 2014 21:03, Johannes Pfau via D.gnu <d.gnu at puremagic.com> wrote:
> Am Wed, 16 Jul 2014 15:35:09 +0100
> schrieb "Iain Buclaw via D.gnu" <d.gnu at puremagic.com>:
>
>> On 16 July 2014 15:12, Mike via D.gnu <d.gnu at puremagic.com> wrote:
>> > 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
>>
>> Using a D-specific linker script in is outside the scope of GDC
>> itself.  I'd have to make a patch to Binutils.
>>
>> And yes, a bespoke linker script would solve many problems that are
>> currently managed by the compiler.
>>
>> Regards
>> Iain
>
> Please don't start working on a D specific linker script, cause I'm
> already working on that ;-) I've only done moduleinfo so far, but TLS
> is next, then shared library support.

I wish I could clone you.


More information about the D.gnu mailing list