[libcxxabi]: undefined reference to 'typeinfo for void'

I build libcxx and libcxxabi with my complier on linux, but when I linked a
simple hello world program, it reported a error:

I don't know what the problem is. But here is more info:

The file libcxxabi/src/private_typeinfo.cpp contains this:

// __fundamental_type_info

// This miraculously (compiler magic) emits the type_info's for:
// 1. all of the fundamental types
// 2. pointers to all of the fundamental types
// 3. pointers to all of the const fundamental types
__fundamental_type_info::~__fundamental_type_info()
{
}

void is a fundamental type. This is where 'typeinfo for void' should be defined.

Howard

libc++abi is supposed to define _ZTIv itself; what compiler are you using?

-Eli

Eli Friedman wrote

libc++abi is supposed to define _ZTIv itself; what compiler are you using?

Thanks, Eli.
The complier I used is FCC, which belongs to Fujitsu.
I tried building libc++abi with clang++, and I found that there are some
symbols like _ZTIv, _ZTIi in libc++abi.so.
Would you tell me where or how libc++abi notifying complier to define _ZTIv?

I would suggest just building clang with FCC, then using clang to build
everything else you need.

If you really want to compile libc++abi with your system compiler,
the results may not interoperate correctly with programs compiled with
clang. It looks like FCC is the Lahey C++ compiler; I don’t know what
C++ ABI that uses.

John.

John McCall wrote

I would suggest just building clang with FCC, then using clang to build
everything else you need.

Thanks all the same!

John McCall wrote

If you really want to compile libc++abi with your system compiler,
the results may not interoperate correctly with programs compiled with
clang. It looks like FCC is the Lahey C++ compiler; I don't know what
C++ ABI that uses.

When I use FCC to compile other program, the executable file depends on
libstdc++, so I think FCC use libsupc++ as its ABI.