Commit 1ca95ba0 by Ian Lance Taylor

syscall: RawSockaddr fix for ppc64, ppc64le

    
    The struct RawSockaddr contains a field Data which
    should be uint8 on ppc64 and ppc64le, but is declared
    as int8 in gccgo.  This change adds a two new files
    which contain the structure declaration for
    RawSockaddr, one with the correct types for for ppc64
    and ppc64le, and the other for non-ppc64 platforms.
    
    Fixes golang/go#11469
    
    Reviewed-on: https://go-review.googlesource.com/11946

From-SVN: r226533
parent ab977fd8
7a6089333f4ab10449f9140c4639cfe741abcb25 a850225433a66a58613c22185c3b09626f5545eb
The first line of this file holds the git revision number of the last The first line of this file holds the git revision number of the last
merge done from the gofrontend repository. merge done from the gofrontend repository.
...@@ -1676,7 +1676,17 @@ endif # !LIBGO_IS_LINUX ...@@ -1676,7 +1676,17 @@ endif # !LIBGO_IS_LINUX
# Define socket sizes and types. # Define socket sizes and types.
if LIBGO_IS_LINUX if LIBGO_IS_LINUX
syscall_socket_file = go/syscall/socket_linux.go epoll.go syscall_socket_file = go/syscall/socket_linux.go epoll.go
if LIBGO_IS_PPC64LE
syscall_socket_type_file = go/syscall/socket_linux_ppc64x_type.go
else else
if LIBGO_IS_PPC64
syscall_socket_type_file = go/syscall/socket_linux_ppc64x_type.go
else
syscall_socket_type_file = go/syscall/socket_linux_type.go
endif
endif
else
syscall_socket_type_file =
if LIBGO_IS_SOLARIS if LIBGO_IS_SOLARIS
syscall_socket_file = go/syscall/socket_solaris.go syscall_socket_file = go/syscall/socket_solaris.go
else else
...@@ -1762,6 +1772,7 @@ go_base_syscall_files = \ ...@@ -1762,6 +1772,7 @@ go_base_syscall_files = \
$(syscall_size_file) \ $(syscall_size_file) \
$(syscall_socket_file) \ $(syscall_socket_file) \
$(syscall_socket_os_file) \ $(syscall_socket_os_file) \
$(syscall_socket_type_file) \
$(syscall_uname_file) \ $(syscall_uname_file) \
$(syscall_netlink_file) \ $(syscall_netlink_file) \
$(syscall_lsf_file) \ $(syscall_lsf_file) \
......
...@@ -1848,6 +1848,10 @@ go_unicode_utf8_files = \ ...@@ -1848,6 +1848,10 @@ go_unicode_utf8_files = \
# Define socket sizes and types. # Define socket sizes and types.
@LIBGO_IS_LINUX_TRUE@syscall_socket_file = go/syscall/socket_linux.go epoll.go @LIBGO_IS_LINUX_TRUE@syscall_socket_file = go/syscall/socket_linux.go epoll.go
@LIBGO_IS_LINUX_FALSE@syscall_socket_type_file =
@LIBGO_IS_LINUX_TRUE@@LIBGO_IS_PPC64LE_FALSE@@LIBGO_IS_PPC64_FALSE@syscall_socket_type_file = go/syscall/socket_linux_type.go
@LIBGO_IS_LINUX_TRUE@@LIBGO_IS_PPC64LE_FALSE@@LIBGO_IS_PPC64_TRUE@syscall_socket_type_file = go/syscall/socket_linux_ppc64x_type.go
@LIBGO_IS_LINUX_TRUE@@LIBGO_IS_PPC64LE_TRUE@syscall_socket_type_file = go/syscall/socket_linux_ppc64x_type.go
@LIBGO_IS_SOLARIS_FALSE@syscall_socket_os_file = go/syscall/socket_posix.go @LIBGO_IS_SOLARIS_FALSE@syscall_socket_os_file = go/syscall/socket_posix.go
# Define socket functions. # Define socket functions.
...@@ -1898,6 +1902,7 @@ go_base_syscall_files = \ ...@@ -1898,6 +1902,7 @@ go_base_syscall_files = \
$(syscall_size_file) \ $(syscall_size_file) \
$(syscall_socket_file) \ $(syscall_socket_file) \
$(syscall_socket_os_file) \ $(syscall_socket_os_file) \
$(syscall_socket_type_file) \
$(syscall_uname_file) \ $(syscall_uname_file) \
$(syscall_netlink_file) \ $(syscall_netlink_file) \
$(syscall_lsf_file) \ $(syscall_lsf_file) \
......
...@@ -136,11 +136,6 @@ type RawSockaddrNetlink struct { ...@@ -136,11 +136,6 @@ type RawSockaddrNetlink struct {
Groups uint32 Groups uint32
} }
type RawSockaddr struct {
Family uint16
Data [14]int8
}
// BindToDevice binds the socket associated with fd to device. // BindToDevice binds the socket associated with fd to device.
func BindToDevice(fd int, device string) (err error) { func BindToDevice(fd int, device string) (err error) {
return SetsockoptString(fd, SOL_SOCKET, SO_BINDTODEVICE, device) return SetsockoptString(fd, SOL_SOCKET, SO_BINDTODEVICE, device)
......
// socket_linux_ppc64x_type.go -- Socket handling specific to ppc64 GNU/Linux.
// Copyright 2015 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package syscall
// Type needed on ppc64le & ppc64
type RawSockaddr struct {
Family uint16
Data [14]uint8
}
// socket_linux_type.go -- Socket handling specific to GNU/Linux.
// Copyright 2015 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package syscall
// Type needed if not on ppc64le or ppc64
type RawSockaddr struct {
Family uint16
Data [14]int8
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment