} else if align != 0 {
return min
}
- // FIXME: figure out a way to avoid checking by name here.
- sname := ldr.SymName(s)
- if strings.HasPrefix(sname, "go.string.") || strings.HasPrefix(sname, "type..namedata.") {
- // String data is just bytes.
- // If we align it, we waste a lot of space to padding.
- return min
- }
align = int32(thearch.Maxalign)
ssz := ldr.SymSize(s)
for int64(align) > ssz && align > min {
symGroupType[s] = sym.SGOSTRING
ldr.SetAttrNotInSymbolTable(s, true)
ldr.SetCarrierSym(s, symgostring)
+ if ldr.SymAlign(s) == 0 {
+ ldr.SetSymAlign(s, 1) // String data is just bytes, no padding.
+ }
case strings.HasPrefix(name, "runtime.gcbits."):
symGroupType[s] = sym.SGCBITS
ldr.SetCarrierSym(s, symtype)
}
}
+ if strings.HasPrefix(name, "type..namedata.") && ldr.SymAlign(s) == 0 {
+ ldr.SetSymAlign(s, 1) // String data is just bytes, no padding.
+ }
}
}