summaryrefslogtreecommitdiff
path: root/configure.in
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-12-27 05:40:04 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-12-27 05:40:04 +0000
commitf59bd226b3bb82566d6931723f98efa8060232a9 (patch)
treee78947ba283ec7c0416081c4010fe683612a08ca /configure.in
parentbaf0ba45881d545b02f736eac799012beb334c0e (diff)
* configure.in: define IA64 for portability. (HP aC++/ANSI C doesn't
define __ia64__.) don't check libunwind stuff. check __libc_ia64_register_backing_store_base. * defines.h: declare rb_ia64_bsp and rb_ia64_flushrs. (flush_register_windows): call rb_ia64_flushrs on IA64. * ia64.s: new file for IA64. it is separated from C program files because Intel C++ Compiler for IA64 doesn't support inline assembly. * common.mk (ia64.$(OBJEXT)): new target. * ruby.h (RUBY_INIT_STACK): defined. (ruby_init_stack): declared for RUBY_INIT_STACK. * main.c (main): precedes RUBY_INIT_STACK before ruby_init. * gc.c (rb_gc_register_stack_start): new global variable on IA64. (garbage_collect): simplify register stack marking code. don't use libunwind. (Init_stack): initialize rb_gc_register_stack_start. (ruby_init_stack): new function for RUBY_INIT_STACK. * eval.c (struct thread): add bstr_pos member for original position of register stack. (rb_thread_save_context): simplify register stack saving code. don't use libunwind. (rb_thread_restore_context_0): new function. moved from rb_thread_restore_context except the stack position checking code. don't use libunwind for IA64 register stack. (register_stack_extend): new function. (stack_extend): make it self-recursive with the stack position checking code in old rb_thread_restore_context. (rb_thread_restore_context): just call stack_extend. (flush_register_windows): removed. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9745 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'configure.in')
-rw-r--r--configure.in24
1 files changed, 11 insertions, 13 deletions
diff --git a/configure.in b/configure.in
index 9ecf1ca6e3..8474411e75 100644
--- a/configure.in
+++ b/configure.in
@@ -451,7 +451,7 @@ AC_CHECK_HEADERS(stdlib.h string.h unistd.h limits.h sys/file.h sys/ioctl.h sys/
fcntl.h sys/fcntl.h sys/select.h sys/time.h sys/times.h sys/param.h\
syscall.h pwd.h grp.h a.out.h utime.h memory.h direct.h sys/resource.h \
sys/mkdev.h sys/utime.h netinet/in_systm.h float.h ieeefp.h pthread.h \
- ucontext.h intrinsics.h unwind.h)
+ ucontext.h intrinsics.h)
dnl Check additional types.
AC_CHECK_SIZEOF(rlim_t, 0, [
@@ -612,18 +612,16 @@ AC_C_INLINE
AC_C_VOLATILE
if test x"$target_cpu" = xia64; then
- if test x"$ac_cv_header_unwind_h" = xyes -a x"$ac_cv_func__UNW_createContextForSelf" = xyes; then
- LIBS="-lunwind $LIBS"
- else
- AC_CACHE_CHECK(IA64 backing store member in mcontext_t, rb_cv_ia64_bspstore,
- [rb_cv_ia64_bspstore=no;
- for mem in mc_special.bspstore sc_ar_bsp; do
- AC_TRY_COMPILE([#include <ucontext.h>
-],[ucontext_t ctx; ctx.uc_mcontext.$mem = 0;], [rb_cv_ia64_bspstore=$mem; break])
- done])
- if test "$rb_cv_ia64_bspstore" != no; then
- AC_DEFINE_UNQUOTED(IA64_BSPSTORE, $rb_cv_ia64_bspstore)
- fi
+ AC_LIBOBJ([ia64])
+ # use IA64 instead of __ia64__ because
+ # HP aC++ doesn't define it. (HP aC++ define __ia64.)
+ AC_DEFINE(IA64)
+ AC_TRY_LINK(
+ [extern unsigned long __libc_ia64_register_backing_store_base;],
+ [unsigned long p = __libc_ia64_register_backing_store_base;],
+ [rb_cv___libc_ia64_register_backing_store_base=yes; break])
+ if test $rb_cv___libc_ia64_register_backing_store_base = yes; then
+ AC_DEFINE(HAVE___LIBC_IA64_REGISTER_BACKING_STORE_BASE)
fi
fi