[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
oskit/mach entropy trouble
From: |
Debian User |
Subject: |
oskit/mach entropy trouble |
Date: |
Wed, 2 Apr 2003 21:22:00 -0500 |
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:
ddavies@nazgul:/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
ddavies@nazgul:/usr/src/savannah/build-gnumach$
- oskit/mach entropy trouble,
Debian User <=