diff --git a/src/runtime/defs1_netbsd_arm.go b/src/runtime/defs1_netbsd_arm.go index c976351..01b82fc 100644 --- a/src/runtime/defs1_netbsd_arm.go +++ b/src/runtime/defs1_netbsd_arm.go @@ -110,6 +110,7 @@ type stackt struct { type timespec struct { tv_sec int64 tv_nsec int32 + Pad_cgo_0 [4]byte // for EABI } func (ts *timespec) set_sec(x int32) { @@ -121,8 +122,9 @@ func (ts *timespec) set_nsec(x int32) { } type timeval struct { - tv_sec int64 - tv_usec int32 + tv_sec int64 + tv_usec int32 + Pad_cgo_0 [4]byte // for EABI } func (tv *timeval) set_usec(x int32) { @@ -136,9 +138,10 @@ type itimerval struct { type mcontextt struct { __gregs [17]uint32 - __fpu [4 + 8*32 + 4]byte // EABI - // __fpu [4+4*33+4]byte // not EABI + Pad_cgo_0 [4]byte // for EABI + __fpu [272]byte // for EABI, fpscr[4]+pad[4]+fstmx[8*32]+fpsid[4]+pad[4] _mc_tlsbase uint32 + Pad_cgo_1 [4]byte // for EABI } type ucontextt struct { @@ -146,6 +149,7 @@ type ucontextt struct { uc_link *ucontextt uc_sigmask sigset uc_stack stackt + Pad_cgo_0 [4]byte // for EABI uc_mcontext mcontextt __uc_pad [2]int32 } @@ -157,6 +161,7 @@ type keventt struct { fflags uint32 data int64 udata *byte + Pad_cgo_0 [4]byte // for EABI } // created by cgo -cdefs and then converted to Go diff --git a/src/cmd/link/internal/ld/elf.go b/src/cmd/link/internal/ld/elf.go index 9dedb0e..1fb2e75 100644 --- a/src/cmd/link/internal/ld/elf.go +++ b/src/cmd/link/internal/ld/elf.go @@ -796,7 +796,8 @@ func Elfinit() { // 32-bit architectures case '5': // we use EABI on both linux/arm and freebsd/arm. - if HEADTYPE == obj.Hlinux || HEADTYPE == obj.Hfreebsd { + if HEADTYPE == obj.Hlinux || HEADTYPE == obj.Hfreebsd || + HEADTYPE == obj.Hnetbsd { ehdr.flags = 0x5000002 // has entry point, Version5 EABI } fallthrough