[#12164] patch for ext/gdbm — Koji Arai <JCA02266@...>

新井です。

24 messages 2001/02/04
[#12168] Re: patch for ext/gdbm — matz@... (Yukihiro Matsumoto) 2001/02/05

まつもと ゆきひろです

[#12176] Re: patch for ext/gdbm — Koji Arai <JCA02266@...> 2001/02/05

新井です。

[#12179] Re: patch for ext/gdbm — matz@... (Yukihiro Matsumoto) 2001/02/06

まつもと ゆきひろです

[#12219] Re: patch for ext/gdbm — Koji Arai <JCA02266@...> 2001/02/12

新井です。

[#12220] Re: patch for ext/gdbm — Koji Arai <JCA02266@...> 2001/02/12

新井です。

[#12256] set_trace_func — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

15 messages 2001/02/17

[#12293] crash on proc without a block — Kenichi Komiya <kom@...1.accsnet.ne.jp>

15 messages 2001/02/25

[#12323] Re: [ruby-list:28364] class definition extension — "K.Kosako" <kosako@...>

ruby-listから移動しました。

13 messages 2001/02/28
[#12324] Re: [ruby-list:28364] class definition extension — matz@... (Yukihiro Matsumoto) 2001/02/28

まつもと ゆきひろです

[ruby-dev:12288] __builtin_frame_address(2)

From: "Nobuyoshi.Nakada" <nobu.nakada@...>
Date: 2001-02-23 07:10:33 UTC
List: ruby-dev #12288
なかだです。

  __builtin_frame_address(2) の件ですが、オプションによっで落
ちたり落ちなかったりなので、とりあえずダメなときは使わないよう
にしてみました。消極的な方法ですが。

  どっちかというと gcc の方にバグレポートすべきなのかな。


Index: configure.in
===================================================================
RCS file: /home/cvs/ruby/src/ruby/configure.in,v
retrieving revision 1.77
diff -u -2 -p -r1.77 configure.in
--- configure.in	2001/02/20 07:42:03	1.77
+++ configure.in	2001/02/23 05:50:02
@@ -174,4 +174,54 @@ AC_DEFINE_UNQUOTED([NORETURN(x)], $rb_cv
 
 
+if test "$GCC" = yes; then
+  AC_CACHE_CHECK(whether gcc __builtin_frame_address(2) works,
+		 rb_cv_builtin_frame_address,
+    [AC_TRY_RUN(
+changequote(<<, >>)dnl
+<<
+#include <stdio.h>
+#include <stdlib.h>
+#include <signal.h>
+
+volatile int* tos;
+
+void foo(void)
+{
+    tos = __builtin_frame_address(2);
+}
+
+void clear(void)
+{
+    char z[10000];
+    memset(z, 0, sizeof(z));
+}
+
+void bar(void)
+{
+    foo();
+}
+
+int main(void)
+{
+    int x;
+    signal(SIGSEGV, exit);
+    clear();
+    foo();
+    if (*tos == x)
+	x = 0;
+    else
+	x = 1;
+    return x / 255;
+}
+>>,
+changequote([, ])dnl
+rb_cv_builtin_frame_address=2,
+rb_cv_builtin_frame_address=1,
+rb_cv_builtin_frame_address=no)])
+  if test rb_cv_builtin_frame_address != no; then
+    AC_DEFINE_UNQUOTED(BUILTIN_FRAME_ADDRESS_WORKS, $rb_cv_builtin_frame_address)
+  fi
+fi
+
 dnl Checks for libraries.
 case "$target_os" in
Index: gc.c
===================================================================
RCS file: /home/cvs/ruby/src/ruby/gc.c,v
retrieving revision 1.60
diff -u -2 -p -r1.60 gc.c
--- gc.c	2001/02/11 07:12:02	1.60
+++ gc.c	2001/02/23 06:01:07
@@ -1030,10 +1030,8 @@ Init_stack(addr)
     extern void *_SEND;
     rb_gc_stack_start = _SEND;
-#elif defined(__GNUC__) && defined(__i386__)
+#elif BUILTIN_FRAME_ADDRESS_WORKS >= 2
     rb_gc_stack_start = __builtin_frame_address(2);
 #else
-    VALUE start;
-
-    if (!addr) addr = &start;
+    if (!addr) addr = (VALUE *)&addr;
     rb_gc_stack_start = addr;
 #endif


-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

In This Thread

Prev Next