From: usa@... Date: 2014-05-28T05:26:56+00:00 Subject: [ruby-core:62816] [ruby-trunk - Bug #9692] __builtin_longjmp is called with a value greater than 1 (GCC compilation error) Issue #9692 has been updated by Usaku NAKAMURA. Thank you. I'll check it. ---------------------------------------- Bug #9692: __builtin_longjmp is called with a value greater than 1 (GCC compilation error) https://bugs.ruby-lang.org/issues/9692#change-46939 * Author: Martin Li��ka * Status: Closed * Priority: Normal * Assignee: * Category: * Target version: * ruby -v: 2.0.0-p353 * Backport: 2.0.0: REQUIRED, 2.1: REQUIRED ---------------------------------------- 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) -- https://bugs.ruby-lang.org/