public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [RFC PATCH, go]: Port to ALPHA arch
@ 2011-03-30 20:12 Uros Bizjak
  2011-04-01 23:09 ` Ian Lance Taylor
  0 siblings, 1 reply; 4+ messages in thread
From: Uros Bizjak @ 2011-03-30 20:12 UTC (permalink / raw)
  To: gcc-patches

[-- Attachment #1: Type: text/plain, Size: 5155 bytes --]

Hello!

Attached ports go to ALPHA architecture.

There are however several problems with the build:

a) Bootstrap compare failure in the gcc/go directory due to binutils
bug [1], fixed in latest binutils SVN, use --disable-bootstrap

b) alpha doesn't define "struct user_regs_struct" from which "type
PtraceRegs" is derived. I have manually created PtraceRegs from
pt_regs structure and patched generated libgo/sysinfo.go in build
directory after the build broke. However - the comment from sys/user.h
says that this file is for GDB and GDB only...

c) some weird issue with double definition of "const _SOCK_NONBLOCK"
in gen-sysinfo.go and consequently sysinfo.go.

The test results from "make -k check" in libgo directory are quite encouraging:

PASS: asn1
PASS: big
PASS: bufio
PASS: bytes
FAIL: cmath
panic: runtime error: integer divide by zero or floating point error
../../../gcc-svn/trunk/libgo/testsuite/gotest: line 356:  1637 Aborted
       ./a.out "$@"
PASS: ebnf
PASS: exec
PASS: expvar
PASS: flag
FAIL: fmt
mallocs per Sprintf(""): 1
mallocs per Sprintf("xxx"): 1
mallocs per Sprintf("%x"): 3
mallocs per Sprintf("%x %x"): 4
panic: runtime error: integer divide by zero or floating point error [recovered]
	panic: runtime error: integer divide by zero or floating point error
../../../gcc-svn/trunk/libgo/testsuite/gotest: line 356:  2309 Aborted
       ./a.out "$@"
PASS: gob
PASS: html
FAIL: http
../../../gcc-svn/trunk/libgo/testsuite/gotest: line 356:  3133 Segmentation faul
t      ./a.out "$@"
PASS: io
PASS: json
PASS: log
FAIL: math
panic: runtime error: integer divide by zero or floating point error
../../../gcc-svn/trunk/libgo/testsuite/gotest: line 356:  4321 Aborted
       ./a.out "$@"
PASS: mime
PASS: netchan
PASS: os
PASS: patch
PASS: path
PASS: rand
PASS: reflect
PASS: regexp
FAIL: rpc
2011/03/30 21:31:20 Test RPC server listening on 127.0.0.1:47781
2011/03/30 21:31:20 Test HTTP RPC server listening on 127.0.0.1:59606
2011/03/30 21:31:20 rpc.Serve: accept:accept tcp 127.0.0.1:47781: Resource tempo
rarily unavailable
FAIL: runtime
panic: runtime error: integer divide by zero or floating point error
../../../gcc-svn/trunk/libgo/testsuite/gotest: line 356:  5980 Aborted
       ./a.out "$@"
PASS: scanner
PASS: smtp
PASS: sort
FAIL: strconv
panic: runtime error: integer divide by zero or floating point error
../../../gcc-svn/trunk/libgo/testsuite/gotest: line 356:  6561 Aborted
       ./a.out "$@"
PASS: strings
PASS: sync
PASS: tabwriter
PASS: template
PASS: time
PASS: try
PASS: unicode
PASS: utf16
PASS: utf8
FAIL: websocket
2011/03/30 21:32:19 Test WebSocket server listening on 127.0.0.1:33252
--- FAIL: websocket.TestEcho (0.0 seconds)
	dialing dial tcp 127.0.0.1:33252: Connection refused
--- FAIL: websocket.TestEchoDraft75 (0.0 seconds)
	dialing dial tcp 127.0.0.1:33252: Connection refused
--- FAIL: websocket.TestWithQuery (0.0 seconds)
	dialing dial tcp 127.0.0.1:33252: Connection refused
--- FAIL: websocket.TestWithProtocol (0.0 seconds)
	dialing dial tcp 127.0.0.1:33252: Connection refused
--- FAIL: websocket.TestHTTP (0.0 seconds)
	Get: error &http.URLError{Op:"Get", URL:"http://127.0.0.1:33252/echo", E
rror:(*net.OpError)(0xf840026d00)}
--- FAIL: websocket.TestHTTPDraft75 (0.0 seconds)
	Get: error &http.URLError{Op:"Get", URL:"http://127.0.0.1:33252/echoDraf
t75", Error:(*net.OpError)(0xf840026c40)}
panic: Dial failed: websocket.Dial ws://127.0.0.1:33252/echo: dial tcp 127.0.0.1
:33252: Connection refused
../../../gcc-svn/trunk/libgo/testsuite/gotest: line 356:  8493 Aborted
       ./a.out "$@"
PASS: xml
PASS: archive/tar
PASS: archive/zip
PASS: compress/bzip2
FAIL: compress/flate
../../../gcc-svn/trunk/libgo/testsuite/gotest: line 356:  9194 Segmentation faul
t      ./a.out "$@"
PASS: compress/gzip
PASS: compress/lzw
PASS: compress/zlib
PASS: container/heap
PASS: container/list
PASS: container/ring
PASS: container/vector
PASS: crypto/aes
PASS: crypto/block
PASS: crypto/blowfish
PASS: crypto/cipher
PASS: crypto/dsa
PASS: crypto/ecdsa
PASS: crypto/elliptic
PASS: crypto/hmac
PASS: crypto/md4
PASS: crypto/md5
PASS: crypto/ocsp
PASS: crypto/openpgp
PASS: crypto/rand
PASS: crypto/rc4
PASS: crypto/ripemd160
PASS: crypto/rsa
PASS: crypto/sha1
PASS: crypto/sha256
PASS: crypto/sha512
PASS: crypto/subtle
PASS: crypto/tls
PASS: crypto/twofish
PASS: crypto/x509
PASS: crypto/xtea
PASS: crypto/openpgp/armor
PASS: crypto/openpgp/packet
PASS: crypto/openpgp/s2k
PASS: debug/dwarf
PASS: debug/elf
PASS: debug/macho
PASS: debug/pe
PASS: encoding/ascii85
PASS: encoding/base32
PASS: encoding/base64
PASS: encoding/binary
PASS: encoding/git85
PASS: encoding/hex
PASS: encoding/line
PASS: encoding/pem
PASS: exp/datafmt
PASS: exp/draw
PASS: exp/eval
PASS: go/parser
PASS: go/printer
PASS: go/scanner
PASS: go/token
PASS: go/typechecker
PASS: hash/adler32
PASS: hash/crc32
PASS: hash/crc64
PASS: hash/fnv
PASS: http/cgi
PASS: image/png
PASS: index/suffixarray
PASS: io/ioutil
PASS: mime/multipart
PASS: net/textproto
PASS: os/signal
PASS: path/filepath
PASS: rpc/jsonrpc
PASS: sync/atomic
PASS: testing/quick
PASS: testing/script


[1] http://sourceware.org/bugzilla/show_bug.cgi?id=12610

[-- Attachment #2: p.diff.txt --]
[-- Type: text/plain, Size: 7625 bytes --]

Index: gcc/testsuite/go.test/go-test.exp
===================================================================
--- gcc/testsuite/go.test/go-test.exp	(revision 171716)
+++ gcc/testsuite/go.test/go-test.exp	(working copy)
@@ -123,6 +123,9 @@
     global target_triplet
 
     switch -glob $target_triplet {
+	"alpha*-*-*" {
+	    set goarch "alpha"
+	}
 	"arm*-*-*" -
 	"ep9312*-*-*" -
 	"strongarm*-*-*" -
Index: libgo/configure
===================================================================
--- libgo/configure	(revision 171716)
+++ libgo/configure	(working copy)
@@ -633,6 +633,8 @@
 LIBGO_IS_M68K_TRUE
 LIBGO_IS_ARM_FALSE
 LIBGO_IS_ARM_TRUE
+LIBGO_IS_ALPHA_FALSE
+LIBGO_IS_ALPHA_TRUE
 LIBGO_IS_386_FALSE
 LIBGO_IS_386_TRUE
 GOOS
@@ -10898,7 +10900,7 @@
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 10901 "configure"
+#line 10903 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11004,7 +11006,7 @@
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11007 "configure"
+#line 11009 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -13267,6 +13269,7 @@
 
 
 is_386=no
+is_alpha=no
 is_arm=no
 is_m68k=no
 is_mips=no
@@ -13278,6 +13281,10 @@
 is_x86_64=no
 GOARCH=unknown
 case ${host} in
+  alpha*-*-*)
+    is_alpha=yes
+    GOARCH=alpha
+    ;;
   arm*-*-* | strongarm*-*-* | ep9312*-*-* | xscale-*-*)
     is_arm=yes
     GOARCH=arm
@@ -13375,6 +13382,14 @@
   LIBGO_IS_386_FALSE=
 fi
 
+ if test $is_alpha = yes; then
+  LIBGO_IS_ALPHA_TRUE=
+  LIBGO_IS_ALPHA_FALSE='#'
+else
+  LIBGO_IS_ALPHA_TRUE='#'
+  LIBGO_IS_ALPHA_FALSE=
+fi
+
  if test $is_arm = yes; then
   LIBGO_IS_ARM_TRUE=
   LIBGO_IS_ARM_FALSE='#'
@@ -14492,6 +14507,10 @@
   as_fn_error "conditional \"LIBGO_IS_386\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${LIBGO_IS_ALPHA_TRUE}" && test -z "${LIBGO_IS_ALPHA_FALSE}"; then
+  as_fn_error "conditional \"LIBGO_IS_ALPHA\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${LIBGO_IS_ARM_TRUE}" && test -z "${LIBGO_IS_ARM_FALSE}"; then
   as_fn_error "conditional \"LIBGO_IS_ARM\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
Index: libgo/syscalls/syscall_linux_alpha.go
===================================================================
--- libgo/syscalls/syscall_linux_alpha.go	(revision 0)
+++ libgo/syscalls/syscall_linux_alpha.go	(revision 0)
@@ -0,0 +1,15 @@
+// syscall_linux_alpha.go -- GNU/Linux ALPHA specific support
+
+// Copyright 2011 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
+
+func (r *PtraceRegs) PC() uint64 {
+	return r.Pc;
+}
+
+func (r *PtraceRegs) SetPC(pc uint64) {
+	r.Pc = pc;
+}
Index: libgo/configure.ac
===================================================================
--- libgo/configure.ac	(revision 171716)
+++ libgo/configure.ac	(working copy)
@@ -134,6 +134,7 @@
 
 dnl N.B. Keep in sync with gcc/testsuite/go.test/go-test.exp (go-set-goarch).
 is_386=no
+is_alpha=no
 is_arm=no
 is_m68k=no
 is_mips=no
@@ -145,6 +146,10 @@
 is_x86_64=no
 GOARCH=unknown
 case ${host} in
+  alpha*-*-*)
+    is_alpha=yes
+    GOARCH=alpha
+    ;;
   arm*-*-* | strongarm*-*-* | ep9312*-*-* | xscale-*-*)
     is_arm=yes
     GOARCH=arm
@@ -205,6 +210,7 @@
     ;;
 esac
 AM_CONDITIONAL(LIBGO_IS_386, test $is_386 = yes)
+AM_CONDITIONAL(LIBGO_IS_ALPHA, test $is_alpha = yes)
 AM_CONDITIONAL(LIBGO_IS_ARM, test $is_arm = yes)
 AM_CONDITIONAL(LIBGO_IS_M68K, test $is_m68k = yes)
 AM_CONDITIONAL(LIBGO_IS_MIPS, test $is_mips = yes)
Index: libgo/go/debug/proc/regs_linux_alpha.go
===================================================================
--- libgo/go/debug/proc/regs_linux_alpha.go	(revision 0)
+++ libgo/go/debug/proc/regs_linux_alpha.go	(revision 0)
@@ -0,0 +1,209 @@
+// Copyright 2011 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 proc
+
+import (
+	"os"
+	"strconv"
+	"syscall"
+)
+
+type alphaRegs struct {
+	syscall.PtraceRegs
+	setter func(*syscall.PtraceRegs) os.Error
+}
+
+var names = [...]string{
+	"r0",
+	"r1",
+	"r2",
+	"r3",
+	"r4",
+	"r5",
+	"r6",
+	"r7",
+	"r8",
+	"r19",
+	"r20",
+	"r21",
+	"r22",
+	"r23",
+	"r24",
+	"r25",
+	"r26",
+	"r27",
+	"r28",
+	"hae",
+	"trap_a0",
+	"trap_a1",
+	"trap_a2",
+	"ps",
+	"pc",
+	"gp",
+	"r16",
+	"r17",
+	"r18",
+}
+
+func (r *alphaRegs) PC() Word { return Word(r.Pc) }
+
+func (r *alphaRegs) SetPC(val Word) os.Error {
+	r.Pc = uint64(val)
+	return r.setter(&r.PtraceRegs)
+}
+
+func (r *alphaRegs) Link() Word {
+	panic("No link register")
+}
+
+func (r *alphaRegs) SetLink(val Word) os.Error {
+	panic("No link register")
+}
+
+func (r *alphaRegs) SP() Word { return Word(r.Ps) }
+
+func (r *alphaRegs) SetSP(val Word) os.Error {
+	r.Ps = uint64(val)
+	return r.setter(&r.PtraceRegs)
+}
+
+func (r *alphaRegs) Names() []string { return names[0:] }
+
+func (r *alphaRegs) Get(i int) Word {
+	switch i {
+	case 0:
+		return Word(r.R0)
+	case 1:
+		return Word(r.R1)
+	case 2:
+		return Word(r.R2)
+	case 3:
+		return Word(r.R3)
+	case 4:
+		return Word(r.R4)
+	case 5:
+		return Word(r.R5)
+	case 6:
+		return Word(r.R6)
+	case 7:
+		return Word(r.R7)
+	case 8:
+		return Word(r.R8)
+	case 9:
+		return Word(r.R19)
+	case 10:
+		return Word(r.R20)
+	case 11:
+		return Word(r.R21)
+	case 12:
+		return Word(r.R22)
+	case 13:
+		return Word(r.R23)
+	case 14:
+		return Word(r.R24)
+	case 15:
+		return Word(r.R25)
+	case 16:
+		return Word(r.R26)
+	case 17:
+		return Word(r.R27)
+	case 18:
+		return Word(r.R28)
+	case 19:
+		return Word(r.Hae)
+	case 20:
+		return Word(r.Trap_a0)
+	case 21:
+		return Word(r.Trap_a1)
+	case 22:
+		return Word(r.Trap_a2)
+	case 23:
+		return Word(r.Ps)
+	case 24:
+		return Word(r.Pc)
+	case 25:
+		return Word(r.Gp)
+	case 26:
+		return Word(r.R16)
+	case 27:
+		return Word(r.R17)
+	case 28:
+		return Word(r.R18)
+	}
+	panic("invalid register index " + strconv.Itoa(i))
+}
+
+func (r *alphaRegs) Set(i int, val Word) os.Error {
+	switch i {
+	case 0:
+		r.R0 = uint64(val)
+	case 1:
+		r.R1 = uint64(val)
+	case 2:
+		r.R2 = uint64(val)
+	case 3:
+		r.R3 = uint64(val)
+	case 4:
+		r.R4 = uint64(val)
+	case 5:
+		r.R5 = uint64(val)
+	case 6:
+		r.R6 = uint64(val)
+	case 7:
+		r.R7 = uint64(val)
+	case 8:
+		r.R8 = uint64(val)
+	case 9:
+		r.R19 = uint64(val)
+	case 10:
+		r.R20 = uint64(val)
+	case 11:
+		r.R21 = uint64(val)
+	case 12:
+		r.R22 = uint64(val)
+	case 13:
+		r.R23 = uint64(val)
+	case 14:
+		r.R24 = uint64(val)
+	case 15:
+		r.R25 = uint64(val)
+	case 16:
+		r.R26 = uint64(val)
+	case 17:
+		r.R27 = uint64(val)
+	case 18:
+		r.R28 = uint64(val)
+	case 19:
+		r.Hae = uint64(val)
+	case 20:
+		r.Trap_a0 = uint64(val)
+	case 21:
+		r.Trap_a1 = uint64(val)
+	case 22:
+		r.Trap_a2 = uint64(val)
+	case 23:
+		r.Ps = uint64(val)
+	case 24:
+		r.Pc = uint64(val)
+	case 25:
+		r.Gp = uint64(val)
+	case 26:
+		r.R16 = uint64(val)
+	case 27:
+		r.R17 = uint64(val)
+	case 28:
+		r.R18 = uint64(val)
+	default:
+		panic("invalid register index " + strconv.Itoa(i))
+	}
+	return r.setter(&r.PtraceRegs)
+}
+
+func newRegs(regs *syscall.PtraceRegs, setter func(*syscall.PtraceRegs) os.Error) Regs {
+	res := alphaRegs{}
+	res.PtraceRegs = *regs
+	res.setter = setter
+	return &res
+}

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [RFC PATCH, go]: Port to ALPHA arch
  2011-03-30 20:12 [RFC PATCH, go]: Port to ALPHA arch Uros Bizjak
@ 2011-04-01 23:09 ` Ian Lance Taylor
  2011-04-03 17:46   ` Uros Bizjak
  0 siblings, 1 reply; 4+ messages in thread
From: Ian Lance Taylor @ 2011-04-01 23:09 UTC (permalink / raw)
  To: Uros Bizjak; +Cc: gcc-patches, gofrontend-dev

On Wed, Mar 30, 2011 at 12:58 PM, Uros Bizjak <ubizjak@gmail.com> wrote:
>
> Attached ports go to ALPHA architecture.

Thanks!

Committed.


> b) alpha doesn't define "struct user_regs_struct" from which "type
> PtraceRegs" is derived. I have manually created PtraceRegs from
> pt_regs structure and patched generated libgo/sysinfo.go in build
> directory after the build broke. However - the comment from sys/user.h
> says that this file is for GDB and GDB only...

libgo uses it to support ptrace, which in effect is the same as what
gdb does.  If mksysinfo.sh is unable to provide any definition for the
structure, then the choices are either to patch up mksysinfo.sh so
that it works, or to simply define the structure in
libgo/syscalls/syscall_linux_alpha.go.  it is unlikely to change so
the latter seems acceptable if patching mksysinfo is too hard.

> c) some weird issue with double definition of "const _SOCK_NONBLOCK"
> in gen-sysinfo.go and consequently sysinfo.go.

The code in gcc/godump.c uses a hash table to keep this from
happening; I'm not sure why that is not working in this case.  Is
SOCK_NONBLOCK both a #define macro and an enum value?

> The test results from "make -k check" in libgo directory are quite encouraging:

Yes.

> FAIL: cmath
> panic: runtime error: integer divide by zero or floating point error

This is peculiar--it looks like there is something systematically
causing a division by zero.  I wonder what it could be.

Ian

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [RFC PATCH, go]: Port to ALPHA arch
  2011-04-01 23:09 ` Ian Lance Taylor
@ 2011-04-03 17:46   ` Uros Bizjak
  2011-05-31 19:50     ` Ian Lance Taylor
  0 siblings, 1 reply; 4+ messages in thread
From: Uros Bizjak @ 2011-04-03 17:46 UTC (permalink / raw)
  To: Ian Lance Taylor; +Cc: gcc-patches, gofrontend-dev

[-- Attachment #1: Type: text/plain, Size: 2685 bytes --]

On Sat, Apr 2, 2011 at 1:09 AM, Ian Lance Taylor <iant@google.com> wrote:
> On Wed, Mar 30, 2011 at 12:58 PM, Uros Bizjak <ubizjak@gmail.com> wrote:
>>
>> Attached ports go to ALPHA architecture.
>
> Thanks!
>
> Committed.
>
>
>> b) alpha doesn't define "struct user_regs_struct" from which "type
>> PtraceRegs" is derived. I have manually created PtraceRegs from
>> pt_regs structure and patched generated libgo/sysinfo.go in build
>> directory after the build broke. However - the comment from sys/user.h
>> says that this file is for GDB and GDB only...
>
> libgo uses it to support ptrace, which in effect is the same as what
> gdb does.  If mksysinfo.sh is unable to provide any definition for the
> structure, then the choices are either to patch up mksysinfo.sh so
> that it works, or to simply define the structure in
> libgo/syscalls/syscall_linux_alpha.go.  it is unlikely to change so
> the latter seems acceptable if patching mksysinfo is too hard.

Attached patch implements this suggestion and builds libgo without problems.

>> c) some weird issue with double definition of "const _SOCK_NONBLOCK"
>> in gen-sysinfo.go and consequently sysinfo.go.
>
> The code in gcc/godump.c uses a hash table to keep this from
> happening; I'm not sure why that is not working in this case.  Is
> SOCK_NONBLOCK both a #define macro and an enum value?

Yes, SOCK_NONBLOCK is defined in bits/sock.h as

--cut here--
enum __socket_type
{
#undef SOCK_NONBLOCK
  SOCK_NONBLOCK = 0x40000000    /* Atomically mark descriptor(s) as
                                   non-blocking.  */
#define SOCK_NONBLOCK SOCK_NONBLOCK
};

/* Get socket manipulation related informations from kernel headers.  */
#include "asm/socket.h"
--cut here--

asm/socket.h:

--cut here--
/* O_NONBLOCK clashes with the bits used for socket types.  Therefore we
 *  have to define SOCK_NONBLOCK to a different value here.
 */
#define SOCK_NONBLOCK   0x40000000
--cut here--

Processing bits/socket.h with -fdumo-go-spec= , we get:

// unknowndefine SOCK_NONBLOCK SOCK_NONBLOCK
const _SOCK_NONBLOCK = 0x40000000
const _SOCK_NONBLOCK = 1073741824

>
>> The test results from "make -k check" in libgo directory are quite encouraging:
>
> Yes.
>
>> FAIL: cmath
>> panic: runtime error: integer divide by zero or floating point error
>
> This is peculiar--it looks like there is something systematically
> causing a division by zero.  I wonder what it could be.

I will try to analyse these failures. Perhaps these failures are due
to the fact that alpha needs -mieee to handle NaN and Inf values (a
FPE is generated otherwise).

Thanks,
Uros.

[-- Attachment #2: a.diff.txt --]
[-- Type: text/plain, Size: 730 bytes --]

Index: libgo/syscalls/syscall_linux_alpha.go
===================================================================
--- libgo/syscalls/syscall_linux_alpha.go	(revision 171911)
+++ libgo/syscalls/syscall_linux_alpha.go	(working copy)
@@ -6,6 +6,38 @@
 
 package syscall
 
+type PtraceRegs struct {
+	R0 uint64
+	R1 uint64
+	R2 uint64
+	R3 uint64
+	R4 uint64
+	R5 uint64
+	R6 uint64
+	R7 uint64
+	R8 uint64
+	R19 uint64
+	R20 uint64
+	R21 uint64
+	R22 uint64
+	R23 uint64
+	R24 uint64
+	R25 uint64
+	R26 uint64
+	R27 uint64
+	R28 uint64
+	Hae uint64
+	Trap_a0 uint64
+	Trap_a1 uint64
+	Trap_a2 uint64
+	Ps uint64
+	Pc uint64
+	Gp uint64
+	R16 uint64
+	R17 uint64
+	R18 uint64
+}
+
 func (r *PtraceRegs) PC() uint64 {
 	return r.Pc;
 }

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [RFC PATCH, go]: Port to ALPHA arch
  2011-04-03 17:46   ` Uros Bizjak
@ 2011-05-31 19:50     ` Ian Lance Taylor
  0 siblings, 0 replies; 4+ messages in thread
From: Ian Lance Taylor @ 2011-05-31 19:50 UTC (permalink / raw)
  To: Uros Bizjak; +Cc: gcc-patches, gofrontend-dev

Uros Bizjak <ubizjak@gmail.com> writes:

> On Sat, Apr 2, 2011 at 1:09 AM, Ian Lance Taylor <iant@google.com> wrote:
>> On Wed, Mar 30, 2011 at 12:58 PM, Uros Bizjak <ubizjak@gmail.com> wrote:
>>>
>>> Attached ports go to ALPHA architecture.
>>
>> Thanks!
>>
>> Committed.
>>
>>
>>> b) alpha doesn't define "struct user_regs_struct" from which "type
>>> PtraceRegs" is derived. I have manually created PtraceRegs from
>>> pt_regs structure and patched generated libgo/sysinfo.go in build
>>> directory after the build broke. However - the comment from sys/user.h
>>> says that this file is for GDB and GDB only...
>>
>> libgo uses it to support ptrace, which in effect is the same as what
>> gdb does.  If mksysinfo.sh is unable to provide any definition for the
>> structure, then the choices are either to patch up mksysinfo.sh so
>> that it works, or to simply define the structure in
>> libgo/syscalls/syscall_linux_alpha.go.  it is unlikely to change so
>> the latter seems acceptable if patching mksysinfo is too hard.
>
> Attached patch implements this suggestion and builds libgo without problems.

Committed.  Thanks.

Ian

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2011-05-31 18:16 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-03-30 20:12 [RFC PATCH, go]: Port to ALPHA arch Uros Bizjak
2011-04-01 23:09 ` Ian Lance Taylor
2011-04-03 17:46   ` Uros Bizjak
2011-05-31 19:50     ` Ian Lance Taylor

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).