Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 02 Jul 2012 05:40:52 -0400
From:      Richard Yao <ryao@gentoo.org>
To:        "hackers@FreeBSD.org" <hackers@FreeBSD.org>
Subject:   How does bootinfo64.c find read_eflags() and write_eflags() on amd64?
Message-ID:  <4FF16CA4.2040700@gentoo.org>

next in thread | raw e-mail | index | archive | help
This is an OpenPGP/MIME signed message (RFC 2440 and 3156)
--------------enig6F5A96D2385B07D0A9E0744D
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

/usr/src/sys/boot/i386/libi386/bootinfo64.c uses read_eflags() and
write_eflags(), which live as inline functions in
/usr/src/sys/i386/include/cpufunc.h.
/usr/src/sys/boot/i386/libi386/bootinfo64.c also includes
/usr/include/machine/cpufunc.h, but that is
/usr/src/sys/amd64/include/cpufunc.h on amd64, which does not contain
either of them.

I do not understand how FreeBSD's build system finds these. I am trying
to build /usr/src/sys/boot on Gentoo Linux, but Gentoo Linux does not
understand this either:

# env CFLAGS=3D"-march=3Dcore2 -mtune=3Dcore2 -O2 -pipe -O2
-fno-strict-aliasing -D__FreeBSD__=3D9 -D__FBSDID\(x\)=3D -nostdinc
-I/var/tmp/portage/sys-boot/boot0-9.0/work/include_proper"
MACHINE_CPUARCH=3Damd64 MACHINE_ARCH=3Damd64
MAKESYSPATH=3D/usr/share/mk/freebsd pmake
Warning: Object directory not changed from original
/var/tmp/portage/sys-boot/boot0-9.0/work/sys/boot/i386/loader
cc -march=3Dcore2 -mtune=3Dcore2 -O2 -pipe -O2 -fno-strict-aliasing
-D__FreeBSD__=3D9 -D__FBSDID\(x\)=3D -nostdinc
-I/var/tmp/portage/sys-boot/boot0-9.0/work/include_proper
-DLOADER_NFS_SUPPORT -DBOOT_FORTH
-I/var/tmp/portage/sys-boot/boot0-9.0/work/sys/boot/i386/loader/../../fic=
l
-I/var/tmp/portage/sys-boot/boot0-9.0/work/sys/boot/i386/loader/../../fic=
l/i386
-DLOADER_GZIP_SUPPORT -DLOADER_GPT_SUPPORT
-I/var/tmp/portage/sys-boot/boot0-9.0/work/sys/boot/i386/loader/../../com=
mon
-I. -Wall
-I/var/tmp/portage/sys-boot/boot0-9.0/work/sys/boot/i386/loader/..
-I/var/tmp/portage/sys-boot/boot0-9.0/work/sys/boot/i386/loader/../btx/li=
b
-ffreestanding -mpreferred-stack-boundary=3D2  -mno-mmx -mno-3dnow
-mno-sse -mno-sse2 -mno-sse3 -msoft-float -m32 -march=3Di386 -std=3Dgnu99=

-static -Wl,-Ttext,0x0 -nostdlib -Wl,-m,elf_i386 -o loader.sym
/var/tmp/portage/sys-boot/boot0-9.0/work/sys/boot/i386/loader/../btx/lib/=
crt0.o
main.o conf.o vers.o boot.o commands.o console.o devopen.o disk.o
interp.o interp_backslash.o interp_parse.o ls.o misc.o module.o panic.o
load_elf32.o load_elf32_obj.o reloc_elf32.o load_elf64.o
load_elf64_obj.o reloc_elf64.o bcache.o isapnp.o pnp.o interp_forth.o
/var/tmp/portage/sys-boot/boot0-9.0/work/sys/boot/i386/loader/../../ficl/=
libficl.a

/var/tmp/portage/sys-boot/boot0-9.0/work/sys/boot/i386/loader/../libi386/=
libi386.a
/usr/lib/libstand.a
/var/tmp/portage/sys-boot/boot0-9.0/work/sys/boot/i386/loader/../libi386/=
libi386.a(bootinfo64.o):
In function `bi_load64':
bootinfo64.c:(.text+0x45a): undefined reference to `read_eflags'
bootinfo64.c:(.text+0x469): undefined reference to `write_eflags'
bootinfo64.c:(.text+0x46e): undefined reference to `read_eflags'
collect2: ld returned 1 exit status
*** Error code 1

Stop.
pmake: stopped in
/var/tmp/portage/sys-boot/boot0-9.0/work/sys/boot/i386/loader

How does bootinfo64.c obtain these symbols on FreeBSD?


--------------enig6F5A96D2385B07D0A9E0744D
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.19 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQIcBAEBAgAGBQJP8WynAAoJECDuEZm+6ExkCcMP/0uZ5mr5JQV29cf0PYsDcf3j
uLjfgeeKNNlGQnc+N+wmKtuWXZuoqAY6HkXtk4dZcY3FsIynkbA7WE7edWedGcUY
mZ8BMN3rcJYx6FJSTnp4tz+X9to4xrchomiRA/7evO306myAmRz0eM629ozX6cMY
s7q1soM3q01BZDRKUfOU6DT/sg6O3xfaQtVhy6jUpjSqaq1kFcqbVwi2mq5N6GhD
fn9V50r0Kfqje5bLTEiaReBPUt2uxMoUBv5TI4hp23J4FfWuuJuCbLzKrVv17wVq
GyKgU8wHkuWnBnUqj0di44ZsnQeS7tetzFHM1xBpZ/ymPhQ62fvfJAMlenlhthX0
yhq4ILf7x0TXJuH9avWEZXMnvmV+J/yXfZyJ6nNEBreWsVBscBbOOqLr1gnVEDTT
IBrI/2JjqsTA86AQoZ7g2WCF3k2ZqFJCZVcgpCGtzTD+rQhXk6mDKtHl3JWwndNH
gurUZtdo1A02pZB7FGQJ3x9l2KzeP8dkvpxK9RHCmemzKCTSPRkLWT02l5v8EV8B
6El5UpGyn3PUa6YJDhYqqwkPeYDmD2XTAQAF+tRjKEzaRJOYdmc2IL16uRJtrn88
SiP3+V2CK4aAQWog+5x9+NO+Tz+RJU7fbMot7QAR9ax8MHsPVvwNpoM9Y3iqcBK/
Y1B2pQpdDcbjARJHJIKO
=kpkQ
-----END PGP SIGNATURE-----

--------------enig6F5A96D2385B07D0A9E0744D--



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