Getting ready for 0.5.1
This commit is contained in:
parent
6b874486ce
commit
553fec6022
21 changed files with 379 additions and 208 deletions
57
ChangeLog
57
ChangeLog
|
@ -1,3 +1,60 @@
|
||||||
|
1999-02-21 Gordon Matzigkeit <gord@trick.fig.org>
|
||||||
|
|
||||||
|
* debian: Add to the distribution, since we maintain the GRUB
|
||||||
|
Debian package ourselves.
|
||||||
|
|
||||||
|
* grub/asmstub.c: New file to implement stubbed assembly functions
|
||||||
|
under Unix.
|
||||||
|
|
||||||
|
* stage1/Makefile: Delete spurious dependencies on Makefile.
|
||||||
|
* stage2/Makefile: Likewise.
|
||||||
|
* stage2_debug/Makefile: Likewise.
|
||||||
|
* grub/Makefile: Likewise.
|
||||||
|
|
||||||
|
* shared_src/fsys_ext2fs.c (ext2fs_dir): Follow symbolic links
|
||||||
|
rather than giving an error.
|
||||||
|
|
||||||
|
* shared_src/common.c (err_list): Use labeled elements to
|
||||||
|
associate messages with error codes.
|
||||||
|
* shared_src/shared.h: Make error codes into an enumerated type.
|
||||||
|
|
||||||
|
* shared_src/common.c (err_list): Add ERR_SYMLINK_LOOP.
|
||||||
|
* shared_src/shared.h: Likewise.
|
||||||
|
|
||||||
|
* shared_src/char_io.c (bcopy): Don't make any assumptions about
|
||||||
|
the length of an unsigned long.
|
||||||
|
|
||||||
|
* grub/Makefile: Treat CFLAGS, CPPFLAGS, LDFLAGS according to
|
||||||
|
GNU standards.
|
||||||
|
* stage2/Makefile: Likewise.
|
||||||
|
* e2fs_stage1_5/Makefile: Likewise.
|
||||||
|
* fat_stage1_5/Makefile: Likewise.
|
||||||
|
* ffs_stage1_5/Makefile: Likewise.
|
||||||
|
|
||||||
|
1999-02-20 Gordon Matzigkeit <gord@trick.fig.org>
|
||||||
|
|
||||||
|
* docs/index.html: Rename to grub.html, so that we don't hide
|
||||||
|
files in this directory from a web browser.
|
||||||
|
|
||||||
|
1999-02-15 Gordon Matzigkeit <gord@trick.fig.org>
|
||||||
|
|
||||||
|
* Makefile.end (PROGS): Add grub.
|
||||||
|
|
||||||
|
* grub/main.c: New file.
|
||||||
|
|
||||||
|
* grub/Makefile: New directory to contain the stage2 Unix program.
|
||||||
|
|
||||||
|
* shared_src/cmdline.c: Use substring.
|
||||||
|
* shared_src/fsys_ext2fs.c: Likewise.
|
||||||
|
* shared_src/fsys_fat.c: Likewise.
|
||||||
|
* shared_src/fsys_ffs.c: Likewise.
|
||||||
|
* shared_src/stage2.c: Likewise.
|
||||||
|
|
||||||
|
* shared_src/shared.h: Delete strcmp, declare substring.
|
||||||
|
|
||||||
|
* shared_src/char_io.c (strcmp): Rename to `substring', because
|
||||||
|
this function doesn't behave the same as libc's strcmp.
|
||||||
|
|
||||||
1999-02-14 Gordon Matzigkeit <gord@trick.fig.org>
|
1999-02-14 Gordon Matzigkeit <gord@trick.fig.org>
|
||||||
|
|
||||||
* shared_src/shared.h: (addr32, data32): Delete definitions.
|
* shared_src/shared.h: (addr32, data32): Delete definitions.
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
# part created by configure.
|
# part created by configure.
|
||||||
#
|
#
|
||||||
|
|
||||||
PROGS= stage1 e2fs_stage1_5 fat_stage1_5 ffs_stage1_5 \
|
PROGS= grub stage1 e2fs_stage1_5 fat_stage1_5 ffs_stage1_5 \
|
||||||
stage2 stage2_debug
|
stage2 stage2_debug
|
||||||
|
|
||||||
all:
|
all:
|
||||||
|
|
3
configure
vendored
3
configure
vendored
|
@ -391,7 +391,8 @@ for tool_var in $tool_vars ; do
|
||||||
done
|
done
|
||||||
|
|
||||||
cat << EOF >> Makefile
|
cat << EOF >> Makefile
|
||||||
export SHARED_FLAGS = -pipe -fno-builtin -nostdinc -O2 -DEXT_C\(x\)="$munge_func1"
|
export CFLAGS = -O2
|
||||||
|
export SHARED_FLAGS = -pipe -fno-builtin -nostdinc -DEXT_C\(x\)="$munge_func1"
|
||||||
|
|
||||||
# (END OF AUTOMATICALLY GENERATED PORTION)
|
# (END OF AUTOMATICALLY GENERATED PORTION)
|
||||||
#
|
#
|
||||||
|
|
6
debian/changelog
vendored
6
debian/changelog
vendored
|
@ -1,3 +1,9 @@
|
||||||
|
grub (0.5-3) unstable; urgency=low
|
||||||
|
|
||||||
|
* GRUB now understands symbolic links (fixes: #17306).
|
||||||
|
|
||||||
|
-- Gordon Matzigkeit <gord@debian.org> Sun, 21 Feb 1999 05:13:25 -0600
|
||||||
|
|
||||||
grub (0.5-2) unstable; urgency=low
|
grub (0.5-2) unstable; urgency=low
|
||||||
|
|
||||||
* Assembly source cleanups.
|
* Assembly source cleanups.
|
||||||
|
|
10
debian/control
vendored
10
debian/control
vendored
|
@ -8,8 +8,8 @@ Package: grub
|
||||||
Architecture: i386 hurd-i386
|
Architecture: i386 hurd-i386
|
||||||
Depends: ${shlibs:Depends}
|
Depends: ${shlibs:Depends}
|
||||||
Description: GRand Unified Bootloader
|
Description: GRand Unified Bootloader
|
||||||
GRUB is a GPLed bootloader intended to unify bootloading across x86
|
GRUB is a GPLed bootloader intended to unify bootloading across x86
|
||||||
operating systems. In addition to loading Linux and FreeBSD, it
|
operating systems. In addition to loading Linux and FreeBSD, it
|
||||||
implements the Multiboot standard, which allows for flexible loading
|
implements the Multiboot standard, which allows for flexible loading
|
||||||
of multiple boot images (needed for modular kernels such as the GNU
|
of multiple boot images (needed for modular kernels such as the GNU
|
||||||
Hurd).
|
Hurd).
|
||||||
|
|
4
debian/rules
vendored
4
debian/rules
vendored
|
@ -41,8 +41,8 @@ binary-arch: checkroot build
|
||||||
cp -r docs debian/tmp/usr/doc/grub
|
cp -r docs debian/tmp/usr/doc/grub
|
||||||
rm -f debian/tmp/usr/doc/grub/docs/COPYING
|
rm -f debian/tmp/usr/doc/grub/docs/COPYING
|
||||||
|
|
||||||
$(INSTALL_DATA) ChangeLog debian/tmp/usr/doc/grub/
|
$(INSTALL_DATA) ChangeLog debian/tmp/usr/doc/grub/changelog
|
||||||
gzip -f9 debian/tmp/usr/doc/grub/ChangeLog
|
gzip -f9 debian/tmp/usr/doc/grub/changelog
|
||||||
$(INSTALL_DATA) debian/changelog debian/tmp/usr/doc/grub/changelog.Debian
|
$(INSTALL_DATA) debian/changelog debian/tmp/usr/doc/grub/changelog.Debian
|
||||||
gzip -f9 debian/tmp/usr/doc/grub/changelog.Debian
|
gzip -f9 debian/tmp/usr/doc/grub/changelog.Debian
|
||||||
$(INSTALL_DATA) debian/copyright debian/tmp/usr/doc/grub/
|
$(INSTALL_DATA) debian/copyright debian/tmp/usr/doc/grub/
|
||||||
|
|
|
@ -2,13 +2,15 @@
|
||||||
# GRUB e2fs_stage1_5 makefile
|
# GRUB e2fs_stage1_5 makefile
|
||||||
#
|
#
|
||||||
|
|
||||||
SHARED_FLAGS += -DFSYS_EXT2FS -DNO_DECOMPRESSION -DNO_FANCY_STUFF \
|
COMPILE = $(CC) $(CFLAGS) $(CPPFLAGS) $(SHARED_FLAGS) \
|
||||||
|
-DFSYS_EXT2FS -DNO_DECOMPRESSION -DNO_FANCY_STUFF \
|
||||||
-DNO_BLOCK_FILES -DCONFIG_FILE_ASM=".string \"/boot/grub/stage2\"" \
|
-DNO_BLOCK_FILES -DCONFIG_FILE_ASM=".string \"/boot/grub/stage2\"" \
|
||||||
-I../shared_src
|
-I../shared_src
|
||||||
|
|
||||||
|
# FIXME: is this really true?
|
||||||
# There are problems inheriting flags that work fine with stage1 and stage2
|
# There are problems inheriting flags that work fine with stage1 and stage2
|
||||||
# so... don't use them at all!
|
# so... don't use them at all!
|
||||||
CFLAGS= $(SHARED_FLAGS)
|
#CFLAGS= $(SHARED_FLAGS)
|
||||||
|
|
||||||
# "asm.o" absolutely has to come first in the link line!
|
# "asm.o" absolutely has to come first in the link line!
|
||||||
SHARED_OBJS= asm.o char_io.o common.o disk_io.o stage1_5.o fsys_ext2fs.o
|
SHARED_OBJS= asm.o char_io.o common.o disk_io.o stage1_5.o fsys_ext2fs.o
|
||||||
|
@ -16,24 +18,24 @@ SHARED_OBJS= asm.o char_io.o common.o disk_io.o stage1_5.o fsys_ext2fs.o
|
||||||
all: ../bin/e2fs_stage1_5
|
all: ../bin/e2fs_stage1_5
|
||||||
|
|
||||||
asm.o: ../shared_src/asm.S ../shared_src/shared.h
|
asm.o: ../shared_src/asm.S ../shared_src/shared.h
|
||||||
$(CC) $(CFLAGS) -c ../shared_src/asm.S
|
$(COMPILE) -c ../shared_src/asm.S
|
||||||
|
|
||||||
char_io.o: ../shared_src/char_io.c ../shared_src/shared.h
|
char_io.o: ../shared_src/char_io.c ../shared_src/shared.h
|
||||||
$(CC) $(CFLAGS) -c ../shared_src/char_io.c
|
$(COMPILE) -c ../shared_src/char_io.c
|
||||||
|
|
||||||
common.o: ../shared_src/common.c ../shared_src/shared.h
|
common.o: ../shared_src/common.c ../shared_src/shared.h
|
||||||
$(CC) $(CFLAGS) -c ../shared_src/common.c
|
$(COMPILE) -c ../shared_src/common.c
|
||||||
|
|
||||||
disk_io.o: ../shared_src/disk_io.c ../shared_src/filesys.h \
|
disk_io.o: ../shared_src/disk_io.c ../shared_src/filesys.h \
|
||||||
../shared_src/pc_slice.h ../shared_src/shared.h
|
../shared_src/pc_slice.h ../shared_src/shared.h
|
||||||
$(CC) $(CFLAGS) -c ../shared_src/disk_io.c
|
$(COMPILE) -c ../shared_src/disk_io.c
|
||||||
|
|
||||||
stage1_5.o: ../shared_src/stage1_5.c ../shared_src/shared.h
|
stage1_5.o: ../shared_src/stage1_5.c ../shared_src/shared.h
|
||||||
$(CC) $(CFLAGS) -c ../shared_src/stage1_5.c
|
$(COMPILE) -c ../shared_src/stage1_5.c
|
||||||
|
|
||||||
fsys_ext2fs.o: ../shared_src/fsys_ext2fs.c ../shared_src/filesys.h \
|
fsys_ext2fs.o: ../shared_src/fsys_ext2fs.c ../shared_src/filesys.h \
|
||||||
../shared_src/pc_slice.h ../shared_src/shared.h
|
../shared_src/pc_slice.h ../shared_src/shared.h
|
||||||
$(CC) $(CFLAGS) -c ../shared_src/fsys_ext2fs.c
|
$(COMPILE) -c ../shared_src/fsys_ext2fs.c
|
||||||
|
|
||||||
# "asm.o" absolutely has to come first in the link line!
|
# "asm.o" absolutely has to come first in the link line!
|
||||||
e2fs_stage1_5.exec: $(SHARED_OBJS)
|
e2fs_stage1_5.exec: $(SHARED_OBJS)
|
||||||
|
|
|
@ -2,13 +2,15 @@
|
||||||
# GRUB fat_stage1_5 makefile
|
# GRUB fat_stage1_5 makefile
|
||||||
#
|
#
|
||||||
|
|
||||||
SHARED_FLAGS += -DFSYS_FAT -DNO_DECOMPRESSION -DNO_FANCY_STUFF \
|
COMPILE = $(CC) $(CFLAGS) $(CPPFLAGS) $(SHARED_FLAGS) \
|
||||||
|
-DFSYS_FAT -DNO_DECOMPRESSION -DNO_FANCY_STUFF \
|
||||||
-DCONFIG_FILE_ASM=".string \"/boot/grub/stage2\"" \
|
-DCONFIG_FILE_ASM=".string \"/boot/grub/stage2\"" \
|
||||||
-I../shared_src
|
-I../shared_src
|
||||||
|
|
||||||
|
# FIXME: Is this really true?
|
||||||
# There are problems inheriting flags that work fine with stage1 and stage2
|
# There are problems inheriting flags that work fine with stage1 and stage2
|
||||||
# so... don't use them at all!
|
# so... don't use them at all!
|
||||||
CFLAGS= $(SHARED_FLAGS)
|
#CFLAGS= $(SHARED_FLAGS)
|
||||||
|
|
||||||
# "asm.o" absolutely has to come first in the link line!
|
# "asm.o" absolutely has to come first in the link line!
|
||||||
SHARED_OBJS= asm.o char_io.o common.o disk_io.o stage1_5.o fsys_fat.o
|
SHARED_OBJS= asm.o char_io.o common.o disk_io.o stage1_5.o fsys_fat.o
|
||||||
|
@ -16,24 +18,24 @@ SHARED_OBJS= asm.o char_io.o common.o disk_io.o stage1_5.o fsys_fat.o
|
||||||
all: ../bin/fat_stage1_5
|
all: ../bin/fat_stage1_5
|
||||||
|
|
||||||
asm.o: ../shared_src/asm.S ../shared_src/shared.h
|
asm.o: ../shared_src/asm.S ../shared_src/shared.h
|
||||||
$(CC) $(CFLAGS) -c ../shared_src/asm.S
|
$(COMPILE) -c ../shared_src/asm.S
|
||||||
|
|
||||||
char_io.o: ../shared_src/char_io.c ../shared_src/shared.h
|
char_io.o: ../shared_src/char_io.c ../shared_src/shared.h
|
||||||
$(CC) $(CFLAGS) -c ../shared_src/char_io.c
|
$(COMPILE) -c ../shared_src/char_io.c
|
||||||
|
|
||||||
common.o: ../shared_src/common.c ../shared_src/shared.h
|
common.o: ../shared_src/common.c ../shared_src/shared.h
|
||||||
$(CC) $(CFLAGS) -c ../shared_src/common.c
|
$(COMPILE) -c ../shared_src/common.c
|
||||||
|
|
||||||
disk_io.o: ../shared_src/disk_io.c ../shared_src/filesys.h \
|
disk_io.o: ../shared_src/disk_io.c ../shared_src/filesys.h \
|
||||||
../shared_src/pc_slice.h ../shared_src/shared.h
|
../shared_src/pc_slice.h ../shared_src/shared.h
|
||||||
$(CC) $(CFLAGS) -c ../shared_src/disk_io.c
|
$(COMPILE) -c ../shared_src/disk_io.c
|
||||||
|
|
||||||
stage1_5.o: ../shared_src/stage1_5.c ../shared_src/shared.h
|
stage1_5.o: ../shared_src/stage1_5.c ../shared_src/shared.h
|
||||||
$(CC) $(CFLAGS) -c ../shared_src/stage1_5.c
|
$(COMPILE) -c ../shared_src/stage1_5.c
|
||||||
|
|
||||||
fsys_fat.o: ../shared_src/fsys_fat.c ../shared_src/filesys.h \
|
fsys_fat.o: ../shared_src/fsys_fat.c ../shared_src/filesys.h \
|
||||||
../shared_src/pc_slice.h ../shared_src/shared.h
|
../shared_src/pc_slice.h ../shared_src/shared.h
|
||||||
$(CC) $(CFLAGS) -c ../shared_src/fsys_fat.c
|
$(COMPILE) -c ../shared_src/fsys_fat.c
|
||||||
|
|
||||||
# "asm.o" absolutely has to come first in the link line!
|
# "asm.o" absolutely has to come first in the link line!
|
||||||
fat_stage1_5.exec: $(SHARED_OBJS)
|
fat_stage1_5.exec: $(SHARED_OBJS)
|
||||||
|
|
|
@ -3,8 +3,9 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
IMPORTANT_SIZE_LIMIT = 7168
|
IMPORTANT_SIZE_LIMIT = 7168
|
||||||
CFLAGS= $(SHARED_FLAGS) -DFSYS_FFS -DNO_DECOMPRESSION -DNO_FANCY_STUFF \
|
COMPILE= $(CC) $(CFLAGS) $(CPPFLAGS) $(SHARED_FLAGS) -DFSYS_FFS \
|
||||||
-DNO_BLOCK_FILES -DCONFIG_FILE_ASM=".string \"/boot/grub/stage2\"" \
|
-DNO_DECOMPRESSION -DNO_FANCY_STUFF -DNO_BLOCK_FILES \
|
||||||
|
-DCONFIG_FILE_ASM=".string \"/boot/grub/stage2\"" \
|
||||||
-I../shared_src
|
-I../shared_src
|
||||||
|
|
||||||
# "asm.o" absolutely has to come first in the link line!
|
# "asm.o" absolutely has to come first in the link line!
|
||||||
|
@ -13,27 +14,27 @@ SHARED_OBJS= asm.o char_io.o common.o disk_io.o stage1_5.o fsys_ffs.o
|
||||||
all: ../bin/ffs_stage1_5
|
all: ../bin/ffs_stage1_5
|
||||||
|
|
||||||
asm.o: ../shared_src/asm.S ../shared_src/shared.h
|
asm.o: ../shared_src/asm.S ../shared_src/shared.h
|
||||||
$(CC) $(CFLAGS) -c ../shared_src/asm.S
|
$(COMPILE) -c ../shared_src/asm.S
|
||||||
|
|
||||||
char_io.o: ../shared_src/char_io.c ../shared_src/shared.h
|
char_io.o: ../shared_src/char_io.c ../shared_src/shared.h
|
||||||
$(CC) $(CFLAGS) -c ../shared_src/char_io.c
|
$(COMPILE) -c ../shared_src/char_io.c
|
||||||
|
|
||||||
common.o: ../shared_src/common.c ../shared_src/shared.h
|
common.o: ../shared_src/common.c ../shared_src/shared.h
|
||||||
$(CC) $(CFLAGS) -c ../shared_src/common.c
|
$(COMPILE) -c ../shared_src/common.c
|
||||||
|
|
||||||
disk_io.o: ../shared_src/disk_io.c ../shared_src/filesys.h \
|
disk_io.o: ../shared_src/disk_io.c ../shared_src/filesys.h \
|
||||||
../shared_src/pc_slice.h ../shared_src/shared.h
|
../shared_src/pc_slice.h ../shared_src/shared.h
|
||||||
$(CC) $(CFLAGS) -c ../shared_src/disk_io.c
|
$(COMPILE) -c ../shared_src/disk_io.c
|
||||||
|
|
||||||
stage1_5.o: ../shared_src/stage1_5.c ../shared_src/shared.h
|
stage1_5.o: ../shared_src/stage1_5.c ../shared_src/shared.h
|
||||||
$(CC) $(CFLAGS) -c ../shared_src/stage1_5.c
|
$(COMPILE) -c ../shared_src/stage1_5.c
|
||||||
|
|
||||||
fsys_ffs.o: ../shared_src/fsys_ffs.c ../shared_src/filesys.h \
|
fsys_ffs.o: ../shared_src/fsys_ffs.c ../shared_src/filesys.h \
|
||||||
../shared_src/pc_slice.h ../shared_src/shared.h \
|
../shared_src/pc_slice.h ../shared_src/shared.h \
|
||||||
../shared_src/defs.h ../shared_src/disk_inode.h \
|
../shared_src/defs.h ../shared_src/disk_inode.h \
|
||||||
../shared_src/disk_inode_ffs.h ../shared_src/dir.h \
|
../shared_src/disk_inode_ffs.h ../shared_src/dir.h \
|
||||||
../shared_src/fs.h
|
../shared_src/fs.h
|
||||||
$(CC) $(CFLAGS) -c ../shared_src/fsys_ffs.c
|
$(COMPILE) -c ../shared_src/fsys_ffs.c
|
||||||
|
|
||||||
# "asm.o" absolutely has to come first in the link line!
|
# "asm.o" absolutely has to come first in the link line!
|
||||||
ffs_stage1_5.exec: $(SHARED_OBJS)
|
ffs_stage1_5.exec: $(SHARED_OBJS)
|
||||||
|
|
43
mail
43
mail
|
@ -153,3 +153,46 @@ Comments?
|
||||||
Gordon Matzigkeit <gord@fig.org> //\ I'm a FIG (http://www.fig.org/)
|
Gordon Matzigkeit <gord@fig.org> //\ I'm a FIG (http://www.fig.org/)
|
||||||
Lovers of freedom, unite! \// I use GNU (http://www.gnu.org/)
|
Lovers of freedom, unite! \// I use GNU (http://www.gnu.org/)
|
||||||
[Unfortunately, www.fig.org is broken. Please stay tuned for details.]
|
[Unfortunately, www.fig.org is broken. Please stay tuned for details.]
|
||||||
|
From nobody Sun Feb 21 01:59:03 1999
|
||||||
|
X-From-Line: dunham@cse.msu.edu Sat Feb 20 17:43:34 1999
|
||||||
|
Return-Path: <dunham@cse.msu.edu>
|
||||||
|
Delivered-To: gord@trick.fig.org
|
||||||
|
Received: (qmail 16082 invoked from network); 20 Feb 1999 17:43:34 -0000
|
||||||
|
Received: from sargasso.cse.msu.edu (35.9.20.14)
|
||||||
|
by ip223.net247210.cr.sk.ca with SMTP; 20 Feb 1999 17:43:34 -0000
|
||||||
|
Received: from fatneck.cse.msu.edu (dunham@fatneck.cse.msu.edu [35.9.20.47])
|
||||||
|
by sargasso.cse.msu.edu (8.8.8/8.8.8) with ESMTP id MAA25678
|
||||||
|
for <gord@trick.fig.org>; Sat, 20 Feb 1999 12:43:26 -0500 (EST)
|
||||||
|
Received: (from dunham@localhost)
|
||||||
|
by fatneck.cse.msu.edu (8.9.2/8.9.2/Debian/GNU) id MAA19662;
|
||||||
|
Sat, 20 Feb 1999 12:45:10 -0500 (EST)
|
||||||
|
To: Gordon Matzigkeit <gord@trick.fig.org>
|
||||||
|
Subject: GRUB
|
||||||
|
Mime-Version: 1.0 (generated by tm-edit 7.108)
|
||||||
|
Content-Type: text/plain; charset=US-ASCII
|
||||||
|
From: Steve Dunham <dunham@cse.msu.edu>
|
||||||
|
Date: 20 Feb 1999 12:45:09 -0500
|
||||||
|
In-Reply-To: Gordon Matzigkeit's message of "18 Feb 1999 09:12:49 -0600"
|
||||||
|
Message-ID: <m9bemnl6kbe.fsf_-_@fatneck.cse.msu.edu>
|
||||||
|
X-Mailer: Gnus v5.5/XEmacs 20.4 - "Emerald"
|
||||||
|
Lines: 18
|
||||||
|
Xref: trick.fig.org misc:2354
|
||||||
|
|
||||||
|
|
||||||
|
IIRC, you took over the Grub package and upstream Grub.
|
||||||
|
|
||||||
|
You might be interested in the work by the "Fiasco" (aka L4) people at
|
||||||
|
tu-dresden - they taken Grub 0.4.1 and added network booting to it.
|
||||||
|
You can get their code at:
|
||||||
|
|
||||||
|
ftp://ftp.inf.tu-dresden.de/pub/os/L4/devel/
|
||||||
|
|
||||||
|
or grab a local copy of it that I put up at:
|
||||||
|
|
||||||
|
http://www.cse.msu.edu/~dunham/out/grub-l4-981207.tar.gz
|
||||||
|
|
||||||
|
|
||||||
|
Steve
|
||||||
|
dunham@cse.msu.edu
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -521,18 +521,21 @@ strncat(char *s1, char *s2, int n)
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
strcmp(char *s1, char *s2)
|
substring(char *s1, char *s2)
|
||||||
{
|
{
|
||||||
while (*s1 == *s2)
|
while (*s1 == *s2)
|
||||||
{
|
{
|
||||||
|
/* The strings match, so return 0. */
|
||||||
if (!*(s1++))
|
if (!*(s1++))
|
||||||
return 0;
|
return 0;
|
||||||
s2++;
|
s2++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* S1 is shorter than S2. */
|
||||||
if (*s1 == 0)
|
if (*s1 == 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
/* S1 is a substring of S2. */
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -577,9 +580,9 @@ bcopy(char *from, char *to, int len)
|
||||||
{
|
{
|
||||||
if ((to >= from+len) || (to <= from))
|
if ((to >= from+len) || (to <= from))
|
||||||
{
|
{
|
||||||
while (len > 3)
|
while (len >= sizeof (unsigned long))
|
||||||
{
|
{
|
||||||
len -= 4;
|
len -= sizeof (unsigned long);
|
||||||
*(((unsigned long *)to)++) = *(((unsigned long *)from)++);
|
*(((unsigned long *)to)++) = *(((unsigned long *)from)++);
|
||||||
}
|
}
|
||||||
while (len-- > 0)
|
while (len-- > 0)
|
||||||
|
@ -587,6 +590,8 @@ bcopy(char *from, char *to, int len)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
/* We have a region that overlaps, but would be overwritten
|
||||||
|
if we copied it forward. */
|
||||||
while (len-- > 0)
|
while (len-- > 0)
|
||||||
to[len] = from[len];
|
to[len] = from[len];
|
||||||
}
|
}
|
||||||
|
@ -607,5 +612,3 @@ bzero(char *start, int len)
|
||||||
|
|
||||||
return (!errnum);
|
return (!errnum);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -214,7 +214,7 @@ returnit:
|
||||||
if (run_cmdline && get_cmdline("command> ", commands, cur_heap, 2048))
|
if (run_cmdline && get_cmdline("command> ", commands, cur_heap, 2048))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
if (strcmp("boot", cur_heap) == 0 || (script && !*cur_heap))
|
if (substring("boot", cur_heap) == 0 || (script && !*cur_heap))
|
||||||
{
|
{
|
||||||
if ((type == 'f') | (type == 'n'))
|
if ((type == 'f') | (type == 'n'))
|
||||||
bsd_boot(type, bootdev);
|
bsd_boot(type, bootdev);
|
||||||
|
@ -245,7 +245,7 @@ returnit:
|
||||||
cmd_len = 0;
|
cmd_len = 0;
|
||||||
while (cur_cmdline[cmd_len++]);
|
while (cur_cmdline[cmd_len++]);
|
||||||
|
|
||||||
if (strcmp("chainloader", cur_heap) < 1)
|
if (substring("chainloader", cur_heap) < 1)
|
||||||
{
|
{
|
||||||
if (open(cur_cmdline) && (read(BOOTSEC_LOCATION, SECTOR_SIZE)
|
if (open(cur_cmdline) && (read(BOOTSEC_LOCATION, SECTOR_SIZE)
|
||||||
== SECTOR_SIZE)
|
== SECTOR_SIZE)
|
||||||
|
@ -258,17 +258,17 @@ returnit:
|
||||||
type = 0;
|
type = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (strcmp("pause", cur_heap) < 1)
|
else if (substring("pause", cur_heap) < 1)
|
||||||
{
|
{
|
||||||
if (getc() == 27)
|
if (getc() == 27)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
else if (strcmp("uppermem", cur_heap) < 1)
|
else if (substring("uppermem", cur_heap) < 1)
|
||||||
{
|
{
|
||||||
if (safe_parse_maxint(&cur_cmdline, (int *)&(mbi.mem_upper)))
|
if (safe_parse_maxint(&cur_cmdline, (int *)&(mbi.mem_upper)))
|
||||||
mbi.flags &= ~MB_INFO_MEM_MAP;
|
mbi.flags &= ~MB_INFO_MEM_MAP;
|
||||||
}
|
}
|
||||||
else if (strcmp("root", cur_heap) < 1)
|
else if (substring("root", cur_heap) < 1)
|
||||||
{
|
{
|
||||||
int hdbias = 0;
|
int hdbias = 0;
|
||||||
char *biasptr = skip_to(0, set_device(cur_cmdline));
|
char *biasptr = skip_to(0, set_device(cur_cmdline));
|
||||||
|
@ -295,7 +295,7 @@ returnit:
|
||||||
current_drive = -1;
|
current_drive = -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (strcmp("kernel", cur_heap) < 1)
|
else if (substring("kernel", cur_heap) < 1)
|
||||||
{
|
{
|
||||||
/* make sure it's at the beginning of the boot heap area */
|
/* make sure it's at the beginning of the boot heap area */
|
||||||
bcopy(cur_heap, heap, cmd_len + (((int)cur_cmdline) - ((int)cur_heap)));
|
bcopy(cur_heap, heap, cmd_len + (((int)cur_cmdline) - ((int)cur_heap)));
|
||||||
|
@ -304,7 +304,7 @@ returnit:
|
||||||
if (type = load_image())
|
if (type = load_image())
|
||||||
cur_heap = cur_cmdline + cmd_len;
|
cur_heap = cur_cmdline + cmd_len;
|
||||||
}
|
}
|
||||||
else if (strcmp("module", cur_heap) < 1)
|
else if (substring("module", cur_heap) < 1)
|
||||||
{
|
{
|
||||||
if (type == 'm')
|
if (type == 'm')
|
||||||
{
|
{
|
||||||
|
@ -329,7 +329,7 @@ returnit:
|
||||||
else
|
else
|
||||||
errnum = ERR_NEED_MB_KERNEL;
|
errnum = ERR_NEED_MB_KERNEL;
|
||||||
}
|
}
|
||||||
else if (strcmp("initrd", cur_heap) < 1)
|
else if (substring("initrd", cur_heap) < 1)
|
||||||
{
|
{
|
||||||
if (type == 'L' || type == 'l')
|
if (type == 'L' || type == 'l')
|
||||||
{
|
{
|
||||||
|
@ -338,7 +338,7 @@ returnit:
|
||||||
else
|
else
|
||||||
errnum = ERR_NEED_LX_KERNEL;
|
errnum = ERR_NEED_LX_KERNEL;
|
||||||
}
|
}
|
||||||
else if (strcmp("install", cur_heap) < 1)
|
else if (substring("install", cur_heap) < 1)
|
||||||
{
|
{
|
||||||
char *stage1_file = cur_cmdline, *dest_dev, *file, *addr, *config_file;
|
char *stage1_file = cur_cmdline, *dest_dev, *file, *addr, *config_file;
|
||||||
char buffer[SECTOR_SIZE], old_sect[SECTOR_SIZE];
|
char buffer[SECTOR_SIZE], old_sect[SECTOR_SIZE];
|
||||||
|
@ -470,7 +470,7 @@ returnit:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
else if (strcmp("testload", cur_heap) < 1)
|
else if (substring("testload", cur_heap) < 1)
|
||||||
{
|
{
|
||||||
type = 0;
|
type = 0;
|
||||||
if (open(cur_cmdline))
|
if (open(cur_cmdline))
|
||||||
|
@ -534,13 +534,13 @@ returnit:
|
||||||
debug_fs = NULL;
|
debug_fs = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (strcmp("read", cur_heap) < 1)
|
else if (substring("read", cur_heap) < 1)
|
||||||
{
|
{
|
||||||
int myaddr;
|
int myaddr;
|
||||||
if (safe_parse_maxint(&cur_cmdline, &myaddr))
|
if (safe_parse_maxint(&cur_cmdline, &myaddr))
|
||||||
printf("Address 0x%x: Value 0x%x", myaddr, *((unsigned *)myaddr));
|
printf("Address 0x%x: Value 0x%x", myaddr, *((unsigned *)myaddr));
|
||||||
}
|
}
|
||||||
else if (strcmp("fstest", cur_heap) == 0)
|
else if (substring("fstest", cur_heap) == 0)
|
||||||
{
|
{
|
||||||
if (debug_fs)
|
if (debug_fs)
|
||||||
{
|
{
|
||||||
|
@ -553,12 +553,12 @@ returnit:
|
||||||
printf(" Filesystem tracing is now on\n");
|
printf(" Filesystem tracing is now on\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (strcmp("impsprobe", cur_heap) == 0)
|
else if (substring("impsprobe", cur_heap) == 0)
|
||||||
{
|
{
|
||||||
if (!imps_probe())
|
if (!imps_probe())
|
||||||
printf(" No MPS information found or probe failed\n");
|
printf(" No MPS information found or probe failed\n");
|
||||||
}
|
}
|
||||||
else if (strcmp("displaymem", cur_heap) == 0)
|
else if (substring("displaymem", cur_heap) == 0)
|
||||||
{
|
{
|
||||||
if (get_eisamemsize() != -1)
|
if (get_eisamemsize() != -1)
|
||||||
printf(" EISA Memory BIOS Interface is present\n");
|
printf(" EISA Memory BIOS Interface is present\n");
|
||||||
|
@ -592,11 +592,10 @@ returnit:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif /* DEBUG */
|
#endif /* DEBUG */
|
||||||
else if (strcmp("makeactive", cur_heap) == 0)
|
else if (substring("makeactive", cur_heap) == 0)
|
||||||
make_saved_active();
|
make_saved_active();
|
||||||
else if (*cur_heap && *cur_heap != ' ')
|
else if (*cur_heap && *cur_heap != ' ')
|
||||||
errnum = ERR_UNRECOGNIZED;
|
errnum = ERR_UNRECOGNIZED;
|
||||||
|
|
||||||
goto restart;
|
goto restart;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -41,36 +41,36 @@ int errnum = 0;
|
||||||
|
|
||||||
char *err_list[] =
|
char *err_list[] =
|
||||||
{
|
{
|
||||||
0,
|
[ERR_NONE] = 0,
|
||||||
"Selected item won\'t fit into memory",
|
[ERR_BAD_FILENAME] = "Bad filename (must be absolute pathname or blocklist)",
|
||||||
"Selected disk doesn\'t exist",
|
[ERR_BAD_FILETYPE] = "Bad file or directory type",
|
||||||
"Disk read error",
|
[ERR_BAD_GZIP_DATA] = "Bad or corrupt data while decompressing file",
|
||||||
"Disk write error",
|
[ERR_BAD_GZIP_HEADER] = "Bad or incompatible header on compressed file",
|
||||||
"Disk geometry error",
|
[ERR_BAD_PART_TABLE] = "Partition table invalid or corrupt",
|
||||||
"Attempt to access block outside partition",
|
[ERR_BAD_VERSION] = "Bad or corrupt version of stage1/stage2",
|
||||||
"Partition table invalid or corrupt",
|
[ERR_BELOW_1MB] = "Loading below 1MB is not supported",
|
||||||
"No such partition",
|
[ERR_BOOT_COMMAND] = "Cannot boot without kernel loaded",
|
||||||
"Bad filename (must be absolute pathname or blocklist)",
|
[ERR_BOOT_FAILURE] = "Unknown boot failure",
|
||||||
"Bad file or directory type",
|
[ERR_BOOT_FEATURES] = "Unsupported Multiboot features requested",
|
||||||
"File not found",
|
[ERR_DEV_FORMAT] = "Device string unrecognizable",
|
||||||
"Cannot mount selected partition",
|
[ERR_DEV_VALUES] = "Invalid device requested",
|
||||||
"Inconsistent filesystem structure",
|
[ERR_EXEC_FORMAT] = "Invalid or unsupported executable format",
|
||||||
"Filesystem compatibility error, can\'t read whole file",
|
[ERR_FILELENGTH] = "Filesystem compatibility error, cannot read whole file",
|
||||||
"Error while parsing number",
|
[ERR_FILE_NOT_FOUND] = "File not found",
|
||||||
"Device string unrecognizable",
|
[ERR_FSYS_CORRUPT] = "Inconsistent filesystem structure",
|
||||||
"Invalid device requested",
|
[ERR_FSYS_MOUNT] = "Cannot mount selected partition",
|
||||||
"Invalid or unsupported executable format",
|
[ERR_GEOM] = "Disk geometry error",
|
||||||
"Loading below 1MB is not supported",
|
[ERR_NEED_LX_KERNEL] = "Must load Linux kernel before initrd",
|
||||||
"Unsupported Multiboot features requested",
|
[ERR_NEED_MB_KERNEL] = "Must load Multiboot kernel before modules",
|
||||||
"Unknown boot failure",
|
[ERR_NO_DISK] = "Selected disk does not exist",
|
||||||
"Must load Multiboot kernel before modules",
|
[ERR_NO_PART] = "No such partition",
|
||||||
"Must load Linux kernel before initrd",
|
[ERR_NUMBER_PARSING] = "Error while parsing number",
|
||||||
"Cannot boot without kernel loaded",
|
[ERR_OUTSIDE_PART] = "Attempt to access block outside partition",
|
||||||
"Unrecognized command",
|
[ERR_READ] = "Disk read error",
|
||||||
"Bad or incompatible header on compressed file",
|
[ERR_SYMLINK_LOOP] = "Too many symbolic links",
|
||||||
"Bad or corrupt data while decompressing file",
|
[ERR_UNRECOGNIZED] = "Unrecognized command",
|
||||||
"Bad or corrupt version of stage1/stage2",
|
[ERR_WONT_FIT] = "Selected item cannot fit into memory",
|
||||||
0
|
[ERR_WRITE] = "Disk write error",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -212,4 +212,3 @@ init_bios_info(void)
|
||||||
|
|
||||||
cmain();
|
cmain();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* GRUB -- GRand Unified Bootloader
|
* GRUB -- GRand Unified Bootloader
|
||||||
* Copyright (C) 1996 Erich Boleyn <erich@uruk.org>
|
* Copyright (C) 1996 Erich Boleyn <erich@uruk.org>
|
||||||
|
* Copyright (C) 1999 Free Software Foundation, Inc.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -19,12 +20,7 @@
|
||||||
|
|
||||||
|
|
||||||
#include "shared.h"
|
#include "shared.h"
|
||||||
|
|
||||||
#ifdef E2DEBUG
|
|
||||||
#include "pc_slice.h"
|
|
||||||
#else
|
|
||||||
#include "filesys.h"
|
#include "filesys.h"
|
||||||
#endif
|
|
||||||
|
|
||||||
static int mapblock1, mapblock2;
|
static int mapblock1, mapblock2;
|
||||||
|
|
||||||
|
@ -180,7 +176,9 @@ struct ext2_dir_entry {
|
||||||
#define log2(n) ffz(~(n))
|
#define log2(n) ffz(~(n))
|
||||||
|
|
||||||
#define EXT2_SUPER_MAGIC 0xEF53 /* include/linux/ext2_fs.h */
|
#define EXT2_SUPER_MAGIC 0xEF53 /* include/linux/ext2_fs.h */
|
||||||
#define EXT2_ROOT_INO 2 /* include/linux/ext2_fs.h */
|
#define EXT2_ROOT_INO 2 /* include/linux/ext2_fs.h */
|
||||||
|
#define PATH_MAX 1024 /* include/linux/limits.h */
|
||||||
|
#define MAX_LINK_COUNT 5 /* number of symbolic links to follow */
|
||||||
|
|
||||||
/* made up, these are pointers into FSYS_BUF */
|
/* made up, these are pointers into FSYS_BUF */
|
||||||
/* read once, always stays there: */
|
/* read once, always stays there: */
|
||||||
|
@ -209,8 +207,10 @@ struct ext2_dir_entry {
|
||||||
(EXT2_BLOCK_SIZE(s) / sizeof (struct ext2_group_desc))
|
(EXT2_BLOCK_SIZE(s) / sizeof (struct ext2_group_desc))
|
||||||
/* linux/stat.h */
|
/* linux/stat.h */
|
||||||
#define S_IFMT 00170000
|
#define S_IFMT 00170000
|
||||||
|
#define S_IFLNK 0120000
|
||||||
#define S_IFREG 0100000
|
#define S_IFREG 0100000
|
||||||
#define S_IFDIR 0040000
|
#define S_IFDIR 0040000
|
||||||
|
#define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
|
||||||
#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
|
#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
|
||||||
#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
|
#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
|
||||||
|
|
||||||
|
@ -358,12 +358,13 @@ ext2fs_read(int addr, int len)
|
||||||
int size = 0;
|
int size = 0;
|
||||||
|
|
||||||
#ifdef E2DEBUG
|
#ifdef E2DEBUG
|
||||||
|
static char hexdigit[] = "0123456789abcdef";
|
||||||
unsigned char * i;
|
unsigned char * i;
|
||||||
for (i = (unsigned char *)INODE;
|
for (i = (unsigned char *)INODE;
|
||||||
i < ((unsigned char *)INODE + sizeof(struct ext2_inode));
|
i < ((unsigned char *)INODE + sizeof(struct ext2_inode));
|
||||||
i++) {
|
i++) {
|
||||||
printf("%c", "0123456789abcdef"[*i >> 4]);
|
printf("%c", hexdigit[*i >> 4]);
|
||||||
printf("%c", "0123456789abcdef"[*i % 16]);
|
printf("%c", hexdigit[*i % 16]);
|
||||||
if (!((i + 1 - (unsigned char *)INODE) % 16)) { printf("\n"); }
|
if (!((i + 1 - (unsigned char *)INODE) % 16)) { printf("\n"); }
|
||||||
else { printf(" "); }
|
else { printf(" "); }
|
||||||
}
|
}
|
||||||
|
@ -442,6 +443,7 @@ int
|
||||||
ext2fs_dir(char *dirname)
|
ext2fs_dir(char *dirname)
|
||||||
{
|
{
|
||||||
int current_ino = EXT2_ROOT_INO; /* start at the root */
|
int current_ino = EXT2_ROOT_INO; /* start at the root */
|
||||||
|
int updir_ino = current_ino; /* the parent of the current directory */
|
||||||
int group_id; /* which group the inode is in */
|
int group_id; /* which group the inode is in */
|
||||||
int group_desc; /* fs pointer to that group */
|
int group_desc; /* fs pointer to that group */
|
||||||
int desc; /* index within that group */
|
int desc; /* index within that group */
|
||||||
|
@ -450,6 +452,9 @@ ext2fs_dir(char *dirname)
|
||||||
struct ext2_group_desc * gdp;
|
struct ext2_group_desc * gdp;
|
||||||
struct ext2_inode * raw_inode; /* inode info corresponding to current_ino */
|
struct ext2_inode * raw_inode; /* inode info corresponding to current_ino */
|
||||||
|
|
||||||
|
char linkbuf[PATH_MAX]; /* buffer for following symbolic links */
|
||||||
|
int link_count = 0;
|
||||||
|
|
||||||
char *rest;
|
char *rest;
|
||||||
char ch; /* temp char holder */
|
char ch; /* temp char holder */
|
||||||
|
|
||||||
|
@ -527,6 +532,74 @@ ext2fs_dir(char *dirname)
|
||||||
printf("first word=%x\n", *((int *)INODE));
|
printf("first word=%x\n", *((int *)INODE));
|
||||||
#endif /* E2DEBUG */
|
#endif /* E2DEBUG */
|
||||||
|
|
||||||
|
/* If we've got a symbolic link, then chase it. */
|
||||||
|
if (S_ISLNK(INODE->i_mode))
|
||||||
|
{
|
||||||
|
int len, remaining;
|
||||||
|
if (++ link_count > MAX_LINK_COUNT)
|
||||||
|
{
|
||||||
|
errnum = ERR_SYMLINK_LOOP;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Find out how long our remaining name is. */
|
||||||
|
len = 0;
|
||||||
|
while (dirname[len] && !isspace (dirname[len]))
|
||||||
|
len ++;
|
||||||
|
|
||||||
|
/* Get the symlink size. */
|
||||||
|
filemax = (INODE->i_size);
|
||||||
|
if (filemax + len > sizeof (linkbuf) - 2)
|
||||||
|
{
|
||||||
|
errnum = ERR_FILELENGTH;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (len)
|
||||||
|
{
|
||||||
|
/* Copy the remaining name to the end of the symlink data.
|
||||||
|
Note that DIRNAME and LINKBUF may overlap! */
|
||||||
|
bcopy (dirname, linkbuf + filemax, len);
|
||||||
|
}
|
||||||
|
linkbuf[filemax + len] = '\0';
|
||||||
|
|
||||||
|
/* Read the symlink data. */
|
||||||
|
if (INODE->i_blocks)
|
||||||
|
{
|
||||||
|
/* Read the necessary blocks, and reset the file pointer. */
|
||||||
|
len = read ((int) linkbuf, filemax);
|
||||||
|
filepos = 0;
|
||||||
|
if (!len)
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Copy the data directly from the inode. */
|
||||||
|
len = filemax;
|
||||||
|
bcopy ((char *) INODE->i_block, linkbuf, len);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if E2DEBUG
|
||||||
|
printf ("symlink=%s\n", linkbuf);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
dirname = linkbuf;
|
||||||
|
if (*dirname == '/')
|
||||||
|
{
|
||||||
|
/* It's an absolute link, so look it up in root. */
|
||||||
|
current_ino = EXT2_ROOT_INO;
|
||||||
|
updir_ino = current_ino;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Relative, so look it up in our parent directory. */
|
||||||
|
current_ino = updir_ino;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Try again using the new name. */
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
/* if end of filename, INODE points to the file's inode */
|
/* if end of filename, INODE points to the file's inode */
|
||||||
if (!*dirname || isspace(*dirname))
|
if (!*dirname || isspace(*dirname))
|
||||||
{
|
{
|
||||||
|
@ -541,6 +614,7 @@ ext2fs_dir(char *dirname)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* else we have to traverse a directory */
|
/* else we have to traverse a directory */
|
||||||
|
updir_ino = current_ino;
|
||||||
|
|
||||||
/* skip over slashes */
|
/* skip over slashes */
|
||||||
while (*dirname == '/')
|
while (*dirname == '/')
|
||||||
|
@ -583,7 +657,7 @@ ext2fs_dir(char *dirname)
|
||||||
/* else, find the (logical) block component of our location */
|
/* else, find the (logical) block component of our location */
|
||||||
blk = loc >> EXT2_BLOCK_SIZE_BITS(SUPERBLOCK);
|
blk = loc >> EXT2_BLOCK_SIZE_BITS(SUPERBLOCK);
|
||||||
|
|
||||||
/* now we know which logical block of the directory entry we are looking
|
/* we know which logical block of the directory entry we are looking
|
||||||
for, now we have to translate that to the physical (fs) block on
|
for, now we have to translate that to the physical (fs) block on
|
||||||
the disk */
|
the disk */
|
||||||
map = ext2fs_block_map(blk);
|
map = ext2fs_block_map(blk);
|
||||||
|
@ -614,7 +688,7 @@ ext2fs_dir(char *dirname)
|
||||||
int saved_c = dp->name[dp->name_len];
|
int saved_c = dp->name[dp->name_len];
|
||||||
|
|
||||||
dp->name[dp->name_len] = 0;
|
dp->name[dp->name_len] = 0;
|
||||||
str_chk = strcmp(dirname, dp->name);
|
str_chk = substring(dirname, dp->name);
|
||||||
|
|
||||||
if (print_possibilities && ch != '/'
|
if (print_possibilities && ch != '/'
|
||||||
&& (!*dirname || str_chk <= 0))
|
&& (!*dirname || str_chk <= 0))
|
||||||
|
|
|
@ -234,14 +234,15 @@ loop:
|
||||||
}
|
}
|
||||||
|
|
||||||
if (print_possibilities && ch != '/'
|
if (print_possibilities && ch != '/'
|
||||||
&& (!*dirname || strcmp(dirname, filename) <= 0))
|
&& (!*dirname || substring(dirname, filename) <= 0))
|
||||||
{
|
{
|
||||||
if (print_possibilities > 0)
|
if (print_possibilities > 0)
|
||||||
print_possibilities = -print_possibilities;
|
print_possibilities = -print_possibilities;
|
||||||
printf(" %s", filename);
|
printf(" %s", filename);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
while (strcmp(dirname, filename) != 0 || (print_possibilities && ch != '/'));
|
while (substring(dirname, filename) != 0 ||
|
||||||
|
(print_possibilities && ch != '/'));
|
||||||
|
|
||||||
*(dirname = rest) = ch;
|
*(dirname = rest) = ch;
|
||||||
|
|
||||||
|
@ -252,5 +253,3 @@ loop:
|
||||||
/* go back to main loop at top of function */
|
/* go back to main loop at top of function */
|
||||||
goto loop;
|
goto loop;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -244,7 +244,7 @@ loop:
|
||||||
loc += dp->d_reclen;
|
loc += dp->d_reclen;
|
||||||
|
|
||||||
if (dp->d_ino && print_possibilities && ch != '/'
|
if (dp->d_ino && print_possibilities && ch != '/'
|
||||||
&& (!*dirname || strcmp(dirname, dp->d_name) <= 0))
|
&& (!*dirname || substring(dirname, dp->d_name) <= 0))
|
||||||
{
|
{
|
||||||
if (print_possibilities > 0)
|
if (print_possibilities > 0)
|
||||||
print_possibilities = -print_possibilities;
|
print_possibilities = -print_possibilities;
|
||||||
|
@ -252,7 +252,7 @@ loop:
|
||||||
printf(" %s", dp->d_name);
|
printf(" %s", dp->d_name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
while (!dp->d_ino || (strcmp(dirname, dp->d_name) != 0
|
while (!dp->d_ino || (substring(dirname, dp->d_name) != 0
|
||||||
|| (print_possibilities && ch != '/')) );
|
|| (print_possibilities && ch != '/')) );
|
||||||
|
|
||||||
/* only get here if we have a matching directory entry */
|
/* only get here if we have a matching directory entry */
|
||||||
|
@ -263,5 +263,3 @@ loop:
|
||||||
/* go back to main loop at top of function */
|
/* go back to main loop at top of function */
|
||||||
goto loop;
|
goto loop;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -316,36 +316,40 @@ int special_attribute;
|
||||||
|
|
||||||
#endif /* _CHAR_IO_C */
|
#endif /* _CHAR_IO_C */
|
||||||
|
|
||||||
#define ERR_NONE 0
|
enum grub_error_t {
|
||||||
#define ERR_WONT_FIT (ERR_NONE + 1)
|
ERR_NONE = 0,
|
||||||
#define ERR_NO_DISK (ERR_WONT_FIT + 1)
|
ERR_BAD_FILENAME,
|
||||||
#define ERR_READ (ERR_NO_DISK + 1)
|
ERR_BAD_FILETYPE,
|
||||||
#define ERR_WRITE (ERR_READ + 1)
|
ERR_BAD_GZIP_DATA,
|
||||||
#define ERR_GEOM (ERR_WRITE + 1)
|
ERR_BAD_GZIP_HEADER,
|
||||||
#define ERR_OUTSIDE_PART (ERR_GEOM + 1)
|
ERR_BAD_PART_TABLE,
|
||||||
#define ERR_BAD_PART_TABLE (ERR_OUTSIDE_PART + 1)
|
ERR_BAD_VERSION,
|
||||||
#define ERR_NO_PART (ERR_BAD_PART_TABLE + 1)
|
ERR_BELOW_1MB,
|
||||||
#define ERR_BAD_FILENAME (ERR_NO_PART + 1)
|
ERR_BOOT_COMMAND,
|
||||||
#define ERR_BAD_FILETYPE (ERR_BAD_FILENAME + 1)
|
ERR_BOOT_FAILURE,
|
||||||
#define ERR_FILE_NOT_FOUND (ERR_BAD_FILETYPE + 1)
|
ERR_BOOT_FEATURES,
|
||||||
#define ERR_FSYS_MOUNT (ERR_FILE_NOT_FOUND + 1)
|
ERR_DEV_FORMAT,
|
||||||
#define ERR_FSYS_CORRUPT (ERR_FSYS_MOUNT + 1)
|
ERR_DEV_VALUES,
|
||||||
#define ERR_FILELENGTH (ERR_FSYS_CORRUPT + 1)
|
ERR_EXEC_FORMAT,
|
||||||
#define ERR_NUMBER_PARSING (ERR_FILELENGTH + 1)
|
ERR_FILELENGTH,
|
||||||
#define ERR_DEV_FORMAT (ERR_NUMBER_PARSING + 1)
|
ERR_FILE_NOT_FOUND,
|
||||||
#define ERR_DEV_VALUES (ERR_DEV_FORMAT + 1)
|
ERR_FSYS_CORRUPT,
|
||||||
#define ERR_EXEC_FORMAT (ERR_DEV_VALUES + 1)
|
ERR_FSYS_MOUNT,
|
||||||
#define ERR_BELOW_1MB (ERR_EXEC_FORMAT + 1)
|
ERR_GEOM,
|
||||||
#define ERR_BOOT_FEATURES (ERR_BELOW_1MB + 1)
|
ERR_NEED_LX_KERNEL,
|
||||||
#define ERR_BOOT_FAILURE (ERR_BOOT_FEATURES + 1)
|
ERR_NEED_MB_KERNEL,
|
||||||
#define ERR_NEED_MB_KERNEL (ERR_BOOT_FAILURE + 1)
|
ERR_NO_DISK,
|
||||||
#define ERR_NEED_LX_KERNEL (ERR_NEED_MB_KERNEL + 1)
|
ERR_NO_PART,
|
||||||
#define ERR_BOOT_COMMAND (ERR_NEED_LX_KERNEL + 1)
|
ERR_NUMBER_PARSING,
|
||||||
#define ERR_UNRECOGNIZED (ERR_BOOT_COMMAND + 1)
|
ERR_OUTSIDE_PART,
|
||||||
#define ERR_BAD_GZIP_HEADER (ERR_UNRECOGNIZED + 1)
|
ERR_READ,
|
||||||
#define ERR_BAD_GZIP_DATA (ERR_BAD_GZIP_HEADER + 1)
|
ERR_SYMLINK_LOOP,
|
||||||
#define ERR_BAD_VERSION (ERR_BAD_GZIP_DATA + 1)
|
ERR_UNRECOGNIZED,
|
||||||
#define MAX_ERR_NUM (ERR_BAD_VERSION + 1)
|
ERR_WONT_FIT,
|
||||||
|
ERR_WRITE,
|
||||||
|
|
||||||
|
MAX_ERR_NUM
|
||||||
|
};
|
||||||
|
|
||||||
/* returns packed BIOS/ASCII code */
|
/* returns packed BIOS/ASCII code */
|
||||||
#define BIOS_CODE(x) ((x) >> 8)
|
#define BIOS_CODE(x) ((x) >> 8)
|
||||||
|
@ -371,7 +375,7 @@ int get_cmdline(char *prompt, char *commands, char *cmdline, int maxlen);
|
||||||
int tolower(int c);
|
int tolower(int c);
|
||||||
int isspace(int c);
|
int isspace(int c);
|
||||||
int strncat(char *s1, char *s2, int n);
|
int strncat(char *s1, char *s2, int n);
|
||||||
int strcmp(char *s1, char *s2);
|
int substring(char *s1, char *s2);
|
||||||
char *strstr(char *s1, char *s2);
|
char *strstr(char *s1, char *s2);
|
||||||
int bcopy(char *from, char *to, int len);
|
int bcopy(char *from, char *to, int len);
|
||||||
int bzero(char *start, int len);
|
int bzero(char *start, int len);
|
||||||
|
|
|
@ -529,7 +529,7 @@ cmain(void)
|
||||||
{
|
{
|
||||||
ptr = skip_to(1, cmdline);
|
ptr = skip_to(1, cmdline);
|
||||||
|
|
||||||
if (strcmp("title", cmdline) < 1)
|
if (substring("title", cmdline) < 1)
|
||||||
{
|
{
|
||||||
if (state > 1)
|
if (state > 1)
|
||||||
{
|
{
|
||||||
|
@ -551,13 +551,13 @@ cmain(void)
|
||||||
}
|
}
|
||||||
else if (!state)
|
else if (!state)
|
||||||
{
|
{
|
||||||
if (strcmp("timeout", cmdline) < 1)
|
if (substring("timeout", cmdline) < 1)
|
||||||
safe_parse_maxint(&ptr, &timeout);
|
safe_parse_maxint(&ptr, &timeout);
|
||||||
if (strcmp("fallback", cmdline) < 1)
|
if (substring("fallback", cmdline) < 1)
|
||||||
safe_parse_maxint(&ptr, &fallback);
|
safe_parse_maxint(&ptr, &fallback);
|
||||||
if (strcmp("default", cmdline) < 1)
|
if (substring("default", cmdline) < 1)
|
||||||
safe_parse_maxint(&ptr, &default_entry);
|
safe_parse_maxint(&ptr, &default_entry);
|
||||||
if (strcmp("password", cmdline) < 1)
|
if (substring("password", cmdline) < 1)
|
||||||
{
|
{
|
||||||
char *ptrend = ptr;
|
char *ptrend = ptr;
|
||||||
password = config_entries;
|
password = config_entries;
|
||||||
|
|
|
@ -6,15 +6,14 @@ CFLAGS= $(SHARED_FLAGS)
|
||||||
|
|
||||||
all: ../bin/stage1
|
all: ../bin/stage1
|
||||||
|
|
||||||
stage1.o: stage1.S Makefile ../Makefile
|
stage1.o: stage1.S
|
||||||
$(CC) $(CFLAGS) -c -o stage1.o stage1.S
|
$(CC) $(CFLAGS) -c -o stage1.o stage1.S
|
||||||
|
|
||||||
stage1.exec: stage1.o Makefile ../Makefile
|
stage1.exec: stage1.o
|
||||||
$(LD) -N -Ttext 7C00 -o stage1.exec stage1.o
|
$(LD) -N -Ttext 7C00 -o stage1.exec stage1.o
|
||||||
|
|
||||||
../bin/stage1: stage1.exec Makefile ../Makefile
|
../bin/stage1: stage1.exec
|
||||||
$(OBJCOPY) -O binary stage1.exec ../bin/stage1
|
$(OBJCOPY) -O binary stage1.exec ../bin/stage1
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f stage1.o stage1.exec
|
rm -f stage1.o stage1.exec
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
#
|
#
|
||||||
# GRUB stage2 makefile
|
# GRUB program makefile
|
||||||
#
|
#
|
||||||
|
|
||||||
CFLAGS= $(SHARED_FLAGS) -I../shared_src
|
COMPILE = $(CC) $(CPPFLAGS) $(CFLAGS) $(SHARED_FLAGS) -I../shared_src
|
||||||
|
|
||||||
# "asm.o" absolutely must come first!!!
|
# "asm.o" absolutely must come first!!!
|
||||||
SHARED_OBJS= asm.o common.o char_io.o boot.o cmdline.o gunzip.o \
|
SHARED_OBJS= asm.o common.o char_io.o boot.o cmdline.o gunzip.o \
|
||||||
|
@ -10,61 +10,53 @@ SHARED_OBJS= asm.o common.o char_io.o boot.o cmdline.o gunzip.o \
|
||||||
|
|
||||||
all: ../bin/stage2
|
all: ../bin/stage2
|
||||||
|
|
||||||
asm.o: ../shared_src/asm.S ../shared_src/shared.h Makefile ../Makefile
|
asm.o: ../shared_src/asm.S ../shared_src/shared.h
|
||||||
$(CC) $(CFLAGS) -c ../shared_src/asm.S
|
$(COMPILE) -c ../shared_src/asm.S
|
||||||
|
|
||||||
boot.o: ../shared_src/boot.c ../shared_src/shared.h Makefile ../Makefile
|
boot.o: ../shared_src/boot.c ../shared_src/shared.h
|
||||||
$(CC) $(CFLAGS) -c ../shared_src/boot.c
|
$(COMPILE) -c ../shared_src/boot.c
|
||||||
|
|
||||||
char_io.o: ../shared_src/char_io.c ../shared_src/shared.h Makefile \
|
char_io.o: ../shared_src/char_io.c ../shared_src/shared.h
|
||||||
../Makefile
|
$(COMPILE) -c ../shared_src/char_io.c
|
||||||
$(CC) $(CFLAGS) -c ../shared_src/char_io.c
|
|
||||||
|
|
||||||
cmdline.o: ../shared_src/cmdline.c ../shared_src/shared.h Makefile \
|
cmdline.o: ../shared_src/cmdline.c ../shared_src/shared.h
|
||||||
../Makefile
|
$(COMPILE) -c ../shared_src/cmdline.c
|
||||||
$(CC) $(CFLAGS) -c ../shared_src/cmdline.c
|
|
||||||
|
|
||||||
common.o: ../shared_src/common.c ../shared_src/shared.h Makefile \
|
common.o: ../shared_src/common.c ../shared_src/shared.h
|
||||||
../Makefile
|
$(COMPILE) -c ../shared_src/common.c
|
||||||
$(CC) $(CFLAGS) -c ../shared_src/common.c
|
|
||||||
|
|
||||||
gunzip.o: ../shared_src/gunzip.c ../shared_src/shared.h Makefile \
|
gunzip.o: ../shared_src/gunzip.c ../shared_src/shared.h
|
||||||
../Makefile
|
$(COMPILE) -c ../shared_src/gunzip.c
|
||||||
$(CC) $(CFLAGS) -c ../shared_src/gunzip.c
|
|
||||||
|
|
||||||
disk_io.o: ../shared_src/disk_io.c ../shared_src/filesys.h \
|
disk_io.o: ../shared_src/disk_io.c ../shared_src/filesys.h \
|
||||||
../shared_src/pc_slice.h ../shared_src/shared.h Makefile \
|
../shared_src/pc_slice.h ../shared_src/shared.h
|
||||||
../Makefile
|
$(COMPILE) -c ../shared_src/disk_io.c
|
||||||
$(CC) $(CFLAGS) -c ../shared_src/disk_io.c
|
|
||||||
|
|
||||||
stage2.o: ../shared_src/stage2.c ../shared_src/shared.h Makefile \
|
stage2.o: ../shared_src/stage2.c ../shared_src/shared.h
|
||||||
../Makefile
|
$(COMPILE) -c ../shared_src/stage2.c
|
||||||
$(CC) $(CFLAGS) -c ../shared_src/stage2.c
|
|
||||||
|
|
||||||
fsys_ffs.o: ../shared_src/fsys_ffs.c ../shared_src/filesys.h \
|
fsys_ffs.o: ../shared_src/fsys_ffs.c ../shared_src/filesys.h \
|
||||||
../shared_src/pc_slice.h ../shared_src/shared.h \
|
../shared_src/pc_slice.h ../shared_src/shared.h \
|
||||||
../shared_src/defs.h ../shared_src/disk_inode.h \
|
../shared_src/defs.h ../shared_src/disk_inode.h \
|
||||||
../shared_src/disk_inode_ffs.h ../shared_src/dir.h \
|
../shared_src/disk_inode_ffs.h ../shared_src/dir.h \
|
||||||
../shared_src/fs.h Makefile ../Makefile
|
../shared_src/fs.h
|
||||||
$(CC) $(CFLAGS) -c ../shared_src/fsys_ffs.c
|
$(COMPILE) -c ../shared_src/fsys_ffs.c
|
||||||
|
|
||||||
fsys_ext2fs.o: ../shared_src/fsys_ext2fs.c ../shared_src/filesys.h \
|
fsys_ext2fs.o: ../shared_src/fsys_ext2fs.c ../shared_src/filesys.h \
|
||||||
../shared_src/pc_slice.h ../shared_src/shared.h Makefile \
|
../shared_src/pc_slice.h ../shared_src/shared.h
|
||||||
../Makefile
|
$(COMPILE) -c ../shared_src/fsys_ext2fs.c
|
||||||
$(CC) $(CFLAGS) -c ../shared_src/fsys_ext2fs.c
|
|
||||||
|
|
||||||
fsys_fat.o: ../shared_src/fsys_fat.c ../shared_src/filesys.h \
|
fsys_fat.o: ../shared_src/fsys_fat.c ../shared_src/filesys.h \
|
||||||
../shared_src/pc_slice.h ../shared_src/shared.h \
|
../shared_src/pc_slice.h ../shared_src/shared.h \
|
||||||
../shared_src/fat.h Makefile ../Makefile
|
../shared_src/fat.h
|
||||||
$(CC) $(CFLAGS) -c ../shared_src/fsys_fat.c
|
$(COMPILE) -c ../shared_src/fsys_fat.c
|
||||||
|
|
||||||
# "asm.o" absolutely has to come first in the link line!
|
# "asm.o" absolutely has to come first in the link line!
|
||||||
stage2.exec: $(SHARED_OBJS) Makefile ../Makefile
|
stage2.exec: $(SHARED_OBJS)
|
||||||
$(LD) -N -Ttext 8000 -o stage2.exec $(SHARED_OBJS)
|
$(LD) -N -Ttext 8000 -o stage2.exec $(SHARED_OBJS)
|
||||||
|
|
||||||
../bin/stage2: stage2.exec Makefile ../Makefile
|
../bin/stage2: stage2.exec
|
||||||
$(OBJCOPY) -O binary stage2.exec ../bin/stage2
|
$(OBJCOPY) -O binary stage2.exec ../bin/stage2
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f $(SHARED_OBJS) stage2.exec
|
rm -f $(SHARED_OBJS) stage2.exec
|
||||||
|
|
||||||
|
|
|
@ -10,61 +10,53 @@ SHARED_OBJS= asm.o common.o char_io.o boot.o cmdline.o gunzip.o \
|
||||||
|
|
||||||
all: ../bin/stage2_debug
|
all: ../bin/stage2_debug
|
||||||
|
|
||||||
asm.o: ../shared_src/asm.S ../shared_src/shared.h Makefile ../Makefile
|
asm.o: ../shared_src/asm.S ../shared_src/shared.h
|
||||||
$(CC) $(CFLAGS) -c ../shared_src/asm.S
|
$(CC) $(CFLAGS) -c ../shared_src/asm.S
|
||||||
|
|
||||||
boot.o: ../shared_src/boot.c ../shared_src/shared.h Makefile ../Makefile
|
boot.o: ../shared_src/boot.c ../shared_src/shared.h
|
||||||
$(CC) $(CFLAGS) -c ../shared_src/boot.c
|
$(CC) $(CFLAGS) -c ../shared_src/boot.c
|
||||||
|
|
||||||
char_io.o: ../shared_src/char_io.c ../shared_src/shared.h Makefile \
|
char_io.o: ../shared_src/char_io.c ../shared_src/shared.h
|
||||||
../Makefile
|
|
||||||
$(CC) $(CFLAGS) -c ../shared_src/char_io.c
|
$(CC) $(CFLAGS) -c ../shared_src/char_io.c
|
||||||
|
|
||||||
cmdline.o: ../shared_src/cmdline.c ../shared_src/shared.h Makefile \
|
cmdline.o: ../shared_src/cmdline.c ../shared_src/shared.h
|
||||||
../Makefile
|
|
||||||
$(CC) $(CFLAGS) -c ../shared_src/cmdline.c
|
$(CC) $(CFLAGS) -c ../shared_src/cmdline.c
|
||||||
|
|
||||||
common.o: ../shared_src/common.c ../shared_src/shared.h Makefile \
|
common.o: ../shared_src/common.c ../shared_src/shared.h
|
||||||
../Makefile
|
|
||||||
$(CC) $(CFLAGS) -c ../shared_src/common.c
|
$(CC) $(CFLAGS) -c ../shared_src/common.c
|
||||||
|
|
||||||
gunzip.o: ../shared_src/gunzip.c ../shared_src/shared.h Makefile \
|
gunzip.o: ../shared_src/gunzip.c ../shared_src/shared.h
|
||||||
../Makefile
|
|
||||||
$(CC) $(CFLAGS) -c ../shared_src/gunzip.c
|
$(CC) $(CFLAGS) -c ../shared_src/gunzip.c
|
||||||
|
|
||||||
disk_io.o: ../shared_src/disk_io.c ../shared_src/filesys.h \
|
disk_io.o: ../shared_src/disk_io.c ../shared_src/filesys.h \
|
||||||
../shared_src/pc_slice.h ../shared_src/shared.h Makefile \
|
../shared_src/pc_slice.h ../shared_src/shared.h
|
||||||
../Makefile
|
|
||||||
$(CC) $(CFLAGS) -c ../shared_src/disk_io.c
|
$(CC) $(CFLAGS) -c ../shared_src/disk_io.c
|
||||||
|
|
||||||
stage2.o: ../shared_src/stage2.c ../shared_src/shared.h Makefile \
|
stage2.o: ../shared_src/stage2.c ../shared_src/shared.h
|
||||||
../Makefile
|
|
||||||
$(CC) $(CFLAGS) -c ../shared_src/stage2.c
|
$(CC) $(CFLAGS) -c ../shared_src/stage2.c
|
||||||
|
|
||||||
fsys_ffs.o: ../shared_src/fsys_ffs.c ../shared_src/filesys.h \
|
fsys_ffs.o: ../shared_src/fsys_ffs.c ../shared_src/filesys.h \
|
||||||
../shared_src/pc_slice.h ../shared_src/shared.h \
|
../shared_src/pc_slice.h ../shared_src/shared.h \
|
||||||
../shared_src/defs.h ../shared_src/disk_inode.h \
|
../shared_src/defs.h ../shared_src/disk_inode.h \
|
||||||
../shared_src/disk_inode_ffs.h ../shared_src/dir.h \
|
../shared_src/disk_inode_ffs.h ../shared_src/dir.h \
|
||||||
../shared_src/fs.h Makefile ../Makefile
|
../shared_src/fs.h
|
||||||
$(CC) $(CFLAGS) -c ../shared_src/fsys_ffs.c
|
$(CC) $(CFLAGS) -c ../shared_src/fsys_ffs.c
|
||||||
|
|
||||||
fsys_ext2fs.o: ../shared_src/fsys_ext2fs.c ../shared_src/filesys.h \
|
fsys_ext2fs.o: ../shared_src/fsys_ext2fs.c ../shared_src/filesys.h \
|
||||||
../shared_src/pc_slice.h ../shared_src/shared.h Makefile \
|
../shared_src/pc_slice.h ../shared_src/shared.h
|
||||||
../Makefile
|
|
||||||
$(CC) $(CFLAGS) -c ../shared_src/fsys_ext2fs.c
|
$(CC) $(CFLAGS) -c ../shared_src/fsys_ext2fs.c
|
||||||
|
|
||||||
fsys_fat.o: ../shared_src/fsys_fat.c ../shared_src/filesys.h \
|
fsys_fat.o: ../shared_src/fsys_fat.c ../shared_src/filesys.h \
|
||||||
../shared_src/pc_slice.h ../shared_src/shared.h \
|
../shared_src/pc_slice.h ../shared_src/shared.h \
|
||||||
../shared_src/fat.h Makefile ../Makefile
|
../shared_src/fat.h
|
||||||
$(CC) $(CFLAGS) -c ../shared_src/fsys_fat.c
|
$(CC) $(CFLAGS) -c ../shared_src/fsys_fat.c
|
||||||
|
|
||||||
# "asm.o" absolutely has to come first in the link line!
|
# "asm.o" absolutely has to come first in the link line!
|
||||||
stage2.exec: $(SHARED_OBJS) Makefile ../Makefile
|
stage2.exec: $(SHARED_OBJS)
|
||||||
$(LD) -N -Ttext 8000 -o stage2.exec $(SHARED_OBJS)
|
$(LD) -N -Ttext 8000 -o stage2.exec $(SHARED_OBJS)
|
||||||
|
|
||||||
../bin/stage2_debug: stage2.exec Makefile ../Makefile
|
../bin/stage2_debug: stage2.exec
|
||||||
$(OBJCOPY) -O binary stage2.exec ../bin/stage2_debug
|
$(OBJCOPY) -O binary stage2.exec ../bin/stage2_debug
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f $(SHARED_OBJS) stage2.exec
|
rm -f $(SHARED_OBJS) stage2.exec
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue