Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
riscv-gcc-1
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
riscv-gcc-1
Commits
ea8505da
Commit
ea8505da
authored
Apr 03, 2012
by
Ian Lance Taylor
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
syscall, net: Fix GNU/Linux netlink code for big-endian systems.
From-SVN: r186123
parent
a92873f1
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
67 additions
and
21 deletions
+67
-21
libgo/Makefile.am
+1
-0
libgo/Makefile.in
+2
-0
libgo/configure
+9
-2
libgo/configure.ac
+6
-0
libgo/go/net/interface_linux.go
+11
-2
libgo/go/syscall/netlink_linux.go
+37
-17
libgo/testsuite/Makefile.in
+1
-0
No files found.
libgo/Makefile.am
View file @
ea8505da
...
@@ -1559,6 +1559,7 @@ s-syscall_arch: Makefile
...
@@ -1559,6 +1559,7 @@ s-syscall_arch: Makefile
echo
"package syscall"
>
syscall_arch.go.tmp
echo
"package syscall"
>
syscall_arch.go.tmp
echo
'const ARCH = "'
$(GOARCH)
'"'
>>
syscall_arch.go.tmp
echo
'const ARCH = "'
$(GOARCH)
'"'
>>
syscall_arch.go.tmp
echo
'const OS = "'
$(GOOS)
'"'
>>
syscall_arch.go.tmp
echo
'const OS = "'
$(GOOS)
'"'
>>
syscall_arch.go.tmp
echo
'const BigEndian =
$(GO_BIGENDIAN)
'
>>
syscall_arch.go.tmp
$(SHELL)
$(srcdir)
/../move-if-change syscall_arch.go.tmp syscall_arch.go
$(SHELL)
$(srcdir)
/../move-if-change syscall_arch.go.tmp syscall_arch.go
$(STAMP)
$@
$(STAMP)
$@
...
...
libgo/Makefile.in
View file @
ea8505da
...
@@ -369,6 +369,7 @@ GOARCH = @GOARCH@
...
@@ -369,6 +369,7 @@ GOARCH = @GOARCH@
GOC
=
@GOC@
GOC
=
@GOC@
GOCFLAGS
=
$(CFLAGS)
GOCFLAGS
=
$(CFLAGS)
GOOS
=
@GOOS@
GOOS
=
@GOOS@
GO_BIGENDIAN
=
@GO_BIGENDIAN@
GO_LIBCALL_OS_ARCH_FILE
=
@GO_LIBCALL_OS_ARCH_FILE@
GO_LIBCALL_OS_ARCH_FILE
=
@GO_LIBCALL_OS_ARCH_FILE@
GO_LIBCALL_OS_FILE
=
@GO_LIBCALL_OS_FILE@
GO_LIBCALL_OS_FILE
=
@GO_LIBCALL_OS_FILE@
GO_SYSCALL_OS_ARCH_FILE
=
@GO_SYSCALL_OS_ARCH_FILE@
GO_SYSCALL_OS_ARCH_FILE
=
@GO_SYSCALL_OS_ARCH_FILE@
...
@@ -4371,6 +4372,7 @@ s-syscall_arch: Makefile
...
@@ -4371,6 +4372,7 @@ s-syscall_arch: Makefile
echo
"package syscall"
>
syscall_arch.go.tmp
echo
"package syscall"
>
syscall_arch.go.tmp
echo
'const ARCH = "'
$(GOARCH)
'"'
>>
syscall_arch.go.tmp
echo
'const ARCH = "'
$(GOARCH)
'"'
>>
syscall_arch.go.tmp
echo
'const OS = "'
$(GOOS)
'"'
>>
syscall_arch.go.tmp
echo
'const OS = "'
$(GOOS)
'"'
>>
syscall_arch.go.tmp
echo
'const BigEndian =
$(GO_BIGENDIAN)
'
>>
syscall_arch.go.tmp
$(SHELL)
$(srcdir)
/../move-if-change syscall_arch.go.tmp syscall_arch.go
$(SHELL)
$(srcdir)
/../move-if-change syscall_arch.go.tmp syscall_arch.go
$(STAMP)
$@
$(STAMP)
$@
...
...
libgo/configure
View file @
ea8505da
...
@@ -612,6 +612,7 @@ HAVE_STRERROR_R_FALSE
...
@@ -612,6 +612,7 @@ HAVE_STRERROR_R_FALSE
HAVE_STRERROR_R_TRUE
HAVE_STRERROR_R_TRUE
HAVE_SYS_MMAN_H_FALSE
HAVE_SYS_MMAN_H_FALSE
HAVE_SYS_MMAN_H_TRUE
HAVE_SYS_MMAN_H_TRUE
GO_BIGENDIAN
PTHREAD_LIBS
PTHREAD_LIBS
PTHREAD_CFLAGS
PTHREAD_CFLAGS
NET_LIBS
NET_LIBS
...
@@ -11100,7 +11101,7 @@ else
...
@@ -11100,7 +11101,7 @@ else
lt_dlunknown
=
0
;
lt_dlno_uscore
=
1
;
lt_dlneed_uscore
=
2
lt_dlunknown
=
0
;
lt_dlno_uscore
=
1
;
lt_dlneed_uscore
=
2
lt_status
=
$lt_dlunknown
lt_status
=
$lt_dlunknown
cat
>
conftest.
$ac_ext
<<
_LT_EOF
cat
>
conftest.
$ac_ext
<<
_LT_EOF
#line 1110
3
"configure"
#line 1110
4
"configure"
#include "confdefs.h"
#include "confdefs.h"
#if HAVE_DLFCN_H
#if HAVE_DLFCN_H
...
@@ -11206,7 +11207,7 @@ else
...
@@ -11206,7 +11207,7 @@ else
lt_dlunknown
=
0
;
lt_dlno_uscore
=
1
;
lt_dlneed_uscore
=
2
lt_dlunknown
=
0
;
lt_dlno_uscore
=
1
;
lt_dlneed_uscore
=
2
lt_status
=
$lt_dlunknown
lt_status
=
$lt_dlunknown
cat
>
conftest.
$ac_ext
<<
_LT_EOF
cat
>
conftest.
$ac_ext
<<
_LT_EOF
#line 112
09
"configure"
#line 112
10
"configure"
#include "confdefs.h"
#include "confdefs.h"
#if HAVE_DLFCN_H
#if HAVE_DLFCN_H
...
@@ -14408,6 +14409,12 @@ $as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
...
@@ -14408,6 +14409,12 @@ $as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
presetting ac_cv_c_bigendian=no (or yes) will help"
"
$LINENO
"
5
;;
presetting ac_cv_c_bigendian=no (or yes) will help"
"
$LINENO
"
5
;;
esac
esac
case
$ac_cv_c_bigendian
in
yes
)
GO_BIGENDIAN
=
true
;;
no
)
GO_BIGENDIAN
=
false
;;
*
)
as_fn_error
"unknown endianness"
"
$LINENO
"
5
;;
esac
...
...
libgo/configure.ac
View file @
ea8505da
...
@@ -400,6 +400,12 @@ dnl Test if -lrt is required for sched_yield.
...
@@ -400,6 +400,12 @@ dnl Test if -lrt is required for sched_yield.
AC_SEARCH_LIBS([sched_yield], [rt])
AC_SEARCH_LIBS([sched_yield], [rt])
AC_C_BIGENDIAN
AC_C_BIGENDIAN
case $ac_cv_c_bigendian in
yes) GO_BIGENDIAN=true ;;
no) GO_BIGENDIAN=false ;;
*) AC_MSG_ERROR([unknown endianness]) ;;
esac
AC_SUBST(GO_BIGENDIAN)
GCC_CHECK_UNWIND_GETIPINFO
GCC_CHECK_UNWIND_GETIPINFO
...
...
libgo/go/net/interface_linux.go
View file @
ea8505da
...
@@ -64,7 +64,11 @@ func newLink(ifim *syscall.IfInfomsg, attrs []syscall.NetlinkRouteAttr) Interfac
...
@@ -64,7 +64,11 @@ func newLink(ifim *syscall.IfInfomsg, attrs []syscall.NetlinkRouteAttr) Interfac
case
syscall
.
IFLA_IFNAME
:
case
syscall
.
IFLA_IFNAME
:
ifi
.
Name
=
string
(
a
.
Value
[
:
len
(
a
.
Value
)
-
1
])
ifi
.
Name
=
string
(
a
.
Value
[
:
len
(
a
.
Value
)
-
1
])
case
syscall
.
IFLA_MTU
:
case
syscall
.
IFLA_MTU
:
ifi
.
MTU
=
int
(
uint32
(
a
.
Value
[
3
])
<<
24
|
uint32
(
a
.
Value
[
2
])
<<
16
|
uint32
(
a
.
Value
[
1
])
<<
8
|
uint32
(
a
.
Value
[
0
]))
if
syscall
.
BigEndian
{
ifi
.
MTU
=
int
(
uint32
(
a
.
Value
[
0
])
<<
24
|
uint32
(
a
.
Value
[
1
])
<<
16
|
uint32
(
a
.
Value
[
2
])
<<
8
|
uint32
(
a
.
Value
[
3
]))
}
else
{
ifi
.
MTU
=
int
(
uint32
(
a
.
Value
[
3
])
<<
24
|
uint32
(
a
.
Value
[
2
])
<<
16
|
uint32
(
a
.
Value
[
1
])
<<
8
|
uint32
(
a
.
Value
[
0
]))
}
}
}
}
}
return
ifi
return
ifi
...
@@ -196,7 +200,12 @@ func parseProcNetIGMP(path string, ifi *Interface) []Addr {
...
@@ -196,7 +200,12 @@ func parseProcNetIGMP(path string, ifi *Interface) []Addr {
for
i
:=
0
;
i
+
1
<
len
(
f
[
0
]);
i
+=
2
{
for
i
:=
0
;
i
+
1
<
len
(
f
[
0
]);
i
+=
2
{
b
[
i
/
2
],
_
=
xtoi2
(
f
[
0
][
i
:
i
+
2
],
0
)
b
[
i
/
2
],
_
=
xtoi2
(
f
[
0
][
i
:
i
+
2
],
0
)
}
}
ifma
:=
IPAddr
{
IP
:
IPv4
(
b
[
3
],
b
[
2
],
b
[
1
],
b
[
0
])}
var
ifma
IPAddr
if
syscall
.
BigEndian
{
ifma
=
IPAddr
{
IP
:
IPv4
(
b
[
0
],
b
[
1
],
b
[
2
],
b
[
3
])}
}
else
{
ifma
=
IPAddr
{
IP
:
IPv4
(
b
[
3
],
b
[
2
],
b
[
1
],
b
[
0
])}
}
ifmat
=
append
(
ifmat
,
ifma
.
toAddr
())
ifmat
=
append
(
ifmat
,
ifma
.
toAddr
())
}
}
}
}
...
...
libgo/go/syscall/netlink_linux.go
View file @
ea8505da
...
@@ -30,23 +30,43 @@ type NetlinkRouteRequest struct {
...
@@ -30,23 +30,43 @@ type NetlinkRouteRequest struct {
func
(
rr
*
NetlinkRouteRequest
)
toWireFormat
()
[]
byte
{
func
(
rr
*
NetlinkRouteRequest
)
toWireFormat
()
[]
byte
{
b
:=
make
([]
byte
,
rr
.
Header
.
Len
)
b
:=
make
([]
byte
,
rr
.
Header
.
Len
)
b
[
0
]
=
byte
(
rr
.
Header
.
Len
)
if
BigEndian
{
b
[
1
]
=
byte
(
rr
.
Header
.
Len
>>
8
)
b
[
0
]
=
byte
(
rr
.
Header
.
Len
>>
24
)
b
[
2
]
=
byte
(
rr
.
Header
.
Len
>>
16
)
b
[
1
]
=
byte
(
rr
.
Header
.
Len
>>
16
)
b
[
3
]
=
byte
(
rr
.
Header
.
Len
>>
24
)
b
[
2
]
=
byte
(
rr
.
Header
.
Len
>>
8
)
b
[
4
]
=
byte
(
rr
.
Header
.
Type
)
b
[
3
]
=
byte
(
rr
.
Header
.
Len
)
b
[
5
]
=
byte
(
rr
.
Header
.
Type
>>
8
)
b
[
4
]
=
byte
(
rr
.
Header
.
Type
>>
8
)
b
[
6
]
=
byte
(
rr
.
Header
.
Flags
)
b
[
5
]
=
byte
(
rr
.
Header
.
Type
)
b
[
7
]
=
byte
(
rr
.
Header
.
Flags
>>
8
)
b
[
6
]
=
byte
(
rr
.
Header
.
Flags
>>
8
)
b
[
8
]
=
byte
(
rr
.
Header
.
Seq
)
b
[
7
]
=
byte
(
rr
.
Header
.
Flags
)
b
[
9
]
=
byte
(
rr
.
Header
.
Seq
>>
8
)
b
[
8
]
=
byte
(
rr
.
Header
.
Seq
>>
24
)
b
[
10
]
=
byte
(
rr
.
Header
.
Seq
>>
16
)
b
[
9
]
=
byte
(
rr
.
Header
.
Seq
>>
16
)
b
[
11
]
=
byte
(
rr
.
Header
.
Seq
>>
24
)
b
[
10
]
=
byte
(
rr
.
Header
.
Seq
>>
8
)
b
[
12
]
=
byte
(
rr
.
Header
.
Pid
)
b
[
11
]
=
byte
(
rr
.
Header
.
Seq
)
b
[
13
]
=
byte
(
rr
.
Header
.
Pid
>>
8
)
b
[
12
]
=
byte
(
rr
.
Header
.
Pid
>>
24
)
b
[
14
]
=
byte
(
rr
.
Header
.
Pid
>>
16
)
b
[
13
]
=
byte
(
rr
.
Header
.
Pid
>>
16
)
b
[
15
]
=
byte
(
rr
.
Header
.
Pid
>>
24
)
b
[
14
]
=
byte
(
rr
.
Header
.
Pid
>>
8
)
b
[
16
]
=
byte
(
rr
.
Data
.
Family
)
b
[
15
]
=
byte
(
rr
.
Header
.
Pid
)
b
[
16
]
=
byte
(
rr
.
Data
.
Family
)
}
else
{
b
[
0
]
=
byte
(
rr
.
Header
.
Len
)
b
[
1
]
=
byte
(
rr
.
Header
.
Len
>>
8
)
b
[
2
]
=
byte
(
rr
.
Header
.
Len
>>
16
)
b
[
3
]
=
byte
(
rr
.
Header
.
Len
>>
24
)
b
[
4
]
=
byte
(
rr
.
Header
.
Type
)
b
[
5
]
=
byte
(
rr
.
Header
.
Type
>>
8
)
b
[
6
]
=
byte
(
rr
.
Header
.
Flags
)
b
[
7
]
=
byte
(
rr
.
Header
.
Flags
>>
8
)
b
[
8
]
=
byte
(
rr
.
Header
.
Seq
)
b
[
9
]
=
byte
(
rr
.
Header
.
Seq
>>
8
)
b
[
10
]
=
byte
(
rr
.
Header
.
Seq
>>
16
)
b
[
11
]
=
byte
(
rr
.
Header
.
Seq
>>
24
)
b
[
12
]
=
byte
(
rr
.
Header
.
Pid
)
b
[
13
]
=
byte
(
rr
.
Header
.
Pid
>>
8
)
b
[
14
]
=
byte
(
rr
.
Header
.
Pid
>>
16
)
b
[
15
]
=
byte
(
rr
.
Header
.
Pid
>>
24
)
b
[
16
]
=
byte
(
rr
.
Data
.
Family
)
}
return
b
return
b
}
}
...
...
libgo/testsuite/Makefile.in
View file @
ea8505da
...
@@ -86,6 +86,7 @@ GOARCH = @GOARCH@
...
@@ -86,6 +86,7 @@ GOARCH = @GOARCH@
GOC
=
@GOC@
GOC
=
@GOC@
GOCFLAGS
=
@GOCFLAGS@
GOCFLAGS
=
@GOCFLAGS@
GOOS
=
@GOOS@
GOOS
=
@GOOS@
GO_BIGENDIAN
=
@GO_BIGENDIAN@
GO_LIBCALL_OS_ARCH_FILE
=
@GO_LIBCALL_OS_ARCH_FILE@
GO_LIBCALL_OS_ARCH_FILE
=
@GO_LIBCALL_OS_ARCH_FILE@
GO_LIBCALL_OS_FILE
=
@GO_LIBCALL_OS_FILE@
GO_LIBCALL_OS_FILE
=
@GO_LIBCALL_OS_FILE@
GO_SYSCALL_OS_ARCH_FILE
=
@GO_SYSCALL_OS_ARCH_FILE@
GO_SYSCALL_OS_ARCH_FILE
=
@GO_SYSCALL_OS_ARCH_FILE@
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment