<br><br><div class="gmail_quote">On Tue, Feb 8, 2011 at 5:27 PM, Luca Dionisi <span dir="ltr"><<a href="mailto:luca.dionisi@gmail.com">luca.dionisi@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im">I am not so keen on debugging with linux tools, even more with</div>
assembly. So I tried to use preprocessor directives to find out<br>
(#warning 'blah blah')<br>
I found that __GNUC__, __linux__ and __mips__ are defined.<br>
But, *if* I use correctly the #warning directives, they seem to tell<br>
that the assembly code is not being used.<br>
<br></blockquote><div>I have no idea what the difference between correctly and incorrectly is.</div><div><br></div><div>But you will note that there is a clause in 'stackless.h' which keeps STACKLESS defined if these three symbols are defined.  So given that, the standard Stackless MIPS switching should be compiled in.</div>
<div><br></div><div>Note that if your platform is not supported, then STACKLESS will be undefined, and the conditional clauses should compiled a normal Python without any Stackless functionality.  So if your resulting compiled 'python' gives an ImportError on 'import stackless', then you do not have switching support for its platform.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Do you have an idea why this has been advised? Are they useful for<br>
cross compilation purposes?<br></blockquote><div><br></div><div>Don't know.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="im">ARM? Interesting. By reading this file:</div>

<a href="http://svn.python.org/projects/stackless/trunk/Stackless/stackless.h" target="_blank">http://svn.python.org/projects/stackless/trunk/Stackless/stackless.h</a><br>
I thought that ARM was not supported yet. There is no line with 'arm'.<br>
<br>
I conclude that I am not looking at the right files.<br>
Where do I look to understand which platforms are supported?</blockquote><div><br></div><div>It has been some time since I last had to look at this code in detail, but here is how I recall it working.  When you compile Stackless, 'Stackless\stackless.h' and its clauses determine whether you a normal Python or a Stackless Python.  If your platform has switching support as defined by 'Stackless\platf\slp_platformselect.h' but there is no entry in 'Stackless\stackless.h', then you should be able to add the relevant combination of define checking as an entry so that 'STACKLESS' is not undefined.</div>
<div><br></div><div>e.g. You can see the following in 'Stackless\platf\slp_platformselect.h' but not 'Stackless\stackless.h'.</div><div><br></div><div><div><div>  #elif defined(__GNUC__) && defined(__arm__) && defined(__thumb__)</div>
</div></div><div><br></div><div><div>Also note that 'Stackless\platf\slp_platformselect.h' is used to generate 'Stackless\platf\slp_switch_stack.h'.</div></div><div><br></div><div>Anyway, you should be able to use the above information to examine where you are at.</div>
<div><br></div><div>Cheers,</div><div>Richard.</div></div>