bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug-hurd] oskit-mach cannot be build against oskit 20000901


From: Neal H Walfield
Subject: [Bug-hurd] oskit-mach cannot be build against oskit 20000901
Date: Sun, 17 Sep 2000 23:46:04 -0500
User-agent: Mutt/1.2i

Hi Roland,

Since you are in gnu-mach oskit mode, here is another problem.

I am trying to build oskit-mach against the latest oskit: 20000901.
Up until now, I have been using the 20000202 snapshot.  Everything builds
fine until it gets to creating kernel.o.  Here it complains about multiple
declarations of osenv_intr_{disable,enable,enabled}:

gcc -O -g -DDEBUG -nostdlib -nostartfiles -r -o kernel.o\
      -L/usr/local/oskit-20000901/lib -Wl,-\( 
/usr/local/oskit-20000901/lib/oskit/multiboot.o ... [snip] ... -loskit_kern 
-loskit_lmm -loskit_com -loskit_unsupp -loskit_dev -loskit_linux_dev 
-loskit_diskpart -Wl,-\) -lgcc
/usr/local/oskit-20000901/lib/liboskit_dev.a(synch.o): In function 
`osenv_intr_enable':
/home/neal/project/oskit-20000901/dev/../oskit/x86/proc_reg.h:159: multiple 
definition of `osenv_intr_enable'
osenv_synch.o:/home/neal/project/gnumach/build/../gnumach/oskit/osenv_synch.c:35:
 first defined here
/usr/bin/ld: Warning: size of symbol `osenv_intr_enable' changed from 32 to 6 
in synch.o
/usr/local/oskit-20000901/lib/liboskit_dev.a(synch.o): In function 
`osenv_intr_disable':
/home/neal/project/oskit-20000901/dev/../oskit/x86/proc_reg.h:158: multiple 
definition of `osenv_intr_disable'
osenv_synch.o:/home/neal/project/gnumach/build/../gnumach/oskit/osenv_synch.c:18:
 first defined here
/usr/bin/ld: Warning: size of symbol `osenv_intr_disable' changed from 49 to 6 
in synch.o
/usr/local/oskit-20000901/lib/liboskit_dev.a(synch.o): In function 
`osenv_intr_enabled':
/home/neal/project/oskit-20000901/dev/../dev/x86/synch.c:43: multiple 
definition of `osenv_intr_enabled'
osenv_synch.o:/home/neal/project/gnumach/build/../gnumach/oskit/osenv_synch.c:46:
 first defined here
/usr/bin/ld: Warning: size of symbol `osenv_intr_enabled' changed from 20 to 12 
in synch.o
collect2: ld returned 1 exit status
make: *** [kernel.o] Error 1

It appears that this somehow involves the gnumach/oskit/osenv_synch.c file.
Removing this file allows the whole thing to compile without anymore errors
or warnings.  As great as that sounds, it crashes on boot.

Examining the differences between the two kits yielded the following results:

neal@school:/usr/local/oskit-20000901/lib (1)$ for i in liboskit_kern.a \
liboskit_lmm.a liboskit_com.a liboskit_unsupp.a liboskit_dev.a \
liboskit_linux_dev.a liboskit_diskpart.a; do nm $i | grep osenv_intr_disable \
&& echo $i; done
         U osenv_intr_disable
liboskit_unsupp.a
         U osenv_intr_disable
         U osenv_intr_disable
         U osenv_intr_disable
         U osenv_intr_disable
         U osenv_intr_disable
00000008 T osenv_intr_disable
liboskit_dev.a
         U osenv_intr_disable
         U osenv_intr_disable
liboskit_linux_dev.a

neal@school:/usr/local/oskit-20000202/lib (1)$ for i in liboskit_kern.a \
liboskit_lmm.a liboskit_com.a liboskit_unsupp.a liboskit_dev.a \
liboskit_linux_dev.a liboskit_diskpart.a; do nm $i | grep osenv_intr_disable \
&& echo $i; done
         U osenv_intr_disable
liboskit_unsupp.a
         U osenv_intr_disable
         U osenv_intr_disable
         U osenv_intr_disable
         U osenv_intr_disable
00000008 T osenv_intr_disable
         U osenv_intr_disable
         U osenv_intr_disable
liboskit_dev.a

We are still only pulling in the osenv_intr_* once.  I just cannot figure this
out.  It screams linker madness, however, I have no clue at this point.

Thanks,
-Neal

-- 
Neal H Walfield
University of Massachusetts at Lowell
neal@walfield.org or nwalfiel@cs.uml.edu


reply via email to

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