C++ templates

Tiago Jorge tjpj at lasige.di.fc.ul.pt
Tue Mar 15 14:24:40 CET 2005

On Tuesday 15 March 2005 14:02, Frank Mehnert wrote:

>>On Tuesday 15 March 2005 13:34, Tiago Jorge wrote:
>>>I already compile with those flags. My problem is the following:
>>Are you _sure_ that your _whole_ C++ code is compiled with -fno-exceptions?
>>>because i'm using the dielibc i can't use STL, because it launches
>>>exceptions. So, i've made my own templates of vector and map without
>>>exceptions and i'm trying to use them. the error is the following:
>>>FailureDetector.o(.eh_frame+0x11): In function `map<int,
>>>/home/tiago/l4/pkg/failuredetector/server/src/WOO_map.h: undefined
>>>reference to `__gxx_personality_v0'
>>>main.o(.eh_frame+0x11): In function `main':
>>>/home/tiago/l4/pkg/failuredetector/server/src/WOO_vector.h:20: undefined
>>>reference to `__gxx_personality_v0'
>>>collect2: ld returned 1 exit status
>>This function is called when unwinding the stack due to an exception.
>>>by the way, line 20 is the constructor and it doesn't throws exceptions.
>>>So here i am stuck at this point :(
>>We are using templates in the Fiasco microkernel -- without any problems
>>(and without exceptions).
>An other point: Do you use gcc or g++ to compile your C++ code? Try g++.
>(Thanx Ron for pointing this out).
>l4-hackers mailing list
>l4-hackers at os.inf.tu-dresden.de
i'm __compiling__ with g++, but __linking__ with gcc, because i'm using 
the BID. another point, in the Makefile to pass those parameters i put 
them in the CXX_FLAGS variable but they don't seem to appear in the 
compiling line. it's here:

GENDEP_TARGET=FailureDetector.o GENDEP_BINARY=cc1plus  g++ -c     
-DRAM_BASE=0x0    -DSYSTEM_x86_586_l4v2 -DARCH_x86 -DCPUTYPE_586 
-DL4API_l4v2  -I../../../idl/OBJ-x86-l4v2 
-I../../../../../include/x86/l4v2 -I/home/tiago/drops/include/x86/l4v2 
-I../../../../../include/l4v2 -I/home/tiago/drops/include/l4v2 
-I../../../../../include/x86 -I/home/tiago/drops/include/x86 
-I../../../../../include -I/home/tiago/drops/include -nostdinc 
-I../../../../../include/dietlibc -I/home/tiago/drops/include/dietlibc 
-I../../../../../include/c++/3.3 -I../../../../../include/c++/3.3/drops 
-I/usr/lib/gcc-lib/i486-linux/3.3.4/include  -gstabs+     -g -O2 
-fno-strict-aliasing -march=i586 -Wall 
/home/tiago/l4/pkg/failuredetector/server/src/FailureDetector.cc -o 

and the link its here:

GENDEP_TARGET=failuredetector GENDEP_BINARY=ld  gcc -o failuredetector 
../../../../../lib/x86_586/crt0.o exc.o FailureDetector.o main.o 
-Ttext=0x01d00000  -L../../../../../lib/x86_586/l4v2 
-L/home/tiago/drops/lib/x86_586/l4v2 -L../../../../../lib/x86_586 
-L/home/tiago/drops/lib/x86_586 -L../../../../../lib 
-L/home/tiago/drops/lib -L../../../../../lib/c++/3.3 
-L/home/tiago/drops/lib/c++/3.3 -L/home/tiago/drops/lib/oskit10 
/usr/lib/gcc-lib/i486-linux/3.3.4/libgcc.a -ldiet_be_socket_io 
-ll4vfs_net_io -ldiet_be_select -ll4vfs_select 
-ll4vfs_select_listener-server   -static -ll4rm -ldm_mem -ldm_generic 
-lthread -lsemaphore -ll4env -ll4env_err -lslab -llogserver_capsule 
-ll4rm -lthread -ldm_generic -lnames -ll4util -lrmgr -nostdlib 
-Wl,--nostdlib -u printf -ldiet_be_io.o -ldiet_be_simple_mem.o 
-ldiet_be_time -lrtc -ll4rm -ldm_mem -ldm_generic -lthread -lsemaphore 
-ll4env -ll4env_err -lslab -llogserver_capsule -ll4rm -lthread 
-ldm_generic -lnames -ll4util -lrmgr -ldiet_c 
/usr/lib/gcc-lib/i486-linux/3.3.4/libgcc.a -ldiet_c -ldiet_be_time 
-ldiet_be_mmap -ldiet_be_mmap_util.o -ldiet_be_l4env_start_stop 
-lgeneric_ts -ldiet_be_syslog -ldiet_be_file-table 
-ldiet_be_simple_sleep -ll4vfs_common_io -ll4vfs_basic_io 
-ll4vfs_connection -ll4vfs_basic_name_server -ll4vfs_name_server 
-ll4vfs_name_space_provider -ll4vfs_extendable -Ttext=0x01d00000 

like you have said, without knowing i'm not compiling with those flags, 
but i don't know the reason beacause its in the Makefile:

CXX_FLAGS       = -nostdinc++ -fno-rtti -fno-exceptions



More information about the l4-hackers mailing list