problems building server following mini_http example

Tiago Jorge tjpj at lasige.di.fc.ul.pt
Mon Mar 7 18:31:19 CET 2005


Christian Helmuth wrote:

>
>AFAIK L4Env with OSKit's FreeBSD libc does not work with L4VFS and
>libc_backends. If you want to stay with the current FLIPS client library
>you have to use dielibc.
>
Once again thank you for your prompt answers.
I'm having a "little" problem again. Like i said before i'm porting a 
C++ aplication. In these program, i use STL (vectors and maps mostly). 
So that i can use the l4env_base and c++, i've built a costum mode, 
WOO_mode:

##############################################################################
#
# x86_WOO_mode - custom mode
# ISTO É MEU
#

BID_SUPPORTED_x86_WOO_mode    = y
LIBCINCDIR_x86_WOO_mode     = -nostdinc -I$(L4DIR)/include/dietlibc  \
                          -I$(DROPS_STDDIR)/include/dietlibc \
                                  -I$(L4DIR)/include/c++/$(GCCVERSION) \
                       -I$(L4DIR)/include/c++/$(GCCVERSION)/drops \
                                  
-I$(DROPS_STDDIR)/include/c++/$(GCCVERSION) \
                      -I$(DROPS_STDDIR)/include/c++/$(GCCVERSION)/drops \
                                  -I$(GCCINCDIR) \
                                 
LIBCLIBDIR_x86_WOO_mode         = -L$(L4DIR)/lib/c++/$(GCCVERSION) \
                      -L$(DROPS_STDDIR)/lib/c++/$(GCCVERSION)

LIBCLIBS_x86_WOO_mode    = -nostdlib $(GCCLDNOSTDLIB)                     \
                          -u printf -ldiet_be_io.o 
-l$(DIETLIBC_MALLOC_BACKEND)    \
                          -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 $(GCCLIB) -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

L4LIBS_x86_WOO_mode    = -static -ll4rm -ldm_mem -ldm_generic -lthread  \
                  -lsemaphore -ll4env -ll4env_err -lslab         \
                  -llogserver_capsule -ll4rm \
                          -lthread -ldm_generic -lnames \
                  -ll4util -lrmgr
CRT0_x86_WOO_mode    = $(call findfile,crt0.o,$(L4LIBDIR))
CRTN_x86_WOO_mode    =
LDSCRIPT_x86_WOO_mode    = $(call findfile,main_stat.ld,$(L4LIBDIR))

####################################################################################

and i have included in the Makefile the libstdc++. But the error that 
gives me its tipical of the STL need of exceptions i think. An excerpt 
follows:

[...]

/home/tiago/l4/pkg/libstdc++/lib/src-v3/dist/drops/libstdc++-v3/src/ios.cc:335: 
undefined reference to `_Unwind_Resume'
../../../../../lib/c++/3.3/libstdc++.a(istream-inst.o)(.gnu.linkonce.t._ZNSiC2EPSt15basic_streambufIcSt11char_traitsIcEE+0x45):/home/tiago/l4/pkg/libstdc++/lib/src-v3/dist/drops/libstdc++-v3/include/bits/basic_ios.h:107: 
more undefined references to `_Unwind_Resume' follow
../../../../../lib/c++/3.3/libstdc++.a(pure.o)(.text+0x2): In function 
`__cxa_pure_virtual':
/home/tiago/l4/pkg/libstdc++/lib/src-v3/dist/drops/libstdc++-v3/libsupc++/pure.cc:49: 
undefined reference to `__sF'
../../../../../lib/c++/3.3/libstdc++.a(ctype.o)(.text+0x33c): In 
function `std::ctype<char>::~ctype [not-in-charge]()':
/home/tiago/l4/pkg/libstdc++/lib/src-v3/dist/drops/libstdc++-v3/include/bits/locale_facets.h:127: 
undefined reference to `_Unwind_Resume'
../../../../../lib/c++/3.3/libstdc++.a(ctype.o)(.text+0x3ac): In 
function `std::ctype<char>::~ctype [in-charge]()':
/home/tiago/l4/pkg/libstdc++/lib/src-v3/dist/drops/libstdc++-v3/include/bits/locale_facets.h:127: 
undefined reference to `_Unwind_Resume'
../../../../../lib/c++/3.3/libstdc++.a(ctype.o)(.text+0x424): In 
function `std::ctype<char>::~ctype [in-charge deleting]()':
/home/tiago/l4/pkg/libstdc++/lib/src-v3/dist/drops/libstdc++-v3/include/bits/locale_facets.h:127: 
undefined reference to `_Unwind_Resume'

[...]

After a search in the best work tool ever (aka Google) the method 
_Unwind_Resume has to do with exception propagation. But as we know, 
only the l4env_freebsd and oskit10_sigma0 mode have full support for C++ 
exceptions. But the FLIPS server has to be used with dielibc.

My question is... is there any way to link with dielibc and still use 
C++ and exceptions?

thanks in advance and thank you for your patience...

Tiago Jorge





More information about the l4-hackers mailing list