buildkernel failure: undefined reference

Robert Huff roberthuff at rcn.com
Tue Sep 6 10:25:53 PDT 2005


	I'm trying to upgrade from -CURRENT(March 29) to
-CURRENT(00:01 Sept 6) and buildkernel fails.  Specifically, the
code compiles, but the link phase dies with:

MAKE=/usr/obj/usr/src/make.i386/make sh /usr/src/sys/conf/newvers.sh JERUSALEM
touch hack.c
cc -shared -nostdlib hack.c -o hack.So
rm -f hack.c
MAKE=/usr/obj/usr/src/make.i386/make sh /usr/src/sys/conf/newvers.sh JERUSALEM
cc -c -O -pipe -march=pentium4 -Wall -Wredundant-decls -Wnested-externs -Wstrict
-prototypes  -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual  -fformat
-extensions -std=c99 -g -nostdinc -I-  -I. -I/usr/src/sys -I/usr/src/sys/contrib
/dev/acpica -I/usr/src/sys/contrib/altq -I/usr/src/sys/contrib/ipfilter -I/usr/s
rc/sys/contrib/pf -I/usr/src/sys/contrib/dev/ath -I/usr/src/sys/contrib/dev/ath/
freebsd -I/usr/src/sys/contrib/ngatm -I/usr/src/sys/dev/twa -D_KERNEL -include o
pt_global.h -fno-common -finline-limit=8000 --param inline-unit-growth=100 --par
am large-function-growth=1000  -mno-align-long-strings -mpreferred-stack-boundar
y=2  -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -ffreestanding -Werror  ve
rs.c
linking kernel.debug
mga_dma.o(.text+0xd): In function `mga_do_wait_for_idle':
/usr/src/sys/dev/drm/mga_dma.c:56: undefined reference to `drm_debug_flag'
mga_dma.o(.text+0xa3): In function `mga_do_dma_reset':
/usr/src/sys/dev/drm/mga_dma.c:79: undefined reference to `drm_debug_flag'
mga_dma.o(.text+0x10b): In function `mga_do_dma_flush':
/usr/src/sys/dev/drm/mga_dma.c:109: undefined reference to `drm_debug_flag'
mga_dma.o(.text+0x17b):/usr/src/sys/dev/drm/mga_dma.c:120: undefined reference t
o `drm_debug_flag'
mga_dma.o(.text+0x21a):/usr/src/sys/dev/drm/mga_dma.c:148: undefined reference t
o `drm_debug_flag'
mga_dma.o(.text+0x257):/usr/src/sys/dev/drm/mga_dma.c:149: more undefined refere
nces to `drm_debug_flag' follow
mga_dma.o(.text+0x633): In function `mga_freelist_init':
/usr/src/sys/dev/drm/mga_dma.c:254: undefined reference to `drm_alloc'
mga_dma.o(.text+0x6be):/usr/src/sys/dev/drm/mga_dma.c:265: undefined reference t
o `drm_alloc'

	etc..
	I have examined /usr/src/UPDATING and found noting applicable.
	What have I missed?
	(make.conf and kernel config are appended.)


				Robert Huff


****************	/etc/make.conf

# Created: Fri Jan 30 14:18:07 2004
# Setting to use base perl from ports:

#PERL_VER=5.6.1
#PERL_VERSION=5.6.1
#PERL_ARCH=mach
#NOPERL=yo
#NO_PERL=yo
#NO_PERL_WRAPPER=yo

#

CPUTYPE?=p4
CFLAGS= -O -pipe
X_WINDOW_SYSTEM=xorg
HAVE_MOTIF= yes

# To avoid building various parts of the base system:
#	(copied from /usr/share/examples/etc/make.conf

#NO_BOOT=       true    # do not build boot blocks and loader
#NO_CVS=        true    # do not build CVS
#NO_CXX=        true    # do not build C++ and friends
#NO_BIND=       true    # do not build BIND
NO_BIND_ETC=       true    # Do not install files to /etc/namedb
NO_BLUETOOTH=  true    # do not build Bluetooth related stuff
NO_FORTRAN=    true    # do not build g77 and related libraries
#NO_GDB=        true    # do not build GDB
#NO_I4B=        true    # do not build isdn4bsd package
#NO_IPFILTER=   true    # do not build IP Filter package
#NO_PF=         true    # do not build PF firewall package
#NO_AUTHPF=     true    # do not build and install authpf (setuid/gid)
#NO_KERBEROS=   true    # do not build and install Kerberos 5 (KTH Heimdal)
#NO_LPR=        true    # do not build lpr and related programs
#NO_MAILWRAPPER=true    # do not build the mailwrapper(8) MTA selector
#NO_MODULES=    true    # do not build modules with the kernel
#NO_OBJC=       true    # do not build Objective C support
#NO_OPENSSH=    true    # do not build OpenSSH
#NO_OPENSSL=    true    # do not build OpenSSL (implies NO_KERBEROS/NO_OPENSSH)
#NO_SENDMAIL=   true    # do not build sendmail and related programs
#NO_SHAREDOCS=  true    # do not build the 4.4BSD legacy docs
#NO_TCSH=       true    # do not build and install /bin/csh (which is tcsh)
#NO_VINUM=      true    # do not build Vinum utilities
#NOCRYPT=       true    # do not build any crypto code
#NOGAMES=       true    # do not build games (games/ subdir)
#NOINFO=        true    # do not make or install info files
#NOLIBC_R=      true    # do not build libc_r (re-entrant version of libc)
#NOMAN=         true    # do not build manual pages
NO_PROFILE=     true    # Avoid compiling profiled libraries
#NOSHARE=       true    # do not go into the share subdir

#	to get automatic SASL in sendmail

SENDMAIL_CFLAGS+=	-I/usr/local/include/ -DSASL=2
SENDMAIL_LDFLAGS+=	-L/usr/local/lib
SENDMAIL_LDADD+=	-lsasl2

# added by use.perl 2005-07-06 13:49:19

PERL_VER=5.8.7
PERL_VERSION=5.8.7


****************		kernel config

#
# JERUSALEM
#
# For more information read the handbook part System Administration -> 
# Configuring the FreeBSD Kernel -> The Configuration File. 
# The handbook is available in /usr/share/doc/handbook or online as
# latest version from the FreeBSD World Wide Web server 
# <URL:http://www.FreeBSD.ORG/>
#
# An exhaustive list of options and more detailed explanations of the 
# device lines is present in the ./LINT configuration file. If you are 
# in doubt as to the purpose or necessity of a line, check first in LINT.
#
#	$Id: GENERIC,v 1.125 1998/10/16 01:30:11 obrien Exp $

machine		i386
#cpu			"I386_CPU"
#cpu			"I486_CPU"
#cpu			"I586_CPU"
cpu			I686_CPU
ident		JERUSALEM
maxusers		0


#options		MATH_EMULATE	#Support for x87 emulation

options		SCHED_ULE

options		INET			#InterNETworking
options		INET6		#IPv6 communications protocols

options		MAXDSIZ="(1024*1024*1024)"
options		MAXSSIZ="(256*1024*1024)"

#options		IPX
#options	NCP			#NetWare Core protocol

options		FFS			#Berkeley Fast Filesystem
options		MSDOSFS		#MSDOS Filesystem
options		CD9660		#ISO 9660 Filesystem
#options		NWFS			#NetWare filesystem

options	 	SOFTUPDATES		#Enable FFS soft updates support
options		UFS_ACL			#Support for access control lists
options		UFS_DIRHASH		#Improve performance on big directories
options		SCSI_DELAY=100		#Be pessimistic about Joe SCSI
							#  note: value is in milliseconds
#options		SAFETY

# Debugging for use in -current
options 	KDB			# Enable kernel debugger support.
options 	DDB			#Enable the kernel debugger
makeoptions	DEBUG=-g
#options 	INVARIANTS		#Enable calls of extra sanity checking
#options 	INVARIANT_SUPPORT	#Extra sanity checks of internal structures, required by INVARIANTS
#options 	WITNESS			#Enable checks to detect deadlocks and cycles
#options 	WITNESS_SKIPSPIN	#Don't run witness on spinlocks for speed

options		COMPAT_43		#Compatible with BSD 4.3 [KEEP THIS!]
options	 	COMPAT_FREEBSD4		#Compatible with FreeBSD4
options	 	SYSVSHM			#SYSV-style shared memory
options		SYSVMSG			#SYSV-style message queues
options		SYSVSEM			#SYSV-style semaphores

options		COMPAT_AOUT

#	see java/62837

#options		COMPAT_LINUX

#options		LINPROCFS
options		PROCFS
options		PSEUDOFS


#			For StarOffice

#options         P1003_1B
#options         _KPOSIX_PRIORITY_SCHEDULING
#options         _KPOSIX_VERSION=199309L

#options		MD5

#			For Mars-nwe NetWare server

#options		IPX


#		for WINE

#options	USER_LDT	#allow user-level control of i386 ldt

#
#

#config		kernel	root on da0
device		isa
device		eisa
device		pci

#device		fdc0	at isa? port IO_FD1 irq 6 drq 2c
device		fdc

#device		fd	at fdc drive 0
#disk		fd1	at fdc drive 1

# Unless you know very well what you're doing, leave ft0 at drive 2, or
# remove the line entirely if you don't need it.  Trying to configure
# it on another unit might cause surprises, see PR kern/7176.
#tape		ft0	at fdc0 drive 2

#options		"CMD640"	# work around CMD640 chip deficiency
#controller	wdc0	at isa? port "IO_WD1" bio irq 14 vector wdintr
#disk		wd0	at wdc0 drive 0
#disk		wd1	at wdc0 drive 1

#controller	wdc1	at isa? port "IO_WD2" bio irq 15 vector wdintr
#disk		wd2	at wdc1 drive 0
#disk		wd3	at wdc1 drive 1

#options		ATAPI		#Enable ATAPI support for IDE bus
#options		ATAPI_STATIC	#Don't do it as an LKM
#device		wcd0		#IDE CD-ROM
#device		wfd0		#IDE Floppy (e.g. LS-120)

# A single entry for any of these controllers (ncr, ahb, ahc, amd) is
# sufficient for any number of installed devices.
#controller	ncr0
#controller	amd0
#controller	ahb0
device		ahc
#controller	isp0

# This controller offers a number of configuration options, too many to
# document here  - see the LINT file in this directory and look up the
# dpt0 entry there for much fuller documentation on this.
#controller      dpt0

#controller	adv0	at isa? port ? cam irq ?
#controller	adw0
#controller	bt0	at isa? port ? cam irq ?
#controller	aha0	at isa? port ? cam irq ?
#controller	uha0	at isa? port "IO_UHA0" bio irq ? drq 5 vector uhaintr
#controller	aic0	at isa? port 0x340 bio irq 11 vector aicintr
#controller	nca0	at isa? port 0x1f88 bio irq 10 vector ncaintr
#controller	nca1	at isa? port 0x350 bio irq 5 vector ncaintr
#controller	sea0	at isa? bio irq 5 iomem 0xc8000 iosiz 0x2000 vector seaintr

device		scbus
device		da		#	SCSI disk
device		sa		#	SCSI tape
device		pass
device		cd		# Only need one of these, the code dynamically grows

#device		wt0	at isa? port 0x300 bio irq 5 drq 1 vector wtintr
#device		mcd0	at isa? port 0x300 bio irq 10 vector mcdintr

#controller	matcd0	at isa? port 0x230 bio

#device		scd0	at isa? port 0x230 bio

# syscons is the default console driver, resembling an SCO console
#device		sc	  at isa? flags 0x100
device		sc	  
#	at isa? port "IO_KBD" conflicts tty irq 1 vector scintr
# Enable this and PCVT_FREEBSD for pcvt vt220 compatible console driver
## 2/3/1999: new model console stuff
#device	      atkbdc
#device          atkbd

#device          vt

device		vga
device		mgadrm
device		agp

#device		vt0	at isa? port "IO_KBD" conflicts tty irq 1 vector pcrint
options		XSERVER			# support for X server
#options		FAT_CURSOR		# start with block cursor


# If you have a ThinkPAD, uncomment this along with the rest of the PCVT lines
#options		PCVT_SCANSET=2		# IBM keyboards are non-std

device		npx

#
# Laptop support (see LINT for more options)
#
#device		apm0    at isa?	disable	flags 0x31 # Advanced Power Management

# PCCARD (PCMCIA) support
#controller	card0
#device		pcic0	at card?
#device		pcic1	at card?

device		sio

#device		lpt0	at isa? port? tty irq 7 vector lptintr

# Parallel-Port Bus
#
# Parallel port bus support is provided by the `ppbus' device.
# Multiple devices may be attached to the parallel port, devices
# are automatically probed and attached when found.
#
# Supported devices:
# vpo	Iomega Zip Drive
#	Requires SCSI disk support ('scbus' and 'da'), best
#	performance is achieved with ports in EPP 1.9 mode.
# nlpt	Parallel Printer, use _instead_ of lpt0
# plip	Parallel network interface
# ppi	General-purpose I/O ("Geek Port")
# pps	Pulse per second Timing Interface
# lpbb	Philips official parallel port I2C bit-banging interface
#
# Supported interfaces:
# ppc	ISA-bus parallel port interfaces.  
#

device		ppc
device		ppbus

device		lpt
device		plip
device		ppi

############

# USB support

device		uhci
device		ohci
device		ehci
device		usb
device		ugen
#device		uhid
device		ukbd
options		KBD_INSTALL_CDEV
device		ums
#device		uscanner

############

#device		psm	at isa? port "IO_KBD" conflicts tty irq 12 vector psmintr
#device		psm

# Order is important here due to intrusive probes, do *not* alphabetize
# this list of network interfaces until the probes have been fixed.
# Right now it appears that the ie0 must be probed before ep0. See
# revision 1.20 of this file.

device de

#device de0
#device de1
#device fxp0
#device tl0
#device tx0
#device vx0
#device xl0

#device ed0 at isa? port 0x380 net irq 9 iomem 0xd8000 vector edintr
#device ie0 at isa? port 0x300 net irq 10 iomem 0xd0000 vector ieintr
#device ep0 at isa? port 0x300 net irq 10 vector epintr
#device ex0 at isa? port? net irq? vector exintr
#device fe0 at isa? port 0x300 net irq ? vector feintr
#device le0 at isa? port 0x300 net irq 5 iomem 0xd0000 vector le_intr
#device lnc0 at isa? port 0x280 net irq 10 drq 0 vector lncintr
#device ze0 at isa? port 0x300 net irq 10 iomem 0xd8000 vector zeintr
#device zp0 at isa? port 0x300 net irq 10 iomem 0xd8000 vector zpintr
#device cs0 at isa? port 0x300 net irq ? vector csintr

#
#	see /usr/src/UPDATING
#

device		mem		# Memory and kernel memory devices
device		io		# I/O device
#device		null		# Null and zero devices

device	random

device	bpf
device	loop			# Network loopback

device	ether
#device	sl	1
#device	ppp	0
device	tun
device	gif
device	pty
#device	gzip		# Exec gzipped a.out's

#
#	for IPFW/natd
#

options        IPFIREWALL              #firewall
options        IPFIREWALL_VERBOSE      #print information about
			 					# dropped packets
#options        IPFIREWALL_FORWARD      #enable xparent proxy support
options		IPFIREWALL_VERBOSE_LIMIT=100 #limit verbosity
options		IPDIVERT				#divert sockets

#
#	IPv6
#

options	 	IPV6FIREWALL		#firewall for IPv6
options		IPV6FIREWALL_VERBOSE
options		IPV6FIREWALL_VERBOSE_LIMIT=100
options		IPV6FIREWALL_DEFAULT_TO_ACCEPT


#
#	sound driver
#

#device	pcm

device	sound

device	snd_cmi


More information about the freebsd-current mailing list