alldata := Linklookup(Ctxt, "go.string.alldata", 0)
        alldata.Type = obj.SGOSTRING
        alldata.Attr |= AttrReachable
-       alldata.Size = int64(size)
        alldata.P = make([]byte, 0, size)
        for _, str := range strs {
                off := len(alldata.P)
                alldata.P = append(alldata.P, str.P...)
+               // Architectures with Minalign > 1 cannot have relocations pointing
+               // to arbitrary locations, so make sure each string is appropriately
+               // aligned.
+               for r := len(alldata.P) % Thearch.Minalign; r > 0; r-- {
+                       alldata.P = append(alldata.P, 0)
+               }
                str.Attr.Set(AttrReachable, false)
                for _, r := range relocsToStrs[str] {
                        r.Add += int64(off)
                        r.Sym = alldata
                }
        }
+       alldata.Size = int64(len(alldata.P))
 }