@@ -67,20 +67,6 @@ type dwctxt struct {
67
67
dwmu * sync.Mutex
68
68
}
69
69
70
- func newdwctxt (linkctxt * Link , forTypeGen bool ) dwctxt {
71
- d := dwctxt {
72
- linkctxt : linkctxt ,
73
- ldr : linkctxt .loader ,
74
- arch : linkctxt .Arch ,
75
- tmap : make (map [string ]loader.Sym ),
76
- tdmap : make (map [loader.Sym ]loader.Sym ),
77
- rtmap : make (map [loader.Sym ]loader.Sym ),
78
- }
79
- d .typeRuntimeEface = d .lookupOrDiag ("type.runtime.eface" )
80
- d .typeRuntimeIface = d .lookupOrDiag ("type.runtime.iface" )
81
- return d
82
- }
83
-
84
70
// dwSym wraps a loader.Sym; this type is meant to obey the interface
85
71
// rules for dwarf.Sym from the cmd/internal/dwarf package. DwDie and
86
72
// DwAttr objects contain references to symbols via this type.
@@ -249,15 +235,14 @@ var dwtypes dwarf.DWDie
249
235
// up all attrs in a single large table, then store indices into the
250
236
// table in the DIE. This would allow us to common up storage for
251
237
// attributes that are shared by many DIEs (ex: byte size of N).
252
- func newattr (die * dwarf.DWDie , attr uint16 , cls int , value int64 , data interface {}) * dwarf. DWAttr {
238
+ func newattr (die * dwarf.DWDie , attr uint16 , cls int , value int64 , data interface {}) {
253
239
a := new (dwarf.DWAttr )
254
240
a .Link = die .Attr
255
241
die .Attr = a
256
242
a .Atr = attr
257
243
a .Cls = uint8 (cls )
258
244
a .Value = value
259
245
a .Data = data
260
- return a
261
246
}
262
247
263
248
// Each DIE (except the root ones) has at least 1 attribute: its
@@ -290,18 +275,17 @@ func getattr(die *dwarf.DWDie, attr uint16) *dwarf.DWAttr {
290
275
// The compiler does create nameless DWARF DIEs (ex: concrete subprogram
291
276
// instance).
292
277
// FIXME: it would be more efficient to bulk-allocate DIEs.
293
- func (d * dwctxt ) newdie (parent * dwarf.DWDie , abbrev int , name string , version int ) * dwarf.DWDie {
278
+ func (d * dwctxt ) newdie (parent * dwarf.DWDie , abbrev int , name string ) * dwarf.DWDie {
294
279
die := new (dwarf.DWDie )
295
280
die .Abbrev = abbrev
296
281
die .Link = parent .Child
297
282
parent .Child = die
298
283
299
284
newattr (die , dwarf .DW_AT_name , dwarf .DW_CLS_STRING , int64 (len (name )), name )
300
285
301
- // Sanity check: all DIEs created in the linker should have a non-empty
302
- // name and be version zero.
303
- if name == "" || version != 0 {
304
- panic ("nameless or version non-zero DWARF DIE" )
286
+ // Sanity check: all DIEs created in the linker should be named.
287
+ if name == "" {
288
+ panic ("nameless DWARF DIE" )
305
289
}
306
290
307
291
var st sym.SymKind
@@ -321,7 +305,7 @@ func (d *dwctxt) newdie(parent *dwarf.DWDie, abbrev int, name string, version in
321
305
// this also includes loose ends such as STRUCT_FIELD.
322
306
st = sym .SDWARFTYPE
323
307
}
324
- ds := d .ldr .LookupOrCreateSym (dwarf .InfoPrefix + name , version )
308
+ ds := d .ldr .LookupOrCreateSym (dwarf .InfoPrefix + name , 0 )
325
309
dsu := d .ldr .MakeSymbolUpdater (ds )
326
310
dsu .SetType (st )
327
311
d .ldr .SetAttrNotInSymbolTable (ds , true )
@@ -397,22 +381,20 @@ func (d *dwctxt) mustFind(name string) loader.Sym {
397
381
return r
398
382
}
399
383
400
- func (d * dwctxt ) adddwarfref (sb * loader.SymbolBuilder , t loader.Sym , size int ) int64 {
401
- var result int64
384
+ func (d * dwctxt ) adddwarfref (sb * loader.SymbolBuilder , t loader.Sym , size int ) {
402
385
switch size {
403
386
default :
404
387
d .linkctxt .Errorf (sb .Sym (), "invalid size %d in adddwarfref\n " , size )
405
388
case d .arch .PtrSize , 4 :
406
389
}
407
- result = sb .AddSymRef (d .arch , t , 0 , objabi .R_DWARFSECREF , size )
408
- return result
390
+ sb .AddSymRef (d .arch , t , 0 , objabi .R_DWARFSECREF , size )
409
391
}
410
392
411
- func (d * dwctxt ) newrefattr (die * dwarf.DWDie , attr uint16 , ref loader.Sym ) * dwarf. DWAttr {
393
+ func (d * dwctxt ) newrefattr (die * dwarf.DWDie , attr uint16 , ref loader.Sym ) {
412
394
if ref == 0 {
413
- return nil
395
+ return
414
396
}
415
- return newattr (die , attr , dwarf .DW_CLS_REFERENCE , 0 , dwSym (ref ))
397
+ newattr (die , attr , dwarf .DW_CLS_REFERENCE , 0 , dwSym (ref ))
416
398
}
417
399
418
400
func (d * dwctxt ) dtolsym (s dwarf.Sym ) loader.Sym {
@@ -481,7 +463,7 @@ func (d *dwctxt) lookupOrDiag(n string) loader.Sym {
481
463
return symIdx
482
464
}
483
465
484
- func (d * dwctxt ) dotypedef (parent * dwarf.DWDie , gotype loader. Sym , name string , def * dwarf.DWDie ) * dwarf.DWDie {
466
+ func (d * dwctxt ) dotypedef (parent * dwarf.DWDie , name string , def * dwarf.DWDie ) * dwarf.DWDie {
485
467
// Only emit typedefs for real names.
486
468
if strings .HasPrefix (name , "map[" ) {
487
469
return nil
@@ -513,7 +495,7 @@ func (d *dwctxt) dotypedef(parent *dwarf.DWDie, gotype loader.Sym, name string,
513
495
// so that future lookups will find the typedef instead
514
496
// of the real definition. This hooks the typedef into any
515
497
// circular definition loops, so that gdb can understand them.
516
- die := d .newdie (parent , dwarf .DW_ABRV_TYPEDECL , name , 0 )
498
+ die := d .newdie (parent , dwarf .DW_ABRV_TYPEDECL , name )
517
499
518
500
d .newrefattr (die , dwarf .DW_AT_type , tds )
519
501
@@ -558,7 +540,7 @@ func (d *dwctxt) newtype(gotype loader.Sym) *dwarf.DWDie {
558
540
var die , typedefdie * dwarf.DWDie
559
541
switch kind {
560
542
case objabi .KindBool :
561
- die = d .newdie (& dwtypes , dwarf .DW_ABRV_BASETYPE , name , 0 )
543
+ die = d .newdie (& dwtypes , dwarf .DW_ABRV_BASETYPE , name )
562
544
newattr (die , dwarf .DW_AT_encoding , dwarf .DW_CLS_CONSTANT , dwarf .DW_ATE_boolean , 0 )
563
545
newattr (die , dwarf .DW_AT_byte_size , dwarf .DW_CLS_CONSTANT , bytesize , 0 )
564
546
@@ -567,7 +549,7 @@ func (d *dwctxt) newtype(gotype loader.Sym) *dwarf.DWDie {
567
549
objabi .KindInt16 ,
568
550
objabi .KindInt32 ,
569
551
objabi .KindInt64 :
570
- die = d .newdie (& dwtypes , dwarf .DW_ABRV_BASETYPE , name , 0 )
552
+ die = d .newdie (& dwtypes , dwarf .DW_ABRV_BASETYPE , name )
571
553
newattr (die , dwarf .DW_AT_encoding , dwarf .DW_CLS_CONSTANT , dwarf .DW_ATE_signed , 0 )
572
554
newattr (die , dwarf .DW_AT_byte_size , dwarf .DW_CLS_CONSTANT , bytesize , 0 )
573
555
@@ -577,72 +559,72 @@ func (d *dwctxt) newtype(gotype loader.Sym) *dwarf.DWDie {
577
559
objabi .KindUint32 ,
578
560
objabi .KindUint64 ,
579
561
objabi .KindUintptr :
580
- die = d .newdie (& dwtypes , dwarf .DW_ABRV_BASETYPE , name , 0 )
562
+ die = d .newdie (& dwtypes , dwarf .DW_ABRV_BASETYPE , name )
581
563
newattr (die , dwarf .DW_AT_encoding , dwarf .DW_CLS_CONSTANT , dwarf .DW_ATE_unsigned , 0 )
582
564
newattr (die , dwarf .DW_AT_byte_size , dwarf .DW_CLS_CONSTANT , bytesize , 0 )
583
565
584
566
case objabi .KindFloat32 ,
585
567
objabi .KindFloat64 :
586
- die = d .newdie (& dwtypes , dwarf .DW_ABRV_BASETYPE , name , 0 )
568
+ die = d .newdie (& dwtypes , dwarf .DW_ABRV_BASETYPE , name )
587
569
newattr (die , dwarf .DW_AT_encoding , dwarf .DW_CLS_CONSTANT , dwarf .DW_ATE_float , 0 )
588
570
newattr (die , dwarf .DW_AT_byte_size , dwarf .DW_CLS_CONSTANT , bytesize , 0 )
589
571
590
572
case objabi .KindComplex64 ,
591
573
objabi .KindComplex128 :
592
- die = d .newdie (& dwtypes , dwarf .DW_ABRV_BASETYPE , name , 0 )
574
+ die = d .newdie (& dwtypes , dwarf .DW_ABRV_BASETYPE , name )
593
575
newattr (die , dwarf .DW_AT_encoding , dwarf .DW_CLS_CONSTANT , dwarf .DW_ATE_complex_float , 0 )
594
576
newattr (die , dwarf .DW_AT_byte_size , dwarf .DW_CLS_CONSTANT , bytesize , 0 )
595
577
596
578
case objabi .KindArray :
597
- die = d .newdie (& dwtypes , dwarf .DW_ABRV_ARRAYTYPE , name , 0 )
598
- typedefdie = d .dotypedef (& dwtypes , gotype , name , die )
579
+ die = d .newdie (& dwtypes , dwarf .DW_ABRV_ARRAYTYPE , name )
580
+ typedefdie = d .dotypedef (& dwtypes , name , die )
599
581
newattr (die , dwarf .DW_AT_byte_size , dwarf .DW_CLS_CONSTANT , bytesize , 0 )
600
582
s := decodetypeArrayElem (d .ldr , d .arch , gotype )
601
583
d .newrefattr (die , dwarf .DW_AT_type , d .defgotype (s ))
602
- fld := d .newdie (die , dwarf .DW_ABRV_ARRAYRANGE , "range" , 0 )
584
+ fld := d .newdie (die , dwarf .DW_ABRV_ARRAYRANGE , "range" )
603
585
604
586
// use actual length not upper bound; correct for 0-length arrays.
605
587
newattr (fld , dwarf .DW_AT_count , dwarf .DW_CLS_CONSTANT , decodetypeArrayLen (d .ldr , d .arch , gotype ), 0 )
606
588
607
589
d .newrefattr (fld , dwarf .DW_AT_type , d .uintptrInfoSym )
608
590
609
591
case objabi .KindChan :
610
- die = d .newdie (& dwtypes , dwarf .DW_ABRV_CHANTYPE , name , 0 )
592
+ die = d .newdie (& dwtypes , dwarf .DW_ABRV_CHANTYPE , name )
611
593
s := decodetypeChanElem (d .ldr , d .arch , gotype )
612
594
d .newrefattr (die , dwarf .DW_AT_go_elem , d .defgotype (s ))
613
595
// Save elem type for synthesizechantypes. We could synthesize here
614
596
// but that would change the order of DIEs we output.
615
597
d .newrefattr (die , dwarf .DW_AT_type , s )
616
598
617
599
case objabi .KindFunc :
618
- die = d .newdie (& dwtypes , dwarf .DW_ABRV_FUNCTYPE , name , 0 )
600
+ die = d .newdie (& dwtypes , dwarf .DW_ABRV_FUNCTYPE , name )
619
601
newattr (die , dwarf .DW_AT_byte_size , dwarf .DW_CLS_CONSTANT , bytesize , 0 )
620
- typedefdie = d .dotypedef (& dwtypes , gotype , name , die )
602
+ typedefdie = d .dotypedef (& dwtypes , name , die )
621
603
data := d .ldr .Data (gotype )
622
604
// FIXME: add caching or reuse reloc slice.
623
605
relocs := d .ldr .Relocs (gotype )
624
606
nfields := decodetypeFuncInCount (d .arch , data )
625
607
for i := 0 ; i < nfields ; i ++ {
626
608
s := decodetypeFuncInType (d .ldr , d .arch , gotype , & relocs , i )
627
609
sn := d .ldr .SymName (s )
628
- fld := d .newdie (die , dwarf .DW_ABRV_FUNCTYPEPARAM , sn [5 :], 0 )
610
+ fld := d .newdie (die , dwarf .DW_ABRV_FUNCTYPEPARAM , sn [5 :])
629
611
d .newrefattr (fld , dwarf .DW_AT_type , d .defgotype (s ))
630
612
}
631
613
632
614
if decodetypeFuncDotdotdot (d .arch , data ) {
633
- d .newdie (die , dwarf .DW_ABRV_DOTDOTDOT , "..." , 0 )
615
+ d .newdie (die , dwarf .DW_ABRV_DOTDOTDOT , "..." )
634
616
}
635
617
nfields = decodetypeFuncOutCount (d .arch , data )
636
618
for i := 0 ; i < nfields ; i ++ {
637
619
s := decodetypeFuncOutType (d .ldr , d .arch , gotype , & relocs , i )
638
620
sn := d .ldr .SymName (s )
639
- fld := d .newdie (die , dwarf .DW_ABRV_FUNCTYPEPARAM , sn [5 :], 0 )
621
+ fld := d .newdie (die , dwarf .DW_ABRV_FUNCTYPEPARAM , sn [5 :])
640
622
d .newrefattr (fld , dwarf .DW_AT_type , d .defptrto (d .defgotype (s )))
641
623
}
642
624
643
625
case objabi .KindInterface :
644
- die = d .newdie (& dwtypes , dwarf .DW_ABRV_IFACETYPE , name , 0 )
645
- typedefdie = d .dotypedef (& dwtypes , gotype , name , die )
626
+ die = d .newdie (& dwtypes , dwarf .DW_ABRV_IFACETYPE , name )
627
+ typedefdie = d .dotypedef (& dwtypes , name , die )
646
628
data := d .ldr .Data (gotype )
647
629
nfields := int (decodetypeIfaceMethodCount (d .arch , data ))
648
630
var s loader.Sym
@@ -654,7 +636,7 @@ func (d *dwctxt) newtype(gotype loader.Sym) *dwarf.DWDie {
654
636
d .newrefattr (die , dwarf .DW_AT_type , d .defgotype (s ))
655
637
656
638
case objabi .KindMap :
657
- die = d .newdie (& dwtypes , dwarf .DW_ABRV_MAPTYPE , name , 0 )
639
+ die = d .newdie (& dwtypes , dwarf .DW_ABRV_MAPTYPE , name )
658
640
s := decodetypeMapKey (d .ldr , d .arch , gotype )
659
641
d .newrefattr (die , dwarf .DW_AT_go_key , d .defgotype (s ))
660
642
s = decodetypeMapValue (d .ldr , d .arch , gotype )
@@ -664,26 +646,26 @@ func (d *dwctxt) newtype(gotype loader.Sym) *dwarf.DWDie {
664
646
d .newrefattr (die , dwarf .DW_AT_type , gotype )
665
647
666
648
case objabi .KindPtr :
667
- die = d .newdie (& dwtypes , dwarf .DW_ABRV_PTRTYPE , name , 0 )
668
- typedefdie = d .dotypedef (& dwtypes , gotype , name , die )
649
+ die = d .newdie (& dwtypes , dwarf .DW_ABRV_PTRTYPE , name )
650
+ typedefdie = d .dotypedef (& dwtypes , name , die )
669
651
s := decodetypePtrElem (d .ldr , d .arch , gotype )
670
652
d .newrefattr (die , dwarf .DW_AT_type , d .defgotype (s ))
671
653
672
654
case objabi .KindSlice :
673
- die = d .newdie (& dwtypes , dwarf .DW_ABRV_SLICETYPE , name , 0 )
674
- typedefdie = d .dotypedef (& dwtypes , gotype , name , die )
655
+ die = d .newdie (& dwtypes , dwarf .DW_ABRV_SLICETYPE , name )
656
+ typedefdie = d .dotypedef (& dwtypes , name , die )
675
657
newattr (die , dwarf .DW_AT_byte_size , dwarf .DW_CLS_CONSTANT , bytesize , 0 )
676
658
s := decodetypeArrayElem (d .ldr , d .arch , gotype )
677
659
elem := d .defgotype (s )
678
660
d .newrefattr (die , dwarf .DW_AT_go_elem , elem )
679
661
680
662
case objabi .KindString :
681
- die = d .newdie (& dwtypes , dwarf .DW_ABRV_STRINGTYPE , name , 0 )
663
+ die = d .newdie (& dwtypes , dwarf .DW_ABRV_STRINGTYPE , name )
682
664
newattr (die , dwarf .DW_AT_byte_size , dwarf .DW_CLS_CONSTANT , bytesize , 0 )
683
665
684
666
case objabi .KindStruct :
685
- die = d .newdie (& dwtypes , dwarf .DW_ABRV_STRUCTTYPE , name , 0 )
686
- typedefdie = d .dotypedef (& dwtypes , gotype , name , die )
667
+ die = d .newdie (& dwtypes , dwarf .DW_ABRV_STRUCTTYPE , name )
668
+ typedefdie = d .dotypedef (& dwtypes , name , die )
687
669
newattr (die , dwarf .DW_AT_byte_size , dwarf .DW_CLS_CONSTANT , bytesize , 0 )
688
670
nfields := decodetypeStructFieldCount (d .ldr , d .arch , gotype )
689
671
for i := 0 ; i < nfields ; i ++ {
@@ -693,7 +675,7 @@ func (d *dwctxt) newtype(gotype loader.Sym) *dwarf.DWDie {
693
675
sn := d .ldr .SymName (s )
694
676
f = sn [5 :] // skip "type."
695
677
}
696
- fld := d .newdie (die , dwarf .DW_ABRV_STRUCTFIELD , f , 0 )
678
+ fld := d .newdie (die , dwarf .DW_ABRV_STRUCTFIELD , f )
697
679
d .newrefattr (fld , dwarf .DW_AT_type , d .defgotype (s ))
698
680
offsetAnon := decodetypeStructFieldOffsAnon (d .ldr , d .arch , gotype , i )
699
681
newmemberoffsetattr (fld , int32 (offsetAnon >> 1 ))
@@ -703,11 +685,11 @@ func (d *dwctxt) newtype(gotype loader.Sym) *dwarf.DWDie {
703
685
}
704
686
705
687
case objabi .KindUnsafePointer :
706
- die = d .newdie (& dwtypes , dwarf .DW_ABRV_BARE_PTRTYPE , name , 0 )
688
+ die = d .newdie (& dwtypes , dwarf .DW_ABRV_BARE_PTRTYPE , name )
707
689
708
690
default :
709
691
d .linkctxt .Errorf (gotype , "dwarf: definition of unknown kind %d" , kind )
710
- die = d .newdie (& dwtypes , dwarf .DW_ABRV_TYPEDECL , name , 0 )
692
+ die = d .newdie (& dwtypes , dwarf .DW_ABRV_TYPEDECL , name )
711
693
d .newrefattr (die , dwarf .DW_AT_type , d .mustFind ("<unspecified>" ))
712
694
}
713
695
@@ -754,7 +736,7 @@ func (d *dwctxt) defptrto(dwtype loader.Sym) loader.Sym {
754
736
return die
755
737
}
756
738
757
- pdie := d .newdie (& dwtypes , dwarf .DW_ABRV_PTRTYPE , ptrname , 0 )
739
+ pdie := d .newdie (& dwtypes , dwarf .DW_ABRV_PTRTYPE , ptrname )
758
740
d .newrefattr (pdie , dwarf .DW_AT_type , dwtype )
759
741
760
742
// The DWARF info synthesizes pointer types that don't exist at the
@@ -782,7 +764,7 @@ func (d *dwctxt) copychildrenexcept(ctxt *Link, dst *dwarf.DWDie, src *dwarf.DWD
782
764
if src == except {
783
765
continue
784
766
}
785
- c := d .newdie (dst , src .Abbrev , getattr (src , dwarf .DW_AT_name ).Data .(string ), 0 )
767
+ c := d .newdie (dst , src .Abbrev , getattr (src , dwarf .DW_AT_name ).Data .(string ))
786
768
for a := src .Attr ; a != nil ; a = a .Link {
787
769
newattr (c , a .Atr , int (a .Cls ), a .Value , a .Data )
788
770
}
@@ -877,7 +859,7 @@ func (d *dwctxt) mkinternaltype(ctxt *Link, abbrev int, typename, keyname, valna
877
859
if s != 0 && d .ldr .SymType (s ) == sym .SDWARFTYPE {
878
860
return s
879
861
}
880
- die := d .newdie (& dwtypes , abbrev , name , 0 )
862
+ die := d .newdie (& dwtypes , abbrev , name )
881
863
f (die )
882
864
return d .dtolsym (die .Sym )
883
865
}
@@ -922,7 +904,7 @@ func (d *dwctxt) synthesizemaptypes(ctxt *Link, die *dwarf.DWDie) {
922
904
t = d .defptrto (keytype )
923
905
}
924
906
d .newrefattr (dwhk , dwarf .DW_AT_type , t )
925
- fld := d .newdie (dwhk , dwarf .DW_ABRV_ARRAYRANGE , "size" , 0 )
907
+ fld := d .newdie (dwhk , dwarf .DW_ABRV_ARRAYRANGE , "size" )
926
908
newattr (fld , dwarf .DW_AT_count , dwarf .DW_CLS_CONSTANT , BucketSize , 0 )
927
909
d .newrefattr (fld , dwarf .DW_AT_type , d .uintptrInfoSym )
928
910
})
@@ -936,7 +918,7 @@ func (d *dwctxt) synthesizemaptypes(ctxt *Link, die *dwarf.DWDie) {
936
918
t = d .defptrto (valtype )
937
919
}
938
920
d .newrefattr (dwhv , dwarf .DW_AT_type , t )
939
- fld := d .newdie (dwhv , dwarf .DW_ABRV_ARRAYRANGE , "size" , 0 )
921
+ fld := d .newdie (dwhv , dwarf .DW_ABRV_ARRAYRANGE , "size" )
940
922
newattr (fld , dwarf .DW_AT_count , dwarf .DW_CLS_CONSTANT , BucketSize , 0 )
941
923
d .newrefattr (fld , dwarf .DW_AT_type , d .uintptrInfoSym )
942
924
})
@@ -947,17 +929,17 @@ func (d *dwctxt) synthesizemaptypes(ctxt *Link, die *dwarf.DWDie) {
947
929
// bucket. "data" will be replaced with keys/values below.
948
930
d .copychildrenexcept (ctxt , dwhb , bucket , findchild (bucket , "data" ))
949
931
950
- fld := d .newdie (dwhb , dwarf .DW_ABRV_STRUCTFIELD , "keys" , 0 )
932
+ fld := d .newdie (dwhb , dwarf .DW_ABRV_STRUCTFIELD , "keys" )
951
933
d .newrefattr (fld , dwarf .DW_AT_type , dwhks )
952
934
newmemberoffsetattr (fld , BucketSize )
953
- fld = d .newdie (dwhb , dwarf .DW_ABRV_STRUCTFIELD , "values" , 0 )
935
+ fld = d .newdie (dwhb , dwarf .DW_ABRV_STRUCTFIELD , "values" )
954
936
d .newrefattr (fld , dwarf .DW_AT_type , dwhvs )
955
937
newmemberoffsetattr (fld , BucketSize + BucketSize * int32 (keysize ))
956
- fld = d .newdie (dwhb , dwarf .DW_ABRV_STRUCTFIELD , "overflow" , 0 )
938
+ fld = d .newdie (dwhb , dwarf .DW_ABRV_STRUCTFIELD , "overflow" )
957
939
d .newrefattr (fld , dwarf .DW_AT_type , d .defptrto (d .dtolsym (dwhb .Sym )))
958
940
newmemberoffsetattr (fld , BucketSize + BucketSize * (int32 (keysize )+ int32 (valsize )))
959
941
if d .arch .RegSize > d .arch .PtrSize {
960
- fld = d .newdie (dwhb , dwarf .DW_ABRV_STRUCTFIELD , "pad" , 0 )
942
+ fld = d .newdie (dwhb , dwarf .DW_ABRV_STRUCTFIELD , "pad" )
961
943
d .newrefattr (fld , dwarf .DW_AT_type , d .uintptrInfoSym )
962
944
newmemberoffsetattr (fld , BucketSize + BucketSize * (int32 (keysize )+ int32 (valsize ))+ int32 (d .arch .PtrSize ))
963
945
}
@@ -1672,7 +1654,7 @@ func dwarfEnabled(ctxt *Link) bool {
1672
1654
// newly created builtin type DIE 'typeDie'.
1673
1655
func (d * dwctxt ) mkBuiltinType (ctxt * Link , abrv int , tname string ) * dwarf.DWDie {
1674
1656
// create type DIE
1675
- die := d .newdie (& dwtypes , abrv , tname , 0 )
1657
+ die := d .newdie (& dwtypes , abrv , tname )
1676
1658
1677
1659
// Look up type symbol.
1678
1660
gotype := d .lookupOrDiag ("type." + tname )
@@ -1765,7 +1747,16 @@ func dwarfGenerateDebugInfo(ctxt *Link) {
1765
1747
return
1766
1748
}
1767
1749
1768
- d := newdwctxt (ctxt , true )
1750
+ d := & dwctxt {
1751
+ linkctxt : ctxt ,
1752
+ ldr : ctxt .loader ,
1753
+ arch : ctxt .Arch ,
1754
+ tmap : make (map [string ]loader.Sym ),
1755
+ tdmap : make (map [loader.Sym ]loader.Sym ),
1756
+ rtmap : make (map [loader.Sym ]loader.Sym ),
1757
+ }
1758
+ d .typeRuntimeEface = d .lookupOrDiag ("type.runtime.eface" )
1759
+ d .typeRuntimeIface = d .lookupOrDiag ("type.runtime.iface" )
1769
1760
1770
1761
if ctxt .HeadType == objabi .Haix {
1771
1762
// Initial map used to store package size for each DWARF section.
@@ -1776,7 +1767,7 @@ func dwarfGenerateDebugInfo(ctxt *Link) {
1776
1767
newattr (& dwtypes , dwarf .DW_AT_name , dwarf .DW_CLS_STRING , int64 (len ("dwtypes" )), "dwtypes" )
1777
1768
1778
1769
// Unspecified type. There are no references to this in the symbol table.
1779
- d .newdie (& dwtypes , dwarf .DW_ABRV_NULLTYPE , "<unspecified>" , 0 )
1770
+ d .newdie (& dwtypes , dwarf .DW_ABRV_NULLTYPE , "<unspecified>" )
1780
1771
1781
1772
// Some types that must exist to define other ones (uintptr in particular
1782
1773
// is needed for array size)
@@ -1841,7 +1832,7 @@ func dwarfGenerateDebugInfo(ctxt *Link) {
1841
1832
if len (unit .Textp ) == 0 {
1842
1833
cuabrv = dwarf .DW_ABRV_COMPUNIT_TEXTLESS
1843
1834
}
1844
- unit .DWInfo = d .newdie (& dwroot , cuabrv , unit .Lib .Pkg , 0 )
1835
+ unit .DWInfo = d .newdie (& dwroot , cuabrv , unit .Lib .Pkg )
1845
1836
newattr (unit .DWInfo , dwarf .DW_AT_language , dwarf .DW_CLS_CONSTANT , int64 (dwarf .DW_LANG_Go ), 0 )
1846
1837
// OS X linker requires compilation dir or absolute path in comp unit name to output debug info.
1847
1838
compDir := getCompilationDir ()
0 commit comments