merge mainline into yeeloongfw

This commit is contained in:
Vladimir 'phcoder' Serbinenko 2010-03-07 23:21:09 +01:00
commit c28e2d120b
48 changed files with 630 additions and 229 deletions

226
ChangeLog
View file

@ -1,3 +1,229 @@
2010-03-07 Vladimir Serbinenko <phcoder@gmail.com>
* genmoddep.awk: Output all missing symbols and not only first.
2010-03-06 Vladimir Serbinenko <phcoder@gmail.com>
* NEWS: Put the date of 1.98 release.
2010-03-06 Vladimir Serbinenko <phcoder@gmail.com>
* configure.ac: Update CPPFLAGS and not CFLAGS when checking for
ft2build.h.
2010-03-06 Vladimir Serbinenko <phcoder@gmail.com>
* normal/cmdline.c (grub_cmdline_get): Fix gabled line after
completition in the middle of string.
2010-03-06 Vladimir Serbinenko <phcoder@gmail.com>
* util/grub-mkrescue.in: Use mktemp with explicit template.
2010-03-06 Vladimir Serbinenko <phcoder@gmail.com>
* loader/i386/bsd.c (grub_bsd_get_device): Fix a memory leak.
2010-03-06 Vladimir Serbinenko <phcoder@gmail.com>
* loader/i386/multiboot_mbi.c (grub_multiboot_set_bootdev): Free the
right pointer.
2010-03-05 Vladimir Serbinenko <phcoder@gmail.com>
Fix FreeBSD compilation.
* Makefile.in (TARGET_CPPFLAGS): Remove -nostdinc -isystem.
* configure.ac: Add -nostdinc -isystem to TARGET_CPPFLAGS if it works.
2010-03-05 Vladimir Serbinenko <phcoder@gmail.com>
* util/import_gcry.py: Add autogenerated files to MAINTAINER_CLEANFILES.
2010-03-04 Vladimir Serbinenko <phcoder@gmail.com>
* gettext/gettext.c (grub_gettext_init_ext): Fix a memory leak.
2010-03-04 Vladimir Serbinenko <phcoder@gmail.com>
* disk/scsi.c (grub_scsi_iterate): Fix a memory leak.
2010-03-04 Robert Millan <rmh.grub@aybabtu.com>
Support relative image path in theme file.
* gfxmenu/gui_image.c (grub_gui_image): New member theme_dir.
(image_set_property): Handle theme_dir and relative path.
2010-03-04 Vladimir Serbinenko <phcoder@gmail.com>
* configure.ac: Alias amd64 to x86_64.
2010-03-04 Vladimir Serbinenko <phcoder@gmail.com>
* NEWS: mention multiboot on EFI.
2010-03-04 Vladimir Serbinenko <phcoder@gmail.com>
* kern/main.c (grub_load_modules): Handle errors from init functions of
embeded modules.
2010-03-04 Vladimir Serbinenko <phcoder@gmail.com>
* normal/autofs.c (autoload_fs_module): Handle errors.
2010-03-04 Vladimir Serbinenko <phcoder@gmail.com>
Disable linux.mod on qemu-mips since it's not functional and leads
to compilation failure.
* conf/mips.rmk (pkglib_MODULES): Remove linux.mod.
* conf/mips-yeeloong.rmk (pkglib_MODULES): Add linux.mod.
* conf/mips.rmk (linux_mod_SOURCES): Move from here ...
* conf/mips-yeeloong.rmk (linux_mod_SOURCES): ... here
* conf/mips.rmk (linux_mod_CFLAGS): Move from here ...
* conf/mips-yeeloong.rmk (linux_mod_CFLAGS): ... here
* conf/mips.rmk (linux_mod_ASFLAGS): Move from here ...
* conf/mips-yeeloong.rmk (linux_mod_ASFLAGS): ... here
* conf/mips.rmk (linux_mod_LDFLAGS): Move from here ...
* conf/mips-yeeloong.rmk (linux_mod_LDFLAGS): ... here
Reported by: BVK Chaitanya
2010-03-04 Jordan Uggla <jordan.uggla@gmail.com>
* INSTALL: Add gettext as a dependency and add qemu to a new section
"Prerequisites for make-check".
2010-03-04 Christian Franke <franke@computer.org>
* util/grub-pe2elf.c: Add missing include "progname.h".
2010-03-04 Vladimir Serbinenko <phcoder@gmail.com>
* normal/crypto.c (read_crypto_list): Fix a typo.
Reported by: Seth Goldberg.
2010-03-04 Vladimir Serbinenko <phcoder@gmail.com>
* Makefile.in (DISTCLEANFILES): Add stamp-h1.
Reported by: Seth Goldberg.
2010-03-04 Vladimir Serbinenko <phcoder@gmail.com>
* Makefile.in (CLEANFILES) [FONT_SOURCE && grub_mkfont]: Add
ascii.bitmaps.
2010-03-04 Vladimir Serbinenko <phcoder@gmail.com>
* genmk.rb: Remove terminal*.lst in make clean.
Reported by: Seth Goldberg.
2010-03-04 Vladimir Serbinenko <phcoder@gmail.com>
* util/i386/efi/grub-install.in: Copy gettext files.
2010-03-01 Vladimir Serbinenko <phcoder@gmail.com>
* fs/ext2.c (grub_ext2_read_block): Fix an integer overflow.
2010-03-01 Vladimir Serbinenko <phcoder@gmail.com>
Wait for user entry basing on presence of output rather than on errors.
* include/grub/normal.h (grub_normal_get_line_counter): New proto.
(grub_install_newline_hook): Likewise.
* normal/main.c (GRUB_MOD_INIT): Call grub_install_newline_hook.
* normal/menu.c (show_menu): Check line_counter to determine presence
of output.
* normal/term.c (grub_normal_line_counter): New variable.
(grub_normal_get_line_counter): New function.
(grub_install_newline_hook): Likewise.
2010-03-01 Vladimir Serbinenko <phcoder@gmail.com>
* commands/cat.c (grub_cmd_cat): Propagate grub_gzfile_open error.
2010-03-01 Vladimir Serbinenko <phcoder@gmail.com>
* configure.ac: Update version to 1.98.
2010-02-26 Vladimir Serbinenko <phcoder@gmail.com>
* util/grub.d/10_linux.in (linux_entry): Don't default to
gfxpayload=keep if Linux doesn't support video handover.
2010-02-25 Vladimir Serbinenko <phcoder@gmail.com>
Don't compile video modules on yeeloong since video subsystem is part
of kernel.
* conf/common.rmk (pkglib_MODULES) [yeeloong]: Remove video.mod,
video_fb.mod, bitmap.mod, font.mod, gfxterm.mod and bufio.mod
* conf/mips-yeeloong.rmk (kernel_img_HEADERS): Add bitmap.h,
video.h, gfxterm.h, font.h, bitmap_scale.h and bufio.h.
* conf/mips.rmk (kernel_img_HEADERS): Add values instead of overwriting.
* include/grub/bitmap.h: Add EXPORT_FUNC and EXPORT_VAR.
* include/grub/bitmap_scale.h: Likewise.
* include/grub/bufio.h: Likewise.
* include/grub/font.h: Likewise.
* include/grub/gfxterm.h: Likewise.
* include/grub/video.h: Likewise.
* include/grub/vbe.h: Don't include video_fb.h.
* video/i386/pc/vbe.c: Include video_fb.h.
* commands/i386/pc/vbetest.c: Include video.h.
2010-02-25 Jordan Uggla <jordan.uggla@gmail.com>
* util/grub-mkconfig.in (GRUB_SAVEDEFAULT): Export new variable.
* util/grub-mkconfig_lib.in (save_default_entry): Only save a new
default entry if GRUB_SAVEDEFAULT=true. This allows using
GRUB_DEFAULT=saved on its own to let grub-reboot work, without
saving a new default on every boot.
2010-02-24 Vladimir Serbinenko <phcoder@gmail.com>
* normal/crypto.c (read_crypto_list): Fix a memory leak.
* normal/term.c (read_terminal_list): Likewise.
* normal/main.c (grub_normal_init_page): Likewise.
(grub_normal_read_line_real): Likewise.
2010-02-24 Vladimir Serbinenko <phcoder@gmail.com>
* loader/i386/multiboot_mbi.c (grub_multiboot_set_bootdev): Fix a
memory leak.
Reported by: Seth Goldberg.
2010-02-24 Joey Korkames <joey+lists@kidfixit.com>
* term/ieee1275/ofconsole.c (grub_ofconsole_readkey): Remove
duplicate declaration of `start'.
2010-02-20 Vladimir Serbinenko <phcoder@gmail.com>
* fs/iso9660.c (grub_iso9660_iterate_dir): Strip version from joliet
filename.
Reported by: Georgy Buranov
2010-02-20 Carles Pina i Estany <carles@pina.cat>
* util/grub-mkrawimage.c (usage): Change string formatting to
improve gettext.
2010-02-20 Manoel Rebelo Abranches <mrabran@br.ibm.com>
* term/ieee1275/ofconsole.c (grub_ofconsole_readkey): Add delete and
backspace keys.
2010-02-20 Vladimir Serbinenko <phcoder@gmail.com>
* video/fb/video_fb.c (grub_video_fb_scroll): Fix a pixel size bug.
Reported by: Michael Suchanek.
2010-02-18 Samuel Thibault <samuel.thibault@ens-lyon.org>
* util/grub-mkconfig.in: Export GRUB_INIT_TUNE.
* util/grub.d/00_header.in: Handle GRUB_INIT_TUNE.
2010-02-16 Vladimir Serbinenko <phcoder@gmail.com> 2010-02-16 Vladimir Serbinenko <phcoder@gmail.com>
Remove any reference to non-free fonts. Remove any reference to non-free fonts.

View file

@ -14,6 +14,7 @@ configuring the GRUB.
* GCC 4.1.3 or later * GCC 4.1.3 or later
* GNU Make * GNU Make
* GNU Bison 2.3 or later * GNU Bison 2.3 or later
* GNU gettext 0.17 or later
* GNU binutils 2.9.1.0.23 or later * GNU binutils 2.9.1.0.23 or later
* Other standard GNU/Unix tools * Other standard GNU/Unix tools
@ -25,6 +26,10 @@ need the following.
* Autoconf 2.60 or later * Autoconf 2.60 or later
* Automake 1.10.1 or later * Automake 1.10.1 or later
Prerequisites for make-check:
* qemu, specifically the binary 'qemu-system-i386'
Configuring the GRUB Configuring the GRUB
==================== ====================

View file

@ -89,7 +89,7 @@ TARGET_ASFLAGS = @TARGET_ASFLAGS@
TARGET_MODULE_FORMAT = @TARGET_MODULE_FORMAT@ TARGET_MODULE_FORMAT = @TARGET_MODULE_FORMAT@
TARGET_APPLE_CC = @TARGET_APPLE_CC@ TARGET_APPLE_CC = @TARGET_APPLE_CC@
OBJCONV = @OBJCONV@ OBJCONV = @OBJCONV@
TARGET_CPPFLAGS = @TARGET_CPPFLAGS@ -nostdinc -isystem $(shell $(TARGET_CC) -print-file-name=include) -I$(srcdir)/include -I$(builddir) -I$(builddir)/include \ TARGET_CPPFLAGS = @TARGET_CPPFLAGS@ -I$(srcdir)/include -I$(builddir) -I$(builddir)/include \
-Wall -W -Wall -W
TARGET_LDFLAGS = @TARGET_LDFLAGS@ TARGET_LDFLAGS = @TARGET_LDFLAGS@
TARGET_IMG_LDSCRIPT = @TARGET_IMG_LDSCRIPT@ TARGET_IMG_LDSCRIPT = @TARGET_IMG_LDSCRIPT@
@ -147,7 +147,7 @@ INFOS = $(info_INFOS)
CLEANFILES = CLEANFILES =
MOSTLYCLEANFILES = MOSTLYCLEANFILES =
DISTCLEANFILES = config.status config.cache config.log config.h \ DISTCLEANFILES = config.status config.cache config.log config.h \
Makefile stamp-h include/grub/cpu include/grub/machine \ Makefile stamp-h stamp-h1 include/grub/cpu include/grub/machine \
gensymlist.sh genkernsyms.sh build_env.mk \ gensymlist.sh genkernsyms.sh build_env.mk \
docs/grub.info docs/version.texi docs/stamp-vti docs/grub.info docs/version.texi docs/stamp-vti
@ -239,6 +239,7 @@ else
ifeq ($(enable_grub_mkfont),yes) ifeq ($(enable_grub_mkfont),yes)
pkgdata_DATA += unicode.pf2 ascii.pf2 ascii.h pkgdata_DATA += unicode.pf2 ascii.pf2 ascii.h
CLEANFILES += ascii.bitmaps
# Arrows and lines are needed to draw the menu, so we always include them # Arrows and lines are needed to draw the menu, so we always include them
UNICODE_ARROWS=0x2190-0x2193 UNICODE_ARROWS=0x2190-0x2193

4
NEWS
View file

@ -1,4 +1,6 @@
New in 1.98: New in 1.98 - 2010-03-06:
* Multiboot on EFI support.
* Graphical menu support. * Graphical menu support.

View file

@ -41,7 +41,7 @@ grub_cmd_cat (grub_command_t cmd __attribute__ ((unused)),
file = grub_gzfile_open (args[0], 1); file = grub_gzfile_open (args[0], 1);
if (! file) if (! file)
return 0; return grub_errno;
while ((size = grub_file_read (file, buf, sizeof (buf))) > 0 while ((size = grub_file_read (file, buf, sizeof (buf))) > 0
&& key != GRUB_TERM_ESC) && key != GRUB_TERM_ESC)

View file

@ -24,6 +24,7 @@
#include <grub/term.h> #include <grub/term.h>
#include <grub/machine/init.h> #include <grub/machine/init.h>
#include <grub/machine/vbe.h> #include <grub/machine/vbe.h>
#include <grub/video.h>
#include <grub/err.h> #include <grub/err.h>
#include <grub/i18n.h> #include <grub/i18n.h>

View file

@ -621,26 +621,28 @@ sh_mod_SOURCES = script/main.c script/script.c script/execute.c \
sh_mod_CFLAGS = $(COMMON_CFLAGS) sh_mod_CFLAGS = $(COMMON_CFLAGS)
sh_mod_LDFLAGS = $(COMMON_LDFLAGS) sh_mod_LDFLAGS = $(COMMON_LDFLAGS)
ifneq (, $(FONT_SOURCE))
font/font.c_DEPENDENCIES = ascii.h
endif
# Common Video Subsystem specific modules. # Common Video Subsystem specific modules.
pkglib_MODULES += video.mod videotest.mod bitmap.mod tga.mod jpeg.mod \ # On Yeeloong it's part of kernel
png.mod gfxterm.mod video_fb.mod ifneq ($(platform), yeeloong)
# For video.mod. # For video.mod.
pkglib_MODULES += video.mod
video_mod_SOURCES = video/video.c video_mod_SOURCES = video/video.c
video_mod_CFLAGS = $(COMMON_CFLAGS) video_mod_CFLAGS = $(COMMON_CFLAGS)
video_mod_LDFLAGS = $(COMMON_LDFLAGS) video_mod_LDFLAGS = $(COMMON_LDFLAGS)
pkglib_MODULES += video_fb.mod
video_fb_mod_SOURCES = video/fb/video_fb.c video/fb/fbblit.c \ video_fb_mod_SOURCES = video/fb/video_fb.c video/fb/fbblit.c \
video/fb/fbfill.c video/fb/fbutil.c video/fb/fbfill.c video/fb/fbutil.c
video_fb_mod_CFLAGS = $(COMMON_CFLAGS) video_fb_mod_CFLAGS = $(COMMON_CFLAGS)
video_fb_mod_LDFLAGS = $(COMMON_LDFLAGS) video_fb_mod_LDFLAGS = $(COMMON_LDFLAGS)
# For videotest.mod.
videotest_mod_SOURCES = commands/videotest.c
videotest_mod_CFLAGS = $(COMMON_CFLAGS)
videotest_mod_LDFLAGS = $(COMMON_LDFLAGS)
# For bitmap.mod # For bitmap.mod
pkglib_MODULES += bitmap.mod
bitmap_mod_SOURCES = video/bitmap.c bitmap_mod_SOURCES = video/bitmap.c
bitmap_mod_CFLAGS = $(COMMON_CFLAGS) bitmap_mod_CFLAGS = $(COMMON_CFLAGS)
bitmap_mod_LDFLAGS = $(COMMON_LDFLAGS) bitmap_mod_LDFLAGS = $(COMMON_LDFLAGS)
@ -651,36 +653,46 @@ bitmap_scale_mod_SOURCES = video/bitmap_scale.c
bitmap_scale_mod_CFLAGS = $(COMMON_CFLAGS) bitmap_scale_mod_CFLAGS = $(COMMON_CFLAGS)
bitmap_scale_mod_LDFLAGS = $(COMMON_LDFLAGS) bitmap_scale_mod_LDFLAGS = $(COMMON_LDFLAGS)
# For tga.mod
tga_mod_SOURCES = video/readers/tga.c
tga_mod_CFLAGS = $(COMMON_CFLAGS)
tga_mod_LDFLAGS = $(COMMON_LDFLAGS)
# For jpeg.mod.
jpeg_mod_SOURCES = video/readers/jpeg.c
jpeg_mod_CFLAGS = $(COMMON_CFLAGS)
jpeg_mod_LDFLAGS = $(COMMON_LDFLAGS)
# For png.mod.
png_mod_SOURCES = video/readers/png.c
png_mod_CFLAGS = $(COMMON_CFLAGS)
png_mod_LDFLAGS = $(COMMON_LDFLAGS)
pkglib_MODULES += font.mod pkglib_MODULES += font.mod
ifneq (, $(FONT_SOURCE))
font/font.c_DEPENDENCIES = ascii.h
endif
font_mod_SOURCES = font/font_cmd.c font/font.c font_mod_SOURCES = font/font_cmd.c font/font.c
font_mod_CFLAGS = $(COMMON_CFLAGS) font_mod_CFLAGS = $(COMMON_CFLAGS)
font_mod_LDFLAGS = $(COMMON_LDFLAGS) font_mod_LDFLAGS = $(COMMON_LDFLAGS)
# For gfxterm.mod. # For gfxterm.mod.
pkglib_MODULES += gfxterm.mod
gfxterm_mod_SOURCES = term/gfxterm.c gfxterm_mod_SOURCES = term/gfxterm.c
gfxterm_mod_CFLAGS = $(COMMON_CFLAGS) gfxterm_mod_CFLAGS = $(COMMON_CFLAGS)
gfxterm_mod_LDFLAGS = $(COMMON_LDFLAGS) gfxterm_mod_LDFLAGS = $(COMMON_LDFLAGS)
endif
# For videotest.mod.
pkglib_MODULES += videotest.mod
videotest_mod_SOURCES = commands/videotest.c
videotest_mod_CFLAGS = $(COMMON_CFLAGS)
videotest_mod_LDFLAGS = $(COMMON_LDFLAGS)
# For tga.mod
pkglib_MODULES += tga.mod
tga_mod_SOURCES = video/readers/tga.c
tga_mod_CFLAGS = $(COMMON_CFLAGS)
tga_mod_LDFLAGS = $(COMMON_LDFLAGS)
# For jpeg.mod.
pkglib_MODULES += jpeg.mod
jpeg_mod_SOURCES = video/readers/jpeg.c
jpeg_mod_CFLAGS = $(COMMON_CFLAGS)
jpeg_mod_LDFLAGS = $(COMMON_LDFLAGS)
# For png.mod.
pkglib_MODULES += png.mod
png_mod_SOURCES = video/readers/png.c
png_mod_CFLAGS = $(COMMON_CFLAGS)
png_mod_LDFLAGS = $(COMMON_LDFLAGS)
# Misc. # Misc.
pkglib_MODULES += gzio.mod bufio.mod elf.mod pkglib_MODULES += gzio.mod elf.mod
# For elf.mod. # For elf.mod.
elf_mod_SOURCES = kern/elf.c elf_mod_SOURCES = kern/elf.c
@ -692,10 +704,14 @@ gzio_mod_SOURCES = io/gzio.c
gzio_mod_CFLAGS = $(COMMON_CFLAGS) gzio_mod_CFLAGS = $(COMMON_CFLAGS)
gzio_mod_LDFLAGS = $(COMMON_LDFLAGS) gzio_mod_LDFLAGS = $(COMMON_LDFLAGS)
# On Yeeloong it's part of kernel
ifneq ($(platform), yeeloong)
# For bufio.mod. # For bufio.mod.
pkglib_MODULES += bufio.mod
bufio_mod_SOURCES = io/bufio.c bufio_mod_SOURCES = io/bufio.c
bufio_mod_CFLAGS = $(COMMON_CFLAGS) bufio_mod_CFLAGS = $(COMMON_CFLAGS)
bufio_mod_LDFLAGS = $(COMMON_LDFLAGS) bufio_mod_LDFLAGS = $(COMMON_LDFLAGS)
endif
# For gettext.mod. # For gettext.mod.
pkglib_MODULES += gettext.mod pkglib_MODULES += gettext.mod

View file

@ -3,6 +3,10 @@ LINK_BASE = 0x80200000
target_machine=yeeloong target_machine=yeeloong
COMMON_CFLAGS += -march=mips3 COMMON_CFLAGS += -march=mips3
COMMON_ASFLAGS += -march=mips3 COMMON_ASFLAGS += -march=mips3
kernel_img_HEADERS += bitmap.h video.h gfxterm.h font.h bitmap_scale.h bufio.h \
cs5536.h
include $(srcdir)/conf/mips.mk include $(srcdir)/conf/mips.mk
pkglib_IMAGES = kernel.img pkglib_IMAGES = kernel.img
@ -23,6 +27,7 @@ kernel_img_SOURCES = kern/$(target_cpu)/startup.S \
video/fb/fbfill.c video/fb/fbutil.c video/bitmap.c \ video/fb/fbfill.c video/fb/fbutil.c video/bitmap.c \
video/bitmap_scale.c video/sm712.c bus/pci.c bus/bonito.c \ video/bitmap_scale.c video/sm712.c bus/pci.c bus/bonito.c \
term/gfxterm.c commands/extcmd.c lib/arg.c \ term/gfxterm.c commands/extcmd.c lib/arg.c \
bus/cs5536.c \
symlist.c symlist.c
kernel_img_CFLAGS = $(COMMON_CFLAGS) -DUSE_ASCII_FAILBACK kernel_img_CFLAGS = $(COMMON_CFLAGS) -DUSE_ASCII_FAILBACK
kernel_img_ASFLAGS = $(COMMON_ASFLAGS) kernel_img_ASFLAGS = $(COMMON_ASFLAGS)
@ -87,11 +92,11 @@ lsspd_mod_SOURCES = commands/mips/yeeloong/lsspd.c
lsspd_mod_CFLAGS = $(COMMON_CFLAGS) lsspd_mod_CFLAGS = $(COMMON_CFLAGS)
lsspd_mod_LDFLAGS = $(COMMON_LDFLAGS) lsspd_mod_LDFLAGS = $(COMMON_LDFLAGS)
# For cs5536.mod pkglib_MODULES += linux.mod
pkglib_MODULES += cs5536.mod linux_mod_SOURCES = loader/$(target_cpu)/linux.c
cs5536_mod_SOURCES = bus/cs5536.c linux_mod_CFLAGS = $(COMMON_CFLAGS)
cs5536_mod_CFLAGS = $(COMMON_CFLAGS) linux_mod_ASFLAGS = $(COMMON_ASFLAGS)
cs5536_mod_LDFLAGS = $(COMMON_LDFLAGS) linux_mod_LDFLAGS = $(COMMON_LDFLAGS)
sbin_SCRIPTS += grub-install sbin_SCRIPTS += grub-install
grub_install_SOURCES = util/grub-install.in grub_install_SOURCES = util/grub-install.in

View file

@ -13,7 +13,7 @@ script/lexer.c_DEPENDENCIES = grub_script.tab.h
MOSTLYCLEANFILES += symlist.c kernel_syms.lst MOSTLYCLEANFILES += symlist.c kernel_syms.lst
DEFSYMFILES += kernel_syms.lst DEFSYMFILES += kernel_syms.lst
kernel_img_HEADERS = boot.h cache.h device.h disk.h dl.h elf.h elfload.h \ kernel_img_HEADERS += boot.h cache.h device.h disk.h dl.h elf.h elfload.h \
env.h err.h file.h fs.h kernel.h misc.h mm.h net.h parser.h reader.h \ env.h err.h file.h fs.h kernel.h misc.h mm.h net.h parser.h reader.h \
symbol.h term.h time.h types.h loader.h partition.h \ symbol.h term.h time.h types.h loader.h partition.h \
msdos_partition.h machine/kernel.h handler.h list.h \ msdos_partition.h machine/kernel.h handler.h list.h \
@ -73,10 +73,4 @@ relocator_mod_CFLAGS = $(COMMON_CFLAGS)
relocator_mod_ASFLAGS = $(COMMON_ASFLAGS) relocator_mod_ASFLAGS = $(COMMON_ASFLAGS)
relocator_mod_LDFLAGS = $(COMMON_LDFLAGS) relocator_mod_LDFLAGS = $(COMMON_LDFLAGS)
pkglib_MODULES += linux.mod
linux_mod_SOURCES = loader/$(target_cpu)/linux.c
linux_mod_CFLAGS = $(COMMON_CFLAGS)
linux_mod_ASFLAGS = $(COMMON_ASFLAGS)
linux_mod_LDFLAGS = $(COMMON_LDFLAGS)
include $(srcdir)/conf/common.mk include $(srcdir)/conf/common.mk

View file

@ -31,7 +31,7 @@ dnl (such as TARGET_CC, TARGET_CFLAGS, etc.) are used for the target
dnl type. dnl type.
AC_INIT([GRUB],[1.97],[bug-grub@gnu.org]) AC_INIT([GRUB],[1.98],[bug-grub@gnu.org])
AM_INIT_AUTOMAKE() AM_INIT_AUTOMAKE()
AC_PREREQ(2.60) AC_PREREQ(2.60)
AC_CONFIG_SRCDIR([include/grub/dl.h]) AC_CONFIG_SRCDIR([include/grub/dl.h])
@ -51,6 +51,7 @@ fi
case "$target_cpu" in case "$target_cpu" in
i[[3456]]86) target_cpu=i386 ;; i[[3456]]86) target_cpu=i386 ;;
amd64) target_cpu=x86_64 ;;
sparc) target_cpu=sparc64 ;; sparc) target_cpu=sparc64 ;;
mipsel|mips64el) mipsel|mips64el)
target_cpu=mips; target_cpu=mips;
@ -516,6 +517,19 @@ enable_efiemu=no
fi fi
AC_SUBST([enable_efiemu]) AC_SUBST([enable_efiemu])
AC_CACHE_CHECK([whether -nostdinc -isystem works], [grub_cv_cc_isystem], [
SAVED_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$TARGET_CPPFLAGS -nostdinc -isystem `$TARGET_CC -print-file-name=include`"
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdarg.h>
int va_arg_func (int fixed, va_list args);]], [[]])],
[grub_cv_cc_isystem=yes],
[grub_cv_cc_isystem=no])
CPPFLAGS="$SAVED_CPPFLAGS"
])
if test x"$grub_cv_cc_isystem" = xyes ; then
TARGET_CPPFLAGS="$TARGET_CPPFLAGS -nostdinc -isystem `$TARGET_CC -print-file-name=include`"
fi
# Restore the flags. # Restore the flags.
CC="$tmp_CC" CC="$tmp_CC"
@ -682,11 +696,11 @@ fi
if test x"$grub_mkfont_excuse" = x ; then if test x"$grub_mkfont_excuse" = x ; then
# Check for freetype libraries. # Check for freetype libraries.
SAVED_CFLAGS="$CFLAGS" SAVED_CPPFLAGS="$CPPFLAGS"
CFLAGS="$CFLAGS $freetype_cflags" CPPFLAGS="$CPPFLAGS $freetype_cflags"
AC_CHECK_HEADERS([ft2build.h], [], AC_CHECK_HEADERS([ft2build.h], [],
[grub_mkfont_excuse=["need freetype2 headers"]]) [grub_mkfont_excuse=["need freetype2 headers"]])
CFLAGS="$SAVED_CFLAGS" CPPFLAGS="$SAVED_CPPFLAGS"
fi fi
if test x"$enable_grub_mkfont" = xyes && test x"$grub_mkfont_excuse" != x ; then if test x"$enable_grub_mkfont" = xyes && test x"$grub_mkfont_excuse" != x ; then

View file

@ -208,12 +208,14 @@ grub_scsi_iterate (int (*hook) (const char *name))
for (i = 0; i < luns; i++) for (i = 0; i < luns; i++)
{ {
char *sname; char *sname;
int ret;
sname = grub_xasprintf ("%s%c", name, 'a' + i); sname = grub_xasprintf ("%s%c", name, 'a' + i);
if (!sname) if (!sname)
return 1; return 1;
if (hook (sname)) ret = hook (sname);
return 1;
grub_free (sname); grub_free (sname);
if (ret)
return 1;
} }
return 0; return 0;
} }

View file

@ -436,7 +436,8 @@ grub_ext2_read_block (grub_fshelp_node_t node, grub_disk_addr_t fileblock)
grub_uint32_t indir[blksz / 4]; grub_uint32_t indir[blksz / 4];
if (grub_disk_read (data->disk, if (grub_disk_read (data->disk,
grub_le_to_cpu32 (inode->blocks.indir_block) ((grub_disk_addr_t)
grub_le_to_cpu32 (inode->blocks.indir_block))
<< log2_blksz, << log2_blksz,
0, blksz, indir)) 0, blksz, indir))
return grub_errno; return grub_errno;
@ -452,13 +453,15 @@ grub_ext2_read_block (grub_fshelp_node_t node, grub_disk_addr_t fileblock)
grub_uint32_t indir[blksz / 4]; grub_uint32_t indir[blksz / 4];
if (grub_disk_read (data->disk, if (grub_disk_read (data->disk,
grub_le_to_cpu32 (inode->blocks.double_indir_block) ((grub_disk_addr_t)
grub_le_to_cpu32 (inode->blocks.double_indir_block))
<< log2_blksz, << log2_blksz,
0, blksz, indir)) 0, blksz, indir))
return grub_errno; return grub_errno;
if (grub_disk_read (data->disk, if (grub_disk_read (data->disk,
grub_le_to_cpu32 (indir[rblock / perblock]) ((grub_disk_addr_t)
grub_le_to_cpu32 (indir[rblock / perblock]))
<< log2_blksz, << log2_blksz,
0, blksz, indir)) 0, blksz, indir))
return grub_errno; return grub_errno;

View file

@ -629,12 +629,16 @@ grub_iso9660_iterate_dir (grub_fshelp_node_t dir,
if (dir->data->joliet) if (dir->data->joliet)
{ {
char *oldname; char *oldname, *semicolon;
oldname = filename; oldname = filename;
filename = grub_iso9660_convert_string filename = grub_iso9660_convert_string
((grub_uint16_t *) oldname, dirent.namelen >> 1); ((grub_uint16_t *) oldname, dirent.namelen >> 1);
semicolon = grub_strrchr (filename, ';');
if (semicolon)
*semicolon = '\0';
if (filename_alloc) if (filename_alloc)
grub_free (oldname); grub_free (oldname);

View file

@ -201,7 +201,7 @@ endif
-include #{dep} -include #{dep}
clean-module-#{extra_target}.#{@rule_count}: clean-module-#{extra_target}.#{@rule_count}:
rm -f #{command} #{fs} #{partmap} #{handler} #{parttool} #{video} rm -f #{command} #{fs} #{partmap} #{handler} #{parttool} #{video} #{terminal}
CLEAN_MODULE_TARGETS += clean-module-#{extra_target}.#{@rule_count} CLEAN_MODULE_TARGETS += clean-module-#{extra_target}.#{@rule_count}

View file

@ -32,13 +32,12 @@ FNR == 1 {
else if ($1 != "__gnu_local_gp") { else if ($1 != "__gnu_local_gp") {
printf "%s in %s is not defined\n", $1, module >"/dev/stderr"; printf "%s in %s is not defined\n", $1, module >"/dev/stderr";
error++; error++;
exit;
} }
} }
# Output the result. # Output the result.
END { END {
if (error == 1) if (error >= 1)
exit 1; exit 1;
for (mod in modtab) { for (mod in modtab) {

View file

@ -279,13 +279,6 @@ grub_gettext_init_ext (const char *lang)
/* mo_file e.g.: /boot/grub/locale/ca.mo */ /* mo_file e.g.: /boot/grub/locale/ca.mo */
mo_file =
grub_malloc (grub_strlen (locale_dir) + grub_strlen ("/") +
grub_strlen (lang) + grub_strlen (".mo") + 1);
/* Warning: if changing some paths in the below line, change the grub_malloc
contents below. */
mo_file = grub_xasprintf ("%s/%s.mo", locale_dir, lang); mo_file = grub_xasprintf ("%s/%s.mo", locale_dir, lang);
if (!mo_file) if (!mo_file)
return; return;

View file

@ -31,6 +31,7 @@ struct grub_gui_image
grub_gui_container_t parent; grub_gui_container_t parent;
grub_video_rect_t bounds; grub_video_rect_t bounds;
char *id; char *id;
char *theme_dir;
struct grub_video_bitmap *raw_bitmap; struct grub_video_bitmap *raw_bitmap;
struct grub_video_bitmap *bitmap; struct grub_video_bitmap *bitmap;
}; };
@ -208,8 +209,28 @@ static grub_err_t
image_set_property (void *vself, const char *name, const char *value) image_set_property (void *vself, const char *name, const char *value)
{ {
grub_gui_image_t self = vself; grub_gui_image_t self = vself;
if (grub_strcmp (name, "file") == 0) if (grub_strcmp (name, "theme_dir") == 0)
return load_image (self, value); {
grub_free (self->theme_dir);
self->theme_dir = grub_strdup (value);
}
else if (grub_strcmp (name, "file") == 0)
{
char *absvalue;
grub_err_t err;
/* Resolve to an absolute path. */
if (! self->theme_dir)
return grub_error (GRUB_ERR_BAD_ARGUMENT, "unspecified theme_dir");
absvalue = grub_resolve_relative_path (self->theme_dir, value);
if (! absvalue)
return grub_errno;
err = load_image (self, absvalue);
grub_free (absvalue);
return err;
}
else if (grub_strcmp (name, "id") == 0) else if (grub_strcmp (name, "id") == 0)
{ {
grub_free (self->id); grub_free (self->id);

View file

@ -47,24 +47,24 @@ struct grub_video_bitmap_reader
}; };
typedef struct grub_video_bitmap_reader *grub_video_bitmap_reader_t; typedef struct grub_video_bitmap_reader *grub_video_bitmap_reader_t;
void grub_video_bitmap_reader_register (grub_video_bitmap_reader_t reader); void EXPORT_FUNC (grub_video_bitmap_reader_register) (grub_video_bitmap_reader_t reader);
void grub_video_bitmap_reader_unregister (grub_video_bitmap_reader_t reader); void EXPORT_FUNC (grub_video_bitmap_reader_unregister) (grub_video_bitmap_reader_t reader);
grub_err_t grub_video_bitmap_create (struct grub_video_bitmap **bitmap, grub_err_t EXPORT_FUNC (grub_video_bitmap_create) (struct grub_video_bitmap **bitmap,
unsigned int width, unsigned int height, unsigned int width, unsigned int height,
enum grub_video_blit_format blit_format); enum grub_video_blit_format blit_format);
grub_err_t grub_video_bitmap_destroy (struct grub_video_bitmap *bitmap); grub_err_t EXPORT_FUNC (grub_video_bitmap_destroy) (struct grub_video_bitmap *bitmap);
grub_err_t grub_video_bitmap_load (struct grub_video_bitmap **bitmap, grub_err_t EXPORT_FUNC (grub_video_bitmap_load) (struct grub_video_bitmap **bitmap,
const char *filename); const char *filename);
unsigned int grub_video_bitmap_get_width (struct grub_video_bitmap *bitmap); unsigned int EXPORT_FUNC (grub_video_bitmap_get_width) (struct grub_video_bitmap *bitmap);
unsigned int grub_video_bitmap_get_height (struct grub_video_bitmap *bitmap); unsigned int EXPORT_FUNC (grub_video_bitmap_get_height) (struct grub_video_bitmap *bitmap);
void grub_video_bitmap_get_mode_info (struct grub_video_bitmap *bitmap, void EXPORT_FUNC (grub_video_bitmap_get_mode_info) (struct grub_video_bitmap *bitmap,
struct grub_video_mode_info *mode_info); struct grub_video_mode_info *mode_info);
void *grub_video_bitmap_get_data (struct grub_video_bitmap *bitmap); void *EXPORT_FUNC (grub_video_bitmap_get_data) (struct grub_video_bitmap *bitmap);
#endif /* ! GRUB_BITMAP_HEADER */ #endif /* ! GRUB_BITMAP_HEADER */

View file

@ -39,10 +39,11 @@ enum grub_video_bitmap_scale_method
}; };
grub_err_t grub_err_t
grub_video_bitmap_create_scaled (struct grub_video_bitmap **dst, EXPORT_FUNC (grub_video_bitmap_create_scaled) (struct grub_video_bitmap **dst,
int dst_width, int dst_height, int dst_width, int dst_height,
struct grub_video_bitmap *src, struct grub_video_bitmap *src,
enum enum
grub_video_bitmap_scale_method scale_method); grub_video_bitmap_scale_method
scale_method);
#endif /* ! GRUB_BITMAP_SCALE_HEADER */ #endif /* ! GRUB_BITMAP_SCALE_HEADER */

View file

@ -22,7 +22,7 @@
#include <grub/file.h> #include <grub/file.h>
grub_file_t grub_bufio_open (grub_file_t io, int size); grub_file_t EXPORT_FUNC (grub_bufio_open) (grub_file_t io, int size);
grub_file_t grub_buffile_open (const char *name, int size); grub_file_t EXPORT_FUNC (grub_buffile_open) (const char *name, int size);
#endif /* ! GRUB_BUFIO_H */ #endif /* ! GRUB_BUFIO_H */

View file

@ -60,18 +60,20 @@
#define GRUB_GPIO_REG_IN_AUX1 0x34 #define GRUB_GPIO_REG_IN_AUX1 0x34
#ifndef ASM_FILE #ifndef ASM_FILE
int grub_cs5536_find (grub_pci_device_t *devp); int EXPORT_FUNC (grub_cs5536_find) (grub_pci_device_t *devp);
grub_uint64_t grub_cs5536_read_msr (grub_pci_device_t dev, grub_uint32_t addr); grub_uint64_t grub_cs5536_read_msr (grub_pci_device_t dev, grub_uint32_t addr);
void grub_cs5536_write_msr (grub_pci_device_t dev, grub_uint32_t addr, void grub_cs5536_write_msr (grub_pci_device_t dev, grub_uint32_t addr,
grub_uint64_t val); grub_uint64_t val);
grub_err_t grub_cs5536_read_spd_byte (grub_port_t smbbase, grub_uint8_t dev, grub_err_t grub_cs5536_read_spd_byte (grub_port_t smbbase, grub_uint8_t dev,
grub_uint8_t addr, grub_uint8_t *res); grub_uint8_t addr, grub_uint8_t *res);
grub_err_t grub_cs5536_read_spd (grub_port_t smbbase, grub_uint8_t dev, grub_err_t EXPORT_FUNC (grub_cs5536_read_spd) (grub_port_t smbbase,
struct grub_smbus_spd *res); grub_uint8_t dev,
struct grub_smbus_spd *res);
grub_err_t grub_cs5536_smbus_wait (grub_port_t smbbase); grub_err_t grub_cs5536_smbus_wait (grub_port_t smbbase);
grub_err_t grub_cs5536_init_smbus (grub_pci_device_t dev, grub_uint16_t divisor, grub_err_t EXPORT_FUNC (grub_cs5536_init_smbus) (grub_pci_device_t dev,
grub_port_t *smbbase); grub_uint16_t divisor,
grub_port_t *smbbase);
#endif #endif
#endif #endif

View file

@ -81,36 +81,38 @@ int grub_font_load (const char *filename);
"Family Name Bold Italic 14", where Bold and Italic are optional. "Family Name Bold Italic 14", where Bold and Italic are optional.
If no font matches the name specified, the most recently loaded font If no font matches the name specified, the most recently loaded font
is returned as a fallback. */ is returned as a fallback. */
grub_font_t grub_font_get (const char *font_name); grub_font_t EXPORT_FUNC (grub_font_get) (const char *font_name);
const char *grub_font_get_name (grub_font_t font); const char *EXPORT_FUNC (grub_font_get_name) (grub_font_t font);
int grub_font_get_max_char_width (grub_font_t font); int EXPORT_FUNC (grub_font_get_max_char_width) (grub_font_t font);
int grub_font_get_max_char_height (grub_font_t font); int EXPORT_FUNC (grub_font_get_max_char_height) (grub_font_t font);
int grub_font_get_ascent (grub_font_t font); int EXPORT_FUNC (grub_font_get_ascent) (grub_font_t font);
int grub_font_get_descent (grub_font_t font); int EXPORT_FUNC (grub_font_get_descent) (grub_font_t font);
int grub_font_get_leading (grub_font_t font); int EXPORT_FUNC (grub_font_get_leading) (grub_font_t font);
int grub_font_get_height (grub_font_t font); int EXPORT_FUNC (grub_font_get_height) (grub_font_t font);
int grub_font_get_string_width (grub_font_t font, const char *str); int EXPORT_FUNC (grub_font_get_string_width) (grub_font_t font,
const char *str);
struct grub_font_glyph *grub_font_get_glyph (grub_font_t font, struct grub_font_glyph *EXPORT_FUNC (grub_font_get_glyph) (grub_font_t font,
grub_uint32_t code); grub_uint32_t code);
struct grub_font_glyph *grub_font_get_glyph_with_fallback (grub_font_t font, struct grub_font_glyph *EXPORT_FUNC (grub_font_get_glyph_with_fallback) (grub_font_t font,
grub_uint32_t code); grub_uint32_t code);
grub_err_t grub_font_draw_glyph (struct grub_font_glyph *glyph, grub_err_t EXPORT_FUNC (grub_font_draw_glyph) (struct grub_font_glyph *glyph,
grub_video_color_t color, grub_video_color_t color,
int left_x, int baseline_y); int left_x, int baseline_y);
grub_err_t grub_font_draw_string (const char *str, grub_font_t font, grub_err_t EXPORT_FUNC (grub_font_draw_string) (const char *str,
grub_video_color_t color, grub_font_t font,
int left_x, int baseline_y); grub_video_color_t color,
int left_x, int baseline_y);
#endif /* ! GRUB_FONT_HEADER */ #endif /* ! GRUB_FONT_HEADER */

View file

@ -25,20 +25,20 @@
#include <grub/video.h> #include <grub/video.h>
grub_err_t grub_err_t
grub_gfxterm_set_window (struct grub_video_render_target *target, EXPORT_FUNC (grub_gfxterm_set_window) (struct grub_video_render_target *target,
int x, int y, int width, int height, int x, int y, int width, int height,
int double_repaint, int double_repaint,
const char *font_name, int border_width); const char *font_name, int border_width);
typedef void (*grub_gfxterm_repaint_callback_t)(int x, int y, typedef void (*grub_gfxterm_repaint_callback_t)(int x, int y,
int width, int height); int width, int height);
void grub_gfxterm_set_repaint_callback (grub_gfxterm_repaint_callback_t func); void grub_gfxterm_set_repaint_callback (grub_gfxterm_repaint_callback_t func);
void grub_gfxterm_schedule_repaint (void); void EXPORT_FUNC (grub_gfxterm_schedule_repaint) (void);
grub_err_t grub_gfxterm_fullscreen (void); grub_err_t EXPORT_FUNC (grub_gfxterm_fullscreen) (void);
extern void (*grub_gfxterm_decorator_hook) (void); extern void (*EXPORT_VAR (grub_gfxterm_decorator_hook)) (void);
#endif /* ! GRUB_GFXTERM_HEADER */ #endif /* ! GRUB_GFXTERM_HEADER */

View file

@ -19,8 +19,6 @@
#ifndef GRUB_VBE_MACHINE_HEADER #ifndef GRUB_VBE_MACHINE_HEADER
#define GRUB_VBE_MACHINE_HEADER 1 #define GRUB_VBE_MACHINE_HEADER 1
#include <grub/video_fb.h>
/* Default video mode to be used. */ /* Default video mode to be used. */
#define GRUB_VBE_DEFAULT_VIDEO_MODE 0x101 #define GRUB_VBE_DEFAULT_VIDEO_MODE 0x101

View file

@ -110,4 +110,7 @@ void read_terminal_list (void);
void grub_set_more (int onoff); void grub_set_more (int onoff);
int grub_normal_get_line_counter (void);
void grub_install_newline_hook (void);
#endif /* ! GRUB_NORMAL_HEADER */ #endif /* ! GRUB_NORMAL_HEADER */

View file

@ -259,13 +259,13 @@ struct grub_video_adapter
}; };
typedef struct grub_video_adapter *grub_video_adapter_t; typedef struct grub_video_adapter *grub_video_adapter_t;
void grub_video_register (grub_video_adapter_t adapter); void EXPORT_FUNC (grub_video_register) (grub_video_adapter_t adapter);
void grub_video_unregister (grub_video_adapter_t adapter); void grub_video_unregister (grub_video_adapter_t adapter);
void grub_video_iterate (int (*hook) (grub_video_adapter_t adapter)); void grub_video_iterate (int (*hook) (grub_video_adapter_t adapter));
grub_err_t grub_video_restore (void); grub_err_t EXPORT_FUNC (grub_video_restore) (void);
grub_err_t grub_video_get_info (struct grub_video_mode_info *mode_info); grub_err_t EXPORT_FUNC (grub_video_get_info) (struct grub_video_mode_info *mode_info);
/* Framebuffer address may change as a part of normal operation /* Framebuffer address may change as a part of normal operation
(e.g. double buffering). That's why you need to stop video subsystem to be (e.g. double buffering). That's why you need to stop video subsystem to be
@ -283,57 +283,71 @@ grub_err_t grub_video_set_palette (unsigned int start, unsigned int count,
grub_err_t grub_video_get_palette (unsigned int start, unsigned int count, grub_err_t grub_video_get_palette (unsigned int start, unsigned int count,
struct grub_video_palette_data *palette_data); struct grub_video_palette_data *palette_data);
grub_err_t grub_video_set_viewport (unsigned int x, unsigned int y, grub_err_t EXPORT_FUNC (grub_video_set_viewport) (unsigned int x,
unsigned int width, unsigned int height); unsigned int y,
unsigned int width,
unsigned int height);
grub_err_t grub_video_get_viewport (unsigned int *x, unsigned int *y, grub_err_t EXPORT_FUNC (grub_video_get_viewport) (unsigned int *x,
unsigned int *width, unsigned int *height); unsigned int *y,
unsigned int *width,
unsigned int *height);
grub_video_color_t grub_video_map_color (grub_uint32_t color_name); grub_video_color_t EXPORT_FUNC (grub_video_map_color) (grub_uint32_t color_name);
grub_video_color_t grub_video_map_rgb (grub_uint8_t red, grub_uint8_t green, grub_video_color_t EXPORT_FUNC (grub_video_map_rgb) (grub_uint8_t red,
grub_uint8_t blue); grub_uint8_t green,
grub_uint8_t blue);
grub_video_color_t grub_video_map_rgba (grub_uint8_t red, grub_uint8_t green, grub_video_color_t EXPORT_FUNC (grub_video_map_rgba) (grub_uint8_t red,
grub_uint8_t blue, grub_uint8_t alpha); grub_uint8_t green,
grub_uint8_t blue,
grub_uint8_t alpha);
grub_err_t grub_video_unmap_color (grub_video_color_t color, grub_err_t EXPORT_FUNC (grub_video_unmap_color) (grub_video_color_t color,
grub_uint8_t *red, grub_uint8_t *green, grub_uint8_t *red,
grub_uint8_t *blue, grub_uint8_t *alpha); grub_uint8_t *green,
grub_uint8_t *blue,
grub_uint8_t *alpha);
grub_err_t grub_video_fill_rect (grub_video_color_t color, int x, int y, grub_err_t EXPORT_FUNC (grub_video_fill_rect) (grub_video_color_t color,
unsigned int width, unsigned int height); int x, int y,
unsigned int width,
unsigned int height);
grub_err_t grub_video_blit_bitmap (struct grub_video_bitmap *bitmap, grub_err_t EXPORT_FUNC (grub_video_blit_bitmap) (struct grub_video_bitmap *bitmap,
enum grub_video_blit_operators oper, enum grub_video_blit_operators oper,
int x, int y, int offset_x, int offset_y, int x, int y,
unsigned int width, unsigned int height); int offset_x, int offset_y,
unsigned int width,
unsigned int height);
grub_err_t grub_video_blit_render_target (struct grub_video_render_target *source, grub_err_t EXPORT_FUNC (grub_video_blit_render_target) (struct grub_video_render_target *source,
enum grub_video_blit_operators oper, enum grub_video_blit_operators oper,
int x, int y, int x, int y,
int offset_x, int offset_y, int offset_x,
unsigned int width, int offset_y,
unsigned int height); unsigned int width,
unsigned int height);
grub_err_t grub_video_scroll (grub_video_color_t color, int dx, int dy); grub_err_t grub_video_scroll (grub_video_color_t color, int dx, int dy);
grub_err_t grub_video_swap_buffers (void); grub_err_t EXPORT_FUNC (grub_video_swap_buffers) (void);
grub_err_t grub_video_create_render_target (struct grub_video_render_target **result, grub_err_t EXPORT_FUNC (grub_video_create_render_target) (struct grub_video_render_target **result,
unsigned int width, unsigned int width,
unsigned int height, unsigned int height,
unsigned int mode_type); unsigned int mode_type);
grub_err_t grub_video_delete_render_target (struct grub_video_render_target *target); grub_err_t EXPORT_FUNC (grub_video_delete_render_target) (struct grub_video_render_target *target);
grub_err_t grub_video_set_active_render_target (struct grub_video_render_target *target); grub_err_t EXPORT_FUNC (grub_video_set_active_render_target) (struct grub_video_render_target *target);
grub_err_t grub_video_get_active_render_target (struct grub_video_render_target **target); grub_err_t grub_video_get_active_render_target (struct grub_video_render_target **target);
grub_err_t grub_video_set_mode (const char *modestring, grub_err_t EXPORT_FUNC (grub_video_set_mode) (const char *modestring,
unsigned int modemask, unsigned int modemask,
unsigned int modevalue); unsigned int modevalue);
static inline int static inline int
grub_video_check_mode_flag (unsigned int flags, unsigned int mask, grub_video_check_mode_flag (unsigned int flags, unsigned int mask,

View file

@ -152,7 +152,7 @@ grub_device_iterate (int (*hook) (const char *name))
grub_free (partition_name); grub_free (partition_name);
grub_free (p); grub_free (p);
return 1; return 1;
} }
grub_free (partition_name); grub_free (partition_name);
p->next = ents; p->next = ents;

View file

@ -68,6 +68,9 @@ grub_load_modules (void)
(header->size - sizeof (struct grub_module_header)))) (header->size - sizeof (struct grub_module_header))))
grub_fatal ("%s", grub_errmsg); grub_fatal ("%s", grub_errmsg);
if (grub_errno)
grub_print_error ();
return 0; return 0;
} }

View file

@ -154,8 +154,8 @@ grub_bsd_get_device (grub_uint32_t * biosdev,
dev = grub_device_open (0); dev = grub_device_open (0);
if (dev && dev->disk && dev->disk->partition) if (dev && dev->disk && dev->disk->partition)
{ {
char *p0;
p = dev->disk->partition->partmap->get_name (dev->disk->partition); p0 = p = dev->disk->partition->partmap->get_name (dev->disk->partition);
if (p) if (p)
{ {
if ((p[0] >= '0') && (p[0] <= '9')) if ((p[0] >= '0') && (p[0] <= '9'))
@ -169,6 +169,7 @@ grub_bsd_get_device (grub_uint32_t * biosdev,
if ((p[0] >= 'a') && (p[0] <= 'z')) if ((p[0] >= 'a') && (p[0] <= 'z'))
*part = p[0] - 'a'; *part = p[0] - 'a';
} }
grub_free (p0);
} }
if (dev) if (dev)
grub_device_close (dev); grub_device_close (dev);

View file

@ -448,8 +448,8 @@ grub_multiboot_set_bootdev (void)
dev = grub_device_open (0); dev = grub_device_open (0);
if (dev && dev->disk && dev->disk->partition) if (dev && dev->disk && dev->disk->partition)
{ {
char *p0;
p = dev->disk->partition->partmap->get_name (dev->disk->partition); p = p0 = dev->disk->partition->partmap->get_name (dev->disk->partition);
if (p) if (p)
{ {
if ((p[0] >= '0') && (p[0] <= '9')) if ((p[0] >= '0') && (p[0] <= '9'))
@ -463,6 +463,7 @@ grub_multiboot_set_bootdev (void)
if ((p[0] >= 'a') && (p[0] <= 'z')) if ((p[0] >= 'a') && (p[0] <= 'z'))
part = p[0] - 'a'; part = p[0] - 'a';
} }
grub_free (p0);
} }
if (dev) if (dev)
grub_device_close (dev); grub_device_close (dev);

View file

@ -38,6 +38,9 @@ autoload_fs_module (void)
if (! grub_dl_get (p->name) && grub_dl_load (p->name)) if (! grub_dl_get (p->name) && grub_dl_load (p->name))
return 1; return 1;
if (grub_errno)
grub_print_error ();
fs_module_list = p->next; fs_module_list = p->next;
grub_free (p->name); grub_free (p->name);
grub_free (p); grub_free (p);

View file

@ -303,8 +303,9 @@ grub_cmdline_get (const char *prompt)
grub_memmove (buf + lpos, str, len * sizeof (grub_uint32_t)); grub_memmove (buf + lpos, str, len * sizeof (grub_uint32_t));
llen += len; llen += len;
cl_set_pos_all ();
cl_print_all (lpos, 0);
lpos += len; lpos += len;
cl_print_all (lpos - len, 0);
cl_set_pos_all (); cl_set_pos_all ();
} }
} }
@ -473,7 +474,6 @@ grub_cmdline_get (const char *prompt)
if (t != 1) if (t != 1)
cl_insert (insert); cl_insert (insert);
lpos++; lpos++;
cl_set_pos_all ();
} }
else else
{ {
@ -485,6 +485,7 @@ grub_cmdline_get (const char *prompt)
grub_free (insertu8); grub_free (insertu8);
grub_free (insert); grub_free (insert);
} }
cl_set_pos_all ();
} }
break; break;

View file

@ -88,13 +88,14 @@ read_crypto_list (void)
} }
file = grub_file_open (filename); file = grub_file_open (filename);
grub_free (filename);
if (!file) if (!file)
{ {
grub_errno = GRUB_ERR_NONE; grub_errno = GRUB_ERR_NONE;
return; return;
} }
/* Override previous commands.lst. */ /* Override previous crypto.lst. */
grub_crypto_spec_free (); grub_crypto_spec_free ();
for (;; grub_free (buf)) for (;; grub_free (buf))

View file

@ -418,6 +418,7 @@ grub_normal_init_page (struct grub_term_output *term)
msg_len = grub_utf8_to_ucs4_alloc (msg_formatted, msg_len = grub_utf8_to_ucs4_alloc (msg_formatted,
&unicode_msg, &last_position); &unicode_msg, &last_position);
grub_free (msg_formatted);
if (msg_len < 0) if (msg_len < 0)
{ {
@ -582,10 +583,13 @@ grub_normal_read_line_real (char **line, int cont, int nested)
if (cont || nested) if (cont || nested)
{ {
grub_free (*line); grub_free (*line);
grub_free (prompt);
*line = 0; *line = 0;
return grub_errno; return grub_errno;
} }
} }
grub_free (prompt);
return 0; return 0;
} }
@ -650,6 +654,7 @@ GRUB_MOD_INIT(normal)
grub_set_history (GRUB_DEFAULT_HISTORY_SIZE); grub_set_history (GRUB_DEFAULT_HISTORY_SIZE);
grub_install_newline_hook ();
grub_register_variable_hook ("pager", 0, grub_env_write_pager); grub_register_variable_hook ("pager", 0, grub_env_write_pager);
/* Register a command "normal" for the rescue mode. */ /* Register a command "normal" for the rescue mode. */

View file

@ -559,14 +559,14 @@ show_menu (grub_menu_t menu, int nested)
} }
else else
{ {
int lines_before = grub_normal_get_line_counter ();
grub_errno = GRUB_ERR_NONE; grub_errno = GRUB_ERR_NONE;
grub_menu_execute_entry (e); grub_menu_execute_entry (e);
if (grub_errno != GRUB_ERR_NONE) grub_print_error ();
{ grub_errno = GRUB_ERR_NONE;
grub_print_error ();
grub_errno = GRUB_ERR_NONE; if (lines_before != grub_normal_get_line_counter ())
grub_wait_after_message (); grub_wait_after_message ();
}
} }
} }

View file

@ -30,6 +30,14 @@ static unsigned grub_more_lines;
/* If the more pager is active. */ /* If the more pager is active. */
static int grub_more; static int grub_more;
static int grub_normal_line_counter = 0;
int
grub_normal_get_line_counter (void)
{
return grub_normal_line_counter;
}
static void static void
process_newline (void) process_newline (void)
{ {
@ -41,6 +49,8 @@ process_newline (void)
height = grub_term_height (cur); height = grub_term_height (cur);
grub_more_lines++; grub_more_lines++;
grub_normal_line_counter++;
if (grub_more && grub_more_lines >= height - 1) if (grub_more && grub_more_lines >= height - 1)
{ {
char key; char key;
@ -76,6 +86,11 @@ grub_set_more (int onoff)
grub_more--; grub_more--;
grub_more_lines = 0; grub_more_lines = 0;
}
void
grub_install_newline_hook (void)
{
grub_newline_hook = process_newline; grub_newline_hook = process_newline;
} }
@ -150,7 +165,6 @@ grub_terminal_autoload_free (void)
grub_term_output_autoload = NULL; grub_term_output_autoload = NULL;
} }
/* Read the file terminal.lst for auto-loading. */ /* Read the file terminal.lst for auto-loading. */
void void
read_terminal_list (void) read_terminal_list (void)
@ -175,6 +189,7 @@ read_terminal_list (void)
} }
file = grub_file_open (filename); file = grub_file_open (filename);
grub_free (filename);
if (!file) if (!file)
{ {
grub_errno = GRUB_ERR_NONE; grub_errno = GRUB_ERR_NONE;

View file

@ -202,53 +202,81 @@ grub_ofconsole_readkey (int *key)
grub_ieee1275_read (stdin_ihandle, &c, 1, &actual); grub_ieee1275_read (stdin_ihandle, &c, 1, &actual);
if (actual > 0 && c == '\e') if (actual > 0)
{ switch(c)
grub_uint64_t start; {
grub_ieee1275_read (stdin_ihandle, &c, 1, &actual); case 0x7f:
/* Backspace: Ctrl-h. */
/* On 9600 we have to wait up to 12 milliseconds. */ c = '\b';
start = grub_get_time_ms (); break;
while (actual <= 0 && grub_get_time_ms () - start < 12) case '\e':
grub_ieee1275_read (stdin_ihandle, &c, 1, &actual);
if (actual <= 0)
{ {
*key = '\e'; grub_uint64_t start;
return 1; grub_ieee1275_read (stdin_ihandle, &c, 1, &actual);
/* On 9600 we have to wait up to 12 milliseconds. */
start = grub_get_time_ms ();
while (actual <= 0 && grub_get_time_ms () - start < 12)
grub_ieee1275_read (stdin_ihandle, &c, 1, &actual);
if (actual <= 0)
{
*key = '\e';
return 1;
}
if (c != '[')
return 0;
grub_ieee1275_read (stdin_ihandle, &c, 1, &actual);
/* On 9600 we have to wait up to 12 milliseconds. */
start = grub_get_time_ms ();
while (actual <= 0 && grub_get_time_ms () - start < 12)
grub_ieee1275_read (stdin_ihandle, &c, 1, &actual);
if (actual <= 0)
return 0;
switch (c)
{
case 'A':
/* Up: Ctrl-p. */
c = GRUB_TERM_UP;
break;
case 'B':
/* Down: Ctrl-n. */
c = GRUB_TERM_DOWN;
break;
case 'C':
/* Right: Ctrl-f. */
c = GRUB_TERM_RIGHT;
break;
case 'D':
/* Left: Ctrl-b. */
c = GRUB_TERM_LEFT;
break;
case '3':
{
grub_ieee1275_read (stdin_ihandle, &c, 1, &actual);
/* On 9600 we have to wait up to 12 milliseconds. */
start = grub_get_time_ms ();
while (actual <= 0 && grub_get_time_ms () - start < 12)
grub_ieee1275_read (stdin_ihandle, &c, 1, &actual);
if (actual <= 0)
return 0;
/* Delete: Ctrl-d. */
if (c == '~')
c = GRUB_TERM_DC;
else
return 0;
break;
}
break;
}
} }
}
if (c != '[')
return 0;
grub_ieee1275_read (stdin_ihandle, &c, 1, &actual);
/* On 9600 we have to wait up to 12 milliseconds. */
start = grub_get_time_ms ();
while (actual <= 0 && grub_get_time_ms () - start < 12)
grub_ieee1275_read (stdin_ihandle, &c, 1, &actual);
if (actual <= 0)
return 0;
switch (c)
{
case 'A':
/* Up: Ctrl-p. */
c = GRUB_TERM_UP;
break;
case 'B':
/* Down: Ctrl-n. */
c = GRUB_TERM_DOWN;
break;
case 'C':
/* Right: Ctrl-f. */
c = GRUB_TERM_RIGHT;
break;
case 'D':
/* Left: Ctrl-b. */
c = GRUB_TERM_LEFT;
break;
}
}
*key = c; *key = c;
return actual > 0; return actual > 0;

View file

@ -222,7 +222,9 @@ export GRUB_DEFAULT \
GRUB_GFXMODE \ GRUB_GFXMODE \
GRUB_THEME \ GRUB_THEME \
GRUB_GFXPAYLOAD_LINUX \ GRUB_GFXPAYLOAD_LINUX \
GRUB_DISABLE_OS_PROBER GRUB_DISABLE_OS_PROBER \
GRUB_INIT_TUNE \
GRUB_SAVEDEFAULT
if test "x${grub_cfg}" != "x"; then if test "x${grub_cfg}" != "x"; then
rm -f ${grub_cfg}.new rm -f ${grub_cfg}.new

View file

@ -96,7 +96,7 @@ convert_system_path_to_grub_path ()
save_default_entry () save_default_entry ()
{ {
if [ "x${GRUB_DEFAULT}" = "xsaved" ] ; then if [ "x${GRUB_SAVEDEFAULT}" = "xtrue" ] ; then
cat << EOF cat << EOF
savedefault savedefault
EOF EOF

View file

@ -470,10 +470,8 @@ Make a bootable image of GRUB.\n\
-o, --output=FILE output a generated image to FILE [default=stdout]\n" -o, --output=FILE output a generated image to FILE [default=stdout]\n"
#ifdef GRUB_PLATFORM_IMAGE_DEFAULT #ifdef GRUB_PLATFORM_IMAGE_DEFAULT
"\ "\
-O, --format=FORMAT generate an image in format [default=" -O, --format=FORMAT generate an image in format [default=%s]\n\
GRUB_PLATFORM_IMAGE_DEFAULT_FORMAT "]\n \ available formats: %s\n"
available formats: "
GRUB_PLATFORM_IMAGE_FORMATS "\n"
#endif #endif
"\ "\
-h, --help display this message and exit\n\ -h, --help display this message and exit\n\
@ -481,7 +479,12 @@ Make a bootable image of GRUB.\n\
-v, --verbose print verbose messages\n\ -v, --verbose print verbose messages\n\
\n\ \n\
Report bugs to <%s>.\n\ Report bugs to <%s>.\n\
"), program_name, GRUB_LIBDIR, DEFAULT_DIRECTORY, PACKAGE_BUGREPORT); "),
program_name, GRUB_LIBDIR, DEFAULT_DIRECTORY,
#ifdef GRUB_PLATFORM_IMAGE_DEFAULT
GRUB_PLATFORM_IMAGE_DEFAULT_FORMAT, GRUB_PLATFORM_IMAGE_FORMATS,
#endif
PACKAGE_BUGREPORT);
exit (status); exit (status);
} }

View file

@ -86,7 +86,15 @@ if [ "x${output_image}" = x ] ; then
exit 1 exit 1
fi fi
iso9660_dir=`mktemp -d` if test "x$TMP" != x; then
MKTEMP_TEMPLATE="$TMP/grub-mkrescue.XXXXXXXXXX"
elif test "x$TEMP" != x; then
MKTEMP_TEMPLATE="$TEMP/grub-mkrescue.XXXXXXXXXX"
else
MKTEMP_TEMPLATE="/tmp/grub-mkrescue.XXXXXXXXXX"
fi
iso9660_dir=`mktemp -d "$MKTEMP_TEMPLATE"`
mkdir -p ${iso9660_dir}/boot/grub mkdir -p ${iso9660_dir}/boot/grub
process_input_dir () process_input_dir ()
@ -133,8 +141,8 @@ fi
# build coreboot core.img # build coreboot core.img
if test -e "${coreboot_dir}" ; then if test -e "${coreboot_dir}" ; then
echo "Enabling coreboot support ..." echo "Enabling coreboot support ..."
memdisk_img=`mktemp` memdisk_img=`mktemp "$MKTEMP_TEMPLATE"`
memdisk_dir=`mktemp -d` memdisk_dir=`mktemp -d "$MKTEMP_TEMPLATE"`
mkdir -p ${memdisk_dir}/boot/grub mkdir -p ${memdisk_dir}/boot/grub
# obtain date-based UUID # obtain date-based UUID
iso_uuid=$(date +%Y-%m-%d-%H-%M-%S-00) iso_uuid=$(date +%Y-%m-%d-%H-%M-%S-00)
@ -162,12 +170,12 @@ fi
# build BIOS core.img # build BIOS core.img
if test -e "${pc_dir}" ; then if test -e "${pc_dir}" ; then
echo "Enabling BIOS support ..." echo "Enabling BIOS support ..."
core_img=`mktemp` core_img=`mktemp "$MKTEMP_TEMPLATE"`
grub-mkimage -d ${pc_dir}/ -o ${core_img} --prefix=/boot/grub/i386-pc \ grub-mkimage -d ${pc_dir}/ -o ${core_img} --prefix=/boot/grub/i386-pc \
iso9660 biosdisk iso9660 biosdisk
cat ${pc_dir}/cdboot.img ${core_img} > ${iso9660_dir}/boot/grub/i386-pc/eltorito.img cat ${pc_dir}/cdboot.img ${core_img} > ${iso9660_dir}/boot/grub/i386-pc/eltorito.img
embed_img=`mktemp` embed_img=`mktemp "$MKTEMP_TEMPLATE"`
cat ${pc_dir}/boot.img ${core_img} > ${embed_img} cat ${pc_dir}/boot.img ${core_img} > ${embed_img}
rm -f ${core_img} rm -f ${core_img}

View file

@ -29,6 +29,8 @@
#include <stdlib.h> #include <stdlib.h>
#include <getopt.h> #include <getopt.h>
#include "progname.h"
static struct option options[] = { static struct option options[] = {
{"help", no_argument, 0, 'h'}, {"help", no_argument, 0, 'h'},
{"version", no_argument, 0, 'V'}, {"version", no_argument, 0, 'V'},

View file

@ -158,3 +158,11 @@ else
set timeout=${GRUB_TIMEOUT} set timeout=${GRUB_TIMEOUT}
EOF EOF
fi fi
# Play an initial tune
if [ "x${GRUB_INIT_TUNE}" != "x" ] ; then
cat << EOF
insmod play
play ${GRUB_INIT_TUNE}
EOF
fi

View file

@ -66,7 +66,8 @@ linux_entry ()
# Use ELILO's generic "efifb" when it's known to be available. # Use ELILO's generic "efifb" when it's known to be available.
# FIXME: We need an interface to select vesafb in case efifb can't be used. # FIXME: We need an interface to select vesafb in case efifb can't be used.
if [ "x$GRUB_GFXPAYLOAD_LINUX" = x ]; then if [ "x$GRUB_GFXPAYLOAD_LINUX" = x ]; then
if grep -qx "CONFIG_FB_EFI=y" /boot/config-${version} 2> /dev/null ; then if grep -qx "CONFIG_FB_EFI=y" /boot/config-${version} 2> /dev/null \
&& grep -qx "CONFIG_VT_HW_CONSOLE_BINDING=y" /boot/config-${version} 2> /dev/null; then
cat << EOF cat << EOF
set gfxpayload=keep set gfxpayload=keep
EOF EOF

View file

@ -180,6 +180,14 @@ for file in ${pkglibdir}/*.mod ${pkglibdir}/*.lst; do
cp -f $file ${grubdir} || exit 1 cp -f $file ${grubdir} || exit 1
done done
# Copy gettext files
mkdir -p ${grubdir}/locale/
for file in ${grubdir}/locale/*.mo ${pkglibdir}/locale/*.mo; do
if test -f "$file"; then
cp -f "$file" ${grubdir}/locale/
fi
done
if ! test -f ${grubdir}/grubenv; then if ! test -f ${grubdir}/grubenv; then
$grub_editenv ${grubdir}/grubenv create $grub_editenv ${grubdir}/grubenv create
fi fi

View file

@ -62,6 +62,7 @@ mdblocksizes = {"_gcry_digest_spec_crc32" : 64,
"_gcry_digest_spec_whirlpool" : 64} "_gcry_digest_spec_whirlpool" : 64}
cryptolist = open (os.path.join (cipher_dir_out, "crypto.lst"), "w") cryptolist = open (os.path.join (cipher_dir_out, "crypto.lst"), "w")
conf.write ("MAINTAINER_CLEANFILES += $(srcdir)/conf/gcry.rmk $(srcdir)/lib/libgcrypt-grub/cipher/ChangeLog $(srcdir)/lib/libgcrypt-grub/cipher/cipher.h $(srcdir)/lib/libgcrypt-grub/cipher/crypto.lst $(srcdir)/lib/libgcrypt-grub/cipher/g10lib.h $(srcdir)/lib/libgcrypt-grub/cipher/memory.h $(srcdir)/lib/libgcrypt-grub/cipher/types.h\n");
# rijndael is the only cipher using aliases. So no need for mangling, just # rijndael is the only cipher using aliases. So no need for mangling, just
# hardcode it # hardcode it
@ -87,6 +88,7 @@ for cipher_file in cipher_files:
continue continue
nch = False nch = False
if re.match (".*\.[ch]$", cipher_file): if re.match (".*\.[ch]$", cipher_file):
conf.write ("MAINTAINER_CLEANFILES += $(srcdir)/lib/libgcrypt-grub/cipher/" + cipher_file + "\n");
isc = re.match (".*\.c$", cipher_file) isc = re.match (".*\.c$", cipher_file)
f = open (infile, "r") f = open (infile, "r")
fw = open (outfile, "w") fw = open (outfile, "w")

View file

@ -1006,11 +1006,13 @@ grub_video_fb_scroll (grub_video_color_t color, int dx, int dy)
{ \ { \
/* 3b. Move data downwards. */ \ /* 3b. Move data downwards. */ \
dst = (void *) grub_video_fb_get_video_ptr (&target, \ dst = (void *) grub_video_fb_get_video_ptr (&target, \
dst_x + width - 1, \ dst_x + width, \
dst_y + height - 1); \ dst_y + height - 1); \
src = (void *) grub_video_fb_get_video_ptr (&target, \ src = (void *) grub_video_fb_get_video_ptr (&target, \
src_x + width - 1, \ src_x + width, \
src_y + height - 1); \ src_y + height - 1); \
dst--; \
src--; \
for (j = 0; j < height; j++) \ for (j = 0; j < height; j++) \
{ \ { \
for (i = 0; i < linelen; i++) \ for (i = 0; i < linelen; i++) \

View file

@ -22,6 +22,7 @@
#include <grub/machine/memory.h> #include <grub/machine/memory.h>
#include <grub/machine/vga.h> #include <grub/machine/vga.h>
#include <grub/machine/vbe.h> #include <grub/machine/vbe.h>
#include <grub/video_fb.h>
#include <grub/types.h> #include <grub/types.h>
#include <grub/dl.h> #include <grub/dl.h>
#include <grub/misc.h> #include <grub/misc.h>