Object file questions

Timo Sintonen via D.gnu d.gnu at puremagic.com
Thu Aug 14 10:53:32 PDT 2014


On Thursday, 14 August 2014 at 17:13:23 UTC, Johannes Pfau wrote:
> Am Thu, 14 Aug 2014 10:07:04 +0000
> schrieb "Timo Sintonen" <t.sintonen at luukku.com>:
>
>> I have been looking at object files to see if I can reduce the 
>> memory usage for minimum systems. There are two things I have 
>> noticed:
>> 
>> 1. In the data segment there is some source code as ascii text 
>> from a template in gcc/atomics.d . This is in the actual data 
>> segment and not in debug info segments and goes into the data 
>> segment of the executable. I do not see any code using this 
>> data. Why is this in the executable and is it possible to 
>> remove it?
>> 
>
> Strange, could you post a testcase?
It seems this comes from libdruntime and it exists in object.o 
and core/atomic.o, Testcase is to compile minlibd library as it 
is currently in the repo using the makefile as such.
But I think it will be in any object file that imports 
gcc.atomics and uses the template in there.

>
>> 2. In the data segment there is also __init for all types. I 
>> assume that they contain the initial values that are copied 
>> when a new object of this type is created.
>
> Correct, it's for '.init' (there's especially 
> __..._TypeInfo_init which
> is the initializer for typeinfo. I've implemented -fno-rtti in 
> a private
> git branch to get rid of typeinfo)
>
>> Is this data mutable and should it really be in data segment 
>> and not in rodata?
>> 
>
> I think it should be in rodata.

So it is not a bug and not a feature. It is just because it does 
not matter? Maybe a feature request?


More information about the D.gnu mailing list