On Wed, Sep 9, 2020 at 1:45 PM 'Dan Kortschak' via golang-nuts
<golang-nuts@googlegroups.com> wrote:

> I think it comes down to these lines in src/cmd/internal/sys/arch.go
> [1]
>
> ```
> var ArchARM = &Arch{
>         Name:      "arm",
>         Family:    ARM,
>         ByteOrder: binary.LittleEndian,
>         PtrSize:   4,
>         RegSize:   4,
>         MinLC:     4,
> }
>
> var ArchARM64 = &Arch{
>         Name:      "arm64",
>         Family:    ARM64,
>         ByteOrder: binary.LittleEndian,
>         PtrSize:   8,
>         RegSize:   8,
>         MinLC:     4,
> }
> ```
> this line in src/cmd/compile/internal/gc/main.go [2]
> ```
> Widthreg = thearch.LinkArch.RegSize
> ```
>
> and these lines in src/cmd/compile/internal/gc/align.go [3]
> ```
>         case TINT64, TUINT64, TFLOAT64:
>                 w = 8
>                 t.Align = uint8(Widthreg)
> ```
>
> [1]https://golang.org/src/cmd/internal/sys/arch.go
> [2]https://golang.org/src/cmd/compile/internal/gc/main.go
> [3]https://golang.org/src/cmd/compile/internal/gc/align.go

Thank you very much for the thorough investigation.

If the intent is to have Go alignments/offsets of types compatible
with the C ABI then I think it's safe to say this is a bug.

And the existence of the syscall package, in some cases passing
Go-defined structs to the kernel that must be binary compatible with
their C definitions, IMO suggests that the intent is indeed there.

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/CAA40n-UFLsy0%3DSAWR3CM2YqVTWcEAgfQpkRaAn0LWkSQ%3DWeTcw%40mail.gmail.com.

Reply via email to