[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