On Wed, 2020-09-09 at 12:19 +0200, Jan Mercl wrote:
> Observation:
> 
> pi@raspberrypi:~/src/tmp.tmp $ go version
> go version go1.15.1 linux/arm
> pi@raspberrypi:~/src/tmp.tmp $ cat main.go
> package main
> 
> /*
> 
> struct s {
>         long long i;
> } x;
> 
> size_t align() {
>         return _Alignof(struct s);
> }
> 
> */
> import "C"
> 
> import (
>         "fmt"
>         "unsafe"
> )
> 
> type S struct {
>         i int64
> }
> 
> func main() {
>         fmt.Printf(" C alignof struct s: %v\n", C.align())
>         fmt.Printf("Go alignof struct s: %v\n",
> unsafe.Alignof(C.struct_s{}))
>         fmt.Printf("Go alignof        S: %v\n", unsafe.Alignof(S{}))
> }
> pi@raspberrypi:~/src/tmp.tmp $ go run main.go
>  C alignof struct s: 8
> Go alignof struct s: 4
> Go alignof        S: 4
> pi@raspberrypi:~/src/tmp.tmp $ uname -a
> Linux raspberrypi 4.19.66-v7+ #1253 SMP Thu Aug 15 11:49:46 BST 2019
> armv7l GNU/Linux
> pi@raspberrypi:~/src/tmp.tmp $
> 
> My code relies on all the numbers being the same, ie. that Go will
> report the same as C for both C.struct_s{} and S{}.
> AFAICT Go and C agree on struct layout on linux/{amd64,386} perfectly
> in all cases I've tested (thousands probably).
> 
> Is this a bug or are my expectations ill founded?
> 
> Thanks in advance for any insights.
> 

I get the following

```
 C alignof struct s: 8
Go alignof struct s: 8
Go alignof        S: 8
~/cznic $ go version
go version go1.15.1 linux/arm64
~/cznic $ uname -a
Linux bildr 4.19.0-10-arm64 #1 SMP Debian 4.19.132-1 (2020-07-24)
aarch64 GNU/Linux
```

I have an arm64 linux running on my pi, maybe the armv7l behaviour is
different.

Dan


-- 
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/da8da3f14f311a23ab0191d7e8ba130a068c73b8.camel%40kortschak.io.

Reply via email to