kernel: locore.s doesn't assemble (fillkpt, $PAGE_SHIFT,
$PTESHIFT)
Clemens Fischer
ino-qc at spotteswoode.de.eu.org
Sat Aug 23 06:42:15 PDT 2003
* Luoqi Chen:
>> since august 8th, 2003 the kernel on my i386 pentiumIII won't
>> compile. the problem arises in locore.s with the definition of the
>> constants $PAGE_SHIFT and $PTESHIFT used in `shr' and `shl'
>> instructions within the macros `fillkpt' and `fillkptphys'.
>>
> Did you do a make depend beforehand? The assym.s file is generated
> during the make depend phase.
yes, i go by the book. but while tracking RELENG_4 i use "make
buildworld && make buildkernel KERNCONF=n1 && make installkernel
KERNCONF=n1", just as outlined in usr/src/Makefile.
i'll check assym.s right after "make depend", that's a good idea!
/sys/compile/n1
1 p2 # cc -c -O -Wall -Wredundant-decls -Wnested-externs
-Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Winline
-Wcast-qual -fformat-extensions -ansi -nostdinc -I-
-I. -I../.. -I../../../include -I../../contrib/dev/acpica
-I../../contrib/ipfilter -D_KERNEL -include opt_global.h
-mpreferred-stack-boundary=2 ../../i386/i386/genassym.c
0 p2 # lt|tail
1334981 -rw-r--r-- 1 root wheel - 0 Aug 23 14:57 assym.s
1334281 -rw-r--r-- 1 root wheel - 14202 Aug 23 14:59 genassym.o
1334458 drwxr-xr-x 2 root wheel - 10752 Aug 23 14:59 ./
0 p2 # sh ../../kern/genassym.sh genassym.o > assym.s
0 p2 # lt|tail
1334281 -rw-r--r-- 1 root wheel - 14202 Aug 23 14:59 genassym.o
1334458 drwxr-xr-x 2 root wheel - 10752 Aug 23 14:59 ./
1334981 -rw-r--r-- 1 root wheel - 0 Aug 23 14:59 assym.s
but i found something very interesting:
basically genassym.sh is a boune-shell script doing "nm <object-file>
| awk 'awk-script'". genassym.o is that object file, and it sure
contains all the symbols needed. so i ran this line manually, and the
result was correct, all the symbols needed were either on stdout or in
assym.s!
my question is this: why does sys/kern/genassym.sh have this funny
redirection (`3>/dev/stdout >&3 3>&-') at the end? why not only write
`> "$outfile"'? i tried this version, and it works perfectly fine.
the original line highly depends on when the shell does redirection.
i don't understand why fd-3 is used at all, why it is closed,
redirected from stdout and redirected to the file which can be
specified with the `-o' option to genassym.sh. the simple version
would do this equaly well, without complications. i have to admit,
though, that i don't understand why nobody else is experiencing this
problem.
i have a build running currently, but with creating assym.s manually
as a workaround i think i'll be able to install world and kernel fine.
clemens
More information about the freebsd-stable
mailing list