Hi,

I can confirm the problem report for gcc. Analysis shows, that problem "./Stackless/core/slp_transfer.c:153:1: error: bp cannot be used in asm here" was introduced by the backport of change r83165 to release27-maint (r88294). See below for the diff.

The problem is caused by configure.in:
-------8<------------8<-------------
# Stackless flags for compiling the hard switching code
case $MACHDEP in
        darwin)
                SLPFLAGS="-fomit-frame-pointer -O2"
                ;;
        *)
                SLPFLAGS="-fno-omit-frame-pointer -O2"
                ;;
esac
AC_SUBST(SLPFLAGS)
-------8<------------8<-------------

For Linux and all other non darwin systems, SLPFLAGS is "-fno-omit-frame-pointer -O2" and therefore the code does not compile. (SLPFLAGS was introduced with change r82398.)

How to fix this problem?

If I understand the commit comment correctly, there were crashes on OS-X. But what about Linux? I'm not aware of problems on Linux amd64. Can we make the longer REGS_TO_SAVE list a conditional define? Something like:

#ifdef SLP_SAVE_FRAME_POINTER
+#define REGS_TO_SAVE "rdx", "rbx", "r12", "r13", "r14", "r15", "r9", "r8", "rdi", "rsi", "rcx", "rbp"
#else
+#define REGS_TO_SAVE "rdx", "rbx", "r12", "r13", "r14", "r15", "r9", "r8", "rdi", "rsi", "rcx"
#endif

and define SLP_SAVE_FRAME_POINTER in configure.in together with -fomit-frame-pointer.


Just for reference: the change, that introduced the problem:

$ svn log -c 83165 http://svn.python.org/projects/stackless/trunk/Stackless/platf/switch_amd64_unix.h | less
------------------------------------------------------------------------
r83165 | jeff.senn | 2010-07-26 16:34:04 +0200 (Mon, 26 Jul 2010) | 3 lines

Added saved registers. Doesn't crash on tests anymore on OS-X 10.6 (gcc-4.2.1)
Not sure registers are minimal. Not sure will work on other platforms/compilers. But since the consensus is that it has never worked, committing as incremental progress.

------------------------------------------------------------------------


$ svn diff -c 83165 http://svn.python.org/projects/stackless/trunk/Stackless/platf/switch_amd64_unix.h | less
Index: switch_amd64_unix.h
===================================================================
--- switch_amd64_unix.h (revision 83164)
+++ switch_amd64_unix.h (revision 83165)
@@ -29,8 +35,8 @@
 /* the above works fine with gcc 2.96, but 2.95.3 wants this */
 #define STACK_MAGIC 0

-#define REGS_TO_SAVE "rdx", "rbx", "r12", "r13", "r14", "r15"

+#define REGS_TO_SAVE "rdx", "rbx", "r12", "r13", "r14", "r15", "r9", "r8", "rdi", "rsi", "rcx", "rbp"

 static int
 slp_switch(void)



Regards
   Anselm




Am 07.05.2011 00:48, schrieb Richard Tew:
On Fri, May 6, 2011 at 11:27 PM, Estevo<[email protected]>  wrote:

I got the following error trying to make release27-maint in a 64-bit


Presumably there's a change that on your system engages
-fno-omit-frame-pointer when to compile Stackless we need
-fomit-frame-pointer.

Anyone care to look into this? :-)  We could use a patch.

Cheers,
Richard.




_______________________________________________
Stackless mailing list
[email protected]
http://www.stackless.com/mailman/listinfo/stackless

--
 Dipl. Phys. Anselm Kruis                       science + computing ag
 Senior Solution Architect                      Ingolstädter Str. 22
 email [email protected]             80807 München, Germany
 phone +49 89 356386 874  fax 737               www.science-computing.de

--
Vorstand/Board of Management:
Dr. Bernd Finkbeiner, Dr. Roland Niemeier, Dr. Arno Steitz, Dr. Ingrid Zech
Vorsitzender des Aufsichtsrats/
Chairman of the Supervisory Board:
Philippe Miltin
Sitz/Registered Office: Tuebingen
Registergericht/Registration Court: Stuttgart
Registernummer/Commercial Register No.: HRB 382196


_______________________________________________
Stackless mailing list
[email protected]
http://www.stackless.com/mailman/listinfo/stackless

Reply via email to