* [9front] Go: "exec header invalid"
@ 2022-03-13 19:40 sml
2022-03-13 21:10 ` cinap_lenrek
2022-03-13 23:59 ` ori
0 siblings, 2 replies; 13+ messages in thread
From: sml @ 2022-03-13 19:40 UTC (permalink / raw)
To: 9front
[-- Attachment #1: Type: text/plain, Size: 580 bytes --]
Hi,
I tried to build Go according to the instructions on https://9lab.org/plan9/go/ <https://9lab.org/plan9/go/>.
I’m running the pi3 image of 9front on a Raspberry 4 and try to bootstrap the Go source 1.17.8 with the binary "Go 1.17.6 on plan9/arm (ARMv7)“ from 9legacy.org <http://9legacy.org/>.
When I try to run:
./make.rc
I get this message:
Building Go cmd/dist using /tmp/go-plan9-arm-bootstrap
/tmp/go-plan9-arm-bootstrap/bin/go: exec header invalid
Does anyone have any idea what I'm doing wrong?
Thank you very much and best regards,
sml
[-- Attachment #2: Type: text/html, Size: 1272 bytes --]
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [9front] Go: "exec header invalid"
2022-03-13 19:40 [9front] Go: "exec header invalid" sml
@ 2022-03-13 21:10 ` cinap_lenrek
2022-03-14 6:37 ` sml
2022-03-13 23:59 ` ori
1 sibling, 1 reply; 13+ messages in thread
From: cinap_lenrek @ 2022-03-13 21:10 UTC (permalink / raw)
To: 9front
no surprise. the pi3 and pi4 kernels are arm64 (armv8).
--
cinap
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [9front] Go: "exec header invalid"
2022-03-13 19:40 [9front] Go: "exec header invalid" sml
2022-03-13 21:10 ` cinap_lenrek
@ 2022-03-13 23:59 ` ori
1 sibling, 0 replies; 13+ messages in thread
From: ori @ 2022-03-13 23:59 UTC (permalink / raw)
To: 9front
Quoth sml <sml@firstpost.pub>:
> Hi,
>
> I tried to build Go according to the instructions on https://9lab.org/plan9/go/ <https://9lab.org/plan9/go/>.
>
> I’m running the pi3 image of 9front on a Raspberry 4 and try to bootstrap the Go source 1.17.8 with the binary "Go 1.17.6 on plan9/arm (ARMv7)“ from 9legacy.org <http://9legacy.org/>.
>
> When I try to run:
>
> ./make.rc
>
> I get this message:
>
> Building Go cmd/dist using /tmp/go-plan9-arm-bootstrap
> /tmp/go-plan9-arm-bootstrap/bin/go: exec header invalid
>
> Does anyone have any idea what I'm doing wrong?
>
At a guess, you're trying to run a 32 bit arm binary
on a 64 bit 9front. Go currently doesn't support arm64.
I expect that it won't be a huge effort to change that,
but nobody has done the work yet.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [9front] Go: "exec header invalid"
2022-03-13 21:10 ` cinap_lenrek
@ 2022-03-14 6:37 ` sml
2022-03-14 10:47 ` sml
2022-03-14 15:18 ` ori
0 siblings, 2 replies; 13+ messages in thread
From: sml @ 2022-03-14 6:37 UTC (permalink / raw)
To: 9front
thank you cinap and Ori.
what steps would be required to add support to armv8? would this be a good beginner project?
if this is not the case, would it be possible to add a bounty?
thank you and best regards,
sml
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [9front] Go: "exec header invalid"
2022-03-14 6:37 ` sml
@ 2022-03-14 10:47 ` sml
2022-03-14 15:18 ` ori
1 sibling, 0 replies; 13+ messages in thread
From: sml @ 2022-03-14 10:47 UTC (permalink / raw)
To: 9front
when trying to cross-compile a toolchain for plan9/arm64 i get the message:
cmd/go: unsupported GOOS/GOARCH pair plan9/arm64
go tool dist: FAILED: /usr/local/Cellar/go/1.17/go-plan9-arm64-bootstrap/pkg/tool/darwin_amd64/go_bootstrap install -gcflags=all= -ldflags=all= std cmd: exit status 2
but as Ori said, there is no support for plan9/arm64 listed on https://go.dev/doc/install/source.
> Am 14.03.2022 um 07:37 schrieb sml <sml@firstpost.pub>:
>
> thank you cinap and Ori.
>
> what steps would be required to add support to armv8? would this be a good beginner project?
>
> if this is not the case, would it be possible to add a bounty?
>
> thank you and best regards,
> sml
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [9front] Go: "exec header invalid"
2022-03-14 6:37 ` sml
2022-03-14 10:47 ` sml
@ 2022-03-14 15:18 ` ori
2022-03-15 6:19 ` sml
1 sibling, 1 reply; 13+ messages in thread
From: ori @ 2022-03-14 15:18 UTC (permalink / raw)
To: 9front
Quoth sml <sml@firstpost.pub>:
> thank you cinap and Ori.
>
> what steps would be required to add support to armv8? would this be a good beginner project?
>
> if this is not the case, would it be possible to add a bounty?
>
> thank you and best regards,
> sml
>
It wouldn't be particularly difficult -- arm64 support
already exists for unix; the bulk of the work would be
to add the plan 9 flavored assembly for doing system
calls.
Between a week for someone who's vaguely familiar with
the code to a month or two for someone learning about
the go internals as they go, at a guess.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [9front] Go: "exec header invalid"
2022-03-14 15:18 ` ori
@ 2022-03-15 6:19 ` sml
2022-03-15 11:15 ` Philip Silva
0 siblings, 1 reply; 13+ messages in thread
From: sml @ 2022-03-15 6:19 UTC (permalink / raw)
To: 9front
Again, thank you very much Ori.
This doesn't sound that simple to me, but it may be a good opportunity to understand both plan 9 and go a little better. If anyone knows of any helpful resources on this, I would appreciate a quick note.
Thank you and best regards,
sml
> Am 14.03.2022 um 16:18 schrieb ori@eigenstate.org:
>
> Quoth sml <sml@firstpost.pub>:
>> thank you cinap and Ori.
>>
>> what steps would be required to add support to armv8? would this be a good beginner project?
>>
>> if this is not the case, would it be possible to add a bounty?
>>
>> thank you and best regards,
>> sml
>>
>
> It wouldn't be particularly difficult -- arm64 support
> already exists for unix; the bulk of the work would be
> to add the plan 9 flavored assembly for doing system
> calls.
>
> Between a week for someone who's vaguely familiar with
> the code to a month or two for someone learning about
> the go internals as they go, at a guess.
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [9front] Go: "exec header invalid"
2022-03-15 6:19 ` sml
@ 2022-03-15 11:15 ` Philip Silva
2022-03-15 16:32 ` Kurt H Maier
2022-03-16 7:43 ` sml
0 siblings, 2 replies; 13+ messages in thread
From: Philip Silva @ 2022-03-15 11:15 UTC (permalink / raw)
To: 9front
Actually there's also a 500$ bounty for this
http://fqa.9front.org/appendixb.html
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [9front] Go: "exec header invalid"
2022-03-15 11:15 ` Philip Silva
@ 2022-03-15 16:32 ` Kurt H Maier
2022-03-16 7:43 ` sml
1 sibling, 0 replies; 13+ messages in thread
From: Kurt H Maier @ 2022-03-15 16:32 UTC (permalink / raw)
To: 9front
On Tue, Mar 15, 2022 at 11:15:50AM +0000, Philip Silva wrote:
> Actually there's also a 500$ bounty for this
>
> http://fqa.9front.org/appendixb.html
I wonder if all the contributors to that bounty are still interested.
khm
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [9front] Go: "exec header invalid"
2022-03-15 11:15 ` Philip Silva
2022-03-15 16:32 ` Kurt H Maier
@ 2022-03-16 7:43 ` sml
2022-03-16 15:16 ` ori
2022-03-16 19:29 ` Steve Simon
1 sibling, 2 replies; 13+ messages in thread
From: sml @ 2022-03-16 7:43 UTC (permalink / raw)
To: 9front
> Am 15.03.2022 um 12:15 schrieb Philip Silva <philip.silva@protonmail.com>:
>
> Actually there's also a 500$ bounty for this
>
> http://fqa.9front.org/appendixb.html
I would like to add 50$ for this.
At the moment, I’m trying to understand how plan9/arm is implemented, to get an idea what needs to be done for plan9/arm64.
As far as I understand, /src/syscall/mksysnum_plan9.sh in go is used to get the information from /src/libc/9syscall/sys.h from plan9, using it in /src/syscall/zsysnum_plan9.go and at the beginning of /src/runtime/sys_plan9_arm.s.
/src/runtime/defs_plan9_arm.go is the information from /arm/include/ureg.h with getter and setter functions.
But there are files like:
/src/runtime/os_plan9_arm.go
/src/runtime/rt0_plan9_arm.s
/src/runtime/sys_plan9_arm.s (the part below the sysnums)
/src/syscall/asm_plan9_arm.s
/src/syscall/syscall_plan9.go
/src/syscall/zsyscall_plan9_arm.go
for which I cannot find the source in the plan9 code.
Is there documentation about the go code itself, regarding the machine dependent parts?
And do you know where I can find the plan9 counterparts to some of the files listed above?
Thank you very much in advance!
Best regards,
sml
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [9front] Go: "exec header invalid"
2022-03-16 7:43 ` sml
@ 2022-03-16 15:16 ` ori
2022-03-16 17:01 ` cinap_lenrek
2022-03-16 19:29 ` Steve Simon
1 sibling, 1 reply; 13+ messages in thread
From: ori @ 2022-03-16 15:16 UTC (permalink / raw)
To: 9front
Quoth sml <sml@firstpost.pub>:
> > Am 15.03.2022 um 12:15 schrieb Philip Silva <philip.silva@protonmail.com>:
> >
> > Actually there's also a 500$ bounty for this
> >
> > http://fqa.9front.org/appendixb.html
>
> I would like to add 50$ for this.
>
>
> At the moment, I’m trying to understand how plan9/arm is implemented, to get an idea what needs to be done for plan9/arm64.
>
> As far as I understand, /src/syscall/mksysnum_plan9.sh in go is used to get the information from /src/libc/9syscall/sys.h from plan9, using it in /src/syscall/zsysnum_plan9.go and at the beginning of /src/runtime/sys_plan9_arm.s.
>
> /src/runtime/defs_plan9_arm.go is the information from /arm/include/ureg.h with getter and setter functions.
There's no direct translation for most of them.
>
> But there are files like:
> src/runtime/os_plan9_arm.go
This just looks like it papers over the
fact that arm32 has no cycle counter;
not sure if arm64 has it -- if it does,
we should use it, if not, we should keep
this hack.
> src/runtime/rt0_plan9_arm.s
This code jumps into the runtime, after
setting up the arguments in a way that
rt0_go expects. Roughly the equivalent
of /sys/src/libcarm64/main9.s, though
the work is split differently, and go
does a lot more.
> / src/runtime/sys_plan9_arm.s (the part below the sysnums)
this is the glue that the go runtime uses to
talk to the OS; a thin abstraction layer over
the system calls.
> /src/syscall/asm_plan9_arm.s
A generic wrapper to do syscalls. Plan 9
has a wrapper per syscall, generated in
/sys/src/libc/9syscall/mkfile, go has
a generic 'Syscall(num, args...)' func.
> /src/syscall/syscall_plan9.go
The actual syscall package -- it's not arm
specific, so you shouldn't need to touch it.
> /src/syscall/zsyscall_plan9_arm.go
Looks like generated code, don't see why it'd
need to be adjusted, since our types are the
same across all archs.
> for which I cannot find the source in the plan9 code.
>
> Is there documentation about the go code itself, regarding the machine dependent parts?
Read the code, read the comments, ask quesstions. Not aware of
any good docs.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [9front] Go: "exec header invalid"
2022-03-16 15:16 ` ori
@ 2022-03-16 17:01 ` cinap_lenrek
0 siblings, 0 replies; 13+ messages in thread
From: cinap_lenrek @ 2022-03-16 17:01 UTC (permalink / raw)
To: 9front
use plan9 libc as a reference. it has the assembly for
reading the user accessible cycle counter for example.
--
cinap
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [9front] Go: "exec header invalid"
2022-03-16 7:43 ` sml
2022-03-16 15:16 ` ori
@ 2022-03-16 19:29 ` Steve Simon
1 sibling, 0 replies; 13+ messages in thread
From: Steve Simon @ 2022-03-16 19:29 UTC (permalink / raw)
To: 9front
i would ask in gonuts google group, and ask richard miller who did the plan9 arm32 port i believe - they are likely to be able tobhelp.
-Steve
> On 16 Mar 2022, at 5:07 pm, sml <sml@firstpost.pub> wrote:
>
>
>>
>> Am 15.03.2022 um 12:15 schrieb Philip Silva <philip.silva@protonmail.com>:
>>
>> Actually there's also a 500$ bounty for this
>>
>> http://fqa.9front.org/appendixb.html
>
> I would like to add 50$ for this.
>
>
> At the moment, I’m trying to understand how plan9/arm is implemented, to get an idea what needs to be done for plan9/arm64.
>
> As far as I understand, /src/syscall/mksysnum_plan9.sh in go is used to get the information from /src/libc/9syscall/sys.h from plan9, using it in /src/syscall/zsysnum_plan9.go and at the beginning of /src/runtime/sys_plan9_arm.s.
>
> /src/runtime/defs_plan9_arm.go is the information from /arm/include/ureg.h with getter and setter functions.
>
> But there are files like:
> /src/runtime/os_plan9_arm.go
> /src/runtime/rt0_plan9_arm.s
> /src/runtime/sys_plan9_arm.s (the part below the sysnums)
> /src/syscall/asm_plan9_arm.s
> /src/syscall/syscall_plan9.go
> /src/syscall/zsyscall_plan9_arm.go
> for which I cannot find the source in the plan9 code.
>
> Is there documentation about the go code itself, regarding the machine dependent parts?
>
> And do you know where I can find the plan9 counterparts to some of the files listed above?
>
> Thank you very much in advance!
>
> Best regards,
> sml
>
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2022-03-17 9:08 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-13 19:40 [9front] Go: "exec header invalid" sml
2022-03-13 21:10 ` cinap_lenrek
2022-03-14 6:37 ` sml
2022-03-14 10:47 ` sml
2022-03-14 15:18 ` ori
2022-03-15 6:19 ` sml
2022-03-15 11:15 ` Philip Silva
2022-03-15 16:32 ` Kurt H Maier
2022-03-16 7:43 ` sml
2022-03-16 15:16 ` ori
2022-03-16 17:01 ` cinap_lenrek
2022-03-16 19:29 ` Steve Simon
2022-03-13 23:59 ` ori
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 NNTP newsgroup(s).