[Bug 207359] projects/clang380-import for TARGET_ARCH=powerpc64 via powerpc64-gcc : c++ exceptions unbounded loop in _Unwind_RaiseException (9 line program)
bugzilla-noreply at freebsd.org
bugzilla-noreply at freebsd.org
Fri Feb 19 19:19:20 UTC 2016
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=207359
Bug ID: 207359
Summary: projects/clang380-import for TARGET_ARCH=powerpc64 via
powerpc64-gcc : c++ exceptions unbounded loop in
_Unwind_RaiseException (9 line program)
Product: Base System
Version: 11.0-CURRENT
Hardware: ppc
OS: Any
Status: New
Severity: Affects Only Me
Priority: ---
Component: bin
Assignee: freebsd-bugs at FreeBSD.org
Reporter: markmi at dsl-only.net
>From a buildworld/buildkernel install for TARGET_ARCH=powerpc64 based on
powerpc64-xtoolchain-gcc/powerpc64-gcc form projects/clang380-import -r205601.
. .
#include <exception>
int main(void)
{
try { throw std::exception(); }
catch (std::exception& e) {} // same result without &
return 0;
}
(This simplifies what I found in trying to use "kyua test -k
/usr/tests/Kyuafile", which does not progress but uses 100% of a cpu/oore.)
# g++ --version
g++ (FreeBSD Ports Collection for powerpc64) 5.3.0
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# g++ -I /usr/include/c++/v1/ -L /usr/lib/ -g -Wall -pedantic
exception_test.cpp
./a.out never finishes.
from gdb:
Program received signal SIGINT, Interrupt.
0x000000005002a088 in .__sys_sigprocmask () from /libexec/ld-elf.so.1
(gdb) bt
#0 0x000000005002a088 in .__sys_sigprocmask () from /libexec/ld-elf.so.1
#1 0x0000000050029c1c in sigprocmask (how=0, set=0x500493a4 <oldsigmask>,
oset=0x0) at /usr/src/lib/libc/sys/sigprocmask.c:48
#2 0x0000000050022d98 in def_lock_release (lock=<optimized out>) at
/usr/src/libexec/rtld-elf/rtld_lock.c:141
#3 0x0000000050023028 in lock_release (lock=0x500496a8 <rtld_locks+32>,
lockstate=<optimized out>) at /usr/src/libexec/rtld-elf/rtld_lock.c:234
#4 0x000000005001ddac in dl_iterate_phdr (callback=@0x501e1b50: 0x501ce350
<_Unwind_IteratePhdrCallback>, param=0xffffffffffffc210) at
/usr/src/libexec/rtld-elf/rtld.c:3544
#5 0x00000000501cf33c in _Unwind_Find_FDE (pc=0x5016e39f
<throw_exception(__cxxabiv1::__cxa_exception*)+143>, bases=0xffffffffffffd1d8)
at /usr/src/gnu/lib/libgcc/../../../contrib/gcc/unwind-dw2-fde-glibc.c:420
#6 0x00000000501ca9e0 in uw_frame_state_for
(context=context at entry=0xffffffffffffcd30, fs=fs at entry=0xffffffffffffc3b0) at
/usr/src/gnu/lib/libgcc/../../../contrib/gcc/unwind-dw2.c:1106
#7 0x00000000501cb968 in _Unwind_RaiseException (exc=0x50815058) at
/usr/src/gnu/lib/libgcc/../../../contrib/gcc/unwind.inc:103
#8 0x000000005016e3a0 in throw_exception (ex=0x50815000) at
/usr/src/lib/libcxxrt/../../contrib/libcxxrt/exception.cc:751
#9 0x0000000010000d50 in main () at exception_test.cpp:5
. . . repeated finish commands until . . .
(gdb) finish
Run till exit from #0 _Unwind_RaiseException (exc=0x50815058) at
/usr/src/gnu/lib/libgcc/../../../contrib/gcc/unwind.inc:117
^C
Program received signal SIGINT, Interrupt.
0x000000005002a088 in .__sys_sigprocmask () from /libexec/ld-elf.so.1
_Unwind_RaiseException never returns.
kyua did the same thing but is a more complicated context.
Using g++49's a.out gets the same result for:
# g++49 -I /usr/include/c++/v1/ -L /usr/lib/ -g -Wall -pedantic
exception_test.cpp
But the a.out works fine for:
# g++49 -g -Wall -pedantic exception_test.cpp
# ./a.out
#
The difference is the headers/libraries involved.
(powerpc64-gcc cannot be used that way: it has a freestanding status and the
include path and libraries path need to be supplied.)
(clang 3.8.0 is not up to doing a buildworld. For example: it does not support
soft float yet, at least last checked. This is part of why I test the provided
(ports) cross compile environment for powerpc64 [but in a self-hosted form].)
--
You are receiving this mail because:
You are the assignee for the bug.
More information about the freebsd-bugs
mailing list