Hi there,
I wonder if it is possible to start L4Linux (possibly with some modifications) whether from GRUB directly or from a different loader than l4-loader. Is there a particular reason why L4Linux is linked against libloader.s.so? If it would not work out of the box: What has to be neccessarily provided by that (new) loader in oder to achieve that goal?
Furthermore I did not manage to link L4Linux without libloader. I tried to replace libloader by those libs that were included by libloader itself, but always get undefined references:
arch/l4/kernel/built-in.o: In function `l4env_phys_to_virt': /home/user/src/otc_snapshot/l4linux-2.6/arch/l4/kernel/main.c:200: multiple definition of `l4env_infopage' ../l4/lib/x86_586/l4v2/libl4env.p.a(startup.s.o):/home/user/src/otc_snapshot/l4/pkg/l4env/lib/src/startup.c:59: first defined here lib/lib.a(string.o): In function `memcmp': /home/user/src/otc_snapshot/l4linux-2.6/lib/string.c:553: multiple definition of `memcmp' arch/l4/kernel/built-in.o:/home/user/src/otc_snapshot/l4linux-2.6/arch/l4/kernel/helper_dyn.c:43: first defined here ld: Warning: size of symbol `memcmp' changed from 41 in arch/l4/kernel/built-in.o to 43 in lib/lib.a(string.o) lib/lib.a(vsprintf.o): In function `vsnprintf': /home/user/src/otc_snapshot/l4linux-2.6/lib/vsprintf.c:258: multiple definition of `vsnprintf' ../l4/lib/x86_586/l4v2/liblogserver.p.a(sprintf.s.o):/home/user/src/otc_snapshot/l4/pkg/log/lib/src/sprintf.c:46: first defined here ld: Warning: size of symbol `vsnprintf' changed from 38 in ../l4/lib/x86_586/l4v2/liblogserver.p.a(sprintf.s.o) to 1337 in lib/lib.a(vsprintf.o) lib/lib.a(vsprintf.o): In function `snprintf': /home/user/src/otc_snapshot/l4linux-2.6/lib/vsprintf.c:537: multiple definition of `snprintf' ../l4/lib/x86_586/l4v2/liblogserver.p.a(sprintf.s.o):/home/user/src/otc_snapshot/l4/pkg/log/lib/src/sprintf.c:33: first defined here ld: Warning: size of symbol `snprintf' changed from 39 in ../l4/lib/x86_586/l4v2/liblogserver.p.a(sprintf.s.o) to 40 in lib/lib.a(vsprintf.o) lib/lib.a(vsprintf.o): In function `vsprintf': /home/user/src/otc_snapshot/l4linux-2.6/lib/vsprintf.c:587: multiple definition of `vsprintf' ../l4/lib/x86_586/l4v2/liblogserver.p.a(sprintf.s.o):/home/user/src/otc_snapshot/l4/pkg/log/lib/src/sprintf.c:42: first defined here ld: Warning: size of symbol `vsprintf' changed from 35 in ../l4/lib/x86_586/l4v2/liblogserver.p.a(sprintf.s.o) to 41 in lib/lib.a(vsprintf.o) lib/lib.a(vsprintf.o): In function `sprintf': /home/user/src/otc_snapshot/l4linux-2.6/lib/vsprintf.c:604: multiple definition of `sprintf' ../l4/lib/x86_586/l4v2/liblogserver.p.a(sprintf.s.o):/home/user/src/otc_snapshot/l4/pkg/log/lib/src/sprintf.c:24: first defined here ld: Warning: size of symbol `sprintf' changed from 36 in ../l4/lib/x86_586/l4v2/liblogserver.p.a(sprintf.s.o) to 41 in lib/lib.a(vsprintf.o) arch/l4/lib/arch-i386/built-in.o: In function `l4x_proc_init': /home/user/src/otc_snapshot/l4linux-2.6/arch/l4/lib/arch-i386/../proc.c:(.text+0x0): multiple definition of `strstr' arch/l4/kernel/built-in.o:/home/user/src/otc_snapshot/l4linux-2.6/arch/l4/kernel/helper_dyn.c:134: first defined here ld: Warning: size of symbol `strstr' changed from 112 in arch/l4/kernel/built-in.o to 48 in arch/l4/lib/arch-i386/built-in.o ../l4/lib/x86_586/l4v2/liblogserver.p.a(doprnt.s.o): In function `LOG_doprnt': /home/user/src/otc_snapshot/l4/pkg/log/lib/src/doprnt.c:732: undefined reference to `__umoddi3' /home/user/src/otc_snapshot/l4/pkg/log/lib/src/doprnt.c:733: undefined reference to `__udivdi3' arch/l4/kernel/built-in.o: In function `setup_l4env_memory': /home/user/src/otc_snapshot/l4linux-2.6/arch/l4/kernel/main.c:(.text+0x2a4): undefined reference to `l4dm_mem_allocate' arch/l4/kernel/built-in.o: In function `free': /home/user/src/otc_snapshot/l4linux-2.6/arch/l4/kernel/main.c:291: undefined reference to `l4dm_mem_release' arch/l4/kernel/built-in.o: In function `l4x_map_below_mainmem': /home/user/src/otc_snapshot/l4linux-2.6/arch/l4/kernel/main.c:386: undefined reference to `l4rm_lookup' arch/l4/kernel/built-in.o: In function `l4x_map_upage_myself': /home/user/src/otc_snapshot/l4linux-2.6/arch/l4/kernel/main.c:439: undefined reference to `l4rm_lookup' arch/l4/kernel/built-in.o: In function `l4x_map_iomemory_from_sigma0': /home/user/src/otc_snapshot/l4linux-2.6/arch/l4/kernel/main.c:1549: undefined reference to `l4sigma0_map_iomem' arch/l4/kernel/built-in.o: In function `l4env_virt_to_phys': /home/user/src/otc_snapshot/l4linux-2.6/arch/l4/kernel/main.c:165: undefined reference to `l4dm_mem_phys_addr' arch/l4/kernel/built-in.o: In function `__cxa_atexit': /home/user/src/otc_snapshot/l4linux-2.6/arch/l4/kernel/main.c:251: undefined reference to `l4rm_lookup' arch/l4/kernel/built-in.o: In function `l4x_mbm_request_ghost': /home/user/src/otc_snapshot/l4linux-2.6/arch/l4/kernel/main.c:362: undefined reference to `l4rm_area_release' arch/l4/kernel/built-in.o: In function `l4env_free_initrd_mem': /home/user/src/otc_snapshot/l4linux-2.6/arch/l4/kernel/main.c:867: undefined reference to `l4dm_ds_list_all' arch/l4/l4lxlib/l4env/lib.a(memory.o): In function `l4lx_memory_map_virtual_page': /home/user/src/otc_snapshot/l4linux-2.6/arch/l4/l4lxlib/l4env/memory.c:23: undefined reference to `l4rm_lookup' arch/l4/l4lxlib/l4env/lib.a(memory.o): In function `l4lx_memory_page_mapped': /home/user/src/otc_snapshot/l4linux-2.6/arch/l4/l4lxlib/l4env/memory.c:66: undefined reference to `l4rm_lookup' arch/l4/l4lxlib/l4env/lib.a(task.o): In function `l4lx_task_number_allocate': /home/user/src/otc_snapshot/l4linux-2.6/arch/l4/l4lxlib/l4env/task.c:65: undefined reference to `l4ts_allocate_task' arch/l4/l4lxlib/l4env/lib.a(task.o): In function `l4lx_task_number_free': /home/user/src/otc_snapshot/l4linux-2.6/arch/l4/l4lxlib/l4env/task.c:142: undefined reference to `l4ts_free_task' arch/l4/l4lxlib/l4env/lib.a(task.o): In function `l4lx_task_create_pager': /home/user/src/otc_snapshot/l4linux-2.6/arch/l4/l4lxlib/l4env/task.c:206: undefined reference to `l4ts_create_task' arch/l4/l4lxlib/l4env/lib.a(task.o): In function `l4lx_task_delete': /home/user/src/otc_snapshot/l4linux-2.6/arch/l4/l4lxlib/l4env/task.c:252: undefined reference to `l4ts_kill_task' ../l4/lib/x86_586/l4v2/libio-ll.a(req_rel.o): In function `l4io_request_mem_region': /home/user/src/otc_snapshot/l4/pkg/generic_io/lib/clientlib/req_rel.c:70: undefined reference to `l4rm_area_release' /home/user/src/otc_snapshot/l4/pkg/generic_io/lib/clientlib/req_rel.c:70: undefined reference to `l4rm_area_release' ../l4/lib/x86_586/l4v2/librtc.a(librtc.o): In function `init_done': /home/user/src/otc_snapshot/l4/pkg/rtc/lib/client/librtc.c:33: undefined reference to `l4_scaler_tsc_to_ns' /home/user/src/otc_snapshot/l4/pkg/rtc/lib/client/librtc.c:69: undefined reference to `l4_scaler_tsc_to_us' /home/user/src/otc_snapshot/l4/pkg/rtc/lib/client/librtc.c:33: undefined reference to `l4_scaler_ns_to_tsc' ../l4/lib/x86_586/l4v2/librtc.a(librtc.o): In function `l4rtc_get_seconds_since_1970': /home/user/src/otc_snapshot/build/l4/include/x86/l4/util/rdtsc.h:268: undefined reference to `l4_scaler_tsc_to_ns' /home/user/src/otc_snapshot/build/l4/include/x86/l4/util/rdtsc.h:268: undefined reference to `l4_scaler_tsc_to_ns'
Especially I wasn't able to locate "__umoddi3" and "__udivdi3" in any library except of libloader.
I modified l4linux-2.6/arch/l4/kernel/Makefile of the latest OTC snapshot as follows:
L4LIBS = -L$(L4OBJ)/lib/$(L4_MK_ARCH)_$(L4_MK_CPU)/$(L4_MK_API) \ -L$(L4OBJ)/lib/$(L4_MK_ARCH)_$(L4_MK_CPU) \ -L$(L4OBJ)/lib \ -T../../l4/lib/x86_586/main_stat.ld --start-group -lroot.p -lsemaphore.p \ -lgeneric_ts.p \ -lloaderif.p \ -ll4util_root.p \ -ll4sys.p \ -lthread.p \ -ldm_generic.p \ -ldm_mem.p \ -ll4env_err.p \ -ll4env.p \ -lnames.p \ -lgeneric_fprov.p \ -llogserver.p \ -lnames.p \ -lc_be_minimal_log_io.p \ -lc_be_simple_mem.p \ -lc_be_mmap.p \ -lc_be_mmap_util.p \ -luclibc_support.p \ -lthread.p \ -lc_be_l4env_start_stop.p \ -ll4rm.p \ -lslab.p \ -ll4util.p -lsigma0.p -llist_alloc.p --end-group \ $(GCCLIB)
Thanks in advance.
Kind regards, Daniel