[M3devel] cm3 on snow leopard?
Jay K
jay.krell at cornell.edu
Sun Dec 12 06:36:02 CET 2010
Please experiment a bit with this and let me know.
Notice how I only get .machine for ppc.
jbook2:~ jay$ cat 1.c
void F1() {}
jbook2:~ jay$ gcc -arch ppc64 -c 1.c -S && grep machine 1.s
.machine ppc64
jbook2:~ jay$ gcc -arch ppc -c 1.c -S && grep machine 1.s
.machine ppc7400
jbook2:~ jay$ gcc -arch i386 -c 1.c -S && grep machine 1.s
jbook2:~ jay$ gcc -arch x86_64 -c 1.c -S && grep machine 1.s
Oh, here:
gcc-4.2 -arch ppc64 -c 1.c -v
gcc-4.2 -arch x86_64 -c 1.c -v
/usr/libexec/gcc/i686-apple-darwin9/4.2.1/as -arch x86_64 -force_cpusubtype_ALL -o 1.o /var/folders/QG/Q
Ok, I think we should use the C compiler on Darwin to assemble.
It costs an extra fork/exec.
This is probably a reasonable idea on all systems, and cheap enough except on Cygwin.
I'll try to get around to this fairly soon.
It'll require per-target.
More generally we *might* be able to extract enough from the gcc driver in m3-sys/m3cc and use it.
I might might might might pursue that. Might.
In particular, we could build both cm3cg and gcc driver (renamed -- m3gcc?) and trigger gcc to run both cm3cg (m3cgc1) and as.
This seems very very reasonable.
gcc driver (renamed) merely has to know that .is/.ms map to cm3cg or m3cgc1.
This is a good idea. But more work.
Thanks,
- Jay
From: jay.krell at cornell.edu
To: mika at async.caltech.edu; m3devel at elegosoft.com
Date: Sun, 12 Dec 2010 05:26:37 +0000
Subject: Re: [M3devel] cm3 on snow leopard?
I'm rudely (but helpfully) ignoring your details and giving some of mine.
I though what is supposed to happen, specifically on Darwin, is the assembly code is supposed to indicate an architecture.
jbook2:m3core jay$ CM3_TARGET=I386_DARWIN M3CONFIG=/cm3/bin/config/I386_DARWIN cm3 -keep
^C
jbook2:m3core jay$ CM3_TARGET=AMD64_DARWIN M3CONFIG=/cm3/bin/config/AMD64_DARWIN cm3 -keep
^C
head */RTHooks.ms
but no.
But then this:
jbook2:m3core jay$ CM3_TARGET=AMD64_DARWIN M3CONFIG=/cm3/bin/config/AMD64_DARWIN cm3 -keep -commands
--- building in AMD64_DARWIN ---
..
/usr/libexec/gcc/darwin/x86_64/as RTAllocator.ms -o RTAllocator.mo
CM3_TARGET=I386_DARWIN M3CONFIG=/cm3/bin/config/I386_DARWIN cm3 -keep -commands
...
/usr/libexec/gcc/darwin/i386/as Ctypes.is -o Ctypes.io
i386 vs. x86_64.
Darwin.common:
proc configure_assembler() is
if defined("SYSTEM_ASM")
return
end
SYSTEM_ASM = "/usr/libexec/gcc/darwin/" & DarwinArch & "/as"
if not FileExists(SYSTEM_ASM)
SYSTEM_ASM = "as"
end
end
jbook2:m3core jay$ grep DarwinArch /dev2/cm3/m3-sys/cminstall/src/config-no-install/*
/dev2/cm3/m3-sys/cminstall/src/config-no-install/AMD64_DARWIN:DarwinArch = "x86_64"
/dev2/cm3/m3-sys/cminstall/src/config-no-install/ARM_DARWIN:DarwinArch = "armv6" % ?
/dev2/cm3/m3-sys/cminstall/src/config-no-install/Darwin.common: SYSTEM_ASM = "/usr/libexec/gcc/darwin/" & DarwinArch & "/as"
/dev2/cm3/m3-sys/cminstall/src/config-no-install/Darwin.common: local arch = " -arch " & DarwinArch
/dev2/cm3/m3-sys/cminstall/src/config-no-install/Darwin.common: arch = " -arch_only " & DarwinArch & " "
/dev2/cm3/m3-sys/cminstall/src/config-no-install/I386_DARWIN:DarwinArch = "i386"
/dev2/cm3/m3-sys/cminstall/src/config-no-install/PPC64_DARWIN:DarwinArch = "ppc64"
/dev2/cm3/m3-sys/cminstall/src/config-no-install/PPC_DARWIN:DarwinArch = "ppc"
?
cm3 -commands?
find /usr/lib | grep /as$
find /usr/libexec | grep /as$
Maybe the path changed? Has a version? or is there is only i686-apple-darwin9, powerpc-apple-darwin9?
I should look into getting the architecture into the assembly code though and just running "as", esp. on newer hosts.
- Jay
From: jay.krell at cornell.edu
To: mika at async.caltech.edu; m3devel at elegosoft.com
Date: Sun, 12 Dec 2010 00:59:18 +0000
Subject: Re: [M3devel] cm3 on snow leopard?
I admit I'm still using Leopard.
- Jay
> To: m3devel at elegosoft.com
> Date: Sat, 11 Dec 2010 14:19:02 -0800
> From: mika at async.caltech.edu
> Subject: [M3devel] cm3 on snow leopard?
>
> Hello m3devel,
>
> I just tried to install CM3 from cm3-I386_DARWIN-REL.deb on a new MacBook
> Air, but it seems I have the wrong assembler?
>
> I had to force dpkg to override the architecture on install (it was expecting
> i386, I think, and my machine identified itself as being "i386-darwin"?)
>
> Here are some details...
>
> [HAL:~/test/src] mika% /usr/local/cm3/bin/cm3 -version
> Critical Mass Modula-3 version 5.8.6
> last updated: 2010-04-11
> compiled: 2010-07-14 21:27:23
> configuration: /usr/local/cm3/bin/cm3.cfg
> host: I386_DARWIN
> target: I386_DARWIN
>
> compiling an empty Main.m3 yields:
>
> [HAL:~/test/src] mika% /usr/local/cm3/bin/cm3 -keep -commands
> --- building in ../I386_DARWIN ---
>
> cd ../I386_DARWIN
> rm .M3SHIP
> rm .M3OVERRIDES
> inhale prog.mx
> inhale /usr/local/cm3/pkg/m3core/I386_DARWIN/libm3core.a
> inhale /usr/local/cm3/pkg/libm3/I386_DARWIN/libm3.a
>
> new source -> compiling Main.m3
> m3front ../src/Main.m3 -w1
> /usr/local/cm3//bin/cm3cg -funwind-tables -fPIC -gstabs+ -m32 -quiet -fno-reorde
> r-blocks Main.mc -o Main.ms
> echo "rep movsl" | as -o /dev/null 2> /dev/null
> as Main.ms -o Main.mo
> Main.ms:15:suffix or operands invalid for `push'
> assemble => 1
> assembler failed assembling: Main.ms
> rm Main.mo
> exhale prog.mx
> rm prog.manifest
>
> compilation failed => not building program "prog"
> Fatal Error: package build failed
>
> [HAL:~/test/src] mika% uname -a
> Darwin HAL.local 10.5.0 Darwin Kernel Version 10.5.0: Fri Nov 5 23:20:39 PDT 2010; root:xnu-1504.9.17~1/RELEASE_I386 i386
> [HAL:~/test/src] mika% as -v
> Apple Inc version cctools-782~33, GNU assembler version 1.38
>
>
> I have XCode installed.
>
> [HAL:~/test/src] mika% gcc -v
> Using built-in specs.
> Target: i686-apple-darwin10
> Configured with: /var/tmp/gcc/gcc-5664~89/src/configure --disable-checking --enable-werror --prefix=/usr --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-transform-name=/^[cg][^.-]*$/s/$/-4.2/ --with-slibdir=/usr/lib --build=i686-apple-darwin10 --program-prefix=i686-apple-darwin10- --host=x86_64-apple-darwin10 --target=i686-apple-darwin10 --with-gxx-include-dir=/include/c++/4.2.1
> Thread model: posix
> gcc version 4.2.1 (Apple Inc. build 5664)
> [HAL:~/test/src] mika% which gcc
> /usr/bin/gcc
>
>
> I must be doing something very obviously wrong (obviously to someone on this list, right??)
>
> Mika
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://m3lists.elegosoft.com/pipermail/m3devel/attachments/20101212/eb1ab5fd/attachment-0002.html>
More information about the M3devel
mailing list