https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118802

--- Comment #12 from Iain Buclaw <ibuclaw at gcc dot gnu.org> ---
(In reply to Sam James from comment #1)
> The differences are odd.
> 
> ```
> $ diffoscope
> ./work/build/stage2-x86_64-pc-linux-gnu/32/libphobos/libdruntime/core/
> internal/gc/impl/conservative/gc.o
> ./work/build/stage3-x86_64-pc-linux-gnu/32/libphobos/libdruntime/core/
> internal/gc/impl/conservative/gc.o
> [...]
> 
> │ -Relocation section
> '.rel.data.rel.ro.
> _D52TypeInfo_S4core8internal2gc4impl12conservativeQw3Gcx6__initZ' at offset
> 0x3d1b8 contains 7 entries:
> │ +Relocation section
> '.rel.data.rel.ro.
> _D52TypeInfo_S4core8internal2gc4impl12conservativeQw3Gcx6__initZ' at offset
> 0x3d1b8 contains 6 entries:
> │   Offset     Info    Type                Sym. Value  Symbol's Name
> │  00000000  0003ad01 R_386_32               00000000  
> _D15TypeInfo_Struct6__vtblZ
> │  0000000c  00039701 R_386_32               00000000  
> _D52TypeInfo_S4core8internal2gc4impl12conservativeQw3Gcx6__initZ.3363
> │ -00000014  0003f001 R_386_32               00000000  
> _D4core8internal2gc4impl12conservativeQw3Gcx6__initZ
_D4core8internal2gc4impl12conservativeQw3Gcx6__initZ is the default initializer
symbol for `struct Gcx` found in the module
core/internal/gc/impl/conservative/gc.d

It's a compiler-generated type/data.  The laying out of all fields is done
here.

https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=gcc/d/typeinfo.cc;h=f548451c8ba52a83b3e353e5bb6b73fea25d5952;hb=HEAD#l1079

Note that the only reason why this initializer symbol would not be emitted here
is if `sd->zeroInit ()` returned true in the condition.

Reply via email to