Thank you both for the suggestions. I tried the following values:
diff --git a/libgo/goarch.sh b/libgo/goarch.sh
index 977f318b3..e0d6a3ad8 100755
--- a/libgo/goarch.sh
+++ b/libgo/goarch.sh
@@ -88,6 +88,16 @@ case $goarch in
;;
esac
;;
+ hppa)
+ bigendian=true
+ defaultphyspagesize=4096
+ family=HPPA
+ int64align=8
+ minframesize=64
+ pcquantum=4
+ ptrsize=4
+ stackalign=64
+ ;;
ia64)
family=IA64
cachelinesize=128
But unfortunately got the same result. I wonder if there is something
else missing?
Ian, if you have the time, I have a machine you can use to look at this.
-------- Original Message --------
Subject: Re: Correct goarch.sh settings for gccgo on hppa?
Date: 2022-11-25 13:45
From: John David Anglin <dave.anglin@xxxxxxxx>
To: matoro <matoro_mailinglist_kernel@xxxxxxxxx>,
linux-parisc@xxxxxxxxxxxxxxx
I added some comments below.
Some years ago we hacked on gcc to add the go language but we didn't get
it working.
Dave
On 2022-11-25 1:00 p.m., matoro wrote:
Hi, I was recommended to ask here but I'm trying to enable gccgo to run
on parisc, however I am not sure what the proper values should be for
the arch configuration settings. The description is as follows:
# Code in Makefile.am will invoke this script with two arguments.
# The first is a GOARCH value. The second is a keyword.
# The script will print the value of that keyword for that GOARCH.
# Keywords:
# - bigendian: true or false
# - cachelinesize: the cache line size in bytes
# (for performance only; it's not essential to get this right)
# - defaultphyspagesize: the default physical page size in bytes
# (not currently used, but maybe some day)
# - family: the processor family, from ALLGOARCHFAMILY in configure.ac
# - int64align: alignment of int64 type in bytes
# - maxalign: maximum alignment of values of Go types in bytes
# - minframesize: size of smallest possible function frame in bytes
# (not currently used, may never be used)
# - pcquantum: minimum size of a single instruction in bytes
# - ptrsize: size of a pointer in bytes
There is also an undocumented "stackalign" variable.
# Default values
bigendian=false
cachelinesize=64
Depends on processor. Max is 128 on machines with PA8800/PA8900
processors.
defaultphyspagesize=4096
family=unknown
int64align=8
maxalign=8
minframesize=0
pcquantum=1
ptrsize=8
stackalign=8
This was what I first attempted to set, according to a brief skim of
the ISA manual:
diff --git a/libgo/goarch.sh b/libgo/goarch.sh
index 977f318b3..ed40815ac 100755
--- a/libgo/goarch.sh
+++ b/libgo/goarch.sh
@@ -88,6 +88,16 @@ case $goarch in
;;
esac
;;
+ hppa)
+ family=HPPA
+ bigendian=true
+ defaultphyspagesize=4096
+ minframesize=16
I think this should be 0 when frame isn't needed. In 32-bit runtime,
minimum frame size is 64
when a frame is allocated.
+ int64align=8
+ stackalign=4
This probably should be 16. It needs to be at least 8 for double and
int64_t. It was set to 16
for ldcw semaphores. This was needed for the original pthread
implementation. Malloc alignment
is 16. However, this causes some issues with over alignment in some
package builds.
+ pcquantum=4
+ ptrsize=4
+ ;;
ia64)
family=IA64
cachelinesize=128
However this was clearly wrong, because while it did build, the
resulting binary immediately segfaults.
unexpected fault address 0x33d8effc
fatal error: fault
[signal SIGSEGV: segmentation violation code=0x1 addr=0x33d8effc
pc=0xf58f4284]
One would need to debug to find the cause...
goroutine 4 [running]:
runtime.dopanic__m
/var/tmp/portage/sys-devel/gcc-12.2.1_p20221008/work/gcc-12-20221008/libgo/go/runtime/panic.go:1207
runtime.fatalthrow
/var/tmp/portage/sys-devel/gcc-12.2.1_p20221008/work/gcc-12-20221008/libgo/go/runtime/panic.go:1073
runtime.throw
/var/tmp/portage/sys-devel/gcc-12.2.1_p20221008/work/gcc-12-20221008/libgo/go/runtime/panic.go:1044
runtime.sigpanic
/var/tmp/portage/sys-devel/gcc-12.2.1_p20221008/work/gcc-12-20221008/libgo/go/runtime/signal_unix.go:714
net_1http.connectMethod.scheme
/var/tmp/portage/sys-devel/gcc-12.2.1_p20221008/work/gcc-12-20221008/libgo/go/net/http/transport.go:1829
net_1http.Transport.dialConn
/var/tmp/portage/sys-devel/gcc-12.2.1_p20221008/work/gcc-12-20221008/libgo/go/net/http/transport.go:1612
net_1http.Transport.dialConnFor
/var/tmp/portage/sys-devel/gcc-12.2.1_p20221008/work/gcc-12-20221008/libgo/go/net/http/transport.go:1449
runtime.kickoff
/var/tmp/portage/sys-devel/gcc-12.2.1_p20221008/work/gcc-12-20221008/libgo/go/runtime/proc.go:1316
created by net_1http.Transport.queueForDial
/var/tmp/portage/sys-devel/gcc-12.2.1_p20221008/work/gcc-12-20221008/libgo/go/net/http/transport.go:1418
+0x37b
Is there anybody who might be able to advise on what these values
should be for parisc?