Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 27 Oct 2010 10:08:17 +0200
From:      Pawel Jakub Dawidek <pjd@FreeBSD.org>
To:        Jeremy Chadwick <freebsd@jdc.parodius.com>
Cc:        freebsd-stable@freebsd.org, freebsd-arch@freebsd.org
Subject:   Re: Can't build boot blocks after new GPT attributes added
Message-ID:  <20101027080817.GC1848@garage.freebsd.pl>
In-Reply-To: <20101027074401.GA18014@icarus.home.lan>
References:  <20101027074401.GA18014@icarus.home.lan>

next in thread | previous in thread | raw e-mail | index | archive | help

--ctP54qlpMx3WjD+/
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Wed, Oct 27, 2010 at 12:44:02AM -0700, Jeremy Chadwick wrote:
> The below commit has broken the ability to build system boot blocks
> (including pxeldr) the "historic way"[1]:
>=20
> http://freshbsd.org/2010/10/17/20/10/00
>=20
> The breakage on RELENG_8 (dated as of a few minutes ago):
>=20
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> # rm -fr /usr/obj/*
> # cd /sys/boot
> # make clean
> [...]
> # make
> [...]
> cc -DBOOTPROG=3D\"gptboot\"  -Os  -fno-guess-branch-probability  -fomit-f=
rame-pointer  -fno-unit-at-a-time  -mno-align-long-strings  -mrtd  -mno-mmx=
 -mno-3dnow -mno-sse -mno-sse2 -mno-sse3  -DGPT  -DUFS1_AND_UFS2  -DSIOPRT=
=3D0x3f8  -DSIOFMT=3D0x3  -DSIOSPD=3D9600  -I/usr/src/sys/boot/i386/gptboot=
/../../common  -I/usr/src/sys/boot/i386/gptboot/../common  -I/usr/src/sys/b=
oot/i386/gptboot/../btx/lib -I.  -I/usr/src/sys/boot/i386/gptboot/../boot2 =
 -Wall -Waggregate-return -Wbad-function-cast -Wcast-align  -Wmissing-decla=
rations -Wmissing-prototypes -Wnested-externs  -Wpointer-arith -Wshadow -Ws=
trict-prototypes -Wwrite-strings  -Winline --param max-inline-insns-single=
=3D100 -ffreestanding -mpreferred-stack-boundary=3D2  -mno-mmx -mno-3dnow -=
mno-sse -mno-sse2 -mno-sse3 -m32 -march=3Di386 -std=3Dgnu99   -c /usr/src/s=
ys/boot/i386/gptboot/../../common/gpt.c
> /usr/src/sys/boot/i386/gptboot/../../common/gpt.c: In function 'gptfind':
> /usr/src/sys/boot/i386/gptboot/../../common/gpt.c:128: error: 'GPT_ENT_AT=
TR_BOOTME' undeclared (first use in this function)
> /usr/src/sys/boot/i386/gptboot/../../common/gpt.c:128: error: (Each undec=
lared identifier is reported only once
> /usr/src/sys/boot/i386/gptboot/../../common/gpt.c:128: error: for each fu=
nction it appears in.)
> /usr/src/sys/boot/i386/gptboot/../../common/gpt.c:130: error: 'GPT_ENT_AT=
TR_BOOTONCE' undeclared (first use in this function)
> /usr/src/sys/boot/i386/gptboot/../../common/gpt.c: In function 'gptbootfa=
iled':
> /usr/src/sys/boot/i386/gptboot/../../common/gpt.c:217: error: 'GPT_ENT_AT=
TR_BOOTONCE' undeclared (first use in this function)
> /usr/src/sys/boot/i386/gptboot/../../common/gpt.c:222: error: 'GPT_ENT_AT=
TR_BOOTFAILED' undeclared (first use in this function)
> /usr/src/sys/boot/i386/gptboot/../../common/gpt.c: In function 'gptbootco=
nv':
> /usr/src/sys/boot/i386/gptboot/../../common/gpt.c:249: error: 'GPT_ENT_AT=
TR_BOOTME' undeclared (first use in this function)
> /usr/src/sys/boot/i386/gptboot/../../common/gpt.c:250: error: 'GPT_ENT_AT=
TR_BOOTONCE' undeclared (first use in this function)
> /usr/src/sys/boot/i386/gptboot/../../common/gpt.c:251: error: 'GPT_ENT_AT=
TR_BOOTFAILED' undeclared (first use in this function)
> *** Error code 1
>=20
> Stop in /usr/src/sys/boot/i386/gptboot.
> *** Error code 1
>=20
> Stop in /usr/src/sys/boot/i386.
> *** Error code 1
>=20
> Stop in /usr/src/sys/boot.
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
>=20
> Please advise.  If there is a new/correct method, then I'd like to know
> what it is, in addition to the Handbook needing to be updated.
>=20
> [1]: http://www.freebsd.org/doc/handbook/serialconsole-setup.html
>      (See Section 26.6.5.2)

Well, your problem is that gptboot.c is including gpt.h not from your
source tree, but from /usr/include/sys/, which has an old version of
this header file. This can be easly fixed by extending CFLAGS in one of
the Makefiles (which is already done in HEAD), but I'm afraid this
procedure is incorrect (and never was correct). Apart from including
wrong files it also links to wrong libraries, etc.

The proper way is to:

	# cd /usr/src
	# make buildenv
	# cd sys/boot
	# make clean && make && make install

--=20
Pawel Jakub Dawidek                       http://www.wheelsystems.com
pjd@FreeBSD.org                           http://www.FreeBSD.org
FreeBSD committer                         Am I Evil? Yes, I Am!

--ctP54qlpMx3WjD+/
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.14 (FreeBSD)

iEYEARECAAYFAkzH3fAACgkQForvXbEpPzTRwACghgKgz6hNhG7JEBj98vZxoSTR
xsUAnj5j+suzPxx6bP2kgYKD6KFPbN9X
=OtoJ
-----END PGP SIGNATURE-----

--ctP54qlpMx3WjD+/--



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