diff -rc aterm-2.8/aterm/gc.c aterm-2.8-new/aterm/gc.c *** aterm-2.8/aterm/gc.c 2008-11-10 13:54:22.000000000 +0100 --- aterm-2.8-new/aterm/gc.c 2010-08-23 17:04:56.000000000 +0200 *************** *** 260,317 **** AFun oddSym; #endif - #ifdef WIN32 - - unsigned int r_eax, r_ebx, r_ecx, r_edx, \ - r_esi, r_edi, r_esp, r_ebp; - ATerm reg[8], real_term; - - __asm { - /* Get the registers into local variables to check them - for aterms later. */ - mov r_eax, eax - mov r_ebx, ebx - mov r_ecx, ecx - mov r_edx, edx - mov r_esi, esi - mov r_edi, edi - mov r_esp, esp - mov r_ebp, ebp - } - /* Put the register-values into an array */ - reg[0] = (ATerm) r_eax; - reg[1] = (ATerm) r_ebx; - reg[2] = (ATerm) r_ecx; - reg[3] = (ATerm) r_edx; - reg[4] = (ATerm) r_esi; - reg[5] = (ATerm) r_edi; - reg[6] = (ATerm) r_esp; - reg[7] = (ATerm) r_ebp; - - for(i=0; i<8; i++) { - real_term = AT_isInsideValidTerm(reg[i]); - if (real_term != NULL) { - AT_markTerm(real_term); - } - if (AT_isValidSymbol((Symbol)reg[i])) { - AT_markSymbol((Symbol)reg[i]); - } - } - - /* The register variables are on the stack aswell - I set them to zero so they won't be processed again when - the stack is traversed. The reg-array is also in the stack - but that will be adjusted later */ - r_eax = 0; - r_ebx = 0; - r_ecx = 0; - r_edx = 0; - r_esi = 0; - r_edi = 0; - r_esp = 0; - r_ebp = 0; - - #else jmp_buf env; /* Traverse possible register variables */ --- 260,265 ---- *************** *** 320,326 **** start = (ATerm *)((char *)env); stop = ((ATerm *)(((char *)env) + sizeof(jmp_buf))); mark_memory(start, stop); - #endif stackTop = stack_top(); --- 268,273 ---- *************** *** 385,442 **** AFun oddSym; #endif - #ifdef WIN32 - - unsigned int r_eax, r_ebx, r_ecx, r_edx, \ - r_esi, r_edi, r_esp, r_ebp; - ATerm reg[8], real_term; - - __asm { - /* Get the registers into local variables to check them - for aterms later. */ - mov r_eax, eax - mov r_ebx, ebx - mov r_ecx, ecx - mov r_edx, edx - mov r_esi, esi - mov r_edi, edi - mov r_esp, esp - mov r_ebp, ebp - } - /* Put the register-values into an array */ - reg[0] = (ATerm) r_eax; - reg[1] = (ATerm) r_ebx; - reg[2] = (ATerm) r_ecx; - reg[3] = (ATerm) r_edx; - reg[4] = (ATerm) r_esi; - reg[5] = (ATerm) r_edi; - reg[6] = (ATerm) r_esp; - reg[7] = (ATerm) r_ebp; - - for(i=0; i<8; i++) { - real_term = AT_isInsideValidTerm(reg[i]); - if (real_term != NULL) { - AT_markTerm_young(real_term); - } - if (AT_isValidSymbol((Symbol)reg[i])) { - AT_markSymbol_young((Symbol)reg[i]); - } - } - - /* The register variables are on the stack aswell - I set them to zero so they won't be processed again when - the stack is traversed. The reg-array is also in the stack - but that will be adjusted later */ - r_eax = 0; - r_ebx = 0; - r_ecx = 0; - r_edx = 0; - r_esi = 0; - r_edi = 0; - r_esp = 0; - r_ebp = 0; - - #else jmp_buf env; /* Traverse possible register variables */ --- 332,337 ---- *************** *** 445,451 **** start = (ATerm *)((char *)env); stop = ((ATerm *)(((char *)env) + sizeof(jmp_buf))); mark_memory_young(start, stop); - #endif stackTop = stack_top(); start = MIN(stackTop, stackBot); --- 340,345 ---- Only in aterm-2.8-new/aterm: gc.c.orig diff -rc aterm-2.8/configure aterm-2.8-new/configure *** aterm-2.8/configure 2008-11-10 13:54:27.000000000 +0100 --- aterm-2.8-new/configure 2010-08-23 17:08:10.000000000 +0200 *************** *** 19970,20295 **** CURDATE=`date` - echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 - echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6 - if test "${ac_cv_c_bigendian+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else - # See if sys/param.h defines the BYTE_ORDER macro. - cat >conftest.$ac_ext <<_ACEOF - /* confdefs.h. */ - _ACEOF - cat confdefs.h >>conftest.$ac_ext - cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - #include - #include - - int - main () - { - #if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN - bogus endian macros - #endif - - ; - return 0; - } - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - # It does; now see whether it defined to BIG_ENDIAN or not. - cat >conftest.$ac_ext <<_ACEOF - /* confdefs.h. */ - _ACEOF - cat confdefs.h >>conftest.$ac_ext - cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - #include - #include - - int - main () - { - #if BYTE_ORDER != BIG_ENDIAN - not big endian - #endif - - ; - return 0; - } - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_c_bigendian=yes - else - echo "$as_me: failed program was:" >&5 - sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_c_bigendian=no - fi - rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - else - echo "$as_me: failed program was:" >&5 - sed 's/^/| /' conftest.$ac_ext >&5 - - # It does not; compile a test program. - if test "$cross_compiling" = yes; then - # try to guess the endianness by grepping values into an object file - ac_cv_c_bigendian=unknown - cat >conftest.$ac_ext <<_ACEOF - /* confdefs.h. */ - _ACEOF - cat confdefs.h >>conftest.$ac_ext - cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - short ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; - short ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; - void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; } - short ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; - short ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; - void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; } - int - main () - { - _ascii (); _ebcdic (); - ; - return 0; - } - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then - ac_cv_c_bigendian=yes - fi - if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then - if test "$ac_cv_c_bigendian" = unknown; then - ac_cv_c_bigendian=no - else - # finding both strings is unlikely to happen, but who knows? - ac_cv_c_bigendian=unknown - fi - fi - else - echo "$as_me: failed program was:" >&5 - sed 's/^/| /' conftest.$ac_ext >&5 - - fi - rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - else - cat >conftest.$ac_ext <<_ACEOF - /* confdefs.h. */ - _ACEOF - cat confdefs.h >>conftest.$ac_ext - cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - int - main () - { - /* Are we little or big endian? From Harbison&Steele. */ - union - { - long l; - char c[sizeof (long)]; - } u; - u.l = 1; - exit (u.c[sizeof (long) - 1] == 1); - } - _ACEOF - rm -f conftest$ac_exeext - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_c_bigendian=no - else - echo "$as_me: program exited with status $ac_status" >&5 - echo "$as_me: failed program was:" >&5 - sed 's/^/| /' conftest.$ac_ext >&5 - - ( exit $ac_status ) - ac_cv_c_bigendian=yes - fi - rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext - fi - fi - rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - fi - echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 - echo "${ECHO_T}$ac_cv_c_bigendian" >&6 - case $ac_cv_c_bigendian in - yes) - - cat >>confdefs.h <<\_ACEOF - #define WORDS_BIGENDIAN 1 - _ACEOF - ;; - no) - ;; - *) - { { echo "$as_me:$LINENO: error: unknown endianness - presetting ac_cv_c_bigendian=no (or yes) will help" >&5 - echo "$as_me: error: unknown endianness - presetting ac_cv_c_bigendian=no (or yes) will help" >&2;} - { (exit 1); exit 1; }; } ;; - esac - - - echo "$as_me:$LINENO: checking whether float word ordering is big endian" >&5 - echo $ECHO_N "checking whether float word ordering is big endian... $ECHO_C" >&6 - if test "${ax_cv_c_float_word_order_big+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else - - if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling - See \`config.log' for more details." >&5 - echo "$as_me: error: cannot run test program while cross compiling - See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } - else - cat >conftest.$ac_ext <<_ACEOF - - /* This code returns 0 if the float word order is big endian and >= 1 if it is little endian. */ - main(){ - #ifdef WORDS_BIGENDIAN - return 0; /* If the system's encoding is big endian, so is the float word order. NOTE: If the encoding is big endian and WORDS_BIGENDIAN isn't defined, the code below will still return the correct float word order (big). */ - #else - union - { - double d; - /* IEEE754 little endian encoded floating point number structure with little endian float word order. */ - struct{ - unsigned int mantissa1:32; - unsigned int mantissa0:20; - unsigned int exponent:11; - unsigned int negative:1; - } ieee; - } u; - u.d = -1; - return (u.ieee.negative == 1); - #endif - } - - _ACEOF - rm -f conftest$ac_exeext - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ax_cv_c_float_word_order_big=yes - else - echo "$as_me: program exited with status $ac_status" >&5 - echo "$as_me: failed program was:" >&5 - sed 's/^/| /' conftest.$ac_ext >&5 - - ( exit $ac_status ) - ax_cv_c_float_word_order_big=no - fi - rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext - fi - - - fi - echo "$as_me:$LINENO: result: $ax_cv_c_float_word_order_big" >&5 - echo "${ECHO_T}$ax_cv_c_float_word_order_big" >&6 - - case $ax_cv_c_float_word_order_big in - yes) - - - cat >>confdefs.h <<\_ACEOF - #define FLOAT_WORD_ORDER_BIG 1 - _ACEOF - - - ;; - no) - ;; - *) - - { { echo "$as_me:$LINENO: error: Unable to determain float word ordering. You need to manually preset ax_cv_c_float_word_order_big=(yes / no). - " >&5 - echo "$as_me: error: Unable to determain float word ordering. You need to manually preset ax_cv_c_float_word_order_big=(yes / no). - " >&2;} - { (exit 1); exit 1; }; } - - ;; - esac - - for ac_func in strdup --- 19970,19975 ---- diff -rc aterm-2.8/Makefile.in aterm-2.8-new/Makefile.in *** aterm-2.8/Makefile.in 2008-11-10 13:54:28.000000000 +0100 --- aterm-2.8-new/Makefile.in 2010-08-23 17:05:27.000000000 +0200 *************** *** 217,223 **** pkgconfig_DATA = ${PACKAGE}.pc ! SUBDIRS = aterm utils test ACLOCAL_AMFLAGS = -I . subdir = . --- 217,223 ---- pkgconfig_DATA = ${PACKAGE}.pc ! SUBDIRS = aterm utils ACLOCAL_AMFLAGS = -I . subdir = .