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,
>>>heartbeat>::del(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).
>
>Frank
>
>
>------------------------------------------------------------------------
>
>_______________________________________________
>l4-hackers mailing list
>l4-hackers at os.inf.tu-dresden.de
>http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers
>
>
ok...
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:
LD_PRELOAD=/home/tiago/l4/tool/gendep/libgendep.so
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/home/tiago/drops/include/c++/3.3
-I/home/tiago/drops/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
FailureDetector.o
and the link its here:
LD_PRELOAD=/home/tiago/l4/tool/gendep/libgendep.so
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
-T../../../../../lib/x86_586/main_stat.ld
/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
-Wl,-gc-sections
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
thanks
Tiago
More information about the l4-hackers
mailing list