Subject: Re: broken ramdiskbin build (multiple symbol definition breaks ELF -static)
To: None <is@jocelyn.rhein.de, smd@ebone.net>
From: Sean Doran <smd@ebone.net>
List: current-users
Date: 09/20/1999 02:42:14
There are three other problems with making in /usr/distrib
under i386 ELF -current.  I guess nobody's been doing ELF
snapshots lately. -:)

 1. multiple references in -static compile of libhack.o in utils/libhack
 2. when making in .../floppies/ramdisk, the floppy3 fills,
     at least when the hack for the first multiple definition problem
     someone proposed got tried out (comment out yplib.o here and there)
    toying with this also exposed an itrunc3 panic in a chain
        of ffs_truncate <- ffs_write <- vn_write <- .. sys_srite <- syscall
        if there are not enough vnodes in /mnt in the MAKEDEV phase
        (itrunc3 panic lives in /sys/ufs/ffs/ffs_inode.c)
 3. when /etc/malloc.conf points to something with "A" in it,
    crunchide fails:

        crunchide -k _crunched_bad144_stub bad144.cro
        crunchide in free(): error: page is already free.
        *** Signal 6

        (gdb) bt
        #0  0x480caf8f in kill ()
        #1  0x480ca721 in abort ()
        #2  0x480c8b86 in tcgetattr ()
        #3  0x480c9f2b in tcgetattr ()
        #4  0x480ca52d in free ()
        #5  0x804a5f6 in free ()
        #6  0x8048e2c in free ()
        #7  0x8048ff0 in free ()
        #8  0x8048b0e in free ()

I don't suppose someone _has_ a recent -current release(7) format
hierarchy, and the associated boot filesystems, somewhere online?
        
	Sean.

# cd /usr/src/distrib; make depend && make
...

building standard hack library
ranlib libhack.a
ld -r -o libhack.o getcap.o getgrent.o gethost.o getnet.o getnetgr.o getpwent.o 
localeconv.o perror.o setlocale.o strerror.o strsignal.o utmp.o opendir.o getcap
.o getgrent.o gethost.o getnet.o getnetgr.o getpwent.o localeconv.o perror.o set
locale.o strerror.o strsignal.o utmp.o opendir.o
getcap.o: In function `cgetfirst':
getcap.o(.text+0xf08): multiple definition of `cgetfirst'
getcap.o(.text+0xf08): first defined here
getcap.o: In function `cgetustr':
getcap.o(.text+0xc84): multiple definition of `cgetustr'
getcap.o(.text+0xc84): first defined here
getcap.o: In function `cgetmatch':
getcap.o(.text+0xf28): multiple definition of `cgetmatch'
getcap.o(.text+0xf28): first defined here
getcap.o: In function `cgetnext':
getcap.o(.text+0x70c): multiple definition of `cgetnext'
getcap.o(.text+0x70c): first defined here
getcap.o: In function `cgetstr':
M line 133/288 71%
getcap.o(.text+0x9ec): multiple definition of `cgetstr'
getcap.o(.text+0x9ec): first defined here
getcap.o: In function `cgetcap':
getcap.o(.text+0xe3c): multiple definition of `cgetcap'
getcap.o(.text+0xe3c): first defined here
getcap.o: In function `cgetset':
getcap.o(.text+0xf84): multiple definition of `cgetset'
getcap.o(.text+0xf84): first defined here
getcap.o: In function `cgetclose':
getcap.o(.text+0xea0): multiple definition of `cgetclose'
getcap.o(.text+0xea0): first defined here
getcap.o: In function `cgetent':
getcap.o(.text+0xee0): multiple definition of `cgetent'
getcap.o(.text+0xee0): first defined here
getcap.o: In function `cgetnum':
getcap.o(.text+0xd64): multiple definition of `cgetnum'
getcap.o(.text+0xd64): first defined here
getgrent.o: In function `setgrent':
getgrent.o(.text+0x25c): multiple definition of `setgrent'
getgrent.o(.text+0x25c): first defined here
getgrent.o: In function `getgrgid':
getgrent.o(.text+0x198): multiple definition of `getgrgid'
getgrent.o(.text+0x198): first defined here
getgrent.o: In function `endgrent':
getgrent.o(.text+0x26c): multiple definition of `endgrent'
getgrent.o(.text+0x26c): first defined here
getgrent.o: In function `getgrent':
getgrent.o(.text+0x228): multiple definition of `getgrent'
getgrent.o(.text+0x228): first defined here
getgrent.o: In function `setgroupent':
getgrent.o(.text+0x28c): multiple definition of `setgroupent'
getgrent.o(.text+0x28c): first defined here
getgrent.o: In function `getgrnam':
getgrent.o(.text+0x1e0): multiple definition of `getgrnam'
getgrent.o(.text+0x1e0): first defined here
gethost.o: In function `_gethtbyname':
gethost.o(.text+0x2cc): multiple definition of `_gethtbyname'
gethost.o(.text+0x2cc): first defined here
gethost.o: In function `_gethtbyaddr':
gethost.o(.text+0x388): multiple definition of `_gethtbyaddr'
gethost.o(.text+0x388): first defined here
gethost.o: In function `gethostbyaddr':
gethost.o(.text+0x14c): multiple definition of `gethostbyaddr'
gethost.o(.text+0x14c): first defined here
gethost.o: In function `_gethtent':
gethost.o(.text+0x0): multiple definition of `_gethtent'
gethost.o(.text+0x0): first defined here
gethost.o: In function `gethostbyname':
gethost.o(.text+0x1a4): multiple definition of `gethostbyname'
gethost.o(.text+0x1a4): first defined here
gethost.o: In function `_sethtent':
gethost.o(.text+0x268): multiple definition of `_sethtent'
gethost.o(.text+0x268): first defined here
gethost.o: In function `_endhtent':
gethost.o(.text+0x2a0): multiple definition of `_endhtent'
gethost.o(.text+0x2a0): first defined here
getnet.o: In function `getnetbyaddr':
getnet.o(.text+0x0): multiple definition of `getnetbyaddr'
getnet.o(.text+0x0): first defined here
getnet.o: In function `getnetbyname':
getnet.o(.text+0xc): multiple definition of `getnetbyname'
getnet.o(.text+0xc): first defined here
getnetgr.o: In function `endnetgrent':
getnetgr.o(.text+0x14): multiple definition of `endnetgrent'
getnetgr.o(.text+0x14): first defined here
getnetgr.o: In function `getnetgrent':
getnetgr.o(.text+0x8): multiple definition of `getnetgrent'
getnetgr.o(.text+0x8): first defined here
getnetgr.o: In function `innetgr':
getnetgr.o(.text+0x1c): multiple definition of `innetgr'
getnetgr.o(.text+0x1c): first defined here
getnetgr.o: In function `setnetgrent':
getnetgr.o(.text+0x0): multiple definition of `setnetgrent'
getnetgr.o(.text+0x0): first defined here
getpwent.o: In function `endpwent':
getpwent.o(.text+0x1b4): multiple definition of `endpwent'
getpwent.o(.text+0x1b4): first defined here
getpwent.o: In function `setpwent':
getpwent.o(.text+0x19c): multiple definition of `setpwent'
getpwent.o(.text+0x19c): first defined here
getpwent.o: In function `getpwuid':
getpwent.o(.text+0xf0): multiple definition of `getpwuid'
getpwent.o(.text+0xf0): first defined here
getpwent.o: In function `getpwnam':
getpwent.o(.text+0x140): multiple definition of `getpwnam'
getpwent.o(.text+0x140): first defined here
getpwent.o: In function `setpassent':
getpwent.o(.text+0x1d4): multiple definition of `setpassent'
getpwent.o(.text+0x1d4): first defined here
getpwent.o: In function `getpwent':
getpwent.o(.text+0x0): multiple definition of `getpwent'
getpwent.o(.text+0x0): first defined here
localeconv.o: In function `localeconv':
localeconv.o(.text+0x0): multiple definition of `localeconv'
localeconv.o(.text+0x0): first defined here
perror.o: In function `perror':
perror.o(.text+0x0): multiple definition of `perror'
perror.o(.text+0x0): first defined here
setlocale.o: In function `setlocale':
setlocale.o(.text+0x0): multiple definition of `setlocale'
setlocale.o(.text+0x0): first defined here
strerror.o: In function `strerror':
strerror.o(.text+0x0): multiple definition of `strerror'
strerror.o(.text+0x0): first defined here
strsignal.o: In function `strsignal':
strsignal.o(.text+0x0): multiple definition of `strsignal'
strsignal.o(.text+0x0): first defined here
utmp.o: In function `logwtmp':
utmp.o(.text+0x14): multiple definition of `logwtmp'
utmp.o(.text+0x14): first defined here
utmp.o: In function `login':
utmp.o(.text+0x0): multiple definition of `login'
utmp.o(.text+0x0): first defined here
utmp.o: In function `logout':
utmp.o(.text+0x8): multiple definition of `logout'
utmp.o(.text+0x8): first defined here
opendir.o: In function `opendir':
opendir.o(.text+0x0): multiple definition of `opendir'
opendir.o(.text+0x0): first defined here
*** Error code 1