Hi!
I am having one hell of a time getting the entropy pool in oskit to
integrate with gnumach. I've spent months(!) on this without making
any progress. I really need some help.
The output of a GNUMach compile is at the end of this message.
I can build, eg, kernel-ide+ethernet_tulip without problems. It's
only when I add "+entropy_random" that I get multiple defs of
osenv_sleep, etc.
I have spent a lot of quality time with the 'nm' command on builds of
oskit with and without the entropy pool changes and I have scrutinized
the output of kernel-ide+entropy_random+ethernet_tulip
vs. kernel-ide+ethernet_tulip to try to figure out exactly where the
dup syms are comming from.
Note that the error below mentions liboskit_dev.a . This puzzles me
since I have made lots of changes to liboskit_linux_dev.a but few, if
any, to liboskit_dev.a . I am surprised that liboskit_dev would be
affected. Also, 'nm -a -S -td' output is the same for liboskit_dev.a
both on oskit builds with and without my entropy changes.
Also, does anyone know what is meant by the 'size' of a function
symbol? Ie, "/usr/bin/ld: Warning: size of symbol `osenv_wakeup'
changed from 26 to 42 in
/usr/local/lib/oskit/../liboskit_dev.a(sleep.o)". What does the size
mean? Reading the ELF spec hasn't helped me with this, nor has
googling, nor has asking in #hurd at random times.
Also, what is the correct way for a host OS to override just a proper
subset of the functions in an oskit library?
I would very much appreciate any and all thoughts on this. At this
point, I don't care if it's the most crazy suggestion ever. I need
some external input, even the most hazy of ideas.
At this point I'm removing the guts of my oskit changes a little at a
time to see what finally fixes the dup syms. This is slow going and
I'm not convinced it will even converge. I have, of course, grep'ed
the living daylights out of my stuff and examined my oskit patch very,
very carefully, but that's not helped. I fear that something
generated by the linux driver make process may be causing this and
that I don't understand that mechanism fully. Or maybe it's in some
of the glue code that's generated (although I've examined the
generated code and it looks innocent).
I can go on and on here, but I'll stop now (finally!). You can
replicate the problem by building OSKit/Mach from the CVS repositories
on savannah and including '+entropy_random' in the GNUMach make line.
Thanks,
Derek
======================================
GNUmach build output:
[EMAIL PROTECTED]:/usr/src/savannah/build-gnumach$ make
kernel-ide+entropy_random+ethernet_tulip
{ echo 'void oskit_linux_init_devs(void) {'; \
for drv in ide entropy_random ethernet_tulip; do \
echo " oskit_linux_init_${drv} ();"; \
done; echo '}'; \
} > init-ide+entropy_random+ethernet_tulip.cT
mv -f init-ide+entropy_random+ethernet_tulip.cT
init-ide+entropy_random+ethernet_tulip.c
gcc-3.2 -g -O -DOSKIT_MACH=1 -DMACH -DMACH_KERNEL -DKERNEL -DCONTINUATIONS
-DHAVE_CONFIG_H -D__ELF__=1 -Di386=1 -DAT386=1 -I../gnumach/i386/i386at
-I../gnumach/i386/i386 -I../gnumach/i386/include -I../gnumach/i386/include/mach/sa
-I../gnumach/i386/bogus -I../gnumach/i386 -I. -I../gnumach -I../gnumach/include
-I../gnumach/bogus -I../gnumach/kern -I../gnumach/device -c -o
init-ide+entropy_random+ethernet_tulip.o init-ide+entropy_random+ethernet_tulip.c
gcc-3.2 -g -O -nostdlib -nostartfiles -r -o
kernel-ide+entropy_random+ethernet_tulip.o \
-Wl,-\( /usr/local/lib/oskit/multiboot.o ipc_entry.o ipc_hash.o ipc_init.o
ipc_kmsg.o ipc_marequest.o ipc_mqueue.o ipc_notify.o ipc_object.o ipc_port.o
ipc_pset.o ipc_right.o ipc_space.o ipc_splay.o ipc_table.o ipc_target.o ipc_thread.o
mach_msg.o mach_port.o mach_rpc.o mach_debug.o fipc.o act.o ast.o bootstrap.o
counters.o eventcount.o exception.o host.o ipc_host.o ipc_kobject.o ipc_mig.o
ipc_sched.o ipc_tt.o kalloc.o lock.o lock_mon.o mach_clock.o mach_factor.o machine.o
pc_sample.o priority.o processor.o profile.o queue.o sched_prim.o startup.o
syscall_emulation.o syscall_subr.o syscall_sw.o task.o thread.o thread_swap.o
time_stamp.o timer.o zalloc.o boot_script.o vm_debug.o vm_external.o vm_fault.o
vm_init.o vm_kern.o vm_map.o vm_object.o vm_pageout.o vm_resident.o vm_user.o
memory_object.o device_init.o dev_pager.o net_io.o osenv_mem.o osenv_log.o osenv_irq.o
osenv_sleep.o osenv_synch.o osenv_timer.o osenv_bell.o osenv_softirq.o main.o
ds_osenv.o ds_request.o ds_r!
outines.o kmsg.o ds_block.o ds_partition.o ds_mem.o ds_bus.o ds_net.o ds_stream.o
ds_asyncio.o smp-glue.o version.o memory_object_user_user.o
memory_object_default_user.o memory_object_reply_user.o device_reply_user.o
device_error_reply_user.o device_server.o device_pager_server.o mach_port_server.o
mach_server.o mach4_server.o mach_debug_server.o mach_host_server.o int_init.o
pic_isa.o ast_check.o fpu.o gdt.o idt.o ldt.o mp_desc.o pcb.o phys.o pic.o pit.o
trap.o user_ldt.o hardclock.o io_perm.o machine_task.o pmap.o read_fault.o interrupt.o
cswitch.o idt_inittab.o locore.o spl.o mach_i386_server.o
init-ide+entropy_random+ethernet_tulip.o -L/usr/local/lib/oskit/.. -loskit_kern
-loskit_lmm -loskit_com -loskit_exec -loskit_unsupp -loskit_dev -loskit_linux_dev
-loskit_diskpart -Wl,-\) -lgcc
/usr/local/lib/oskit/../liboskit_dev.a(sleep.o)(.text+0x0): In function
`osenv_sleep_init':
/usr/src/savannah/build-oskit-after-entropy/dev/../../oskit-after-entropy/dev/sleep.c:26:
multiple definition of `osenv_sleep_init'
osenv_sleep.o(.text+0x0):/usr/src/savannah/build-gnumach/../gnumach/oskit/osenv_sleep.c:8:
first defined here
/usr/bin/ld: Warning: size of symbol `osenv_sleep_init' changed from 14 to 39 in
/usr/local/lib/oskit/../liboskit_dev.a(sleep.o)
/usr/local/lib/oskit/../liboskit_dev.a(sleep.o)(.text+0x27): In function `osenv_sleep':
/usr/src/savannah/build-oskit-after-entropy/dev/../../oskit-after-entropy/dev/sleep.c:35:
multiple definition of `osenv_sleep'
osenv_sleep.o(.text+0xe):/usr/src/savannah/build-gnumach/../gnumach/oskit/osenv_sleep.c:14:
first defined here
/usr/bin/ld: Warning: size of symbol `osenv_sleep' changed from 37 to 68 in
/usr/local/lib/oskit/../liboskit_dev.a(sleep.o)
/usr/local/lib/oskit/../liboskit_dev.a(sleep.o)(.text+0x6b): In function
`osenv_wakeup':
/usr/src/savannah/build-oskit-after-entropy/dev/../../oskit-after-entropy/dev/sleep.c:58:
multiple definition of `osenv_wakeup'
osenv_sleep.o(.text+0x33):/usr/src/savannah/build-gnumach/../gnumach/oskit/osenv_sleep.c:22:
first defined here
/usr/bin/ld: Warning: size of symbol `osenv_wakeup' changed from 26 to 42 in
/usr/local/lib/oskit/../liboskit_dev.a(sleep.o)
collect2: ld returned 1 exit status
make: *** [kernel-ide+entropy_random+ethernet_tulip.o] Error 1
rm init-ide+entropy_random+ethernet_tulip.o init-ide+entropy_random+ethernet_tulip.c
[EMAIL PROTECTED]:/usr/src/savannah/build-gnumach$
_______________________________________________
Help-hurd mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/help-hurd