Project

General

Profile

Actions

Bug #9692

closed

__builtin_longjmp is called with a value greater than 1 (GCC compilation error)

Added by marxin (Martin Liška) almost 10 years ago. Updated over 9 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
2.0.0-p353
[ruby-core:61796]

Description

Hello,
during testing of LTO on a gentoo machine:
Linux qemubox 3.12.13-gentoo #2 SMP Fri Mar 28 22:30:38 Local time zone must be set--see zic x86_64 Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz GenuineIntel GNU/Linux

Configure detects:

checking for __builtin_setjmp... yes
checking for setjmp type... __builtin_setjmp

Problem is that ruby calls longjmp with value greater than 1, e.g. TAG_RAISE (0x6). With -flto compiler proves that __builtin_longjmp is always called with such a value and following errors are displayed:

eval.c: In function ‘rb_jump_tag’:
eval.c:668:5: error: ‘__builtin_longjmp’ second argument must be 1
     JUMP_TAG(tag);
     ^
thread.c: In function ‘rb_threadptr_to_kill’:
thread.c:1887:5: error: ‘__builtin_longjmp’ second argument must be 1
     TH_JUMP_TAG(th, TAG_FATAL);
     ^
vm.c: In function ‘vm_exec’:
vm.c:1413:3: error: ‘__builtin_longjmp’ second argument must be 1
   JUMP_TAG(state);
   ^
eval.c: In function ‘setup_exception’:
eval.c:437:34: error: ‘__builtin_longjmp’ second argument must be 1
  if (INTERNAL_EXCEPTION_P(mesg)) JUMP_TAG(TAG_FATAL);
                                  ^
eval.c:502:2: error: ‘__builtin_longjmp’ second argument must be 1
  JUMP_TAG(TAG_FATAL);
  ^
eval.c: In function ‘rb_raise_jump’:
eval.c:662:5: error: ‘__builtin_longjmp’ second argument must be 1
     JUMP_TAG(TAG_RAISE);
     ^
eval.c: In function ‘rb_longjmp’:
eval.c:521:5: error: ‘__builtin_longjmp’ second argument must be 1
     JUMP_TAG(tag);
     ^
gc.c: In function ‘rb_memerror’:
gc.c:3417:2: error: ‘__builtin_longjmp’ second argument must be 1
  JUMP_TAG(TAG_RAISE);
  ^
gcc --version:
gcc (GCC) 4.9.0 20140331 (experimental)

Files

ruby-configure-builtin_longjmp.patch (573 Bytes) ruby-configure-builtin_longjmp.patch marxin (Martin Liška), 04/01/2014 03:05 PM

Related issues 3 (0 open3 closed)

Related to Ruby master - Bug #9698: r45509以降、Solarisにて configureが thread model is missing でエラーClosednobu (Nobuyoshi Nakada)04/03/2014Actions
Related to Ruby master - Bug #9710: __builtin_setjmp/longjmp causes SEGV with mingwClosed04/07/2014Actions
Related to Ruby master - Bug #9818: __builtin_setjmp and __builtin_longjmp caused a build failure on PPC Linux with gcc 4.4.0Closed05/08/2014Actions
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0