<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'>  A few things.  <br><br><br>  I'm sorry this is so hard to get working. <br>  It shouldn't be. <br><br><br>  > The compiler runs and things assemble with the float ABI set to "soft"  <br><br><br>  Can you tell from the assembly?  <br>  I looked very quickly and couldn't tell.  <br><br><br>  Ok me for me to be less lazy, please do this on the rpi:  <br><br><br>  void f1(float); <br>  void f2(double); <br>  void f3() { f1(1); f2(2); } <br><br>  cc -c -s 1.c # or cc -c -S 1.c I can't remember <br>  cat 1.s   # or cat 1.S I can't remember <br><br><br><br> This will help. <br> I'd like to be able to discern hardfloat from softfloat code. <br> Er, I think in ARM there is "softfloat" and "softfp".<br> "softfloat" is "everything is an integer"<br> "softfp" is parameter passing in integer registers but use floating<br> point hardware, I don't know if it is conditional or not. <br><br><br> What is actually a big factor here is not what instructions are used, <br> but how parameters are passed. (Because, you know, let's change <br> that up every few years to add confusion and complexity...) <br><br><br>  I was of the impression, in my "second try" that the  <br>  configuration of cm3cg made the later flags redundant. <br>  Though, granted, one wouldn't expect the error in that case. <br><br><br>  Also, maybe there is more configuration/flags here than nececessary? <br>  i.e. what if you say "hard float" but not vfp? <br>  Is that viable? <br>  <br><br>  And, in any case, please show again:  <br>   gcc -v or gcc -V (I get confused)  <br>   show we can see how it was configured  <br><br>   and then I think, also, the above C code with -v or -V   <br>   to see what flags are passed to cc1.  <br><br><br> And, and, and we should find out where your gcc was built from. <br> And possibly merge it with ours. <br> And, I agree, ours should already work, since it is FSF 4.7. <br> And, we should try building an unpatched FSF gcc 4.7 cc/cc1.<br> That is, the C above, I can cross compile easily enough -- to assembly<br> at least. Linking and running are more difficult, but building<br> a cross gcc that only produces assembly is quite easy -- our cm3cg<br> is like that. <br><br><br> Later. <br><br><br> Personally I find it ridiculous that there so many variables here. <br> Things are much better on Windows. There is usually only one calling <br> convention per architecture, and where there are multiple, one compiler <br> can produce any of them, the calling convention is encoded in the function name, <br> and any "type" can call any "type". <br><br><br> Perhaps we should entertain the idea of "native configuration".<br> What if we cross compile cm3 using C, and then in m3-sys/m3cc/src/m3makefile  <br> on the rpi, you remove all the switches, even -target, and let <br> it configure native? <br> What does config.guess report? <br><br><br> Can you build a native FSF gcc 4.7? <br> Can you give me ssh access? <br><br><br> - Jay<br><br><br><br><br><div>> To: jay.krell@cornell.edu<br>> CC: m3devel@elegosoft.com<br>> Subject: Re: [M3devel] more cm3cg on Raspberry Pi<br>> Date: Tue, 22 Oct 2013 09:47:01 -0700<br>> From: mika@async.caltech.edu<br>> <br>> <br>> One more thing ...<br>> <br>> from<br>> <br>> https://wiki.debian.org/ArmHardFloatPort/VfpComparison<br>> <br>> "The combination of -mfpu=vfp and -mfloat-abi=hard is not available in FSF GCC 4.4, but the CodeSourcery 2009q1 compiler (and later, current release is 2010q1) supports it as does FSF GCC 4.5."<br>> <br>> but the way cm3cg is compiled it says:<br>> <br>> root@raspberrypi:/big/home/mika# /usr/local/cm3/bin/cm3cg -version<br>> Modula-3 backend (GCC) version 4.7.1 (armv6l-unknown-linux-gnueabihf)<br>>         compiled by GNU C version 4.6.3, GGC heuristics: --param ggc-min-expand=59 --param ggc-min-heapsize=56092<br>> Modula-3 backend (GCC) version 4.7.1 (armv6l-unknown-linux-gnueabihf)<br>>         compiled by GNU C version 4.6.3, GGC heuristics: --param ggc-min-expand=59 --param ggc-min-heapsize=56092<br>> options passed: <br>> <br>> Hmm... so it should support the combination?  But:<br>> <br>> root@raspberrypi:/big/home/mika# /usr/local/cm3/bin/cm3cg -mfpu=vfp -mfloat-abi=hard<br>> cm3cg: sorry, unimplemented: -mfloat-abi=hard and VFP<br>> <br>> Execution times (seconds)<br>>  TOTAL                 :   0.00             0.00             0.02                  0 kB<br>> <br>>       Mika <br></div>                                       </div></body>
</html>