Subject: undefined symbols when linking kernel
To: None <port-sparc@netbsd.org>
From: Benjamin Lorenz <lorenz@ps.uni-sb.de>
List: port-sparc
Date: 08/10/1998 23:15:50
Huhu!
To reach a larger audience, I remail a message here which I already
sent to Paul Kranenburg alone. Sorry, Paul, that you get the mail twice now!
When linking a kernel (from current sources) for a sun4c diskless system,
I get the following errors from the linker:
ld -N -p -Ttext F0004000 -e start -S -o netbsd ${SYSTEM_OBJ} vers.o
dma.o: Undefined symbol `_ncr53c9x_debug' referenced from text segment
dma.o: Undefined symbol `_ncr53c9x_debug' referenced from text segment
[...]
dma.o: More undefined symbol _ncr53c9x_debug refs follow
cache.o: Undefined symbol `_dvma_cachealign' referenced from text segment
cache.o: Undefined symbol `_dvma_cachealign' referenced from text segment
To make diagnostic easier, I append my kernel config file to this mail.
Thanks for help!
Benni
----------------- schnipp ----------------
# $NetBSD: GENERIC,v 1.69 1998/07/23 13:03:23 pk Exp $
include "arch/sparc/conf/std.sparc"
maxusers 32
## System kernel configuration. See options(4) for more detail.
# Options for variants of the Sun SPARC architecure.
# We currently support three architecture types; at least one is required.
#options SUN4 # sun4/100, sun4/200, sun4/300
options SUN4C # sun4c - SS1, 1+, 2, ELC, SLC, IPC, IPX, etc.
#options SUN4M # sun4m - SS10, SS20, Classic, etc.
#options SUN4_MMU3L # 3-level MMU on sun4/400; (incomplete)
## System options specific to the sparc machine type
# Blink the power LED on some machines to indicate the system load.
#options BLINK
## Use a faster console than the PROM's slow drawing routines. Not needed
## for headless (no framebuffer) machines.
options RASTERCONSOLE # fast rasterop console
#### System options that are the same for all ports
## Root device configuration: change the ?'s if you are going to use a
## nonstandard root partition (other than where the kernel is booted from)
## and/or nonstandard root type (not ffs or nfs). Normally this can be
## automagically determined at boot time.
config netbsd root on ? type ?
## System call tracing (see ktrace(1)).
options KTRACE
## Collect statistics on kernel malloc's and free's. This does have a
## significant performance hit on slower machines, so it is intended for
## diagnostic use only.
#options KMEMSTATS
## System V compatible IPC subsystem. (msgctl(2), semctl(2), and shmctl(2))
options SYSVMSG # System V message queues
options SYSVSEM # System V semaphores
options SYSVSHM # System V shared memory
#options SHMMAXPGS=1024 # 1024 pages is the default
## Loadable kernel module support; still under development.
#options LKM
## NFS boot options; default on sparc is the bootparam protocol
options NFS_BOOT_BOOTPARAM
#options NFS_BOOT_BOOTP
#options NFS_BOOT_DHCP
#### Debugging options
## The DDB in-kernel debugger runs at panic (unless DDB_ONPANIC=0), or at
## serial console break or keyboard reset, where the PROM would normally
## intercept. DDB_HISTORY_SIZE adds up/down arrow command history.
options DDB # kernel dynamic debugger
options DDB_HISTORY_SIZE=100 # enable history editing in DDB
options DDB_ONPANIC=1 # see also sysctl(8): `ddb.onpanic'
## You may also use gdb, on another computer connected to this machine over
## a serial port. Both KGDBDEV and KGDBRATE should be specified; KGDBDEV is
## a dev_t encoded device number of the serial port to use.
## (0xc01 = ttya, 0xc02 = ttyb.)
#options KGDB # support for kernel gdb
#options KGDBDEV=0xc01 # kgdb device number (this sample is `ttyb')
#options KGDBRATE=38400 # baud rate
## Compile the kernel with debugging symbols (`netbsd.gdb' is the debug file),
## such that gdb(1) can be used on a kernel coredump.
#makeoptions DEBUG="-g"
## Adds code to the kernel that does internal consistency checks, and will
## cause the kernel to panic if corruption of internal data structures
## is detected.
#options DIAGNOSTIC # extra kernel sanity checking
## Enable (possibly expensive) debugging code that may also display messages
## on the system console
#options DEBUG
## Make SCSI error messages more verbose when explaining their meanings.
#options SCSIVERBOSE
## `INSECURE' turns off the kernel security level (securelevel = 0 always).
## This allows writing to /dev/mem, loading kernel modules while multi-user,
## and other insecurities good only for development work. Do not use this
## option on a production machine.
#options INSECURE
## Allow non-root users to grab /dev/console with programs such as xconsole.
## `xconsole' therefore does not need setuid root with this option enabled.
#options UCONSOLE
## `FDSCRIPTS' allows non-readable but executable scripts by providing a
## pre-opened opaque file to the script interpreter. `SETUIDSCRIPTS',
## which implies FDSCRIPTS, allows scripts to be set-user-id using the same
## opaque file mechanism. Perl calls this "secure setuid scripts."
#options FDSCRIPTS
#options SETUIDSCRIPTS
## Options for compatibility with previous releases foreign system binaries.
## In the cases of COMPAT_SUNOS and COMPAT_SVR4, you may need to set up
## additional user-level utilities or system configuration files. See
## compat_sunos(8) and compat_svr4(8).
options COMPAT_43 # 4.3BSD system interfaces
options COMPAT_10 # NetBSD 1.0 binary compatibility
options COMPAT_11 # NetBSD 1.1 binary compatibility
options COMPAT_12 # NetBSD 1.2 binary compatibility
options COMPAT_13 # NetBSD 1.3 binary compatibility
options COMPAT_SUNOS # SunOS 4.x binary compatibility
options COMPAT_SVR4 # SunOS 5.x binary compatibility
options EXEC_ELF32 # Exec module for SunOS 5.x binaries.
## File systems. You probably need at least one of FFS or NFS.
#file-system FFS # Berkeley Fast Filesystem
file-system NFS # Sun NFS-compatible filesystem client
file-system KERNFS # kernel data-structure filesystem
file-system PROCFS # /proc
#file-system FDESC # user file descriptor filesystem
#file-system CD9660 # ISO 9660 + Rock Ridge file system
#file-system NULLFS # NULL layered filesystem
#file-system MFS # memory-based filesystem
#file-system UMAPFS # uid/gid remapping filesystem
#file-system LFS # Log-based filesystem (still experimental)
#file-system PORTAL # portal filesystem (still experimental)
#file-system UNION # union file system
#file-system MSDOSFS # MS-DOS FAT filesystem(s).
## File system options.
#options NFSSERVER # Sun NFS-compatible filesystem server
#options QUOTA # FFS quotas
#options FFS_EI # FFS Endian Independent support
## Network protocol support. In most environments, INET is required.
options INET # IP (Internet Protocol) v4
#options TCP_COMPAT_42 # 4.2BSD IP implementation compatibility
#options GATEWAY # packet forwarding ("router switch")
#options MROUTING # packet forwarding of multicast packets
#options DIRECTED_BROADCAST # allow broadcasts through routers
#options NS # Xerox NS networking
#options NSIP # Xerox NS tunneling over IP
#options ISO,TPIP # OSI networking
#options EON # OSI tunneling over IP
#options CCITT,LLC,HDLC # X.25 packet switched protocol
#options NETATALK # AppleTalk (over Ethernet) protocol
#options NTP # Network Time Protocol in-kernel support
#options PPS_SYNC # Add serial line synchronization for NTP
#options PFIL_HOOKS # Add pfil(9) hooks, intended for custom LKMs.
#options IPFILTER_LOG # Add ipmon(8) logging for ipfilter device
#options PPP_BSDCOMP # Add BSD compression to ppp device
#options PPP_DEFLATE # Add deflate (libz) compression to ppp device
#options PPP_FILTER # Add active filters for ppp (via bpf)
#### Main bus and CPU .. all systems.
mainbus0 at root
cpu0 at mainbus0
#### Bus types found on SPARC systems.
sbus0 at mainbus0 # sun4c
#obio0 at mainbus0 # sun4 and sun4m
#vme0 at mainbus0 # sun4
#iommu0 at mainbus0 # sun4m
#sbus0 at iommu0 # sun4m
#vme0 at iommu0 # sun4m
## SBus expander box
#xbox* at sbus? slot ? offset ?
#sbus* at xbox?
#### Standard system devices -- all required for a given architecture
## Auxiliary system registers on sun4c and sun4m
auxreg0 at mainbus0 # sun4c
#auxreg0 at obio0 # sun4m
## Power status and control register on Sun4m systems
#power0 at obio0
## Mostek clock found on 4/300, sun4c, and sun4m systems.
## The Mostek clock NVRAM is the "eeprom" on sun4/300 systems.
clock0 at mainbus0 # sun4c
#clock0 at obio0 # sun4m
#clock0 at obio0 addr 0xf2000000 # sun4/300
## Intersil clock found on 4/100 and 4/200 systems.
#oclock0 at obio0 addr 0xf3000000 # sun4/200
#oclock0 at obio0 addr 0x03000000 # sun4/100
## Memory error registers.
memreg0 at mainbus0 # sun4c
#memreg0 at obio0 # sun4m
#memreg0 at obio0 addr 0xf4000000 # sun4/200 and sun4/300
#memreg0 at obio0 addr 0x04000000 # sun4/100
## Timer chip found on 4/300, sun4c, and sun4m systems.
timer0 at mainbus0 # sun4c
#timer0 at obio0 # sun4m
#timer0 at obio0 addr 0xef000000 # sun4/300
## EEPROM found on 4/100 and 4/200 systems. Note that the 4/300
## doesn't use this driver; the `EEPROM' is in the NVRAM on the
## Mostek clock chip on 4/300 systems.
#eeprom0 at obio0 addr 0xf2000000 # sun4/200
#eeprom0 at obio0 addr 0x02000000 # sun4/100
#### Serial port configuration
## Zilog 8530 serial chips. Each has two-channels.
## zs0 is ttya and ttyb. zs1 is the keyboard and mouse.
zs0 at mainbus0 # sun4c
#zs0 at obio0 # sun4m
#zs0 at obio0 addr 0xf1000000 level 12 flags 0x103 # sun4/200 and sun4/300
#zs0 at obio0 addr 0x01000000 level 12 flags 0x103 # sun4/100
zstty0 at zs0 channel 0 # ttya
zstty1 at zs0 channel 1 # ttyb
zs1 at mainbus0 # sun4c
#zs1 at obio0 # sun4m
#zs1 at obio0 addr 0xf0000000 level 12 flags 0x103 # sun4/200 and sun4/300
#zs1 at obio0 addr 0x00000000 level 12 flags 0x103 # sun4/100
kbd0 at zs1 channel 0 # keyboard
ms0 at zs1 channel 1 # mouse
#zs2 at obio0 addr 0xe0000000 level 12 flags 0x103 # sun4/300
#zstty2 at zs2 channel 0 # ttyc
#zstty3 at zs2 channel 1 # ttyd
## Magma Serial/Parallel driver
#magma* at sbus? slot ? offset ?
#mtty* at magma?
#mbpp* at magma?
#### Disk controllers and disks
#
## The following flags may be set for the NCR53c94 based esp driver:
## bits 0-7: disable disconnect/reselect for the corresponding target
## bits 8-15: disable synchronous negotiation for target [bit-8]
## sun4/300, sun4c, sun4m on-board SCSI, and FSBE/S SBus SCSI cards.
## Both `dma' and `esp' are needed in all cases.
## Two kinds of additional SBus SCSI interfaces are available. One uses
## "esp at sbus" like the sun4c on-board; the other uses "esp at dma".
## sun4/300 SCSI - an NCR53c94 or equivalent behind
## an LSI Logic DMA controller
#dma0 at obio0 addr 0xfa001000 level 4 # sun4/300
#esp0 at obio0 addr 0xfa000000 level 4 flags 0x0000 # sun4/300
#dma0 at sbus0 slot ? offset ? # sun4c/sun4m
#esp0 at sbus0 slot ? offset ? flags 0x0000 # sun4c
#esp0 at dma0 flags 0x0000 # sun4m
# FSBE/S SCSI
#dma* at sbus? slot ? offset ? # SBus
#esp* at sbus? slot ? offset ? flags 0x0000 # SBus (older proms)
#esp* at dma? flags 0x0000 # SBus
#scsibus* at esp?
## Qlogic ISP SBus SCSI Card
#isp* at sbus? slot ? offset ?
#scsibus* at isp?
## NCR5380-based "Sun SCSI 3" VME SCSI controller.
## This driver has several flags which may be enabled by OR'ing
## the values and using the "flags" directive.
## Valid flags are:
##
## 0x01 Use DMA (may be polled)
## 0x02 Use DMA completion interrupts
## 0x04 Allow disconnect/reselect
##
## E.g. the following would enable DMA, interrupts, and reselect:
## si0 at vme0 addr 0x200000 level 3 vect 0x40 flags 0x07
##
## By default, DMA is enabled in the driver.
#si0 at vme0 addr 0x200000 pri 2 vec 0x40
#scsibus* at si?
## NCR5380-based "SCSI Weird" on-board SCSI interface found
## on sun4/100 systems. The flags are the same as the "si"
## controller. Note, while DMA is enabled by default, only
## polled DMA works at this time, and reselects do not work
## on this particular controller.
#sw0 at obio0 addr 0x0a000000 level 3
#scsibus* at sw?
## These entries find devices on all SCSI busses and assign
## unit numbers dynamically.
#sd* at scsibus? target ? lun ? # SCSI disks
#st* at scsibus? target ? lun ? # SCSI tapes
#cd* at scsibus? target ? lun ? # SCSI CD-ROMs
#ch* at scsibus? target ? lun ? # SCSI changer devices
#ss* at scsibus? target ? lun ? # SCSI scanners
#uk* at scsibus? target ? lun ? # unknown SCSI
## Xylogics 753 or 7053 VME SMD disk controllers and disks, found
## on sun4 systems.
#xdc0 at vme0 addr 0xee80 pri 3 vec 0x44
#xdc1 at vme0 addr 0xee90 pri 3 vec 0x45
#xdc2 at vme0 addr 0xeea0 pri 3 vec 0x46
#xdc3 at vme0 addr 0xeeb0 pri 3 vec 0x47
#xd* at xdc? drive ?
## Xylogics 451 or 451 VME SMD disk controllers and disks, found
## on sun4 systems.
#xyc0 at vme0 addr 0xee40 pri 3 vec 0x48
#xyc1 at vme0 addr 0xee48 pri 3 vec 0x49
#xy* at xyc? drive ?
## Floppy controller and drive found on SPARCstations.
fdc0 at mainbus0 # sun4c controller
#fdc0 at obio0 # sun4m controller
fd* at fdc0 # the drive itself
## A disk-like interface to files. Can be used to create floppy, CD,
## miniroot images, etc.
pseudo-device vnd 4
## Concatenated and striped disks; with this, you can create a software-based
## disk array similar to a "RAID 0" setup. See ccd(4).
#pseudo-device ccd 4
## Memory disk device, used on boot floppies with compressed
## kernel-plus-root-disk images.
#pseudo-device md 1
#### Network interfaces
## LANCE Ethernet - an AMD 7990 LANCE behind specialized DMA glue
## Three flavors of additional SBus ethernets are available. One attaches
## directly like the sun4c on-board, one uses the ledma device like the
## sun4m on-board, and one uses the lebuffer device.
#le0 at obio0 addr 0xf9000000 level 6 # sun4/300
le0 at sbus0 slot ? offset ? # sun4c on-board
#ledma0 at sbus0 slot ? offset ? # sun4m on-board
#le0 at ledma0 # sun4m on-board
le* at sbus? slot ? offset ? # SBus
ledma* at sbus? slot ? offset ? # SBus
le* at ledma? # SBus
lebuffer0 at sbus? slot ? offset ? # SBus
le0 at lebuffer? # SBus
lebuffer* at sbus? slot ? offset ? # SBus
le* at lebuffer? # SBus
## sun4/100 and sun4/200 Ethernet - an Intel 82586 on-board
## or on a Multibus/VME card.
#ie0 at obio0 addr 0xf6000000 level 6 # sun4/200 on-board
#ie0 at obio0 addr 0x06000000 level 6 # sun4/100 on-board
#ie1 at vme0 addr 0xe88000 pri 3 vec 0x75 # VME
#ie2 at vme0 addr 0x31ff02 pri 3 vec 0x76 # VME
#ie3 at vme0 addr 0x35ff02 pri 3 vec 0x77 # VME
#ie4 at vme0 addr 0x2dff02 pri 3 vec 0x7c # VME
## Loopback network interface; required
pseudo-device loop
## SLIP and CSLIP interfaces, for IP over a serial line.
#pseudo-device sl 2
## PPP, the successor to SLIP. See pppd(8).
#pseudo-device ppp 2
## Starmode Radio IP, a special hardware network device.
#pseudo-device strip 1
## Network "tunnel" device, allowing protocol stacks to run in the userland.
## This is used by the third-party user-mode "ppp" program, and others.
#pseudo-device tun 4
## Berkeley Packet Filter, required to run RARPD. A generic C-language
## interface that allows selective examining of incoming packets.
pseudo-device bpfilter 8
## IP Filter, used in firewall and NAT applications. See ipnat(8) for
## one example of the use of the IP Filter.
#pseudo-device ipfilter
#### Audio and video devices
## /dev/audio support (`audioamd' plus `audio')
##
audioamd0 at mainbus0 # sun4c
#audioamd0 at obio0 # sun4m
#audioamd0 at sbus0 slot ? offset ? # sun4m
audio* at audioamd0
## Sun "bwtwo" black and white framebuffer, found on sun4, sun4c, and sun4m
## systems. If your sun4 system has a cgfour installed in the P4 slot,
## the P4 entries for "bwtwo" will attach to the overlay plane of the
## "cgfour".
#bwtwo0 at sbus0 slot ? offset ? # sun4c and sun4m
#bwtwo* at sbus? slot ? offset ? #
#bwtwo0 at obio0 addr 0xfd000000 level 4 # sun4/200
#bwtwo0 at obio0 addr 0xfb300000 level 4 # sun4/300 in P4 slot
#bwtwo0 at obio0 addr 0x0b300000 level 4 # sun4/100 in P4 slot
## Sun "cgtwo" VME color framebuffer
#cgtwo0 at vme0 addr 0x400000 pri ? vec 0xa8
## Sun "cgthree" Sbus color framebuffer
#cgthree0 at sbus? slot ? offset ?
#cgthree* at sbus? slot ? offset ?
#cgthree0 at obio? slot ? offset ? # sun4m
## Sun "cgfour" color framebuffer with overlay plane. See above comment
## regarding overlay plane.
#cgfour0 at obio0 addr 0xfb300000 level 4 # sun4/300 P4
#cgfour0 at obio0 addr 0x0b300000 level 4 # sun4/100 P4
## Sun "cgsix" accelerated color framebuffer.
cgsix0 at sbus? slot ? offset ?
cgsix* at sbus? slot ? offset ?
#cgsix0 at obio0 addr 0xfb000000 level 4 # sun4/300 P4
#cgsix0 at obio0 addr 0x0b000000 level 4 # sun4/100 P4
## Sun "cgeight" 24-bit framebuffer
#cgeight0 at obio0 addr 0xfb300000 level 4 # sun4/300 P4
#cgeight0 at obio0 addr 0x0b300000 level 4 # sun4/100 P4
## Sun "tcx" accelerated color framebuffer.
#tcx0 at sbus? slot ? offset ?
#tcx* at sbus? slot ? offset ?
# Sun "cgfourteen" accelerated 24-bit framebuffer.
#cgfourteen0 at obio0 # sun4m
#### Other device configuration
## Pseudo ttys, required for network logins and programs like screen.
## 32 is a good number for average systems; you may have as many as you
## like, though 256 is more or less the upper limit. Increasing this
## number still requires you to run /dev/MAKEDEV to create the files
## for the ptys.
pseudo-device pty 32 # pseudo-ttys (for network, etc.)
## Random device, used to implement /dev/random (a source of random noise),
## and generate randomness for some kernel formulae.
## THIS DEVICE IS EXPERIMENTAL; use at your own risk.
#pseudo-device rnd