help-hurd
[Top][All Lists]
Advanced

[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$





reply via email to

[Prev in Thread] Current Thread [Next in Thread]