Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 28 Dec 2013 17:50:58 +0100
From:      =?UTF-8?B?UmFkaW8gbcWCb2R5Y2ggYmFuZHl0w7N3?= <radiomlodychbandytow@o2.pl>
To:        Warner Losh <imp@bsdimp.com>
Cc:        freebsd-mips@freebsd.org
Subject:   Re: Build failure on octeon
Message-ID:  <52BF0172.9080907@o2.pl>
In-Reply-To: <7A512375-4C53-420A-A15D-655D469A7B5A@bsdimp.com>
References:  <52BC19C7.70507@o2.pl> <36762B3C-179F-42B3-B108-62F2D7F5A9DF@bsdimp.com> <52BC8A41.8010808@o2.pl> <7A512375-4C53-420A-A15D-655D469A7B5A@bsdimp.com>

next in thread | previous in thread | raw e-mail | index | archive | help
OK, thanks.
On 26/12/2013 21:00, Warner Losh wrote:
> Yes. If you need little endian, you can use mips64el as the TARGET_ARCH, but I've never tested that.
> 
> Warner
> 
> On Dec 26, 2013, at 12:57 PM, Radio młodych bandytów wrote:
> 
>> Thank you, the system builds now. Is the default ABI endianness big?
>>
>> -- 
>> Twoje radio
>>
>> On 26/12/2013 17:13, Warner Losh wrote:
>>> Try TARGET_ARCH=mips64
>>>
>>> On Dec 26, 2013, at 4:57 AM, Radio młodych bandytów wrote:
>>>
>>>> Hello, I'm trying to compile the current tree for my octeon device and
>>>> get the following error:
>>>>
>>>> cc  -c -O -pipe  -std=c99 -g -Wall -Wredundant-decls -Wnested-externs
>>>> -Wstrict-prototypes  -Wmissing-prototypes -Wpointer-arith -Winline
>>>> -Wcast-qual  -Wundef -Wno-pointer-sign -fformat-extensions
>>>> -Wmissing-include-dirs -fdiagnostics-show-option   -nostdinc  -I.
>>>> -I/usr/home/m/Ubiquity/10/sys -I/usr/home/m/Ubiquity/10/sys/contrib/altq
>>>> -I/usr/home/m/Ubiquity/10/sys/contrib/libfdt -D_KERNEL
>>>> -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h -fno-common
>>>> -finline-limit=8000 --param inline-unit-growth=10000 --param
>>>> large-function-growth=100000 --param max-inline-insns-single=10000
>>>> -fno-pic -mno-abicalls -G0 -DKERNLOADADDR=0xffffffff80100000
>>>> -march=octeon -mabi=64 -msoft-float -ffreestanding -Werror  vnode_if.c
>>>> ${NORMAL_CTFCONVERT} expands to empty string
>>>> :> hack.c
>>>> cc  -shared -fno-pic -mno-abicalls -G0 -DKERNLOADADDR=0xffffffff80100000
>>>> -march=octeon -mabi=64 -nostdlib hack.c -o hack.So
>>>> rm -f hack.c
>>>> sed s/KERNLOADADDR/0xffffffff80100000/g
>>>> /usr/home/m/Ubiquity/10/sys/conf/ldscript.mips.octeon1  >
>>>> ldscript.mips.octeon1
>>>> MAKE=make sh /usr/home/m/Ubiquity/10/sys/conf/newvers.sh OCTEON1
>>>> cc  -c -O -pipe  -std=c99 -g -Wall -Wredundant-decls -Wnested-externs
>>>> -Wstrict-prototypes  -Wmissing-prototypes -Wpointer-arith -Winline
>>>> -Wcast-qual  -Wundef -Wno-pointer-sign -fformat-extensions
>>>> -Wmissing-include-dirs -fdiagnostics-show-option   -nostdinc  -I.
>>>> -I/usr/home/m/Ubiquity/10/sys -I/usr/home/m/Ubiquity/10/sys/contrib/altq
>>>> -I/usr/home/m/Ubiquity/10/sys/contrib/libfdt -D_KERNEL
>>>> -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h -fno-common
>>>> -finline-limit=8000 --param inline-unit-growth=10000 --param
>>>> large-function-growth=100000 --param max-inline-insns-single=10000
>>>> -fno-pic -mno-abicalls -G0 -DKERNLOADADDR=0xffffffff80100000
>>>> -march=octeon -mabi=64 -msoft-float -ffreestanding -Werror  vers.c
>>>> ${NORMAL_CTFCONVERT} expands to empty string
>>>> linking kernel.debug
>>>> hack.So: could not read symbols: File in wrong format
>>>> *** [kernel.debug] Error code 1
>>>>
>>>> Stop in /usr/home/m/Ubiquity/obj/mips.mips/usr/home/m/Ubiquity/10/sys/M.
>>>> *** [buildkernel] Error code 1
>>>>
>>>> Stop in /usr/home/m/Ubiquity/10.
>>>> *** [buildkernel] Error code 1
>>>>
>>>> Stop in /usr/home/m/Ubiquity/10.
>>>>
>>>>
>>>>
>>>> I build with TARGET=mips and TARGET_ARCH=mipseb.
>>>
>>> TARGET_ARCH=mips64 is the right thing here. The kernel config files assume a 64-bit ABI, but the mipseb ABI is 32-bit.
>>>
>>> Warner
>>>
>>>> My kernel config:
>>>>
>>>> #
>>>> # OCTEON1 -- Generic kernel configuration file for FreeBSD/MIPS on
>>>> Cavium Octeon
>>>> #
>>>> # For more information on this file, please read the config(5) manual page,
>>>> # and/or the handbook section on Kernel Configuration Files:
>>>> #
>>>> #
>>>> http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-config.html
>>>> #
>>>> # The handbook is also available locally in /usr/share/doc/handbook
>>>> # if you've installed the doc distribution, otherwise always see the
>>>> # FreeBSD World Wide Web server (http://www.FreeBSD.org/) for the
>>>> # latest information.
>>>> #
>>>> # An exhaustive list of options and more detailed explanations of the
>>>> # device lines is also present in the ../../conf/NOTES and NOTES files.
>>>> # If you are in doubt as to the purpose or necessity of a line, check first
>>>> # in NOTES.
>>>> #
>>>> # $FreeBSD: stable/10/sys/mips/conf/OCTEON1 253845 2013-07-31 17:21:18Z
>>>> obrien $
>>>>
>>>> ident		OCTEON1
>>>>
>>>> makeoptions	ARCH_FLAGS="-march=octeon -mabi=64"
>>>> makeoptions	LDSCRIPT_NAME=ldscript.mips.octeon1
>>>>
>>>> # Don't build any modules yet.
>>>> makeoptions	MODULES_OVERRIDE=""
>>>> makeoptions	KERNLOADADDR=0xffffffff80100000
>>>>
>>>> # We don't need to build a trampolined version of the kernel.
>>>> makeoptions	WITHOUT_KERNEL_TRAMPOLINE=1
>>>>
>>>> include		"../cavium/std.octeon1"
>>>>
>>>> hints		"OCTEON1.hints"		#Default places to look for devices.
>>>>
>>>> makeoptions	DEBUG=-g		#Build kernel with gdb(1) debug symbols
>>>>
>>>> # Board-specific support that cannot be auto-detected at runtime.
>>>> #options 	OCTEON_VENDOR_LANNER		# Support for Lanner boards.
>>>> #options 	OCTEON_VENDOR_RADISYS		# Support for Radisys boards.
>>>> options 	OCTEON_VENDOR_UBIQUITI		# Support for Ubiquiti boards.
>>>> #options	OCTEON_VENDOR_GEFES		# Support for GE LANIC boards
>>>> #options 	OCTEON_BOARD_CAPK_0100ND	# Support for CAPK-0100nd.
>>>>
>>>> # Compile for a specified Octeon model.  If not specified, support for
>>>> # detection at runtime will be used instead, which may give inferior
>>>> # performance.
>>>> #
>>>> # See sys/contrib/octeon-sdk/octeon-model.h for possible values.
>>>> #options 	OCTEON_MODEL=OCTEON_CN58XX_PASS1_1
>>>>
>>>> options 	SCHED_ULE		# ULE scheduler
>>>> options 	PREEMPTION		# Enable kernel thread preemption
>>>> options 	INET			# InterNETworking
>>>> options 	INET6			# IPv6 communications protocols
>>>> options 	SCTP			# Stream Control Transmission Protocol
>>>> options 	FFS			# Berkeley Fast 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 	UFS_GJOURNAL		# Enable gjournal-based UFS journaling
>>>> options 	MD_ROOT			# MD is a potential root device
>>>> options 	NFSCL			# Network Filesystem Client
>>>> options 	NFSD			# Network Filesystem Server
>>>> options 	NFSLOCKD		# Network Lock Manager
>>>> options 	NFS_ROOT		# NFS usable as /, requires NFSCL
>>>> options 	MSDOSFS			# MSDOS Filesystem
>>>> #options 	CD9660			# ISO 9660 Filesystem
>>>> options 	PROCFS			# Process filesystem (requires PSEUDOFS)
>>>> options 	PSEUDOFS		# Pseudo-filesystem framework
>>>> options 	GEOM_PART_GPT		# GUID Partition Tables.
>>>> options 	GEOM_LABEL		# Provides labelization
>>>> #options 	COMPAT_FREEBSD32	# Compatible with o32 binaries
>>>> options 	SCSI_DELAY=5000		# Delay (in ms) before probing SCSI
>>>> options 	KTRACE			# ktrace(1) support
>>>> options 	STACK			# stack(9) support
>>>> options 	SYSVSHM			# SYSV-style shared memory
>>>> options 	SYSVMSG			# SYSV-style message queues
>>>> options 	SYSVSEM			# SYSV-style semaphores
>>>> options 	_KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
>>>> options 	PRINTF_BUFR_SIZE=128	# Prevent printf output being interspersed.
>>>> options 	HWPMC_HOOKS		# Necessary kernel hooks for hwpmc(4)
>>>> options 	AUDIT			# Security event auditing
>>>> options 	MAC			# TrustedBSD MAC Framework
>>>> #options 	KDTRACE_FRAME		# Ensure frames are compiled in
>>>> #options 	KDTRACE_HOOKS		# Kernel DTrace hooks
>>>> options 	INCLUDE_CONFIG_FILE     # Include this file in kernel
>>>> options 	NO_SWAPPING		# Disable support for paging
>>>>
>>>> # Debugging for use in -current
>>>> #options 	KDB			# Enable kernel debugger support.
>>>> #options 	DDB			# Support DDB.
>>>> #options 	GDB			# Support remote GDB.
>>>> #options 	DEADLKRES		# Enable the deadlock resolver
>>>> #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 	MALLOC_DEBUG_MAXZONES=8	# Separate malloc(9) zones
>>>>
>>>> # Make an SMP-capable kernel by default
>>>> options 	SMP			# Symmetric MultiProcessor Kernel
>>>>
>>>> # Bus support.
>>>> device		pci
>>>>
>>>> # ATA controllers
>>>> device		ahci		# AHCI-compatible SATA controllers
>>>> device		ata		# Legacy ATA/SATA controllers
>>>> options 	ATA_STATIC_ID	# Static device numbering
>>>> device		mvs		# Marvell 88SX50XX/88SX60XX/88SX70XX/SoC SATA
>>>> device		siis		# SiliconImage SiI3124/SiI3132/SiI3531 SATA
>>>>
>>>> # On-board Compact Flash driver.
>>>> device		cf
>>>> options 	ROOTDEVNAME=\"ufs:cf0s2a\"	# Default root filesystem.
>>>>
>>>> # SCSI Controllers
>>>> #device		ahc		# AHA2940 and onboard AIC7xxx devices
>>>> #options 	AHC_REG_PRETTY_PRINT	# Print register bitfields in debug
>>>> 					# output.  Adds ~128k to driver.
>>>> #device		ahd		# AHA39320/29320 and onboard AIC79xx devices
>>>> #options 	AHD_REG_PRETTY_PRINT	# Print register bitfields in debug
>>>> 					# output.  Adds ~215k to driver.
>>>> #device		esp		# AMD Am53C974 (Tekram DC-390(T))
>>>> #device		hptiop		# Highpoint RocketRaid 3xxx series
>>>> #device		isp		# Qlogic family
>>>> #device		ispfw		# Firmware for QLogic HBAs- normally iibusa module
>>>> #device		mpt		# LSI-Logic MPT-Fusion
>>>> #device		mps		# LSI-Logic MPT-Fusion 2
>>>> #device		ncr		# NCR/Symbios Logic
>>>> #device		trm		# Tekram DC395U/UW/F DC315U adapters
>>>>
>>>> #device		adv		# Advansys SCSI adapters
>>>> #device		adw		# Advansys wide SCSI adapters
>>>> #device		aic		# Adaptec 15[012]x SCSI adapters, AIC-6[23]60.
>>>> #device		bt		# Buslogic/Mylex MultiMaster SCSI adapters
>>>>
>>>> # ATA/SCSI peripherals
>>>> device		scbus		# SCSI bus (required for ATA/SCSI)
>>>> #device		ch		# SCSI media changers
>>>> device		da		# Direct Access (disks)
>>>> device		sa		# Sequential Access (tape etc)
>>>> #device		cd		# CD
>>>> device		pass		# Passthrough device (direct ATA/SCSI access)
>>>> #device		ses		# Enclosure Services (SES and SAF-TE)
>>>>
>>>> # RAID controllers interfaced to the SCSI subsystem
>>>> #device		amr		# AMI MegaRAID
>>>> #XXX it is not 64-bit clean, -scottl
>>>> #device		asr		# DPT SmartRAID V, VI and Adaptec SCSI RAID
>>>> #device		ciss		# Compaq Smart RAID 5*
>>>> #device		dpt		# DPT Smartcache III, IV - See NOTES for options
>>>> #device		iir		# Intel Integrated RAID
>>>> #device		ips		# IBM (Adaptec) ServeRAID
>>>> #device		mly		# Mylex AcceleRAID/eXtremeRAID
>>>>
>>>> # RAID controllers
>>>> #device		aac		# Adaptec FSA RAID
>>>> #device		aacp		# SCSI passthrough for aac (requires CAM)
>>>> #device		ida		# Compaq Smart RAID
>>>> #device		mfi		# LSI MegaRAID SAS
>>>> #device		mlx		# Mylex DAC960 family
>>>> #XXX pointer/int warnings
>>>> #device		pst		# Promise Supertrak SX6000
>>>> #device		twe		# 3ware ATA RAID
>>>>
>>>> # PCCARD (PCMCIA) support
>>>> # PCMCIA and cardbus bridge support
>>>> device		cbb		# cardbus (yenta) bridge
>>>> device		pccard		# PC Card (16-bit) bus
>>>> device		cardbus		# CardBus (32-bit) bus
>>>>
>>>> # Serial (COM) ports
>>>> device		uart		# Generic UART driver
>>>>
>>>> # If you've got a "dumb" serial or parallel PCI card that is
>>>> # supported by the puc(4) glue driver, uncomment the following
>>>> # line to enable it (connects to sio, uart and/or ppc drivers):
>>>> #device		puc
>>>>
>>>> # On-board Cavium Octeon Ethernet.
>>>> # NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!
>>>> device		octe
>>>>
>>>> # Cavium Octeon management Ethernet.
>>>> device		octm
>>>>
>>>> # Switch PHY support for the octe driver.  These currently present a
>>>> VLAN per
>>>> # physical port, but may eventually provide support for DSA or similar
>>>> instead.
>>>> #device		mv88e61xxphy	# Marvell 88E61XX
>>>>
>>>> # PCI Ethernet NICs.
>>>> #device		de		# DEC/Intel DC21x4x (``Tulip'')
>>>> #device		em		# Intel PRO/1000 Gigabit Ethernet Family
>>>> #device		igb		# Intel PRO/1000 PCIE Server Gigabit Family
>>>> #device		ixgbe		# Intel PRO/10GbE PCIE Ethernet Family
>>>> #device		le		# AMD Am7900 LANCE and Am79C9xx PCnet
>>>> #device		ti		# Alteon Networks Tigon I/II gigabit Ethernet
>>>> #device		txp		# 3Com 3cR990 (``Typhoon'')
>>>> #device		vx		# 3Com 3c590, 3c595 (``Vortex'')
>>>>
>>>> # PCI Ethernet NICs that use the common MII bus controller code.
>>>> # NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!
>>>> device		miibus		# MII bus support
>>>> #device		ae		# Attansic/Atheros L2 FastEthernet
>>>> #device		age		# Attansic/Atheros L1 Gigabit Ethernet
>>>> #device		alc		# Atheros AR8131/AR8132 Ethernet
>>>> #device		ale		# Atheros AR8121/AR8113/AR8114 Ethernet
>>>> #device		bce		# Broadcom BCM5706/BCM5708 Gigabit Ethernet
>>>> #device		bfe		# Broadcom BCM440x 10/100 Ethernet
>>>> #device		bge		# Broadcom BCM570xx Gigabit Ethernet
>>>> #device		dc		# DEC/Intel 21143 and various workalikes
>>>> #device		et		# Agere ET1310 10/100/Gigabit Ethernet
>>>> #device		fxp		# Intel EtherExpress PRO/100B (82557, 82558)
>>>> #device		jme		# JMicron JMC250 Gigabit/JMC260 Fast Ethernet
>>>> #device		lge		# Level 1 LXT1001 gigabit Ethernet
>>>> #device		msk		# Marvell/SysKonnect Yukon II Gigabit Ethernet
>>>> #device		nge		# NatSemi DP83820 gigabit Ethernet
>>>> #device		nve		# nVidia nForce MCP on-board Ethernet Networking
>>>> #device		pcn		# AMD Am79C97x PCI 10/100 (precedence over 'le')
>>>> #device		re		# RealTek 8139C+/8169/8169S/8110S
>>>> #device		rl		# RealTek 8129/8139
>>>> #device		sf		# Adaptec AIC-6915 (``Starfire'')
>>>> #device		sge		# Silicon Integrated Systems SiS190/191
>>>> #device		sis		# Silicon Integrated Systems SiS 900/SiS 7016
>>>> #device		sk		# SysKonnect SK-984x & SK-982x gigabit Ethernet
>>>> #device		ste		# Sundance ST201 (D-Link DFE-550TX)
>>>> #device		stge		# Sundance/Tamarack TC9021 gigabit Ethernet
>>>> #device		tl		# Texas Instruments ThunderLAN
>>>> #device		tx		# SMC EtherPower II (83c170 ``EPIC'')
>>>> #device		vge		# VIA VT612x gigabit Ethernet
>>>> #device		vr		# VIA Rhine, Rhine II
>>>> #device		wb		# Winbond W89C840F
>>>> #device		xl		# 3Com 3c90x (``Boomerang'', ``Cyclone'')
>>>>
>>>> # Wireless NIC cards
>>>> #device		wlan		# 802.11 support
>>>> #options 	IEEE80211_DEBUG	# enable debug msgs
>>>> #options 	IEEE80211_AMPDU_AGE # age frames in AMPDU reorder q's
>>>> #options 	IEEE80211_SUPPORT_MESH	# enable 802.11s draft support
>>>> #device		wlan_wep	# 802.11 WEP support
>>>> #device		wlan_ccmp	# 802.11 CCMP support
>>>> #device		wlan_tkip	# 802.11 TKIP support
>>>> #device		wlan_amrr	# AMRR transmit rate control algorithm
>>>> #device		an		# Aironet 4500/4800 802.11 wireless NICs.
>>>> #device		ath		# Atheros NIC's
>>>> #device		ath_pci		# Atheros pci/cardbus glue
>>>> #device		ath_hal		# pci/cardbus chip support
>>>> #options 	AH_SUPPORT_AR5416	# enable AR5416 tx/rx descriptors
>>>> #device		ath_rate_sample	# SampleRate tx rate control for ath
>>>> #device		ral		# Ralink Technology RT2500 wireless NICs.
>>>> #device		wi		# WaveLAN/Intersil/Symbol 802.11 wireless NICs.
>>>>
>>>> # Pseudo devices.
>>>> device		loop		# Network loopback
>>>> device		random		# Entropy device
>>>> device		ether		# Ethernet support
>>>> device		vlan		# 802.1Q VLAN support
>>>> device		tun		# Packet tunnel.
>>>> device		md		# Memory "disks"
>>>> device		gif		# IPv6 and IPv4 tunneling
>>>> device		faith		# IPv6-to-IPv4 relaying (translation)
>>>> device		firmware	# firmware assist module
>>>>
>>>> # The `bpf' device enables the Berkeley Packet Filter.
>>>> # Be aware of the administrative consequences of enabling this!
>>>> # Note that 'bpf' is required for DHCP.
>>>> device		bpf		# Berkeley packet filter
>>>>
>>>> # Hardware watchdog support.
>>>> #device		octeon_wdog	# Octeon hardware watchdog
>>>>
>>>> # USB support
>>>> options 	USB_DEBUG	# enable debug msgs
>>>> device		octusb		# Cavium Octeon on-board USB interface (USB 2.0)
>>>> device		uhci		# UHCI PCI->USB interface
>>>> device		ohci		# OHCI PCI->USB interface
>>>> device		ehci		# EHCI PCI->USB interface (USB 2.0)
>>>> device		usb		# USB Bus (required)
>>>> #device		udbp		# USB Double Bulk Pipe devices
>>>> device		uhid		# "Human Interface Devices"
>>>> #device		ulpt		# Printer
>>>> device		umass		# Disks/Mass storage - Requires scbus and da
>>>> #device		ums		# Mouse
>>>> #device		urio		# Diamond Rio 500 MP3 player
>>>> # USB Serial devices
>>>> #device		u3g		# USB-based 3G modems (Option, Huawei, Sierra)
>>>> #device		uark		# Technologies ARK3116 based serial adapters
>>>> #device		ubsa		# Belkin F5U103 and compatible serial adapters
>>>> #device		uftdi		# For FTDI usb serial adapters
>>>> #device		uipaq		# Some WinCE based devices
>>>> #device		uplcom		# Prolific PL-2303 serial adapters
>>>> #device		uslcom		# SI Labs CP2101/CP2102 serial adapters
>>>> #device		uvisor		# Visor and Palm devices
>>>> #device		uvscom		# USB serial support for DDI pocket's PHS
>>>> # USB Ethernet, requires miibus
>>>> #device		aue		# ADMtek USB Ethernet
>>>> #device		axe		# ASIX Electronics USB Ethernet
>>>> #device		cdce		# Generic USB over Ethernet
>>>> #device		cue		# CATC USB Ethernet
>>>> #device		kue		# Kawasaki LSI USB Ethernet
>>>> #device		rue		# RealTek RTL8150 USB Ethernet
>>>> #device		udav		# Davicom DM9601E USB
>>>> # USB Wireless
>>>> #device		rum		# Ralink Technology RT2501USB wireless NICs
>>>> #device		uath		# Atheros AR5523 wireless NICs
>>>> #device		ural		# Ralink Technology RT2500USB wireless NICs
>>>> #device		zyd		# ZyDAS zd1211/zd1211b wireless NICs
>>>>
>>>> # crypto subsystem
>>>> device		crypto		# core crypto support
>>>> device		cryptodev	# /dev/crypto for access to h/w
>>>> device		cryptocteon	# Octeon coprocessor 2 crypto offload
>>>>
>>>> # GPIO support
>>>> #device		gpio
>>>>
>>>> # PMC support
>>>> #device		hwpmc
>>>>
>>>>
>>>> -- 
>>>> Twoje radio
>>>> _______________________________________________
>>>> freebsd-mips@freebsd.org mailing list
>>>> http://lists.freebsd.org/mailman/listinfo/freebsd-mips
>>>> To unsubscribe, send any mail to "freebsd-mips-unsubscribe@freebsd.org"
>>>
>>>
> 
> 


-- 
Twoje radio



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?52BF0172.9080907>