June 20, 2016
http://bugzilla.gdcproject.org/show_bug.cgi?id=231

            Bug ID: 231
           Summary: Some template mixins symbols get defined in output
                    object files, although they shouldn't
           Product: GDC
           Version: 5.x
          Hardware: All
                OS: All
            Status: NEW
          Severity: normal
          Priority: Normal
         Component: gdc
          Assignee: ibuclaw@gdcproject.org
          Reporter: sebastien.alaiwan@gmail.com

I stumbled upon this while trying to build latest GtkD with gdc 5.4.
It seems like the symbols related to template mixins get included twice.

$ git clone 'https://github.com/gtkd-developers/GtkD.git'
$ cd GtkD
$ export DC=gdc
$ make
[...]
ar rcs libgtkdgl-3.a  srcgl/glgtk/GLCapability.o srcgl/glgtk/GLtInit.o
srcgl/glgtk/GLWidget.o srcgl/glgdk/GLDrawable.o srcgl/glgdk/GLDrawableT.o
srcgl/glgdk/GLQuery.o srcgl/glgdk/GLDrawableIF.o srcgl/glgdk/GLVersion.o
srcgl/glgdk/GLWindow.o srcgl/glgdk/GLdInit.o srcgl/glgdk/GLConfig.o
srcgl/glgdk/GLContext.o srcgl/gtkglc/gl.o srcgl/gtkglc/glgtktypes.o
srcgl/gtkglc/glgtk.o srcgl/gtkglc/glgdk.o srcgl/gtkglc/glu.o
srcgl/gtkglc/glgdktypes.o
ar rcs libgtkdsv-3.a  srcsv/gsv/SourceFileSaver.o
srcsv/gsv/StyleSchemeChooserWidget.o srcsv/gsv/SourceUndoManagerT.o
srcsv/gsv/SourceStyleSchemeManager.o srcsv/gsv/SourceSearchContext.o
srcsv/gsv/SourceEncoding.o srcsv/gsv/SourceCompletionProviderT.o
srcsv/gsv/SourceMap.o srcsv/gsv/SourceCompletionProvider.o
srcsv/gsv/SourceCompletionItem.o srcsv/gsv/SourceGutterRendererText.o
srcsv/gsv/SourceGutter.o srcsv/gsv/SourceMarkAttributes.o
srcsv/gsv/SourceUndoManager.o srcsv/gsv/SourceBuffer.o
srcsv/gsv/StyleSchemeChooserT.o srcsv/gsv/SourceCompletionInfo.o
srcsv/gsv/SourceCompletionWords.o srcsv/gsv/Tag.o srcsv/gsv/SourceFileLoader.o
srcsv/gsv/SourceStyle.o srcsv/gsv/SourcePrintCompositor.o
srcsv/gsv/SourceGutterRenderer.o srcsv/gsv/SourceSearchSettings.o
srcsv/gsv/SourceView.o srcsv/gsv/SourceFile.o
srcsv/gsv/SourceCompletionProposalT.o srcsv/gsv/StyleSchemeChooserIF.o
srcsv/gsv/SourceLanguage.o srcsv/gsv/SourceCompletion.o srcsv/gsv/Utils.o
srcsv/gsv/SourceStyleScheme.o srcsv/gsv/SourceCompletionContext.o
srcsv/gsv/SourceLanguageManager.o srcsv/gsv/SourceUndoManagerIF.o
srcsv/gsv/SourceGutterRendererPixbuf.o srcsv/gsv/SourceCompletionProviderIF.o
srcsv/gsv/SourceCompletionProposalIF.o srcsv/gsv/SourceMark.o
srcsv/gsv/StyleSchemeChooserButton.o srcsv/gsvc/gsvtypes.o srcsv/gsvc/gsv.o
gdc demos/gtkD/TestWindow/TestThemes.o demos/gtkD/TestWindow/TEditableCells.o
demos/gtkD/TestWindow/TestEntries.o demos/gtkD/TestWindow/TestAspectFrame.o
demos/gtkD/TestWindow/TestText.o demos/gtkD/TestWindow/TestScales.o
demos/gtkD/TestWindow/TestImage.o demos/gtkD/TestWindow/TestIdle.o
demos/gtkD/TestWindow/TestTreeView1.o demos/gtkD/TestWindow/TTextView.o
demos/gtkD/TestWindow/TestWindow.o demos/gtkD/TestWindow/TestTreeView.o
demos/gtkD/TestWindow/TestDrawingArea.o demos/gtkD/TestWindow/TestStock.o  -o
TestWindow -Xlinker -L. -Xlinker -lgtkd-3 -Xlinker -ldl -m64
ranlib libgtkdgl-3.a
ranlib libgtkdsv-3.a
./libgtkd-3.a(Entry.o): In function
`_D3gtk6Widget6Widget10__mixin56514customTagStartMFC3gtk7Builder7BuilderC7gobject7ObjectG7ObjectGAyaJS4gtkc9glibtypes13GMarkupParserJPvZb':
Entry.d:(.text+0x1d40): multiple definition of
`_D3gtk6Widget6Widget10__mixin56514customTagStartMFC3gtk7Builder7BuilderC7gobject7ObjectG7ObjectGAyaJS4gtkc9glibtypes13GMarkupParserJPvZb'
./libgtkd-3.a(Layout.o):Layout.d:(.text+0x60): first defined here
./libgtkd-3.a(Entry.o): In function
`_DT1584_D3gtk6Widget6Widget10__mixin56514customTagStartMFC3gtk7Builder7BuilderC7gobject7ObjectG7ObjectGAyaJS4gtkc9glibtypes13GMarkupParserJPvZb':
Entry.d:(.text+0x1e30): multiple definition of
`_DT1584_D3gtk6Widget6Widget10__mixin56514customTagStartMFC3gtk7Builder7BuilderC7gobject7ObjectG7ObjectGAyaJS4gtkc9glibtypes13GMarkupParserJPvZb'
./libgtkd-3.a(Layout.o):Layout.d:(.text+0x150): first defined here
./libgtkd-3.a(Entry.o): In function
`_D3gtk6Widget6Widget10__mixin56516buildableSetNameMFAyaZv':
Entry.d:(.text+0x1ed0): multiple definition of
`_D3gtk6Widget6Widget10__mixin56516buildableSetNameMFAyaZv'
./libgtkd-3.a(Layout.o):Layout.d:(.text+0x160): first defined here
./libgtkd-3.a(Entry.o): In function
`_DT1584_D3gtk6Widget6Widget10__mixin56516buildableSetNameMFAyaZv':
Entry.d:(.text+0x1f30): multiple definition of
`_DT1584_D3gtk6Widget6Widget10__mixin56516buildableSetNameMFAyaZv'
./libgtkd-3.a(Layout.o):Layout.d:(.text+0x1c0): first defined here
[...]

And so on.

When looking at the contents of object files, indeed, Entry.o and Layout.o are both defining symbols belonging to "gtk.Widget" module namespace:

$ nm src/gtk/Entry.o | ddemangle | grep 'refAccessible()' -C 1
                 U bool gtk.Widget.Widget.isToplevel()
0000000000002920 T atk.ObjectAtk.ObjectAtk
gtk.Widget.Widget.__mixin564.refAccessible()
0000000000000025 t atk.ObjectAtk.ObjectAtk
gtk.Widget.Widget.__mixin564.refAccessible().part.75
00000000000028e0 T gtkc.atktypes.AtkImplementor*
gtk.Widget.Widget.__mixin564.getImplementorStruct()

$ nm src/gtk/Widget.o | ddemangle | grep 'refAccessible()' -C 1
0000000000000000 t bool gtk.Widget.Widget.isToplevel().part.138
000000000000eb40 T atk.ObjectAtk.ObjectAtk
gtk.Widget.Widget.__mixin564.refAccessible()
0000000000000000 t atk.ObjectAtk.ObjectAtk
gtk.Widget.Widget.__mixin564.refAccessible().part.363
000000000000bc90 T gtkc.atktypes.AtkImplementor*
gtk.Widget.Widget.__mixin564.getImplementorStruct()

This seems related to template mixins.

-- 
You are receiving this mail because:
You are watching all bug changes.