diff options
author | Ian Lance Taylor <iant@google.com> | 2012-02-07 19:26:30 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2012-02-07 19:26:30 +0000 |
commit | b806269c9bfe8527dae3f634f5696ec95c5c38e4 (patch) | |
tree | 7a4a7ef3281dc5d38c6298df6b666d0b18f5eb8f /libgo | |
parent | 85dcef0d4194393a9de3cec41fc41331b62a909f (diff) | |
download | gcc-b806269c9bfe8527dae3f634f5696ec95c5c38e4.zip gcc-b806269c9bfe8527dae3f634f5696ec95c5c38e4.tar.gz gcc-b806269c9bfe8527dae3f634f5696ec95c5c38e4.tar.bz2 |
compiler, libgo: Use //extern comments rather than __asm__.
From-SVN: r183981
Diffstat (limited to 'libgo')
-rw-r--r-- | libgo/go/exp/terminal/util.go | 3 | ||||
-rw-r--r-- | libgo/go/math/abs.go | 5 | ||||
-rw-r--r-- | libgo/go/math/asin.go | 10 | ||||
-rw-r--r-- | libgo/go/math/atan.go | 5 | ||||
-rw-r--r-- | libgo/go/math/atan2.go | 5 | ||||
-rw-r--r-- | libgo/go/math/exp.go | 5 | ||||
-rw-r--r-- | libgo/go/math/expm1.go | 5 | ||||
-rw-r--r-- | libgo/go/math/floor.go | 15 | ||||
-rw-r--r-- | libgo/go/math/ldexp.go | 5 | ||||
-rw-r--r-- | libgo/go/math/log.go | 5 | ||||
-rw-r--r-- | libgo/go/math/log10.go | 10 | ||||
-rw-r--r-- | libgo/go/math/log1p.go | 5 | ||||
-rw-r--r-- | libgo/go/math/mod.go | 5 | ||||
-rw-r--r-- | libgo/go/math/sin.go | 10 | ||||
-rw-r--r-- | libgo/go/math/sqrt.go | 5 | ||||
-rw-r--r-- | libgo/go/math/tan.go | 5 | ||||
-rw-r--r-- | libgo/go/net/cgo_unix.go | 11 | ||||
-rw-r--r-- | libgo/go/os/dir.go | 23 | ||||
-rw-r--r-- | libgo/go/os/dir_largefile.go | 3 | ||||
-rw-r--r-- | libgo/go/os/dir_regfile.go | 3 | ||||
-rw-r--r-- | libgo/go/os/user/lookup_unix.go | 7 | ||||
-rw-r--r-- | libgo/go/syscall/mksyscall.awk | 4 | ||||
-rw-r--r-- | libgo/go/syscall/syscall_unix.go | 11 |
23 files changed, 121 insertions, 44 deletions
diff --git a/libgo/go/exp/terminal/util.go b/libgo/go/exp/terminal/util.go index a5bbfca..211f41d 100644 --- a/libgo/go/exp/terminal/util.go +++ b/libgo/go/exp/terminal/util.go @@ -60,7 +60,8 @@ func Restore(fd int, state *State) error { return err } -func ioctl(int, int, unsafe.Pointer) int __asm__("ioctl") +//extern ioctl +func ioctl(int, int, unsafe.Pointer) int // GetSize returns the dimensions of the given terminal. func GetSize(fd int) (width, height int, err error) { diff --git a/libgo/go/math/abs.go b/libgo/go/math/abs.go index 6818998..433d0f7 100644 --- a/libgo/go/math/abs.go +++ b/libgo/go/math/abs.go @@ -9,7 +9,10 @@ package math // Special cases are: // Abs(±Inf) = +Inf // Abs(NaN) = NaN -func libc_fabs(float64) float64 __asm__("fabs") + +//extern fabs +func libc_fabs(float64) float64 + func Abs(x float64) float64 { return libc_fabs(x) } diff --git a/libgo/go/math/asin.go b/libgo/go/math/asin.go index d67f32a..0d4fa9e 100644 --- a/libgo/go/math/asin.go +++ b/libgo/go/math/asin.go @@ -16,7 +16,10 @@ package math // Special cases are: // Asin(±0) = ±0 // Asin(x) = NaN if x < -1 or x > 1 -func libc_asin(float64) float64 __asm__("asin") + +//extern asin +func libc_asin(float64) float64 + func Asin(x float64) float64 { return libc_asin(x) } @@ -51,7 +54,10 @@ func asin(x float64) float64 { // // Special case is: // Acos(x) = NaN if x < -1 or x > 1 -func libc_acos(float64) float64 __asm__("acos") + +//extern acos +func libc_acos(float64) float64 + func Acos(x float64) float64 { return libc_acos(x) } diff --git a/libgo/go/math/atan.go b/libgo/go/math/atan.go index ff52cf3..b739721 100644 --- a/libgo/go/math/atan.go +++ b/libgo/go/math/atan.go @@ -51,7 +51,10 @@ func satan(arg float64) float64 { // Special cases are: // Atan(±0) = ±0 // Atan(±Inf) = ±Pi/2 -func libc_atan(float64) float64 __asm__("atan") + +//extern atan +func libc_atan(float64) float64 + func Atan(x float64) float64 { return libc_atan(x) } diff --git a/libgo/go/math/atan2.go b/libgo/go/math/atan2.go index 7260f98..02b045b 100644 --- a/libgo/go/math/atan2.go +++ b/libgo/go/math/atan2.go @@ -26,7 +26,10 @@ package math // Atan2(y<0, -Inf) = -Pi // Atan2(+Inf, x) = +Pi/2 // Atan2(-Inf, x) = -Pi/2 -func libc_atan2(float64, float64) float64 __asm__("atan2") + +//extern atan2 +func libc_atan2(float64, float64) float64 + func Atan2(y, x float64) float64 { return libc_atan2(y, x) } diff --git a/libgo/go/math/exp.go b/libgo/go/math/exp.go index 2db691f..b2da631 100644 --- a/libgo/go/math/exp.go +++ b/libgo/go/math/exp.go @@ -11,7 +11,10 @@ package math // Exp(NaN) = NaN // Very large values overflow to 0 or +Inf. // Very small values underflow to 1. -func libc_exp(float64) float64 __asm__("exp") + +//extern exp +func libc_exp(float64) float64 + func Exp(x float64) float64 { return libc_exp(x) } diff --git a/libgo/go/math/expm1.go b/libgo/go/math/expm1.go index 5bffdb3..e7705b0 100644 --- a/libgo/go/math/expm1.go +++ b/libgo/go/math/expm1.go @@ -121,7 +121,10 @@ package math // Expm1(-Inf) = -1 // Expm1(NaN) = NaN // Very large values overflow to -1 or +Inf. -func libc_expm1(float64) float64 __asm__("expm1") + +//extern expm1 +func libc_expm1(float64) float64 + func Expm1(x float64) float64 { return libc_expm1(x) } diff --git a/libgo/go/math/floor.go b/libgo/go/math/floor.go index 4d5f4a4..abe6264 100644 --- a/libgo/go/math/floor.go +++ b/libgo/go/math/floor.go @@ -10,7 +10,10 @@ package math // Floor(±0) = ±0 // Floor(±Inf) = ±Inf // Floor(NaN) = NaN -func libc_floor(float64) float64 __asm__("floor") + +//extern floor +func libc_floor(float64) float64 + func Floor(x float64) float64 { return libc_floor(x) } @@ -38,7 +41,10 @@ func floor(x float64) float64 { // Ceil(±0) = ±0 // Ceil(±Inf) = ±Inf // Ceil(NaN) = NaN -func libc_ceil(float64) float64 __asm__("ceil") + +//extern ceil +func libc_ceil(float64) float64 + func Ceil(x float64) float64 { return libc_ceil(x) } @@ -53,7 +59,10 @@ func ceil(x float64) float64 { // Trunc(±0) = ±0 // Trunc(±Inf) = ±Inf // Trunc(NaN) = NaN -func libc_trunc(float64) float64 __asm__("trunc") + +//extern trunc +func libc_trunc(float64) float64 + func Trunc(x float64) float64 { return libc_trunc(x) } diff --git a/libgo/go/math/ldexp.go b/libgo/go/math/ldexp.go index 4601cd5..d5d7831 100644 --- a/libgo/go/math/ldexp.go +++ b/libgo/go/math/ldexp.go @@ -11,7 +11,10 @@ package math // Ldexp(±0, exp) = ±0 // Ldexp(±Inf, exp) = ±Inf // Ldexp(NaN, exp) = NaN -func libc_ldexp(float64, int) float64 __asm__("ldexp") + +//extern ldexp +func libc_ldexp(float64, int) float64 + func Ldexp(frac float64, exp int) float64 { return libc_ldexp(frac, exp) } diff --git a/libgo/go/math/log.go b/libgo/go/math/log.go index f06611d..5e5c427 100644 --- a/libgo/go/math/log.go +++ b/libgo/go/math/log.go @@ -77,7 +77,10 @@ package math // Log(0) = -Inf // Log(x < 0) = NaN // Log(NaN) = NaN -func libc_log(float64) float64 __asm__("log") + +//extern log +func libc_log(float64) float64 + func Log(x float64) float64 { return libc_log(x) } diff --git a/libgo/go/math/log10.go b/libgo/go/math/log10.go index 5204492..07ba8ca 100644 --- a/libgo/go/math/log10.go +++ b/libgo/go/math/log10.go @@ -6,7 +6,10 @@ package math // Log10 returns the decimal logarithm of x. // The special cases are the same as for Log. -func libc_log10(float64) float64 __asm__("log10") + +//extern log10 +func libc_log10(float64) float64 + func Log10(x float64) float64 { return libc_log10(x) } @@ -17,7 +20,10 @@ func log10(x float64) float64 { // Log2 returns the binary logarithm of x. // The special cases are the same as for Log. -func libc_log2(float64) float64 __asm__("log2") + +//extern log2 +func libc_log2(float64) float64 + func Log2(x float64) float64 { return libc_log2(x) } diff --git a/libgo/go/math/log1p.go b/libgo/go/math/log1p.go index 39c1b40..15cd676 100644 --- a/libgo/go/math/log1p.go +++ b/libgo/go/math/log1p.go @@ -92,7 +92,10 @@ package math // Log1p(-1) = -Inf // Log1p(x < -1) = NaN // Log1p(NaN) = NaN -func libc_log1p(float64) float64 __asm__("log1p") + +//extern log1p +func libc_log1p(float64) float64 + func Log1p(x float64) float64 { return libc_log1p(x) } diff --git a/libgo/go/math/mod.go b/libgo/go/math/mod.go index 347da70..dbb3aa0 100644 --- a/libgo/go/math/mod.go +++ b/libgo/go/math/mod.go @@ -18,7 +18,10 @@ package math // Mod(x, 0) = NaN // Mod(x, ±Inf) = x // Mod(x, NaN) = NaN -func libc_fmod(float64, float64) float64 __asm__("fmod") + +//extern fmod +func libc_fmod(float64, float64) float64 + func Mod(x, y float64) float64 { return libc_fmod(x, y) } diff --git a/libgo/go/math/sin.go b/libgo/go/math/sin.go index ebde7d4..d692b33 100644 --- a/libgo/go/math/sin.go +++ b/libgo/go/math/sin.go @@ -114,7 +114,10 @@ var _cos = [...]float64{ // Special cases are: // Cos(±Inf) = NaN // Cos(NaN) = NaN -func libc_cos(float64) float64 __asm__("cos") + +//extern cos +func libc_cos(float64) float64 + func Cos(x float64) float64 { return libc_cos(x) } @@ -176,7 +179,10 @@ func cos(x float64) float64 { // Sin(±0) = ±0 // Sin(±Inf) = NaN // Sin(NaN) = NaN -func libc_sin(float64) float64 __asm__("sin") + +//extern sin +func libc_sin(float64) float64 + func Sin(x float64) float64 { return libc_sin(x) } diff --git a/libgo/go/math/sqrt.go b/libgo/go/math/sqrt.go index fb3aff8..4f87f41 100644 --- a/libgo/go/math/sqrt.go +++ b/libgo/go/math/sqrt.go @@ -11,7 +11,10 @@ package math // Sqrt(±0) = ±0 // Sqrt(x < 0) = NaN // Sqrt(NaN) = NaN -func libc_sqrt(float64) float64 __asm__("sqrt") + +//extern sqrt +func libc_sqrt(float64) float64 + func Sqrt(x float64) float64 { return libc_sqrt(x) } diff --git a/libgo/go/math/tan.go b/libgo/go/math/tan.go index 926bb4b..791ffc0 100644 --- a/libgo/go/math/tan.go +++ b/libgo/go/math/tan.go @@ -79,7 +79,10 @@ var _tanQ = [...]float64{ // Tan(±0) = ±0 // Tan(±Inf) = NaN // Tan(NaN) = NaN -func libc_tan(float64) float64 __asm__("tan") + +//extern tan +func libc_tan(float64) float64 + func Tan(x float64) float64 { return libc_tan(x) } diff --git a/libgo/go/net/cgo_unix.go b/libgo/go/net/cgo_unix.go index 1a0f406..e96df66 100644 --- a/libgo/go/net/cgo_unix.go +++ b/libgo/go/net/cgo_unix.go @@ -21,9 +21,14 @@ import ( "unsafe" ) -func libc_getaddrinfo(node *byte, service *byte, hints *syscall.Addrinfo, res **syscall.Addrinfo) int __asm__ ("getaddrinfo") -func libc_freeaddrinfo(res *syscall.Addrinfo) __asm__ ("freeaddrinfo") -func libc_gai_strerror(errcode int) *byte __asm__ ("gai_strerror") +//extern getaddrinfo +func libc_getaddrinfo(node *byte, service *byte, hints *syscall.Addrinfo, res **syscall.Addrinfo) int + +//extern freeaddrinfo +func libc_freeaddrinfo(res *syscall.Addrinfo) + +//extern gai_strerror +func libc_gai_strerror(errcode int) *byte // bytePtrToString takes a NUL-terminated array of bytes and convert // it to a Go string. diff --git a/libgo/go/os/dir.go b/libgo/go/os/dir.go index 0e3c399..f119a21 100644 --- a/libgo/go/os/dir.go +++ b/libgo/go/os/dir.go @@ -10,12 +10,15 @@ import ( "unsafe" ) -func libc_dup(fd int) int __asm__ ("dup") -func libc_opendir(*byte) *syscall.DIR __asm__ ("opendir") -func libc_closedir(*syscall.DIR) int __asm__ ("closedir") +//extern opendir +func libc_opendir(*byte) *syscall.DIR + +//extern closedir +func libc_closedir(*syscall.DIR) int // FIXME: pathconf returns long, not int. -func libc_pathconf(*byte, int) int __asm__ ("pathconf") +//extern pathconf +func libc_pathconf(*byte, int) int func clen(n []byte) int { for i := 0; i < len(n); i++ { @@ -26,14 +29,14 @@ func clen(n []byte) int { return len(n) } -var elen int; +var elen int func (file *File) readdirnames(n int) (names []string, err error) { if elen == 0 { - var dummy syscall.Dirent; + var dummy syscall.Dirent elen = (unsafe.Offsetof(dummy.Name) + - libc_pathconf(syscall.StringBytePtr(file.name), syscall.PC_NAME_MAX) + - 1); + libc_pathconf(syscall.StringBytePtr(file.name), syscall.PC_NAME_MAX) + + 1) } if file.dirinfo == nil { @@ -55,7 +58,7 @@ func (file *File) readdirnames(n int) (names []string, err error) { dir := file.dirinfo.dir if dir == nil { return names, NewSyscallError("opendir", syscall.GetErrno()) - } + } for n != 0 { var result *syscall.Dirent @@ -67,7 +70,7 @@ func (file *File) readdirnames(n int) (names []string, err error) { break // EOF } var name = string(result.Name[0:clen(result.Name[0:])]) - if name == "." || name == ".." { // Useless names + if name == "." || name == ".." { // Useless names continue } names = append(names, name) diff --git a/libgo/go/os/dir_largefile.go b/libgo/go/os/dir_largefile.go index d6b4239..2555c7b 100644 --- a/libgo/go/os/dir_largefile.go +++ b/libgo/go/os/dir_largefile.go @@ -9,4 +9,5 @@ package os import "syscall" -func libc_readdir_r(*syscall.DIR, *syscall.Dirent, **syscall.Dirent) syscall.Errno __asm__ ("readdir64_r") +//extern readdir64_r +func libc_readdir_r(*syscall.DIR, *syscall.Dirent, **syscall.Dirent) syscall.Errno diff --git a/libgo/go/os/dir_regfile.go b/libgo/go/os/dir_regfile.go index 7effdf7..22cd33f 100644 --- a/libgo/go/os/dir_regfile.go +++ b/libgo/go/os/dir_regfile.go @@ -9,4 +9,5 @@ package os import "syscall" -func libc_readdir_r(*syscall.DIR, *syscall.Dirent, **syscall.Dirent) syscall.Errno __asm__ ("readdir_r") +// extern readdir_r +func libc_readdir_r(*syscall.DIR, *syscall.Dirent, **syscall.Dirent) syscall.Errno diff --git a/libgo/go/os/user/lookup_unix.go b/libgo/go/os/user/lookup_unix.go index 602a3da..8939ceb 100644 --- a/libgo/go/os/user/lookup_unix.go +++ b/libgo/go/os/user/lookup_unix.go @@ -26,8 +26,11 @@ static int mygetpwuid_r(int uid, struct passwd *pwd, } */ -func libc_getpwnam_r(name *byte, pwd *syscall.Passwd, buf *byte, buflen syscall.Size_t, result **syscall.Passwd) int __asm__ ("getpwnam_r") -func libc_getpwuid_r(uid syscall.Uid_t, pwd *syscall.Passwd, buf *byte, buflen syscall.Size_t, result **syscall.Passwd) int __asm__ ("getpwuid_r") +//extern getpwnam_r +func libc_getpwnam_r(name *byte, pwd *syscall.Passwd, buf *byte, buflen syscall.Size_t, result **syscall.Passwd) int + +//extern getpwuid_r +func libc_getpwuid_r(uid syscall.Uid_t, pwd *syscall.Passwd, buf *byte, buflen syscall.Size_t, result **syscall.Passwd) int // bytePtrToString takes a NUL-terminated array of bytes and convert // it to a Go string. diff --git a/libgo/go/syscall/mksyscall.awk b/libgo/go/syscall/mksyscall.awk index b02989c..8da0234 100644 --- a/libgo/go/syscall/mksyscall.awk +++ b/libgo/go/syscall/mksyscall.awk @@ -96,8 +96,8 @@ BEGIN { cfnresult = line printf("// Automatically generated wrapper for %s/%s\n", gofnname, cfnname) - printf("func c_%s(%s) %s%s__asm__(\"%s\")\n", - cfnname, cfnparams, cfnresult, cfnresult == "" ? "" : " ", cfnname) + printf("//extern %s\n", cfnname) + printf("func c_%s(%s) %s\n", cfnname, cfnparams, cfnresult) printf("func %s(%s) %s%s%s%s{\n", gofnname, gofnparams, gofnresults == "" ? "" : "(", gofnresults, gofnresults == "" ? "" : ")", gofnresults == "" ? "" : " ") diff --git a/libgo/go/syscall/syscall_unix.go b/libgo/go/syscall/syscall_unix.go index fb8986c..98e7d68 100644 --- a/libgo/go/syscall/syscall_unix.go +++ b/libgo/go/syscall/syscall_unix.go @@ -18,8 +18,11 @@ var ( Stderr = 2 ) -func c_syscall32(trap int32, a1, a2, a3, a4, a5, a6 int32) int32 __asm__ ("syscall"); -func c_syscall64(trap int64, a1, a2, a3, a4, a5, a6 int64) int64 __asm__ ("syscall"); +//extern syscall +func c_syscall32(trap int32, a1, a2, a3, a4, a5, a6 int32) int32 + +//extern syscall +func c_syscall64(trap int64, a1, a2, a3, a4, a5, a6 int64) int64 const darwinAMD64 = runtime.GOOS == "darwin" && runtime.GOARCH == "amd64" @@ -46,7 +49,7 @@ func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) var r uintptr if unsafe.Sizeof(r) == 4 { r1 := c_syscall32(int32(trap), int32(a1), int32(a2), int32(a3), - int32(a4), int32(a5), int32(a6)) + int32(a4), int32(a5), int32(a6)) r = uintptr(r1) } else { r1 := c_syscall64(int64(trap), int64(a1), int64(a2), int64(a3), @@ -75,7 +78,7 @@ func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errn var r uintptr if unsafe.Sizeof(r) == 4 { r1 := c_syscall32(int32(trap), int32(a1), int32(a2), int32(a3), - int32(a4), int32(a5), int32(a6)) + int32(a4), int32(a5), int32(a6)) r = uintptr(r1) } else { r1 := c_syscall64(int64(trap), int64(a1), int64(a2), int64(a3), |