Disable Multiboot2 in i386-ieee1275. It didn't actually work, and on
this platform we should support Multiboot1 first.
* conf/i386-ieee1275.rmk (pkglib_MODULES): Remove `multiboot.mod'.
(multiboot_mod_SOURCES, multiboot_mod_CFLAGS)
(multiboot_mod_LDFLAGS, multiboot_mod_ASFLAGS): Remove.
* util/mkisofs/eltorito.c (init_boot_catalog): Handle return code
of write calls (converting them to fwrite() if they aren't already).
(get_torito_desc): Likewise.
* util/mkisofs/rock.c (generate_rock_ridge_attributes): Likewise.
Support for El Torito without floppy emulation.
* util/mkisofs/eltorito.c: Include `<errno.h>'.
(init_boot_catalog): Improve error handling.
(get_torito_desc): Don't use floppy emulation unless requested by
user. Patch boot information table when requested via
`-boot-info-table'.
* util/mkisofs/iso9660.h (struct eltorito_boot_info): New struct.
* util/mkisofs/mkisofs.c (use_eltorito_emul_floppy)
(use_boot_info_table): New variables.
(OPTION_BOOT_INFO_TABLE, OPTION_NO_EMUL_BOOT)
(OPTION_ELTORITO_EMUL_FLOPPY): New macros.
(ld_options): Handle `-boot-info-table', `-no-emul-boot' and
`--eltorito-emul-floppy'.
(main): Handle `OPTION_BOOT_INFO_TABLE', `OPTION_NO_EMUL_BOOT'
and `OPTION_ELTORITO_EMUL_FLOPPY'.
* util/mkisofs/mkisofs.h (use_eltorito_emul_floppy)
(use_boot_info_table, get_731): New prototypes.
* util/mkisofs/write.c (get_731): New function.
Large file support for grub-mkisofs.
* conf/common.rmk (grub_mkisofs_CFLAGS): Add `-D_FILE_OFFSET_BITS=64'.
* util/mkisofs/mkisofs.c (next_extent, last_extent)
(session_start): Upgrade type to `uint64_t'. Update all users.
* util/mkisofs/mkisofs.h: Include `<stdint.h>'.
(struct directory_entry): Upgrade type of `starting_block' and
`size' to `uint64_t'. Update all users.
(struct deferred): Remove unused structure.
(xfwrite): Upgrade type of `count' and `size' to `uint64_t'.
Update all users.
* util/mkisofs/tree.c (stat_filter, lstat_filter): Return -1 when
file is larger than `UINT32_MAX'.
* util/mkisofs/write.c (xfwrite): Upgrade type of `count' and
`size' to `uint64_t'. Update all users. Fix handling of fwrite()
return value.
(struct deferred_write): Upgrade type of `extent' and `size' to
`uint64_t'. Update all users.
(last_extent_written): Upgrade type to `uint64_t'. Update all
users.
(write_one_file): Upgrade type of `count' and `size' to `uint64_t'.
Update all users. Upgrade type of `remain' to `int64_t' and
`use' to `size_t'. Use error() to handle fread() errors.
(write_files): Rely on write_one_file() rather than calling
xfwrite() directly.
Misc cleanup.
* kern/command.c (grub_register_command_prio): Use
grub_zalloc() instead of explicitly zeroing data.
* kern/list.c: Include `<grub/mm.h>'.
(grub_named_list_find): Replace `0' with `NULL'.
* normal/autofs.c (struct grub_fs_module_list): Remove ad-hoc type.
(fs_module_list): Change type to `grub_named_list_t'. Update all
users.
* normal/dyncmd.c (read_command_list): Add space between function
call and parenthesis.
* normal/handler.c (read_handler_list): Likewise.
* normal/auth.c (punishment_delay): New variable.
(grub_auth_strcmp): Rewrite using grub_get_time_ms ().
(grub_auth_check_authentication): Punish failed login attempts with
an incremental (2^N) delay.
* Makefile.in (docs/grub.info): Use make syntax to ignore errors
in $(MAKEINFO) invocation. This makes it clear in output that
errors are being ignored.
* util/grub-editenv.c (main): If only a command is given, use
DEFAULT_DIRECTORY "/" GRUB_ENVBLK_DEFCFG as a default file name.
(usage): FILENAME is now optional and has a default.
Improve grub-mkconfig performance when there are several menu
entries on a single filesystem.
* util/grub.d/10_linux.in (linux_entry): Cache the output of
prepare_grub_to_access_device.
* util/grub.d/10_kfreebsd.in (kfreebsd_entry): Likewise.
* util/grub.d/30_os-prober.in: Likewise.
* util/grub.d/10_freebsd.in: Remove.
* util/grub.d/10_kfreebsd.in: New file (based on 10_linux.in).
* configure.ac: Set host_kernel=kfreebsd for FreeBSD and GNU/kFreeBSD.
* configure.ac: Check for `__ashldi3', `__ashrdi3', `__lshrdi3',
`__trampoline_setup' and `__ucmpdi2'.
* include/grub/powerpc/libgcc.h: Only export symbols for functions
that libgcc provides.
Patch from Samuel Thibault <samuel.thibault@ens-lyon.org>
* docs/grub.cfg: Compensate for recent change in multiboot
loader (since 2009-08-14 it won't pass filename to payload).
* util/grub.d/10_hurd.in: Likewise.
Let user specify OpenBSD root device.
* loader/i386/bsd.c (openbsd_root): New variable.
(openbsd_opts): New option 'root'.
(OPENBSD_ROOT_ARG): New macro.
(grub_openbsd_boot): Use 'openbsd_root'.
(grub_cmd_openbsd): Fill 'openbsd_root'.
* configure.ac (TARGET_CFLAGS): Add -mno-mmx -mno-sse -mno-sse2
-mno-3dnow on x86 architectures. Some toolchains enable these
features by default, but they rely on registers that aren't enabled
in GRUB. Thanks to Vladimir Serbinenko for the suggestion.
Revert 2009-06-10 Pavel Roskin <proski@gnu.org>
* configure.ac: Put checks for __bswapsi2 and __bswapdi2.
* include/grub/powerpc/libgcc.h: Don't use weak attribute for all
exports.
* include/grub/sparc64/libgcc.h: Likewise. Use
preprocessor conditionals.
Refer to kernel of FreeBSD "kFreeBSD" to avoid confusion between
the Operating System (FreeBSD) and its kernel (kernel of FreeBSD).
* loader/i386/bsd.c (grub_freebsd_boot): Read kernel environment
from "kFreeBSD" namespace (rather than "FreeBSD"). Update all
users.
(GRUB_MOD_INIT (bsd)): Rename "freebsd" command to "kfreebsd",
"openbsd" to "kopenbsd", "netbsd" to "knetbsd", "freebsd_loadenv"
to "kfreebsd_loadenv", "freebsd_module" to "kfreebsd_module",
and "freebsd_module_elf" to "kfreebsd_module_elf". Update all
users.
Fail gracefuly when attempting to load 64-bit kFreeBSD on IA32 CPU.
* include/grub/i386/cpuid.h: New file.
* commands/i386/cpuid.c: Include `<grub/i386/cpuid.h>'.
(has_longmode): Rename to ...
(grub_cpuid_has_longmode): ... this. Update all users. Remove
`static' attribute.
* loader/i386/bsd.c: Include `<grub/i386/cpuid.h>'.
(grub_bsd_load_elf): Fail if load of 64-bit kernel was requested
on a CPU that doesn't implement AMD64 instruction set.
* util/i386/pc/grub-install.in: Source
${libdir}/grub/grub-mkconfig_lib before option processing, in order
that the --grub-probe option will work.
* util/sparc64/ieee1275/grub-install.in: Likewise.
* include/grub/kernel.h (struct grub_module_header): Remove
`grub_module_header_types'. Make `type' unsigned. Make `size'
32-bit on all platforms.
* util/elf/grub-mkimage.c (load_modules): Treat `type' as an
8-bit field. Use grub_host_to_target32() for `size'.
* util/i386/efi/grub-mkimage.c (make_mods_section): Likewise.
* util/i386/pc/grub-mkimage.c (generate_image): Likewise.
* util/sparc64/ieee1275/grub-mkimage.c (generate_image): Likewise.
Fix "lost keypress" bug in at_keyboard.
* term/i386/pc/at_keyboard.c (grub_at_keyboard_checkkey): New function.
Checks for readyness of input buffer (without flushing it).
(grub_at_keyboard_term): Use grub_at_keyboard_checkkey() rather
than grub_at_keyboard_getkey_noblock() for `checkkey' struct member.
Build info documentation. Some code borrowed from Automake.
* configure.ac: Check for makeinfo.
* Makefile.in (MAKEINFO, INFOS, info_INFOS): New variables.
(MAINTAINER_CLEANFILES): Add $(INFOS), docs/stamp-vti, and
docs/version.texi.
(MOSTLYCLEANFILES): Add vti.tmp.
(docs/version.texi, docs/stamp-vti): Update automatically.
(docs/grub.info): Build info documentation. Use --force and ignore
errors for now.
(all-local): Add $(INFOS).
(install-local): Install info files.
(uninstall): Uninstall info files.
* docs/version.texi: Remove from revision control. This file is
automatically generated on build now.
* gendistlist.sh: Add `*.info'.