mirror of
https://git.savannah.gnu.org/git/grub.git
synced 2026-10-20 22:48:22 +00:00
34832091b3894edfc54ab4831710defe7f2488a2
15
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
b9416d00ad |
2008-01-02 Robert Millan <rmh@aybabtu.com>
* loader/i386/pc/multiboot.c (grub_multiboot_load_elf32): Improve error
message when loaded image is out of bounds.
(grub_multiboot_load_elf64): Likewise.
|
||
|
|
7f66d0e020 |
2007-10-31 Robert Millan <rmh@aybabtu.com>
* include/grub/i386/pc/init.h (grub_lower_mem): Moved from here ... * include/grub/i386/pc/memory.h (grub_lower_mem): ... to here. * include/grub/i386/pc/init.h (grub_upper_mem): Moved from here ... * include/grub/i386/pc/memory.h (grub_upper_mem): ... to here. * include/grub/i386/pc/memory.h: Include `<grub/symbol.h>' and `<grub/types.h>'. * loader/i386/pc/multiboot.c: Include `<grub/machine/memory.h>'. |
||
|
|
e5dfe7775a |
This patch is to introduce multiboot 2 loading capabilities to grub2
for powerpc & i386-pc. This patch was more so started by Hollis Blanchard getting multiboot 2 working for powerpc and I added to it and cleaned it up. One of the ideas with this patch is to keep everything under one command for the user. So instead of having a "multiboot2" & "module2" command, I created a proxy like mechanism so that you have only one command for both multiboot 1 & 2 ... "multiboot". This is where "loader/multiboot_loader.c" comes from. I could have integrated things more but I figure the current approach will less likely break anything. So if your OS is multiboot 2 capable, the user would do the following to load it up from a grub prompt: grub> multiboot <location of kernel> <kernel args> grub> module <some image> <multiboot tag> <image arguments> grub> module <isome mage> <multiboot tag> <image arguments> grub ..... The other thing that this patch does is it begins to make the multiboot 1 code a bit more architecture agnostic so IF someone wanted to implement it on another architecture they can. A bit of file moving around and definition renaming is also apart of this patch. I have also taken the time to make sure that it does not break multiboot 1 loading on i386-pc. But mulitboot 2 may still need a little more testing and work for i386-pc. Powerpc multiboot 2 has been heavily tested and does work. |
||
|
|
5a79f472c7 |
2007-07-22 Yoshinori K. Okuji <okuji@enbug.org>
Migrate to GNU General Public License Version 3.
* COPYING: Replaced with the plain text version of GPLv3.
* config.guess: Updated from gnulib.
* config.sub: Likewise.
* geninit.sh: Output a GPLv3 copyright notice.
* geninitheader.sh: Likewise.
* genmodsrc.sh: Likewise.
* gensymlist.sh.in: Likewise.
* boot/i386/pc/boot.S: Upgraded to GPLv3.
* boot/i386/pc/diskboot.S: Likewise.
* boot/i386/pc/pxeboot.S: Likewise.
* commands/blocklist.c: Likewise.
* commands/boot.c: Likewise.
* commands/cat.c: Likewise.
* commands/cmp.c: Likewise.
* commands/configfile.c: Likewise.
* commands/echo.c: Likewise.
* commands/help.c: Likewise.
* commands/ls.c: Likewise.
* commands/search.c: Likewise.
* commands/terminal.c: Likewise.
* commands/test.c: Likewise.
* commands/videotest.c: Likewise.
* commands/i386/cpuid.c: Likewise.
* commands/i386/pc/halt.c: Likewise.
* commands/i386/pc/play.c: Likewise.
* commands/i386/pc/reboot.c: Likewise.
* commands/i386/pc/vbeinfo.c: Likewise.
* commands/i386/pc/vbetest.c: Likewise.
* commands/ieee1275/halt.c: Likewise.
* commands/ieee1275/reboot.c: Likewise.
* commands/ieee1275/suspend.c: Likewise.
* disk/loopback.c: Likewise.
* disk/lvm.c: Likewise.
* disk/raid.c: Likewise.
* disk/efi/efidisk.c: Likewise.
* disk/i386/pc/biosdisk.c: Likewise.
* disk/ieee1275/ofdisk.c: Likewise.
* font/manager.c: Likewise.
* fs/affs.c: Likewise.
* fs/ext2.c: Likewise.
* fs/fat.c: Likewise.
* fs/fshelp.c: Likewise.
* fs/hfs.c: Likewise.
* fs/hfsplus.c: Likewise.
* fs/iso9660.c: Likewise.
* fs/jfs.c: Likewise.
* fs/minix.c: Likewise.
* fs/sfs.c: Likewise.
* fs/ufs.c: Likewise.
* fs/xfs.c: Likewise.
* hello/hello.c: Likewise.
* include/grub/acorn_filecore.h: Likewise.
* include/grub/arg.h: Likewise.
* include/grub/bitmap.h: Likewise.
* include/grub/boot.h: Likewise.
* include/grub/cache.h: Likewise.
* include/grub/device.h: Likewise.
* include/grub/disk.h: Likewise.
* include/grub/dl.h: Likewise.
* include/grub/elfload.h: Likewise.
* include/grub/env.h: Likewise.
* include/grub/err.h: Likewise.
* include/grub/file.h: Likewise.
* include/grub/font.h: Likewise.
* include/grub/fs.h: Likewise.
* include/grub/fshelp.h: Likewise.
* include/grub/gzio.h: Likewise.
* include/grub/hfs.h: Likewise.
* include/grub/kernel.h: Likewise.
* include/grub/loader.h: Likewise.
* include/grub/lvm.h: Likewise.
* include/grub/misc.h: Likewise.
* include/grub/mm.h: Likewise.
* include/grub/net.h: Likewise.
* include/grub/normal.h: Likewise.
* include/grub/parser.h: Likewise.
* include/grub/partition.h: Likewise.
* include/grub/pc_partition.h: Likewise.
* include/grub/raid.h: Likewise.
* include/grub/rescue.h: Likewise.
* include/grub/script.h: Likewise.
* include/grub/setjmp.h: Likewise.
* include/grub/symbol.h: Likewise.
* include/grub/term.h: Likewise.
* include/grub/terminfo.h: Likewise.
* include/grub/tparm.h: Likewise.
* include/grub/types.h: Likewise.
* include/grub/video.h: Likewise.
* include/grub/efi/api.h: Likewise.
* include/grub/efi/chainloader.h: Likewise.
* include/grub/efi/console.h: Likewise.
* include/grub/efi/console_control.h: Likewise.
* include/grub/efi/disk.h: Likewise.
* include/grub/efi/efi.h: Likewise.
* include/grub/efi/pe32.h: Likewise.
* include/grub/efi/time.h: Likewise.
* include/grub/i386/linux.h: Likewise.
* include/grub/i386/setjmp.h: Likewise.
* include/grub/i386/types.h: Likewise.
* include/grub/i386/efi/kernel.h: Likewise.
* include/grub/i386/efi/loader.h: Likewise.
* include/grub/i386/efi/time.h: Likewise.
* include/grub/i386/pc/biosdisk.h: Likewise.
* include/grub/i386/pc/boot.h: Likewise.
* include/grub/i386/pc/chainloader.h: Likewise.
* include/grub/i386/pc/console.h: Likewise.
* include/grub/i386/pc/init.h: Likewise.
* include/grub/i386/pc/kernel.h: Likewise.
* include/grub/i386/pc/loader.h: Likewise.
* include/grub/i386/pc/memory.h: Likewise.
* include/grub/i386/pc/multiboot.h: Likewise.
* include/grub/i386/pc/serial.h: Likewise.
* include/grub/i386/pc/time.h: Likewise.
* include/grub/i386/pc/vbe.h: Likewise.
* include/grub/i386/pc/vbeblit.h: Likewise.
* include/grub/i386/pc/vbefill.h: Likewise.
* include/grub/i386/pc/vbeutil.h: Likewise.
* include/grub/i386/pc/vga.h: Likewise.
* include/grub/ieee1275/ieee1275.h: Likewise.
* include/grub/ieee1275/ofdisk.h: Likewise.
* include/grub/powerpc/libgcc.h: Likewise.
* include/grub/powerpc/setjmp.h: Likewise.
* include/grub/powerpc/types.h: Likewise.
* include/grub/powerpc/ieee1275/biosdisk.h: Likewise.
* include/grub/powerpc/ieee1275/console.h: Likewise.
* include/grub/powerpc/ieee1275/ieee1275.h: Likewise.
* include/grub/powerpc/ieee1275/kernel.h: Likewise.
* include/grub/powerpc/ieee1275/loader.h: Likewise.
* include/grub/powerpc/ieee1275/multiboot.h: Likewise.
* include/grub/powerpc/ieee1275/time.h: Likewise.
* include/grub/powerpc/ieee1275/util/biosdisk.h: Likewise.
* include/grub/sparc64/libgcc.h: Likewise.
* include/grub/sparc64/setjmp.h: Likewise.
* include/grub/sparc64/types.h: Likewise.
* include/grub/sparc64/ieee1275/console.h: Likewise.
* include/grub/sparc64/ieee1275/ieee1275.h: Likewise.
* include/grub/sparc64/ieee1275/kernel.h: Likewise.
* include/grub/sparc64/ieee1275/time.h: Likewise.
* include/grub/util/biosdisk.h: Likewise.
* include/grub/util/getroot.h: Likewise.
* include/grub/util/lvm.h: Likewise.
* include/grub/util/misc.h: Likewise.
* include/grub/util/raid.h: Likewise.
* include/grub/util/resolve.h: Likewise.
* io/gzio.c: Likewise.
* kern/device.c: Likewise.
* kern/disk.c: Likewise.
* kern/dl.c: Likewise.
* kern/elf.c: Likewise.
* kern/env.c: Likewise.
* kern/err.c: Likewise.
* kern/file.c: Likewise.
* kern/fs.c: Likewise.
* kern/loader.c: Likewise.
* kern/main.c: Likewise.
* kern/misc.c: Likewise.
* kern/mm.c: Likewise.
* kern/parser.c: Likewise.
* kern/partition.c: Likewise.
* kern/rescue.c: Likewise.
* kern/term.c: Likewise.
* kern/efi/efi.c: Likewise.
* kern/efi/init.c: Likewise.
* kern/efi/mm.c: Likewise.
* kern/i386/dl.c: Likewise.
* kern/i386/efi/init.c: Likewise.
* kern/i386/efi/startup.S: Likewise.
* kern/i386/pc/init.c: Likewise.
* kern/i386/pc/lzo1x.S: Likewise.
* kern/i386/pc/startup.S: Likewise.
* kern/ieee1275/ieee1275.c: Likewise.
* kern/powerpc/cache.S: Likewise.
* kern/powerpc/dl.c: Likewise.
* kern/powerpc/ieee1275/cmain.c: Likewise.
* kern/powerpc/ieee1275/crt0.S: Likewise.
* kern/powerpc/ieee1275/init.c: Likewise.
* kern/powerpc/ieee1275/openfw.c: Likewise.
* kern/sparc64/cache.S: Likewise.
* kern/sparc64/dl.c: Likewise.
* kern/sparc64/ieee1275/init.c: Likewise.
* kern/sparc64/ieee1275/openfw.c: Likewise.
* loader/efi/chainloader.c: Likewise.
* loader/efi/chainloader_normal.c: Likewise.
* loader/i386/efi/linux.c: Likewise.
* loader/i386/efi/linux_normal.c: Likewise.
* loader/i386/pc/chainloader.c: Likewise.
* loader/i386/pc/chainloader_normal.c: Likewise.
* loader/i386/pc/linux.c: Likewise.
* loader/i386/pc/linux_normal.c: Likewise.
* loader/i386/pc/multiboot.c: Likewise.
* loader/i386/pc/multiboot_normal.c: Likewise.
* loader/powerpc/ieee1275/linux.c: Likewise.
* loader/powerpc/ieee1275/linux_normal.c: Likewise.
* normal/arg.c: Likewise.
* normal/cmdline.c: Likewise.
* normal/command.c: Likewise.
* normal/completion.c: Likewise.
* normal/execute.c: Likewise.
* normal/function.c: Likewise.
* normal/lexer.c: Likewise.
* normal/main.c: Likewise.
* normal/menu.c: Likewise.
* normal/menu_entry.c: Likewise.
* normal/misc.c: Likewise.
* normal/parser.y: Likewise.
* normal/script.c: Likewise.
* normal/i386/setjmp.S: Likewise.
* normal/powerpc/setjmp.S: Likewise.
* normal/sparc64/setjmp.S: Likewise.
* partmap/acorn.c: Likewise.
* partmap/amiga.c: Likewise.
* partmap/apple.c: Likewise.
* partmap/gpt.c: Likewise.
* partmap/pc.c: Likewise.
* partmap/sun.c: Likewise.
* term/gfxterm.c: Likewise.
* term/terminfo.c: Likewise.
* term/efi/console.c: Likewise.
* term/i386/pc/console.c: Likewise.
* term/i386/pc/serial.c: Likewise.
* term/i386/pc/vesafb.c: Likewise.
* term/i386/pc/vga.c: Likewise.
* term/ieee1275/ofconsole.c: Likewise.
* util/biosdisk.c: Likewise.
* util/console.c: Likewise.
* util/genmoddep.c: Likewise.
* util/getroot.c: Likewise.
* util/grub-emu.c: Likewise.
* util/grub-mkdevicemap.c: Likewise.
* util/grub-probe.c: Likewise.
* util/lvm.c: Likewise.
* util/misc.c: Likewise.
* util/raid.c: Likewise.
* util/resolve.c: Likewise.
* util/update-grub.in: Likewise.
* util/update-grub_lib.in: Likewise.
* util/grub.d/00_header.in: Likewise.
* util/grub.d/10_hurd.in: Likewise.
* util/grub.d/10_linux.in: Likewise.
* util/i386/efi/grub-install.in: Likewise.
* util/i386/efi/grub-mkimage.c: Likewise.
* util/i386/pc/grub-install.in: Likewise.
* util/i386/pc/grub-mkimage.c: Likewise.
* util/i386/pc/grub-mkrescue.in: Likewise.
* util/i386/pc/grub-setup.c: Likewise.
* util/i386/pc/misc.c: Likewise.
* util/powerpc/ieee1275/grub-install.in: Likewise.
* util/powerpc/ieee1275/grub-mkimage.c: Likewise.
* util/powerpc/ieee1275/misc.c: Likewise.
* video/bitmap.c: Likewise.
* video/video.c: Likewise.
* video/i386/pc/vbe.c: Likewise.
* video/i386/pc/vbeblit.c: Likewise.
* video/i386/pc/vbefill.c: Likewise.
* video/i386/pc/vbeutil.c: Likewise.
* video/readers/tga.c: Likewise.
|
||
|
|
524a1e6a40 |
2006-06-04 Yoshinori K. Okuji <okuji@enbug.org>
Clean up the code to support 64-bit addressing in disks and
files. This change is not enough for filesystems yet.
* util/i386/pc/grub-setup.c (struct boot_blocklist): Change the
type of "start" to grub_uint64_t.
(setup): Change the types of KERNEL_SECTOR and FIRST_SECTOR to
grub_disk_addr_t * and grub_disk_addr_t. Fix the format string in
save_first_sector and save_blocklists. Use grub_le_to_cpu64 to
convert addresses.
* util/i386/pc/biosdisk.c (open_device): Change the type of SECTOR
to grub_disk_addr_t.
* partmap/gpt.c (gpt_partition_map_iterate): Fix the format
string.
* partmap/pc.c (pc_partition_map_iterate): Likewise.
* partmap/amiga.c (amiga_partition_map_iterate): Cast RDSK.MAGIC
to char *.
* normal/script.c (grub_script_parse): Remove unused MEMFREE.
* normal/parser.y (YYLTYPE_IS_TRIVIAL): New macro.
* normal/lexer.c (grub_script_yyerror): Specify unused to LEX.
* loader/i386/pc/multiboot.c (grub_multiboot_load_elf64): Cast -1
to grub_off_t, to detect an error from grub_file_seek.
(grub_multiboot_load_elf32): Likewise.
* kern/misc.c (grub_strtoul): Use grub_strtoull. Return the
maximum unsigned long value when an overflow is detected.
(grub_strtoull): New function.
(grub_divmod64): Likewise.
(grub_lltoa): use grub_divmod64.
* kern/fs.c (struct grub_fs_block): Change the type of "offset" to
grub_disk_addr_t.
(grub_fs_blocklist_open): Increase P if P is not NULL to advance
the pointer to next character. Use grub_strtoull instead of
grub_strtoul.
(grub_fs_blocklist_read): Change the types of SECTOR, OFFSET and
SIZE to grub_disk_addr_t, grub_off_t and grub_size_t,
respectively.
* kern/file.c (grub_file_read): Prevent an oveflow of LEN, as the
return value is signed.
(grub_file_seek): Change the type of OLD to grub_off_t. Do not
test if OFFSET is less than zero, as OFFSET is unsigned now.
* kern/disk.c (struct grub_disk_cache): Change the type of
"sector" to grub_disk_addr_t.
(grub_disk_cache_get_index): Change the type of SECTOR to
grub_disk_addr_t. Calculate the hash with SECTOR casted to
unsigned after shifting.
(grub_disk_cache_invalidate): Change the type of SECTOR to
grub_disk_addr_t.
(grub_disk_cache_unlock): Likewise.
(grub_disk_cache_store): Likewise.
(grub_disk_check_range): Change the types of SECTOR, OFFSET, SIZE,
START and LEN to grub_disk_addr_t *, grub_off_t *, grub_size_t,
grub_disk_addr_t and grub_uint64_t, respectively.
(grub_disk_read): Use an unsigned variable REAL_OFFSET for the
body, as the value of OFFSET is tweaked by
grub_disk_check_range. Change the types of START_SECTOR, LEN and
POS to grub_disk_addr_t, grub_size_t and grub_size_t,
respectively.
(grub_disk_write): Use an unsigned variable REAL_OFFSET for the
body, as the value of OFFSET is tweaked by
grub_disk_check_range. Change the types of LEN and N to
grub_size_t.
* io/gzio.c (struct grub_gzio): Change the types of "data_offset"
and "saved_offset" to grub_off_t.
(test_header): Cast BUF to char *.
(get_byte): Cast GZIO->DATA_OFFSET to grub_off_t. Cast GZIO->INBUF
to char *.
(grub_gzio_read): Change the types of OFFSET and SIZE to
grub_off_t and grub_size_t, respectively.
* include/grub/i386/pc/boot.h (GRUB_BOOT_MACHINE_FORCE_LBA):
Removed.
(GRUB_BOOT_MACHINE_BOOT_DRIVE): Changed to 0x4c.
(GRUB_BOOT_MACHINE_KERNEL_ADDRESS): Changed to 0x40.
(GRUB_BOOT_MACHINE_KERNEL_SEGMENT): Changed to 0x42.
(GRUB_BOOT_MACHINE_DRIVE_CHECK): Changed to 0x4e.
(GRUB_BOOT_MACHINE_LIST_SIZE): Increased to 12.
* include/grub/types.h (grub_off_t): Unconditionally set to
grub_uint64_t.
(grub_disk_addr_t): Changed to grub_uint64_t.
* include/grub/partition.h (struct grub_partition): Change the
types of "start", "len" and "offset" to grub_disk_addr_t,
grub_uint64_t and grub_disk_addr_t, respectively.
(grub_partition_get_start): Return grub_disk_addr_t.
(grub_partition_get_len): Return grub_uint64_t.
* include/grub/misc.h (grub_strtoull): New prototype.
(grub_divmod64): Likewise.
* include/grub/fshelp.h (grub_fshelp_read_file): Change the types
of SECTOR, LEN and FILESIZE to grub_disk_addr_t, grub_size_t and
grub_off_t, respectively.
All callers and references changed.
* include/grub/fs.h (struct grub_fs): Change the type of LEN to
grub_size_t in "read".
All callers and references changed.
* include/grub/file.h (struct grub_file): Change the types of
"offset" and "size" to grub_off_t and grub_off_t,
respectively. Change the type of SECTOR to grub_disk_addr_t in
"read_hook".
(grub_file_read): Change the type of LEN to grub_size_t.
(grub_file_seek): Return grub_off_t. Change the type of OFFSET to
grub_off_t.
(grub_file_size): Return grub_off_t.
(grub_file_tell): Likewise.
All callers and references changed.
* include/grub/disk.h (struct grub_disk_dev): Change the types of
SECTOR and SIZE to grub_disk_addr_t and grub_size_t in "read" and
"write".
(struct grub_disk): Change the type of "total_sectors" to
grub_uint64_t. Change the type of SECTOR to grub_disk_addr_t in
"read_hook".
(grub_disk_read): Change the types of SECTOR, OFFSET and SIZE to
grub_disk_addr_t, grub_off_t and grub_size_t, respectively.
(grub_disk_write): Likewise.
All callers and references changed.
* fs/iso9660.c (grub_iso9660_susp_iterate): Cast parameters to
char * for grub_strncmp to silence gcc.
(grub_iso9660_mount): Likewise.
(grub_iso9660_mount): Likewise.
(grub_iso9660_read_symlink): Likewise. Also, remove the nonsense
return statement.
(grub_iso9660_iterate_dir): Likewise.
(grub_iso9660_label): Cast DATA->VOLDESC.VOLNAME to char *.
* fs/hfs.c (grub_hfs_read_file): Change the types of SECTOR and
LEN to grub_disk_addr_t and grub_size_t, respectively.
* fs/hfsplus.c (grub_hfsplus_read_file): Likewise.
* fs/jfs.c (grub_jfs_read_file): Likewise.
* fs/minix.c (grub_jfs_read_file): Likewise.
* fs/sfs.c (grub_jfs_read_file): Likewise.
* fs/ufs.c (grub_jfs_read_file): Likewise.
* fs/xfs.c (grub_jfs_read_file): Likewise.
* fs/fat.c (grub_fat_read_data): Change the types of SECTOR, LEN
and SIZE to grub_disk_addr_t, grub_size_t and grub_size_t,
respectively.
* fs/ext2.c (grub_ext2_read_block): When an error happens, set
BLKNR to -1 instead of returning GRUB_ERRNO.
(grub_ext2_read_file): Change the types of SECTOR and
LEN to grub_disk_addr_t and grub_size_t, respectively.
* fs/affs.c (grub_affs_read_file): Change the types of SECTOR and
LEN to grub_disk_addr_t and grub_size_t, respectively.
* font/manager.c (grub_font_get_glyph): Cast BITMAP to char * for
grub_file_read.
* disk/ieee1275/ofdisk.c (grub_ofdisk_read): Fix the format
string. Do not cast SECTOR explicitly.
* disk/i386/pc/biosdisk.c (grub_biosdisk_open): Change the type of
TOTAL_SECTORS to grub_uint64_t. Do not mask DRP->TOTAL_SECTORS.
(grub_biosdisk_rw): Change the types of SECTOR and SIZE to
grub_disk_addr_t and grub_size_t, respectively. If the sector is
over 2TB and LBA mode is not supported, raise an error.
(get_safe_sectors): New function.
(grub_biosdisk_read): Use get_safe_sectors.
(grub_biosdisk_write): Likewise.
* disk/efi/efidisk.c (grub_efidisk_read): Fix the format string.
(grub_efidisk_write): Likewise.
* disk/loopback.c (delete_loopback): Cosmetic changes.
(grub_cmd_loopback): Likewise. Also, test NEWDEV->FILENAME
correctly.
(grub_loopback_open): Likewise.
(grub_loopback_read): Likewise. Also, change the type of POS to
grub_off_t, and fix the usage of grub_memset.
* commands/i386/pc/play.c: Include grub/machine/time.h.
* commands/ls.c (grub_ls_list_files): Use "llu" instead of "d" to
print FILE->SIZE.
* commands/configfile.c: Include grub/env.h.
* commands/cmp.c (grub_cmd_cmp): Do not use ERR, but use
GRUB_ERRNO directly instead. Change the type of POS to
grub_off_t. Follow the coding standard.
* commands/blocklist.c: Include grub/partition.h.
(grub_cmd_blocklist): Return an error if the underlying device is
not a disk. Take the starting sector of a partition into account,
if a partition is used.
* boot/i386/pc/diskboot.S (bootloop): Adapted to the new offset of
a length field.
(lba_mode): Support 64-bit addresses.
(chs_mode): Likewise.
(copy_buffer): Adapted to the new offsets of a length field and a
segment field.
(blocklist_default_start): Allocate 64-bit space.
* boot/i386/pc/boot.S (force_lba): Removed.
(boot_drive): Moved to under KERNEL_SECTOR.
(kernel_sector): Moved to under KENREL_SEGMENT. Allocate 64-bit
space.
(real_start): Set %si earlier. Remove code for FORCE_LBA, since it
is useless.
(lba_mode): Refactored to support a 64-bit address. More size
optimization.
(setup_sectors): Likewise.
|
||
|
|
7f362539b7 |
2006-04-30 Yoshinori K. Okuji <okuji@enbug.org>
Extend the loader so that GRUB can accept a loader which comes
back to GRUB when a loaded image exits. Also, this change adds
support for a chainloader on EFI.
* term/efi/console.c: Include grub/misc.h.
(grub_console_checkkey): Display a scan code on the top for
debugging. This will be removed once the EFI port gets stable.
Correct the scan code mapping.
* kern/efi/mm.c (sort_memory_map): Sort in a descending order to
allocate memory from larger regions, in order to reduce the number
of allocated regions. Otherwise, the MacOSX loader panics.
(filter_memory_map): Avoid less than 1MB for compatibility with
other loaders.
(add_memory_regions): Allocate from the tail of a region, if
possible, to avoid allocating a region near to 1MB, for the MacOSX
loader.
* kern/efi/init.c (grub_efi_set_prefix): Specify
GRUB_EFI_IMAGE_HANDLE to grub_efi_get_loaded_image.
* kern/efi/efi.c (grub_efi_get_loaded_image): Accept a new
argument IMAGE_HANDLE and specify it to get a loaded image.
(grub_arch_modules_addr): Specify GRUB_EFI_IMAGE_HANDLE to
grub_efi_get_loaded_image.
(grub_efi_get_filename): Divide the legnth by the size of
grub_efi_char16_t.
(grub_efi_get_device_path): New function.
(grub_efi_print_device_path): Print End Device Path nodes. Divide
the length by the size of grub_efi_char16_t for a file path device
path node.
* kern/loader.c (grub_loader_noreturn): New variable.
(grub_loader_set): Accept a new argument NORETURN. Set
GRUB_LOADER_NORETURN to NORETURN.
All callers changed.
(grub_loader_boot): If GRUB_LOADER_NORETURN is false, do not call
grub_machine_fini.
* include/grub/efi/efi.h (grub_efi_get_device_path): New
prototype.
(grub_efi_get_loaded_image): Take an argument to specify an image
handle.
* include/grub/loader.h (grub_loader_set): Added one more argument
NORETURN.
* disk/efi/efidisk.c (make_devices): Use grub_efi_get_device_path
instead of grub_efi_open_protocol.
(grub_efidisk_get_device_name): Likewise.
(grub_efidisk_close): Print a newline.
(grub_efidisk_get_device_handle): Fixed to use
GRUB_EFI_DEVICE_PATH_SUBTYPE instead of
GRUB_EFI_DEVICE_PATH_TYPE.
* disk/efi/efidisk.c (device_path_guid): Moved to ...
* kern/efi/efi.c (device_path_guid): ... here.
* conf/i386-efi.rmk (pkgdata_MODULES): Added _chain.mod and
chain.mod.
(kernel_mod_HEADERS): Added efi/disk.h.
(_chain_mod_SOURCES): New variable.
(_chain_mod_CFLAGS): Likewise.
(_chain_mod_LDFLAGS): Likewise.
(chain_mod_SOURCES): Likewise.
(chain_mod_CFLAGS): Likewise.
(chain_mod_LDFLAGS): Likewise.
* DISTLIST: Added include/grub/efi/chainloader.h,
loader/efi/chainloader.c and loader/efi/chainloader_normal.c.
* include/grub/efi/chainloader.h: New file.
* loader/efi/chainloader.c: Likewise.
* loader/efi/chainloader_normal.c: Likewise.
|
||
|
|
6d099807fa |
2005-11-13 Marco Gerards <mgerards@xs4all.nl>
* geninit.sh: New file. * geninitheader.sh: Likewise. * commands/boot.c (grub_boot_init, grub_boot_fini): Removed. * commands/cat.c (grub_cat_init, grub_cat_fini): Likewise. * commands/cmp.c (grub_cmp_init, grub_cmp_fini): Likewise. * commands/configfile.c (grub_configfile_init) (grub_configfile_fini): Likewise. * commands/default.c (grub_default_init, grub_default_fini): Likewise. * commands/help.c (grub_help_init, grub_help_fini): Likewise. * commands/ls.c (grub_ls_init, grub_ls_fini): Likewise. * commands/search.c (grub_search_init, grub_search_fini): Likewise. * commands/terminal.c (grub_terminal_init, grub_terminal_fini): Likewise. * commands/test.c (grub_test_init, grub_test_fini): Likewise. * commands/timeout.c (grub_timeout_init, grub_timeout_fini): Likewise. * commands/i386/pc/halt.c (grub_halt_init, grub_halt_fini): Likewise. * commands/iee1275/halt.c (grub_halt_init, grub_halt_fini): Likewise. * commands/i386/pc/reboot.c (grub_reboot_init, grub_reboot_fini): Likewise. * commands/iee1275/reboot.c (grub_reboot_init, grub_reboot_fini): Likewise. * disk/loopback.c (grub_loop_init, grub_loop_fini): Likewise. * fs/affs.c (grub_affs_init, grub_affs_fini): Likewise. * fs/ext2.c (grub_ext2_init, grub_ext2_fini): Likewise. * fs/fat.c (grub_fat_init, grub_fat_fini): Likewise. * fs/hfs.c (grub_hfs_init, grub_hfs_fini): Likewise. * fs/iso9660.c (grub_iso9660_init, grub_iso9660_fini): Likewise. * fs/jfs.c (grub_jfs_init, grub_jfs_fini): Likewise. * fs/minix.c (grub_minix_init, grub_minix_fini): Likewise. * fs/sfs.c (grub_sfs_init, grub_sfs_fini): Likewise. * fs/ufs.c (grub_ufs_init, grub_ufs_fini): Likewise. * fs/xfs.c (grub_xfs_init, grub_xfs_fini): Likewise. * normal/main.c (grub_normal_init, grub_normal_fini): Likewise. * partmap/amiga.c (grub_amiga_partition_map_init) (grub_amiga_partition_map_fini): Likewise. * partmap/apple.c (grub_apple_partition_map_init) (grub_apple_partition_map_fini): Likewise. * partmap/pc.c (grub_pc_partition_map_init) (grub_pc_partition_map_fini): Likewise. * partmap/sun.c (grub_sun_partition_map_init, grub_sun_partition_map_fini): Likewise. * term/terminfo.c (grub_terminal_init, grub_terminal_fini): Likewise. * util/grub-emu.c: Include <grub_modules_init.h>. (main): Don't initialize and de-initialize any modules directly, use `grub_init_all' and `grub_fini_all' instead. * term/i386/pc/vesafb.c (grub_vesafb_init): Renamed to `grub_vesafb_mod_init'. (grub_vesafb_fini): Renamed to `grub_vesafb_mod_fini'. Updated all users. * term/i386/pc/vga.c (grub_vga_init): Renamed to `grub_vga_mod_init'. Updated all users. (grub_vga_fini): Renamed to `grub_vga_mod_fini'. * conf/i386-pc.rmk (grub_emu_SOURCES): Add `grub_emu_init.c'. (grub_modules_init.lst, grub_modules_init.h, grub_emu_init.c): New rules. * include/grub/dl.h (GRUB_MOD_INIT): Add argument `name'. Generate a function to initialize the module in utilities. Updated all callers. (GRUB_MOD_FINI): Add argument `name'. Generate a function to initialize the module in utilities. Updated all callers. |
||
|
|
d9864ee11a |
2005-08-22 Yoshinori K. Okuji <okuji@enbug.org>
* gendistlist.sh (EXTRA_DISTFILES): Added genfslist.sh.
(DISTDIRS): Added io and video.
Rewrite the search routine to make an output consistently.
* DISTLIST: Added conf/sparc64-ieee1275.mk,
conf/sparc64-ieee1275.rmk, include/grub/gzio.h,
include/grub/ieee1275/ieee1275.h, include/grub/ieee1275/ofdisk.h,
io/gzio.c, kern/sparc64/cache.c, kern/sparc64/dl.c,
kern/sparc64/ieee1275/init.c, kern/sparc64/ieee1275/openfw.c and
util/powerpc/ieee1275/misc.c.
* include/grub/gzio.h: New file.
* io/gzio.c: Likewise.
* kern/file.c (grub_file_close): Call grub_device_close only if
FILE->DEVICE is not NULL.
* include/grub/mm.h [!NULL] (NULL): New macro.
* include/grub/err.h (GRUB_ERR_BAD_GZIP_DATA): New constant.
* conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Added io/gzip.c.
(pkgdata_MODULES): Added gzio.mod.
(gzio_mod_SOURCES): New variable.
(gzio_mod_CFLAGS): Likewise.
* conf/i386-pc.rmk (grub_emu_SOURCES): Added io/gzip.c.
(pkgdata_MODULES): Added gzio.mod.
(gzio_mod_SOURCES): New variable.
(gzio_mod_CFLAGS): Likewise.
* commands/cat.c: Include grub/gzio.h.
(grub_cmd_cat): Use grub_gzfile_open instead of
grub_file_open.
* commands/cmp.c: Include grub/gzio.h.
(grub_cmd_cmp): Use grub_gzfile_open instead of
grub_file_open.
* loader/i386/pc/multiboot.c: Include grub/gzio.h.
(grub_rescue_cmd_multiboot): Use grub_gzfile_open instead of
grub_file_open.
(grub_rescue_cmd_module): Likewise.
|
||
|
|
ea4097134f |
2005-07-31 Yoshinori K. Okuji <okuji@enbug.org>
* loader/i386/pc/multiboot.c (grub_multiboot_is_elf32): New function. (grub_multiboot_load_elf32): Likewise. (grub_multiboot_is_elf64): Likewise. (grub_multiboot_load_elf64): Likewise. (grub_multiboot_load_elf): Likewise. (grub_rescue_cmd_multiboot): Call grub_multiboot_load_elf to load an ELF32 or ELF64 file. This is based on a patch from Ruslan Nikolaev <nruslan@mail.com>. From Serbinenko Vladimir <serbinenko.vova@list.ru>: * kern/disk.c (grub_print_partinfo): Check if FS->LABEL is not NULL before calling FS->LABEL. * fs/fat.c (grub_fat_dir): Initialize DIRNAME to NULL. * commands/ls.c (grub_ls_list_files): Show labels, if possible. (grub_ls_list_disks): Check if FS and FS->LABEL are not NULL before calling FS->LABEL. |
||
|
|
c642636f8a |
2005-02-14 Guillem Jover <guillem@hadrons.org>
* include/grub/dl.h (grub_dl_check_header): New prototype. (grub_arch_dl_check_header): Change return type to grub_err_t, remove size parameter and export function. Update all callers. * kern/dl.c (grub_dl_check_header): New function. (grub_dl_load_core): Use `grub_dl_check_header' instead of `grub_arch_dl_check_header'. Check ELF type. Check if sections are inside the core. * kern/i386/dl.c (grub_arch_dl_check_header): Remove arch independent ELF header checks. * kern/powerpc/dl.c (grub_arch_dl_check_header): Likewise. * loader/i386/pc/multiboot.c (grub_rescue_cmd_multiboot): Use `grub_dl_check_header' instead of explicit checks. Check for the ELF type. * loader/powerpc/ieee1275/linux.c (grub_rescue_cmd_linux): Use `grub_dl_check_header' instead of explicit checks. Remove arch specific ELF header checks. |
||
|
|
4b13b216f4 |
2004-04-04 Yoshinori K. Okuji <okuji@enbug.org>
All symbols prefixed with PUPA_ and pupa_ are renamed to GRUB_ and grub_, respectively. Because the conversion is trivial and mechanical, I omit the details here. Please refer to the CVS if you need more information. |
||
|
|
8c8cc20511 |
2004-03-14 Jeroen Dekkers <jeroen@dekkers.cx>
* Makefile.in: Update copyright. * genmodsrc.sh: Likewise. * gensymlist.sh: Likewise. * term/i386/pc/vga.c: Indent correctly. * util/i386/pc/pupa-mkimage.c (usage): Use PACKAGE_BUGREPORT as bugreporting address. * util/i386/pc/pupa-setup.c (usage): Likewise, (main): Call pupa_ext2_init and pupa_ext2_fini. * fs/fat.c (log2): Renamed to ... (fat_log2): ... this. All callers changed. * kern/misc.c (memcpy): Alias to pupa_memmove. * loader/i386/pc/multiboot.c (pupa_rescue_cmd_multiboot): Fix lvalue cast. * util/console.c (pupa_ncurses_fini): Return 0. * util/i386/pc/biosdisk.c (pupa_util_biosdisk_open)[__linux__]: Move fail label here. [__GNU__]: Don't warn when using stat. (open_device)[!__linux__]: Check if FD < 0 instead of !FD. (pupa_util_biosdisk_get_pupa_dev)[__GNU__]: Change type of N to long int. Use strtol instead of strtoul. |
||
|
|
db1771cfbe |
2004-03-14 Marco Gerards <metgerards@student.han.nl>
* commands/boot.c: New file. * commands/cat.c: Likewise. * commands/cmp.c: Likewise. * commands/ls.c: Likewise. * commands/terminal.c: Likewise. * normal/command.c: Include <pupa/env.h> and <pupa/dl.h>. (pupa_register_command): Changed interface to match the new argument parser. (pupa_command_execute): Changed (almost rewritten) so it uses pupa_split_command. Added support for setting variables using the syntax `foo=bar'. (rescue_command): Changed to work with the new argument parser. (terminal_command): Moved from here to commands/terminal.c. (set_command): New function. (unset_command): New function. (insmod_command): New function. (rmmod_command): New function. (lsmod_command): New function. (pupa_command_init): Don't initialize the command terminal anymore. Initialize the commands set, unset, insmod, rmmod and lsmod. * conf/i386-pc.rmk (kernel_img_SOURCES): Add kern/env.c. (kernel_img_HEADERS): Add arg.h and env.h. (pupa_mkimage_LDFLAGS): Add kern/env.c. (pupa_emu_SOURCES): Add kern/env.c, commands/ls.c, commands/terminal.c commands/boot.c commands/cmp.c commands/cat.c, normal/arg.c. (pkgdata_MODULES): Add ls.mod, boot.mod, cmp.mod, cat.mod and terminal.mod. (normal_mod_SOURCES): Add normal/arg.c and normal/arg.c. (boot_mod_SOURCES): New variable. (terminal_mod_SOURCES): Likewise. (ls_mod_SOURCES): Likewise. (cmp_mod_SOURCES): Likewise. (cat_mod_SOURCES): Likewise. * normal/arg.c: New file. * kern/env.c: Likewise. * include/pupa/arg.h: Likewise. * include/pupa/env.h: Likewise. * font/manager.c (font_command): Changed to match argument parsing interface changes. (PUPA_MOD_INIT): Likewise. * hello/hello.c (pupa_cmd_hello): Likewise. (PUPA_MOD_INIT): Likewise. * include/pupa/disk.h: Include <pupa/device.h>. (pupa_print_partinfo): New prototype. * include/pupa/dl.h (pupa_dl_set_prefix): Prototype removed. (pupa_dl_get_prefix): Likewise. * include/pupa/misc.h: Include <pupa/err.h>. (pupa_isgraph): New prototype. (pupa_isdigit): Likewise. (pupa_split_cmdline): Likewise. * include/pupa/normal.h: Include <pupa/arg.h>. (pupa_command): Changed the prototype of the member `func' to match the argument parsing interface. Added member `options'. (pupa_register_command): Updated to match function. (pupa_arg_parse): New prototype. (pupa_hello_init) [PUPA_UTIL]: New prototype. (pupa_hello_fini) [PUPA_UTIL]: Likewise. (pupa_ls_init) [PUPA_UTIL]: Likewise. (pupa_ls_fini) [PUPA_UTIL]: Likewise. (pupa_cat_init) [PUPA_UTIL]: Likewise. (pupa_cat_fini) [PUPA_UTIL]: Likewise. (pupa_boot_init) [PUPA_UTIL]: Likewise. (pupa_boot_fini) [PUPA_UTIL]: Likewise. (pupa_cmp_init) [PUPA_UTIL]: Likewise. (pupa_cmp_fini) [PUPA_UTIL]: Likewise. (pupa_terminal_init) [PUPA_UTIL]: Likewise. (pupa_terminal_fini) [PUPA_UTIL]: Likewise. * kern/disk.c: Include <pupa/file.h>. (pupa_print_partinfo): New function. * kern/dl.c: Include <pupa/env.h>. (pupa_dl_dir): Variable removed. (pupa_dl_load): Use the environment variable `prefix' instead of the variable pupa_dl_dir. (pupa_dl_set_prefix): Function removed. (pupa_dl_get_prefix): Likewise. * kern/i386/pc/init.c: Include <pupa/env.h>. (pupa_machine_init): Use the environment variable `prefix' instead of using pupa_dl_set_prefix to set the prefix. * kern/main.c: Include <pupa/env.h>. (pupa_set_root_dev): Use the environment variable `prefix' instead of using pupa_dl_get_prefix to get the prefix. * kern/misc.c: Include <pupa/env.h>. (pupa_isdigit): New function. (pupa_isgraph): Likewise. (pupa_ftoa): Likewise. (pupa_vsprintf): Added support for printing values of the type `double'. Make it possible to format variable output when using formatting like `%1.2%f'. (pupa_split_cmdline): New function. * kern/rescue.c: Include <pupa/env.h>. (next_word): Removed function. (pupa_rescue_cmd_prefix): Likewise. (pupa_rescue_cmd_set): New function. (pupa_rescue_cmd_unset): New function. (pupa_enter_rescue_mode): Use the `pupa_split_cmdline' function to split the command line instead of splitting it here. Added support for setting variables using the syntax `foo=bar'. Don't initialize the prefix command anymore. Initialized the set and unset commands. * normal/cmdline.c: Include <pupa/env.h>. (pupa_tab_complete): Added prototypes for print_simple_completion, print_partition_completion, add_completion, iterate_commands, iterate_dev, iterate_part and iterate_dir. Moved code to print partition information from here to kern/disk.c. (pupa_cmdline_run): Don't check if the funtion exists anymore. * normal/main.c: Include <pupa/env.h>. (pupa_rescue_cmd_normal): Use the environment variable `prefix' instead of using pupa_dl_get_prefix to get the prefix. * term/i386/pc/vga.c: Include <pupa/arg.h>. (check_vga_mem): Cast pointers to `void *' to silence a gcc warning. (pupa_vga_putchar) [! DEBUG_VGA]: Removed for this case. (pupa_vga_setcolor): Declare unused variables with `__attribute__ ((unused))' to silence a gcc warning. (pupa_vga_setcolor): Likewise. (debug_command): Changed to match argument parsing interface changes. * util/pupa-emu.c: Include <pupa/env.h>. (options): Added 0's for unused fields to silence a gcc warning. (argp): Likewise. (main): Use the environment variable `prefix' instead of using pupa_dl_set_prefix to set the prefix. Initialize the commands ls, boot, cmp, cat and terminal. Finish the commands boot, cmp, cat and terminal. * util/i386/pc/getroot.c: Include <pupa/i386/pc/util/biosdisk.h>. * util/misc.c: Include <malloc.h>. (pupa_malloc): Rewritten so errors are correctly reported. (pupa_realloc): Likewise. (pupa_memalign): Likewise. (pupa_mm_init_region): Declare unused variables with `__attribute__ ((unused))' to silence a gcc warning. * normal/i386/setjmp.S: Remove tab at the end of the file to silence a gcc warning. * loader/i386/pc/linux.c (pupa_rescue_cmd_initrd): Declare unused variables with `__attribute__ ((unused))' to silence a gcc warning. * loader/i386/pc/multiboot.c (pupa_multiboot_unload): Make the local variable i unsigned to silence a gcc warning. * kern/term.c: Include <pupa/misc.h>. (pupa_more_lines): New variable. (pupa_more): Likewise. (pupa_putcode): When the pager is active pause at the end of every screen. (pupa_set_more): New function. * include/pupa/term.h (pupa_set_more): New prototype. |
||
|
|
8367695cff |
shinori K. Okuji <okuji@enbug.org>
* genkernsyms.sh: Updated copyright information. * genmk.rb: Likewise. * genmodsrc.sh: Likewise. * gensymlist.sh: Likewise. * boot/i386/pc/boot.S: Likewise. * boot/i386/pc/diskboot.S: Likewise. * disk/i386/pc/biosdisk.c: Likewise. * disk/i386/pc/partition.c: Likewise. * font/manager.c: Likewise. * fs/ext2.c: Likewise. * fs/fat.c: Likewise. * include/pupa/boot.h: Likewise. * include/pupa/device.h: Likewise. * include/pupa/disk.h: Likewise. * include/pupa/dl.h: Likewise. * include/pupa/elf.h: Likewise. * include/pupa/err.h: Likewise. * include/pupa/file.h: Likewise. * include/pupa/font.h: Likewise. * include/pupa/fs.h: Likewise. * include/pupa/kernel.h: Likewise. * include/pupa/loader.h: Likewise. * include/pupa/misc.h: Likewise. * include/pupa/mm.h: Likewise. * include/pupa/net.h: Likewise. * include/pupa/normal.h: Likewise. * include/pupa/rescue.h: Likewise. * include/pupa/setjmp.h: Likewise. * include/pupa/symbol.h: Likewise. * include/pupa/term.h: Likewise. * include/pupa/types.h: Likewise. * include/pupa/i386/setjmp.h: Likewise. * include/pupa/i386/types.h: Likewise. * include/pupa/i386/pc/biosdisk.h: Likewise. * include/pupa/i386/pc/boot.h: Likewise. * include/pupa/i386/pc/console.h: Likewise. * include/pupa/i386/pc/init.h: Likewise. * include/pupa/i386/pc/kernel.h: Likewise. * include/pupa/i386/pc/linux.h: Likewise. * include/pupa/i386/pc/loader.h: Likewise. * include/pupa/i386/pc/memory.h: Likewise. * include/pupa/i386/pc/multiboot.h: Likewise. * include/pupa/i386/pc/partition.h: Likewise. * include/pupa/i386/pc/time.h: Likewise. * include/pupa/i386/pc/vga.h: Likewise. * include/pupa/i386/pc/util/biosdisk.h: Likewise. * include/pupa/util/getroot.h: Likewise. * include/pupa/util/misc.h: Likewise. * include/pupa/util/resolve.h: Likewise. * kern/device.c: Likewise. * kern/disk.c: Likewise. * kern/dl.c: Likewise. * kern/err.c: Likewise. * kern/file.c: Likewise. * kern/fs.c: Likewise. * kern/loader.c: Likewise. * kern/main.c: Likewise. * kern/misc.c: Likewise. * kern/mm.c: Likewise. * kern/rescue.c: Likewise. * kern/term.c: Likewise. * kern/i386/dl.c: Likewise. * kern/i386/pc/init.c: Likewise. * kern/i386/pc/lzo1x.S: Likewise. * kern/i386/pc/startup.S: Likewise. * loader/i386/pc/chainloader.c: Likewise. * loader/i386/pc/linux.c: Likewise. * loader/i386/pc/multiboot.c: Likewise. * normal/cmdline.c: Likewise. * normal/command.c: Likewise. * normal/main.c: Likewise. * normal/menu.c: Likewise. * normal/i386/setjmp.S: Likewise. * term/i386/pc/console.c: Likewise. * term/i386/pc/vga.c: Likewise. * util/console.c: Likewise. * util/genmoddep.c: Likewise. * util/misc.c: Likewise. * util/pupa-emu.c: Likewise. * util/resolve.c: Likewise. * util/unifont2pff.rb: Likewise. * util/i386/pc/biosdisk.c: Likewise. * util/i386/pc/getroot.c: Likewise. * util/i386/pc/pupa-mkimage.c: Likewise. * util/i386/pc/pupa-setup.c: Likewise. |
||
|
|
9a5c1adeaa |
2003-11-16 Jeroen Dekkers <jeroen@dekkers.cx>
* conf/i386-pc.rmk (pkgdata_MODULES): Add _multiboot.mod. (_multiboot_mod_SOURCES): New variable. (_multiboot_mod_CFLAGS): Likewise. * loader/i386/pc/multiboot.c: New file. * include/pupa/i386/pc/multiboot.h: Likewise. * kern/i386/pc/startup.S: Include pupa/machine/multiboot.h. (pupa_multiboot_real_boot): New function. * include/pupa/i386/pc/loader.h: Include pupa/machine/multiboot.h. (pupa_multiboot_real_boot): New prototype. (pupa_rescue_cmd_multiboot): Likewise (pupa_rescue_cmd_module): Likewise. * kern/loader.c (pupa_loader_set): Continue when pupa_loader_unload_func() fails. (pupa_loader_unset): New function. * include/pupa/loader.h (pupa_loader_unset): New prototype. * kern/misc.c (pupa_stpcpy): New function. * include/pupa/misc.h (pupa_stpcpy): New prototype. |