* grub-core/fs/sfs.c (grub_sfs_mount): Fix a memory leak while on it.
(grub_sfs_iterate_dir): Convert Latin1 to UTF8. Stylistic and
performance fixes while on it.
(grub_sfs_close): Fix memory leak while on it.
(grub_sfs_label): Convert Latin1 to UTF-8.
* grub-core/fs/hfs.c (MAX_UTF8_PER_MAC_ROMAN): New define.
(macroman): New const array.
(macroman_to_utf8): New function.
(utf8_to_macroman): Likewise.
(grub_hfs_find_dir): Use utf8_to_macroman.
(grub_hfs_dir): Use macroman_to_utf8.
Set case_insensitive.
* Makefile.util.def (libgrubmods): Add odc.c, newc.c and cpio_be.c.
* grub-core/Makefile.core.def (newc): New module.
(odc): Likewise.
(cpio_be): Likewise.
* grub-core/fs/cpio.c (ALIGN_CPIO): New macro.
(MAGIC): Likewise.
(MAGIC2): Likewise.
(head) [MODE_ODC]: Adapt for the format.
(head) [MODE_NEWC]: Likewise.
(head) [!MODE_*]: Write fields of interest as arrays.
(MAGIC_USTAR): Removed.
(read_number) [MODE_NEWC]: Change to hex.
(read_number) [!MODE_*]: Parse binary arrays.
(grub_cpio_find_file): Factor out the code for better structure and
always use read_number.
(grub_cpio_mount): Use MAGIC and MAGIC2.
(grub_cpio_dir): Exit on first hook non-0 return.
(grub_cpio_fs) [MODE_ODC]: Set name to odc.
(grub_cpio_fs) [MODE_NEWC]: Set name to newc.
(GRUB_MOD_INIT) [MODE_ODC]: Set name to odc.
(GRUB_MOD_INIT) [MODE_NEWC]: Set name to newc.
(GRUB_MOD_FINI) [MODE_ODC]: Set name to odc.
(GRUB_MOD_FINI) [MODE_NEWC]: Set name to newc.
* grub-core/fs/newc.c: New file.
* grub-core/fs/odc.c: Likewise.
* grub-core/fs/cpio_be.c: Likewise.
(mountinfo_entry): Increase the field size to take escaping into
account.
(find_root_device_from_libzfs): Add one byte to size of strings for
security.
to ensure alignment.
(grub_hdparm_print_identify): Make argument uint16 * to ensure
alignment. Ensure tmp alignment.
(grub_cmd_hdparm): Ensure buf alignment.
* grub-core/disk/ata.c (grub_ata_strncpy): Make src and dest uint16 *
to ensure alignment.
(grub_ata_dumpinfo): Ensure text alignment.
(grub_atapi_identify): Preserve alignment invariant.
(grub_ata_identify): Likewise. Use grub_get_unaligned32 when necessary.
case of aunaligned recptr.
(grub_hfsplus_read_block): Declare extoverflow as key to ensure
alignment.
(grub_hfsplus_btree_search): Handle unaligned index.
* grub-core/disk/raid.c (grub_raid_block_xor): Removed. All users
changed to grub_crypto_xor
* grub-core/lib/crypto.c (grub_crypto_xor): Moved from here ...
* include/grub/crypto.h (grub_crypto_xor): ... here. Inlined.
Use bigger types when possible.
* config.h.in (RE_ENABLE_I18N) [!GRUB_UTIL]: New define.
* grub-core/lib/posix_wrap/ctype.h (islower): Use grub_islower.
(isupper): Use grub_isupper.
(isascii): New inline function.
* grub-core/lib/posix_wrap/wchar.h: Replace dummy with real contents.
* grub-core/lib/posix_wrap/wctype.h: Likewise.
* grub-core/normal/charset.c (grub_utf8_process): New function.
(grub_utf8_to_utf16): Use grub_utf8_process.
(grub_encode_utf8_character): New function.
(grub_ucs4_to_utf8): Use grub_encode_utf8_character.
* include/grub/charset.h (grub_utf8_process): New declaration.
(grub_encode_utf8_character): Likewise.
* include/grub/misc.h (grub_islower): New inline function.
(grub_isupper): Likewise.
(grub_strchrsub): Moved down to fix the definitions.
* util/getroot.c [HAVE_LIMITS_H]: Include `<limits.h>'.
(find_root_device_from_libzfs): Add zpool output parser to be used
as fallback when libzfs isn't available.
* grub-core/boot/mips/startup_raw.S: Use GRUB_DECOMPRESSOR_*
* include/grub/offsets.h: Rename decompressor fields from
GRUB_KERNEL_* to GRUB_DECOMPRESSOR_*.
* util/grub-mkimage.c (image_targets): Use new names.
by 88 bytes but improves compatibility and maintainability.
* grub-core/kern/i386/pc/startup.S (grub_console_putchar): Moved to ...
* grub-core/term/i386/pc/console.c (grub_console_putchar_real):
... here. Translated to C.
* grub-core/kern/i386/pc/startup.S (grub_console_getkey): Moved to ...
* grub-core/term/i386/pc/console.c (grub_console_getkey):
... here. Translated to C.
* grub-core/kern/i386/pc/startup.S (grub_console_getxy): Moved to ...
* grub-core/term/i386/pc/console.c (grub_console_getxy):
... here. Translated to C.
* grub-core/kern/i386/pc/startup.S (grub_console_gotoxy): Moved to ...
* grub-core/term/i386/pc/console.c (grub_console_gotoxy):
... here. Translated to C.
* grub-core/kern/i386/pc/startup.S (grub_console_cls): Moved to ...
* grub-core/term/i386/pc/console.c (grub_console_cls):
... here. Translated to C.
* grub-core/kern/i386/pc/startup.S (grub_console_setcursor): Moved to ..
* grub-core/term/i386/pc/console.c (grub_console_setcursor):
... here. Translated to C.
* grub-core/kern/i386/pc/startup.S (grub_get_rtc): Moved to ..
* grub-core/kern/i386/pc/init.c (grub_get_rtc): ... here.
Translated to C.
* grub-core/term/i386/pc/console.c (int10_9): New function.
(grub_console_putchar): Likewise.
* include/grub/i386/pc/console.h: Removed the not anymore shared
functions.
forgotten define.
(GRUB_ARCH_DL_GOT_ALIGN) [__ia64__]: Redefine in terms of
GRUB_IA64_DL_GOT_ALIGN.
(GRUB_ARCH_DL_TRAMP_ALIGN) [__ia64__]: Redefine in terms of
GRUB_IA64_DL_TRAMP_ALIGN.
* grub-core/lib/xzembed/xz_dec_stream.c (xz_dec): Restrict hash_id to
normal decoder.
(hashes): Use in embed decoder as well (for sizes).
(dec_stream_header): Fix embed decompressor logic.
(dec_stream_footer): Likewise.
memory corruption.
* grub-core/fs/iso9660.c (grub_fshelp_node): New field have_symlink.
Make symlink into an array.
(set_rockridge): Set have_symlink and alloc_dirents.
(grub_iso9660_read_symlink): Use new layout.
(grub_iso9660_iterate_dir): Fix memory corruption.
Use new layout.
(grub_iso9660_dir): Set have_symlink.
(grub_iso9660_open): Likewise.
* grub-core/fs/zfs/zfs.c (fill_vdev_info_real): New paramter inserted.
All users updated.
Free type on exit.
(fill_vdev_info): New parameter inserted. All users updated.
(check_pool_label): Likewise.
(scan_disk): Likewise.
(scan_devices): Close non-inserted disks.
(fzap_iterate): Free l.
(unmount_device): Free children descripto memory.
* grub-core/fs/affs.c (grub_affs_bblock): Replace flags with version.
(GRUB_AFFS_FLAG_FFS): Removed.
(GRUB_AFFS_SYMLINK_SIZE): Likewise.
(GRUB_AFFS_FILETYPE_DIR): Make positive and unsigned.
(GRUB_AFFS_FILETYPE_DIR), (GRUB_AFFS_FILETYPE_REG): Fix a mix-up.
(grub_fshelp_node): Make block 32-bit.
Add block_cache and last_block_cache.
(grub_affs_read_block): Fill and use block cache.
(grub_affs_read_file): Removed.
(grub_affs_mount): Zero-fill node. Fix version check. Don't reread
boot block.
(grub_affs_read_symlink): Fix symlink size. Add a \0 at the end for
safety.
(grub_affs_iterate_dir): Use more appropriate types. Zero-fill allocated
space.
(grub_affs_close): Free block cache.
(grub_affs_read): Use grub_fshelp_read_file directly.
* grub-core/kern/dl.c (grub_dl_load_segments) [__powerpc__]: Follow
__ia64__ path.
(grub_dl_load_segments): Set mod->sz.
(grub_dl_flush_cache): Flush whole space occupied by module, not just
segments.
* grub-core/kern/ia64/dl.c (nopm): Make const while on it.
(jump): Likewise.
* grub-core/kern/powerpc/dl.c (grub_arch_dl_get_tramp_got_size): New
function.
(trampoline): New struct.
(trampoline_template): New const.
(grub_arch_dl_relocate_symbols): Create trampolines on overflow.
* include/grub/dl.h (grub_dl): Add sz element.
[__powerpc__]: Follow __ia64__.
(GRUB_ARCH_DL_TRAMP_ALIGN): Define on ppc.
(GRUB_ARCH_DL_GOT_ALIGN): Likewise.
(GRUB_ARCH_DL_TRAMP_SIZE): Likewise.
(grub_arch_dl_get_tramp_got_size) [__powerpc__]: New proto.
* grub-core/fs/btrfs.c (grub_btrfs_embed) [GRUB_UTIL]: New function.
(grub_btrfs_fs) [GRUB_UTIL]: Set embed.
* include/grub/fs.h (grub_fs) [GRUB_UTIL]: New field embed.
* util/grub-setup.c (setup): Use fs embedding if available.
Add additional sanity check.
* grub-core/fs/zfs/zfs.c (recovery): Add Gauss for general case.
Return error on singularity. All users updated.
(read_device): Don't stop on 3rd failure on raidz3.
* grub-core/fs/zfs/zfs.c (mzap_lookup): New parameter case_insensitive.
All users updated.
(zap_hash): Likewise.
(name_cmp): New function.
(zap_leaf_array_equal): New parameter case_insensitive.
All users updated.
(zap_leaf_lookup): Likewise.
(fzap_lookup): Likewise.
(zap_lookup): Likewise.
(dnode_get_path): New parameter case_insensitive. Retrieve case
sensitiviness of a volume. All users updated.
(dnode_get_fullpath): New parameter case_insensitive.
All users updated.
(grub_zfs_dir): Set info.case_insensitiveness.
* grub-core/fs/zfs/zfs.c (powx): New array.
(powx_inv): Likewise.
(poly): New const.
(xor_out): New function.
(gf_mul): Likewise.
(recovery): Likewise.
(read_device): Use second redundancy strip.
to save space time and complexity.
* grub-core/disk/raid6_recover.c (raid6_table1): Removed.
(raid6_table2): Likewise.
(powx): New array.
(powx_inv): Likewise.
(poly): New const.
(grub_raid_block_mul): Replace with ...
(grub_raid_block_mulx): ...this.
(grub_raid6_init_table): Rewritten.
(grub_raid6_recover): Use power of generator representation.
* grub-core/fs/zfs/zfs.c (grub_zfs_device_desc): New member ashift.
(fill_vdev_info_real): Set ashift.
(read_device): Rewrite RAIDZ part based on reverse engineering.
* grub-core/fs/ufs.c (UFS_LOG_BLKSZ): New macro.
(grub_ufs_data): New field log2_blksz.
(grub_ufs_read_file): Use shifts.
(grub_ufs_mount): Check block size and logarithm it.
* grub-core/fs/cpio.c (ATTR_TYPE): New definition.
(ATTR_FILE): Likewise.
(ATTR_DIR): Likewise.
(ATTR_LNK): Likewise.
(grub_cpio_data) [MODE_USTAR]: New fields linkname and linkname_alloc.
(grub_cpio_find_file): Fill mode, handle linkname field as well as
L and K entries.
(grub_cpio_mount): Zero-fill data.
(handle_symlink): New function.
* grub-core/fs/iso9660.c (grub_iso9660_mount): Move rockridge detection
to ...
(set_rockridge): ... here.
(grub_iso9660_mount): Check rockridge on the primary label when
discovering. Ignore Joliet if Rockridge is present.
* grub-core/fs/minix.c (GRUB_MINIX_ZONESZ): Use log_block_size.
(GRUB_MINIX_ZONE2SECT): Likewise.
(grub_minix_data): Replace block_size with log_block_size.
(grub_minix_read_file): Use shifts.
(grub_minix_mount): Check block size and take a logarithm.
* grub-core/fs/afs.c (GRUB_AFS_BLOCKS_PER_DI_RUN): Replaced with...
(GRUB_AFS_LOG_BLOCKS_PER_DI_RUN): ... this.
(GRUB_AFS_BLOCKRUN_LOG_SIZE): New definition.
(grub_afs_read_inode): Use block_shift.
(RANGE_SHIFT): New definition.
(grub_afs_read_block): Account for RANGE_SHIFT, emit errors on
unexpected conditions, use shifts and appropriate types.
(GRUB_MOD_INIT): Check the value of GRUB_AFS_BLOCKRUN_LOG_SIZE.
* grub-core/fs/afs.c (grub_afs_inode): Make small_data zero-size.
(grub_afs_small_data_element_header): New struct.
(grub_afs_read_inode): Read complete inode. Fix ino type while on it.
(grub_afs_read_attribute) [MODE_BFS]: New function.
(grub_afs_iterate_dir): Allocate for complete inode.
(grub_afs_mount): Likewise.
(grub_afs_uuid) [MODE_BFS]: New function.
(grub_afs_fs) [MODE_BFS]: Add .uuid.
* grub-core/fs/ntfs.c (list_file): Set symlink type when appropriate.
(symlink_descriptor): New struct.
(grub_ntfs_read_symlink): New function.
(grub_ntfs_iterate_dir): Use grub_ntfs_read_symlink.
(grub_ntfs_open): Likewise.
* grub-core/fs/zfs/zfs.c (fzap_iterate): Fix handling of indexes
sharing the same block. Iterate over correct number of indices.
(dnode_get_path): Handle symlinks correctly.
* grub-core/fs/iso9660.c (grub_fshelp_node): Remove dir_off. Add symlink
All users updated.
(grub_iso9660_susp_iterate): Accept zero-size iterate.
(grub_iso9660_read_symlink): Moved most of code ...
(grub_iso9660_iterate_dir): ... here. Fill node->symlink.
* grub-core/fs/iso9660.c (grub_iso9660_data): Remove first_sector.
Add node.
(grub_fshelp_node): Revamp. All users updated.
(FLAG_*): New enum.
(read_node): New function.
(grub_iso9660_susp_iterate): Use read_node. Receive a node as argument.
All users updated.
(grub_iso9660_mount): Don't attempt to read sua when there is none.
(get_node_size): New function.
(grub_iso9660_iterate_dir): Use read_node. Agglomerate multi-extent
entries.
Fix memory leak on . and ..
(grub_iso9660_read): Use read_node.
(grub_iso9660_close): Free node.
* grub-core/fs/cpio.c (grub_cpio_data): Use grub_off_t for offsets.
(canonicalize): New function.
(grub_cpio_find_file): Use canonicalize. Store offs in
grub_disk_addr_t.
(grub_cpio_dir): Use grub_disk_addr_t.
(grub_cpio_open): Likewise.
* grub-core/fs/squash4.c (grub_squash_super): Add block_size. Remove
unused flags.
(grub_squash_inode): Add long_file and block_size.
(grub_squash_cache_inode): New struct.
(grub_squash_dirent): Make types into enum.
(SQUASH_TYPE_LONG_REGULAR): New type.
(grub_squash_frag_desc): Add field size.
(SQUASH_BLOCK_FLAGS): New enum.
(grub_squash_data): Use grub_squash_cache_inode.
(grub_fshelp_node): Make ino_chunk 64-bit.
(read_chunk): Minor argument change. All users updated.
(squash_mount): Use correct le_to_cpu.
(grub_squash_open): Handle LONG_REGULAR.
(direct_read): New function.
(grub_squash_read_data): Handle blocks correctly.
* grub-core/kern/i386/coreboot/init.c (grub_machine_init): Use
_edata and _start.
* grub-core/kern/i386/coreboot/startup.S: Move multiboot header after
the small code. It moves it only by few bytes but simplifies the code.
* grub-core/kern/i386/pc/init.c (grub_machine_init): Use _edata and
_start.
* grub-core/kern/i386/pc/startup.S: Use _edata and _start.
(grub_kernel_image_size): Removed.
* grub-core/kern/i386/qemu/startup.S: Use _edata and _start.
(grub_kernel_image_size): Removed.
[APPLE_CC]: Remove apple compiler support. i386-qemu port can't be
compiled with Apple toolchain.
* grub-core/kern/sparc64/ieee1275/crt0.S: Remove leftover fields.
* include/grub/i386/pc/kernel.h (grub_kernel_image_size): Removed.
* include/grub/i386/qemu/kernel.h (grub_kernel_image_size): Removed.
(grub_total_module_size): Likewise.
* include/grub/offsets.h (GRUB_KERNEL_I386_PC_KERNEL_IMAGE_SIZE):
Removed.
(GRUB_KERNEL_I386_PC_COMPRESSED_SIZE): Put it lower.
(GRUB_KERNEL_I386_PC_INSTALL_DOS_PART): Likewise.
(GRUB_KERNEL_I386_PC_INSTALL_BSD_PART): Likewise.
(GRUB_KERNEL_I386_PC_REED_SOLOMON_REDUNDANCY): Likewise.
(GRUB_KERNEL_I386_QEMU_KERNEL_IMAGE_SIZE): Removed.
(GRUB_KERNEL_SPARC64_IEEE1275_KERNEL_IMAGE_SIZE): Likewise.
(GRUB_KERNEL_SPARC64_IEEE1275_COMPRESSED_SIZE): Likewise.
* include/grub/sparc64/ieee1275/kernel.h (grub_kernel_image_size):
Removed.
(grub_total_module_size): Removed.
* util/grub-mkimage.c (image_target_desc): Remove image_size.
(image_targets): Likewise.
Set .compressed_size to no field on sparc.
(generate_image): Remove kernel_image_size handling.
done with a dedicated section.
* grub-core/boot/sparc64/ieee1275/boot.S: Remove GRUB_BOOT_VERSION.
Ensure the correct position of boot_path.
* grub-core/kern/i386/efi/startup.S: Remove GRUB_BOOT_VERSION.
* grub-core/kern/i386/pc/startup.S: Likewise. Ensure correct position of
other fields.
* grub-core/kern/x86_64/efi/startup.S: Remove GRUB_BOOT_VERSION.
* include/grub/boot.h: Removed. All references removed.
* include/grub/sparc64/ieee1275/boot.h (GRUB_BOOT_MACHINE_VER_MAJ):
Removed.
(GRUB_BOOT_MACHINE_BOOT_DEVPATH): Make it lower.
* Makefile.util.def (libgrubmods.a): Add grub-core/fs/exfat.c.
* grub-core/Makefile.core.def (exfat): New module.
* grub-core/fs/exfat.c: New file.
* grub-core/fs/fat.c (GRUB_FAT_DIR_ENTRY_SIZE): Removed.
(GRUB_FAT_ATTR_*): Make into an enum.
(GRUB_FAT_ATTR_LONG_NAME) [MODE_EXFAT]: Removed.
(GRUB_FAT_ATTR_VALID) [MODE_EXFAT]: Remove GRUB_FAT_ATTR_VOLUME_ID.
(GRUB_FAT_ATTR_VOLUME_ID) [MODE_EXFAT]: Removed.
(GRUB_FAT_MAXFILE): Removed.
(grub_exfat_bpb) [MODE_EXFAT]: New struct.
(grub_current_fat_bpb_t): New type.
(grub_fat_dir_entry) [MODE_EXFAT]: New struct.
(grub_fat_dir_node) [MODE_EXFAT]: New struct.
(grub_fat_dir_node_t): New type.
(grub_fat_data) [MODE_EXFAT]: Remove root_sector and num_root_sectors.
(fat_log2) [MODE_EXFAT]: Removed.
(grub_fat_mount): Use grub_current_fat_bpb_t. Add some sanity checks.
(grub_fat_mount) [MODE_EXFAT]: Handle ExFAT.
(grub_fat_iterate_dir) [MODE_EXFAT]: New function.
(grub_fat_find_dir) [MODE_EXFAT]: Handle ExFAT.
(grub_fat_label) [MODE_EXFAT]: New function.
(grub_fat_fs) [MODE_EXFAT]: Set name to "exfat" and
reserved_first_sector to 0.
* grub-core/fs/affs.c (grub_affs_read_file): Use grub_off_t for offset.
* grub-core/fs/afs.c (grub_afs_read_file): Likewise.
* grub-core/fs/fshelp.c (grub_fshelp_find_file): Remove leftover
variable.
* grub-core/fs/hfs.c (grub_hfs_read_file): Use grub_off_t for offset
and connected types.
* grub-core/fs/nilfs2.c (grub_nilfs2_read_file): Use grub_off_t for
offset.
(grub_nilfs2_iterate_dir): Use grub_off_t for fpos.
* grub-core/fs/sfs.c (grub_sfs_read_file): Use grub_off_t for offset.
* grub-core/fs/ufs.c (grub_ufs_read_file): Use grub_off_t for offset
and connected types.
* include/grub/misc.h (grub_isxdigit): New function.
* grub-core/video/colors.c (my_isxdigit): Removed. All users
switched to grub_isxdigit.
* grub-core/term/serial.c (grub_serial_find): Fix in case of port
number starting with a letter.
LVM support for FreeBSD and GNU/kFreeBSD.
* util/lvm.c (grub_util_lvm_isvolume): Enable on FreeBSD and
GNU/kFreeBSD.
(LVM_DEV_MAPPER_STRING): Move from here ...
* include/grub/util/lvm.h (LVM_DEV_MAPPER_STRING): ... to here.
* util/getroot.c: Include `<grub/util/lvm.h>'.
(grub_util_get_dev_abstraction): Enable
grub_util_biosdisk_is_present() on FreeBSD and GNU/kFreeBSD.
Check for LVM abstraction on FreeBSD and GNU/kFreeBSD.
(grub_util_get_grub_dev): Replace "/dev/mapper/" with
`LVM_DEV_MAPPER_STRING'. Enable LVM and mdRAID only on platforms that
support it.
* util/grub-setup.c (main): Check for LVM also on FreeBSD and
GNU/kFreeBSD.
* util/grub.d/10_kfreebsd.in: Load `geom_linux_lvm' kernel module
when LVM abstraction is required for ${GRUB_DEVICE}.
define.
* grub-core/kern/mips/loongson/init.c (grub_machine_init): Check
that PRID matches the detected subplatform and reset the subplatform
if it doesn't.
* configure.ac: --enable-cache-stats added.
* config.h.in (DISK_CACHE_STATS): New define.
* grub-core/Makefile.core.def (cacheinfo): New command.
* include/grub/disk.h(grub_disk_cache_get_performance): New function.
* grub-core/commands/cacheinfo.c: New file.
* grub-core/commands/minicmd.c (grub_rescue_cmd_info): Updated and
moved to cacheinfo.c.
* grub-core/kern/disk.c: Use DISK_CACHE_STATS to disable disk cache
debug code.
* include/grub/disk.h: Likewise.
Detect LSI MegaRAID SAS (`mfi') devices on GNU/kFreeBSD.
* util/deviceiter.c [__FreeBSD_kernel__] (get_mfi_disk_name): New
function.
[__FreeBSD_kernel__] (grub_util_iterate_devices): Scan for mfi
(/dev/mfid[0-9]+) devices using get_mfi_disk_name().
* include/grub/ata.h (grub_ata): New member log_sector_size.
* grub-core/disk/ata.c (grub_ata_dumpinfo): Show sector size.
(grub_ata_identify): Read sector size.
(grub_ata_readwrite): Use log_sector_size rather than hardcoded value.
* grub-core/video/video.c (grub_video_edid_checksum): New function.
(grub_video_edid_preferred_mode): Likewise. Try EDID followed by
the Flat Panel extension, in line with the X.org VESA driver.
* grub-core/video/i386/pc/vbe.c (grub_vbe_bios_get_flat_panel_info):
New function.
(grub_vbe_bios_get_ddc_capabilities): Likewise.
(grub_vbe_bios_read_edid): Likewise.
(grub_vbe_get_preferred_mode): Likewise.
(grub_video_vbe_setup): When the mode is "auto", try to get the
preferred mode from VBE, and use the largest mode that is no larger
than the preferred mode (some BIOSes expose a preferred mode that is
not in their mode list!). If this fails, fall back to 640x480 as a
safe conservative choice.
(grub_video_vbe_get_edid): New function.
(grub_video_vbe_adapter): Add get_edid.
* include/grub/video.h (struct grub_vbe_edid_info): New structure.
(struct grub_video_adapter): Add get_edid.
(grub_video_edid_checksum): Add prototype.
(grub_video_edid_preferred_mode): Likewise.
* include/grub/i386/pc/vbe.h (struct grub_vbe_flat_panel_info): New
structure.
* grub-core/commands/videoinfo.c (print_edid): New function.
(grub_cmd_videoinfo): Print EDID if available.
* util/grub.d/00_header.in (GRUB_GFXMODE): Default to "auto". This
is more appropriate on a wider range of platforms than 640x480.
* docs/grub.texi (Simple configuration): Update GRUB_GFXMODE
documentation.
* grub-core/Makefile.core.def (kernel): Remove kern/emu/getroot.c and
kern/emu/raid.c.
* grub-core/kern/emu/main.c (main): Don't try to guess root device. It's
useless.
* grub-core/kern/emu/misc.c (get_win32_path): Moved from here...
* util/getroot.c (get_win32_path): ... here.
* grub-core/kern/emu/misc.c (fini_libzfs): Moved from here...
* util/getroot.c (fini_libzfs): ... here.
* grub-core/kern/emu/misc.c (grub_get_libzfs_handle): Moved from here...
* util/getroot.c (grub_get_libzfs_handle): ... here.
* grub-core/kern/emu/misc.c (grub_find_zpool_from_dir):
Moved from here...
* util/getroot.c (grub_find_zpool_from_dir): ... here.
* grub-core/kern/emu/misc.c
(grub_make_system_path_relative_to_its_root): Moved from here...
* util/getroot.c (grub_make_system_path_relative_to_its_root): ... here.
* grub-core/kern/emu/getroot.c: Moved from here ...
* util/getroot.c: ... here. All users updated.
* grub-core/kern/emu/raid.c: Moved from here ...
* util/raid.c: ... here. All users updated.
* Makefile.util.def (libgrubkern.a): Add grub-core/kern/emu/raid.c.
(grub-setup): Remove util/raid.c.
* grub-core/Makefile.core.def (kernel): Add kern/emu/raid.c on emu.
* grub-core/disk/lvm.c (scan_depth): New variable.
(grub_lvm_iterate): Rescan if necessary.
(find_lv): New function based on grub_lvm_open.
(grub_lvm_open): Use find_lv. Rescan on error.
(is_node_readable): New function.
(is_lv_readable): Likewise.
(grub_lvm_scan_device): Skip already found disks.
(do_lvm_scan): New function. Move grub_lvm_scan_device inside of it.
Stop if searched device is found and readable.
* grub-core/disk/raid.c (inscnt): New variable.
(scan_depth): Likewise.
(scan_devices): New function based on grub_raid_register. Abort if
looked for device is found.
(grub_raid_iterate): Rescan if needed.
(find_array): NEw function based on -grub_raid_open.
(grub_raid_open): Use find_array and rescan.
(insert_array): Set became_readable_at.
* grub-core/kern/disk.c (grub_disk_dev_iterate): Iterate though "pull.
* grub-core/kern/emu/getroot.c (grub_util_open_dm) [HAVE_DEVICE_MAPPER]:
New function.
(grub_util_is_lvm) [HAVE_DEVICE_MAPPER]: Use grub_util_open_dm.
(grub_util_pull_device): New function.
(grub_util_get_grub_dev): Call grub_util_pull_device.
* util/raid.c: Moved to ..
* grub-core/kern/emu/raid.c: ... here.
(grub_util_raid_getmembers): New parameter "bootable".
All users updated. Support 1.x.
* include/grub/ata.h (grub_ata_dev): Change iterate prototype.
All users updated.
* include/grub/disk.h (grub_disk_pull_t): New enum.
(grub_disk_dev): Change iterate prototype.
All users updated.
* include/grub/emu/getroot.h (grub_util_raid_getmembers) [__linux__]:
New proto.
* include/grub/emu/hostdisk.h (grub_util_pull_device): Likewise.
* include/grub/lvm.h (grub_lvm_lv): New members fullname and compatname.
* include/grub/raid.h (grub_raid_array): New member became_readable_at.
* include/grub/scsi.h (grub_scsi_dev): Change iterate prototype.
All users updated.
* include/grub/util/raid.h: Removed.
* grub-core/Makefile.core.def (kernel): Use kern/ieee1275/init.c
instead of kern/sparc64/ieee1275/init.c.
* grub-core/kern/ieee1275/cmain.c (grub_ieee1275_find_options)
[__sparc__]: Set GRUB_IEEE1275_FLAG_NO_PARTITION_0.
* grub-core/kern/ieee1275/init.c [__sparc__]: Include
grub/machine/kernel.h.
(grub_ieee1275_original_stack) [__sparc__]: New variable.
(grub_claim_heap) [__sparc__]: Use sparc version.
(grub_machine_init): Moved args parsing to
(grub_parse_cmdline): ...this.
* grub-core/kern/sparc64/ieee1275/init.c: Removed.
* include/grub/offsets.h (GRUB_KERNEL_SPARC64_IEEE1275_MOD_GAP):
New definition.
(GRUB_KERNEL_SPARC64_IEEE1275_MOD_ALIGN): Likewise.
Move BOOTP to separate file.
* grub-core/Makefile.core.def (net): Add net/bootp.c.
* grub-core/net/net.c: Move all BOOTP functions to
* grub-core/net/bootp.c: ... here.
Use frame interface on PXE.
* grub-core/Makefile.core.def (pxecmd): Removed.
(pxe): Use net/drivers/i386/pc/pxe.c rather than net/i386/pc/pxe.c.
* grub-core/commands/i386/pc/pxecmd.c: Removed.
* grub-core/i386/pc/pxe.c: Moved from here ...
* grub-core/net/i386/pc/pxe.c: ... here. Rewritten.
* grub-core/net/net.c (grub_net_open_real): Handle old pxe syntax.
* include/grub/i386/pc/pxe.h (grub_pxe_unload): Removed.
EFI network support.
* grub-core/Makefile.core.def (efinet): New module.
* grub-core/disk/efi/efidisk.c (compare_device_paths): Moved from
here...
* grub-core/kern/efi/efi.c (grub_efi_compare_device_paths): ... here.
All users updated.
* grub-core/kern/efi/init.c (grub_efi_net_config): New variable.
(grub_machine_get_bootlocation): Call grub_efi_net_config if needed.
* grub-core/kern/x86_64/efi/callwrap.S (efi_wrap_7): New function.
* grub-core/net/drivers/efi/efinet.c: New file.
* include/grub/efi/efi.h (grub_efi_compare_device_paths): New proto.
(grub_efi_net_config): New extern var.
Various cleanups and bugfixes.
* grub-core/disk/efi/efidisk.c (grub_efidisk_open): Fix off-by-one
error.
(grub_efidisk_get_device_name): Unify similar codepaths. Accept whole
disk declared as partition.
* grub-core/disk/ieee1275/ofdisk.c (grub_ofdisk_open): Fix memory
leak on failure.
* grub-core/kern/dl.c (grub_dl_load_file): Fix memory leak.
* grub-core/kern/mm.c (grub_debug_malloc): Don't use unsupported %zx.
(grub_debug_zalloc): Likewise.
(grub_debug_realloc): Likewise.
(grub_debug_memalign): Likewise.
* grub-core/net/arp.c (grub_net_arp_receive): IPv4 is 4-byte wide.
Check that target is IPv4.
* grub-core/net/drivers/ieee1275/ofnet.c (grub_ofnet_findcards): Use
local-mac-address as fallback.
* grub-core/net/ethernet.c (grub_net_recv_ethernet_packet): Prevent
memory leak.
* grub-core/net/ip.c (ipchksum): Rename to ...
(grub_net_ip_chksum): ... this. All users updated.
(grub_net_recv_ip_packets): Special handling for DHCP.
* util/grub-mkimage.c (generate_image): Zero-out aout header.
Unify prefix handling
* grub-core/kern/efi/init.c (grub_efi_set_prefix): Revamped into ...
(grub_machine_get_bootlocation): ... this.
* grub-core/kern/emu/main.c (grub_machine_set_prefix): Revamped into ...
(grub_machine_get_bootlocation): ... this.
(grub_prefix): New variable.
(prefix): Removed.
(root_dev): New variable.
(dir): Likewise.
(main): Use new variables.
* grub-core/kern/i386/coreboot/init.c (grub_machine_set_prefix):
Revamped into ...
(grub_machine_get_bootlocation): ... this.
* grub-core/kern/i386/efi/init.c (grub_machine_set_prefix): Removed.
* grub-core/kern/i386/pc/init.c (make_install_device): Revamped into ...
(grub_machine_get_bootlocation): ... this.
(grub_machine_set_prefix): Removed.
* grub-core/kern/ia64/efi/init.c (grub_machine_set_prefix): Removed.
* grub-core/kern/ieee1275/init.c (grub_machine_set_prefix):
Revamped into ...
(grub_machine_get_bootlocation): ... this.
* grub-core/kern/main.c (grub_set_root_dev): Revamped into ...
(grub_set_prefix_and_root): ... this. All users updated.
* grub-core/kern/mips/init.c (grub_machine_set_prefix):
Revamped into ...
(grub_machine_get_bootlocation): ... this.
* include/grub/kernel.h (grub_machine_set_prefix): Removed.
(grub_machine_get_bootlocation): New proto.
* include/grub/i386/pc/kernel.h (grub_pc_net_config): New var.
Less intrusive and more reliable seek on network implementation.
* grub-core/kern/file.c (grub_file_net_seek): Removed.
(grub_file_seek): Don't call grub_file_net_seek.
* grub-core/net/net.c (grub_net_fs_read): Renamed to ...
(grub_net_fs_read_real): .. this.
(grub_net_seek_real): Use net->offset.
(grub_net_fs_read): Seek if necessary.
Unify IEEE1275 netwotk config with the other platforms.
* grub-core/kern/ieee1275/init.c (grub_ieee1275_net_config):
New variable.
(grub_machine_get_bootlocation): Support network.
* grub-core/kern/ieee1275/openfw.c (grub_ieee1275_parse_args):
Support type and device parsing.
(grub_ieee1275_get_device_type): New function.
* grub-core/net/drivers/ieee1275/ofnet.c (grub_getbootp_real): Revamped
into ...
(grub_ieee1275_net_config_real): ... this.
(grub_ofnet_probecards): Removed.
* grub-core/Makefile.am (KERNEL_HEADER_FILES): Remove ofnet.h.
* include/grub/ieee1275/ofnet.h: Removed.
* include/grub/ieee1275/ieee1275.h (grub_ieee1275_net_config): NEw
extern var.
(grub_ieee1275_get_device_type): New function.
Unify network device closing across platforms and make more robust.
* grub-core/kern/ieee1275/init.c (grub_machine_fini): Don't call
grub_grubnet_fini.
* grub-core/net/ethernet.c (send_ethernet_packet): Open card if it isn't
already.
* grub-core/net/net.c (grub_net_network_level_interface_register):
Update num_ifaces.
(grub_net_card_unregister): Close all interfaces.
(receive_packets): Don't poll if no iterfaces are registered.
Open if necessary.
(grub_net_fini_hw): New function.
(grub_net_restore_hw): Likewise.
(fini_hnd): New variable.
(GRUB_MOD_INIT): Register preboot hook.
(GRUB_MOD_FINI): Run and unregister preboot hook.
Poll network cards when idle.
* grub-core/kern/term.c (grub_net_poll_cards_idle): New variable.
(grub_checkkey): Call grub_net_poll_cards_idle if it's not NULL.
* grub-core/net/net.c (receive_packets): Save last poll time.
(grub_net_poll_cards_idle_real): New function.
(GRUB_MOD_INIT): Register grub_net_poll_cards_idle.
(GRUB_MOD_FINI): Unregister grub_net_poll_cards_idle.
* include/grub/kernel.h (grub_poll_cards_idle): New extern variable.
Rename ofnet interfaces.
* grub-core/net/drivers/ieee1275/ofnet.c (find_alias): New function.
(grub_ofnet_findcards): Use ofnet_%s names.
* util/grub-mknetdir.in: Support for EFI and IEEE1275.
Cleanup socket opening.
* grub-core/net/net.c (grub_net_fs_open): Rewritten.
(grub_net_fs_close): Likewise.
(grub_net_fs_read_real): Use eof member.
* include/grub/net/udp.h (+grub_net_udp_open): New proto.
(+grub_net_udp_close): New inline function.
* include/grub/net/tftp.h: Moved to the top of ...
* grub-core/net/tftp.c: ... here.
* include/grub/net/ip.h: Moved mostly to the top of ...
* grub-core/net/ip.c: ... here.
* include/grub/net/ethernet.h: Moved mostly to the top of ...
* grub-core/net/ethernet.c: ... here.
* grub-core/kern/device.c (grub_device_close): Free device->net->server.
* grub-core/commands/probe.c (grub_cmd_probe): Use protocol name for
FS name.
* include/grub/net/ip.h (ipv4_ini): Removed.
(ipv4_fini): Likewise.
* include/grub/net/ip.h (grub_net_recv_ip_packets): New proto.
(grub_net_send_ip_packets): Likewise.
default_bg_color rather than black.
(grub_gfxterm_fullscreen): Likewise.
(grub_gfxterm_background_color_cmd): Save new background color in
default_bg_color.
* grub-core/fs/zfs/zfs.c (zlib_decompress): New function.
(decomp_table): Add zlib entries.
(zio_read): USe 8 bits for compression function rather than 3.
* include/grub/zfs/zio.h (zio_compress): Add zlib values.
* grub-core/Makefile.core.def (ata_pthru): Removed.
(ahci): New module.
(pata): Likewise.
* grub-core/bus/usb/ohci.c (GRUB_MOD_FINI): Unregister preboot hook
on unload.
* grub-core/commands/hdparm.c (grub_hdparm_do_ata_cmd): Use ATA
readwrite.
(grub_hdparm_do_check_powermode_cmd): Likewise.
(grub_hdparm_do_smart_cmd): Likewise.
(grub_hdparm_set_val_cmd): Likewise.
(grub_cmd_hdparm): Likewise. Check thta we have an ATA device.
* grub-core/disk/ahci.c: New file.
* grub-core/disk/ata.c: Factor out the low-level part into ...
* grub-core/disk/pata.c: ... here.
* grub-core/disk/ata_pthru.c: Contents moved to ...
* grub-core/disk/pata.c: ... here.
* grub-core/disk/scsi.c (grub_scsi_names): New array.
(grub_scsi_iterate): Use grub_scsi_names.
(grub_scsi_open): Likewise.
* grub-core/kern/disk.c (grub_disk_ata_pass_through): Removed.
* include/grub/ata.h (grub_ata_commands): Add DMA commands.
(grub_ata_regs_t): New struct.
(grub_disk_ata_pass_through_parms): Likewise.
(grub_ata_device): Renamed to ...
(grub_ata): ... this.
(grub_ata_dev): New struct.
Removed all low-level inline functions.
* include/grub/scsi.h: Add PATA and AHCI subsystems.
(grub_scsi_dev): Removed 'name' and 'id'. Added 'id' parameter to
iterate hooks and open. All users updated.
* util/grub-install.in: Handle AHCI disk module.
* grub-core/video/readers/jpeg.c (JPEG_MARKER_DRI): New define.
(JPEG_MARKER_RST0): Likewise.
(JPEG_MARKER_RST1): Likewise.
(JPEG_MARKER_RST2): Likewise.
(JPEG_MARKER_RST3): Likewise.
(JPEG_MARKER_RST4): Likewise.
(JPEG_MARKER_RST5): Likewise.
(JPEG_MARKER_RST6): Likewise.
(JPEG_MARKER_RST7): Likewise.
(grub_jpeg_data): New fields dri, r1, bitmap_ptr.
(grub_jpeg_decode_dri): New function.
(grub_jpeg_decode_sos): Move image data related part into
grub_jpeg_decode_data function.
(grub_jpeg_decode_data): New function.
(grub_jpeg_reset): New function.
(grub_jpeg_decode_jpeg): Handle new markers.
Detect `ataraid' devices on GNU/kFreeBSD. Fix for ATA devices using
`ata' driver on kernel of FreeBSD 9.
* util/deviceiter.c [__FreeBSD_kernel__] (get_ada_disk_name)
(get_ataraid_disk_name): New functions.
[__FreeBSD_kernel__] (grub_util_iterate_devices): Scan for ataraid
(/dev/ar[0-9]+) and ada (/dev/ada[0-9]+) devices using
get_ataraid_disk_name() and get_ada_disk_name().
after ten consecutive open failures. Scanning all the way up to
10000 is excessive and can cause serious performance problems in
some configurations.
Fixes Ubuntu bug #787461.
* grub-core/kern/emu/getroot.c (grub_find_device): Recognize
dir == /dev/mapper.
(grub_guess_root_device): Use already known os_dev if possible.
* grub-core/kern/emu/hostdisk.c
(convert_system_partition_to_system_disk): Scan only in /dev/mapper
if device is known to be a dm one.
Also-By: Colin Watson <cjwatson@ubuntu.com>
* grub-core/kern/misc.c (grub_divmod64_full): Renamed to ...
(grub_divmod64): ... this.
* include/grub/misc.h (grub_divmod64): Removed. All users switch to full
version.
* grub-core/fs/fat.c: Include grub/fat.h.
(grub_fat_bpb): Moved to ...
* include/grub/fat.h (grub_fat_bpb): ... here. New file.
* grub-core/loader/i386/pc/chainloader.c: Include grub/fat.h and
grub/ntfs.h.
* include/grub/i386/pc/chainloader.h (grub_chainloader_flags_t):
Moved from here...
* grub-core/loader/i386/pc/chainloader.c (grub_chainloader_flags_t): ...
here.
* grub-core/loader/i386/pc/chainloader.c (grub_chainloader_patch_bpb):
New function.
(grub_chainloader_cmd): Patch BPB if --bpb is given.
(GRUB_MOD_INIT): Show --bpb.
* grub-core/loader/i386/pc/ntldr.c (grub_cmd_ntldr): Patch BPB.
* grub-core/normal/main.c (features): New variable.
(GRUB_MOD_INIT): Set feature_* variables.
* include/grub/i386/pc/chainloader.h (grub_chainloader_patch_bpb): New
proto.
* include/grub/ntfs.h (grub_ntfs_bpb): New field bios_drive.
(grub_fat_bpb): Moved to ...
* include/grub/fat.h (grub_fat_bpb): ... here. New file.
* grub-core/loader/i386/pc/chainloader.c: Include grub/fat.h and
grub/ntfs.h.
* include/grub/i386/pc/chainloader.h (grub_chainloader_flags_t):
Moved from here...
* grub-core/loader/i386/pc/chainloader.c (grub_chainloader_flags_t): ...
here.
* grub-core/loader/i386/pc/chainloader.c (grub_chainloader_patch_bpb):
New function.
(grub_chainloader_cmd): Patch BPB if --bpb is given.
(GRUB_MOD_INIT): Show --bpb.
* grub-core/loader/i386/pc/ntldr.c (grub_cmd_ntldr): Patch BPB.
* grub-core/normal/main.c (features): New variable.
(GRUB_MOD_INIT): Set feature_* variables.
* include/grub/i386/pc/chainloader.h (grub_chainloader_patch_bpb): New
proto.
* include/grub/ntfs.h (grub_ntfs_bpb): New field bios_drive.
* grub-core/loader/i386/linux.c (GRUB_LINUX_CL_END_OFFSET): Removed.
(maximal_cmdline_size): New variable.
(allocate_pages): Use maximal_cmdline_size.
(grub_cmd_linux): Set and use maximal_cmdline_size.
* grub-core/loader/i386/pc/linux.c (GRUB_LINUX_CL_END_OFFSET): Removed.
(allocate_pages): Use maximal_cmdline_size.
(grub_cmd_linux): Set and use maximal_cmdline_size.
* include/grub/i386/linux.h (GRUB_LINUX_SETUP_MOVE_SIZE): Removed.
(linux_kernel_header): Add fields kernel_alignment, relocatable, pad
and cmdline_size.
* grub-core/kern/emu/getroot.c (grub_util_is_dmraid): Removed.
(grub_util_is_lvm): New function.
(grub_util_get_dev_abstraction): Assume dmraid if not lvm rather
than lvm if not dmraid.
Handle mapped md nodes.
* grub-core/kern/emu/hostdisk.c (device_is_mapped): Rename to ...
(grub_util_device_is_mapped): ... this. Make always available. All users
updated.
(grub_util_get_dm_node_linear_info) [HAVE_DEVICE_MAPPER]: New function.
(convert_system_partition_to_system_disk): Handle lvm, mpath and
dmraid nodes.
* include/grub/emu/misc.h (grub_util_device_is_mapped): New proto.
Also-By: Colin Watson <cjwatson@ubuntu.com>
allow both endiannesses coexist.
* configure.ac: proparate target_cpu=mipsel rather than resetting to
mips. All conditions adjusted.
* tests/util/grub-shell-tester.in: Remove gratuitious target_cpu
variable.
* util/grub-install.in: Adjust conditions to take renaming into account.
* util/grub-mkimage.c (image_targets): Likewise. New target
mips-qemu_mips-elf for bigendian mips.
* grub-core/boot/decompressor/none.c (grub_decompress_core): Exit
early if src == dest.
* util/grub-mkimage.c (generate_image): Arange for src == dest if
compression is none.
as opposed to after.
* grub-core/Makefile.core.def (kernel): Increase linking address.
(none_decompress): Likewise.
(xz_decompress): Likewise.
* grub-core/boot/mips/startup_raw.S: Use prewritten uncompression
address.
* grub-core/kern/mips/arc/init.c (grub_machine_init): Handle memory
layout change.
(grub_arch_modules_addr): New function.
* grub-core/kern/mips/init.c (grub_arch_modules_addr): Moved from here...
* grub-core/kern/mips/loongson/init.c (grub_arch_modules_addr): .. here
* grub-core/kern/mips/qemu_mips/init.c (grub_arch_modules_addr): ... and
here.
* grub-core/kern/mips/startup.S (total_size): Rename to ...
(grub_total_modules_size): ... this. Make global.
[GRUB_MACHINE_ARC]: Don't attempt to move modules out of the bss.
* include/grub/offsets.h (GRUB_KERNEL_MIPS_LOONGSON_UNCOMPRESSED_ADDR):
New definition.
(GRUB_KERNEL_MIPS_QEMU_MIPS_UNCOMPRESSED_ADDR): Likewise.
(GRUB_KERNEL_MIPS_ARC_UNCOMPRESSED_ADDR): Likewise.
(GRUB_KERNEL_MACHINE_UNCOMPRESSED_ADDR): Likewise.
(GRUB_KERNEL_MIPS_ARC_LINK_ADDR): Increased.
* util/grub-mkimage.c (image_target_desc): New flag
PLATFORM_FLAGS_MODULES_BEFORE_KERNEL.
(image_targets): Set PLATFORM_FLAGS_MODULES_BEFORE_KERNEL on mips-arc.
(generate_image): Handle images with modules before kernel.
and GRUB_CMDLINE_LINUX_XEN_REPLACE_DEFAULT, which replace
GRUB_CMDLINE_LINUX and GRUB_CMDLINE_LINUX_DEFAULT (complementing the
existing options which append).
* docs/grub.texi (Simple configuration): Document new options.
Reported by: Ian Jackson. Fixes Debian bug #617538.
* Makefile.util.def (libgrubmods.a): Add dvh.c.
* conf/Makefile.common (CCASFLAGS_PLATFORM): Add -mips3 on all mips
platforms.
* configure.ac: New target mips-arc.
* gentpl.py: Likewise.
* grub-core/Makefile.am: Likewise.
* grub-core/Makefile.core.def: Likewise.
(xz_decompress): Remove -D GRUB_MACHINE_LINK_ADDR.
(none_decompress): Likewise.
(lsdev): New module.
(datetime): Use lib/arc/datetime.c on ARC.
(part_dvh): New module.
* grub-core/commands/arc/lsdev.c: New file.
* grub-core/disk/arc/arcdisk.c: Likewise.
* grub-core/kern/mips/arc/init.c: Likewise.
* grub-core/kern/mips/cache_flush.S: Don't flush non 4-byte
aligned addresses.
* grub-core/kern/mips/dl.c (grub_arch_dl_check_header): Fix bigendian
support.
(grub_arch_dl_relocate_symbols): Likewise.
* grub-core/kern/mips/loongson/init.c (grub_get_rtc): Moved from here...
* grub-core/kern/mips/init.c (grub_get_rtc): ... here.
* grub-core/kern/mips/startup.S (grub_arch_cpuclock): Have on all
platforms.
* grub-core/lib/arc/datetime.c: New file.
* grub-core/loader/mips/linux.c: Always include time.h. Don't include
pci.h on non-loongson.
(envp_off) [!GRUB_MACHINE_MIPS_LOONGSON]: Remove.
(grub_linux_boot): Set unused registers to 0.
(grub_cmd_linux) [!GRUB_MACHINE_MIPS_LOONGSON]: Remove envp.
* grub-core/mmap/mips/loongson/uppermem.c: Moved from here ...
* grub-core/mmap/mips/uppermem.c: ...here.
* grub-core/partmap/dvh.c: New file.
* grub-core/term/arc/console.c: Likewise.
* grub-core/term/terminfo.c (ANSI_C0_STR): New const.
(grub_terminfo_set_current): Add terminal "arc".
(grub_terminfo_readkey): Support ARC sequences.
* include/grub/arc/arc.h: New file.
* include/grub/arc/console.h: Likewise.
* include/grub/disk.h (grub_disk_dev_id): Add
GRUB_DISK_DEVICE_ARCDISK_ID.
* include/grub/mips/arc/kernel.h: New file.
* include/grub/mips/arc/memory.h: Likewise.
* include/grub/mips/arc/time.h: Likewise.
* include/grub/mips/loongson/kernel.h (grub_halt): Moved from here ...
* include/grub/mips/kernel.h (grub_halt): ... here.
* include/grub/mips/loongson.h (GRUB_CPU_REGISTER_WRAP): Moved from
here...
* include/grub/mips/mips.h (GRUB_CPU_REGISTER_WRAP): ... here.
(GRUB_CPU_LOONGSON_COP0_TIMER_COUNT): Moved from here ...
* include/grub/mips/mips.h (GRUB_CPU_LOONGSON_COP0_TIMER_COUNT): .. here
* include/grub/mips/loongson/kernel.h (grub_reboot): Removed redundant
proto.
* include/grub/mips/loongson/memory.h (GRUB_ARCH_LOWMEMVSTART): Moved
from here ...
* include/grub/mips/memory.h (GRUB_ARCH_LOWMEMVSTART): ... here.
(GRUB_ARCH_LOWMEMPSTART): Moved from here ...
* include/grub/mips/memory.h (GRUB_ARCH_LOWMEMPSTART): ... here.
(GRUB_ARCH_LOWMEMMAXSIZE): Moved from here ...
* include/grub/mips/memory.h (GRUB_ARCH_LOWMEMMAXSIZE): ... here.
(GRUB_ARCH_HIGHMEMPSTART): Moved from here ...
* include/grub/mips/memory.h (GRUB_ARCH_HIGHMEMPSTART): ... here.
(grub_phys_addr_t): Moved from here ...
* include/grub/mips/memory.h (grub_phys_addr_t): ... here.
(grub_vtop): Moved from here ...
* include/grub/mips/memory.h (grub_vtop): ... here.
(grub_map_memory): Moved from here ...
* include/grub/mips/memory.h (grub_map_memory): ... here.
(grub_unmap_memory): Moved from here ...
* include/grub/mips/memory.h (grub_unmap_memory): ... here.
(grub_machine_mmap_iterate): Moved from here ...
* include/grub/mips/memory.h (grub_machine_mmap_iterate): ... here.
(grub_mmap_get_lower): Moved from here ...
* include/grub/mips/memory.h (grub_mmap_get_lower): ... here.
(grub_mmap_get_upper): Moved from here ...
* include/grub/mips/memory.h (grub_mmap_get_upper): ... here.
* include/grub/mips/loongson/time.h (grub_arch_cpuclock): Moved from
here ...
* include/grub/mips/time.h (grub_arch_cpuclock): ... here.
* include/grub/mips/loongson/time.h (grub_get_rtc): Moved from
here ...
* include/grub/mips/time.h (grub_get_rtc): ... here.
* include/grub/mips/loongson/time.h (grub_arch_cpuclock): Moved from
here ...
* include/grub/mips/time.h (grub_arch_cpuclock): ... here.
* include/grub/mips/loongson/time.h (grub_cpu_idle): Moved from
here ...
* include/grub/mips/time.h (grub_cpu_idle): ... here.
* include/grub/offsets.h (GRUB_KERNEL_MIPS_ARC_LINK_ADDR): New
definition.
(GRUB_KERNEL_MIPS_ARC_LINK_ALIGN): Likewise.
(GRUB_KERNEL_MIPS_ARC_COMPRESSED_SIZE): Likewise.
(GRUB_KERNEL_MIPS_ARC_UNCOMPRESSED_SIZE): Likewise.
(GRUB_KERNEL_MIPS_ARC_TOTAL_MODULE_SIZE): Likewise.
(GRUB_KERNEL_MIPS_ARC_PREFIX): Likewise.
(GRUB_KERNEL_MIPS_ARC_PREFIX_END): Likewise.
(GRUB_KERNEL_MIPS_ARC_MOD_ALIGN): Likewise.
(GRUB_MACHINE_LINK_ADDR): Likewise.
* include/grub/terminfo.h (GRUB_TERMINFO_READKEY_MAX_LEN): Increased
to 6.
* util/grub-install.in: Run dvhtool on ARC.
* util/grub-mkimage.c (image_targets): Add mips-arc.
* grub-core/bus/usb/usb.c (grub_usb_device_initialize): Fail if
configcnt == 0.
* include/grub/usb.h (grub_usb_err_t): New enum value
GRUB_USB_ERR_BADDEVICE.
* grub-core/fs/affs.c (grub_affs_time): New struct.
(grub_affs_file): New field mtime.
(grub_fshelp_node): Changed 'block' and 'parent' to more appropriate
type. Removed 'size'. New field 'di'. All users updated.
(grub_affs_mount): Simplify checsum checking.
(grub_affs_iterate_dir): New helper grub_affs_create_node.
(grub_affs_dir): Handle mtime.
* grub-core/fs/cpio.c (grub_cpio_find_file): Handle mtime.
(grub_cpio_dir): Likewise.
* grub-core/fs/hfs.c (grub_hfs_dirrec): New fields 'ctime' and 'mtime'.
(grub_hfs_filerec): New field mtime.
(grub_hfs_dir): Handle mtime.
(grub_hfs_mtime): New function.
(grub_hfs_fs): Register grub_hfs_mtime.
* grub-core/fs/iso9660.c (grub_iso9660_date2): New struct.
(grub_iso9660_dir): New field mtime.
(grub_fshelp_node): New field dirent.
(iso9660_to_unixtime): New function.
(iso9660_to_unixtime2): Likewise.
(grub_iso9660_read_symlink): Use node->dirent.
(grub_iso9660_iterate_dir): Likewise.
(grub_iso9660_dir): Set mtime.
(grub_iso9660_mtime): New function.
(grub_iso9660_fs): Register grub_iso9660_mtime.
* grub-core/fs/jfs.c (grub_jfs_time): New struct.
(grub_jfs_inode): New fields atime, ctime and mtime.
(grub_jfs_dir): Set mtime.
* grub-core/fs/minix.c (grub_minix_dir): Likewise.
* grub-core/fs/ntfs.c (list_file): Set mtime.
(grub_ntfs_dir): Likewise.
* grub-core/fs/reiserfs.c (grub_fshelp_node): New field 'mtime'.
(grub_reiserfs_iterate_dir): Set mtime.
(grub_reiserfs_dir): Likewise.
* grub-core/fs/sfs.c (grub_sfs_obj): New field mtime.
(grub_fshelp_node): Likewise.
(grub_sfs_iterate_dir): Set mtime.
(grub_sfs_dir): Likewise.
* grub-core/fs/udf.c (grub_udf_dir): Set mtime.
* grub-core/fs/xfs.c (grub_xfs_time): New struct.
(grub_xfs_inode): New fields atime, mtime, ctime.
(grub_xfs_dir): Set mtime.
* include/grub/datetime.h (grub_datetime2unixtime): New function.
* include/grub/hfs.h (grub_hfs_sblock): New fields ctime and mtime.
* include/grub/ntfs.h (grub_fshelp_node): New field mtime.
Support UDF symlinks.
* grub-core/fs/udf.c (grub_udf_iterate_dir): Handle symlinks.
(grub_ufs_read_symlink): New function. All users updated.
Check amiga partmap checksum.
* grub-core/partmap/amiga.c (grub_amiga_rdsk): Pad to 128 bytes.
(grub_amiga_partition): Likewise.
(amiga_partition_map_checksum): New function.
(amiga_partition_map_iterate): Check checksum.
* grub-core/Makefile.core.def (minix3): New module.
* grub-core/fs/minix.c (GRUB_MINIX_MAGIC) [MODE_MINIX3]: New value.
(GRUB_MINIX_BSIZE): Removed.
(GRUB_MINIX_INODE_DIR_BLOCKS): New definition. All users updated.
(grub_minix_ino_t): New type.
(grub_minix_le_to_cpu_ino): New macro.
(GRUB_MINIX_ZONE2SECT): New definition. All users updated.
(grub_minix_sblock) [MODE_MINIX3]: Change for minix3.
(grub_minix_data): New field block_size.
(grub_minix_read_file): Handle 64-bit correctly.
* grub-core/fs/minix3.c: New file.
Also-By: Vladimir Serbinenko <phcoder@gmail.com>
* Makefile.util.def (libgrubmods.a): Add grub-core/kern/ia64/dl_helper.c
* configure.ac: Add ia64-efi target.
Probe for __ia64_trampoline, __udivsi3, __umoddi3, __udivdi3,
__divsi3, __modsi3, __umodsi3, __moddi3 and __divdi3 symbols.
* gentpl.py: Add ia64_efi platform.
Rename x86_efi to efi and Add ia64-efi. All users updated.
* grub-core/Makefile.am: Set KERNEL_HEADER_FILES for ia64-efi.
* grub-core/Makefile.core.def (kernel.img): Add compile flags for ia64.
Remove kern/generic/rtc_get_time_ms.c on EFI.
Add kern/ia64/efi/startup.S, kern/ia64/efi/init.c, kern/ia64/dl.c,
kern/ia64/dl_helper.c on ia64-efi.
Add kern/emu/cache.c on emu.
(linux): Use on loader/ia64/efi/linux.c on ia64.
* grub-core/gensymlist.sh (grub_register_exported_symbols): Check
whether symbol is a function.
* grub-core/kern/dl.c [GRUB_MACHINE_EMU]: Include sys/mman.h.
(grub_symbol): New field 'isfunc'.
(grub_dl_resolve_symbol): Return whole symbol rather than just address.
(grub_dl_register_symbol): New argument 'isfunc'. All users updated.
(grub_dl_load_segments): Place all sections into the same region.
[__ia64__]: Create trampolines and got.
[GRUB_MACHINE_EMU]: Call mprotect.
(grub_dl_resolve_symbols): Resolve symbol type as well.
[__ia64__]: Create function descriptors.
* grub-core/kern/efi/efi.c (grub_get_rtc): Renamed to ...
(grub_rtc_get_time_ms): ... this. Expressions simplified.
(grub_get_rtc): New function.
* grub-core/kern/emu/cache.c [__ia64__]: New file.
* grub-core/kern/emu/cache.S: Renamed to ...
* grub-core/kern/emu/cache_s.S: ... this.
[__ia64__]: Add a nop.
* grub-core/kern/emu/full.c (grub_arch_dl_get_tramp_got_size)
[__ia64__]: New function.
* grub-core/kern/emu/lite.c [__ia64__]: Include ../ia64/dl.c.
* grub-core/kern/ia64/dl.c: New file.
* grub-core/kern/ia64/dl_helper.c: Likewise.
* grub-core/kern/ia64/efi/init.c: New file.
* grub-core/kern/ia64/efi/startup.S: Likewise.
* grub-core/lib/efi/halt.c [__ia64__]: Don't try acpi.
* grub-core/lib/ia64/longjmp.S: New file (from glibc).
* grub-core/lib/ia64/setjmp.S: Likewise (from glibc).
* grub-core/lib/setjmp.S [__ia64__]: Include ./ia64/setjmp.S.
* grub-core/loader/ia64/efi/linux.c: New file.
* include/grub/dl.h (GRUB_MOD_NAME): Redefined using C rather than asm.
(GRUB_MOD_DEP): Likewise.
(grub_dl) [__ia64__]: New fields got and tramp.
(grub_dl): New field 'base'.
(grub_dl_register_symbol): New argument isfunc. All users updated.
(GRUB_IA64_DL_TRAMP_ALIGN): New definition.
(GRUB_IA64_DL_TRAMP_SIZE): Likewise.
(GRUB_IA64_DL_GOT_ALIGN): Likewise.
(grub_ia64_dl_get_tramp_got_size): New proto.
(GRUB_ARCH_DL_TRAMP_ALIGN) [__ia64__]: Likewise
(GRUB_ARCH_DL_GOT_ALIGN) [__ia64__]: Likewise
(grub_arch_dl_get_tramp_got_size) [__ia64__]: Likewise
* include/grub/efi/api.h: Skip call wrappers on ia64.
* include/grub/efi/pe32.h (GRUB_PE32_MACHINE_IA64): New definition.
* include/grub/efi/time.h (GRUB_TICKS_PER_SECOND): Change to 1000.
* include/grub/elf.h (ELF_ST_INFO): New definition.
* include/grub/ia64/efi/kernel.h: New file.
* include/grub/ia64/efi/memory.h: Likewise.
* include/grub/ia64/efi/time.h: Likewise.
* include/grub/ia64/kernel.h: Likewise.
* include/grub/ia64/setjmp.h: Likewise (from glibc).
* include/grub/ia64/time.h: New file.
* include/grub/ia64/types.h: Likewise.
* include/grub/libgcc.h (__udivsi3, __umodsi3, __umoddi3, __udivdi3,
__moddi3, __divdi3, __divsi3, __modsi3, __ia64_trampoline):
New protos.
* include/grub/offsets.h (GRUB_KERNEL_IA64_EFI_PREFIX): New definition.
(GRUB_KERNEL_IA64_EFI_PREFIX_END): Likewise.
* include/grub/types.h (PRIxGRUB_ADDR): Likewise.
* util/grub-mkimage.c (image_target_desc): New field pe_target.
All users updated.
(EFI64_HEADER_SIZE): New definition. All users updated.
(image_targets): Add ia64-efi.
* util/grub-mkimagexx.c (relocate_symbols): New arguments jumpers and
jumpers_addr. All users updated.
Create function descriptors.
(count_funcs): New function.
(unaligned_uint32): New struct.
(MASK20): New definition.
(MASK19): Likewise.
(MASKF21): Likewise.
(add_value_to_slot_20b): New function.
(add_value_to_slot_21_real): Likewise.
(add_value_to_slot_21): Likewise.
(ia64_kernel_trampoline): New struct.
(nopm): New variable.
(jump): Likewise.
(make_trampoline): New function.
(relocate_addresses): Handle ia64.
(make_reloc_section): Likewise.
(load_image): Likewise.
Also-By: Robert Millan <rmh.grub@aybabtu.com>
Also-By: Vladimir Serbinenko <phcoder@gmail.com>
* configure.ac: Rename yeeloong platform to loongson. All users updated.
* grub-core/Makefile.core.def (fwstart_fuloong): New image.
* grub-core/boot/mips/loongson/fuloong.S: New file.
* grub-core/boot/mips/loongson/fwstart.S: Wait for CS5536 to come up.
Explicitly init CS5536.
[FULOONG]: Don't use serial until CS5536 is available.
Set GPIO based on dumps.
(serial_hw_init) [FULOONG]: Handle CS5536 parts.
[FULOONG]: Handle GPIO and memory controller differences.
Parse machine type in $a2.
* grub-core/boot/mips/startup_raw.S: Determine and save the
architecture.
* grub-core/bus/cs5536.c (gpiodump): Move to fwstart.S.
(grub_cs5536_init_geode): Remove gpio part. Conditionalise DIVIL
init on architecture type.
* grub-core/kern/mips/loongson/init.c (grub_machine_init): Init
SIS315E. Don't init at_keyboard on fuloong.
(grub_halt): Support Fuloong.
* grub-core/kern/mips/startup.S [LOONGSON]: Save $s7.
* grub-core/loader/mips/linux.c (LOONGSON_MACHTYPE): Removed.
(loongson_machtypes): New array.
(grub_cmd_linux) [GRUB_MACHINE_MIPS_LOONGSON]: Pass the right machine
type.
* grub-core/term/ns8250.c (serial_get_divisor): New parameter port and
config. All users updated. Handle CS5536 serial.
* grub-core/term/serial.c (grub_serial_register): Conditionalise
default port on machine type. Register serial as inactive.
* grub-core/video/sis315pro.c: New file.
* include/grub/cs5536.h (GRUB_CS5536_MSR_MAILBOX_CONFIG_ENABLED): New
definition.
(GRUB_CS5536_MSR_MAILBOX_CONFIG): Likewise.
(GRUB_CS5536_MSR_DIVIL_LEG_IO_UART1_COM1): Likewise.
(GRUB_CS5536_MSR_DIVIL_LEG_IO_UART2_COM3): Likewise.
(GRUB_CS5536_MSR_DIVIL_UART1_CONF): Likewise.
(GRUB_CS5536_MSR_DIVIL_UART2_CONF): Likewise.
* include/grub/mips/loongson.h (GRUB_CPU_LOONGSON_SHUTDOWN_GPIO): Rename
to ...
(GRUB_CPU_YEELOONG_SHUTDOWN_GPIO): ... this.
* include/grub/mips/loongson/kernel.h (GRUB_ARCH_MACHINE_YEELOONG): New
definition.
(GRUB_ARCH_MACHINE_FULOONG): Likewise.
(grub_arch_machine): New extern var.
* include/grub/mips/loongson/serial.h
(GRUB_MACHINE_SERIAL_DIVISOR_115200): Renamed to ...
(GRUB_MACHINE_SERIAL_PORT0_DIVISOR_115200): ... this.
(GRUB_MACHINE_SERIAL_PORT): Renamed to ...
(GRUB_MACHINE_SERIAL_PORT0): ... this.
(GRUB_MACHINE_SERIAL_PORT2_DIVISOR_115200): New definition.
(GRUB_MACHINE_SERIAL_PORT1): Likewise.
(GRUB_MACHINE_SERIAL_PORT2): Likewise.
(GRUB_MACHINE_SERIAL_PORTS): Include ports 1 and 2.
* include/grub/term.h (grub_term_register_input_inactive): New inline
function.
(grub_term_register_output_inactive): Likewise.
* include/grub/video.h (grub_video_driver_id): New value
GRUB_VIDEO_DRIVER_SIS315PRO.
* util/grub-mkimage.c (image_target_desc): Rename name to dirname.
New field "names". All users updated.
New field value IMAGE_FULOONG_FLASH.
(generate_image): USe separate fwstart hashes for yeeloong and fuloong.
* util/grub-pe2elf.c (MODLICENSE_SECTION): New definition. All following
sections shifted.
(insert_string): Make argument const char * instead of char *.
(write_section_data): Handle long section names.
Handle module_license.
to spin up.
* grub-core/disk/ata.c (grub_atapi_identify): Use GRUB_ATA_TOUT_DEV_INIT
if dev->present is 1. Reset dev->present on failure.
(grub_ata_device_initialize): Set dev->present to 1.
* include/grub/ata.h (GRUB_ATA_TOUT_DEV_INIT): New value.
(grub_ata_device): New member 'present'.
file_path to 0 for surety.
(grub_chainloader_boot): Set exit_data to NULL.
Unset the loader once done.
(grub_cmd_chainloader): Fix confusing error message if file is empty.
(devpath_1): Use MAKE_PIWG_PATH.
(devpath_2): Likewise.
(devpath_3): Likewise.
(devpath_4): Likewise.
(devpath_5): Likewise.
(devpath_6): Likewise.
The appleldr.mod was checked that to be binary identical to previous
version.
GRUB_ERR_BAD_FS rather than GRUB_ERR_IO if the disk is not a pxe
disk; otherwise grub_fs_probe will not fall back to the next
filesystem.
(grub_pxefs_open): Likewise, for consistency.
Reported and tested by: Ezekiel Grave.
#551428.
* docs/man/grub-editenv.h2m (SEE ALSO): New section.
* docs/man/grub-emu.h2m (SEE ALSO): Likewise.
* docs/man/grub-fstest.h2m (SEE ALSO): Likewise.
* docs/man/grub-install.h2m (SEE ALSO): Likewise.
* docs/man/grub-macho2img.h2m (SEE ALSO): Likewise.
* docs/man/grub-menulst2cfg.h2m (SEE ALSO): Likewise.
* docs/man/grub-mkconfig.h2m (SEE ALSO): Likewise.
* docs/man/grub-mkdevicemap.h2m (SEE ALSO): Likewise.
* docs/man/grub-mkfont.h2m (SEE ALSO): Likewise.
* docs/man/grub-mkimage.h2m (SEE ALSO): Likewise.
* docs/man/grub-mklayout.h2m (SEE ALSO): Likewise.
* docs/man/grub-mknetdir.h2m (SEE ALSO): Likewise.
* docs/man/grub-mkpasswd-pbkdf2.h2m (SEE ALSO): Likewise.
* docs/man/grub-mkrelpath.h2m (SEE ALSO): Likewise.
* docs/man/grub-mkrescue.h2m (SEE ALSO): Likewise.
* docs/man/grub-ofpathname.h2m (SEE ALSO): Likewise.
* docs/man/grub-pe2elf.h2m (SEE ALSO): Likewise.
* docs/man/grub-probe.h2m (SEE ALSO): Likewise.
* docs/man/grub-reboot.h2m (SEE ALSO): Likewise.
* docs/man/grub-script-check.h2m (SEE ALSO): Likewise.
* docs/man/grub-set-default.h2m (SEE ALSO): Likewise.
* docs/man/grub-setup.h2m (SEE ALSO): Likewise.
(grub_find_root_device_from_mountinfo): Remove non-virtual-device
test that was incorrectly reintroduced in r3214.
Reported by: Ian Dall. Fixes Savannah bug #33133.
* grub-core/lib/i386/relocator16.S (grub_relocator16_start): Move
grub_relocator16_sp to %esp rather than %ss, and zero-extend it.
Fixes Ubuntu bug #683904.
New function.
(grub_util_biosdisk_close): Use grub_util_biosdisk_flush.
* include/grub/emu/hostdisk.h (grub_util_biosdisk_flush): New proto.
* util/grub-setup.c (setup): Use grub_util_biosdisk_flush.
* grub-core/gfxmenu/widget-box.c (get_border_width): New function.
(grub_gfxmenu_create_box): Register get_border_width.
* grub-core/gfxmenu/gui_list.c (draw_menu): Use get_border_width
if available.
* include/grub/gfxwidgets.h (grub_gfxmenu_box): New member
get_border_width.
* grub-core/disk/raid.c (ascii2hex): New function.
(grub_raid_open): Accept mduuid/%s specification.
* grub-core/kern/emu/getroot.c (get_mdadm_name): Revamped into ...
(get_mdadm_uuid): ... this.
(grub_util_get_grub_dev): Use mduuid/%s if UUID is available.
move-mounts appearing out of order. Fixes Ubuntu bug #738345.
* grub-core/kern/emu/getroot.c (find_root_device_from_mountinfo):
Build a list of relevant visible mounts using the mnt_id and
parent_mnt_id fields, and then scan that list at the end.
even more important testing by Colin.
* Makefile.util.def (libgrubmods.a): Add crc.c and gzio.c
* grub-core/Makefile.core.def (btrfs): Add crc.c.
* grub-core/fs/btrfs.c: Stub replaced with real implementation.
* grub-core/io/gzio.c (grub_gzio): New fields mem_input_size,
mem_input_off and mem_input. All users updated to accept in-RAM input.
(gzio_seek): New function.
(test_zlib_header): Likewise.
(grub_gzio_read): Likewise.
(grub_zlib_decompress): Likewise.
* grub-core/kern/emu/getroot.c (grub_find_root_device_from_mountinfo):
Accept partial and non-virtual mounts.
(grub_guess_root_device): Do rescanning after device_from_mountinfo to
avoid receiving /dev/dm-X as device.
* grub-core/kern/emu/misc.c (grub_make_system_path_relative_to_its_root):
Handle bind and partial mounts.
* grub-core/lib/crc.c: New file.
* include/grub/deflate.h: Likewise.
* include/grub/emu/misc.h (grub_find_root_device_from_mountinfo): New
proto.
* include/grub/lib/crc.h: New file.
* grub-core/normal/menu_entry.c (per_term_screen): New member
num_entries.
(print_down): Use num_entries.
(update_screen): Likewise.
(grub_menu_entry_run): Set num_entries.
* grub-core/normal/menu_text.c (menu_viewer_data): New member
num_entries.
(grub_print_message_indented): Move real part to ...
(grub_print_message_indented_real): ... here. Additional argument
dry_run.
(draw_border): Additional argument num_entries.
(print_message): Additional argument dry_run.
(print_entries): Receive menu viewer data.
(grub_menu_init_page): New argment num_entries.
(menu_text_set_chosen_entry): Use num_entries.
(grub_menu_try_text): Likewise.
* grub-core/normal/term.c (print_ucs4_terminal): New argument dry_run.
All users updated.
(grub_ucs4_count_lines): New function.
* include/grub/term.h (grub_term_cursor_x): Moved from here ..
* grub-core/normal/menu_text.c (grub_term_cursor_x): ... to here.
* include/grub/term.h (GRUB_TERM_MESSAGE_HEIGHT): Removed.
(grub_term_border_height): Likewise.
(grub_term_num_entries): Likewise.
build system.
(Getting started): GRUB is developed in Bazaar now, not Subversion.
(Comment): Fix typo.
(Getting started): General copy-editing.
(Typical Development Experience): Likewise.
(Error Handling): Likewise.
(Video API): Likewise.
const.
* util/grub-setup.c (main): Reuse md device name if available.
* util/raid.c (grub_util_raid_getmembers): Receive device name and
not GRUB name as argument.
Based on patch by: Florian Wagner <fwagner>.
* grub-core/gfxmenu/gfxmenu.c (grub_gfxmenu_try): Move the call to
grub_gfxterm_fullscreen on error paths to ...
* grub-core/normal/menu.c (menu_init): ...here. Wait after showing
theme loading error.
configurations like pvmove. Previously code assumed that in some places
only lvs or only pvs are used whereas it seems that they are used
interchangeably.
* grub-core/disk/lvm.c (read_node): New function.
(read_lv): Use read_node.
(grub_lvm_scan_device): Use only first mirror on pvmove'd lvs.
Match volumes only at the end when all lvs are found. Take both
pvs (first) and lvs (second) into account.
* include/grub/lvm.h (grub_lvm_segment): Merge fields stripe_* and
mirror_* into node_*. All users updated.
(grub_lvm_stripe): Merge this ...
(grub_lvm_mirror): ... and this ...
(grub_lvm_node): ... into this. All users updated.
contributions by the various authors with active copyright assignment.
* docs/Makefile.am (info_TEXINFOS): Add grub-dev.texi.
* docs/font_char_metrics.png: New file.
* docs/font_char_metrics.txt: Likewise.
* docs/grub-dev.texi: Likewise.
* docs/grub.texi (Internals): Move from here ...
* docs/grub-dev.texi: ... here.
rather than the file it points to. This fixes use of freed memory
if an existing loopback device is replaced.
* grub-core/disk/loopback.c (grub_loopback_open): Store dev in
disk->data, not dev->file.
(grub_loopback_read): Adjust file assignment to match.
Fixes Ubuntu bug #742967.
memory corruptions.
* grub-core/fs/jfs.c (struct grub_jfs_diropen): Interpret bytes as
unsigned.
(grub_jfs_lookup_symlink): Make ino a grub_uint32_t rather than int.
(grub_jfs_blkno): Use 64-bit quantities for block sectors.
(grub_jfs_read_inode): Likewise.
(grub_jfs_opendir): Likewise. Remove now useless casts.
(grub_jfs_getent): Likewise.
Make ino a grub_uint32_t rather than int.
(grub_jfs_mount): Ensure that blksize and log2_blksize are consistent.
(grub_jfs_read_file): Use 64-bit quantities when necessary. Replace
division and module with bit operations.
(grub_jfs_find_file): Make ino a grub_uint32_t.
(grub_jfs_lookup_symlink): Likewise. Use 64-bit quantities
warning. (This was in fact always initialised before use, but GCC
wasn't smart enough to prove that.)
* grub-core/script/lexer.c (grub_script_lexer_yywrap): Likewise.
(Changes from GRUB Legacy): Link to "Environment block" section for
details of limitations.
(Simple configuration): Likewise. Link to documentation of gfxmode
and gfxpayload variables from GRUB_GFXMODE and GRUB_GFXPAYLOAD
respectively.
(Shell-like scripting): Note that normal variables are stored in the
environment.
(gettext): Link to documentation of lang and locale_dir.
(list_env): New section.
(load_env): New section.
(save_env): New section.
(Reporting bugs): Fix typo.
(grub_lvm_segment): New fields 'type', 'mirror_count' and 'mirrors'.
(grub_lvm_mirror): New struct.
* grub-core/disk/lvm.c (grub_lvm_checkvalue): Commented out.
(grub_lvm_iterate): Iterate only visible volumes.
(grub_lvm_read): Factor out to ..
(read_lv): ... this. Support mirrors.
(grub_lvm_read): New wrapper function.
(grub_lvm_scan_device): Parse mirrors. Skip everything that isn't
stripped or mirrored.
[!DEBUG_RELOCATOR_NOMEM_DPRINTF]: Avoid grub_dprintf since not all
terminals are capabple of malloc-free operation.
(allocate_inreg) [!DEBUG_RELOCATOR_NOMEM_DPRINTF]: Likewise.
(malloc_in_range) [!DEBUG_RELOCATOR_NOMEM_DPRINTF]: Likewise.
is disabled, even if no partition table is found.
Otherwise, the BIOS on Dell Latitude E series laptops will freeze
during POST if an invalid partition table is contained in the PBR
of the active partition when GRUB is installed to a partition.
* include/grub/ieee1275/ieee1275.h (grub_ieee1275_flag): New enum value
GRUB_IEEE1275_FLAG_BROKEN_ADDRESS_CELLS.
* grub-core/kern/ieee1275/mmap.c (grub_machine_mmap_iterate): Ignore
adress_cells and size:cells if GRUB_IEEE1275_FLAG_BROKEN_ADDRESS_CELLS
is set.
* grub-core/kern/ieee1275/cmain.c (grub_ieee1275_find_options): Set
GRUB_IEEE1275_FLAG_BROKEN_ADDRESS_CELLS on powermacs.
empty, since in that case we can only generate either nothing or a
syntactically invalid configuration file.
Reported by: Michal Suchanek. Fixes Debian bug #612898.
* conf/Makefile.common (STRIPFLAGS_KERNEL): Add -F elf32-i386 and
-R .drectve on cygwin.
* conf/i386-pc-cygwin-img-ld.sc: Merge rdata and pdata into data.
* configure.ac: Use $(top_builddir) in TARGET_OBJ2ELF.
(COND_CYGWIN): New condition.
* grub-core/Makefile.am (%.mod): Set TARGET_OBJ2ELF.
* grub-core/genmod.sh.in: Use ${TARGET_OBJ2ELF} and
not @TARGET_OBJ2ELF@.
* util/grub-pe2elf.c (write_symbol_table): Use pe_symtab->type and not
type to determine whether aux is to be used.
* grub-core/loader/i386/linux.c (grub_linux_setup_video): Use
grub_video_get_driver_id and variable gfxpayloadforcelfb to
fill have_vga.
(grub_linux_boot): Rely on grub_linux_setup_video to fill have_vga and
shift params->lfb_size.
* include/grub/i386/linux.h: Make an enume out of have_vga values.
* grub-core/normal/menu.c (grub_menu_execute_entry): New parameter
auto_boot. All users updated.
Declared static.
Handle chosen and default with submenus.
(grub_menu_execute_with_fallback): Declared static.
Don't notify failure if autobooted. Upper level does it.
(menuentry_eq): New function.
(get_entry_number): Use menuentry_eq.
(show_menu): New parameter "autobooted". All users updated.
(grub_show_menu): Likewise.
* include/grub/normal.h (grub_show_menu): Likewise.
* include/grub/menu.h (grub_menu_execute_entry): Removed.
(grub_menu_execute_with_fallback): Likewise.
(grub_machine_init): Don't check amount of low memory as reportedly
INT 12h can be broken and if low memory is too low we wouldn't have
gotten into grub_machine_init anyway.
move the cursor to (0,0).
* grub-core/term/ieee1275/ofconsole.c (grub_ofconsole_init_output):
Call grub_terminfo_output_init.
* grub-core/term/serial.c (grub_serial_term_output): Set .init.
* grub-core/term/terminfo.c (grub_terminfo_output_init): New function.
* include/grub/terminfo.h (grub_terminfo_output_init): New declaration.
* grub-core/kern/i386/pc/startup.S: Remove 0-data check.
* grub-core/lib/reed_solomon.c (decode_block): Do not proceed on 0 data
or 0 redundancy.
(grub_reed_solomon_add_redundancy): Do not proceed with 0 redundancy.
(grub_reed_solomon_recover): Likewise.
* grub-core/loader/i386/bsd.c (freebsd_bootdev): New variable.
(freebsd_biosdev): Likewise.
(grub_freebsd_boot): Use freebsd_bootdev and freebsd_biosdev.
(grub_cmd_freebsd): Set freebsd_bootdev and freebsd_biosdev.
used e.g. for initrd or modules. Moreover gzip handling of not
easily seekable files is buggy. Disable unknown file size for now. May
be inefficient but works.
* grub-core/io/gzio.c (test_header): Always retrieve the file size.
* grub-core/io/xzio.c (grub_xzio_open): Likewise.
previous patch increased the size of the RS code by 20 bytes (at
least with gcc-4.4), so increase this by 20 bytes to match.
(GRUB_KERNEL_I386_PC_NO_REED_SOLOMON_PART): Likewise.
scratch area. Make sure to initialise chosen in standalone mode as
well as non-standalone.
Reported by: Robert Hooker and Andy Whitcroft.
Tested by: Andy Whitcroft.
comment. Add an extra layer of quotation, requiring the output of
this function to be used in a printf format string.
(gettext_printf): New function.
* util/grub.d/10_hurd.in: Use gettext_printf where appropriate.
Extract translatable strings from here-documents and use a temporary
variable instead, so that xgettext can find them.
* util/grub.d/10_kfreebsd.in: Likewise.
* util/grub.d/10_linux.in: Likewise.
* util/grub.d/20_linux_xen.in: Likewise.
* po/grub.d.sed: New file.
* po/Makefile.in.in ($(DOMAIN).pot-update): Extract gettext_printf
arguments. Set c-format flags on all strings extracted from
util/grub.d/ (xgettext refuses to include these itself for strings
it extracted from a shell file, but these really are c-format).
.mo/.mo.gz opening sequence to ...
(grub_mofile_open_lang): ... here.
(grub_gettext_init_ext): If opening ll_CC fails, try ll.
* util/grub.d/00_header.in (grub_lang): Include country part of
locale.
Reported by: Mario Limonciello.
* grub-core/loader/i386/bsd.c
(grub_cmd_freebsd_loadenv, grub_cmd_freebsd_module_elf): Check
whether kernel is loaded using grub_loader_is_loaded(), rather
than `kernel_type', which may still be `KERNEL_TYPE_NONE' under
certain error conditions.
* util/grub-probe.c (probe): Remember which disk was detected as
RAID (perhaps an LVM physical volume). Use that disk's raidname
rather than that of the top-level disk.
Remove byte-swapping function calls, which are not valid in
structure initialisers.
* grub-core/partmap/gpt.c (grub_gpt_partition_type_bios_boot): Make
non-const.
(GRUB_MOD_INIT): Byte-swap data1, data2, and data3 fields of
grub_gpt_partition_type_bios_boot.
[GRUB_MACHINE_MIPS_YEELOONG || GRUB_MACHINE_QEMU]: ifdef-ed out
(now unused).
(grub_keyboard_controller_init)
[GRUB_MACHINE_MIPS_YEELOONG || GRUB_MACHINE_QEMU]: Don't attempt to
read the initial state since controller isn't inited yet.
* grub-core/fs/udf.c (GRUB_UDF_LOG2_BLKSIZE): Removed.
(GRUB_UDF_BLKSZ): Removed.
(struct grub_udf_data): New field "lbshift" to hold the logical block
size of the file system in log2 format. All users updated.
(sblocklist): Change type to unsigned.
(grub_udf_mount): Change type of "sblklist" to unsigned.
Move AVDP search before VRS recognition, because the latter requires
knowledge of the logical block size, which is detected during the
former.
Detect and validate logical block size during AVDP search, adding
support for block sizes 512, 1024 and 4096.
Make VRS recognition independent of block size.
* include/grub/elfload.h (grub_elf32_size): New parameter. All users updated.
Return maximum segments alignment.
(grub_elf64_size): Likewise.
* kern/elf.c (grub_elf32_size): New parameter. All users updated.
Return maximum segments alignment.
(grub_elf64_size): Likewise.
* grub-core/loader/powerpc/ieee1275/linux.c:
(grub_linux_claimmap_iterate): New function. Uses the "available"property
in the "memory" node for memory allocation for kernel in the PowerPC loader.
(grub_linux_load32): Correctly find linux entry point offset.
(grub_linux_load64): Likewise.
On mips-yeeloong, build with -march=loongson2f when this flag is
available (GCC >= 4.4).
* conf/Makefile.common [COND_mips_yeeloong] (CFLAGS_PLATFORM): Remove
`-march=mips3'.
* configure.ac: For mips-yeeloong, add -march=loongson2f if available,
or otherwise add -march=mips3.
Reported by: Jordan Uggla
* grub-core/term/serial.c (grub_serial_terminfo_input_template): New
const.
(grub_serial_terminfo_output_template): Likewise.
(grub_cmd_serial): Register "serial" with terminfo.
(GRUB_MOD_INIT(serial)): Fill grub_serial_terminfo_input and
grub_serial_terminfo_output.
On Yeeloong, pass machine type information to Linux.
* grub-core/loader/mips/linux.c [GRUB_MACHINE_MIPS_YEELOONG]
(LOONGSON_MACHTYPE): New macro, set to
"machtype=lemote-yeeloong-2f-8.9inches".
[LOONGSON_MACHTYPE] (grub_cmd_linux): Pass LOONGSON_MACHTYPE as
additional argument to Linux.
* util/deviceiter.c (grub_util_iterate_devices): Increase SCSI
limit to 48 (to cope with Sun Fire X4500), and IDE limit to 96
(its SATA disks are detected as slaveless IDE master drives on
kFreeBSD).
Reported by Carsten Aulbert.
elements with invlid index.
* grub-core/disk/mdraid_linux.c (grub_mdraid_detect): Likewise.
* grub-core/disk/raid.c (insert_array): Automatically reallocate
members.
* include/grub/raid.h (grub_raid_member): New struct.
(grub_raid_array): Transform devices and start_sector into usage of
grub_raid_member. All users updated
(allocated_devs): New member.
* Makefile.util.def (libgrubkern.a): New library for grub kernel
components that depend on gnulib headers.
(libgrubmods.a): Renamed from earlier libgrub.a.
* conf/Makefile.common: Remove gnulib from *_LIBRARY flags.
(arguments): New member allow_floppy.
(argp_parser): Handle --allow-floppy.
(main): Pass allow_floppy.
* util/grub-install.in: New option --allow-floppy passed though to
grub-setup.
* grub-core/commands/acpihalt.c [GRUB_DSDT_TEST]: Include userspace
headers and add relevant defines. Don't include standard headers.
(main) [GRUB_DSDT_TEST]: New function.
* include/grub/acpi.h [GRUB_DSDT_TEST]: Don't include standard headers.
Don't declare functions.
* util/grub-mkconfig.in: Merge `GRUB_DISABLE_LINUX_RECOVERY' and
`GRUB_DISABLE_NETBSD_RECOVERY' into a single `GRUB_DISABLE_RECOVERY'
variable. All references updated.
* util/grub.d/10_kfreebsd.in: Support recovery boot entries.
* grub-core/disk/raid.c (grub_raid_getname) [GRUB_UTIL]: New function.
(insert_array): New argument raid.
* include/grub/disk.h (grub_disk_dev) [GRUB_UTIL]: New member raidname.
* include/grub/raid.h (grub_raid_array) [GRUB_UTIL]: New member driver.
* util/grub-probe.c (probe): PRint raidname instead of plainly "mdraid".
Tested by: decoder
Reported by: decoder and meta tech.
* grub-core/term/efi/console.c (grub_console_standard_color): Removed.
(grub_console_setcolorstate): Clear out 0x80 bit.
Use GRUB_TERM_DEFAULT_STANDARD_COLOR.
(grub_console_output): Use GRUB_TERM_DEFAULT_NORMAL_COLOR.
Use GRUB_TERM_DEFAULT_HIGHLIGHT_COLOR.
* gentpl.py: New groups terminfoinkernel and terminfomodule.
* grub-core/Makefile.am (KERNEL_HEADER_FILES): Include extcmd.h, arg.h
and terminfo.h when needed.
* grub-core/Makefile.core.def (kernel): Include term/terminfo.c,
term/tparm.c, commands/extcmd.c, lib/arg.c on terminfokernel.
(terminfo): Enable only on terminfokernel.
(extcmd): Likewise.
* include/grub/extcmd.h: Add missing EXPORT_FUNC.
* include/grub/lib/arg.h: Likewise.
* grub-core/term/ieee1275/ofconsole.c (grub_ofconsole_dimensions): Fix
incorrect usage of ->.
* grub-core/loader/i386/multiboot_mbi.c (grub_multiboot_get_mbi_size):
Take VBE info into account even if only text is supported.
(fill_vbe_info): Take into account the case when only VGA text
is supported.
* include/grub/multiboot.h (GRUB_MACHINE_HAS_VBE): Set to zero
on coreboot, multiboot and qemu.