68a6fa773a
svn path=/nixpkgs/trunk/; revision=23394
499 lines
14 KiB
Diff
499 lines
14 KiB
Diff
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 <sys/types.h>
|
|
- #include <sys/param.h>
|
|
-
|
|
- 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 <sys/types.h>
|
|
- #include <sys/param.h>
|
|
-
|
|
- 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 = .
|