diff --git a/ChangeLog b/ChangeLog index 3c158b1a7..ad08b7871 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +1999-10-25 OKUJI Yoshinori + + * stage1/stage1.S: Long jump to real_start, because some bogus + BIOSes jump to 07C0:0000 instead of 0000:7C00. + (real_start): New label. + * docs/Makefile.am (grub.info): Removed. Use the default rule + instead. + 1999-10-25 OKUJI Yoshinori * stage2/asm.S [DEFINE_TRACK_INT13] (int3_handler): Save the diff --git a/README b/README index 40d98200a..cb3a763d3 100644 --- a/README +++ b/README @@ -15,7 +15,7 @@ See the file NEWS for a description of recent changes to GRUB. You need recent developmental environment to build GRUB. We recommend you use the following utilities: -* binutils 2.9.1.0.23 and later (Do not use early 2.9.1.0.x!) +* binutils 2.9.1.0.23 or later (Do not use early 2.9.1.0.x!) Binutils has changed the behavior of 16bit assembler between 2.9.1 and 2.9.1.0.x, and we support only 2.9.1.0.x and higher. It is available @@ -34,15 +34,21 @@ The latter is what you should see. If you have installed a recent version of binutils but this version number is not identical with it, you need to specify the option ``--with-binutils=DIR'' for configure. +* texinfo 4.0 or later + + We use some new macros in the manuals, so you need a recent TeXinfo +release. See http://www.gnu.org/software/texinfo/texinfo.html, for more +information. + These below are required when you develop GRUB or when you get it from the CVS: -* automake 19990620 and later +* automake 19990620 or later The new feature, per-executable flags, is requred, so you need to get an unreleased version from the CVS. See -http://sourceware.cygnus.com/automake/ for more information. +http://sourceware.cygnus.com/automake/, for more information. See the file INSTALL for instructions on how to build and install the diff --git a/acinclude.m4 b/acinclude.m4 index da38af72b..eeefa67fe 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -1,15 +1,3 @@ -dnl aclocal.m4 generated automatically by aclocal 1.4a - -dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -dnl This program is distributed in the hope that it will be useful, -dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without -dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A -dnl PARTICULAR PURPOSE. - dnl grub_ASM_USCORE checks if C symbols get an underscore after dnl compiling to assembler. dnl Written by Pavel Roskin. Based on grub_ASM_EXT_C written by @@ -295,174 +283,3 @@ fi AC_MSG_RESULT([$grub_cv_check_uscore_end_symbol]) ]) - -# Do all the work for Automake. This macro actually does too much -- -# some checks are only needed if your package does certain things. -# But this isn't really a big deal. - -# serial 1 - -dnl Usage: -dnl AM_INIT_AUTOMAKE(package,version, [no-define]) - -AC_DEFUN(AM_INIT_AUTOMAKE, -[AC_REQUIRE([AC_PROG_INSTALL]) -dnl We require 2.13 because we rely on SHELL being computed by configure. -AC_PREREQ([2.13]) -PACKAGE=[$1] -AC_SUBST(PACKAGE) -VERSION=[$2] -AC_SUBST(VERSION) -dnl test to see if srcdir already configured -if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then - AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) -fi -ifelse([$3],, -AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) -AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])) -AC_REQUIRE([AM_SANITY_CHECK]) -AC_REQUIRE([AC_ARG_PROGRAM]) -dnl FIXME This is truly gross. -missing_dir=`cd $ac_aux_dir && pwd` -AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir) -AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir) -AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir) -AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir) -AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir) -dnl Set install_sh for make dist -install_sh="$missing_dir/install-sh" -test -f "$install_sh" || install_sh="$missing_dir/install.sh" -AC_SUBST(install_sh) -dnl We check for tar when the user configures the end package. -dnl This is sad, since we only need this for "dist". However, -dnl there's no other good way to do it. We prefer GNU tar if -dnl we can find it. If we can't find a tar, it doesn't really matter. -AC_CHECK_PROGS(AMTAR, gnutar gtar tar) -dnl We need awk for the "check" target. The system "awk" is bad on -dnl some platforms. -AC_REQUIRE([AC_PROG_AWK]) -AMTARFLAGS= -if test -n "$AMTAR"; then - if $SHELL -c "$AMTAR --version" > /dev/null 2>&1; then - dnl We have GNU tar. - AMTARFLAGS=o - fi -fi -AC_SUBST(AMTARFLAGS) -AC_REQUIRE([AC_PROG_MAKE_SET])]) - -# -# Check to make sure that the build environment is sane. -# - -AC_DEFUN(AM_SANITY_CHECK, -[AC_MSG_CHECKING([whether build environment is sane]) -# Just in case -sleep 1 -echo timestamp > conftestfile -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null` - if test "[$]*" = "X"; then - # -L didn't work. - set X `ls -t $srcdir/configure conftestfile` - fi - if test "[$]*" != "X $srcdir/configure conftestfile" \ - && test "[$]*" != "X conftestfile $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken -alias in your environment]) - fi - - test "[$]2" = conftestfile - ) -then - # Ok. - : -else - AC_MSG_ERROR([newly created file is older than distributed files! -Check your system clock]) -fi -rm -f conftest* -AC_MSG_RESULT(yes)]) - -dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY) -dnl The program must properly implement --version. -AC_DEFUN(AM_MISSING_PROG, -[AC_MSG_CHECKING(for working $2) -# Run test in a subshell; some versions of sh will print an error if -# an executable is not found, even if stderr is redirected. -# Redirect stdin to placate older versions of autoconf. Sigh. -if ($2 --version) < /dev/null > /dev/null 2>&1; then - $1=$2 - AC_MSG_RESULT(found) -else - $1="$3/missing $2" - AC_MSG_RESULT(missing) -fi -AC_SUBST($1)]) - -# Like AC_CONFIG_HEADER, but automatically create stamp file. - -AC_DEFUN(AM_CONFIG_HEADER, -[AC_PREREQ([2.12]) -AC_CONFIG_HEADER([$1]) -dnl When config.status generates a header, we must update the stamp-h file. -dnl This file resides in the same directory as the config header -dnl that is generated. We must strip everything past the first ":", -dnl and everything past the last "/". -AC_OUTPUT_COMMANDS(changequote(<<,>>)dnl -ifelse(patsubst(<<$1>>, <<[^ ]>>, <<>>), <<>>, -<>CONFIG_HEADERS" || echo timestamp > patsubst(<<$1>>, <<^\([^:]*/\)?.*>>, <<\1>>)stamp-h<<>>dnl>>, -<>; do - case " <<$>>CONFIG_HEADERS " in - *" <<$>>am_file "*<<)>> - echo timestamp > `echo <<$>>am_file | sed -e 's%:.*%%' -e 's%[^/]*$%%'`stamp-h$am_indx - ;; - esac - am_indx=`expr "<<$>>am_indx" + 1` -done<<>>dnl>>) -changequote([,]))]) - -# Add --enable-maintainer-mode option to configure. -# From Jim Meyering - -# serial 1 - -AC_DEFUN(AM_MAINTAINER_MODE, -[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) - dnl maintainer-mode is disabled by default - AC_ARG_ENABLE(maintainer-mode, -[ --enable-maintainer-mode enable make rules and dependencies not useful - (and sometimes confusing) to the casual installer], - USE_MAINTAINER_MODE=$enableval, - USE_MAINTAINER_MODE=no) - AC_MSG_RESULT($USE_MAINTAINER_MODE) - AM_CONDITIONAL(MAINTAINER_MODE, test $USE_MAINTAINER_MODE = yes) - MAINT=$MAINTAINER_MODE_TRUE - AC_SUBST(MAINT)dnl -] -) - -# Define a conditional. - -AC_DEFUN(AM_CONDITIONAL, -[AC_SUBST($1_TRUE) -AC_SUBST($1_FALSE) -if $2; then - $1_TRUE= - $1_FALSE='#' -else - $1_TRUE='#' - $1_FALSE= -fi]) - diff --git a/aclocal.m4 b/aclocal.m4 index b317401e9..da38af72b 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -10,18 +10,6 @@ dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A dnl PARTICULAR PURPOSE. -dnl aclocal.m4 generated automatically by aclocal 1.4a - -dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -dnl This program is distributed in the hope that it will be useful, -dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without -dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A -dnl PARTICULAR PURPOSE. - dnl grub_ASM_USCORE checks if C symbols get an underscore after dnl compiling to assembler. dnl Written by Pavel Roskin. Based on grub_ASM_EXT_C written by @@ -478,4 +466,3 @@ else $1_FALSE= fi]) - diff --git a/config.h.in b/config.h.in index 9ac1a8558..7bd4b3e9b 100644 --- a/config.h.in +++ b/config.h.in @@ -9,6 +9,15 @@ /* Defined if _start is defined. */ #undef HAVE_USCORE_START_SYMBOL +/* Defined if __bss_start is defined. */ +#undef HAVE_USCORE_USCORE_BSS_START_SYMBOL + +/* Defined if edata is defined. */ +#undef HAVE_EDATA_SYMBOL + +/* Defined if _edata is defined. */ +#undef HAVE_USCORE_EDATA_SYMBOL + /* Defined if end is defined. */ #undef HAVE_END_SYMBOL diff --git a/docs/Makefile.am b/docs/Makefile.am index 1d30f9f6a..766305dd9 100644 --- a/docs/Makefile.am +++ b/docs/Makefile.am @@ -24,12 +24,6 @@ EXTRA_DIST = menu.lst $(man_MANS) $(noinst_SCRIPTS) \ %.S.texi: %.S $(srcdir)/$(SRC2TEXI) $(SHELL) $(srcdir)/$(SRC2TEXI) $(srcdir) $< $@ -# FIXME: Use this rule until Debian has the new Texinfo. -grub.info: grub.texi - @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] - cd $(srcdir) \ - && sed 's/@command/@file/g; s/ifnottex/ifinfo/' grub.texi | $(MAKEINFO) - if MAINTAINER_MODE $(srcdir)/grub.8: ../grub/grub $(srcdir)/$(HELP2MAN) $(PERL) $(srcdir)/$(HELP2MAN) --name="the grub shell" \ diff --git a/docs/Makefile.in b/docs/Makefile.in index f2d7de0da..604a067a6 100644 --- a/docs/Makefile.in +++ b/docs/Makefile.in @@ -83,6 +83,9 @@ install_sh = @install_sh@ info_TEXINFOS = grub.texi multiboot.texi +grub_TEXINFOS = tutorial.texi user-ref.texi prog-ref.texi \ + appendices.texi + EXAMPLES = boot.S kernel.c multiboot.h multiboot_TEXINFOS = boot.S.texi kernel.c.texi multiboot.h.texi man_MANS = grub.8 mbchk.1 @@ -90,13 +93,8 @@ HELP2MAN = help2man SRC2TEXI = src2texi noinst_SCRIPTS = $(HELP2MAN) $(SRC2TEXI) -# The unfinished manuals. -UNFINISHED_MANUALS = new-grub.texi tutorial.texi user-ref.texi \ - prog-ref.texi appendices.texi - - EXTRA_DIST = menu.lst $(man_MANS) $(noinst_SCRIPTS) \ - $(EXAMPLES) $(multiboot_TEXINFOS) $(UNFINISHED_MANUALS) + $(EXAMPLES) $(multiboot_TEXINFOS) subdir = docs mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs @@ -114,8 +112,8 @@ man8dir = $(mandir)/man8 MANS = $(man_MANS) NROFF = nroff -DIST_COMMON = $(multiboot_TEXINFOS) Makefile.am Makefile.in mdate-sh \ -stamp-vti texinfo.tex version.texi +DIST_COMMON = $(grub_TEXINFOS) $(multiboot_TEXINFOS) Makefile.am \ +Makefile.in mdate-sh stamp-vti texinfo.tex version.texi DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -155,8 +153,8 @@ distclean-vti: maintainer-clean-vti: -@MAINTAINER_MODE_TRUE@rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi -grub.info: grub.texi version.texi -grub.dvi: grub.texi version.texi +grub.info: grub.texi version.texi $(grub_TEXINFOS) +grub.dvi: grub.texi version.texi $(grub_TEXINFOS) multiboot.info: multiboot.texi $(multiboot_TEXINFOS) @@ -457,12 +455,6 @@ maintainer-clean-generic clean mostlyclean distclean maintainer-clean %.S.texi: %.S $(srcdir)/$(SRC2TEXI) $(SHELL) $(srcdir)/$(SRC2TEXI) $(srcdir) $< $@ -# FIXME: Use this rule until Debian has the new Texinfo. -grub.info: grub.texi - @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] - cd $(srcdir) \ - && sed 's/@command/@file/g; s/ifnottex/ifinfo/' grub.texi | $(MAKEINFO) - @MAINTAINER_MODE_TRUE@$(srcdir)/grub.8: ../grub/grub $(srcdir)/$(HELP2MAN) @MAINTAINER_MODE_TRUE@ $(PERL) $(srcdir)/$(HELP2MAN) --name="the grub shell" \ @MAINTAINER_MODE_TRUE@ --section=8 --output=$@ $< diff --git a/stage1/stage1.S b/stage1/stage1.S index 79a0c7e87..8407502f8 100644 --- a/stage1/stage1.S +++ b/stage1/stage1.S @@ -102,6 +102,14 @@ after_BPB: /* general setup */ cli /* we're not safe here! */ + /* + * ljmp to the next instruction because some bogus BIOSes + * jump to 07C0:0000 instead of 0000:7C00. + */ + ljmp $0, $ABS(real_start) + +real_start: + /* set up %ds and %ss as offset from 0 */ xorw %ax, %ax movw %ax, %ds