mirror of
https://git.proxmox.com/git/grub2
synced 2025-07-23 08:25:43 +00:00
Merge branch 'upstream' into experimental
This commit is contained in:
commit
b0d34632e1
43
.gitignore
vendored
43
.gitignore
vendored
@ -12,7 +12,6 @@ ahci_test
|
|||||||
ascii.bitmaps
|
ascii.bitmaps
|
||||||
ascii.h
|
ascii.h
|
||||||
autom4te.cache
|
autom4te.cache
|
||||||
build_env.mk
|
|
||||||
build-grub-gen-asciih
|
build-grub-gen-asciih
|
||||||
build-grub-gen-widthspec
|
build-grub-gen-widthspec
|
||||||
build-grub-mkfont
|
build-grub-mkfont
|
||||||
@ -34,48 +33,59 @@ docs/*.info
|
|||||||
docs/stamp-vti
|
docs/stamp-vti
|
||||||
docs/version.texi
|
docs/version.texi
|
||||||
ehci_test
|
ehci_test
|
||||||
*.elf
|
|
||||||
example_grub_script_test
|
example_grub_script_test
|
||||||
example_scripted_test
|
example_scripted_test
|
||||||
example_unit_test
|
example_unit_test
|
||||||
*.exec
|
*.exec
|
||||||
|
*.exec.exe
|
||||||
fddboot_test
|
fddboot_test
|
||||||
genkernsyms.sh
|
genkernsyms.sh
|
||||||
gensymlist.sh
|
gensymlist.sh
|
||||||
gentrigtables
|
gentrigtables
|
||||||
|
gentrigtables.exe
|
||||||
gettext_strings_test
|
gettext_strings_test
|
||||||
grub-bin2h
|
grub-bin2h
|
||||||
grub-bios-setup
|
/grub-bios-setup
|
||||||
|
/grub-bios-setup.exe
|
||||||
grub_cmd_date
|
grub_cmd_date
|
||||||
grub_cmd_echo
|
grub_cmd_echo
|
||||||
grub_cmd_regexp
|
grub_cmd_regexp
|
||||||
grub_cmd_set_date
|
grub_cmd_set_date
|
||||||
grub_cmd_sleep
|
grub_cmd_sleep
|
||||||
grub-editenv
|
/grub-editenv
|
||||||
|
/grub-editenv.exe
|
||||||
grub-emu
|
grub-emu
|
||||||
grub-emu-lite
|
grub-emu-lite
|
||||||
|
grub-emu.exe
|
||||||
|
grub-emu-lite.exe
|
||||||
grub_emu_init.c
|
grub_emu_init.c
|
||||||
grub_emu_init.h
|
grub_emu_init.h
|
||||||
grub-fstest
|
grub-fstest
|
||||||
|
grub-fstest.exe
|
||||||
grub_fstest_init.c
|
grub_fstest_init.c
|
||||||
grub_fstest_init.h
|
grub_fstest_init.h
|
||||||
grub_func_test
|
grub_func_test
|
||||||
grub-install
|
grub-install
|
||||||
|
grub-install.exe
|
||||||
grub-kbdcomp
|
grub-kbdcomp
|
||||||
grub-macho2img
|
grub-macho2img
|
||||||
grub-menulst2cfg
|
/grub-menulst2cfg
|
||||||
|
/grub-menulst2cfg.exe
|
||||||
/grub-mk*
|
/grub-mk*
|
||||||
grub-mount
|
grub-mount
|
||||||
grub-ofpathname
|
/grub-ofpathname
|
||||||
grub-pe2elf
|
/grub-ofpathname.exe
|
||||||
grub-probe
|
grub-core/build-grub-pe2elf.exe
|
||||||
|
/grub-probe
|
||||||
|
/grub-probe.exe
|
||||||
grub_probe_init.c
|
grub_probe_init.c
|
||||||
grub_probe_init.h
|
grub_probe_init.h
|
||||||
grub-reboot
|
/grub-reboot
|
||||||
grub_script_blanklines
|
grub_script_blanklines
|
||||||
grub_script_blockarg
|
grub_script_blockarg
|
||||||
grub_script_break
|
grub_script_break
|
||||||
grub-script-check
|
grub-script-check
|
||||||
|
grub-script-check.exe
|
||||||
grub_script_check_init.c
|
grub_script_check_init.c
|
||||||
grub_script_check_init.h
|
grub_script_check_init.h
|
||||||
grub_script_comments
|
grub_script_comments
|
||||||
@ -106,17 +116,18 @@ grub_script.tab.h
|
|||||||
grub_script.yy.c
|
grub_script.yy.c
|
||||||
grub_script.yy.h
|
grub_script.yy.h
|
||||||
grub-set-default
|
grub-set-default
|
||||||
grub-setup
|
|
||||||
grub_setup_init.c
|
grub_setup_init.c
|
||||||
grub_setup_init.h
|
grub_setup_init.h
|
||||||
grub-shell
|
grub-shell
|
||||||
grub-shell-tester
|
grub-shell-tester
|
||||||
grub-sparc64-setup
|
grub-sparc64-setup
|
||||||
|
grub-sparc64-setup.exe
|
||||||
gzcompress_test
|
gzcompress_test
|
||||||
hddboot_test
|
hddboot_test
|
||||||
help_test
|
help_test
|
||||||
*.img
|
*.img
|
||||||
*.image
|
*.image
|
||||||
|
*.image.exe
|
||||||
include/grub/cpu
|
include/grub/cpu
|
||||||
include/grub/machine
|
include/grub/machine
|
||||||
install-sh
|
install-sh
|
||||||
@ -183,6 +194,7 @@ grub-core/gmodule.pl
|
|||||||
grub-core/grub.chrp
|
grub-core/grub.chrp
|
||||||
grub-core/modinfo.sh
|
grub-core/modinfo.sh
|
||||||
grub-core/*.module
|
grub-core/*.module
|
||||||
|
grub-core/*.module.exe
|
||||||
grub-core/*.pp
|
grub-core/*.pp
|
||||||
util/bash-completion.d/grub
|
util/bash-completion.d/grub
|
||||||
grub-core/gnulib/alloca.h
|
grub-core/gnulib/alloca.h
|
||||||
@ -204,7 +216,7 @@ grub-core/gnulib/unistd.h
|
|||||||
grub-core/gnulib/warn-on-use.h
|
grub-core/gnulib/warn-on-use.h
|
||||||
grub-core/gnulib/wchar.h
|
grub-core/gnulib/wchar.h
|
||||||
grub-core/gnulib/wctype.h
|
grub-core/gnulib/wctype.h
|
||||||
grub-core/rs_decoder.S
|
grub-core/rs_decoder.h
|
||||||
widthspec.bin
|
widthspec.bin
|
||||||
widthspec.h
|
widthspec.h
|
||||||
docs/stamp-1
|
docs/stamp-1
|
||||||
@ -218,9 +230,14 @@ include/grub/gcrypt/gcrypt.h
|
|||||||
include/grub/gcrypt/g10lib.h
|
include/grub/gcrypt/g10lib.h
|
||||||
po/POTFILES.in
|
po/POTFILES.in
|
||||||
po/POTFILES-shell.in
|
po/POTFILES-shell.in
|
||||||
grub-glue-efi
|
/grub-glue-efi
|
||||||
grub-render-label
|
/grub-render-label
|
||||||
|
/grub-glue-efi.exe
|
||||||
|
/grub-render-label.exe
|
||||||
grub-core/gnulib/locale.h
|
grub-core/gnulib/locale.h
|
||||||
grub-core/gnulib/unitypes.h
|
grub-core/gnulib/unitypes.h
|
||||||
grub-core/gnulib/uniwidth.h
|
grub-core/gnulib/uniwidth.h
|
||||||
build-aux/test-driver
|
build-aux/test-driver
|
||||||
|
/garbage-gen
|
||||||
|
/garbage-gen.exe
|
||||||
|
/grub-fs-tester
|
||||||
|
608
ChangeLog
608
ChangeLog
@ -1,3 +1,611 @@
|
|||||||
|
2013-12-18 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* configure.ac: Set version to 2.02~beta1.
|
||||||
|
|
||||||
|
2013-12-18 Allen Pais <allen.pais@oracle.com>
|
||||||
|
2013-12-18 Bob Picco <bob.picco@oracle.com>
|
||||||
|
|
||||||
|
* grub-core/boot/sparc64/ieee1275/boot.S: Fix order of fields.
|
||||||
|
|
||||||
|
2013-12-18 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Make grub_zlib_decompress handle incomplete chunks.
|
||||||
|
|
||||||
|
Fixes squash4.
|
||||||
|
|
||||||
|
2013-12-18 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/Makefile.am: Don't attempt to export grub_bios_interrupt
|
||||||
|
on i386-multiboot.
|
||||||
|
|
||||||
|
2013-12-18 Aleš Nesrsta <starous@volny.cz>
|
||||||
|
|
||||||
|
* grub-core/disk/usbms.c: Retry on unknown errors.
|
||||||
|
Reuse the same tag on retries.
|
||||||
|
|
||||||
|
2013-12-18 Aleš Nesrsta <starous@volny.cz>
|
||||||
|
|
||||||
|
* grub-core/bus/usb/ehci.c: Fix handling of newborn transfers.
|
||||||
|
|
||||||
|
Avoid confusing them with already completed transfers.
|
||||||
|
|
||||||
|
2013-12-18 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Remove xen VFB.
|
||||||
|
|
||||||
|
Due to XEN bug it prevents Linux boot. Remove it at least, until
|
||||||
|
workaround is found.
|
||||||
|
|
||||||
|
2013-12-18 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* po/exclude.pot: Add 2 missing excludes.
|
||||||
|
|
||||||
|
2013-12-18 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Add missing license section in macbless.mod and macho.mod.
|
||||||
|
|
||||||
|
2013-12-18 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Allow compilation without thumb-interwork as long as no thumb is
|
||||||
|
involved or only thumb2 is used.
|
||||||
|
|
||||||
|
2013-12-18 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Use -Wl,--no-relax rather than -mno-relax for uniformity.
|
||||||
|
|
||||||
|
2013-12-18 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* INSTALL: Update comment as to why sparc64 clang isn't usable.
|
||||||
|
|
||||||
|
2013-12-18 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Add __attribute__ ((sysv_abi)) only if it's really needed.
|
||||||
|
|
||||||
|
Some compilers don't support it.
|
||||||
|
|
||||||
|
2013-12-18 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/lib/syslinux_parse.c: Declare timeout unsigned.
|
||||||
|
|
||||||
|
2013-12-18 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Remove -Wold-style-definition.
|
||||||
|
|
||||||
|
Not very useful and interaction of it with regexp depends on GCC
|
||||||
|
version.
|
||||||
|
|
||||||
|
2013-12-18 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Make grub_util_get_windows_path_real static.
|
||||||
|
|
||||||
|
2013-12-18 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/commands/fileXX.c: Silence cast-align.
|
||||||
|
* grub-core/loader/i386/xen_fileXX.c: Likewise.
|
||||||
|
|
||||||
|
2013-12-18 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* include/grub/efi/api.h (GRUB_EFI_ERROR_CODE): Use explicit cast
|
||||||
|
rather than LL suffix.
|
||||||
|
|
||||||
|
2013-12-18 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* include/grub/efi/api.h (PRIxGRUB_EFI_UINTN_T): Remove leftover.
|
||||||
|
|
||||||
|
2013-12-18 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/loader/arm/linux.c: Use common initrd functions.
|
||||||
|
|
||||||
|
2013-12-18 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Decrease number of strings to translate.
|
||||||
|
|
||||||
|
2013-12-18 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/kern/arm/dl.c: Remove unnecessarry execution mode check.
|
||||||
|
|
||||||
|
2013-12-18 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Mark strings for translation and add remaining ones to exclude list.
|
||||||
|
|
||||||
|
2013-12-18 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* util/grub-file.c (main): Fix sizeof usage.
|
||||||
|
|
||||||
|
2013-12-18 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Silence spurious warning.
|
||||||
|
|
||||||
|
2013-12-18 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Remove check_nt_hiberfil as it's been superseeded by file command.
|
||||||
|
|
||||||
|
2013-12-17 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* docs/osdetect.cfg: Add isolinux config to detected OSes.
|
||||||
|
|
||||||
|
2013-12-17 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Implement syslinux parser.
|
||||||
|
|
||||||
|
2013-12-17 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/commands/legacycfg.c: Use 32-bit Linux protocol on non-BIOS.
|
||||||
|
|
||||||
|
2013-12-17 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Support cpuid --pae.
|
||||||
|
|
||||||
|
2013-12-17 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Use AT keyboard on Yeeloong 3A.
|
||||||
|
|
||||||
|
2013-12-17 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Add Yeeloong 3A reboot and halt.
|
||||||
|
|
||||||
|
2013-12-17 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Add Radeon Yeeloong 3A support.
|
||||||
|
|
||||||
|
2013-12-17 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Add bonito 3A support.
|
||||||
|
|
||||||
|
2013-12-17 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/loader/machoXX.c: Fix compilation on non-i386.
|
||||||
|
|
||||||
|
2013-12-17 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/loader/i386/xen_fileXX.c: Silence cast-align.
|
||||||
|
|
||||||
|
2013-12-17 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/loader/macho.c: Fix compilation on non-i386.
|
||||||
|
|
||||||
|
2013-12-17 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Add missing format_arg attribute to check that printf with translated
|
||||||
|
messages has proper arguments.
|
||||||
|
|
||||||
|
2013-12-17 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Use grub_xasprintf to format translated error messages containing
|
||||||
|
64-bit quantity.
|
||||||
|
|
||||||
|
2013-12-17 Jon McCune <jonmccune@google.com>
|
||||||
|
|
||||||
|
Fix double-free introduced by commit 33d02a42d64cf06cada1c389
|
||||||
|
|
||||||
|
2013-12-17 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Unify message for unsupported relocation.
|
||||||
|
|
||||||
|
2013-12-17 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Mark miscompile error for translation.
|
||||||
|
|
||||||
|
2013-12-17 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Use %I64 and not %ll when using OS printf if compiling for windows.
|
||||||
|
|
||||||
|
2013-12-17 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Update Mac code to match new register_efi prototype.
|
||||||
|
|
||||||
|
2013-12-17 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Implement better integration with Mac firmware.
|
||||||
|
|
||||||
|
2013-12-17 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/loader/multiboot_mbi2.c: Implement special value for
|
||||||
|
load_addr.
|
||||||
|
|
||||||
|
2013-12-17 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Include serial module in default_payload.elf.
|
||||||
|
|
||||||
|
2013-12-17 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Add explicit thumb interwork bx in asm files.
|
||||||
|
|
||||||
|
Shouldn't matter for armv >= 5 but let's be safe.
|
||||||
|
|
||||||
|
2013-12-17 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Implement Truecrypt ISO loader.
|
||||||
|
|
||||||
|
2013-12-17 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/lib/arg.c: Ensure at least a single space between commands.
|
||||||
|
|
||||||
|
2013-12-17 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Implement grub_file tool and use it to implement generating of config
|
||||||
|
in separate root.
|
||||||
|
|
||||||
|
2013-12-17 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Change to v1 xen grants.
|
||||||
|
|
||||||
|
2013-12-17 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/lib/i386/xen/relocator.S: Fix hypercall ABI violation.
|
||||||
|
|
||||||
|
GRUB relied on %ebx being preserved across hypercall which isn't true.
|
||||||
|
|
||||||
|
2013-12-17 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/lib/x86_64/xen/relocator.S: Fix hypercall ABI violation.
|
||||||
|
|
||||||
|
GRUB relied on %rdi being preserved across hypercall which isn't true.
|
||||||
|
|
||||||
|
2013-12-17 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Implement XEN VFB support.
|
||||||
|
|
||||||
|
2013-12-17 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Remove grub_bios_interrupt on coreboot.
|
||||||
|
|
||||||
|
It's not used currently and cannot be used safely currently.
|
||||||
|
|
||||||
|
2013-12-16 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Update exclude.pot and mark few strings for translation.
|
||||||
|
|
||||||
|
2013-12-16 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* util/grub-mkrescue.c: Fix incorrect file usage in fallback code.
|
||||||
|
|
||||||
|
Reported by: Jon McCune
|
||||||
|
|
||||||
|
2013-12-16 Andrey Borzenkov <arvidjaar@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/osdep/linux/platform.c (grub_install_get_default_x86_platform):
|
||||||
|
Add verbose information which firmware directories were tried.
|
||||||
|
|
||||||
|
2013-12-16 Andrey Borzenkov <arvidjaar@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/osdep/unix/exec.c (grub_util_exec_redirect_all): New
|
||||||
|
function to optionally redirect all three standard descriptors.
|
||||||
|
Redefine grub_util_exec, grub_util_exec_redirect and
|
||||||
|
grub_util_exec_redirect_null to use it.
|
||||||
|
* include/grub/emu/exec.h: Define it.
|
||||||
|
* include/grub/osdep/exec_unix.h: Delete, it is unused.
|
||||||
|
* grub-core/osdep/linux/platform.c (grub_install_get_default_x86_platform):
|
||||||
|
Use grub_util_exec_redirect_all to redirect error to NULL.
|
||||||
|
|
||||||
|
2013-12-16 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/tests/sleep_test.c: Silence spurious warning.
|
||||||
|
|
||||||
|
2013-12-16 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Make grub_xen_hypercall on i386 cdecl rather than stdcall to avoid
|
||||||
|
linker trying to "fixup" the code.
|
||||||
|
|
||||||
|
2013-12-16 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/kern/x86_64/xen/startup.S: Align stack.
|
||||||
|
|
||||||
|
2013-12-16 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Add support for converting PE+ to Elf64.
|
||||||
|
|
||||||
|
2013-12-16 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/commands/minicmd.c (grub_mini_cmd_dump): Handle LLP case.
|
||||||
|
|
||||||
|
2013-12-16 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Remove practice of assigning random const pointers to device id.
|
||||||
|
|
||||||
|
This is not required as cache code already checks driver id as well.
|
||||||
|
|
||||||
|
2013-12-16 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* include/grub/x86_64/types.h: Define sizeof (long) as 4 when compiling
|
||||||
|
with mingw.
|
||||||
|
|
||||||
|
2013-12-16 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* include/grub/efi/api.h: Don't use call wrappers when compiled with
|
||||||
|
mingw or cygwin as API already matches.
|
||||||
|
|
||||||
|
2013-12-16 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/lib/posix_wrap/errno.h: Undefine errno before redefining.
|
||||||
|
|
||||||
|
2013-12-16 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* include/grub/efi/api.h: Define (u)intn_t based on pointer size and
|
||||||
|
not on long.
|
||||||
|
|
||||||
|
2013-12-16 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Handle X86_64_PC64 relocation.
|
||||||
|
|
||||||
|
Those are generated by some cygwin compilers.
|
||||||
|
|
||||||
|
2013-12-16 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Determine the need for mingw-related stubs at compile time rather than
|
||||||
|
using not very significant $target_os.
|
||||||
|
|
||||||
|
2013-12-16 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/genmod.sh.in: Strip before converting to ELF as strip
|
||||||
|
may not work with ELF.
|
||||||
|
|
||||||
|
2013-12-16 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Use unix functions for temporary files and special files on cygwin.
|
||||||
|
|
||||||
|
2013-12-16 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Define functions explicitly rather than using --defsym in tests
|
||||||
|
whenever possible. Respect locality in remaining cases.
|
||||||
|
|
||||||
|
2013-12-16 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/genmoddep.awk: Remove explicit getline < /dev/stdin.
|
||||||
|
|
||||||
|
2013-12-15 Andrey Borzenkov <arvidjaar@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/osdep/windows/platform.c (grub_install_register_efi): Handle
|
||||||
|
unlikely errors when getting EFI variables and make exhaustive search
|
||||||
|
for all BootNNNN variables to find matching one.
|
||||||
|
|
||||||
|
2013-12-15 Ian Campbell <ijc@hellion.org.uk>
|
||||||
|
|
||||||
|
* grub-core/kern/uboot/init.c: Fix units of uboot timer.
|
||||||
|
|
||||||
|
2013-12-15 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
New functional test for sleep function.
|
||||||
|
|
||||||
|
This test allows to check sleep without qemu. Keep qemu version as
|
||||||
|
well as functional test won't notice if all clocks are going too fast
|
||||||
|
or too slow.
|
||||||
|
|
||||||
|
2013-12-15 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Add explicit sysv_abi on amd64 asm routines.
|
||||||
|
|
||||||
|
2013-12-15 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/commands/efi/lsefisystab.c: Use %lld to show
|
||||||
|
num_table_entries.
|
||||||
|
|
||||||
|
2013-12-15 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* include/grub/test.h: Use gnu_printf rather than printf on GRUB
|
||||||
|
functions.
|
||||||
|
|
||||||
|
2013-12-15 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/loader/i386/linux.c: Use grub_addr_t rather than long when
|
||||||
|
appropriate.
|
||||||
|
|
||||||
|
2013-12-15 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/loader/i386/linux.c: Use %p rather than %lx for pointers.
|
||||||
|
|
||||||
|
2013-12-15 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/kern/elfXX.c: Use grub_addr_t rather than long when
|
||||||
|
appropriate.
|
||||||
|
|
||||||
|
2013-12-15 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/disk/loopback.c: Use sequential IDs rather than pointer.
|
||||||
|
|
||||||
|
In case of quick removal of loopback and adding another one it may
|
||||||
|
get same ID, confusing the cache system.
|
||||||
|
|
||||||
|
2013-12-15 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/commands/acpi.c: Use grub_addr_t rather than long when
|
||||||
|
appropriate.
|
||||||
|
|
||||||
|
2013-12-15 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/kern/i386/coreboot/cbtable.c: Use char * arithmetic rather
|
||||||
|
than converting to long.
|
||||||
|
|
||||||
|
2013-12-15 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/disk/cryptodisk.c: Rename "n" to "last_cryptodisk_id".
|
||||||
|
|
||||||
|
2013-12-15 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* util/grub-mkimagexx.c (relocate_addresses): Display offset rather
|
||||||
|
than almost useless pointer.
|
||||||
|
|
||||||
|
2013-12-15 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Add gcc_struct to all packed structures when compiling with mingw.
|
||||||
|
|
||||||
|
Just "packed" doesn't always pack the way we expect.
|
||||||
|
|
||||||
|
2013-12-14 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* include/grub/i386/coreboot/lbio.h: Add missing attribute (packed).
|
||||||
|
|
||||||
|
2013-12-14 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* util/grub-pe2elf.c: Fix handling of .bss.
|
||||||
|
|
||||||
|
2013-12-14 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Implement windows flavour of EFI install routines.
|
||||||
|
|
||||||
|
2013-12-14 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* conf/Makefile.extra-dist: Adjust path to conf/i386-cygwin-img-ld.sc.
|
||||||
|
|
||||||
|
2013-12-14 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Change grub_install_register_efi interface to pass GRUB device.
|
||||||
|
|
||||||
|
This allows grub_install_register_efi to request partition info
|
||||||
|
directly.
|
||||||
|
|
||||||
|
2013-12-14 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Workaround cygwin bug when using \\?\Volume{GUID} syntax.
|
||||||
|
|
||||||
|
2013-12-14 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Do not use TCHAR string functions as they are not available on cygwin.
|
||||||
|
|
||||||
|
2013-12-14 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Workaround windows bug when querying EFI system partition parameters.
|
||||||
|
|
||||||
|
2013-12-14 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/kern/i386/qemu/init.c (resource): Decrease struct size
|
||||||
|
by using bitfields.
|
||||||
|
|
||||||
|
2013-12-14 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/boot/i386/qemu/boot.S: Add missing EXT_C.
|
||||||
|
|
||||||
|
2013-12-14 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Make i386-* other than i386-pc compileable under cygwin.
|
||||||
|
|
||||||
|
2013-12-14 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Fix definition of grub_efi_hard_drive_device_path. Take care that
|
||||||
|
existing code would work even if by some reason bogus definition is
|
||||||
|
used by EFI implementations.
|
||||||
|
|
||||||
|
2013-12-14 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/osdep/windows/hostdisk.c: Fix cygwin compilation.
|
||||||
|
|
||||||
|
2013-12-14 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/osdep/windows/blocklist.c: Add missing cast in printf
|
||||||
|
invocation.
|
||||||
|
|
||||||
|
2013-12-14 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* util/config.c: Remove trailing newline from distributor in simple
|
||||||
|
parsing.
|
||||||
|
|
||||||
|
2013-12-14 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* include/grub/efi/api.h: Rename protocol and interface to avoid
|
||||||
|
conflict.
|
||||||
|
|
||||||
|
2013-12-14 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* .gitignore: Add .exe variants. Add missing files. Remove few outdated
|
||||||
|
entries.
|
||||||
|
|
||||||
|
2013-12-14 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/osdep/exec.c: Use unix version on cygwin.
|
||||||
|
|
||||||
|
2013-12-13 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Implement multiboot2 EFI BS specification.
|
||||||
|
|
||||||
|
2013-12-11 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/normal/charset.c: Fix premature line wrap and crash.
|
||||||
|
Crash happened only in some cases like a string starting at the
|
||||||
|
half of the screen of same length.
|
||||||
|
|
||||||
|
2013-12-11 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* include/grub/efiemu/efiemu.h: Sync configuration table declaration
|
||||||
|
with EFI counterpart.
|
||||||
|
|
||||||
|
2013-12-11 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Propagate the EFI commits to x86-efi specific parts.
|
||||||
|
|
||||||
|
2013-12-11 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/commands/efi/lssal.c: Fix terminating condition.
|
||||||
|
|
||||||
|
2013-12-11 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Introduce grub_efi_packed_guid and use it where alignment is not
|
||||||
|
guaranteed.
|
||||||
|
|
||||||
|
2013-12-11 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* include/grub/efi/api.h (grub_efi_device_path): Define length as
|
||||||
|
unaligned u16 rather than u8[2].
|
||||||
|
|
||||||
|
2013-12-11 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/kern/ia64/dl.c (grub_arch_dl_relocate_symbols): Add checks
|
||||||
|
for relocation range.
|
||||||
|
|
||||||
|
2013-12-11 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/kern/ia64/dl.c (grub_arch_dl_relocate_symbols): Handle
|
||||||
|
non-function pcrel21b relocation. It happens with .text.unlikely
|
||||||
|
section.
|
||||||
|
|
||||||
|
2013-12-10 Leif Lindholm <leif.lindholm@linaro.org>
|
||||||
|
|
||||||
|
* make MAX_USABLE_ADDRESS platform-specific
|
||||||
|
* grub-core/kern/efi/mm.c: add Vladimir's new BYTES_TO_PAGES_DOWN macro.
|
||||||
|
|
||||||
|
2013-12-10 Leif Lindholm <leif.lindholm@linaro.org>
|
||||||
|
|
||||||
|
* grub-core/lib/fdt.c: change memcpy => grub_memcpy
|
||||||
|
|
||||||
|
2013-12-09 Jon McCune <jonmccune@google.com>
|
||||||
|
|
||||||
|
* Add --no-rs-codes flag to optionally disable reed-solomon codes
|
||||||
|
in grub-install and grub-bios-setup for x86 BIOS targets.
|
||||||
|
|
||||||
|
2013-12-09 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Add missing compile and link options for sparc64-emu.
|
||||||
|
|
||||||
|
2013-12-09 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Implement sparc64 trampolines (needed for sparc64-emu).
|
||||||
|
|
||||||
|
2013-12-09 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/kern/sparc64/dl.c (grub_arch_dl_relocate_symbols): Check
|
||||||
|
range of R_SPARC_HI22.
|
||||||
|
Implement R_SPARC_LM22.
|
||||||
|
|
||||||
|
2013-12-09 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/kern/powerpc/dl_helper.c (grub_arch_dl_get_tramp_got_size):
|
||||||
|
Do not explicitly check for symbol table as it's already checked in
|
||||||
|
platform-independent layer.
|
||||||
|
|
||||||
|
2013-12-09 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/kern/emu/cache.c [__ia64__]: Use our cache cleaning routine
|
||||||
|
on ia64 as __clear_cache is a dummy on ia64.
|
||||||
|
|
||||||
|
2013-12-09 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/kern/ia64/dl_helper.c (grub_ia64_dl_get_tramp_got_size):
|
||||||
|
Do not explicitly check for symbol table as it's already checked in
|
||||||
|
platform-independent layer.
|
||||||
|
|
||||||
|
2013-12-09 Colin Watson <cjwatson@ubuntu.com>
|
||||||
|
|
||||||
|
* util/grub-mkconfig.in: Add missing newline to output.
|
||||||
|
|
||||||
2013-12-08 Vladimir Serbinenko <phcoder@gmail.com>
|
2013-12-08 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
* grub-core/kern/ia64/efi/init.c (grub_arch_sync_caches): Move to ...
|
* grub-core/kern/ia64/efi/init.c (grub_arch_sync_caches): Move to ...
|
||||||
|
4
INSTALL
4
INSTALL
@ -17,6 +17,7 @@ configuring the GRUB.
|
|||||||
much bigger binaries.
|
much bigger binaries.
|
||||||
earlier versions not tested
|
earlier versions not tested
|
||||||
Note: clang 3.2 or later works for arm
|
Note: clang 3.2 or later works for arm
|
||||||
|
None of tested clang versions generated usable thumb code
|
||||||
earlier versions not tested
|
earlier versions not tested
|
||||||
Note: clang 3.3 or later works for arm64
|
Note: clang 3.3 or later works for arm64
|
||||||
earlier versions have no arm64 support
|
earlier versions have no arm64 support
|
||||||
@ -25,8 +26,7 @@ configuring the GRUB.
|
|||||||
fail.
|
fail.
|
||||||
Note: clang 3.2 or later works for powerpc
|
Note: clang 3.2 or later works for powerpc
|
||||||
earlier versions not tested
|
earlier versions not tested
|
||||||
Note: clang has no support for generating 64-bit sparc code and hence you
|
Note: clang doesn't support -mno-app-regs and so can't be used for sparc64
|
||||||
can't compile GRUB for sparc64 with clang
|
|
||||||
Note: clang has no support for ia64 and hence you can't compile GRUB
|
Note: clang has no support for ia64 and hence you can't compile GRUB
|
||||||
for ia64 with clang
|
for ia64 with clang
|
||||||
* GNU Make
|
* GNU Make
|
||||||
|
@ -399,7 +399,7 @@ bootcheck: $(BOOTCHECKS)
|
|||||||
|
|
||||||
if COND_i386_coreboot
|
if COND_i386_coreboot
|
||||||
default_payload.elf: grub-mkstandalone grub-mkimage
|
default_payload.elf: grub-mkstandalone grub-mkimage
|
||||||
pkgdatadir=. ./grub-mkstandalone --grub-mkimage=./grub-mkimage -O i386-coreboot -o $@ --modules='ahci pata ehci uhci ohci usb_keyboard usbms part_msdos xfs ext2 fat at_keyboard part_gpt usbserial_usbdebug cbfs' --install-modules='ls linux search configfile normal cbtime cbls memrw iorw minicmd lsmmap lspci halt reboot hexdump pcidump regexp setpci lsacpi chain test' --fonts= --themes= --locales= -d grub-core/ /boot/grub/grub.cfg=$(srcdir)/coreboot.cfg
|
pkgdatadir=. ./grub-mkstandalone --grub-mkimage=./grub-mkimage -O i386-coreboot -o $@ --modules='ahci pata ehci uhci ohci usb_keyboard usbms part_msdos xfs ext2 fat at_keyboard part_gpt usbserial_usbdebug cbfs' --install-modules='ls linux search configfile normal cbtime cbls memrw iorw minicmd lsmmap lspci halt reboot hexdump pcidump regexp setpci lsacpi chain test serial' --fonts= --themes= --locales= -d grub-core/ /boot/grub/grub.cfg=$(srcdir)/coreboot.cfg
|
||||||
endif
|
endif
|
||||||
|
|
||||||
windowsdir=$(top_builddir)/$(PACKAGE)-$(VERSION)-for-windows
|
windowsdir=$(top_builddir)/$(PACKAGE)-$(VERSION)-for-windows
|
||||||
|
@ -62,6 +62,7 @@ library = {
|
|||||||
common_nodist = grub_script.tab.h;
|
common_nodist = grub_script.tab.h;
|
||||||
|
|
||||||
common = grub-core/commands/blocklist.c;
|
common = grub-core/commands/blocklist.c;
|
||||||
|
common = grub-core/commands/macbless.c;
|
||||||
common = grub-core/commands/xnu_uuid.c;
|
common = grub-core/commands/xnu_uuid.c;
|
||||||
common = grub-core/commands/testload.c;
|
common = grub-core/commands/testload.c;
|
||||||
common = grub-core/commands/ls.c;
|
common = grub-core/commands/ls.c;
|
||||||
@ -154,6 +155,7 @@ library = {
|
|||||||
common = grub-core/script/script.c;
|
common = grub-core/script/script.c;
|
||||||
common = grub-core/script/argv.c;
|
common = grub-core/script/argv.c;
|
||||||
common = grub-core/io/gzio.c;
|
common = grub-core/io/gzio.c;
|
||||||
|
common = grub-core/io/xzio.c;
|
||||||
common = grub-core/io/lzopio.c;
|
common = grub-core/io/lzopio.c;
|
||||||
common = grub-core/kern/ia64/dl_helper.c;
|
common = grub-core/kern/ia64/dl_helper.c;
|
||||||
common = grub-core/kern/arm/dl_helper.c;
|
common = grub-core/kern/arm/dl_helper.c;
|
||||||
@ -417,6 +419,21 @@ program = {
|
|||||||
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
program = {
|
||||||
|
name = grub-macbless;
|
||||||
|
installdir = sbin;
|
||||||
|
mansection = 1;
|
||||||
|
common = util/grub-macbless.c;
|
||||||
|
common = grub-core/osdep/init.c;
|
||||||
|
common = grub-core/kern/emu/argp_common.c;
|
||||||
|
|
||||||
|
ldadd = libgrubmods.a;
|
||||||
|
ldadd = libgrubgcry.a;
|
||||||
|
ldadd = libgrubkern.a;
|
||||||
|
ldadd = grub-core/gnulib/libgnu.a;
|
||||||
|
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
||||||
|
};
|
||||||
|
|
||||||
data = {
|
data = {
|
||||||
common = util/grub.d/README;
|
common = util/grub.d/README;
|
||||||
installdir = grubconf;
|
installdir = grubconf;
|
||||||
@ -439,49 +456,42 @@ script = {
|
|||||||
name = '10_hurd';
|
name = '10_hurd';
|
||||||
common = util/grub.d/10_hurd.in;
|
common = util/grub.d/10_hurd.in;
|
||||||
installdir = grubconf;
|
installdir = grubconf;
|
||||||
condition = COND_HOST_HURD;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
script = {
|
script = {
|
||||||
name = '10_kfreebsd';
|
name = '10_kfreebsd';
|
||||||
common = util/grub.d/10_kfreebsd.in;
|
common = util/grub.d/10_kfreebsd.in;
|
||||||
installdir = grubconf;
|
installdir = grubconf;
|
||||||
condition = COND_HOST_KFREEBSD;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
script = {
|
script = {
|
||||||
name = '10_illumos';
|
name = '10_illumos';
|
||||||
common = util/grub.d/10_illumos.in;
|
common = util/grub.d/10_illumos.in;
|
||||||
installdir = grubconf;
|
installdir = grubconf;
|
||||||
condition = COND_HOST_ILLUMOS;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
script = {
|
script = {
|
||||||
name = '10_netbsd';
|
name = '10_netbsd';
|
||||||
common = util/grub.d/10_netbsd.in;
|
common = util/grub.d/10_netbsd.in;
|
||||||
installdir = grubconf;
|
installdir = grubconf;
|
||||||
condition = COND_HOST_NETBSD;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
script = {
|
script = {
|
||||||
name = '10_linux';
|
name = '10_linux';
|
||||||
common = util/grub.d/10_linux.in;
|
common = util/grub.d/10_linux.in;
|
||||||
installdir = grubconf;
|
installdir = grubconf;
|
||||||
condition = COND_HOST_LINUX;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
script = {
|
script = {
|
||||||
name = '10_xnu';
|
name = '10_xnu';
|
||||||
common = util/grub.d/10_xnu.in;
|
common = util/grub.d/10_xnu.in;
|
||||||
installdir = grubconf;
|
installdir = grubconf;
|
||||||
condition = COND_HOST_XNU;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
script = {
|
script = {
|
||||||
name = '20_linux_xen';
|
name = '20_linux_xen';
|
||||||
common = util/grub.d/20_linux_xen.in;
|
common = util/grub.d/20_linux_xen.in;
|
||||||
installdir = grubconf;
|
installdir = grubconf;
|
||||||
condition = COND_HOST_LINUX;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
script = {
|
script = {
|
||||||
@ -567,6 +577,7 @@ program = {
|
|||||||
common = grub-core/osdep/platform.c;
|
common = grub-core/osdep/platform.c;
|
||||||
common = grub-core/osdep/platform_unix.c;
|
common = grub-core/osdep/platform_unix.c;
|
||||||
extra_dist = grub-core/osdep/linux/platform.c;
|
extra_dist = grub-core/osdep/linux/platform.c;
|
||||||
|
extra_dist = grub-core/osdep/windows/platform.c;
|
||||||
extra_dist = grub-core/osdep/basic/platform.c;
|
extra_dist = grub-core/osdep/basic/platform.c;
|
||||||
extra_dist = grub-core/osdep/basic/no_platform.c;
|
extra_dist = grub-core/osdep/basic/no_platform.c;
|
||||||
extra_dist = grub-core/osdep/unix/platform.c;
|
extra_dist = grub-core/osdep/unix/platform.c;
|
||||||
@ -613,6 +624,9 @@ program = {
|
|||||||
common = grub-core/osdep/blocklist.c;
|
common = grub-core/osdep/blocklist.c;
|
||||||
common = grub-core/osdep/config.c;
|
common = grub-core/osdep/config.c;
|
||||||
common = util/config.c;
|
common = util/config.c;
|
||||||
|
common = util/render-label.c;
|
||||||
|
common = grub-core/kern/emu/hostfs.c;
|
||||||
|
common = grub-core/disk/host.c;
|
||||||
|
|
||||||
common = util/resolve.c;
|
common = util/resolve.c;
|
||||||
enable = noemu;
|
enable = noemu;
|
||||||
@ -1244,6 +1258,24 @@ program = {
|
|||||||
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
program = {
|
||||||
|
name = grub-syslinux2cfg;
|
||||||
|
mansection = 1;
|
||||||
|
common = util/grub-syslinux2cfg.c;
|
||||||
|
common = grub-core/lib/syslinux_parse.c;
|
||||||
|
common = grub-core/lib/getline.c;
|
||||||
|
common = grub-core/osdep/init.c;
|
||||||
|
common = grub-core/kern/emu/hostfs.c;
|
||||||
|
common = grub-core/disk/host.c;
|
||||||
|
common = grub-core/kern/emu/argp_common.c;
|
||||||
|
|
||||||
|
ldadd = libgrubmods.a;
|
||||||
|
ldadd = libgrubgcry.a;
|
||||||
|
ldadd = libgrubkern.a;
|
||||||
|
ldadd = grub-core/gnulib/libgnu.a;
|
||||||
|
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
||||||
|
};
|
||||||
|
|
||||||
program = {
|
program = {
|
||||||
name = grub-glue-efi;
|
name = grub-glue-efi;
|
||||||
mansection = 1;
|
mansection = 1;
|
||||||
@ -1277,3 +1309,32 @@ program = {
|
|||||||
ldadd = grub-core/gnulib/libgnu.a;
|
ldadd = grub-core/gnulib/libgnu.a;
|
||||||
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
program = {
|
||||||
|
name = grub-file;
|
||||||
|
mansection = 1;
|
||||||
|
|
||||||
|
common = util/grub-file.c;
|
||||||
|
common = util/render-label.c;
|
||||||
|
common = grub-core/commands/file.c;
|
||||||
|
common = grub-core/commands/file32.c;
|
||||||
|
common = grub-core/commands/file64.c;
|
||||||
|
common = grub-core/loader/i386/xen_file.c;
|
||||||
|
common = grub-core/loader/i386/xen_file32.c;
|
||||||
|
common = grub-core/loader/i386/xen_file64.c;
|
||||||
|
common = grub-core/io/offset.c;
|
||||||
|
common = grub-core/kern/elf.c;
|
||||||
|
common = grub-core/loader/lzss.c;
|
||||||
|
common = grub-core/loader/macho.c;
|
||||||
|
common = grub-core/loader/macho32.c;
|
||||||
|
common = grub-core/loader/macho64.c;
|
||||||
|
common = grub-core/kern/emu/hostfs.c;
|
||||||
|
common = grub-core/disk/host.c;
|
||||||
|
common = grub-core/osdep/init.c;
|
||||||
|
|
||||||
|
ldadd = libgrubmods.a;
|
||||||
|
ldadd = libgrubgcry.a;
|
||||||
|
ldadd = libgrubkern.a;
|
||||||
|
ldadd = grub-core/gnulib/libgnu.a;
|
||||||
|
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
||||||
|
};
|
||||||
|
33
acinclude.m4
33
acinclude.m4
@ -19,6 +19,8 @@ AC_DEFUN([grub_PROG_TARGET_CC],
|
|||||||
AC_CACHE_VAL(grub_cv_prog_target_cc,
|
AC_CACHE_VAL(grub_cv_prog_target_cc,
|
||||||
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
||||||
asm (".globl start; start:");
|
asm (".globl start; start:");
|
||||||
|
void __main (void);
|
||||||
|
void __main (void) {}
|
||||||
int main (void);
|
int main (void);
|
||||||
]], [[]])],
|
]], [[]])],
|
||||||
[grub_cv_prog_target_cc=yes],
|
[grub_cv_prog_target_cc=yes],
|
||||||
@ -288,7 +290,12 @@ AC_DEFUN([grub_CHECK_BSS_START_SYMBOL],
|
|||||||
[AC_REQUIRE([AC_PROG_CC])
|
[AC_REQUIRE([AC_PROG_CC])
|
||||||
AC_MSG_CHECKING([if __bss_start is defined by the compiler])
|
AC_MSG_CHECKING([if __bss_start is defined by the compiler])
|
||||||
AC_CACHE_VAL(grub_cv_check_uscore_uscore_bss_start_symbol,
|
AC_CACHE_VAL(grub_cv_check_uscore_uscore_bss_start_symbol,
|
||||||
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],
|
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
||||||
|
asm (".globl start; start:");
|
||||||
|
void __main (void);
|
||||||
|
void __main (void) {}
|
||||||
|
int main (void);
|
||||||
|
]],
|
||||||
[[asm ("incl __bss_start")]])],
|
[[asm ("incl __bss_start")]])],
|
||||||
[grub_cv_check_uscore_uscore_bss_start_symbol=yes],
|
[grub_cv_check_uscore_uscore_bss_start_symbol=yes],
|
||||||
[grub_cv_check_uscore_uscore_bss_start_symbol=no])])
|
[grub_cv_check_uscore_uscore_bss_start_symbol=no])])
|
||||||
@ -297,7 +304,11 @@ AC_MSG_RESULT([$grub_cv_check_uscore_uscore_bss_start_symbol])
|
|||||||
|
|
||||||
AC_MSG_CHECKING([if edata is defined by the compiler])
|
AC_MSG_CHECKING([if edata is defined by the compiler])
|
||||||
AC_CACHE_VAL(grub_cv_check_edata_symbol,
|
AC_CACHE_VAL(grub_cv_check_edata_symbol,
|
||||||
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],
|
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
||||||
|
asm (".globl start; start:");
|
||||||
|
void __main (void);
|
||||||
|
void __main (void) {}
|
||||||
|
int main (void);]],
|
||||||
[[asm ("incl edata")]])],
|
[[asm ("incl edata")]])],
|
||||||
[grub_cv_check_edata_symbol=yes],
|
[grub_cv_check_edata_symbol=yes],
|
||||||
[grub_cv_check_edata_symbol=no])])
|
[grub_cv_check_edata_symbol=no])])
|
||||||
@ -306,7 +317,11 @@ AC_MSG_RESULT([$grub_cv_check_edata_symbol])
|
|||||||
|
|
||||||
AC_MSG_CHECKING([if _edata is defined by the compiler])
|
AC_MSG_CHECKING([if _edata is defined by the compiler])
|
||||||
AC_CACHE_VAL(grub_cv_check_uscore_edata_symbol,
|
AC_CACHE_VAL(grub_cv_check_uscore_edata_symbol,
|
||||||
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],
|
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
||||||
|
asm (".globl start; start:");
|
||||||
|
void __main (void);
|
||||||
|
void __main (void) {}
|
||||||
|
int main (void);]],
|
||||||
[[asm ("incl _edata")]])],
|
[[asm ("incl _edata")]])],
|
||||||
[grub_cv_check_uscore_edata_symbol=yes],
|
[grub_cv_check_uscore_edata_symbol=yes],
|
||||||
[grub_cv_check_uscore_edata_symbol=no])])
|
[grub_cv_check_uscore_edata_symbol=no])])
|
||||||
@ -330,7 +345,11 @@ AC_DEFUN([grub_CHECK_END_SYMBOL],
|
|||||||
[AC_REQUIRE([AC_PROG_CC])
|
[AC_REQUIRE([AC_PROG_CC])
|
||||||
AC_MSG_CHECKING([if end is defined by the compiler])
|
AC_MSG_CHECKING([if end is defined by the compiler])
|
||||||
AC_CACHE_VAL(grub_cv_check_end_symbol,
|
AC_CACHE_VAL(grub_cv_check_end_symbol,
|
||||||
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],
|
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
||||||
|
asm (".globl start; start:");
|
||||||
|
void __main (void);
|
||||||
|
void __main (void) {}
|
||||||
|
int main (void);]],
|
||||||
[[asm ("incl end")]])],
|
[[asm ("incl end")]])],
|
||||||
[grub_cv_check_end_symbol=yes],
|
[grub_cv_check_end_symbol=yes],
|
||||||
[grub_cv_check_end_symbol=no])])
|
[grub_cv_check_end_symbol=no])])
|
||||||
@ -339,7 +358,11 @@ AC_MSG_RESULT([$grub_cv_check_end_symbol])
|
|||||||
|
|
||||||
AC_MSG_CHECKING([if _end is defined by the compiler])
|
AC_MSG_CHECKING([if _end is defined by the compiler])
|
||||||
AC_CACHE_VAL(grub_cv_check_uscore_end_symbol,
|
AC_CACHE_VAL(grub_cv_check_uscore_end_symbol,
|
||||||
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],
|
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
||||||
|
asm (".globl start; start:");
|
||||||
|
void __main (void);
|
||||||
|
void __main (void) {}
|
||||||
|
int main (void);]],
|
||||||
[[asm ("incl _end")]])],
|
[[asm ("incl _end")]])],
|
||||||
[grub_cv_check_uscore_end_symbol=yes],
|
[grub_cv_check_uscore_end_symbol=yes],
|
||||||
[grub_cv_check_uscore_end_symbol=no])])
|
[grub_cv_check_uscore_end_symbol=no])])
|
||||||
|
@ -8,11 +8,13 @@ unexport LC_ALL
|
|||||||
# Platform specific options
|
# Platform specific options
|
||||||
if COND_sparc64_ieee1275
|
if COND_sparc64_ieee1275
|
||||||
CFLAGS_PLATFORM += -mno-app-regs
|
CFLAGS_PLATFORM += -mno-app-regs
|
||||||
LDFLAGS_PLATFORM = -Wl,-melf64_sparc -mno-relax
|
LDFLAGS_PLATFORM = -Wl,-melf64_sparc -Wl,--no-relax
|
||||||
|
endif
|
||||||
|
if COND_sparc64_emu
|
||||||
|
CFLAGS_PLATFORM += -mno-app-regs
|
||||||
|
LDFLAGS_PLATFORM = -Wl,--no-relax
|
||||||
endif
|
endif
|
||||||
if COND_arm
|
if COND_arm
|
||||||
CFLAGS_PLATFORM += -mthumb-interwork
|
|
||||||
CCASFLAGS_PLATFORM = -mthumb-interwork
|
|
||||||
if !COND_emu
|
if !COND_emu
|
||||||
LDFLAGS_PLATFORM = -Wl,--wrap=__clear_cache
|
LDFLAGS_PLATFORM = -Wl,--wrap=__clear_cache
|
||||||
endif
|
endif
|
||||||
@ -44,11 +46,7 @@ CFLAGS_KERNEL = $(CFLAGS_CPU) $(CFLAGS_PLATFORM) -ffreestanding
|
|||||||
LDFLAGS_KERNEL = $(LDFLAGS_CPU) $(LDFLAGS_PLATFORM) -nostdlib $(TARGET_LDFLAGS_OLDMAGIC) $(TARGET_LDFLAGS_STATIC_LIBGCC)
|
LDFLAGS_KERNEL = $(LDFLAGS_CPU) $(LDFLAGS_PLATFORM) -nostdlib $(TARGET_LDFLAGS_OLDMAGIC) $(TARGET_LDFLAGS_STATIC_LIBGCC)
|
||||||
CPPFLAGS_KERNEL = $(CPPFLAGS_CPU) $(CPPFLAGS_PLATFORM) -DGRUB_KERNEL=1
|
CPPFLAGS_KERNEL = $(CPPFLAGS_CPU) $(CPPFLAGS_PLATFORM) -DGRUB_KERNEL=1
|
||||||
CCASFLAGS_KERNEL = $(CCASFLAGS_CPU) $(CCASFLAGS_PLATFORM)
|
CCASFLAGS_KERNEL = $(CCASFLAGS_CPU) $(CCASFLAGS_PLATFORM)
|
||||||
if COND_CYGWIN
|
STRIPFLAGS_KERNEL = -R .rel.dyn -R .reginfo -R .note -R .comment -R .drectve -R .note.gnu.gold-version
|
||||||
STRIPFLAGS_KERNEL = -F elf32-i386 -R .rel.dyn -R .reginfo -R .note -R .comment -R .drectve -R .note.gnu.gold-version
|
|
||||||
else
|
|
||||||
STRIPFLAGS_KERNEL = -R .rel.dyn -R .reginfo -R .note -R .comment -R .note.gnu.gold-version
|
|
||||||
endif
|
|
||||||
|
|
||||||
CFLAGS_MODULE = $(CFLAGS_CPU) $(CFLAGS_PLATFORM) -ffreestanding
|
CFLAGS_MODULE = $(CFLAGS_CPU) $(CFLAGS_PLATFORM) -ffreestanding
|
||||||
LDFLAGS_MODULE = $(LDFLAGS_CPU) $(LDFLAGS_PLATFORM) -nostdlib $(TARGET_LDFLAGS_OLDMAGIC) -Wl,-r,-d
|
LDFLAGS_MODULE = $(LDFLAGS_CPU) $(LDFLAGS_PLATFORM) -nostdlib $(TARGET_LDFLAGS_OLDMAGIC) -Wl,-r,-d
|
||||||
|
@ -15,7 +15,7 @@ EXTRA_DIST += docs/autoiso.cfg
|
|||||||
EXTRA_DIST += docs/grub.cfg
|
EXTRA_DIST += docs/grub.cfg
|
||||||
EXTRA_DIST += docs/osdetect.cfg
|
EXTRA_DIST += docs/osdetect.cfg
|
||||||
|
|
||||||
EXTRA_DIST += conf/i386-pc-cygwin-img-ld.sc
|
EXTRA_DIST += conf/i386-cygwin-img-ld.sc
|
||||||
|
|
||||||
EXTRA_DIST += grub-core/Makefile.core.def
|
EXTRA_DIST += grub-core/Makefile.core.def
|
||||||
EXTRA_DIST += grub-core/Makefile.gcry.def
|
EXTRA_DIST += grub-core/Makefile.gcry.def
|
||||||
|
@ -5,6 +5,8 @@ SECTIONS
|
|||||||
.text :
|
.text :
|
||||||
{
|
{
|
||||||
start = . ;
|
start = . ;
|
||||||
|
_start = . ;
|
||||||
|
__start = . ;
|
||||||
*(.text)
|
*(.text)
|
||||||
etext = . ;
|
etext = . ;
|
||||||
}
|
}
|
||||||
@ -33,6 +35,8 @@ SECTIONS
|
|||||||
{
|
{
|
||||||
*(.edata)
|
*(.edata)
|
||||||
end = . ;
|
end = . ;
|
||||||
|
_end = . ;
|
||||||
|
__end = . ;
|
||||||
}
|
}
|
||||||
.stab :
|
.stab :
|
||||||
{
|
{
|
98
configure.ac
98
configure.ac
@ -32,7 +32,7 @@ dnl type, so there is no conflict. Variables with the prefix "TARGET_"
|
|||||||
dnl (such as TARGET_CC, TARGET_CFLAGS, etc.) are used for the target
|
dnl (such as TARGET_CC, TARGET_CFLAGS, etc.) are used for the target
|
||||||
dnl type.
|
dnl type.
|
||||||
|
|
||||||
AC_INIT([GRUB],[2.00],[bug-grub@gnu.org])
|
AC_INIT([GRUB],[2.02~beta1],[bug-grub@gnu.org])
|
||||||
|
|
||||||
AC_CONFIG_AUX_DIR([build-aux])
|
AC_CONFIG_AUX_DIR([build-aux])
|
||||||
|
|
||||||
@ -69,6 +69,7 @@ grub_TRANSFORM([grub-script-check])
|
|||||||
grub_TRANSFORM([grub-set-default])
|
grub_TRANSFORM([grub-set-default])
|
||||||
grub_TRANSFORM([grub-sparc64-setup])
|
grub_TRANSFORM([grub-sparc64-setup])
|
||||||
grub_TRANSFORM([grub-render-label])
|
grub_TRANSFORM([grub-render-label])
|
||||||
|
grub_TRANSFORM([grub-file])
|
||||||
|
|
||||||
# Optimization flag. Allow user to override.
|
# Optimization flag. Allow user to override.
|
||||||
if test "x$TARGET_CFLAGS" = x; then
|
if test "x$TARGET_CFLAGS" = x; then
|
||||||
@ -176,6 +177,10 @@ if test x$platform != xemu ; then
|
|||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if test x"$target_cpu-$platform" = xsparc64-emu ; then
|
||||||
|
target_m64=1 ;
|
||||||
|
fi
|
||||||
|
|
||||||
case "$target_os" in
|
case "$target_os" in
|
||||||
windows* | mingw32*) target_os=cygwin ;;
|
windows* | mingw32*) target_os=cygwin ;;
|
||||||
esac
|
esac
|
||||||
@ -345,6 +350,11 @@ AC_SYS_LARGEFILE
|
|||||||
# Identify characteristics of the host architecture.
|
# Identify characteristics of the host architecture.
|
||||||
unset ac_cv_c_bigendian
|
unset ac_cv_c_bigendian
|
||||||
|
|
||||||
|
if test x"$target_cpu-$platform" = xsparc64-emu ; then
|
||||||
|
CFLAGS="$CFLAGS -m64"
|
||||||
|
HOST_CFLAGS="$HOST_CFLAGS -m64"
|
||||||
|
fi
|
||||||
|
|
||||||
AC_C_BIGENDIAN
|
AC_C_BIGENDIAN
|
||||||
AC_CHECK_SIZEOF(void *)
|
AC_CHECK_SIZEOF(void *)
|
||||||
AC_CHECK_SIZEOF(long)
|
AC_CHECK_SIZEOF(long)
|
||||||
@ -423,7 +433,7 @@ esac
|
|||||||
gl_INIT
|
gl_INIT
|
||||||
|
|
||||||
WARN_FLAGS="-Wall -W -Wshadow -Wpointer-arith -Wundef -Wchar-subscripts -Wcomment -Wdeprecated-declarations -Wdisabled-optimization -Wdiv-by-zero -Wfloat-equal -Wformat-extra-args -Wformat-security -Wformat-y2k -Wimplicit -Wimplicit-function-declaration -Wimplicit-int -Wmain -Wmissing-braces -Wmissing-format-attribute -Wmultichar -Wparentheses -Wpointer-arith -Wreturn-type -Wsequence-point -Wshadow -Wsign-compare -Wswitch -Wtrigraphs -Wundef -Wunknown-pragmas -Wunused -Wunused-function -Wunused-label -Wunused-parameter -Wunused-value -Wunused-variable -Wwrite-strings -Wnested-externs -Wstrict-prototypes"
|
WARN_FLAGS="-Wall -W -Wshadow -Wpointer-arith -Wundef -Wchar-subscripts -Wcomment -Wdeprecated-declarations -Wdisabled-optimization -Wdiv-by-zero -Wfloat-equal -Wformat-extra-args -Wformat-security -Wformat-y2k -Wimplicit -Wimplicit-function-declaration -Wimplicit-int -Wmain -Wmissing-braces -Wmissing-format-attribute -Wmultichar -Wparentheses -Wpointer-arith -Wreturn-type -Wsequence-point -Wshadow -Wsign-compare -Wswitch -Wtrigraphs -Wundef -Wunknown-pragmas -Wunused -Wunused-function -Wunused-label -Wunused-parameter -Wunused-value -Wunused-variable -Wwrite-strings -Wnested-externs -Wstrict-prototypes"
|
||||||
EXTRA_WARN_FLAGS="-Wold-style-definition -Wextra -Wattributes -Wendif-labels -Winit-self -Wint-to-pointer-cast -Winvalid-pch -Wmissing-field-initializers -Wnonnull -Woverflow -Wvla -Wpointer-to-int-cast -Wstrict-aliasing -Wvariadic-macros -Wvolatile-register-var -Wpointer-sign"
|
EXTRA_WARN_FLAGS="-Wextra -Wattributes -Wendif-labels -Winit-self -Wint-to-pointer-cast -Winvalid-pch -Wmissing-field-initializers -Wnonnull -Woverflow -Wvla -Wpointer-to-int-cast -Wstrict-aliasing -Wvariadic-macros -Wvolatile-register-var -Wpointer-sign"
|
||||||
|
|
||||||
HOST_CFLAGS="$HOST_CFLAGS $WARN_FLAGS -Wcast-align"
|
HOST_CFLAGS="$HOST_CFLAGS $WARN_FLAGS -Wcast-align"
|
||||||
|
|
||||||
@ -505,7 +515,12 @@ AC_CACHE_CHECK([which extra warnings work], [grub_cv_target_cc_w_extra_flags], [
|
|||||||
grub_cv_target_cc_w_extra_flags=
|
grub_cv_target_cc_w_extra_flags=
|
||||||
for x in $EXTRA_WARN_FLAGS; do
|
for x in $EXTRA_WARN_FLAGS; do
|
||||||
CFLAGS="$TARGET_CFLAGS $x -Werror"
|
CFLAGS="$TARGET_CFLAGS $x -Werror"
|
||||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])], [flag=1], [flag=0])
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
||||||
|
asm (".globl start; start:");
|
||||||
|
void __main (void);
|
||||||
|
void __main (void) {}
|
||||||
|
int main (void);
|
||||||
|
]], [[]])], [flag=1], [flag=0])
|
||||||
if test x$flag = x1 ; then
|
if test x$flag = x1 ; then
|
||||||
grub_cv_target_cc_w_extra_flags="$grub_cv_target_cc_w_extra_flags $x"
|
grub_cv_target_cc_w_extra_flags="$grub_cv_target_cc_w_extra_flags $x"
|
||||||
fi
|
fi
|
||||||
@ -679,23 +694,13 @@ if test "x$grub_cv_cc_fno_asynchronous_unwind_tables" = xyes; then
|
|||||||
TARGET_CFLAGS="$TARGET_CFLAGS -fno-asynchronous-unwind-tables"
|
TARGET_CFLAGS="$TARGET_CFLAGS -fno-asynchronous-unwind-tables"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# For platforms where ELF is not the default link format.
|
|
||||||
case "${target_os}" in
|
|
||||||
cygwin)
|
|
||||||
# FIXME: put proper test here
|
|
||||||
NEED_REGISTER_FRAME_INFO=1
|
|
||||||
;;
|
|
||||||
*) NEED_REGISTER_FRAME_INFO=0 ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
|
|
||||||
AC_ARG_ENABLE([efiemu],
|
AC_ARG_ENABLE([efiemu],
|
||||||
[AS_HELP_STRING([--enable-efiemu],
|
[AS_HELP_STRING([--enable-efiemu],
|
||||||
[build and install the efiemu runtimes (default=guessed)])])
|
[build and install the efiemu runtimes (default=guessed)])])
|
||||||
if test x"$enable_efiemu" = xno ; then
|
if test x"$enable_efiemu" = xno ; then
|
||||||
efiemu_excuse="explicitly disabled"
|
efiemu_excuse="explicitly disabled"
|
||||||
fi
|
fi
|
||||||
if test x"$target_os" = xcygwin ; then
|
if test x"$grub_cv_target_cc_link_format" = x-mi386pe || test x"$grub_cv_target_cc_link_format" = x-mi386pep ; then
|
||||||
efiemu_excuse="not available on cygwin"
|
efiemu_excuse="not available on cygwin"
|
||||||
fi
|
fi
|
||||||
if test x"$target_cpu" != xi386 ; then
|
if test x"$target_cpu" != xi386 ; then
|
||||||
@ -755,8 +760,11 @@ CFLAGS="$TARGET_CFLAGS"
|
|||||||
if test x"$target_cpu" = xi386 || test x"$target_cpu" = xx86_64; then
|
if test x"$target_cpu" = xi386 || test x"$target_cpu" = xx86_64; then
|
||||||
AC_CACHE_CHECK([for target linking format], [grub_cv_target_cc_link_format], [
|
AC_CACHE_CHECK([for target linking format], [grub_cv_target_cc_link_format], [
|
||||||
grub_cv_target_cc_link_format=unknown
|
grub_cv_target_cc_link_format=unknown
|
||||||
for format in -melf_${target_cpu} -melf_${target_cpu}_fbsd -melf_${target_cpu}_obsd -melf_${target_cpu}_haiku -m${target_cpu}pe -arch,${target_cpu}; do
|
for format in -melf_${target_cpu} -melf_${target_cpu}_fbsd -melf_${target_cpu}_obsd -melf_${target_cpu}_haiku -mi386pe -mi386pep -arch,${target_cpu}; do
|
||||||
if test x${target_cpu} != xi386 && test x$format = x${target_cpu}pe; then
|
if test x${target_cpu} != xi386 && test x$format = xi386pe; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
if test x${target_cpu} != xx86_64 && test x$format = xi386pep; then
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
CFLAGS="$TARGET_CFLAGS"
|
CFLAGS="$TARGET_CFLAGS"
|
||||||
@ -777,9 +785,12 @@ if test x"$target_cpu" = xi386 || test x"$target_cpu" = xx86_64; then
|
|||||||
AC_MSG_ERROR([no suitable link format found])
|
AC_MSG_ERROR([no suitable link format found])
|
||||||
fi
|
fi
|
||||||
TARGET_LDFLAGS="$TARGET_LDFLAGS -Wl,$grub_cv_target_cc_link_format"
|
TARGET_LDFLAGS="$TARGET_LDFLAGS -Wl,$grub_cv_target_cc_link_format"
|
||||||
if test x"$grub_cv_target_cc_link_format" = x-mi386pe; then
|
if test x"$grub_cv_target_cc_link_format" = x-mi386pe ; then
|
||||||
TARGET_OBJ2ELF='./build-grub-pe2elf';
|
TARGET_OBJ2ELF='./build-grub-pe2elf';
|
||||||
fi
|
fi
|
||||||
|
if test x"$grub_cv_target_cc_link_format" = x-mi386pep ; then
|
||||||
|
TARGET_OBJ2ELF='./build-grub-pep2elf';
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test x$grub_cv_target_cc_link_format = x-arch,i386 || test x$grub_cv_target_cc_link_format = x-arch,x86_64; then
|
if test x$grub_cv_target_cc_link_format = x-arch,i386 || test x$grub_cv_target_cc_link_format = x-arch,x86_64; then
|
||||||
@ -797,12 +808,12 @@ if test x$grub_cv_target_cc_link_format = x-arch,i386 || test x$grub_cv_target_c
|
|||||||
TARGET_IMG_LDFLAGS_AC='-nostdlib -static -Wl,-preload -Wl,-segalign,20'
|
TARGET_IMG_LDFLAGS_AC='-nostdlib -static -Wl,-preload -Wl,-segalign,20'
|
||||||
TARGET_IMG_BASE_LDOPT="-Wl,-image_base"
|
TARGET_IMG_BASE_LDOPT="-Wl,-image_base"
|
||||||
TARGET_LDFLAGS_OLDMAGIC=""
|
TARGET_LDFLAGS_OLDMAGIC=""
|
||||||
elif test x$grub_cv_target_cc_link_format = x-mi386pe && test x$platform = xpc; then
|
elif test x$grub_cv_target_cc_link_format = x-mi386pe || test x$grub_cv_target_cc_link_format = x-mi386pep ; then
|
||||||
TARGET_APPLE_LINKER=0
|
TARGET_APPLE_LINKER=0
|
||||||
TARGET_LDFLAGS_OLDMAGIC="-Wl,-N"
|
TARGET_LDFLAGS_OLDMAGIC="-Wl,-N"
|
||||||
TARGET_IMG_LDSCRIPT='$(top_srcdir)'"/${grub_coredir}/conf/i386-pc-cygwin-img-ld.sc"
|
TARGET_IMG_LDSCRIPT='$(top_srcdir)'"/${grub_coredir}/conf/i386-cygwin-img-ld.sc"
|
||||||
TARGET_IMG_LDFLAGS="-Wl,-T${TARGET_IMG_LDSCRIPT}"
|
TARGET_IMG_LDFLAGS="-Wl,-T${TARGET_IMG_LDSCRIPT}"
|
||||||
TARGET_IMG_LDFLAGS_AC="-Wl,-T${srcdir}/${grub_coredir}/conf/i386-pc-cygwin-img-ld.sc"
|
TARGET_IMG_LDFLAGS_AC="-Wl,-T${srcdir}/${grub_coredir}/conf/i386-cygwin-img-ld.sc"
|
||||||
TARGET_IMG_BASE_LDOPT="-Wl,-Ttext"
|
TARGET_IMG_BASE_LDOPT="-Wl,-Ttext"
|
||||||
TARGET_IMG_CFLAGS=
|
TARGET_IMG_CFLAGS=
|
||||||
else
|
else
|
||||||
@ -820,7 +831,7 @@ AC_SUBST(TARGET_LDFLAGS_OLDMAGIC)
|
|||||||
|
|
||||||
LDFLAGS="$TARGET_LDFLAGS"
|
LDFLAGS="$TARGET_LDFLAGS"
|
||||||
|
|
||||||
if test "$target_cpu" = x86_64; then
|
if test "$target_cpu" = x86_64 || test "$target_cpu-$platform" = sparc64-emu ; then
|
||||||
# Use large model to support 4G memory
|
# Use large model to support 4G memory
|
||||||
AC_CACHE_CHECK([whether option -mcmodel=large works], grub_cv_cc_mcmodel, [
|
AC_CACHE_CHECK([whether option -mcmodel=large works], grub_cv_cc_mcmodel, [
|
||||||
CFLAGS="$TARGET_CFLAGS -m64 -mcmodel=large"
|
CFLAGS="$TARGET_CFLAGS -m64 -mcmodel=large"
|
||||||
@ -830,6 +841,8 @@ if test "$target_cpu" = x86_64; then
|
|||||||
])
|
])
|
||||||
if test "x$grub_cv_cc_mcmodel" = xyes; then
|
if test "x$grub_cv_cc_mcmodel" = xyes; then
|
||||||
TARGET_CFLAGS="$TARGET_CFLAGS -mcmodel=large"
|
TARGET_CFLAGS="$TARGET_CFLAGS -mcmodel=large"
|
||||||
|
elif test "$target_cpu-$platform" = sparc64-emu; then
|
||||||
|
TARGET_CFLAGS="$TARGET_CFLAGS -mcmodel=medany"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -858,6 +871,29 @@ if test "x$target_cpu" = xarm; then
|
|||||||
if test "x$grub_cv_cc_mlong_calls" = xyes; then
|
if test "x$grub_cv_cc_mlong_calls" = xyes; then
|
||||||
TARGET_CFLAGS="$TARGET_CFLAGS -mlong-calls"
|
TARGET_CFLAGS="$TARGET_CFLAGS -mlong-calls"
|
||||||
fi
|
fi
|
||||||
|
AC_CACHE_CHECK([whether option -mthumb-interwork works], grub_cv_cc_mthumb_interwork, [
|
||||||
|
CFLAGS="$TARGET_CFLAGS -mthumb-interwork -Werror"
|
||||||
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
|
||||||
|
[grub_cv_cc_mthumb_interwork=yes],
|
||||||
|
[grub_cv_cc_mthumb_interwork=no])
|
||||||
|
])
|
||||||
|
if test "x$grub_cv_cc_mthumb_interwork" = xyes; then
|
||||||
|
TARGET_CFLAGS="$TARGET_CFLAGS -mthumb-interwork"
|
||||||
|
elif test "x$grub_cv_cc_target_clang" = xno ; then
|
||||||
|
AC_MSG_ERROR([your compiler doesn't support -mthumb-interwork])
|
||||||
|
else
|
||||||
|
CFLAGS="$TARGET_CFLAGS"
|
||||||
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
|
||||||
|
#if defined (__thumb__) && !defined (__thumb2__)
|
||||||
|
#error thumb without interworking
|
||||||
|
#endif
|
||||||
|
]])],
|
||||||
|
[no_interwork_ok=yes],
|
||||||
|
[no_interwork_ok=no])
|
||||||
|
if test x$no_interwork_ok = xno ; then
|
||||||
|
AC_MSG_ERROR([attempt to compile to thumb with no thumb interwork])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -948,7 +984,7 @@ CC="$TARGET_CC"
|
|||||||
if test "x$TARGET_APPLE_LINKER" = x1 ; then
|
if test "x$TARGET_APPLE_LINKER" = x1 ; then
|
||||||
CFLAGS="$TARGET_CFLAGS -nostdlib -static -Wno-error"
|
CFLAGS="$TARGET_CFLAGS -nostdlib -static -Wno-error"
|
||||||
else
|
else
|
||||||
CFLAGS="$TARGET_CFLAGS -nostdlib -Wl,--defsym,___main=0x8100 -Wno-error"
|
CFLAGS="$TARGET_CFLAGS -nostdlib -Wno-error"
|
||||||
fi
|
fi
|
||||||
CPPFLAGS="$TARGET_CPPFLAGS"
|
CPPFLAGS="$TARGET_CPPFLAGS"
|
||||||
if test x$target_cpu = xi386 || test x$target_cpu = xx86_64 || test "x$grub_cv_cc_target_clang" = xyes ; then
|
if test x$target_cpu = xi386 || test x$target_cpu = xx86_64 || test "x$grub_cv_cc_target_clang" = xyes ; then
|
||||||
@ -962,10 +998,11 @@ LIBS="$TARGET_LIBGCC"
|
|||||||
grub_ASM_USCORE
|
grub_ASM_USCORE
|
||||||
if test "x$TARGET_APPLE_LINKER" = x0 ; then
|
if test "x$TARGET_APPLE_LINKER" = x0 ; then
|
||||||
if test x$grub_cv_asm_uscore = xyes; then
|
if test x$grub_cv_asm_uscore = xyes; then
|
||||||
CFLAGS="$TARGET_CFLAGS -nostdlib -Wl,--defsym,_abort=_main"
|
DEFSYM="-Wl,--defsym,_abort=_main -Wl,--defsym,__main=_main"
|
||||||
else
|
else
|
||||||
CFLAGS="$TARGET_CFLAGS -nostdlib -Wl,--defsym,abort=main"
|
DEFSYM="-Wl,--defsym,abort=main -Wl,--defsym,_main=main -Wl,--defsym,__main=main"
|
||||||
fi
|
fi
|
||||||
|
CFLAGS="$TARGET_CFLAGS -nostdlib $DEFSYM"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check for libgcc symbols
|
# Check for libgcc symbols
|
||||||
@ -974,7 +1011,7 @@ AC_CHECK_FUNCS(__bswapsi2 __bswapdi2 __ashldi3 __ashrdi3 __lshrdi3 __ucmpdi2 _re
|
|||||||
if test "x$TARGET_APPLE_LINKER" = x1 ; then
|
if test "x$TARGET_APPLE_LINKER" = x1 ; then
|
||||||
CFLAGS="$TARGET_CFLAGS -nostdlib -static"
|
CFLAGS="$TARGET_CFLAGS -nostdlib -static"
|
||||||
else
|
else
|
||||||
CFLAGS="$TARGET_CFLAGS -nostdlib -Wl,--defsym,___main=0x8100"
|
CFLAGS="$TARGET_CFLAGS -nostdlib"
|
||||||
fi
|
fi
|
||||||
LIBS=""
|
LIBS=""
|
||||||
|
|
||||||
@ -988,7 +1025,7 @@ if test "x$target_cpu" = xi386; then
|
|||||||
if test "$platform" != emu && test "x$TARGET_APPLE_LINKER" != x1 ; then
|
if test "$platform" != emu && test "x$TARGET_APPLE_LINKER" != x1 ; then
|
||||||
if test ! -z "$TARGET_IMG_LDSCRIPT"; then
|
if test ! -z "$TARGET_IMG_LDSCRIPT"; then
|
||||||
# Check symbols provided by linker script.
|
# Check symbols provided by linker script.
|
||||||
CFLAGS="$TARGET_CFLAGS -nostdlib ${TARGET_IMG_LDFLAGS_AC} ${TARGET_IMG_BASE_LDOPT},0x8000 -Wl,--defsym,___main=0x8100"
|
CFLAGS="$TARGET_CFLAGS -nostdlib ${TARGET_IMG_LDFLAGS_AC} ${TARGET_IMG_BASE_LDOPT},0x8000"
|
||||||
fi
|
fi
|
||||||
grub_CHECK_BSS_START_SYMBOL
|
grub_CHECK_BSS_START_SYMBOL
|
||||||
grub_CHECK_END_SYMBOL
|
grub_CHECK_END_SYMBOL
|
||||||
@ -1607,7 +1644,6 @@ AC_SUBST(TARGET_LDFLAGS)
|
|||||||
AC_SUBST(TARGET_CPPFLAGS)
|
AC_SUBST(TARGET_CPPFLAGS)
|
||||||
AC_SUBST(TARGET_CCASFLAGS)
|
AC_SUBST(TARGET_CCASFLAGS)
|
||||||
|
|
||||||
AC_SUBST(TARGET_IMG_LDSCRIPT)
|
|
||||||
AC_SUBST(TARGET_IMG_LDFLAGS)
|
AC_SUBST(TARGET_IMG_LDFLAGS)
|
||||||
AC_SUBST(TARGET_IMG_CFLAGS)
|
AC_SUBST(TARGET_IMG_CFLAGS)
|
||||||
AC_SUBST(TARGET_IMG_BASE_LDOPT)
|
AC_SUBST(TARGET_IMG_BASE_LDOPT)
|
||||||
@ -1640,6 +1676,7 @@ AM_CONDITIONAL([COND_mips_loongson], [test x$target_cpu = xmipsel -a x$platform
|
|||||||
AM_CONDITIONAL([COND_mips_qemu_mips], [test "(" x$target_cpu = xmips -o x$target_cpu = xmipsel ")" -a x$platform = xqemu_mips])
|
AM_CONDITIONAL([COND_mips_qemu_mips], [test "(" x$target_cpu = xmips -o x$target_cpu = xmipsel ")" -a x$platform = xqemu_mips])
|
||||||
AM_CONDITIONAL([COND_mips_arc], [test "(" x$target_cpu = xmips -o x$target_cpu = xmipsel ")" -a x$platform = xarc])
|
AM_CONDITIONAL([COND_mips_arc], [test "(" x$target_cpu = xmips -o x$target_cpu = xmipsel ")" -a x$platform = xarc])
|
||||||
AM_CONDITIONAL([COND_sparc64_ieee1275], [test x$target_cpu = xsparc64 -a x$platform = xieee1275])
|
AM_CONDITIONAL([COND_sparc64_ieee1275], [test x$target_cpu = xsparc64 -a x$platform = xieee1275])
|
||||||
|
AM_CONDITIONAL([COND_sparc64_emu], [test x$target_cpu = xsparc64 -a x$platform = xemu])
|
||||||
AM_CONDITIONAL([COND_powerpc_ieee1275], [test x$target_cpu = xpowerpc -a x$platform = xieee1275])
|
AM_CONDITIONAL([COND_powerpc_ieee1275], [test x$target_cpu = xpowerpc -a x$platform = xieee1275])
|
||||||
AM_CONDITIONAL([COND_mips], [test x$target_cpu = xmips -o x$target_cpu = xmipsel])
|
AM_CONDITIONAL([COND_mips], [test x$target_cpu = xmips -o x$target_cpu = xmipsel])
|
||||||
AM_CONDITIONAL([COND_mipsel], [test x$target_cpu = xmipsel])
|
AM_CONDITIONAL([COND_mipsel], [test x$target_cpu = xmipsel])
|
||||||
@ -1650,13 +1687,7 @@ AM_CONDITIONAL([COND_arm_efi], [test x$target_cpu = xarm -a x$platform = xefi])
|
|||||||
AM_CONDITIONAL([COND_arm64], [test x$target_cpu = xarm64 ])
|
AM_CONDITIONAL([COND_arm64], [test x$target_cpu = xarm64 ])
|
||||||
AM_CONDITIONAL([COND_arm64_efi], [test x$target_cpu = xarm64 -a x$platform = xefi])
|
AM_CONDITIONAL([COND_arm64_efi], [test x$target_cpu = xarm64 -a x$platform = xefi])
|
||||||
|
|
||||||
AM_CONDITIONAL([COND_HOST_HURD], [test x$host_kernel = xhurd])
|
|
||||||
AM_CONDITIONAL([COND_HOST_LINUX], [test x$host_kernel = xlinux])
|
|
||||||
AM_CONDITIONAL([COND_HOST_NETBSD], [test x$host_kernel = xnetbsd])
|
|
||||||
AM_CONDITIONAL([COND_HOST_WINDOWS], [test x$host_kernel = xwindows])
|
AM_CONDITIONAL([COND_HOST_WINDOWS], [test x$host_kernel = xwindows])
|
||||||
AM_CONDITIONAL([COND_HOST_KFREEBSD], [test x$host_kernel = xkfreebsd])
|
|
||||||
AM_CONDITIONAL([COND_HOST_XNU], [test x$host_kernel = xxnu])
|
|
||||||
AM_CONDITIONAL([COND_HOST_ILLUMOS], [test x$host_kernel = xillumos])
|
|
||||||
|
|
||||||
AM_CONDITIONAL([COND_MAN_PAGES], [test x$cross_compiling = xno -a x$HELP2MAN != x])
|
AM_CONDITIONAL([COND_MAN_PAGES], [test x$cross_compiling = xno -a x$HELP2MAN != x])
|
||||||
AM_CONDITIONAL([COND_GRUB_EMU_USB], [test x$enable_grub_emu_usb = xyes])
|
AM_CONDITIONAL([COND_GRUB_EMU_USB], [test x$enable_grub_emu_usb = xyes])
|
||||||
@ -1679,7 +1710,6 @@ AM_CONDITIONAL([COND_ENABLE_BOOT_TIME_STATS], [test x$BOOT_TIME_STATS = x1])
|
|||||||
AM_CONDITIONAL([COND_HAVE_CXX], [test x$HAVE_CXX = xyes])
|
AM_CONDITIONAL([COND_HAVE_CXX], [test x$HAVE_CXX = xyes])
|
||||||
|
|
||||||
AM_CONDITIONAL([COND_HAVE_ASM_USCORE], [test x$HAVE_ASM_USCORE = x1])
|
AM_CONDITIONAL([COND_HAVE_ASM_USCORE], [test x$HAVE_ASM_USCORE = x1])
|
||||||
AM_CONDITIONAL([COND_CYGWIN], [test x$target_os = xcygwin])
|
|
||||||
AM_CONDITIONAL([COND_STARFIELD], [test "x$starfield_excuse" = x])
|
AM_CONDITIONAL([COND_STARFIELD], [test "x$starfield_excuse" = x])
|
||||||
AM_CONDITIONAL([COND_HAVE_EXEC], [test "x$have_exec" = xy])
|
AM_CONDITIONAL([COND_HAVE_EXEC], [test "x$have_exec" = xy])
|
||||||
|
|
||||||
|
4
debian/patches/core_in_fs.patch
vendored
4
debian/patches/core_in_fs.patch
vendored
@ -11,7 +11,7 @@ Index: b/util/setup.c
|
|||||||
/* On SPARC this program fills in various fields inside of the 'boot' and 'core'
|
/* On SPARC this program fills in various fields inside of the 'boot' and 'core'
|
||||||
* image files.
|
* image files.
|
||||||
*
|
*
|
||||||
@@ -577,6 +579,8 @@
|
@@ -590,6 +592,8 @@
|
||||||
|
|
||||||
grub_free (sectors);
|
grub_free (sectors);
|
||||||
|
|
||||||
@ -20,7 +20,7 @@ Index: b/util/setup.c
|
|||||||
goto finish;
|
goto finish;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -619,6 +623,10 @@
|
@@ -632,6 +636,10 @@
|
||||||
/* The core image must be put on a filesystem unfortunately. */
|
/* The core image must be put on a filesystem unfortunately. */
|
||||||
grub_util_info ("will leave the core image on the filesystem");
|
grub_util_info ("will leave the core image on the filesystem");
|
||||||
|
|
||||||
|
4
debian/patches/default_grub_d.patch
vendored
4
debian/patches/default_grub_d.patch
vendored
@ -2,7 +2,7 @@ Description: Read /etc/default/grub.d/*.cfg after /etc/default/grub
|
|||||||
Author: Colin Watson <cjwatson@ubuntu.com>
|
Author: Colin Watson <cjwatson@ubuntu.com>
|
||||||
Bug-Ubuntu: https://bugs.launchpad.net/bugs/901600
|
Bug-Ubuntu: https://bugs.launchpad.net/bugs/901600
|
||||||
Forwarded: no
|
Forwarded: no
|
||||||
Last-Update: 2013-12-08
|
Last-Update: 2013-12-20
|
||||||
|
|
||||||
Index: b/grub-core/osdep/unix/config.c
|
Index: b/grub-core/osdep/unix/config.c
|
||||||
===================================================================
|
===================================================================
|
||||||
@ -92,7 +92,7 @@ Index: b/util/grub-mkconfig.in
|
|||||||
===================================================================
|
===================================================================
|
||||||
--- a/util/grub-mkconfig.in
|
--- a/util/grub-mkconfig.in
|
||||||
+++ b/util/grub-mkconfig.in
|
+++ b/util/grub-mkconfig.in
|
||||||
@@ -153,6 +153,11 @@
|
@@ -162,6 +162,11 @@
|
||||||
if test -f ${sysconfdir}/default/grub ; then
|
if test -f ${sysconfdir}/default/grub ; then
|
||||||
. ${sysconfdir}/default/grub
|
. ${sysconfdir}/default/grub
|
||||||
fi
|
fi
|
||||||
|
6
debian/patches/dpkg_version_comparison.patch
vendored
6
debian/patches/dpkg_version_comparison.patch
vendored
@ -1,13 +1,13 @@
|
|||||||
Description: Improve handling of Debian kernel version numbers
|
Description: Improve handling of Debian kernel version numbers
|
||||||
Author: Robert Millan <rmh@aybabtu.com>
|
Author: Robert Millan <rmh@aybabtu.com>
|
||||||
Forwarded: not-needed
|
Forwarded: not-needed
|
||||||
Last-Update: 2011-04-21
|
Last-Update: 2013-12-20
|
||||||
|
|
||||||
Index: b/util/grub-mkconfig_lib.in
|
Index: b/util/grub-mkconfig_lib.in
|
||||||
===================================================================
|
===================================================================
|
||||||
--- a/util/grub-mkconfig_lib.in
|
--- a/util/grub-mkconfig_lib.in
|
||||||
+++ b/util/grub-mkconfig_lib.in
|
+++ b/util/grub-mkconfig_lib.in
|
||||||
@@ -235,8 +235,9 @@
|
@@ -238,8 +238,9 @@
|
||||||
|
|
||||||
version_test_gt ()
|
version_test_gt ()
|
||||||
{
|
{
|
||||||
@ -19,7 +19,7 @@ Index: b/util/grub-mkconfig_lib.in
|
|||||||
version_test_gt_cmp=gt
|
version_test_gt_cmp=gt
|
||||||
if [ "x$version_test_gt_b" = "x" ] ; then
|
if [ "x$version_test_gt_b" = "x" ] ; then
|
||||||
return 0
|
return 0
|
||||||
@@ -246,7 +247,7 @@
|
@@ -249,7 +250,7 @@
|
||||||
*.old:*) version_test_gt_a="`echo -n "$version_test_gt_a" | sed -e 's/\.old$//'`" ; version_test_gt_cmp=gt ;;
|
*.old:*) version_test_gt_a="`echo -n "$version_test_gt_a" | sed -e 's/\.old$//'`" ; version_test_gt_cmp=gt ;;
|
||||||
*:*.old) version_test_gt_b="`echo -n "$version_test_gt_b" | sed -e 's/\.old$//'`" ; version_test_gt_cmp=ge ;;
|
*:*.old) version_test_gt_b="`echo -n "$version_test_gt_b" | sed -e 's/\.old$//'`" ; version_test_gt_cmp=ge ;;
|
||||||
esac
|
esac
|
||||||
|
8
debian/patches/gfxpayload_dynamic.patch
vendored
8
debian/patches/gfxpayload_dynamic.patch
vendored
@ -5,13 +5,13 @@ Description: Add configure option to enable gfxpayload=keep dynamically
|
|||||||
Author: Evan Broder <evan@ebroder.net>
|
Author: Evan Broder <evan@ebroder.net>
|
||||||
Author: Colin Watson <cjwatson@ubuntu.com>
|
Author: Colin Watson <cjwatson@ubuntu.com>
|
||||||
Forwarded: no
|
Forwarded: no
|
||||||
Last-Update: 2013-12-08
|
Last-Update: 2013-12-20
|
||||||
|
|
||||||
Index: b/configure.ac
|
Index: b/configure.ac
|
||||||
===================================================================
|
===================================================================
|
||||||
--- a/configure.ac
|
--- a/configure.ac
|
||||||
+++ b/configure.ac
|
+++ b/configure.ac
|
||||||
@@ -1534,6 +1534,17 @@
|
@@ -1571,6 +1571,17 @@
|
||||||
fi
|
fi
|
||||||
AC_SUBST([QUICK_BOOT])
|
AC_SUBST([QUICK_BOOT])
|
||||||
|
|
||||||
@ -212,7 +212,7 @@ Index: b/util/grub.d/10_linux.in
|
|||||||
|
|
||||||
. "@datadir@/@PACKAGE@/grub-mkconfig_lib"
|
. "@datadir@/@PACKAGE@/grub-mkconfig_lib"
|
||||||
|
|
||||||
@@ -133,9 +134,10 @@
|
@@ -158,9 +159,10 @@
|
||||||
if [ "x$GRUB_GFXPAYLOAD_LINUX" != xtext ]; then
|
if [ "x$GRUB_GFXPAYLOAD_LINUX" != xtext ]; then
|
||||||
echo " load_video" | sed "s/^/$submenu_indentation/"
|
echo " load_video" | sed "s/^/$submenu_indentation/"
|
||||||
fi
|
fi
|
||||||
@ -226,7 +226,7 @@ Index: b/util/grub.d/10_linux.in
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo " insmod gzio" | sed "s/^/$submenu_indentation/"
|
echo " insmod gzio" | sed "s/^/$submenu_indentation/"
|
||||||
@@ -208,6 +210,35 @@
|
@@ -221,6 +223,35 @@
|
||||||
boot_device_id=
|
boot_device_id=
|
||||||
title_correction_code=
|
title_correction_code=
|
||||||
|
|
||||||
|
4
debian/patches/gfxpayload_keep_default.patch
vendored
4
debian/patches/gfxpayload_keep_default.patch
vendored
@ -11,13 +11,13 @@ Description: Disable gfxpayload=keep by default
|
|||||||
Author: Colin Watson <cjwatson@debian.org>
|
Author: Colin Watson <cjwatson@debian.org>
|
||||||
Bug-Debian: http://bugs.debian.org/567245
|
Bug-Debian: http://bugs.debian.org/567245
|
||||||
Forwarded: no
|
Forwarded: no
|
||||||
Last-Update: 2013-12-08
|
Last-Update: 2013-12-20
|
||||||
|
|
||||||
Index: b/util/grub.d/10_linux.in
|
Index: b/util/grub.d/10_linux.in
|
||||||
===================================================================
|
===================================================================
|
||||||
--- a/util/grub.d/10_linux.in
|
--- a/util/grub.d/10_linux.in
|
||||||
+++ b/util/grub.d/10_linux.in
|
+++ b/util/grub.d/10_linux.in
|
||||||
@@ -102,10 +102,6 @@
|
@@ -127,10 +127,6 @@
|
||||||
# FIXME: We need an interface to select vesafb in case efifb can't be used.
|
# FIXME: We need an interface to select vesafb in case efifb can't be used.
|
||||||
if [ "x$GRUB_GFXPAYLOAD_LINUX" = x ]; then
|
if [ "x$GRUB_GFXPAYLOAD_LINUX" = x ]; then
|
||||||
echo " load_video" | sed "s/^/$submenu_indentation/"
|
echo " load_video" | sed "s/^/$submenu_indentation/"
|
||||||
|
2
debian/patches/grub.cfg_400.patch
vendored
2
debian/patches/grub.cfg_400.patch
vendored
@ -2,7 +2,7 @@ Index: b/util/grub-mkconfig.in
|
|||||||
===================================================================
|
===================================================================
|
||||||
--- a/util/grub-mkconfig.in
|
--- a/util/grub-mkconfig.in
|
||||||
+++ b/util/grub-mkconfig.in
|
+++ b/util/grub-mkconfig.in
|
||||||
@@ -260,6 +260,10 @@
|
@@ -298,6 +298,10 @@
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
|
24
debian/patches/install_efi_fallback.patch
vendored
24
debian/patches/install_efi_fallback.patch
vendored
@ -5,26 +5,27 @@ Description: Fall back to i386-pc if booted using EFI but -efi is missing
|
|||||||
better than returning a confusing error.
|
better than returning a confusing error.
|
||||||
Author: Colin Watson <cjwatson@ubuntu.com>
|
Author: Colin Watson <cjwatson@ubuntu.com>
|
||||||
Forwarded: no
|
Forwarded: no
|
||||||
Last-Update: 2013-11-19
|
Last-Update: 2013-12-20
|
||||||
|
|
||||||
Index: b/grub-core/osdep/linux/platform.c
|
Index: b/grub-core/osdep/linux/platform.c
|
||||||
===================================================================
|
===================================================================
|
||||||
--- a/grub-core/osdep/linux/platform.c
|
--- a/grub-core/osdep/linux/platform.c
|
||||||
+++ b/grub-core/osdep/linux/platform.c
|
+++ b/grub-core/osdep/linux/platform.c
|
||||||
@@ -19,9 +19,11 @@
|
@@ -19,10 +19,12 @@
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
#include <grub/util/install.h>
|
#include <grub/util/install.h>
|
||||||
+#include <grub/emu/config.h>
|
+#include <grub/emu/config.h>
|
||||||
#include <grub/emu/exec.h>
|
#include <grub/emu/exec.h>
|
||||||
|
#include <grub/emu/misc.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <dirent.h>
|
#include <dirent.h>
|
||||||
+#include <stdlib.h>
|
+#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include <sys/utsname.h>
|
#include <sys/utsname.h>
|
||||||
@@ -73,12 +75,24 @@
|
@@ -76,11 +78,24 @@
|
||||||
"efivars", NULL });
|
grub_util_info ("Looking for /sys/firmware/efi ..");
|
||||||
if (is_not_empty_directory ("/sys/firmware/efi"))
|
if (is_not_empty_directory ("/sys/firmware/efi"))
|
||||||
{
|
{
|
||||||
+ const char *pkglibdir = grub_util_get_pkglibdir ();
|
+ const char *pkglibdir = grub_util_get_pkglibdir ();
|
||||||
@ -32,11 +33,11 @@ Index: b/grub-core/osdep/linux/platform.c
|
|||||||
+ char *pd;
|
+ char *pd;
|
||||||
+ int found;
|
+ int found;
|
||||||
+
|
+
|
||||||
|
grub_util_info ("...found");
|
||||||
if (is_64_kernel ())
|
if (is_64_kernel ())
|
||||||
- return "x86_64-efi";
|
- return "x86_64-efi";
|
||||||
+ platform = "x86_64-efi";
|
+ platform = "x86_64-efi";
|
||||||
else
|
+ else
|
||||||
- return "i386-efi";
|
|
||||||
+ platform = "i386-efi";
|
+ platform = "i386-efi";
|
||||||
+
|
+
|
||||||
+ pd = grub_util_path_concat (2, pkglibdir, platform);
|
+ pd = grub_util_path_concat (2, pkglibdir, platform);
|
||||||
@ -44,10 +45,9 @@ Index: b/grub-core/osdep/linux/platform.c
|
|||||||
+ free (pd);
|
+ free (pd);
|
||||||
+ if (found)
|
+ if (found)
|
||||||
+ return platform;
|
+ return platform;
|
||||||
|
else
|
||||||
|
- return "i386-efi";
|
||||||
|
+ grub_util_info ("... but %s platform not available", platform);
|
||||||
}
|
}
|
||||||
- else if (is_not_empty_directory ("/proc/device-tree"))
|
|
||||||
+
|
grub_util_info ("... not found. Looking for /proc/device-tree ..");
|
||||||
+ if (is_not_empty_directory ("/proc/device-tree"))
|
|
||||||
return "i386-ieee1275";
|
|
||||||
else
|
|
||||||
return "i386-pc";
|
|
||||||
|
@ -5,13 +5,13 @@ Description: Cope with Kubuntu setting GRUB_DISTRIBUTOR
|
|||||||
Author: Colin Watson <cjwatson@ubuntu.com>
|
Author: Colin Watson <cjwatson@ubuntu.com>
|
||||||
Bug-Ubuntu: https://bugs.launchpad.net/bugs/1242417
|
Bug-Ubuntu: https://bugs.launchpad.net/bugs/1242417
|
||||||
Forwarded: not-needed
|
Forwarded: not-needed
|
||||||
Last-Update: 2013-12-08
|
Last-Update: 2013-12-20
|
||||||
|
|
||||||
Index: b/util/grub-install.c
|
Index: b/util/grub-install.c
|
||||||
===================================================================
|
===================================================================
|
||||||
--- a/util/grub-install.c
|
--- a/util/grub-install.c
|
||||||
+++ b/util/grub-install.c
|
+++ b/util/grub-install.c
|
||||||
@@ -950,6 +950,8 @@
|
@@ -1075,6 +1075,8 @@
|
||||||
*/
|
*/
|
||||||
char *t;
|
char *t;
|
||||||
efi_distributor = bootloader_id;
|
efi_distributor = bootloader_id;
|
||||||
|
44
debian/patches/install_signed.patch
vendored
44
debian/patches/install_signed.patch
vendored
@ -3,32 +3,32 @@ Author: Colin Watson <cjwatson@ubuntu.com>
|
|||||||
Author: Stéphane Graber <stgraber@ubuntu.com>
|
Author: Stéphane Graber <stgraber@ubuntu.com>
|
||||||
Author: Steve Langasek <steve.langasek@ubuntu.com>
|
Author: Steve Langasek <steve.langasek@ubuntu.com>
|
||||||
Forwarded: no
|
Forwarded: no
|
||||||
Last-Update: 2013-12-08
|
Last-Update: 2013-12-20
|
||||||
|
|
||||||
Index: b/util/grub-install.c
|
Index: b/util/grub-install.c
|
||||||
===================================================================
|
===================================================================
|
||||||
--- a/util/grub-install.c
|
--- a/util/grub-install.c
|
||||||
+++ b/util/grub-install.c
|
+++ b/util/grub-install.c
|
||||||
@@ -69,6 +69,7 @@
|
@@ -76,6 +76,7 @@
|
||||||
static FILE * load_cfg_f = NULL;
|
static char *label_bgcolor;
|
||||||
static char *load_cfg;
|
static char *product_version;
|
||||||
static int install_bootsector = 1;
|
static int add_rs_codes = 1;
|
||||||
+static int uefi_secure_boot = 1;
|
+static int uefi_secure_boot = 1;
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
@@ -94,7 +95,9 @@
|
@@ -107,7 +108,9 @@
|
||||||
OPTION_DEBUG_IMAGE,
|
OPTION_LABEL_FONT,
|
||||||
OPTION_NO_FLOPPY,
|
OPTION_LABEL_COLOR,
|
||||||
OPTION_DISK_MODULE,
|
OPTION_LABEL_BGCOLOR,
|
||||||
- OPTION_NO_BOOTSECTOR
|
- OPTION_PRODUCT_VERSION
|
||||||
+ OPTION_NO_BOOTSECTOR,
|
+ OPTION_PRODUCT_VERSION,
|
||||||
+ OPTION_UEFI_SECURE_BOOT,
|
+ OPTION_UEFI_SECURE_BOOT,
|
||||||
+ OPTION_NO_UEFI_SECURE_BOOT
|
+ OPTION_NO_UEFI_SECURE_BOOT
|
||||||
};
|
};
|
||||||
|
|
||||||
static int fs_probe = 1;
|
static int fs_probe = 1;
|
||||||
@@ -190,6 +193,14 @@
|
@@ -231,6 +234,14 @@
|
||||||
bootloader_id = xstrdup (arg);
|
bootloader_id = xstrdup (arg);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
@ -43,10 +43,10 @@ Index: b/util/grub-install.c
|
|||||||
case ARGP_KEY_ARG:
|
case ARGP_KEY_ARG:
|
||||||
if (install_device)
|
if (install_device)
|
||||||
grub_util_error ("%s", _("More than one install device?"));
|
grub_util_error ("%s", _("More than one install device?"));
|
||||||
@@ -250,6 +261,14 @@
|
@@ -300,6 +311,14 @@
|
||||||
N_("the ID of bootloader. This option is only available on EFI."), 2},
|
{"label-color", OPTION_LABEL_COLOR, N_("COLOR"), 0, N_("use COLOR for label"), 2},
|
||||||
{"efi-directory", OPTION_EFI_DIRECTORY, N_("DIR"), 0,
|
{"label-bgcolor", OPTION_LABEL_BGCOLOR, N_("COLOR"), 0, N_("use COLOR for label background"), 2},
|
||||||
N_("use DIR as the EFI System Partition root."), 2},
|
{"product-version", OPTION_PRODUCT_VERSION, N_("STRING"), 0, N_("use STRING as product version"), 2},
|
||||||
+ {"uefi-secure-boot", OPTION_UEFI_SECURE_BOOT, 0, 0,
|
+ {"uefi-secure-boot", OPTION_UEFI_SECURE_BOOT, 0, 0,
|
||||||
+ N_("install an image usable with UEFI Secure Boot. "
|
+ N_("install an image usable with UEFI Secure Boot. "
|
||||||
+ "This option is only available on EFI and if the grub-efi-amd64-signed "
|
+ "This option is only available on EFI and if the grub-efi-amd64-signed "
|
||||||
@ -58,7 +58,7 @@ Index: b/util/grub-install.c
|
|||||||
{0, 0, 0, 0, 0, 0}
|
{0, 0, 0, 0, 0, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -694,7 +713,8 @@
|
@@ -801,7 +820,8 @@
|
||||||
{
|
{
|
||||||
int is_efi = 0;
|
int is_efi = 0;
|
||||||
const char *efi_distributor = NULL;
|
const char *efi_distributor = NULL;
|
||||||
@ -68,7 +68,7 @@ Index: b/util/grub-install.c
|
|||||||
char **grub_devices;
|
char **grub_devices;
|
||||||
grub_fs_t grub_fs;
|
grub_fs_t grub_fs;
|
||||||
grub_device_t grub_dev = NULL;
|
grub_device_t grub_dev = NULL;
|
||||||
@@ -930,6 +950,31 @@
|
@@ -1055,6 +1075,31 @@
|
||||||
*/
|
*/
|
||||||
char *t;
|
char *t;
|
||||||
efi_distributor = bootloader_id;
|
efi_distributor = bootloader_id;
|
||||||
@ -100,7 +100,7 @@ Index: b/util/grub-install.c
|
|||||||
if (removable)
|
if (removable)
|
||||||
{
|
{
|
||||||
/* The specification makes stricter requirements of removable
|
/* The specification makes stricter requirements of removable
|
||||||
@@ -938,54 +983,16 @@
|
@@ -1063,54 +1108,16 @@
|
||||||
must have a specific file name depending on the architecture.
|
must have a specific file name depending on the architecture.
|
||||||
*/
|
*/
|
||||||
efi_distributor = "BOOT";
|
efi_distributor = "BOOT";
|
||||||
@ -159,7 +159,7 @@ Index: b/util/grub-install.c
|
|||||||
}
|
}
|
||||||
t = grub_util_path_concat (3, efidir, "EFI", efi_distributor);
|
t = grub_util_path_concat (3, efidir, "EFI", efi_distributor);
|
||||||
free (efidir);
|
free (efidir);
|
||||||
@@ -1120,6 +1127,31 @@
|
@@ -1315,6 +1322,31 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -191,7 +191,7 @@ Index: b/util/grub-install.c
|
|||||||
if (!have_abstractions)
|
if (!have_abstractions)
|
||||||
{
|
{
|
||||||
if ((disk_module && grub_strcmp (disk_module, "biosdisk") != 0)
|
if ((disk_module && grub_strcmp (disk_module, "biosdisk") != 0)
|
||||||
@@ -1127,7 +1159,8 @@
|
@@ -1322,7 +1354,8 @@
|
||||||
|| (!install_drive
|
|| (!install_drive
|
||||||
&& platform != GRUB_INSTALL_PLATFORM_POWERPC_IEEE1275)
|
&& platform != GRUB_INSTALL_PLATFORM_POWERPC_IEEE1275)
|
||||||
|| (install_drive && !is_same_disk (grub_drives[0], install_drive))
|
|| (install_drive && !is_same_disk (grub_drives[0], install_drive))
|
||||||
@ -201,7 +201,7 @@ Index: b/util/grub-install.c
|
|||||||
{
|
{
|
||||||
char *uuid = NULL;
|
char *uuid = NULL;
|
||||||
/* generic method (used on coreboot and ata mod). */
|
/* generic method (used on coreboot and ata mod). */
|
||||||
@@ -1557,7 +1590,47 @@
|
@@ -1843,7 +1876,47 @@
|
||||||
case GRUB_INSTALL_PLATFORM_IA64_EFI:
|
case GRUB_INSTALL_PLATFORM_IA64_EFI:
|
||||||
{
|
{
|
||||||
char *dst = grub_util_path_concat (2, efidir, efi_file);
|
char *dst = grub_util_path_concat (2, efidir, efi_file);
|
||||||
|
10
debian/patches/install_stage2_confusion.patch
vendored
10
debian/patches/install_stage2_confusion.patch
vendored
@ -2,24 +2,24 @@ Description: If GRUB Legacy is still around, tell packaging to ignore it
|
|||||||
Author: Colin Watson <cjwatson@debian.org>
|
Author: Colin Watson <cjwatson@debian.org>
|
||||||
Bug-Debian: http://bugs.debian.org/586143
|
Bug-Debian: http://bugs.debian.org/586143
|
||||||
Forwarded: not-needed
|
Forwarded: not-needed
|
||||||
Last-Update: 2013-12-08
|
Last-Update: 2013-12-20
|
||||||
|
|
||||||
Index: b/util/grub-install.c
|
Index: b/util/grub-install.c
|
||||||
===================================================================
|
===================================================================
|
||||||
--- a/util/grub-install.c
|
--- a/util/grub-install.c
|
||||||
+++ b/util/grub-install.c
|
+++ b/util/grub-install.c
|
||||||
@@ -41,6 +41,7 @@
|
@@ -42,6 +42,7 @@
|
||||||
#include <grub/gpt_partition.h>
|
|
||||||
#include <grub/emu/config.h>
|
#include <grub/emu/config.h>
|
||||||
#include <grub/util/ofpath.h>
|
#include <grub/util/ofpath.h>
|
||||||
|
#include <grub/hfsplus.h>
|
||||||
+#include <grub/emu/hostfile.h>
|
+#include <grub/emu/hostfile.h>
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
@@ -1450,6 +1451,19 @@
|
@@ -1648,6 +1649,19 @@
|
||||||
grub_util_bios_setup (platdir, "boot.img", "core.img",
|
grub_util_bios_setup (platdir, "boot.img", "core.img",
|
||||||
install_drive, force,
|
install_drive, force,
|
||||||
fs_probe, allow_floppy);
|
fs_probe, allow_floppy, add_rs_codes);
|
||||||
+
|
+
|
||||||
+ /* If vestiges of GRUB Legacy still exist, tell the Debian packaging
|
+ /* If vestiges of GRUB Legacy still exist, tell the Debian packaging
|
||||||
+ that they can ignore them. */
|
+ that they can ignore them. */
|
||||||
|
8
debian/patches/linuxefi.patch
vendored
8
debian/patches/linuxefi.patch
vendored
@ -2,13 +2,13 @@ Description: Add "linuxefi" loader which avoids ExitBootServices
|
|||||||
Author: Matthew Garrett <mjg@redhat.com>
|
Author: Matthew Garrett <mjg@redhat.com>
|
||||||
Origin: vendor, http://pkgs.fedoraproject.org/cgit/grub2.git/tree/grub2-linuxefi.patch
|
Origin: vendor, http://pkgs.fedoraproject.org/cgit/grub2.git/tree/grub2-linuxefi.patch
|
||||||
Forwarded: no
|
Forwarded: no
|
||||||
Last-Update: 2013-12-08
|
Last-Update: 2013-12-20
|
||||||
|
|
||||||
Index: b/grub-core/Makefile.core.def
|
Index: b/grub-core/Makefile.core.def
|
||||||
===================================================================
|
===================================================================
|
||||||
--- a/grub-core/Makefile.core.def
|
--- a/grub-core/Makefile.core.def
|
||||||
+++ b/grub-core/Makefile.core.def
|
+++ b/grub-core/Makefile.core.def
|
||||||
@@ -1691,6 +1691,14 @@
|
@@ -1705,6 +1705,14 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
module = {
|
module = {
|
||||||
@ -27,7 +27,7 @@ Index: b/grub-core/kern/efi/mm.c
|
|||||||
===================================================================
|
===================================================================
|
||||||
--- a/grub-core/kern/efi/mm.c
|
--- a/grub-core/kern/efi/mm.c
|
||||||
+++ b/grub-core/kern/efi/mm.c
|
+++ b/grub-core/kern/efi/mm.c
|
||||||
@@ -53,6 +53,38 @@
|
@@ -49,6 +49,38 @@
|
||||||
static grub_efi_uint32_t finish_desc_version;
|
static grub_efi_uint32_t finish_desc_version;
|
||||||
int grub_efi_is_finished = 0;
|
int grub_efi_is_finished = 0;
|
||||||
|
|
||||||
@ -465,6 +465,6 @@ Index: b/include/grub/i386/linux.h
|
|||||||
grub_uint64_t pref_address;
|
grub_uint64_t pref_address;
|
||||||
grub_uint32_t init_size;
|
grub_uint32_t init_size;
|
||||||
+ grub_uint32_t handover_offset;
|
+ grub_uint32_t handover_offset;
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
/* Boot parameters for Linux based on 2.6.12. This is used by the setup
|
/* Boot parameters for Linux based on 2.6.12. This is used by the setup
|
||||||
|
4
debian/patches/linuxefi_amd64_only.patch
vendored
4
debian/patches/linuxefi_amd64_only.patch
vendored
@ -1,13 +1,13 @@
|
|||||||
Description: Only build linuxefi on amd64
|
Description: Only build linuxefi on amd64
|
||||||
Author: Colin Watson <cjwatson@ubuntu.com>
|
Author: Colin Watson <cjwatson@ubuntu.com>
|
||||||
Forwarded: no
|
Forwarded: no
|
||||||
Last-Update: 2013-12-08
|
Last-Update: 2013-12-20
|
||||||
|
|
||||||
Index: b/grub-core/Makefile.core.def
|
Index: b/grub-core/Makefile.core.def
|
||||||
===================================================================
|
===================================================================
|
||||||
--- a/grub-core/Makefile.core.def
|
--- a/grub-core/Makefile.core.def
|
||||||
+++ b/grub-core/Makefile.core.def
|
+++ b/grub-core/Makefile.core.def
|
||||||
@@ -1694,7 +1694,6 @@
|
@@ -1708,7 +1708,6 @@
|
||||||
name = linuxefi;
|
name = linuxefi;
|
||||||
efi = loader/i386/efi/linux.c;
|
efi = loader/i386/efi/linux.c;
|
||||||
efi = lib/cmdline.c;
|
efi = lib/cmdline.c;
|
||||||
|
@ -2,7 +2,7 @@ Description: If running under UEFI secure boot, attempt to use linuxefi loader
|
|||||||
Author: Colin Watson <cjwatson@ubuntu.com>
|
Author: Colin Watson <cjwatson@ubuntu.com>
|
||||||
Author: Steve Langasek <steve.langasek@canonical.com>
|
Author: Steve Langasek <steve.langasek@canonical.com>
|
||||||
Forwarded: no
|
Forwarded: no
|
||||||
Last-Update: 2013-11-14
|
Last-Update: 2013-12-20
|
||||||
|
|
||||||
Index: b/grub-core/loader/i386/efi/linux.c
|
Index: b/grub-core/loader/i386/efi/linux.c
|
||||||
===================================================================
|
===================================================================
|
||||||
@ -30,7 +30,7 @@ Index: b/grub-core/loader/i386/linux.c
|
|||||||
static grub_efi_uintn_t efi_mmap_size;
|
static grub_efi_uintn_t efi_mmap_size;
|
||||||
#else
|
#else
|
||||||
static const grub_size_t efi_mmap_size = 0;
|
static const grub_size_t efi_mmap_size = 0;
|
||||||
@@ -688,6 +690,41 @@
|
@@ -690,6 +692,41 @@
|
||||||
|
|
||||||
grub_dl_ref (my_mod);
|
grub_dl_ref (my_mod);
|
||||||
|
|
||||||
@ -72,7 +72,7 @@ Index: b/grub-core/loader/i386/linux.c
|
|||||||
if (argc == 0)
|
if (argc == 0)
|
||||||
{
|
{
|
||||||
grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected"));
|
grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected"));
|
||||||
@@ -1050,6 +1087,12 @@
|
@@ -1052,6 +1089,12 @@
|
||||||
grub_err_t err;
|
grub_err_t err;
|
||||||
struct grub_linux_initrd_context initrd_ctx;
|
struct grub_linux_initrd_context initrd_ctx;
|
||||||
|
|
||||||
|
14
debian/patches/maybe_quiet.patch
vendored
14
debian/patches/maybe_quiet.patch
vendored
@ -25,7 +25,7 @@ Author: Colin Watson <cjwatson@ubuntu.com>
|
|||||||
Bug-Ubuntu: https://bugs.launchpad.net/bugs/386922
|
Bug-Ubuntu: https://bugs.launchpad.net/bugs/386922
|
||||||
Bug-Ubuntu: https://bugs.launchpad.net/bugs/861048
|
Bug-Ubuntu: https://bugs.launchpad.net/bugs/861048
|
||||||
Forwarded: (partial) http://lists.gnu.org/archive/html/grub-devel/2009-09/msg00056.html
|
Forwarded: (partial) http://lists.gnu.org/archive/html/grub-devel/2009-09/msg00056.html
|
||||||
Last-Update: 2013-12-08
|
Last-Update: 2013-12-20
|
||||||
|
|
||||||
Index: b/config.h.in
|
Index: b/config.h.in
|
||||||
===================================================================
|
===================================================================
|
||||||
@ -44,7 +44,7 @@ Index: b/configure.ac
|
|||||||
===================================================================
|
===================================================================
|
||||||
--- a/configure.ac
|
--- a/configure.ac
|
||||||
+++ b/configure.ac
|
+++ b/configure.ac
|
||||||
@@ -1512,6 +1512,17 @@
|
@@ -1549,6 +1549,17 @@
|
||||||
fi
|
fi
|
||||||
AC_SUBST([UBUNTU_RECOVERY])
|
AC_SUBST([UBUNTU_RECOVERY])
|
||||||
|
|
||||||
@ -62,7 +62,7 @@ Index: b/configure.ac
|
|||||||
LIBS=""
|
LIBS=""
|
||||||
|
|
||||||
AC_SUBST([FONT_SOURCE])
|
AC_SUBST([FONT_SOURCE])
|
||||||
@@ -1767,5 +1778,10 @@
|
@@ -1797,5 +1808,10 @@
|
||||||
else
|
else
|
||||||
echo "With liblzma from $LIBLZMA (support for XZ-compressed mips images)"
|
echo "With liblzma from $LIBLZMA (support for XZ-compressed mips images)"
|
||||||
fi
|
fi
|
||||||
@ -246,7 +246,7 @@ Index: b/grub-core/normal/main.c
|
|||||||
===================================================================
|
===================================================================
|
||||||
--- a/grub-core/normal/main.c
|
--- a/grub-core/normal/main.c
|
||||||
+++ b/grub-core/normal/main.c
|
+++ b/grub-core/normal/main.c
|
||||||
@@ -428,6 +428,15 @@
|
@@ -382,6 +382,15 @@
|
||||||
grub_normal_read_line_real (char **line, int cont, int nested)
|
grub_normal_read_line_real (char **line, int cont, int nested)
|
||||||
{
|
{
|
||||||
const char *prompt;
|
const char *prompt;
|
||||||
@ -262,7 +262,7 @@ Index: b/grub-core/normal/main.c
|
|||||||
|
|
||||||
if (cont)
|
if (cont)
|
||||||
/* TRANSLATORS: it's command line prompt. */
|
/* TRANSLATORS: it's command line prompt. */
|
||||||
@@ -476,7 +485,9 @@
|
@@ -430,7 +439,9 @@
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -331,7 +331,7 @@ Index: b/util/grub.d/10_linux.in
|
|||||||
|
|
||||||
. "@datadir@/@PACKAGE@/grub-mkconfig_lib"
|
. "@datadir@/@PACKAGE@/grub-mkconfig_lib"
|
||||||
|
|
||||||
@@ -146,10 +147,12 @@
|
@@ -171,10 +172,12 @@
|
||||||
fi
|
fi
|
||||||
printf '%s\n' "${prepare_boot_cache}" | sed "s/^/$submenu_indentation/"
|
printf '%s\n' "${prepare_boot_cache}" | sed "s/^/$submenu_indentation/"
|
||||||
fi
|
fi
|
||||||
@ -346,7 +346,7 @@ Index: b/util/grub.d/10_linux.in
|
|||||||
if test -d /sys/firmware/efi && test -e "${linux}.efi.signed"; then
|
if test -d /sys/firmware/efi && test -e "${linux}.efi.signed"; then
|
||||||
sed "s/^/$submenu_indentation/" << EOF
|
sed "s/^/$submenu_indentation/" << EOF
|
||||||
linux ${rel_dirname}/${basename}.efi.signed root=${linux_root_device_thisversion} ro ${args}
|
linux ${rel_dirname}/${basename}.efi.signed root=${linux_root_device_thisversion} ro ${args}
|
||||||
@@ -161,9 +164,13 @@
|
@@ -186,9 +189,13 @@
|
||||||
fi
|
fi
|
||||||
if test -n "${initrd}" ; then
|
if test -n "${initrd}" ; then
|
||||||
# TRANSLATORS: ramdisk isn't identifier. Should be translated.
|
# TRANSLATORS: ramdisk isn't identifier. Should be translated.
|
||||||
|
8
debian/patches/mkconfig_loopback.patch
vendored
8
debian/patches/mkconfig_loopback.patch
vendored
@ -13,7 +13,7 @@ Index: b/util/grub-mkconfig_lib.in
|
|||||||
===================================================================
|
===================================================================
|
||||||
--- a/util/grub-mkconfig_lib.in
|
--- a/util/grub-mkconfig_lib.in
|
||||||
+++ b/util/grub-mkconfig_lib.in
|
+++ b/util/grub-mkconfig_lib.in
|
||||||
@@ -130,6 +130,21 @@
|
@@ -133,6 +133,21 @@
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
@ -35,7 +35,7 @@ Index: b/util/grub-mkconfig_lib.in
|
|||||||
if dmsetup status $device 2>/dev/null | grep -q 'crypt[[:space:]]$'; then
|
if dmsetup status $device 2>/dev/null | grep -q 'crypt[[:space:]]$'; then
|
||||||
grub_warn \
|
grub_warn \
|
||||||
"$device is a crypto device, which GRUB cannot read directly. Some" \
|
"$device is a crypto device, which GRUB cannot read directly. Some" \
|
||||||
@@ -240,6 +255,14 @@
|
@@ -243,6 +258,14 @@
|
||||||
else
|
else
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
@ -54,7 +54,7 @@ Index: b/util/grub.d/10_linux.in
|
|||||||
===================================================================
|
===================================================================
|
||||||
--- a/util/grub.d/10_linux.in
|
--- a/util/grub.d/10_linux.in
|
||||||
+++ b/util/grub.d/10_linux.in
|
+++ b/util/grub.d/10_linux.in
|
||||||
@@ -40,6 +40,11 @@
|
@@ -65,6 +65,11 @@
|
||||||
case ${GRUB_DEVICE} in
|
case ${GRUB_DEVICE} in
|
||||||
/dev/loop/*|/dev/loop[0-9])
|
/dev/loop/*|/dev/loop[0-9])
|
||||||
GRUB_DEVICE=`losetup ${GRUB_DEVICE} | sed -e "s/^[^(]*(\([^)]\+\)).*/\1/"`
|
GRUB_DEVICE=`losetup ${GRUB_DEVICE} | sed -e "s/^[^(]*(\([^)]\+\)).*/\1/"`
|
||||||
@ -70,7 +70,7 @@ Index: b/util/grub.d/20_linux_xen.in
|
|||||||
===================================================================
|
===================================================================
|
||||||
--- a/util/grub.d/20_linux_xen.in
|
--- a/util/grub.d/20_linux_xen.in
|
||||||
+++ b/util/grub.d/20_linux_xen.in
|
+++ b/util/grub.d/20_linux_xen.in
|
||||||
@@ -40,6 +40,11 @@
|
@@ -44,6 +44,11 @@
|
||||||
case ${GRUB_DEVICE} in
|
case ${GRUB_DEVICE} in
|
||||||
/dev/loop/*|/dev/loop[0-9])
|
/dev/loop/*|/dev/loop[0-9])
|
||||||
GRUB_DEVICE=`losetup ${GRUB_DEVICE} | sed -e "s/^[^(]*(\([^)]\+\)).*/\1/"`
|
GRUB_DEVICE=`losetup ${GRUB_DEVICE} | sed -e "s/^[^(]*(\([^)]\+\)).*/\1/"`
|
||||||
|
4
debian/patches/mkconfig_mid_upgrade.patch
vendored
4
debian/patches/mkconfig_mid_upgrade.patch
vendored
@ -8,13 +8,13 @@ Description: Bail out if trying to run grub-mkconfig during upgrade to 2.00
|
|||||||
problem.
|
problem.
|
||||||
Author: Colin Watson <cjwatson@ubuntu.com>
|
Author: Colin Watson <cjwatson@ubuntu.com>
|
||||||
Forwarded: no
|
Forwarded: no
|
||||||
Last-Update: 2013-11-14
|
Last-Update: 2013-12-20
|
||||||
|
|
||||||
Index: b/util/grub-mkconfig.in
|
Index: b/util/grub-mkconfig.in
|
||||||
===================================================================
|
===================================================================
|
||||||
--- a/util/grub-mkconfig.in
|
--- a/util/grub-mkconfig.in
|
||||||
+++ b/util/grub-mkconfig.in
|
+++ b/util/grub-mkconfig.in
|
||||||
@@ -98,6 +98,13 @@
|
@@ -107,6 +107,13 @@
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
|
@ -2,13 +2,13 @@ Description: Avoid getting confused by inaccessible loop device backing paths
|
|||||||
Author: Colin Watson <cjwatson@ubuntu.com>
|
Author: Colin Watson <cjwatson@ubuntu.com>
|
||||||
Bug-Ubuntu: https://bugs.launchpad.net/bugs/938724
|
Bug-Ubuntu: https://bugs.launchpad.net/bugs/938724
|
||||||
Forwarded: no
|
Forwarded: no
|
||||||
Last-Update: 2013-11-26
|
Last-Update: 2013-12-20
|
||||||
|
|
||||||
Index: b/util/grub-mkconfig_lib.in
|
Index: b/util/grub-mkconfig_lib.in
|
||||||
===================================================================
|
===================================================================
|
||||||
--- a/util/grub-mkconfig_lib.in
|
--- a/util/grub-mkconfig_lib.in
|
||||||
+++ b/util/grub-mkconfig_lib.in
|
+++ b/util/grub-mkconfig_lib.in
|
||||||
@@ -139,7 +139,7 @@
|
@@ -142,7 +142,7 @@
|
||||||
/dev/*) ;;
|
/dev/*) ;;
|
||||||
*)
|
*)
|
||||||
loop_device="${device}"
|
loop_device="${device}"
|
||||||
|
16
debian/patches/mkconfig_recovery_title.patch
vendored
16
debian/patches/mkconfig_recovery_title.patch
vendored
@ -3,7 +3,7 @@ Description: Add GRUB_RECOVERY_TITLE option
|
|||||||
Author: Colin Watson <cjwatson@ubuntu.com>
|
Author: Colin Watson <cjwatson@ubuntu.com>
|
||||||
Bug-Ubuntu: https://bugs.launchpad.net/bugs/1240360
|
Bug-Ubuntu: https://bugs.launchpad.net/bugs/1240360
|
||||||
Forwarded: no
|
Forwarded: no
|
||||||
Last-Update: 2013-12-08
|
Last-Update: 2013-12-20
|
||||||
|
|
||||||
Index: b/docs/grub.texi
|
Index: b/docs/grub.texi
|
||||||
===================================================================
|
===================================================================
|
||||||
@ -25,7 +25,7 @@ Index: b/util/grub-mkconfig.in
|
|||||||
===================================================================
|
===================================================================
|
||||||
--- a/util/grub-mkconfig.in
|
--- a/util/grub-mkconfig.in
|
||||||
+++ b/util/grub-mkconfig.in
|
+++ b/util/grub-mkconfig.in
|
||||||
@@ -185,6 +185,10 @@
|
@@ -194,6 +194,10 @@
|
||||||
|
|
||||||
if [ "x${GRUB_ACTUAL_DEFAULT}" = "xsaved" ] ; then GRUB_ACTUAL_DEFAULT="`"${grub_editenv}" - list | sed -n '/^saved_entry=/ s,^saved_entry=,,p'`" ; fi
|
if [ "x${GRUB_ACTUAL_DEFAULT}" = "xsaved" ] ; then GRUB_ACTUAL_DEFAULT="`"${grub_editenv}" - list | sed -n '/^saved_entry=/ s,^saved_entry=,,p'`" ; fi
|
||||||
|
|
||||||
@ -36,7 +36,7 @@ Index: b/util/grub-mkconfig.in
|
|||||||
|
|
||||||
# These are defined in this script, export them here so that user can
|
# These are defined in this script, export them here so that user can
|
||||||
# override them.
|
# override them.
|
||||||
@@ -236,7 +240,8 @@
|
@@ -246,7 +250,8 @@
|
||||||
GRUB_BADRAM \
|
GRUB_BADRAM \
|
||||||
GRUB_OS_PROBER_SKIP_LIST \
|
GRUB_OS_PROBER_SKIP_LIST \
|
||||||
GRUB_DISABLE_SUBMENU \
|
GRUB_DISABLE_SUBMENU \
|
||||||
@ -50,7 +50,7 @@ Index: b/util/grub.d/10_hurd.in
|
|||||||
===================================================================
|
===================================================================
|
||||||
--- a/util/grub.d/10_hurd.in
|
--- a/util/grub.d/10_hurd.in
|
||||||
+++ b/util/grub.d/10_hurd.in
|
+++ b/util/grub.d/10_hurd.in
|
||||||
@@ -88,8 +88,8 @@
|
@@ -98,8 +98,8 @@
|
||||||
|
|
||||||
if [ x$type != xsimple ] ; then
|
if [ x$type != xsimple ] ; then
|
||||||
if [ x$type = xrecovery ] ; then
|
if [ x$type = xrecovery ] ; then
|
||||||
@ -65,7 +65,7 @@ Index: b/util/grub.d/10_kfreebsd.in
|
|||||||
===================================================================
|
===================================================================
|
||||||
--- a/util/grub.d/10_kfreebsd.in
|
--- a/util/grub.d/10_kfreebsd.in
|
||||||
+++ b/util/grub.d/10_kfreebsd.in
|
+++ b/util/grub.d/10_kfreebsd.in
|
||||||
@@ -76,7 +76,7 @@
|
@@ -86,7 +86,7 @@
|
||||||
fi
|
fi
|
||||||
if [ x$type != xsimple ] ; then
|
if [ x$type != xsimple ] ; then
|
||||||
if [ x$type = xrecovery ] ; then
|
if [ x$type = xrecovery ] ; then
|
||||||
@ -78,7 +78,7 @@ Index: b/util/grub.d/10_linux.in
|
|||||||
===================================================================
|
===================================================================
|
||||||
--- a/util/grub.d/10_linux.in
|
--- a/util/grub.d/10_linux.in
|
||||||
+++ b/util/grub.d/10_linux.in
|
+++ b/util/grub.d/10_linux.in
|
||||||
@@ -114,7 +114,7 @@
|
@@ -139,7 +139,7 @@
|
||||||
if [ x$type != xsimple ] ; then
|
if [ x$type != xsimple ] ; then
|
||||||
case $type in
|
case $type in
|
||||||
recovery)
|
recovery)
|
||||||
@ -91,7 +91,7 @@ Index: b/util/grub.d/10_netbsd.in
|
|||||||
===================================================================
|
===================================================================
|
||||||
--- a/util/grub.d/10_netbsd.in
|
--- a/util/grub.d/10_netbsd.in
|
||||||
+++ b/util/grub.d/10_netbsd.in
|
+++ b/util/grub.d/10_netbsd.in
|
||||||
@@ -102,7 +102,7 @@
|
@@ -110,7 +110,7 @@
|
||||||
|
|
||||||
if [ x$type != xsimple ] ; then
|
if [ x$type != xsimple ] ; then
|
||||||
if [ x$type = xrecovery ] ; then
|
if [ x$type = xrecovery ] ; then
|
||||||
@ -104,7 +104,7 @@ Index: b/util/grub.d/20_linux_xen.in
|
|||||||
===================================================================
|
===================================================================
|
||||||
--- a/util/grub.d/20_linux_xen.in
|
--- a/util/grub.d/20_linux_xen.in
|
||||||
+++ b/util/grub.d/20_linux_xen.in
|
+++ b/util/grub.d/20_linux_xen.in
|
||||||
@@ -93,7 +93,7 @@
|
@@ -97,7 +97,7 @@
|
||||||
fi
|
fi
|
||||||
if [ x$type != xsimple ] ; then
|
if [ x$type != xsimple ] ; then
|
||||||
if [ x$type = xrecovery ] ; then
|
if [ x$type = xrecovery ] ; then
|
||||||
|
6
debian/patches/mkconfig_signed_kernel.patch
vendored
6
debian/patches/mkconfig_signed_kernel.patch
vendored
@ -1,13 +1,13 @@
|
|||||||
Description: Generate configuration for signed UEFI kernels if available
|
Description: Generate configuration for signed UEFI kernels if available
|
||||||
Author: Colin Watson <cjwatson@ubuntu.com>
|
Author: Colin Watson <cjwatson@ubuntu.com>
|
||||||
Forwarded: no
|
Forwarded: no
|
||||||
Last-Update: 2013-12-08
|
Last-Update: 2013-12-20
|
||||||
|
|
||||||
Index: b/util/grub.d/10_linux.in
|
Index: b/util/grub.d/10_linux.in
|
||||||
===================================================================
|
===================================================================
|
||||||
--- a/util/grub.d/10_linux.in
|
--- a/util/grub.d/10_linux.in
|
||||||
+++ b/util/grub.d/10_linux.in
|
+++ b/util/grub.d/10_linux.in
|
||||||
@@ -149,8 +149,16 @@
|
@@ -174,8 +174,16 @@
|
||||||
message="$(gettext_printf "Loading Linux %s ..." ${version})"
|
message="$(gettext_printf "Loading Linux %s ..." ${version})"
|
||||||
sed "s/^/$submenu_indentation/" << EOF
|
sed "s/^/$submenu_indentation/" << EOF
|
||||||
echo '$(echo "$message" | grub_quote)'
|
echo '$(echo "$message" | grub_quote)'
|
||||||
@ -24,7 +24,7 @@ Index: b/util/grub.d/10_linux.in
|
|||||||
if test -n "${initrd}" ; then
|
if test -n "${initrd}" ; then
|
||||||
# TRANSLATORS: ramdisk isn't identifier. Should be translated.
|
# TRANSLATORS: ramdisk isn't identifier. Should be translated.
|
||||||
message="$(gettext_printf "Loading initial ramdisk ...")"
|
message="$(gettext_printf "Loading initial ramdisk ...")"
|
||||||
@@ -196,6 +204,13 @@
|
@@ -209,6 +217,13 @@
|
||||||
is_top_level=true
|
is_top_level=true
|
||||||
while [ "x$list" != "x" ] ; do
|
while [ "x$list" != "x" ] ; do
|
||||||
linux=`version_find_latest $list`
|
linux=`version_find_latest $list`
|
||||||
|
4
debian/patches/mkconfig_skip_dmcrypt.patch
vendored
4
debian/patches/mkconfig_skip_dmcrypt.patch
vendored
@ -6,13 +6,13 @@ Author: Colin Watson <cjwatson@debian.org>
|
|||||||
Origin: other, http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=542165#25
|
Origin: other, http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=542165#25
|
||||||
Bug-Debian: http://bugs.debian.org/542165
|
Bug-Debian: http://bugs.debian.org/542165
|
||||||
Forwarded: no
|
Forwarded: no
|
||||||
Last-Update: 2010-06-05
|
Last-Update: 2013-12-20
|
||||||
|
|
||||||
Index: b/util/grub-mkconfig_lib.in
|
Index: b/util/grub-mkconfig_lib.in
|
||||||
===================================================================
|
===================================================================
|
||||||
--- a/util/grub-mkconfig_lib.in
|
--- a/util/grub-mkconfig_lib.in
|
||||||
+++ b/util/grub-mkconfig_lib.in
|
+++ b/util/grub-mkconfig_lib.in
|
||||||
@@ -130,6 +130,15 @@
|
@@ -133,6 +133,15 @@
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
|
@ -4,13 +4,13 @@ Author: Mario Limonciello <Mario_Limonciello@dell.com>
|
|||||||
Author: Colin Watson <cjwatson@debian.org>
|
Author: Colin Watson <cjwatson@debian.org>
|
||||||
Author: Harald Sitter <apachelogger@kubuntu.org>
|
Author: Harald Sitter <apachelogger@kubuntu.org>
|
||||||
Forwarded: not-needed
|
Forwarded: not-needed
|
||||||
Last-Update: 2013-11-14
|
Last-Update: 2013-12-20
|
||||||
|
|
||||||
Index: b/util/grub.d/10_linux.in
|
Index: b/util/grub.d/10_linux.in
|
||||||
===================================================================
|
===================================================================
|
||||||
--- a/util/grub.d/10_linux.in
|
--- a/util/grub.d/10_linux.in
|
||||||
+++ b/util/grub.d/10_linux.in
|
+++ b/util/grub.d/10_linux.in
|
||||||
@@ -32,7 +32,14 @@
|
@@ -57,7 +57,14 @@
|
||||||
if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then
|
if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then
|
||||||
OS=GNU/Linux
|
OS=GNU/Linux
|
||||||
else
|
else
|
||||||
|
10
debian/patches/mkconfig_ubuntu_recovery.patch
vendored
10
debian/patches/mkconfig_ubuntu_recovery.patch
vendored
@ -6,13 +6,13 @@ Description: "single" -> "recovery" when friendly-recovery is installed
|
|||||||
Author: Colin Watson <cjwatson@ubuntu.com>
|
Author: Colin Watson <cjwatson@ubuntu.com>
|
||||||
Author: Stéphane Graber <stgraber@ubuntu.com>
|
Author: Stéphane Graber <stgraber@ubuntu.com>
|
||||||
Forwarded: no
|
Forwarded: no
|
||||||
Last-Update: 2013-12-08
|
Last-Update: 2013-12-20
|
||||||
|
|
||||||
Index: b/configure.ac
|
Index: b/configure.ac
|
||||||
===================================================================
|
===================================================================
|
||||||
--- a/configure.ac
|
--- a/configure.ac
|
||||||
+++ b/configure.ac
|
+++ b/configure.ac
|
||||||
@@ -1501,6 +1501,17 @@
|
@@ -1538,6 +1538,17 @@
|
||||||
AC_SUBST([LIBZFS])
|
AC_SUBST([LIBZFS])
|
||||||
AC_SUBST([LIBNVPAIR])
|
AC_SUBST([LIBNVPAIR])
|
||||||
|
|
||||||
@ -42,7 +42,7 @@ Index: b/util/grub.d/10_linux.in
|
|||||||
|
|
||||||
. "@datadir@/@PACKAGE@/grub-mkconfig_lib"
|
. "@datadir@/@PACKAGE@/grub-mkconfig_lib"
|
||||||
|
|
||||||
@@ -72,6 +73,15 @@
|
@@ -97,6 +98,15 @@
|
||||||
|
|
||||||
title_correction_code=
|
title_correction_code=
|
||||||
|
|
||||||
@ -58,7 +58,7 @@ Index: b/util/grub.d/10_linux.in
|
|||||||
linux_entry ()
|
linux_entry ()
|
||||||
{
|
{
|
||||||
os="$1"
|
os="$1"
|
||||||
@@ -111,7 +121,9 @@
|
@@ -136,7 +146,9 @@
|
||||||
if [ "x$GRUB_GFXPAYLOAD_LINUX" != xtext ]; then
|
if [ "x$GRUB_GFXPAYLOAD_LINUX" != xtext ]; then
|
||||||
echo " load_video" | sed "s/^/$submenu_indentation/"
|
echo " load_video" | sed "s/^/$submenu_indentation/"
|
||||||
fi
|
fi
|
||||||
@ -69,7 +69,7 @@ Index: b/util/grub.d/10_linux.in
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo " insmod gzio" | sed "s/^/$submenu_indentation/"
|
echo " insmod gzio" | sed "s/^/$submenu_indentation/"
|
||||||
@@ -239,7 +251,7 @@
|
@@ -252,7 +264,7 @@
|
||||||
"${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
|
"${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
|
||||||
if [ "x${GRUB_DISABLE_RECOVERY}" != "xtrue" ]; then
|
if [ "x${GRUB_DISABLE_RECOVERY}" != "xtrue" ]; then
|
||||||
linux_entry "${OS}" "${version}" recovery \
|
linux_entry "${OS}" "${version}" recovery \
|
||||||
|
4
debian/patches/mkrescue_efi_modules.patch
vendored
4
debian/patches/mkrescue_efi_modules.patch
vendored
@ -3,13 +3,13 @@ Author: Mario Limonciello <Mario_Limonciello@dell.com>
|
|||||||
Author: Colin Watson <cjwatson@ubuntu.com>
|
Author: Colin Watson <cjwatson@ubuntu.com>
|
||||||
Bug-Ubuntu: https://bugs.launchpad.net/bugs/677758
|
Bug-Ubuntu: https://bugs.launchpad.net/bugs/677758
|
||||||
Forwarded: http://lists.gnu.org/archive/html/grub-devel/2011-01/msg00028.html
|
Forwarded: http://lists.gnu.org/archive/html/grub-devel/2011-01/msg00028.html
|
||||||
Last-Update: 2013-12-08
|
Last-Update: 2013-12-20
|
||||||
|
|
||||||
Index: b/util/grub-mkrescue.c
|
Index: b/util/grub-mkrescue.c
|
||||||
===================================================================
|
===================================================================
|
||||||
--- a/util/grub-mkrescue.c
|
--- a/util/grub-mkrescue.c
|
||||||
+++ b/util/grub-mkrescue.c
|
+++ b/util/grub-mkrescue.c
|
||||||
@@ -631,12 +631,18 @@
|
@@ -636,12 +636,18 @@
|
||||||
make_image_fwdisk_abs (GRUB_INSTALL_PLATFORM_IA64_EFI, "ia64-efi", imgname);
|
make_image_fwdisk_abs (GRUB_INSTALL_PLATFORM_IA64_EFI, "ia64-efi", imgname);
|
||||||
free (imgname);
|
free (imgname);
|
||||||
|
|
||||||
|
8
debian/patches/quick_boot.patch
vendored
8
debian/patches/quick_boot.patch
vendored
@ -14,13 +14,13 @@ Description: Add configure option to bypass boot menu if possible
|
|||||||
Author: Colin Watson <cjwatson@ubuntu.com>
|
Author: Colin Watson <cjwatson@ubuntu.com>
|
||||||
Author: Richard Laager <rlaager@wiktel.com>
|
Author: Richard Laager <rlaager@wiktel.com>
|
||||||
Forwarded: no
|
Forwarded: no
|
||||||
Last-Update: 2013-12-11
|
Last-Update: 2013-12-20
|
||||||
|
|
||||||
Index: b/configure.ac
|
Index: b/configure.ac
|
||||||
===================================================================
|
===================================================================
|
||||||
--- a/configure.ac
|
--- a/configure.ac
|
||||||
+++ b/configure.ac
|
+++ b/configure.ac
|
||||||
@@ -1523,6 +1523,17 @@
|
@@ -1560,6 +1560,17 @@
|
||||||
fi
|
fi
|
||||||
AC_SUBST([QUIET_BOOT])
|
AC_SUBST([QUIET_BOOT])
|
||||||
|
|
||||||
@ -97,7 +97,7 @@ Index: b/util/grub-mkconfig.in
|
|||||||
===================================================================
|
===================================================================
|
||||||
--- a/util/grub-mkconfig.in
|
--- a/util/grub-mkconfig.in
|
||||||
+++ b/util/grub-mkconfig.in
|
+++ b/util/grub-mkconfig.in
|
||||||
@@ -235,7 +235,8 @@
|
@@ -245,7 +245,8 @@
|
||||||
GRUB_ENABLE_CRYPTODISK \
|
GRUB_ENABLE_CRYPTODISK \
|
||||||
GRUB_BADRAM \
|
GRUB_BADRAM \
|
||||||
GRUB_OS_PROBER_SKIP_LIST \
|
GRUB_OS_PROBER_SKIP_LIST \
|
||||||
@ -223,7 +223,7 @@ Index: b/util/grub.d/10_linux.in
|
|||||||
|
|
||||||
. "@datadir@/@PACKAGE@/grub-mkconfig_lib"
|
. "@datadir@/@PACKAGE@/grub-mkconfig_lib"
|
||||||
|
|
||||||
@@ -117,6 +118,9 @@
|
@@ -142,6 +143,9 @@
|
||||||
else
|
else
|
||||||
echo "menuentry '$(echo "$os" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-simple-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
|
echo "menuentry '$(echo "$os" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-simple-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
|
||||||
fi
|
fi
|
||||||
|
2
debian/patches/restore_mkdevicemap.patch
vendored
2
debian/patches/restore_mkdevicemap.patch
vendored
@ -2,7 +2,7 @@ Index: b/Makefile.util.def
|
|||||||
===================================================================
|
===================================================================
|
||||||
--- a/Makefile.util.def
|
--- a/Makefile.util.def
|
||||||
+++ b/Makefile.util.def
|
+++ b/Makefile.util.def
|
||||||
@@ -311,6 +311,23 @@
|
@@ -313,6 +313,23 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
program = {
|
program = {
|
||||||
|
4
debian/patches/uefi_firmware_setup.patch
vendored
4
debian/patches/uefi_firmware_setup.patch
vendored
@ -1,13 +1,13 @@
|
|||||||
Description: Output a menu entry for firmware setup on UEFI FastBoot systems
|
Description: Output a menu entry for firmware setup on UEFI FastBoot systems
|
||||||
Author: Steve Langasek <steve.langasek@ubuntu.com>
|
Author: Steve Langasek <steve.langasek@ubuntu.com>
|
||||||
Forwarded: no
|
Forwarded: no
|
||||||
Last-Update: 2013-11-26
|
Last-Update: 2013-12-20
|
||||||
|
|
||||||
Index: b/Makefile.util.def
|
Index: b/Makefile.util.def
|
||||||
===================================================================
|
===================================================================
|
||||||
--- a/Makefile.util.def
|
--- a/Makefile.util.def
|
||||||
+++ b/Makefile.util.def
|
+++ b/Makefile.util.def
|
||||||
@@ -491,6 +491,12 @@
|
@@ -501,6 +501,12 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
script = {
|
script = {
|
||||||
|
10
debian/patches/vt_handoff.patch
vendored
10
debian/patches/vt_handoff.patch
vendored
@ -4,13 +4,13 @@ Description: Add configure option to use vt.handoff=7
|
|||||||
Author: Colin Watson <cjwatson@ubuntu.com>
|
Author: Colin Watson <cjwatson@ubuntu.com>
|
||||||
Author: Andy Whitcroft <apw@canonical.com>
|
Author: Andy Whitcroft <apw@canonical.com>
|
||||||
Forwarded: not-needed
|
Forwarded: not-needed
|
||||||
Last-Update: 2013-12-08
|
Last-Update: 2013-12-20
|
||||||
|
|
||||||
Index: b/configure.ac
|
Index: b/configure.ac
|
||||||
===================================================================
|
===================================================================
|
||||||
--- a/configure.ac
|
--- a/configure.ac
|
||||||
+++ b/configure.ac
|
+++ b/configure.ac
|
||||||
@@ -1545,6 +1545,17 @@
|
@@ -1582,6 +1582,17 @@
|
||||||
fi
|
fi
|
||||||
AC_SUBST([GFXPAYLOAD_DYNAMIC])
|
AC_SUBST([GFXPAYLOAD_DYNAMIC])
|
||||||
|
|
||||||
@ -40,7 +40,7 @@ Index: b/util/grub.d/10_linux.in
|
|||||||
|
|
||||||
. "@datadir@/@PACKAGE@/grub-mkconfig_lib"
|
. "@datadir@/@PACKAGE@/grub-mkconfig_lib"
|
||||||
|
|
||||||
@@ -92,6 +93,14 @@
|
@@ -117,6 +118,14 @@
|
||||||
GRUB_CMDLINE_LINUX_RECOVERY="$GRUB_CMDLINE_LINUX_RECOVERY nomodeset"
|
GRUB_CMDLINE_LINUX_RECOVERY="$GRUB_CMDLINE_LINUX_RECOVERY nomodeset"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -55,7 +55,7 @@ Index: b/util/grub.d/10_linux.in
|
|||||||
linux_entry ()
|
linux_entry ()
|
||||||
{
|
{
|
||||||
os="$1"
|
os="$1"
|
||||||
@@ -137,7 +146,7 @@
|
@@ -162,7 +171,7 @@
|
||||||
fi
|
fi
|
||||||
if ([ "$ubuntu_recovery" = 0 ] || [ x$type != xrecovery ]) && \
|
if ([ "$ubuntu_recovery" = 0 ] || [ x$type != xrecovery ]) && \
|
||||||
([ "x$GRUB_GFXPAYLOAD_LINUX" != x ] || [ "$gfxpayload_dynamic" = 1 ]); then
|
([ "x$GRUB_GFXPAYLOAD_LINUX" != x ] || [ "$gfxpayload_dynamic" = 1 ]); then
|
||||||
@ -64,7 +64,7 @@ Index: b/util/grub.d/10_linux.in
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo " insmod gzio" | sed "s/^/$submenu_indentation/"
|
echo " insmod gzio" | sed "s/^/$submenu_indentation/"
|
||||||
@@ -210,6 +219,23 @@
|
@@ -223,6 +232,23 @@
|
||||||
boot_device_id=
|
boot_device_id=
|
||||||
title_correction_code=
|
title_correction_code=
|
||||||
|
|
||||||
|
@ -6008,8 +6008,20 @@ mounted on
|
|||||||
Recheck the device map, even if @file{/boot/grub/device.map} already
|
Recheck the device map, even if @file{/boot/grub/device.map} already
|
||||||
exists. You should use this option whenever you add/remove a disk
|
exists. You should use this option whenever you add/remove a disk
|
||||||
into/from your computer.
|
into/from your computer.
|
||||||
@end table
|
|
||||||
|
|
||||||
|
@item --no-rs-codes
|
||||||
|
By default on x86 BIOS systems, @command{grub-install} will use some
|
||||||
|
extra space in the bootloader embedding area for Reed-Solomon
|
||||||
|
error-correcting codes. This enables GRUB to still boot successfully
|
||||||
|
if some blocks are corrupted. The exact amount of protection offered
|
||||||
|
is dependent on available space in the embedding area. R sectors of
|
||||||
|
redundancy can tolerate up to R/2 corrupted sectors. This
|
||||||
|
redundancy may be cumbersome if attempting to cryptographically
|
||||||
|
validate the contents of the bootloader embedding area, or in more
|
||||||
|
modern systems with GPT-style partition tables (@pxref{BIOS
|
||||||
|
installation}) where GRUB does not reside in any unpartitioned space
|
||||||
|
outside of the MBR. Disable the Reed-Solomon codes with this option.
|
||||||
|
@end table
|
||||||
|
|
||||||
@node Invoking grub-mkconfig
|
@node Invoking grub-mkconfig
|
||||||
@chapter Invoking grub-mkconfig
|
@chapter Invoking grub-mkconfig
|
||||||
|
2
docs/man/grub-file.h2m
Normal file
2
docs/man/grub-file.h2m
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
[NAME]
|
||||||
|
grub-file \- check file type
|
4
docs/man/grub-macbless.h2m
Normal file
4
docs/man/grub-macbless.h2m
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
[NAME]
|
||||||
|
grub-macbless \- bless a mac file/directory
|
||||||
|
[SEE ALSO]
|
||||||
|
.BR grub-install (1)
|
4
docs/man/grub-syslinux2cfg.h2m
Normal file
4
docs/man/grub-syslinux2cfg.h2m
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
[NAME]
|
||||||
|
grub-syslinux2cfg \- transform syslinux config into grub.cfg
|
||||||
|
[SEE ALSO]
|
||||||
|
.BR grub-menulst2cfg (8)
|
@ -178,6 +178,12 @@ for dev in (*); do
|
|||||||
# uuid: filesystem UUID
|
# uuid: filesystem UUID
|
||||||
probe -s uuid -u $dev
|
probe -s uuid -u $dev
|
||||||
|
|
||||||
|
if test -f ($device)/isolinux/isolinux.cfg ; then
|
||||||
|
menuentry "ISOLINUX config (on $device)" $device {
|
||||||
|
set root=$2
|
||||||
|
syslinux_configfile -i /isolinux/isolinux.cfg
|
||||||
|
}
|
||||||
|
fi
|
||||||
if test -f ($device)/bootmgr -a -f ($device)/boot/bcd; then
|
if test -f ($device)/bootmgr -a -f ($device)/boot/bcd; then
|
||||||
menuentry "Windows Vista bootmgr (on $device)" $device {
|
menuentry "Windows Vista bootmgr (on $device)" $device {
|
||||||
set root=$2
|
set root=$2
|
||||||
|
@ -718,11 +718,14 @@ def kernel(defn, platform):
|
|||||||
"""if test x$(TARGET_APPLE_LINKER) = x1; then \
|
"""if test x$(TARGET_APPLE_LINKER) = x1; then \
|
||||||
$(TARGET_OBJCONV) -f$(TARGET_MODULE_FORMAT) -nr:_grub_mod_init:grub_mod_init -nr:_grub_mod_fini:grub_mod_fini -ed2022 -wd1106 -nu -nd $< $@; \
|
$(TARGET_OBJCONV) -f$(TARGET_MODULE_FORMAT) -nr:_grub_mod_init:grub_mod_init -nr:_grub_mod_fini:grub_mod_fini -ed2022 -wd1106 -nu -nd $< $@; \
|
||||||
elif test ! -z '$(TARGET_OBJ2ELF)'; then \
|
elif test ! -z '$(TARGET_OBJ2ELF)'; then \
|
||||||
cp $< $@.bin; $(TARGET_OBJ2ELF) $@.bin && cp $@.bin $@ || (rm -f $@.bin; exit 1); \
|
$(TARGET_OBJ2ELF) $< $@ || (rm -f $@; exit 1); \
|
||||||
else cp $< $@; fi""",
|
else cp $< $@; fi""",
|
||||||
"""if test x$(TARGET_APPLE_LINKER) = x1; then \
|
"""if test x$(TARGET_APPLE_LINKER) = x1; then \
|
||||||
$(TARGET_STRIP) -S -x $(""" + cname(defn) + """) -o $@.bin $<; \
|
$(TARGET_STRIP) -S -x $(""" + cname(defn) + """) -o $@.bin $<; \
|
||||||
$(TARGET_OBJCONV) -f$(TARGET_MODULE_FORMAT) -nr:_grub_mod_init:grub_mod_init -nr:_grub_mod_fini:grub_mod_fini -ed2022 -ed2016 -wd1106 -nu -nd $@.bin $@; \
|
$(TARGET_OBJCONV) -f$(TARGET_MODULE_FORMAT) -nr:_grub_mod_init:grub_mod_init -nr:_grub_mod_fini:grub_mod_fini -ed2022 -ed2016 -wd1106 -nu -nd $@.bin $@; \
|
||||||
|
elif test ! -z '$(TARGET_OBJ2ELF)'; then \
|
||||||
|
""" + "$(TARGET_STRIP) $(" + cname(defn) + "_STRIPFLAGS) -o $@.bin $< && \
|
||||||
|
$(TARGET_OBJ2ELF) $@.bin $@ || (rm -f $@; rm -f $@.bin; exit 1); \
|
||||||
else """ + "$(TARGET_STRIP) $(" + cname(defn) + "_STRIPFLAGS) -o $@ $<; \
|
else """ + "$(TARGET_STRIP) $(" + cname(defn) + "_STRIPFLAGS) -o $@ $<; \
|
||||||
fi"""))
|
fi"""))
|
||||||
|
|
||||||
|
@ -26,8 +26,11 @@ CFLAGS_LIBRARY += $(CFLAGS_PLATFORM) -fno-builtin
|
|||||||
CPPFLAGS_LIBRARY += $(CPPFLAGS_PLATFORM)
|
CPPFLAGS_LIBRARY += $(CPPFLAGS_PLATFORM)
|
||||||
CCASFLAGS_LIBRARY += $(CCASFLAGS_PLATFORM)
|
CCASFLAGS_LIBRARY += $(CCASFLAGS_PLATFORM)
|
||||||
|
|
||||||
|
build-grub-pep2elf: $(top_srcdir)/util/grub-pe2elf.c $(top_srcdir)/grub-core/kern/emu/misc.c $(top_srcdir)/util/misc.c
|
||||||
|
$(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) -DGRUB_BUILD=1 -DGRUB_TARGET_WORDSIZE=64 -DGRUB_UTIL=1 -DGRUB_BUILD_PROGRAM_NAME=\"build-grub-pep2elf\" $^
|
||||||
|
|
||||||
build-grub-pe2elf: $(top_srcdir)/util/grub-pe2elf.c $(top_srcdir)/grub-core/kern/emu/misc.c $(top_srcdir)/util/misc.c
|
build-grub-pe2elf: $(top_srcdir)/util/grub-pe2elf.c $(top_srcdir)/grub-core/kern/emu/misc.c $(top_srcdir)/util/misc.c
|
||||||
$(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) -DGRUB_BUILD=1 -DGRUB_UTIL=1 -DGRUB_BUILD_PROGRAM_NAME=\"build-grub-pe2elf\" $^
|
$(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) -DGRUB_BUILD=1 -DGRUB_TARGET_WORDSIZE=32 -DGRUB_UTIL=1 -DGRUB_BUILD_PROGRAM_NAME=\"build-grub-pe2elf\" $^
|
||||||
|
|
||||||
# gentrigtables
|
# gentrigtables
|
||||||
gentrigtables: gentrigtables.c
|
gentrigtables: gentrigtables.c
|
||||||
@ -100,7 +103,6 @@ endif
|
|||||||
if COND_i386_coreboot
|
if COND_i386_coreboot
|
||||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/tsc.h
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/tsc.h
|
||||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/coreboot/lbio.h
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/coreboot/lbio.h
|
||||||
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/i386/pc/int.h
|
|
||||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/video.h
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/video.h
|
||||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/video_fb.h
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/video_fb.h
|
||||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/gfxterm.h
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/gfxterm.h
|
||||||
@ -110,7 +112,6 @@ endif
|
|||||||
|
|
||||||
if COND_i386_multiboot
|
if COND_i386_multiboot
|
||||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/tsc.h
|
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/tsc.h
|
||||||
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/i386/pc/int.h
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if COND_i386_qemu
|
if COND_i386_qemu
|
||||||
|
@ -59,9 +59,7 @@ kernel = {
|
|||||||
ia64_efi_ldflags = '-Wl,-r,-d';
|
ia64_efi_ldflags = '-Wl,-r,-d';
|
||||||
ia64_efi_stripflags = '--strip-unneeded -K start -R .note -R .comment -R .note.gnu.gold-version';
|
ia64_efi_stripflags = '--strip-unneeded -K start -R .note -R .comment -R .note.gnu.gold-version';
|
||||||
|
|
||||||
x86_64_xen_ldflags = '-Wl,-Ttext=0';
|
|
||||||
x86_64_xen_cppflags = '$(CPPFLAGS_XEN)';
|
x86_64_xen_cppflags = '$(CPPFLAGS_XEN)';
|
||||||
i386_xen_ldflags = '-Wl,-Ttext=0';
|
|
||||||
i386_xen_cppflags = '$(CPPFLAGS_XEN)';
|
i386_xen_cppflags = '$(CPPFLAGS_XEN)';
|
||||||
|
|
||||||
arm_efi_ldflags = '-Wl,-r,-d';
|
arm_efi_ldflags = '-Wl,-r,-d';
|
||||||
@ -72,15 +70,21 @@ kernel = {
|
|||||||
|
|
||||||
i386_pc_ldflags = '$(TARGET_IMG_LDFLAGS)';
|
i386_pc_ldflags = '$(TARGET_IMG_LDFLAGS)';
|
||||||
i386_pc_ldflags = '$(TARGET_IMG_BASE_LDOPT),0x9000';
|
i386_pc_ldflags = '$(TARGET_IMG_BASE_LDOPT),0x9000';
|
||||||
|
|
||||||
i386_qemu_ldflags = '$(TARGET_IMG_LDFLAGS)';
|
i386_qemu_ldflags = '$(TARGET_IMG_LDFLAGS)';
|
||||||
i386_qemu_ldflags = '$(TARGET_IMG_BASE_LDOPT),0x8200';
|
i386_qemu_ldflags = '$(TARGET_IMG_BASE_LDOPT),0x8200';
|
||||||
|
i386_coreboot_ldflags = '$(TARGET_IMG_LDFLAGS)';
|
||||||
|
i386_coreboot_ldflags = '$(TARGET_IMG_BASE_LDOPT),0x8200';
|
||||||
|
i386_multiboot_ldflags = '$(TARGET_IMG_LDFLAGS)';
|
||||||
|
i386_multiboot_ldflags = '$(TARGET_IMG_BASE_LDOPT),0x8200';
|
||||||
|
i386_ieee1275_ldflags = '$(TARGET_IMG_LDFLAGS)';
|
||||||
|
i386_ieee1275_ldflags = '$(TARGET_IMG_BASE_LDOPT),0x10000';
|
||||||
|
i386_xen_ldflags = '$(TARGET_IMG_LDFLAGS)';
|
||||||
|
i386_xen_ldflags = '$(TARGET_IMG_BASE_LDOPT),0';
|
||||||
|
x86_64_xen_ldflags = '$(TARGET_IMG_LDFLAGS)';
|
||||||
|
x86_64_xen_ldflags = '$(TARGET_IMG_BASE_LDOPT),0';
|
||||||
|
|
||||||
ldadd = '$(LDADD_KERNEL)';
|
ldadd = '$(LDADD_KERNEL)';
|
||||||
|
|
||||||
i386_coreboot_ldflags = '-Wl,-Ttext=0x8200';
|
|
||||||
i386_multiboot_ldflags = '-Wl,-Ttext=0x8200';
|
|
||||||
i386_ieee1275_ldflags = '-Wl,-Ttext=0x10000';
|
|
||||||
mips_loongson_ldflags = '-Wl,-Ttext,0x80200000';
|
mips_loongson_ldflags = '-Wl,-Ttext,0x80200000';
|
||||||
powerpc_ieee1275_ldflags = '-Wl,-Ttext,0x200000';
|
powerpc_ieee1275_ldflags = '-Wl,-Ttext,0x200000';
|
||||||
sparc64_ieee1275_ldflags = '-Wl,-Ttext,0x4400';
|
sparc64_ieee1275_ldflags = '-Wl,-Ttext,0x4400';
|
||||||
@ -241,6 +245,7 @@ kernel = {
|
|||||||
mips_loongson = video/sm712.c;
|
mips_loongson = video/sm712.c;
|
||||||
mips_loongson = video/sis315pro.c;
|
mips_loongson = video/sis315pro.c;
|
||||||
mips_loongson = video/radeon_fuloong2e.c;
|
mips_loongson = video/radeon_fuloong2e.c;
|
||||||
|
mips_loongson = video/radeon_yeeloong3a.c;
|
||||||
extra_dist = video/sm712_init.c;
|
extra_dist = video/sm712_init.c;
|
||||||
extra_dist = video/sis315_init.c;
|
extra_dist = video/sis315_init.c;
|
||||||
mips_loongson = commands/keylayouts.c;
|
mips_loongson = commands/keylayouts.c;
|
||||||
@ -618,11 +623,6 @@ module = {
|
|||||||
enable = xen;
|
enable = xen;
|
||||||
};
|
};
|
||||||
|
|
||||||
module = {
|
|
||||||
name = check_nt_hiberfil;
|
|
||||||
common = commands/i386/nthibr.c;
|
|
||||||
};
|
|
||||||
|
|
||||||
module = {
|
module = {
|
||||||
name = cmostest;
|
name = cmostest;
|
||||||
common = commands/i386/cmostest.c;
|
common = commands/i386/cmostest.c;
|
||||||
@ -1452,6 +1452,11 @@ module = {
|
|||||||
common = fs/zfs/zfsinfo.c;
|
common = fs/zfs/zfsinfo.c;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
module = {
|
||||||
|
name = macbless;
|
||||||
|
common = commands/macbless.c;
|
||||||
|
};
|
||||||
|
|
||||||
module = {
|
module = {
|
||||||
name = pxe;
|
name = pxe;
|
||||||
i386_pc = net/drivers/i386/pc/pxe.c;
|
i386_pc = net/drivers/i386/pc/pxe.c;
|
||||||
@ -1625,6 +1630,14 @@ module = {
|
|||||||
enable = i386_pc;
|
enable = i386_pc;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
module = {
|
||||||
|
name = truecrypt;
|
||||||
|
i386_pc = loader/i386/pc/truecrypt.c;
|
||||||
|
enable = i386_pc;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
module = {
|
module = {
|
||||||
name = freedos;
|
name = freedos;
|
||||||
i386_pc = loader/i386/pc/freedos.c;
|
i386_pc = loader/i386/pc/freedos.c;
|
||||||
@ -1661,10 +1674,6 @@ module = {
|
|||||||
name = linux;
|
name = linux;
|
||||||
x86 = loader/i386/linux.c;
|
x86 = loader/i386/linux.c;
|
||||||
xen = loader/i386/xen.c;
|
xen = loader/i386/xen.c;
|
||||||
xen = loader/i386/xen_file.c;
|
|
||||||
xen = loader/i386/xen_file32.c;
|
|
||||||
xen = loader/i386/xen_file64.c;
|
|
||||||
extra_dist = loader/i386/xen_fileXX.c;
|
|
||||||
xen_cppflags = '$(CPPFLAGS_XEN)';
|
xen_cppflags = '$(CPPFLAGS_XEN)';
|
||||||
i386_pc = lib/i386/pc/vesa_modes_table.c;
|
i386_pc = lib/i386/pc/vesa_modes_table.c;
|
||||||
mips = loader/mips/linux.c;
|
mips = loader/mips/linux.c;
|
||||||
@ -1682,16 +1691,21 @@ module = {
|
|||||||
name = xnu;
|
name = xnu;
|
||||||
x86 = loader/xnu_resume.c;
|
x86 = loader/xnu_resume.c;
|
||||||
x86 = loader/i386/xnu.c;
|
x86 = loader/i386/xnu.c;
|
||||||
x86 = loader/macho32.c;
|
|
||||||
x86 = loader/macho64.c;
|
|
||||||
x86 = loader/macho.c;
|
|
||||||
x86 = loader/xnu.c;
|
x86 = loader/xnu.c;
|
||||||
x86 = loader/lzss.c;
|
|
||||||
|
|
||||||
extra_dist = loader/machoXX.c;
|
|
||||||
enable = x86;
|
enable = x86;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
module = {
|
||||||
|
name = macho;
|
||||||
|
|
||||||
|
common = loader/macho.c;
|
||||||
|
common = loader/macho32.c;
|
||||||
|
common = loader/macho64.c;
|
||||||
|
common = loader/lzss.c;
|
||||||
|
extra_dist = loader/machoXX.c;
|
||||||
|
};
|
||||||
|
|
||||||
module = {
|
module = {
|
||||||
name = appleldr;
|
name = appleldr;
|
||||||
common = loader/efi/appleloader.c;
|
common = loader/efi/appleloader.c;
|
||||||
@ -1755,6 +1769,7 @@ module = {
|
|||||||
common = normal/term.c;
|
common = normal/term.c;
|
||||||
common = normal/context.c;
|
common = normal/context.c;
|
||||||
common = normal/charset.c;
|
common = normal/charset.c;
|
||||||
|
common = lib/getline.c;
|
||||||
|
|
||||||
common = script/main.c;
|
common = script/main.c;
|
||||||
common = script/script.c;
|
common = script/script.c;
|
||||||
@ -1944,6 +1959,11 @@ module = {
|
|||||||
common = tests/signatures.h;
|
common = tests/signatures.h;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
module = {
|
||||||
|
name = sleep_test;
|
||||||
|
common = tests/sleep_test.c;
|
||||||
|
};
|
||||||
|
|
||||||
module = {
|
module = {
|
||||||
name = xnu_uuid_test;
|
name = xnu_uuid_test;
|
||||||
common = tests/xnu_uuid_test.c;
|
common = tests/xnu_uuid_test.c;
|
||||||
@ -2131,6 +2151,12 @@ module = {
|
|||||||
enable = xen;
|
enable = xen;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
module = {
|
||||||
|
name = syslinuxcfg;
|
||||||
|
common = lib/syslinux_parse.c;
|
||||||
|
common = commands/syslinuxcfg.c;
|
||||||
|
};
|
||||||
|
|
||||||
module = {
|
module = {
|
||||||
name = test_blockarg;
|
name = test_blockarg;
|
||||||
common = tests/test_blockarg.c;
|
common = tests/test_blockarg.c;
|
||||||
@ -2273,3 +2299,15 @@ module = {
|
|||||||
name = progress;
|
name = progress;
|
||||||
common = lib/progress.c;
|
common = lib/progress.c;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
module = {
|
||||||
|
name = file;
|
||||||
|
common = commands/file.c;
|
||||||
|
common = commands/file32.c;
|
||||||
|
common = commands/file64.c;
|
||||||
|
extra_dist = commands/fileXX.c;
|
||||||
|
common = loader/i386/xen_file.c;
|
||||||
|
common = loader/i386/xen_file32.c;
|
||||||
|
common = loader/i386/xen_file64.c;
|
||||||
|
extra_dist = loader/i386/xen_fileXX.c;
|
||||||
|
};
|
||||||
|
@ -58,7 +58,7 @@ VARIABLE(grub_core_entry_addr)
|
|||||||
orb $0x02, %al
|
orb $0x02, %al
|
||||||
outb $0x92
|
outb $0x92
|
||||||
1:
|
1:
|
||||||
movl grub_core_entry_addr, %edx
|
movl EXT_C(grub_core_entry_addr), %edx
|
||||||
jmp *%edx
|
jmp *%edx
|
||||||
|
|
||||||
#include "../../../kern/i386/realmode.S"
|
#include "../../../kern/i386/realmode.S"
|
||||||
|
@ -63,18 +63,18 @@ __start:
|
|||||||
This way we don't need to sacrifice a register for it. */
|
This way we don't need to sacrifice a register for it. */
|
||||||
retry_cs5536:
|
retry_cs5536:
|
||||||
/* We have only one bus (0). Function is 0. */
|
/* We have only one bus (0). Function is 0. */
|
||||||
lui $t0, %hi(GRUB_MACHINE_PCI_CONF_CTRL_REG_ADDR)
|
lui $t0, %hi(GRUB_MACHINE_PCI_CONF_CTRL_REG_ADDR_2F)
|
||||||
lui $t1, %hi(GRUB_MACHINE_PCI_CONFSPACE)
|
lui $t1, %hi(GRUB_MACHINE_PCI_CONFSPACE_2F)
|
||||||
lui $t3, %hi(GRUB_CS5536_PCIID)
|
lui $t3, %hi(GRUB_CS5536_PCIID)
|
||||||
addiu $t3, $t3, %lo(GRUB_CS5536_PCIID)
|
addiu $t3, $t3, %lo(GRUB_CS5536_PCIID)
|
||||||
ori $t4, $zero, 1
|
ori $t4, $zero, 1
|
||||||
1:
|
1:
|
||||||
andi $t4, $t4, ((1 << GRUB_PCI_NUM_DEVICES) - 1)
|
andi $t4, $t4, ((1 << GRUB_PCI_NUM_DEVICES_2F) - 1)
|
||||||
/* In case of failure try again. CS5536 may be slow to come up. */
|
/* In case of failure try again. CS5536 may be slow to come up. */
|
||||||
beql $t4, $zero, retry_cs5536
|
beql $t4, $zero, retry_cs5536
|
||||||
nop
|
nop
|
||||||
sw $t4, %lo(GRUB_MACHINE_PCI_CONF_CTRL_REG_ADDR) ($t0)
|
sw $t4, %lo(GRUB_MACHINE_PCI_CONF_CTRL_REG_ADDR_2F) ($t0)
|
||||||
lw $t2, (%lo(GRUB_MACHINE_PCI_CONFSPACE) + GRUB_PCI_REG_PCI_ID) ($t1)
|
lw $t2, (%lo(GRUB_MACHINE_PCI_CONFSPACE_2F) + GRUB_PCI_REG_PCI_ID) ($t1)
|
||||||
bnel $t2, $t3, 1b
|
bnel $t2, $t3, 1b
|
||||||
sll $t4, $t4, 1
|
sll $t4, $t4, 1
|
||||||
|
|
||||||
@ -86,9 +86,9 @@ retry_cs5536:
|
|||||||
move $a0, $t4
|
move $a0, $t4
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
lui $t0, %hi(GRUB_MACHINE_PCI_CONFSPACE)
|
lui $t0, %hi(GRUB_MACHINE_PCI_CONFSPACE_2F)
|
||||||
li $t1, GRUB_CS5536_MSR_MAILBOX_CONFIG_ENABLED
|
li $t1, GRUB_CS5536_MSR_MAILBOX_CONFIG_ENABLED
|
||||||
sw $t1, (%lo(GRUB_MACHINE_PCI_CONFSPACE) + GRUB_CS5536_MSR_MAILBOX_CONFIG) ($t0)
|
sw $t1, (%lo(GRUB_MACHINE_PCI_CONFSPACE_2F) + GRUB_CS5536_MSR_MAILBOX_CONFIG) ($t0)
|
||||||
|
|
||||||
/* Set GPIO LBAR. */
|
/* Set GPIO LBAR. */
|
||||||
lui $a0, %hi(GRUB_CS5536_MSR_GPIO_BAR)
|
lui $a0, %hi(GRUB_CS5536_MSR_GPIO_BAR)
|
||||||
@ -121,21 +121,21 @@ retry_cs5536:
|
|||||||
bal message
|
bal message
|
||||||
addiu $a0, $a0, %lo(smbus_enabled)
|
addiu $a0, $a0, %lo(smbus_enabled)
|
||||||
|
|
||||||
lui $t0, %hi(GRUB_MACHINE_PCI_IO_BASE + GRUB_CS5536_LBAR_SMBUS)
|
lui $t0, %hi(GRUB_MACHINE_PCI_IO_BASE_2F + GRUB_CS5536_LBAR_SMBUS)
|
||||||
|
|
||||||
/* Disable SMB. */
|
/* Disable SMB. */
|
||||||
sb $zero, %lo(GRUB_MACHINE_PCI_IO_BASE + GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL2) ($t0)
|
sb $zero, %lo(GRUB_MACHINE_PCI_IO_BASE_2F + GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL2) ($t0)
|
||||||
|
|
||||||
/* Disable interrupts. */
|
/* Disable interrupts. */
|
||||||
sb $zero, %lo(GRUB_MACHINE_PCI_IO_BASE + GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1) ($t0)
|
sb $zero, %lo(GRUB_MACHINE_PCI_IO_BASE_2F + GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1) ($t0)
|
||||||
|
|
||||||
/* Set as master. */
|
/* Set as master. */
|
||||||
sb $zero, %lo(GRUB_MACHINE_PCI_IO_BASE + GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_ADDR) ($t0)
|
sb $zero, %lo(GRUB_MACHINE_PCI_IO_BASE_2F + GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_ADDR) ($t0)
|
||||||
|
|
||||||
/* Launch SMBus controller at slowest speed possible. */
|
/* Launch SMBus controller at slowest speed possible. */
|
||||||
ori $t1, $zero, 0xff
|
ori $t1, $zero, 0xff
|
||||||
sb $t1, %lo(GRUB_MACHINE_PCI_IO_BASE + GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL3) ($t0)
|
sb $t1, %lo(GRUB_MACHINE_PCI_IO_BASE_2F + GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL3) ($t0)
|
||||||
sb $t1, %lo(GRUB_MACHINE_PCI_IO_BASE + GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL2) ($t0)
|
sb $t1, %lo(GRUB_MACHINE_PCI_IO_BASE_2F + GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL2) ($t0)
|
||||||
|
|
||||||
/* Yeeloong and Fuloong2f have only one memory slot. */
|
/* Yeeloong and Fuloong2f have only one memory slot. */
|
||||||
/* Output first byte on serial for debugging. */
|
/* Output first byte on serial for debugging. */
|
||||||
@ -237,8 +237,8 @@ other_exception:
|
|||||||
addiu $a0, $a0, %lo(unhandled_exception)
|
addiu $a0, $a0, %lo(unhandled_exception)
|
||||||
|
|
||||||
gpio_init:
|
gpio_init:
|
||||||
lui $t0, %hi(GRUB_MACHINE_PCI_IO_BASE + GRUB_CS5536_LBAR_GPIO)
|
lui $t0, %hi(GRUB_MACHINE_PCI_IO_BASE_2F + GRUB_CS5536_LBAR_GPIO)
|
||||||
addiu $t0, $t0, %lo(GRUB_MACHINE_PCI_IO_BASE + GRUB_CS5536_LBAR_GPIO)
|
addiu $t0, $t0, %lo(GRUB_MACHINE_PCI_IO_BASE_2F + GRUB_CS5536_LBAR_GPIO)
|
||||||
lui $t1, %hi (gpio_dump)
|
lui $t1, %hi (gpio_dump)
|
||||||
addiu $t1, $t1, %lo (gpio_dump)
|
addiu $t1, $t1, %lo (gpio_dump)
|
||||||
|
|
||||||
@ -368,18 +368,18 @@ self:
|
|||||||
Clobbered: $t0
|
Clobbered: $t0
|
||||||
*/
|
*/
|
||||||
wrmsr:
|
wrmsr:
|
||||||
lui $t0, %hi(GRUB_MACHINE_PCI_CONFSPACE)
|
lui $t0, %hi(GRUB_MACHINE_PCI_CONFSPACE_2F)
|
||||||
sw $a0, (%lo(GRUB_MACHINE_PCI_CONFSPACE) + GRUB_CS5536_MSR_MAILBOX_ADDR) ($t0)
|
sw $a0, (%lo(GRUB_MACHINE_PCI_CONFSPACE_2F) + GRUB_CS5536_MSR_MAILBOX_ADDR) ($t0)
|
||||||
sw $a1, (%lo(GRUB_MACHINE_PCI_CONFSPACE) + GRUB_CS5536_MSR_MAILBOX_DATA0) ($t0)
|
sw $a1, (%lo(GRUB_MACHINE_PCI_CONFSPACE_2F) + GRUB_CS5536_MSR_MAILBOX_DATA0) ($t0)
|
||||||
jr $ra
|
jr $ra
|
||||||
sw $a2, (%lo(GRUB_MACHINE_PCI_CONFSPACE) + GRUB_CS5536_MSR_MAILBOX_DATA1) ($t0)
|
sw $a2, (%lo(GRUB_MACHINE_PCI_CONFSPACE_2F) + GRUB_CS5536_MSR_MAILBOX_DATA1) ($t0)
|
||||||
|
|
||||||
/* Wait for SMBus data or empty transmitter. */
|
/* Wait for SMBus data or empty transmitter. */
|
||||||
/* In: $a0 = exception handler. Out: none. Clobbered: $t0, $t1 */
|
/* In: $a0 = exception handler. Out: none. Clobbered: $t0, $t1 */
|
||||||
smbus_wait:
|
smbus_wait:
|
||||||
1:
|
1:
|
||||||
lui $t0, %hi(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_STATUS + GRUB_MACHINE_PCI_IO_BASE)
|
lui $t0, %hi(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_STATUS + GRUB_MACHINE_PCI_IO_BASE_2F)
|
||||||
lb $t0, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_STATUS + GRUB_MACHINE_PCI_IO_BASE) ($t0)
|
lb $t0, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_STATUS + GRUB_MACHINE_PCI_IO_BASE_2F) ($t0)
|
||||||
andi $t1, $t0, GRUB_CS5536_SMB_REG_STATUS_SDAST
|
andi $t1, $t0, GRUB_CS5536_SMB_REG_STATUS_SDAST
|
||||||
bne $t1, $zero, return
|
bne $t1, $zero, return
|
||||||
nop
|
nop
|
||||||
@ -401,52 +401,52 @@ read_spd:
|
|||||||
addiu $a0, $a0, %hi(read_spd_fail)
|
addiu $a0, $a0, %hi(read_spd_fail)
|
||||||
|
|
||||||
/* Send START. */
|
/* Send START. */
|
||||||
lui $t0, %hi(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1 + GRUB_MACHINE_PCI_IO_BASE)
|
lui $t0, %hi(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1 + GRUB_MACHINE_PCI_IO_BASE_2F)
|
||||||
lb $t1, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1 + GRUB_MACHINE_PCI_IO_BASE) ($t0)
|
lb $t1, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1 + GRUB_MACHINE_PCI_IO_BASE_2F) ($t0)
|
||||||
ori $t1, $t1, GRUB_CS5536_SMB_REG_CTRL1_START
|
ori $t1, $t1, GRUB_CS5536_SMB_REG_CTRL1_START
|
||||||
bal smbus_wait
|
bal smbus_wait
|
||||||
sb $t1, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1 + GRUB_MACHINE_PCI_IO_BASE) ($t0)
|
sb $t1, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1 + GRUB_MACHINE_PCI_IO_BASE_2F) ($t0)
|
||||||
|
|
||||||
/* Send device address. */
|
/* Send device address. */
|
||||||
lui $t0, %hi(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_DATA + GRUB_MACHINE_PCI_IO_BASE)
|
lui $t0, %hi(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_DATA + GRUB_MACHINE_PCI_IO_BASE_2F)
|
||||||
sll $t1, $a1, 1
|
sll $t1, $a1, 1
|
||||||
bal smbus_wait
|
bal smbus_wait
|
||||||
sb $t1, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_DATA + GRUB_MACHINE_PCI_IO_BASE) ($t0)
|
sb $t1, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_DATA + GRUB_MACHINE_PCI_IO_BASE_2F) ($t0)
|
||||||
|
|
||||||
/* Send ACK. */
|
/* Send ACK. */
|
||||||
lui $t0, %hi(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1 + GRUB_MACHINE_PCI_IO_BASE)
|
lui $t0, %hi(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1 + GRUB_MACHINE_PCI_IO_BASE_2F)
|
||||||
lb $t1, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1 + GRUB_MACHINE_PCI_IO_BASE) ($t0)
|
lb $t1, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1 + GRUB_MACHINE_PCI_IO_BASE_2F) ($t0)
|
||||||
ori $t1, $t1, GRUB_CS5536_SMB_REG_CTRL1_ACK
|
ori $t1, $t1, GRUB_CS5536_SMB_REG_CTRL1_ACK
|
||||||
sb $t1, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1 + GRUB_MACHINE_PCI_IO_BASE) ($t0)
|
sb $t1, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1 + GRUB_MACHINE_PCI_IO_BASE_2F) ($t0)
|
||||||
|
|
||||||
/* Send byte address. */
|
/* Send byte address. */
|
||||||
lui $t0, %hi(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_DATA + GRUB_MACHINE_PCI_IO_BASE)
|
lui $t0, %hi(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_DATA + GRUB_MACHINE_PCI_IO_BASE_2F)
|
||||||
bal smbus_wait
|
bal smbus_wait
|
||||||
sb $t2, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_DATA + GRUB_MACHINE_PCI_IO_BASE) ($t0)
|
sb $t2, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_DATA + GRUB_MACHINE_PCI_IO_BASE_2F) ($t0)
|
||||||
|
|
||||||
/* Send START. */
|
/* Send START. */
|
||||||
lui $t0, %hi(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1 + GRUB_MACHINE_PCI_IO_BASE)
|
lui $t0, %hi(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1 + GRUB_MACHINE_PCI_IO_BASE_2F)
|
||||||
lb $t1, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1 + GRUB_MACHINE_PCI_IO_BASE) ($t0)
|
lb $t1, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1 + GRUB_MACHINE_PCI_IO_BASE_2F) ($t0)
|
||||||
ori $t1, $t1, GRUB_CS5536_SMB_REG_CTRL1_START
|
ori $t1, $t1, GRUB_CS5536_SMB_REG_CTRL1_START
|
||||||
bal smbus_wait
|
bal smbus_wait
|
||||||
sb $t1, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1 + GRUB_MACHINE_PCI_IO_BASE) ($t0)
|
sb $t1, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1 + GRUB_MACHINE_PCI_IO_BASE_2F) ($t0)
|
||||||
|
|
||||||
/* Send device address. */
|
/* Send device address. */
|
||||||
lui $t0, %hi(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_DATA + GRUB_MACHINE_PCI_IO_BASE)
|
lui $t0, %hi(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_DATA + GRUB_MACHINE_PCI_IO_BASE_2F)
|
||||||
sll $t1, $a1, 1
|
sll $t1, $a1, 1
|
||||||
ori $t1, $t1, 1
|
ori $t1, $t1, 1
|
||||||
bal smbus_wait
|
bal smbus_wait
|
||||||
sb $t1, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_DATA + GRUB_MACHINE_PCI_IO_BASE) ($t0)
|
sb $t1, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_DATA + GRUB_MACHINE_PCI_IO_BASE_2F) ($t0)
|
||||||
|
|
||||||
/* Send STOP. */
|
/* Send STOP. */
|
||||||
lui $t0, %hi(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1 + GRUB_MACHINE_PCI_IO_BASE)
|
lui $t0, %hi(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1 + GRUB_MACHINE_PCI_IO_BASE_2F)
|
||||||
lb $t1, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1 + GRUB_MACHINE_PCI_IO_BASE) ($t0)
|
lb $t1, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1 + GRUB_MACHINE_PCI_IO_BASE_2F) ($t0)
|
||||||
ori $t1, $t1, GRUB_CS5536_SMB_REG_CTRL1_STOP
|
ori $t1, $t1, GRUB_CS5536_SMB_REG_CTRL1_STOP
|
||||||
bal smbus_wait
|
bal smbus_wait
|
||||||
sb $t1, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1 + GRUB_MACHINE_PCI_IO_BASE) ($t0)
|
sb $t1, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1 + GRUB_MACHINE_PCI_IO_BASE_2F) ($t0)
|
||||||
|
|
||||||
lui $t0, %hi(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_DATA + GRUB_MACHINE_PCI_IO_BASE)
|
lui $t0, %hi(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_DATA + GRUB_MACHINE_PCI_IO_BASE_2F)
|
||||||
lb $v0, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_DATA + GRUB_MACHINE_PCI_IO_BASE) ($t0)
|
lb $v0, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_DATA + GRUB_MACHINE_PCI_IO_BASE_2F) ($t0)
|
||||||
jr $t3
|
jr $t3
|
||||||
andi $v0, $v0, 0xff
|
andi $v0, $v0, 0xff
|
||||||
read_spd_fail:
|
read_spd_fail:
|
||||||
|
@ -44,8 +44,8 @@ pic_base:
|
|||||||
. = _start + GRUB_BOOT_MACHINE_BOOT_DEVPATH
|
. = _start + GRUB_BOOT_MACHINE_BOOT_DEVPATH
|
||||||
boot_path:
|
boot_path:
|
||||||
. = _start + GRUB_BOOT_MACHINE_KERNEL_BYTE
|
. = _start + GRUB_BOOT_MACHINE_KERNEL_BYTE
|
||||||
kernel_byte: .xword (2 << 9)
|
|
||||||
boot_path_end:
|
boot_path_end:
|
||||||
|
kernel_byte: .xword (2 << 9)
|
||||||
kernel_address: .word GRUB_BOOT_MACHINE_KERNEL_ADDR
|
kernel_address: .word GRUB_BOOT_MACHINE_KERNEL_ADDR
|
||||||
#else
|
#else
|
||||||
#define boot_path (_start + 512 + SCRATCH_PAD_BOOT_SIZE)
|
#define boot_path (_start + 512 + SCRATCH_PAD_BOOT_SIZE)
|
||||||
|
@ -30,8 +30,66 @@ static grub_addr_t addr_win[GRUB_MACHINE_PCI_NUM_WIN] =
|
|||||||
{GRUB_MACHINE_PCI_WIN1_ADDR, GRUB_MACHINE_PCI_WIN2_ADDR,
|
{GRUB_MACHINE_PCI_WIN1_ADDR, GRUB_MACHINE_PCI_WIN2_ADDR,
|
||||||
GRUB_MACHINE_PCI_WIN3_ADDR};
|
GRUB_MACHINE_PCI_WIN3_ADDR};
|
||||||
|
|
||||||
|
grub_bonito_type_t grub_bonito_type;
|
||||||
|
|
||||||
|
static volatile void *
|
||||||
|
config_addr (grub_pci_address_t addr)
|
||||||
|
{
|
||||||
|
if (grub_bonito_type == GRUB_BONITO_2F)
|
||||||
|
{
|
||||||
|
GRUB_MACHINE_PCI_CONF_CTRL_REG_2F = 1 << ((addr >> 11) & 0xf);
|
||||||
|
return (volatile void *) (GRUB_MACHINE_PCI_CONFSPACE_2F
|
||||||
|
| (addr & 0x07ff));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
|
||||||
|
if (addr >> 16)
|
||||||
|
return (volatile void *) (GRUB_MACHINE_PCI_CONFSPACE_3A_EXT | addr);
|
||||||
|
else
|
||||||
|
return (volatile void *) (GRUB_MACHINE_PCI_CONFSPACE_3A | addr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
grub_uint32_t
|
||||||
|
grub_pci_read (grub_pci_address_t addr)
|
||||||
|
{
|
||||||
|
return *(volatile grub_uint32_t *) config_addr (addr);
|
||||||
|
}
|
||||||
|
|
||||||
|
grub_uint16_t
|
||||||
|
grub_pci_read_word (grub_pci_address_t addr)
|
||||||
|
{
|
||||||
|
return *(volatile grub_uint16_t *) config_addr (addr);
|
||||||
|
}
|
||||||
|
|
||||||
|
grub_uint8_t
|
||||||
|
grub_pci_read_byte (grub_pci_address_t addr)
|
||||||
|
{
|
||||||
|
return *(volatile grub_uint8_t *) config_addr (addr);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
grub_pci_write (grub_pci_address_t addr, grub_uint32_t data)
|
||||||
|
{
|
||||||
|
*(volatile grub_uint32_t *) config_addr (addr) = data;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
grub_pci_write_word (grub_pci_address_t addr, grub_uint16_t data)
|
||||||
|
{
|
||||||
|
*(volatile grub_uint16_t *) config_addr (addr) = data;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
grub_pci_write_byte (grub_pci_address_t addr, grub_uint8_t data)
|
||||||
|
{
|
||||||
|
*(volatile grub_uint8_t *) config_addr (addr) = data;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static inline void
|
static inline void
|
||||||
write_bases (void)
|
write_bases_2f (void)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
grub_uint32_t reg = 0;
|
grub_uint32_t reg = 0;
|
||||||
@ -39,38 +97,54 @@ write_bases (void)
|
|||||||
reg |= (((base_win[i] >> GRUB_MACHINE_PCI_WIN_SHIFT)
|
reg |= (((base_win[i] >> GRUB_MACHINE_PCI_WIN_SHIFT)
|
||||||
& GRUB_MACHINE_PCI_WIN_MASK)
|
& GRUB_MACHINE_PCI_WIN_MASK)
|
||||||
<< (i * GRUB_MACHINE_PCI_WIN_MASK_SIZE));
|
<< (i * GRUB_MACHINE_PCI_WIN_MASK_SIZE));
|
||||||
GRUB_MACHINE_PCI_IO_CTRL_REG = reg;
|
GRUB_MACHINE_PCI_IO_CTRL_REG_2F = reg;
|
||||||
}
|
}
|
||||||
|
|
||||||
volatile void *
|
volatile void *
|
||||||
grub_pci_device_map_range (grub_pci_device_t dev __attribute__ ((unused)),
|
grub_pci_device_map_range (grub_pci_device_t dev __attribute__ ((unused)),
|
||||||
grub_addr_t base, grub_size_t size)
|
grub_addr_t base, grub_size_t size)
|
||||||
{
|
{
|
||||||
int i;
|
if (grub_bonito_type == GRUB_BONITO_2F)
|
||||||
grub_addr_t newbase;
|
{
|
||||||
|
int i;
|
||||||
|
grub_addr_t newbase;
|
||||||
|
|
||||||
/* First try already used registers. */
|
/* First try already used registers. */
|
||||||
for (i = 0; i < GRUB_MACHINE_PCI_NUM_WIN; i++)
|
for (i = 0; i < GRUB_MACHINE_PCI_NUM_WIN; i++)
|
||||||
if (usage_win[i] && base_win[i] <= base
|
if (usage_win[i] && base_win[i] <= base
|
||||||
&& base_win[i] + sizes_win[i] > base + size)
|
&& base_win[i] + sizes_win[i] > base + size)
|
||||||
{
|
{
|
||||||
usage_win[i]++;
|
usage_win[i]++;
|
||||||
return (void *)
|
return (void *)
|
||||||
(addr_win[i] | (base & GRUB_MACHINE_PCI_WIN_OFFSET_MASK));
|
(addr_win[i] | (base & GRUB_MACHINE_PCI_WIN_OFFSET_MASK));
|
||||||
}
|
}
|
||||||
/* Map new register. */
|
/* Map new register. */
|
||||||
newbase = base & ~GRUB_MACHINE_PCI_WIN_OFFSET_MASK;
|
newbase = base & ~GRUB_MACHINE_PCI_WIN_OFFSET_MASK;
|
||||||
for (i = 0; i < GRUB_MACHINE_PCI_NUM_WIN; i++)
|
for (i = 0; i < GRUB_MACHINE_PCI_NUM_WIN; i++)
|
||||||
if (!usage_win[i] && newbase <= base
|
if (!usage_win[i] && newbase <= base
|
||||||
&& newbase + sizes_win[i] > base + size)
|
&& newbase + sizes_win[i] > base + size)
|
||||||
{
|
{
|
||||||
usage_win[i]++;
|
usage_win[i]++;
|
||||||
base_win[i] = newbase;
|
base_win[i] = newbase;
|
||||||
write_bases ();
|
write_bases_2f ();
|
||||||
return (void *)
|
return (void *)
|
||||||
(addr_win[i] | (base & GRUB_MACHINE_PCI_WIN_OFFSET_MASK));
|
(addr_win[i] | (base & GRUB_MACHINE_PCI_WIN_OFFSET_MASK));
|
||||||
}
|
}
|
||||||
grub_fatal ("Out of PCI windows.");
|
grub_fatal ("Out of PCI windows.");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int region = 0;
|
||||||
|
if (base >= 0x10000000
|
||||||
|
&& base + size <= 0x18000000)
|
||||||
|
region = 1;
|
||||||
|
if (base >= 0x1c000000
|
||||||
|
&& base + size <= 0x1f000000)
|
||||||
|
region = 2;
|
||||||
|
if (region == 0)
|
||||||
|
grub_fatal ("Attempt to map out of regions");
|
||||||
|
return (void *) (0xa0000000 | base);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void *
|
void *
|
||||||
@ -86,14 +160,17 @@ grub_pci_device_unmap_range (grub_pci_device_t dev __attribute__ ((unused)),
|
|||||||
volatile void *mem,
|
volatile void *mem,
|
||||||
grub_size_t size __attribute__ ((unused)))
|
grub_size_t size __attribute__ ((unused)))
|
||||||
{
|
{
|
||||||
int i;
|
if (grub_bonito_type == GRUB_BONITO_2F)
|
||||||
for (i = 0; i < GRUB_MACHINE_PCI_NUM_WIN; i++)
|
{
|
||||||
if (usage_win[i] && addr_win[i]
|
int i;
|
||||||
== (((grub_addr_t) mem | 0x20000000)
|
for (i = 0; i < GRUB_MACHINE_PCI_NUM_WIN; i++)
|
||||||
& ~GRUB_MACHINE_PCI_WIN_OFFSET_MASK))
|
if (usage_win[i] && addr_win[i]
|
||||||
{
|
== (((grub_addr_t) mem | 0x20000000)
|
||||||
usage_win[i]--;
|
& ~GRUB_MACHINE_PCI_WIN_OFFSET_MASK))
|
||||||
return;
|
{
|
||||||
}
|
usage_win[i]--;
|
||||||
grub_fatal ("Tried to unmap not mapped region");
|
return;
|
||||||
|
}
|
||||||
|
grub_fatal ("Tried to unmap not mapped region");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1513,7 +1513,7 @@ grub_ehci_check_transfer (grub_usb_controller_t dev,
|
|||||||
struct grub_ehci *e = dev->data;
|
struct grub_ehci *e = dev->data;
|
||||||
struct grub_ehci_transfer_controller_data *cdata =
|
struct grub_ehci_transfer_controller_data *cdata =
|
||||||
transfer->controller_data;
|
transfer->controller_data;
|
||||||
grub_uint32_t token;
|
grub_uint32_t token, token_ftd;
|
||||||
|
|
||||||
grub_dprintf ("ehci",
|
grub_dprintf ("ehci",
|
||||||
"check_transfer: EHCI STATUS=%08x, cdata=%p, qh=%p\n",
|
"check_transfer: EHCI STATUS=%08x, cdata=%p, qh=%p\n",
|
||||||
@ -1541,13 +1541,18 @@ grub_ehci_check_transfer (grub_usb_controller_t dev,
|
|||||||
return grub_ehci_parse_notrun (dev, transfer, actual);
|
return grub_ehci_parse_notrun (dev, transfer, actual);
|
||||||
|
|
||||||
token = grub_le_to_cpu32 (cdata->qh_virt->td_overlay.token);
|
token = grub_le_to_cpu32 (cdata->qh_virt->td_overlay.token);
|
||||||
|
/* If the transfer consist from only one TD, we should check */
|
||||||
|
/* if the TD was really executed and deactivated - to prevent */
|
||||||
|
/* false detection of transfer finish. */
|
||||||
|
token_ftd = grub_le_to_cpu32 (cdata->td_first_virt->token);
|
||||||
|
|
||||||
/* Detect QH halted */
|
/* Detect QH halted */
|
||||||
if ((token & GRUB_EHCI_STATUS_HALTED) != 0)
|
if ((token & GRUB_EHCI_STATUS_HALTED) != 0)
|
||||||
return grub_ehci_parse_halt (dev, transfer, actual);
|
return grub_ehci_parse_halt (dev, transfer, actual);
|
||||||
|
|
||||||
/* Detect QH not active - QH is not active and no next TD */
|
/* Detect QH not active - QH is not active and no next TD */
|
||||||
if ((token & GRUB_EHCI_STATUS_ACTIVE) == 0)
|
if (token && ((token & GRUB_EHCI_STATUS_ACTIVE) == 0)
|
||||||
|
&& ((token_ftd & GRUB_EHCI_STATUS_ACTIVE) == 0))
|
||||||
{
|
{
|
||||||
/* It could be finish at all or short packet condition */
|
/* It could be finish at all or short packet condition */
|
||||||
if ((grub_le_to_cpu32 (cdata->qh_virt->td_overlay.next_td)
|
if ((grub_le_to_cpu32 (cdata->qh_virt->td_overlay.next_td)
|
||||||
|
@ -47,7 +47,7 @@ struct grub_ohci_hcca
|
|||||||
grub_uint32_t donehead;
|
grub_uint32_t donehead;
|
||||||
|
|
||||||
grub_uint8_t reserved[116];
|
grub_uint8_t reserved[116];
|
||||||
} __attribute__((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
/* OHCI General Transfer Descriptor */
|
/* OHCI General Transfer Descriptor */
|
||||||
struct grub_ohci_td
|
struct grub_ohci_td
|
||||||
@ -64,7 +64,7 @@ struct grub_ohci_td
|
|||||||
* physical address in CPU endian */
|
* physical address in CPU endian */
|
||||||
grub_uint32_t tr_index; /* index of TD in transfer */
|
grub_uint32_t tr_index; /* index of TD in transfer */
|
||||||
grub_uint8_t pad[8 - sizeof (volatile struct grub_ohci_td *)]; /* padding to 32 bytes */
|
grub_uint8_t pad[8 - sizeof (volatile struct grub_ohci_td *)]; /* padding to 32 bytes */
|
||||||
} __attribute__((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
/* OHCI Endpoint Descriptor. */
|
/* OHCI Endpoint Descriptor. */
|
||||||
struct grub_ohci_ed
|
struct grub_ohci_ed
|
||||||
@ -73,7 +73,7 @@ struct grub_ohci_ed
|
|||||||
grub_uint32_t td_tail;
|
grub_uint32_t td_tail;
|
||||||
grub_uint32_t td_head;
|
grub_uint32_t td_head;
|
||||||
grub_uint32_t next_ed;
|
grub_uint32_t next_ed;
|
||||||
} __attribute__((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
typedef volatile struct grub_ohci_td *grub_ohci_td_t;
|
typedef volatile struct grub_ohci_td *grub_ohci_td_t;
|
||||||
typedef volatile struct grub_ohci_ed *grub_ohci_ed_t;
|
typedef volatile struct grub_ohci_ed *grub_ohci_ed_t;
|
||||||
|
@ -55,7 +55,7 @@ struct grub_pl2303_config
|
|||||||
grub_uint8_t stop_bits;
|
grub_uint8_t stop_bits;
|
||||||
grub_uint8_t parity;
|
grub_uint8_t parity;
|
||||||
grub_uint8_t word_len;
|
grub_uint8_t word_len;
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
real_config (struct grub_serial_port *port)
|
real_config (struct grub_serial_port *port)
|
||||||
|
@ -105,7 +105,7 @@ struct grub_uhci_qh
|
|||||||
/* Queue heads are aligned on 16 bytes, pad so a queue head is 16
|
/* Queue heads are aligned on 16 bytes, pad so a queue head is 16
|
||||||
bytes so we can store many in a 4K page. */
|
bytes so we can store many in a 4K page. */
|
||||||
grub_uint8_t pad[8];
|
grub_uint8_t pad[8];
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
/* UHCI Transfer Descriptor. */
|
/* UHCI Transfer Descriptor. */
|
||||||
struct grub_uhci_td
|
struct grub_uhci_td
|
||||||
@ -129,7 +129,7 @@ struct grub_uhci_td
|
|||||||
|
|
||||||
/* 3 additional 32 bits words reserved for the Host Controller Driver. */
|
/* 3 additional 32 bits words reserved for the Host Controller Driver. */
|
||||||
grub_uint32_t data[3];
|
grub_uint32_t data[3];
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
typedef volatile struct grub_uhci_td *grub_uhci_td_t;
|
typedef volatile struct grub_uhci_td *grub_uhci_td_t;
|
||||||
typedef volatile struct grub_uhci_qh *grub_uhci_qh_t;
|
typedef volatile struct grub_uhci_qh *grub_uhci_qh_t;
|
||||||
|
@ -227,7 +227,7 @@ grub_acpi_create_ebda (void)
|
|||||||
grub_dprintf ("acpi", "Copying rsdpv2 to %p\n", target);
|
grub_dprintf ("acpi", "Copying rsdpv2 to %p\n", target);
|
||||||
v2inebda = target;
|
v2inebda = target;
|
||||||
target += v2->length;
|
target += v2->length;
|
||||||
target = (grub_uint8_t *) ((((long) target - 1) | 0xf) + 1);
|
target = (grub_uint8_t *) ((((grub_addr_t) target - 1) | 0xf) + 1);
|
||||||
v2 = 0;
|
v2 = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -246,7 +246,7 @@ grub_acpi_create_ebda (void)
|
|||||||
grub_dprintf ("acpi", "Copying rsdpv1 to %p\n", target);
|
grub_dprintf ("acpi", "Copying rsdpv1 to %p\n", target);
|
||||||
v1inebda = target;
|
v1inebda = target;
|
||||||
target += sizeof (struct grub_acpi_rsdp_v10);
|
target += sizeof (struct grub_acpi_rsdp_v10);
|
||||||
target = (grub_uint8_t *) ((((long) target - 1) | 0xf) + 1);
|
target = (grub_uint8_t *) ((((grub_addr_t) target - 1) | 0xf) + 1);
|
||||||
v1 = 0;
|
v1 = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -265,7 +265,7 @@ grub_acpi_create_ebda (void)
|
|||||||
grub_memcpy (target, v2, v2->length);
|
grub_memcpy (target, v2, v2->length);
|
||||||
v2inebda = target;
|
v2inebda = target;
|
||||||
target += v2->length;
|
target += v2->length;
|
||||||
target = (grub_uint8_t *) ((((long) target - 1) | 0xf) + 1);
|
target = (grub_uint8_t *) ((((grub_addr_t) target - 1) | 0xf) + 1);
|
||||||
v2 = 0;
|
v2 = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -282,7 +282,7 @@ grub_acpi_create_ebda (void)
|
|||||||
grub_memcpy (target, v1, sizeof (struct grub_acpi_rsdp_v10));
|
grub_memcpy (target, v1, sizeof (struct grub_acpi_rsdp_v10));
|
||||||
v1inebda = target;
|
v1inebda = target;
|
||||||
target += sizeof (struct grub_acpi_rsdp_v10);
|
target += sizeof (struct grub_acpi_rsdp_v10);
|
||||||
target = (grub_uint8_t *) ((((long) target - 1) | 0xf) + 1);
|
target = (grub_uint8_t *) ((((grub_addr_t) target - 1) | 0xf) + 1);
|
||||||
v1 = 0;
|
v1 = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -306,7 +306,7 @@ grub_acpi_create_ebda (void)
|
|||||||
*target = 0;
|
*target = 0;
|
||||||
|
|
||||||
grub_dprintf ("acpi", "Switching EBDA\n");
|
grub_dprintf ("acpi", "Switching EBDA\n");
|
||||||
(*((grub_uint16_t *) 0x40e)) = ((long)targetebda) >> 4;
|
(*((grub_uint16_t *) 0x40e)) = ((grub_addr_t) targetebda) >> 4;
|
||||||
grub_dprintf ("acpi", "EBDA switched\n");
|
grub_dprintf ("acpi", "EBDA switched\n");
|
||||||
|
|
||||||
return GRUB_ERR_NONE;
|
return GRUB_ERR_NONE;
|
||||||
|
@ -26,14 +26,14 @@ struct grub_acpi_rsdp_v10 *
|
|||||||
grub_machine_acpi_get_rsdpv1 (void)
|
grub_machine_acpi_get_rsdpv1 (void)
|
||||||
{
|
{
|
||||||
unsigned i;
|
unsigned i;
|
||||||
static grub_efi_guid_t acpi_guid = GRUB_EFI_ACPI_TABLE_GUID;
|
static grub_efi_packed_guid_t acpi_guid = GRUB_EFI_ACPI_TABLE_GUID;
|
||||||
|
|
||||||
for (i = 0; i < grub_efi_system_table->num_table_entries; i++)
|
for (i = 0; i < grub_efi_system_table->num_table_entries; i++)
|
||||||
{
|
{
|
||||||
grub_efi_guid_t *guid =
|
grub_efi_packed_guid_t *guid =
|
||||||
&grub_efi_system_table->configuration_table[i].vendor_guid;
|
&grub_efi_system_table->configuration_table[i].vendor_guid;
|
||||||
|
|
||||||
if (! grub_memcmp (guid, &acpi_guid, sizeof (grub_efi_guid_t)))
|
if (! grub_memcmp (guid, &acpi_guid, sizeof (grub_efi_packed_guid_t)))
|
||||||
return (struct grub_acpi_rsdp_v10 *)
|
return (struct grub_acpi_rsdp_v10 *)
|
||||||
grub_efi_system_table->configuration_table[i].vendor_table;
|
grub_efi_system_table->configuration_table[i].vendor_table;
|
||||||
}
|
}
|
||||||
@ -44,14 +44,14 @@ struct grub_acpi_rsdp_v20 *
|
|||||||
grub_machine_acpi_get_rsdpv2 (void)
|
grub_machine_acpi_get_rsdpv2 (void)
|
||||||
{
|
{
|
||||||
unsigned i;
|
unsigned i;
|
||||||
static grub_efi_guid_t acpi20_guid = GRUB_EFI_ACPI_20_TABLE_GUID;
|
static grub_efi_packed_guid_t acpi20_guid = GRUB_EFI_ACPI_20_TABLE_GUID;
|
||||||
|
|
||||||
for (i = 0; i < grub_efi_system_table->num_table_entries; i++)
|
for (i = 0; i < grub_efi_system_table->num_table_entries; i++)
|
||||||
{
|
{
|
||||||
grub_efi_guid_t *guid =
|
grub_efi_packed_guid_t *guid =
|
||||||
&grub_efi_system_table->configuration_table[i].vendor_guid;
|
&grub_efi_system_table->configuration_table[i].vendor_guid;
|
||||||
|
|
||||||
if (! grub_memcmp (guid, &acpi20_guid, sizeof (grub_efi_guid_t)))
|
if (! grub_memcmp (guid, &acpi20_guid, sizeof (grub_efi_packed_guid_t)))
|
||||||
return (struct grub_acpi_rsdp_v20 *)
|
return (struct grub_acpi_rsdp_v20 *)
|
||||||
grub_efi_system_table->configuration_table[i].vendor_table;
|
grub_efi_system_table->configuration_table[i].vendor_table;
|
||||||
}
|
}
|
||||||
|
@ -105,7 +105,7 @@ fake_bios_data (int use_rom)
|
|||||||
smbios = 0;
|
smbios = 0;
|
||||||
for (i = 0; i < grub_efi_system_table->num_table_entries; i++)
|
for (i = 0; i < grub_efi_system_table->num_table_entries; i++)
|
||||||
{
|
{
|
||||||
grub_efi_guid_t *guid =
|
grub_efi_packed_guid_t *guid =
|
||||||
&grub_efi_system_table->configuration_table[i].vendor_guid;
|
&grub_efi_system_table->configuration_table[i].vendor_guid;
|
||||||
|
|
||||||
if (! grub_memcmp (guid, &acpi2_guid, sizeof (grub_efi_guid_t)))
|
if (! grub_memcmp (guid, &acpi2_guid, sizeof (grub_efi_guid_t)))
|
||||||
|
@ -95,7 +95,7 @@ grub_cmd_lsefi (grub_command_t cmd __attribute__ ((unused)),
|
|||||||
grub_efi_handle_t handle = handles[i];
|
grub_efi_handle_t handle = handles[i];
|
||||||
grub_efi_status_t status;
|
grub_efi_status_t status;
|
||||||
grub_efi_uintn_t num_protocols;
|
grub_efi_uintn_t num_protocols;
|
||||||
grub_efi_guid_t **protocols;
|
grub_efi_packed_guid_t **protocols;
|
||||||
grub_efi_device_path_t *dp;
|
grub_efi_device_path_t *dp;
|
||||||
|
|
||||||
grub_printf ("Handle %p\n", handle);
|
grub_printf ("Handle %p\n", handle);
|
||||||
|
@ -71,7 +71,7 @@ grub_cmd_lsefisystab (struct grub_command *cmd __attribute__ ((unused)),
|
|||||||
|
|
||||||
grub_printf (", Version=%x\n", st->firmware_revision);
|
grub_printf (", Version=%x\n", st->firmware_revision);
|
||||||
|
|
||||||
grub_printf ("%ld tables:\n", st->num_table_entries);
|
grub_printf ("%lld tables:\n", (long long) st->num_table_entries);
|
||||||
t = st->configuration_table;
|
t = st->configuration_table;
|
||||||
for (i = 0; i < st->num_table_entries; i++)
|
for (i = 0; i < st->num_table_entries; i++)
|
||||||
{
|
{
|
||||||
|
@ -32,7 +32,7 @@ disp_sal (void *table)
|
|||||||
{
|
{
|
||||||
struct grub_efi_sal_system_table *t = table;
|
struct grub_efi_sal_system_table *t = table;
|
||||||
void *desc;
|
void *desc;
|
||||||
grub_uint32_t len, l;
|
grub_uint32_t len, l, i;
|
||||||
|
|
||||||
grub_printf ("SAL rev: %02x, signature: %x, len:%x\n",
|
grub_printf ("SAL rev: %02x, signature: %x, len:%x\n",
|
||||||
t->sal_rev, t->signature, t->total_table_len);
|
t->sal_rev, t->signature, t->total_table_len);
|
||||||
@ -44,7 +44,9 @@ disp_sal (void *table)
|
|||||||
|
|
||||||
desc = t->entries;
|
desc = t->entries;
|
||||||
len = t->total_table_len - sizeof (struct grub_efi_sal_system_table);
|
len = t->total_table_len - sizeof (struct grub_efi_sal_system_table);
|
||||||
while (len > 0)
|
if (t->total_table_len <= sizeof (struct grub_efi_sal_system_table))
|
||||||
|
return;
|
||||||
|
for (i = 0; i < t->entry_count; i++)
|
||||||
{
|
{
|
||||||
switch (*(grub_uint8_t *) desc)
|
switch (*(grub_uint8_t *) desc)
|
||||||
{
|
{
|
||||||
@ -123,6 +125,8 @@ disp_sal (void *table)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
desc = (grub_uint8_t *)desc + l;
|
desc = (grub_uint8_t *)desc + l;
|
||||||
|
if (len <= l)
|
||||||
|
return;
|
||||||
len -= l;
|
len -= l;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -135,12 +139,12 @@ grub_cmd_lssal (struct grub_command *cmd __attribute__ ((unused)),
|
|||||||
const grub_efi_system_table_t *st = grub_efi_system_table;
|
const grub_efi_system_table_t *st = grub_efi_system_table;
|
||||||
grub_efi_configuration_table_t *t = st->configuration_table;
|
grub_efi_configuration_table_t *t = st->configuration_table;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
grub_efi_guid_t guid = GRUB_EFI_SAL_TABLE_GUID;
|
grub_efi_packed_guid_t guid = GRUB_EFI_SAL_TABLE_GUID;
|
||||||
|
|
||||||
for (i = 0; i < st->num_table_entries; i++)
|
for (i = 0; i < st->num_table_entries; i++)
|
||||||
{
|
{
|
||||||
if (grub_memcmp (&guid, &t->vendor_guid,
|
if (grub_memcmp (&guid, &t->vendor_guid,
|
||||||
sizeof (grub_efi_guid_t)) == 0)
|
sizeof (grub_efi_packed_guid_t)) == 0)
|
||||||
{
|
{
|
||||||
disp_sal (t->vendor_table);
|
disp_sal (t->vendor_table);
|
||||||
return GRUB_ERR_NONE;
|
return GRUB_ERR_NONE;
|
||||||
|
641
grub-core/commands/file.c
Normal file
641
grub-core/commands/file.c
Normal file
@ -0,0 +1,641 @@
|
|||||||
|
/*
|
||||||
|
* GRUB -- GRand Unified Bootloader
|
||||||
|
* Copyright (C) 2013 Free Software Foundation, Inc.
|
||||||
|
*
|
||||||
|
* GRUB is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* GRUB is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <grub/dl.h>
|
||||||
|
#include <grub/misc.h>
|
||||||
|
#include <grub/mm.h>
|
||||||
|
#include <grub/env.h>
|
||||||
|
#include <grub/command.h>
|
||||||
|
#include <grub/extcmd.h>
|
||||||
|
#include <grub/i18n.h>
|
||||||
|
#include <grub/file.h>
|
||||||
|
#include <grub/elf.h>
|
||||||
|
#include <grub/xen_file.h>
|
||||||
|
#include <grub/efi/pe32.h>
|
||||||
|
#include <grub/i386/linux.h>
|
||||||
|
#include <grub/xnu.h>
|
||||||
|
#include <grub/machoload.h>
|
||||||
|
#include <grub/fileid.h>
|
||||||
|
|
||||||
|
GRUB_MOD_LICENSE ("GPLv3+");
|
||||||
|
|
||||||
|
static const struct grub_arg_option options[] = {
|
||||||
|
{"is-i386-xen-pae-domu", 0, 0,
|
||||||
|
N_("Check if FILE can be booted as i386 PAE xen unprivilegied guest"),
|
||||||
|
0, 0},
|
||||||
|
{"is-x86_64-xen-domu", 0, 0,
|
||||||
|
N_("Check if FILE can be booted as x86_64 xen unprivilegied guest"), 0, 0},
|
||||||
|
{"is-x86-xen-dom0", 0, 0,
|
||||||
|
N_("Check if FILE can be used as xen x86 privilegied guest kernel"), 0, 0},
|
||||||
|
{"is-x86-multiboot", 0, 0,
|
||||||
|
N_("Check if FILE can be used as x86 multiboot kernel"), 0, 0},
|
||||||
|
{"is-x86-multiboot2", 0, 0,
|
||||||
|
N_("Check if FILE can be used as x86 multiboot2 kernel"), 0, 0},
|
||||||
|
{"is-arm-linux", 0, 0,
|
||||||
|
N_("Check if FILE is ARM linux"), 0, 0},
|
||||||
|
{"is-ia64-linux", 0, 0,
|
||||||
|
N_("Check if FILE is IA64 linux"), 0, 0},
|
||||||
|
{"is-mips-linux", 0, 0,
|
||||||
|
N_("Check if FILE is MIPS linux"), 0, 0},
|
||||||
|
{"is-mipsel-linux", 0, 0,
|
||||||
|
N_("Check if FILE is MIPSEL linux"), 0, 0},
|
||||||
|
{"is-sparc64-linux", 0, 0,
|
||||||
|
N_("Check if FILE is SPARC64 linux"), 0, 0},
|
||||||
|
{"is-powerpc-linux", 0, 0,
|
||||||
|
N_("Check if FILE is POWERPC linux"), 0, 0},
|
||||||
|
{"is-x86-linux", 0, 0,
|
||||||
|
N_("Check if FILE is x86 linux"), 0, 0},
|
||||||
|
{"is-x86-linux32", 0, 0,
|
||||||
|
N_("Check if FILE is x86 linux supporting 32-bit protocol"), 0, 0},
|
||||||
|
{"is-x86-kfreebsd", 0, 0,
|
||||||
|
N_("Check if FILE is x86 kfreebsd"), 0, 0},
|
||||||
|
{"is-i386-kfreebsd", 0, 0,
|
||||||
|
N_("Check if FILE is i386 kfreebsd"), 0, 0},
|
||||||
|
{"is-x86_64-kfreebsd", 0, 0,
|
||||||
|
N_("Check if FILE is x86_64 kfreebsd"), 0, 0},
|
||||||
|
|
||||||
|
{"is-x86-knetbsd", 0, 0,
|
||||||
|
N_("Check if FILE is x86 knetbsd"), 0, 0},
|
||||||
|
{"is-i386-knetbsd", 0, 0,
|
||||||
|
N_("Check if FILE is i386 knetbsd"), 0, 0},
|
||||||
|
{"is-x86_64-knetbsd", 0, 0,
|
||||||
|
N_("Check if FILE is x86_64 knetbsd"), 0, 0},
|
||||||
|
|
||||||
|
{"is-i386-efi", 0, 0,
|
||||||
|
N_("Check if FILE is i386 EFI file"), 0, 0},
|
||||||
|
{"is-x86_64-efi", 0, 0,
|
||||||
|
N_("Check if FILE is x86-64 EFI file"), 0, 0},
|
||||||
|
{"is-ia64-efi", 0, 0,
|
||||||
|
N_("Check if FILE is IA64 EFI file"), 0, 0},
|
||||||
|
{"is-arm-efi", 0, 0,
|
||||||
|
N_("Check if FILE is ARM EFI file"), 0, 0},
|
||||||
|
{"is-hibernated-hiberfil", 0, 0,
|
||||||
|
N_("Check if FILE is hiberfil.sys in hibernated state"), 0, 0},
|
||||||
|
{"is-x86_64-xnu", 0, 0,
|
||||||
|
N_("Check if FILE is x86_64 xnu (Mac OS X kernel)"), 0, 0},
|
||||||
|
{"is-i386-xnu", 0, 0,
|
||||||
|
N_("Check if FILE is i386 xnu (Mac OS X kernel)"), 0, 0},
|
||||||
|
{"is-xnu-hibr", 0, 0,
|
||||||
|
N_("Check if FILE is xnu (Mac OS X kernel) hibernated image"), 0, 0},
|
||||||
|
{"is-x86-bios-bootsector", 0, 0,
|
||||||
|
N_("Check if FILE is BIOS bootsector"), 0, 0},
|
||||||
|
{0, 0, 0, 0, 0, 0}
|
||||||
|
};
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
IS_PAE_DOMU,
|
||||||
|
IS_64_DOMU,
|
||||||
|
IS_DOM0,
|
||||||
|
IS_MULTIBOOT,
|
||||||
|
IS_MULTIBOOT2,
|
||||||
|
IS_ARM_LINUX,
|
||||||
|
IS_IA64_LINUX,
|
||||||
|
IS_MIPS_LINUX,
|
||||||
|
IS_MIPSEL_LINUX,
|
||||||
|
IS_SPARC64_LINUX,
|
||||||
|
IS_POWERPC_LINUX,
|
||||||
|
IS_X86_LINUX,
|
||||||
|
IS_X86_LINUX32,
|
||||||
|
IS_X86_KFREEBSD,
|
||||||
|
IS_X86_KFREEBSD32,
|
||||||
|
IS_X86_KFREEBSD64,
|
||||||
|
IS_X86_KNETBSD,
|
||||||
|
IS_X86_KNETBSD32,
|
||||||
|
IS_X86_KNETBSD64,
|
||||||
|
IS_32_EFI,
|
||||||
|
IS_64_EFI,
|
||||||
|
IS_IA_EFI,
|
||||||
|
IS_ARM_EFI,
|
||||||
|
IS_HIBERNATED,
|
||||||
|
IS_XNU64,
|
||||||
|
IS_XNU32,
|
||||||
|
IS_XNU_HIBR,
|
||||||
|
IS_BIOS_BOOTSECTOR,
|
||||||
|
OPT_TYPE_MIN = IS_PAE_DOMU,
|
||||||
|
OPT_TYPE_MAX = IS_BIOS_BOOTSECTOR
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static grub_err_t
|
||||||
|
grub_cmd_file (grub_extcmd_context_t ctxt, int argc, char **args)
|
||||||
|
{
|
||||||
|
grub_file_t file = 0;
|
||||||
|
grub_elf_t elf = 0;
|
||||||
|
grub_err_t err;
|
||||||
|
int type = -1, i;
|
||||||
|
int ret = 0;
|
||||||
|
grub_macho_t macho = 0;
|
||||||
|
|
||||||
|
if (argc == 0)
|
||||||
|
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected"));
|
||||||
|
for (i = OPT_TYPE_MIN; i <= OPT_TYPE_MAX; i++)
|
||||||
|
if (ctxt->state[i].set)
|
||||||
|
{
|
||||||
|
if (type == -1)
|
||||||
|
{
|
||||||
|
type = i;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
return grub_error (GRUB_ERR_BAD_ARGUMENT, "multiple types specified");
|
||||||
|
}
|
||||||
|
if (type == -1)
|
||||||
|
return grub_error (GRUB_ERR_BAD_ARGUMENT, "no type specified");
|
||||||
|
|
||||||
|
file = grub_file_open (args[0]);
|
||||||
|
if (!file)
|
||||||
|
return grub_errno;
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
case IS_BIOS_BOOTSECTOR:
|
||||||
|
{
|
||||||
|
grub_uint16_t sig;
|
||||||
|
if (grub_file_size (file) != 512)
|
||||||
|
break;
|
||||||
|
if (grub_file_seek (file, 510) == (grub_size_t) -1)
|
||||||
|
break;
|
||||||
|
if (grub_file_read (file, &sig, 2) != 2)
|
||||||
|
break;
|
||||||
|
if (sig != grub_cpu_to_le16_compile_time (0xaa55))
|
||||||
|
break;
|
||||||
|
ret = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case IS_IA64_LINUX:
|
||||||
|
{
|
||||||
|
Elf64_Ehdr ehdr;
|
||||||
|
|
||||||
|
if (grub_file_read (file, &ehdr, sizeof (ehdr)) != sizeof (ehdr))
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (ehdr.e_ident[EI_MAG0] != ELFMAG0
|
||||||
|
|| ehdr.e_ident[EI_MAG1] != ELFMAG1
|
||||||
|
|| ehdr.e_ident[EI_MAG2] != ELFMAG2
|
||||||
|
|| ehdr.e_ident[EI_MAG3] != ELFMAG3
|
||||||
|
|| ehdr.e_ident[EI_VERSION] != EV_CURRENT
|
||||||
|
|| ehdr.e_version != EV_CURRENT)
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (ehdr.e_ident[EI_CLASS] != ELFCLASS64
|
||||||
|
|| ehdr.e_ident[EI_DATA] != ELFDATA2LSB
|
||||||
|
|| ehdr.e_machine != grub_cpu_to_le16_compile_time (EM_IA_64))
|
||||||
|
break;
|
||||||
|
|
||||||
|
ret = 1;
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case IS_SPARC64_LINUX:
|
||||||
|
{
|
||||||
|
Elf64_Ehdr ehdr;
|
||||||
|
|
||||||
|
if (grub_file_read (file, &ehdr, sizeof (ehdr)) != sizeof (ehdr))
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (ehdr.e_ident[EI_MAG0] != ELFMAG0
|
||||||
|
|| ehdr.e_ident[EI_MAG1] != ELFMAG1
|
||||||
|
|| ehdr.e_ident[EI_MAG2] != ELFMAG2
|
||||||
|
|| ehdr.e_ident[EI_MAG3] != ELFMAG3
|
||||||
|
|| ehdr.e_ident[EI_VERSION] != EV_CURRENT
|
||||||
|
|| ehdr.e_version != EV_CURRENT)
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (ehdr.e_ident[EI_CLASS] != ELFCLASS64
|
||||||
|
|| ehdr.e_ident[EI_DATA] != ELFDATA2MSB)
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (ehdr.e_machine != grub_cpu_to_le16_compile_time (EM_SPARCV9)
|
||||||
|
|| ehdr.e_type != grub_cpu_to_be16_compile_time (ET_EXEC))
|
||||||
|
break;
|
||||||
|
|
||||||
|
ret = 1;
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case IS_POWERPC_LINUX:
|
||||||
|
{
|
||||||
|
Elf32_Ehdr ehdr;
|
||||||
|
|
||||||
|
if (grub_file_read (file, &ehdr, sizeof (ehdr)) != sizeof (ehdr))
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (ehdr.e_ident[EI_MAG0] != ELFMAG0
|
||||||
|
|| ehdr.e_ident[EI_MAG1] != ELFMAG1
|
||||||
|
|| ehdr.e_ident[EI_MAG2] != ELFMAG2
|
||||||
|
|| ehdr.e_ident[EI_MAG3] != ELFMAG3
|
||||||
|
|| ehdr.e_ident[EI_VERSION] != EV_CURRENT
|
||||||
|
|| ehdr.e_version != EV_CURRENT)
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (ehdr.e_ident[EI_DATA] != ELFDATA2MSB
|
||||||
|
|| (ehdr.e_machine != grub_cpu_to_le16_compile_time (EM_PPC)
|
||||||
|
&& ehdr.e_machine !=
|
||||||
|
grub_cpu_to_le16_compile_time (EM_PPC64)))
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (ehdr.e_type != grub_cpu_to_be16_compile_time (ET_EXEC)
|
||||||
|
&& ehdr.e_type != grub_cpu_to_be16_compile_time (ET_DYN))
|
||||||
|
break;
|
||||||
|
|
||||||
|
ret = 1;
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case IS_MIPS_LINUX:
|
||||||
|
{
|
||||||
|
Elf32_Ehdr ehdr;
|
||||||
|
|
||||||
|
if (grub_file_read (file, &ehdr, sizeof (ehdr)) != sizeof (ehdr))
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (ehdr.e_ident[EI_MAG0] != ELFMAG0
|
||||||
|
|| ehdr.e_ident[EI_MAG1] != ELFMAG1
|
||||||
|
|| ehdr.e_ident[EI_MAG2] != ELFMAG2
|
||||||
|
|| ehdr.e_ident[EI_MAG3] != ELFMAG3
|
||||||
|
|| ehdr.e_ident[EI_VERSION] != EV_CURRENT
|
||||||
|
|| ehdr.e_version != EV_CURRENT)
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (ehdr.e_ident[EI_DATA] != ELFDATA2MSB
|
||||||
|
|| ehdr.e_machine != grub_cpu_to_be16_compile_time (EM_MIPS)
|
||||||
|
|| ehdr.e_type != grub_cpu_to_be16_compile_time (ET_EXEC))
|
||||||
|
break;
|
||||||
|
|
||||||
|
ret = 1;
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case IS_X86_KNETBSD:
|
||||||
|
case IS_X86_KNETBSD32:
|
||||||
|
case IS_X86_KNETBSD64:
|
||||||
|
{
|
||||||
|
int is32, is64;
|
||||||
|
|
||||||
|
elf = grub_elf_file (file, file->name);
|
||||||
|
|
||||||
|
if (elf->ehdr.ehdr32.e_type != grub_cpu_to_le16_compile_time (ET_EXEC)
|
||||||
|
|| elf->ehdr.ehdr32.e_ident[EI_DATA] != ELFDATA2LSB)
|
||||||
|
break;
|
||||||
|
|
||||||
|
is32 = grub_elf_is_elf32 (elf);
|
||||||
|
is64 = grub_elf_is_elf64 (elf);
|
||||||
|
if (!is32 && !is64)
|
||||||
|
break;
|
||||||
|
if (!is32 && type == IS_X86_KNETBSD32)
|
||||||
|
break;
|
||||||
|
if (!is64 && type == IS_X86_KNETBSD64)
|
||||||
|
break;
|
||||||
|
if (is64)
|
||||||
|
ret = grub_file_check_netbsd64 (elf);
|
||||||
|
if (is32)
|
||||||
|
ret = grub_file_check_netbsd32 (elf);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case IS_X86_KFREEBSD:
|
||||||
|
case IS_X86_KFREEBSD32:
|
||||||
|
case IS_X86_KFREEBSD64:
|
||||||
|
{
|
||||||
|
Elf32_Ehdr ehdr;
|
||||||
|
int is32, is64;
|
||||||
|
|
||||||
|
if (grub_file_read (file, &ehdr, sizeof (ehdr)) != sizeof (ehdr))
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (ehdr.e_ident[EI_MAG0] != ELFMAG0
|
||||||
|
|| ehdr.e_ident[EI_MAG1] != ELFMAG1
|
||||||
|
|| ehdr.e_ident[EI_MAG2] != ELFMAG2
|
||||||
|
|| ehdr.e_ident[EI_MAG3] != ELFMAG3
|
||||||
|
|| ehdr.e_ident[EI_VERSION] != EV_CURRENT
|
||||||
|
|| ehdr.e_version != EV_CURRENT)
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (ehdr.e_type != grub_cpu_to_le16_compile_time (ET_EXEC)
|
||||||
|
|| ehdr.e_ident[EI_DATA] != ELFDATA2LSB)
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (ehdr.e_ident[EI_OSABI] != ELFOSABI_FREEBSD)
|
||||||
|
break;
|
||||||
|
|
||||||
|
is32 = (ehdr.e_machine == grub_cpu_to_le16_compile_time (EM_386)
|
||||||
|
&& ehdr.e_ident[EI_CLASS] == ELFCLASS32);
|
||||||
|
is64 = (ehdr.e_machine == grub_cpu_to_le16_compile_time (EM_X86_64)
|
||||||
|
&& ehdr.e_ident[EI_CLASS] == ELFCLASS64);
|
||||||
|
if (!is32 && !is64)
|
||||||
|
break;
|
||||||
|
if (!is32 && (type == IS_X86_KFREEBSD32 || type == IS_X86_KNETBSD32))
|
||||||
|
break;
|
||||||
|
if (!is64 && (type == IS_X86_KFREEBSD64 || type == IS_X86_KNETBSD64))
|
||||||
|
break;
|
||||||
|
ret = 1;
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
case IS_MIPSEL_LINUX:
|
||||||
|
{
|
||||||
|
Elf32_Ehdr ehdr;
|
||||||
|
|
||||||
|
if (grub_file_read (file, &ehdr, sizeof (ehdr)) != sizeof (ehdr))
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (ehdr.e_ident[EI_MAG0] != ELFMAG0
|
||||||
|
|| ehdr.e_ident[EI_MAG1] != ELFMAG1
|
||||||
|
|| ehdr.e_ident[EI_MAG2] != ELFMAG2
|
||||||
|
|| ehdr.e_ident[EI_MAG3] != ELFMAG3
|
||||||
|
|| ehdr.e_ident[EI_VERSION] != EV_CURRENT
|
||||||
|
|| ehdr.e_version != EV_CURRENT)
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (ehdr.e_machine != grub_cpu_to_le16_compile_time (EM_MIPS)
|
||||||
|
|| ehdr.e_type != grub_cpu_to_le16_compile_time (ET_EXEC))
|
||||||
|
break;
|
||||||
|
|
||||||
|
ret = 1;
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case IS_ARM_LINUX:
|
||||||
|
{
|
||||||
|
grub_uint32_t sig;
|
||||||
|
if (grub_file_seek (file, 0x24) == (grub_size_t) -1)
|
||||||
|
break;
|
||||||
|
if (grub_file_read (file, &sig, 4) != 4)
|
||||||
|
break;
|
||||||
|
if (sig != grub_cpu_to_le32_compile_time (0x016f2818))
|
||||||
|
break;
|
||||||
|
ret = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case IS_PAE_DOMU ... IS_DOM0:
|
||||||
|
{
|
||||||
|
struct grub_xen_file_info xen_inf;
|
||||||
|
elf = grub_xen_file (file);
|
||||||
|
if (!elf)
|
||||||
|
break;
|
||||||
|
err = grub_xen_get_info (elf, &xen_inf);
|
||||||
|
if (err)
|
||||||
|
break;
|
||||||
|
/* Unfortuntely no way to check if kernel supports dom0. */
|
||||||
|
if (type == IS_DOM0)
|
||||||
|
ret = 1;
|
||||||
|
if (type == IS_PAE_DOMU)
|
||||||
|
ret = (xen_inf.arch == GRUB_XEN_FILE_I386_PAE
|
||||||
|
|| xen_inf.arch == GRUB_XEN_FILE_I386_PAE_BIMODE);
|
||||||
|
if (type == IS_64_DOMU)
|
||||||
|
ret = (xen_inf.arch == GRUB_XEN_FILE_X86_64);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case IS_MULTIBOOT:
|
||||||
|
case IS_MULTIBOOT2:
|
||||||
|
{
|
||||||
|
grub_uint32_t *buffer;
|
||||||
|
grub_ssize_t len;
|
||||||
|
grub_size_t search_size;
|
||||||
|
grub_uint32_t *header;
|
||||||
|
grub_uint32_t magic;
|
||||||
|
grub_size_t step;
|
||||||
|
|
||||||
|
if (type == IS_MULTIBOOT2)
|
||||||
|
{
|
||||||
|
search_size = 32768;
|
||||||
|
magic = grub_cpu_to_le32_compile_time (0xe85250d6);
|
||||||
|
step = 2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
search_size = 8192;
|
||||||
|
magic = grub_cpu_to_le32_compile_time (0x1BADB002);
|
||||||
|
step = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
buffer = grub_malloc (search_size);
|
||||||
|
if (!buffer)
|
||||||
|
break;
|
||||||
|
|
||||||
|
len = grub_file_read (file, buffer, search_size);
|
||||||
|
if (len < 32)
|
||||||
|
{
|
||||||
|
grub_free (buffer);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Look for the multiboot header in the buffer. The header should
|
||||||
|
be at least 12 bytes and aligned on a 4-byte boundary. */
|
||||||
|
for (header = buffer;
|
||||||
|
((char *) header <=
|
||||||
|
(char *) buffer + len - (type == IS_MULTIBOOT2 ? 16 : 12))
|
||||||
|
|| (header = 0); header += step)
|
||||||
|
{
|
||||||
|
if (header[0] == magic
|
||||||
|
&& !(grub_le_to_cpu32 (header[0])
|
||||||
|
+ grub_le_to_cpu32 (header[1])
|
||||||
|
+ grub_le_to_cpu32 (header[2])
|
||||||
|
+ (type == IS_MULTIBOOT2
|
||||||
|
? grub_le_to_cpu32 (header[3]) : 0)))
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (header != 0)
|
||||||
|
ret = 1;
|
||||||
|
grub_free (buffer);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case IS_X86_LINUX32:
|
||||||
|
case IS_X86_LINUX:
|
||||||
|
{
|
||||||
|
struct linux_kernel_header lh;
|
||||||
|
if (grub_file_read (file, &lh, sizeof (lh)) != sizeof (lh))
|
||||||
|
break;
|
||||||
|
if (lh.boot_flag != grub_cpu_to_le16_compile_time (0xaa55))
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (lh.setup_sects > GRUB_LINUX_MAX_SETUP_SECTS)
|
||||||
|
break;
|
||||||
|
|
||||||
|
/* FIXME: some really old kernels (< 1.3.73) will fail this. */
|
||||||
|
if (lh.header !=
|
||||||
|
grub_cpu_to_le32_compile_time (GRUB_LINUX_MAGIC_SIGNATURE)
|
||||||
|
|| grub_le_to_cpu16 (lh.version) < 0x0200)
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (type == IS_X86_LINUX)
|
||||||
|
{
|
||||||
|
ret = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* FIXME: 2.03 is not always good enough (Linux 2.4 can be 2.03 and
|
||||||
|
still not support 32-bit boot. */
|
||||||
|
if (lh.header !=
|
||||||
|
grub_cpu_to_le32_compile_time (GRUB_LINUX_MAGIC_SIGNATURE)
|
||||||
|
|| grub_le_to_cpu16 (lh.version) < 0x0203)
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (!(lh.loadflags & GRUB_LINUX_FLAG_BIG_KERNEL))
|
||||||
|
break;
|
||||||
|
ret = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case IS_HIBERNATED:
|
||||||
|
{
|
||||||
|
grub_uint8_t hibr_file_magic[4];
|
||||||
|
if (grub_file_read (file, &hibr_file_magic, sizeof (hibr_file_magic))
|
||||||
|
!= sizeof (hibr_file_magic))
|
||||||
|
break;
|
||||||
|
if (grub_memcmp ("hibr", hibr_file_magic, sizeof (hibr_file_magic)) ==
|
||||||
|
0
|
||||||
|
|| grub_memcmp ("HIBR", hibr_file_magic,
|
||||||
|
sizeof (hibr_file_magic)) == 0)
|
||||||
|
ret = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case IS_XNU64:
|
||||||
|
case IS_XNU32:
|
||||||
|
{
|
||||||
|
macho = grub_macho_open (args[0], (type == IS_XNU64));
|
||||||
|
if (!macho)
|
||||||
|
break;
|
||||||
|
/* FIXME: more checks? */
|
||||||
|
ret = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case IS_XNU_HIBR:
|
||||||
|
{
|
||||||
|
struct grub_xnu_hibernate_header hibhead;
|
||||||
|
if (grub_file_read (file, &hibhead, sizeof (hibhead))
|
||||||
|
!= sizeof (hibhead))
|
||||||
|
break;
|
||||||
|
if (hibhead.magic !=
|
||||||
|
grub_cpu_to_le32_compile_time (GRUB_XNU_HIBERNATE_MAGIC))
|
||||||
|
break;
|
||||||
|
ret = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case IS_32_EFI:
|
||||||
|
case IS_64_EFI:
|
||||||
|
case IS_IA_EFI:
|
||||||
|
case IS_ARM_EFI:
|
||||||
|
{
|
||||||
|
char signature[4];
|
||||||
|
grub_uint32_t pe_offset;
|
||||||
|
struct grub_pe32_coff_header coff_head;
|
||||||
|
|
||||||
|
if (grub_file_read (file, signature, 2) != 2)
|
||||||
|
break;
|
||||||
|
if (signature[0] != 'M' || signature[1] != 'Z')
|
||||||
|
break;
|
||||||
|
if ((grub_ssize_t) grub_file_seek (file, 0x3c) == -1)
|
||||||
|
break;
|
||||||
|
if (grub_file_read (file, &pe_offset, 4) != 4)
|
||||||
|
break;
|
||||||
|
if ((grub_ssize_t) grub_file_seek (file, grub_le_to_cpu32 (pe_offset))
|
||||||
|
== -1)
|
||||||
|
break;
|
||||||
|
if (grub_file_read (file, signature, 4) != 4)
|
||||||
|
break;
|
||||||
|
if (signature[0] != 'P' || signature[1] != 'E'
|
||||||
|
|| signature[2] != '\0' || signature[3] != '\0')
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (grub_file_read (file, &coff_head, sizeof (coff_head))
|
||||||
|
!= sizeof (coff_head))
|
||||||
|
break;
|
||||||
|
if (type == IS_32_EFI
|
||||||
|
&& coff_head.machine !=
|
||||||
|
grub_cpu_to_le16_compile_time (GRUB_PE32_MACHINE_I386))
|
||||||
|
break;
|
||||||
|
if (type == IS_64_EFI
|
||||||
|
&& coff_head.machine !=
|
||||||
|
grub_cpu_to_le16_compile_time (GRUB_PE32_MACHINE_X86_64))
|
||||||
|
break;
|
||||||
|
if (type == IS_IA_EFI
|
||||||
|
&& coff_head.machine !=
|
||||||
|
grub_cpu_to_le16_compile_time (GRUB_PE32_MACHINE_IA64))
|
||||||
|
break;
|
||||||
|
if (type == IS_ARM_EFI
|
||||||
|
&& coff_head.machine !=
|
||||||
|
grub_cpu_to_le16_compile_time (GRUB_PE32_MACHINE_ARMTHUMB_MIXED))
|
||||||
|
break;
|
||||||
|
if (type == IS_64_EFI || type == IS_64_EFI)
|
||||||
|
{
|
||||||
|
struct grub_pe64_optional_header o64;
|
||||||
|
if (grub_file_read (file, &o64, sizeof (o64)) != sizeof (o64))
|
||||||
|
break;
|
||||||
|
if (o64.magic !=
|
||||||
|
grub_cpu_to_le16_compile_time (GRUB_PE32_PE64_MAGIC))
|
||||||
|
break;
|
||||||
|
if (o64.subsystem !=
|
||||||
|
grub_cpu_to_le16_compile_time
|
||||||
|
(GRUB_PE32_SUBSYSTEM_EFI_APPLICATION))
|
||||||
|
break;
|
||||||
|
ret = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (type == IS_32_EFI || type == IS_ARM_EFI)
|
||||||
|
{
|
||||||
|
struct grub_pe32_optional_header o32;
|
||||||
|
if (grub_file_read (file, &o32, sizeof (o32)) != sizeof (o32))
|
||||||
|
break;
|
||||||
|
if (o32.magic !=
|
||||||
|
grub_cpu_to_le16_compile_time (GRUB_PE32_PE32_MAGIC))
|
||||||
|
break;
|
||||||
|
if (o32.subsystem !=
|
||||||
|
grub_cpu_to_le16_compile_time
|
||||||
|
(GRUB_PE32_SUBSYSTEM_EFI_APPLICATION))
|
||||||
|
break;
|
||||||
|
ret = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (elf)
|
||||||
|
grub_elf_close (elf);
|
||||||
|
else if (macho)
|
||||||
|
grub_macho_close (macho);
|
||||||
|
else if (file)
|
||||||
|
grub_file_close (file);
|
||||||
|
|
||||||
|
if (!ret && (grub_errno == GRUB_ERR_BAD_OS || grub_errno == GRUB_ERR_NONE))
|
||||||
|
/* TRANSLATORS: it's a standalone boolean value,
|
||||||
|
opposite of "true". */
|
||||||
|
grub_error (GRUB_ERR_TEST_FAILURE, N_("false"));
|
||||||
|
return grub_errno;
|
||||||
|
}
|
||||||
|
|
||||||
|
static grub_extcmd_t cmd;
|
||||||
|
|
||||||
|
GRUB_MOD_INIT(file)
|
||||||
|
{
|
||||||
|
cmd = grub_register_extcmd ("file", grub_cmd_file, 0,
|
||||||
|
N_("OPTIONS FILE"),
|
||||||
|
N_("Check if FILE is of specified type."),
|
||||||
|
options);
|
||||||
|
}
|
||||||
|
|
||||||
|
GRUB_MOD_FINI(file)
|
||||||
|
{
|
||||||
|
grub_unregister_extcmd (cmd);
|
||||||
|
}
|
5
grub-core/commands/file32.c
Normal file
5
grub-core/commands/file32.c
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#define GRUB_TARGET_WORDSIZE 32
|
||||||
|
#define XX 32
|
||||||
|
#define ehdrXX ehdr32
|
||||||
|
#define grub_file_check_netbsdXX grub_file_check_netbsd32
|
||||||
|
#include "fileXX.c"
|
5
grub-core/commands/file64.c
Normal file
5
grub-core/commands/file64.c
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#define GRUB_TARGET_WORDSIZE 64
|
||||||
|
#define XX 64
|
||||||
|
#define ehdrXX ehdr64
|
||||||
|
#define grub_file_check_netbsdXX grub_file_check_netbsd64
|
||||||
|
#include "fileXX.c"
|
70
grub-core/commands/fileXX.c
Normal file
70
grub-core/commands/fileXX.c
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
/*
|
||||||
|
* GRUB -- GRand Unified Bootloader
|
||||||
|
* Copyright (C) 2013 Free Software Foundation, Inc.
|
||||||
|
*
|
||||||
|
* GRUB is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* GRUB is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <grub/fileid.h>
|
||||||
|
#include <grub/elfload.h>
|
||||||
|
|
||||||
|
#pragma GCC diagnostic ignored "-Wcast-align"
|
||||||
|
|
||||||
|
int
|
||||||
|
grub_file_check_netbsdXX (grub_elf_t elf)
|
||||||
|
{
|
||||||
|
Elf_Shdr *s, *s0;
|
||||||
|
|
||||||
|
grub_size_t shnum = elf->ehdr.ehdrXX.e_shnum;
|
||||||
|
grub_size_t shentsize = elf->ehdr.ehdrXX.e_shentsize;
|
||||||
|
grub_size_t shsize = shnum * shentsize;
|
||||||
|
grub_off_t stroff;
|
||||||
|
|
||||||
|
if (!shnum || !shentsize)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
s0 = grub_malloc (shsize);
|
||||||
|
if (!s0)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (grub_file_seek (elf->file, elf->ehdr.ehdrXX.e_shoff) == (grub_off_t) -1)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (grub_file_read (elf->file, s0, shsize) != (grub_ssize_t) shsize)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
s = (Elf_Shdr *) ((char *) s0 + elf->ehdr.ehdrXX.e_shstrndx * shentsize);
|
||||||
|
stroff = s->sh_offset;
|
||||||
|
|
||||||
|
for (s = s0; s < (Elf_Shdr *) ((char *) s0 + shnum * shentsize);
|
||||||
|
s = (Elf_Shdr *) ((char *) s + shentsize))
|
||||||
|
{
|
||||||
|
char name[sizeof(".note.netbsd.ident")];
|
||||||
|
grub_memset (name, 0, sizeof (name));
|
||||||
|
if (grub_file_seek (elf->file, stroff + s->sh_name) == (grub_off_t) -1)
|
||||||
|
return grub_errno;
|
||||||
|
|
||||||
|
if (grub_file_read (elf->file, name, sizeof (name)) != (grub_ssize_t) sizeof (name))
|
||||||
|
{
|
||||||
|
if (grub_errno)
|
||||||
|
return grub_errno;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (grub_memcmp (name, ".note.netbsd.ident",
|
||||||
|
sizeof(".note.netbsd.ident")) != 0)
|
||||||
|
continue;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
@ -34,19 +34,38 @@ static const struct grub_arg_option options[] =
|
|||||||
/* TRANSLATORS: "(default)" at the end means that this option is used if
|
/* TRANSLATORS: "(default)" at the end means that this option is used if
|
||||||
no argument is specified. */
|
no argument is specified. */
|
||||||
{"long-mode", 'l', 0, N_("Check if CPU supports 64-bit (long) mode (default)."), 0, 0},
|
{"long-mode", 'l', 0, N_("Check if CPU supports 64-bit (long) mode (default)."), 0, 0},
|
||||||
|
{"pae", 'p', 0, N_("Check if CPU supports Physical Address Extension."), 0, 0},
|
||||||
{0, 0, 0, 0, 0, 0}
|
{0, 0, 0, 0, 0, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
#define bit_LM (1 << 29)
|
enum
|
||||||
|
{
|
||||||
|
MODE_LM = 0,
|
||||||
|
MODE_PAE = 1
|
||||||
|
};
|
||||||
|
|
||||||
unsigned char grub_cpuid_has_longmode = 0;
|
enum
|
||||||
|
{
|
||||||
|
bit_PAE = (1 << 6),
|
||||||
|
};
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
bit_LM = (1 << 29)
|
||||||
|
};
|
||||||
|
|
||||||
|
unsigned char grub_cpuid_has_longmode = 0, grub_cpuid_has_pae = 0;
|
||||||
|
|
||||||
static grub_err_t
|
static grub_err_t
|
||||||
grub_cmd_cpuid (grub_extcmd_context_t ctxt __attribute__ ((unused)),
|
grub_cmd_cpuid (grub_extcmd_context_t ctxt,
|
||||||
int argc __attribute__ ((unused)),
|
int argc __attribute__ ((unused)),
|
||||||
char **args __attribute__ ((unused)))
|
char **args __attribute__ ((unused)))
|
||||||
{
|
{
|
||||||
return grub_cpuid_has_longmode ? GRUB_ERR_NONE
|
int val = 0;
|
||||||
|
if (ctxt->state[MODE_PAE].set)
|
||||||
|
val = grub_cpuid_has_pae;
|
||||||
|
else
|
||||||
|
val = grub_cpuid_has_longmode;
|
||||||
|
return val ? GRUB_ERR_NONE
|
||||||
/* TRANSLATORS: it's a standalone boolean value,
|
/* TRANSLATORS: it's a standalone boolean value,
|
||||||
opposite of "true". */
|
opposite of "true". */
|
||||||
: grub_error (GRUB_ERR_TEST_FAILURE, N_("false"));
|
: grub_error (GRUB_ERR_TEST_FAILURE, N_("false"));
|
||||||
@ -59,6 +78,7 @@ GRUB_MOD_INIT(cpuid)
|
|||||||
#ifdef __x86_64__
|
#ifdef __x86_64__
|
||||||
/* grub-emu */
|
/* grub-emu */
|
||||||
grub_cpuid_has_longmode = 1;
|
grub_cpuid_has_longmode = 1;
|
||||||
|
grub_cpuid_has_pae = 1;
|
||||||
#else
|
#else
|
||||||
unsigned int eax, ebx, ecx, edx;
|
unsigned int eax, ebx, ecx, edx;
|
||||||
unsigned int max_level;
|
unsigned int max_level;
|
||||||
@ -79,6 +99,12 @@ GRUB_MOD_INIT(cpuid)
|
|||||||
if (max_level == 0)
|
if (max_level == 0)
|
||||||
goto done;
|
goto done;
|
||||||
|
|
||||||
|
if (max_level >= 1)
|
||||||
|
{
|
||||||
|
grub_cpuid (1, eax, ebx, ecx, edx);
|
||||||
|
grub_cpuid_has_pae = !!(edx & bit_PAE);
|
||||||
|
}
|
||||||
|
|
||||||
grub_cpuid (0x80000000, eax, ebx, ecx, edx);
|
grub_cpuid (0x80000000, eax, ebx, ecx, edx);
|
||||||
ext_level = eax;
|
ext_level = eax;
|
||||||
if (ext_level < 0x80000000)
|
if (ext_level < 0x80000000)
|
||||||
|
@ -1,79 +0,0 @@
|
|||||||
/* nthibr.c - tests whether an MS Windows system partition is hibernated */
|
|
||||||
/*
|
|
||||||
* GRUB -- GRand Unified Bootloader
|
|
||||||
* Copyright (C) 2013 Peter Lustig
|
|
||||||
* Copyright (C) 2013 Free Software Foundation, Inc.
|
|
||||||
*
|
|
||||||
* GRUB is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* GRUB is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with GRUB. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <grub/types.h>
|
|
||||||
#include <grub/mm.h>
|
|
||||||
#include <grub/file.h>
|
|
||||||
#include <grub/misc.h>
|
|
||||||
#include <grub/dl.h>
|
|
||||||
#include <grub/command.h>
|
|
||||||
#include <grub/err.h>
|
|
||||||
#include <grub/i18n.h>
|
|
||||||
|
|
||||||
GRUB_MOD_LICENSE ("GPLv3+");
|
|
||||||
|
|
||||||
static grub_err_t
|
|
||||||
grub_cmd_nthibr (grub_command_t cmd __attribute__ ((unused)),
|
|
||||||
int argc, char **args)
|
|
||||||
{
|
|
||||||
grub_uint8_t hibr_file_magic[4];
|
|
||||||
grub_file_t hibr_file = 0;
|
|
||||||
|
|
||||||
if (argc != 1)
|
|
||||||
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("one argument expected"));
|
|
||||||
|
|
||||||
hibr_file = grub_file_open (args[0]);
|
|
||||||
if (!hibr_file)
|
|
||||||
return grub_errno;
|
|
||||||
|
|
||||||
/* Try to read magic number of 'hiberfil.sys' */
|
|
||||||
if (grub_file_read (hibr_file, hibr_file_magic,
|
|
||||||
sizeof (hibr_file_magic))
|
|
||||||
!= (grub_ssize_t) sizeof (hibr_file_magic))
|
|
||||||
{
|
|
||||||
if (!grub_errno)
|
|
||||||
grub_error (GRUB_ERR_TEST_FAILURE, "false");
|
|
||||||
goto exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(grub_memcmp ("hibr", hibr_file_magic, sizeof (hibr_file_magic)) == 0
|
|
||||||
|| grub_memcmp ("HIBR", hibr_file_magic, sizeof (hibr_file_magic)) == 0))
|
|
||||||
grub_error (GRUB_ERR_TEST_FAILURE, "false");
|
|
||||||
|
|
||||||
exit:
|
|
||||||
grub_file_close (hibr_file);
|
|
||||||
|
|
||||||
return grub_errno;
|
|
||||||
}
|
|
||||||
|
|
||||||
static grub_command_t cmd;
|
|
||||||
|
|
||||||
GRUB_MOD_INIT (check_nt_hiberfil)
|
|
||||||
{
|
|
||||||
cmd = grub_register_command ("check_nt_hiberfil", grub_cmd_nthibr,
|
|
||||||
N_("FILE"),
|
|
||||||
N_("Test whether a hiberfil.sys is "
|
|
||||||
"in hibernated state."));
|
|
||||||
}
|
|
||||||
|
|
||||||
GRUB_MOD_FINI (check_nt_hiberfil)
|
|
||||||
{
|
|
||||||
grub_unregister_command (cmd);
|
|
||||||
}
|
|
@ -74,7 +74,7 @@ typedef struct drivemap_node
|
|||||||
grub_uint8_t redirto;
|
grub_uint8_t redirto;
|
||||||
} drivemap_node_t;
|
} drivemap_node_t;
|
||||||
|
|
||||||
typedef struct __attribute__ ((packed)) int13map_node
|
typedef struct GRUB_PACKED int13map_node
|
||||||
{
|
{
|
||||||
grub_uint8_t disknum;
|
grub_uint8_t disknum;
|
||||||
grub_uint8_t mapto;
|
grub_uint8_t mapto;
|
||||||
|
@ -314,7 +314,11 @@ grub_cmd_legacy_kernel (struct grub_command *mycmd __attribute__ ((unused)),
|
|||||||
/* First try Linux. */
|
/* First try Linux. */
|
||||||
if (kernel_type == GUESS_IT || kernel_type == LINUX)
|
if (kernel_type == GUESS_IT || kernel_type == LINUX)
|
||||||
{
|
{
|
||||||
|
#ifdef GRUB_MACHINE_PCBIOS
|
||||||
cmd = grub_command_find ("linux16");
|
cmd = grub_command_find ("linux16");
|
||||||
|
#else
|
||||||
|
cmd = grub_command_find ("linux");
|
||||||
|
#endif
|
||||||
if (cmd)
|
if (cmd)
|
||||||
{
|
{
|
||||||
if (!(cmd->func) (cmd, cutargc, cutargs))
|
if (!(cmd->func) (cmd, cutargc, cutargs))
|
||||||
@ -469,10 +473,19 @@ grub_cmd_legacy_initrd (struct grub_command *mycmd __attribute__ ((unused)),
|
|||||||
|
|
||||||
if (kernel_type == LINUX)
|
if (kernel_type == LINUX)
|
||||||
{
|
{
|
||||||
|
#ifdef GRUB_MACHINE_PCBIOS
|
||||||
cmd = grub_command_find ("initrd16");
|
cmd = grub_command_find ("initrd16");
|
||||||
|
#else
|
||||||
|
cmd = grub_command_find ("initrd");
|
||||||
|
#endif
|
||||||
if (!cmd)
|
if (!cmd)
|
||||||
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("can't find command `%s'"),
|
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("can't find command `%s'"),
|
||||||
"initrd16");
|
#ifdef GRUB_MACHINE_PCBIOS
|
||||||
|
"initrd16"
|
||||||
|
#else
|
||||||
|
"initrd"
|
||||||
|
#endif
|
||||||
|
);
|
||||||
|
|
||||||
return cmd->func (cmd, argc, args);
|
return cmd->func (cmd, argc, args);
|
||||||
}
|
}
|
||||||
|
236
grub-core/commands/macbless.c
Normal file
236
grub-core/commands/macbless.c
Normal file
@ -0,0 +1,236 @@
|
|||||||
|
/* hfspbless.c - set the hfs+ boot directory. */
|
||||||
|
/*
|
||||||
|
* GRUB -- GRand Unified Bootloader
|
||||||
|
* Copyright (C) 2003,2005,2007,2008,2009,2012,2013 Free Software Foundation, Inc.
|
||||||
|
*
|
||||||
|
* GRUB is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* GRUB is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <grub/command.h>
|
||||||
|
#include <grub/fs.h>
|
||||||
|
#include <grub/misc.h>
|
||||||
|
#include <grub/dl.h>
|
||||||
|
#include <grub/device.h>
|
||||||
|
#include <grub/disk.h>
|
||||||
|
#include <grub/hfsplus.h>
|
||||||
|
#include <grub/hfs.h>
|
||||||
|
#include <grub/partition.h>
|
||||||
|
#include <grub/file.h>
|
||||||
|
#include <grub/mm.h>
|
||||||
|
#include <grub/err.h>
|
||||||
|
|
||||||
|
GRUB_MOD_LICENSE ("GPLv3+");
|
||||||
|
|
||||||
|
struct find_node_context
|
||||||
|
{
|
||||||
|
grub_uint64_t inode_found;
|
||||||
|
char *dirname;
|
||||||
|
enum
|
||||||
|
{ NONE, FILE, DIR } found;
|
||||||
|
};
|
||||||
|
|
||||||
|
static int
|
||||||
|
find_inode (const char *filename,
|
||||||
|
const struct grub_dirhook_info *info, void *data)
|
||||||
|
{
|
||||||
|
struct find_node_context *ctx = data;
|
||||||
|
if (!info->inodeset)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if ((grub_strcmp (ctx->dirname, filename) == 0
|
||||||
|
|| (info->case_insensitive
|
||||||
|
&& grub_strcasecmp (ctx->dirname, filename) == 0)))
|
||||||
|
{
|
||||||
|
ctx->inode_found = info->inode;
|
||||||
|
ctx->found = info->dir ? DIR : FILE;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
grub_err_t
|
||||||
|
grub_mac_bless_inode (grub_device_t dev, grub_uint64_t inode, int is_dir,
|
||||||
|
int intel)
|
||||||
|
{
|
||||||
|
grub_err_t err;
|
||||||
|
union
|
||||||
|
{
|
||||||
|
struct grub_hfs_sblock hfs;
|
||||||
|
struct grub_hfsplus_volheader hfsplus;
|
||||||
|
} volheader;
|
||||||
|
grub_disk_addr_t embedded_offset;
|
||||||
|
|
||||||
|
if (intel && is_dir)
|
||||||
|
return grub_error (GRUB_ERR_BAD_ARGUMENT,
|
||||||
|
"can't bless a directory for mactel");
|
||||||
|
if (!intel && !is_dir)
|
||||||
|
return grub_error (GRUB_ERR_NOT_IMPLEMENTED_YET,
|
||||||
|
"can't bless a file for mac PPC");
|
||||||
|
|
||||||
|
/* Read the bootblock. */
|
||||||
|
err = grub_disk_read (dev->disk, GRUB_HFSPLUS_SBLOCK, 0, sizeof (volheader),
|
||||||
|
(char *) &volheader);
|
||||||
|
if (err)
|
||||||
|
return err;
|
||||||
|
|
||||||
|
embedded_offset = 0;
|
||||||
|
if (grub_be_to_cpu16 (volheader.hfs.magic) == GRUB_HFS_MAGIC)
|
||||||
|
{
|
||||||
|
int extent_start;
|
||||||
|
int ablk_size;
|
||||||
|
int ablk_start;
|
||||||
|
|
||||||
|
/* See if there's an embedded HFS+ filesystem. */
|
||||||
|
if (grub_be_to_cpu16 (volheader.hfs.embed_sig) != GRUB_HFSPLUS_MAGIC)
|
||||||
|
{
|
||||||
|
if (intel)
|
||||||
|
volheader.hfs.intel_bootfile = grub_be_to_cpu32 (inode);
|
||||||
|
else
|
||||||
|
volheader.hfs.ppc_bootdir = grub_be_to_cpu32 (inode);
|
||||||
|
return GRUB_ERR_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Calculate the offset needed to translate HFS+ sector numbers. */
|
||||||
|
extent_start =
|
||||||
|
grub_be_to_cpu16 (volheader.hfs.embed_extent.first_block);
|
||||||
|
ablk_size = grub_be_to_cpu32 (volheader.hfs.blksz);
|
||||||
|
ablk_start = grub_be_to_cpu16 (volheader.hfs.first_block);
|
||||||
|
embedded_offset = (ablk_start
|
||||||
|
+ extent_start
|
||||||
|
* (ablk_size >> GRUB_DISK_SECTOR_BITS));
|
||||||
|
|
||||||
|
err =
|
||||||
|
grub_disk_read (dev->disk, embedded_offset + GRUB_HFSPLUS_SBLOCK, 0,
|
||||||
|
sizeof (volheader), (char *) &volheader);
|
||||||
|
if (err)
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((grub_be_to_cpu16 (volheader.hfsplus.magic) != GRUB_HFSPLUS_MAGIC)
|
||||||
|
&& (grub_be_to_cpu16 (volheader.hfsplus.magic) != GRUB_HFSPLUSX_MAGIC))
|
||||||
|
return grub_error (GRUB_ERR_BAD_FS, "not a HFS+ filesystem");
|
||||||
|
if (intel)
|
||||||
|
volheader.hfsplus.intel_bootfile = grub_be_to_cpu32 (inode);
|
||||||
|
else
|
||||||
|
volheader.hfsplus.ppc_bootdir = grub_be_to_cpu32 (inode);
|
||||||
|
|
||||||
|
return grub_disk_write (dev->disk, embedded_offset + GRUB_HFSPLUS_SBLOCK, 0,
|
||||||
|
sizeof (volheader), (char *) &volheader);
|
||||||
|
}
|
||||||
|
|
||||||
|
grub_err_t
|
||||||
|
grub_mac_bless_file (grub_device_t dev, const char *path_in, int intel)
|
||||||
|
{
|
||||||
|
grub_fs_t fs;
|
||||||
|
|
||||||
|
char *path, *tail;
|
||||||
|
struct find_node_context ctx;
|
||||||
|
|
||||||
|
fs = grub_fs_probe (dev);
|
||||||
|
if (!fs || (grub_strcmp (fs->name, "hfsplus") != 0
|
||||||
|
&& grub_strcmp (fs->name, "hfs") != 0))
|
||||||
|
return grub_error (GRUB_ERR_BAD_FS, "no suitable FS found");
|
||||||
|
|
||||||
|
path = grub_strdup (path_in);
|
||||||
|
if (!path)
|
||||||
|
return grub_errno;
|
||||||
|
|
||||||
|
tail = path + grub_strlen (path) - 1;
|
||||||
|
|
||||||
|
/* Remove trailing '/'. */
|
||||||
|
while (tail != path && *tail == '/')
|
||||||
|
*(tail--) = 0;
|
||||||
|
|
||||||
|
tail = grub_strrchr (path, '/');
|
||||||
|
ctx.found = 0;
|
||||||
|
|
||||||
|
if (tail)
|
||||||
|
{
|
||||||
|
*tail = 0;
|
||||||
|
ctx.dirname = tail + 1;
|
||||||
|
|
||||||
|
(fs->dir) (dev, *path == 0 ? "/" : path, find_inode, &ctx);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ctx.dirname = path + 1;
|
||||||
|
(fs->dir) (dev, "/", find_inode, &ctx);
|
||||||
|
}
|
||||||
|
if (!ctx.found)
|
||||||
|
{
|
||||||
|
grub_free (path);
|
||||||
|
return grub_error (GRUB_ERR_FILE_NOT_FOUND, N_("file `%s' not found"),
|
||||||
|
path_in);
|
||||||
|
}
|
||||||
|
grub_free (path);
|
||||||
|
|
||||||
|
return grub_mac_bless_inode (dev, ctx.inode_found, (ctx.found == DIR),
|
||||||
|
intel);
|
||||||
|
}
|
||||||
|
|
||||||
|
static grub_err_t
|
||||||
|
grub_cmd_macbless (grub_command_t cmd, int argc, char **args)
|
||||||
|
{
|
||||||
|
char *device_name;
|
||||||
|
char *path = 0;
|
||||||
|
grub_device_t dev;
|
||||||
|
grub_err_t err;
|
||||||
|
|
||||||
|
if (argc != 1)
|
||||||
|
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("one argument expected"));
|
||||||
|
device_name = grub_file_get_device_name (args[0]);
|
||||||
|
dev = grub_device_open (device_name);
|
||||||
|
|
||||||
|
path = grub_strchr (args[0], ')');
|
||||||
|
if (!path)
|
||||||
|
path = args[0];
|
||||||
|
else
|
||||||
|
path = path + 1;
|
||||||
|
|
||||||
|
if (!path || *path == 0 || !device_name)
|
||||||
|
{
|
||||||
|
if (dev)
|
||||||
|
grub_device_close (dev);
|
||||||
|
|
||||||
|
grub_free (device_name);
|
||||||
|
grub_free (path);
|
||||||
|
|
||||||
|
return grub_error (GRUB_ERR_BAD_ARGUMENT, "invalid argument");
|
||||||
|
}
|
||||||
|
|
||||||
|
err = grub_mac_bless_file (dev, path, cmd->name[3] == 't');
|
||||||
|
|
||||||
|
grub_device_close (dev);
|
||||||
|
grub_free (device_name);
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
static grub_command_t cmd, cmd_ppc;
|
||||||
|
|
||||||
|
GRUB_MOD_INIT(macbless)
|
||||||
|
{
|
||||||
|
cmd = grub_register_command ("mactelbless", grub_cmd_macbless,
|
||||||
|
N_("FILE"),
|
||||||
|
N_
|
||||||
|
("Bless FILE of HFS or HFS+ partition for intel macs."));
|
||||||
|
cmd_ppc =
|
||||||
|
grub_register_command ("macppcbless", grub_cmd_macbless, N_("DIR"),
|
||||||
|
N_
|
||||||
|
("Bless DIR of HFS or HFS+ partition for PPC macs."));
|
||||||
|
}
|
||||||
|
|
||||||
|
GRUB_MOD_FINI(macbless)
|
||||||
|
{
|
||||||
|
grub_unregister_command (cmd);
|
||||||
|
grub_unregister_command (cmd_ppc);
|
||||||
|
}
|
@ -101,12 +101,18 @@ grub_mini_cmd_dump (struct grub_command *cmd __attribute__ ((unused)),
|
|||||||
if (argc == 0)
|
if (argc == 0)
|
||||||
return grub_error (GRUB_ERR_BAD_ARGUMENT, "no address specified");
|
return grub_error (GRUB_ERR_BAD_ARGUMENT, "no address specified");
|
||||||
|
|
||||||
addr = (grub_uint8_t *) grub_strtoul (argv[0], 0, 0);
|
#if GRUB_CPU_SIZEOF_VOID_P == GRUB_CPU_SIZEOF_LONG
|
||||||
|
#define grub_strtoaddr grub_strtoul
|
||||||
|
#else
|
||||||
|
#define grub_strtoaddr grub_strtoull
|
||||||
|
#endif
|
||||||
|
|
||||||
|
addr = (grub_uint8_t *) grub_strtoaddr (argv[0], 0, 0);
|
||||||
if (grub_errno)
|
if (grub_errno)
|
||||||
return grub_errno;
|
return grub_errno;
|
||||||
|
|
||||||
if (argc > 1)
|
if (argc > 1)
|
||||||
size = (grub_size_t) grub_strtoul (argv[1], 0, 0);
|
size = (grub_size_t) grub_strtoaddr (argv[1], 0, 0);
|
||||||
|
|
||||||
while (size--)
|
while (size--)
|
||||||
{
|
{
|
||||||
|
214
grub-core/commands/syslinuxcfg.c
Normal file
214
grub-core/commands/syslinuxcfg.c
Normal file
@ -0,0 +1,214 @@
|
|||||||
|
/*
|
||||||
|
* GRUB -- GRand Unified Bootloader
|
||||||
|
* Copyright (C) 2013 Free Software Foundation, Inc.
|
||||||
|
*
|
||||||
|
* GRUB is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* GRUB is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <grub/types.h>
|
||||||
|
#include <grub/misc.h>
|
||||||
|
#include <grub/extcmd.h>
|
||||||
|
#include <grub/mm.h>
|
||||||
|
#include <grub/err.h>
|
||||||
|
#include <grub/dl.h>
|
||||||
|
#include <grub/file.h>
|
||||||
|
#include <grub/normal.h>
|
||||||
|
#include <grub/script_sh.h>
|
||||||
|
#include <grub/i18n.h>
|
||||||
|
#include <grub/term.h>
|
||||||
|
#include <grub/syslinux_parse.h>
|
||||||
|
#include <grub/crypto.h>
|
||||||
|
#include <grub/auth.h>
|
||||||
|
#include <grub/disk.h>
|
||||||
|
#include <grub/partition.h>
|
||||||
|
|
||||||
|
GRUB_MOD_LICENSE ("GPLv3+");
|
||||||
|
|
||||||
|
/* Helper for syslinux_file. */
|
||||||
|
static grub_err_t
|
||||||
|
syslinux_file_getline (char **line, int cont __attribute__ ((unused)),
|
||||||
|
void *data __attribute__ ((unused)))
|
||||||
|
{
|
||||||
|
*line = 0;
|
||||||
|
return GRUB_ERR_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static const struct grub_arg_option options[] =
|
||||||
|
{
|
||||||
|
{"root", 'r', 0,
|
||||||
|
N_("root directory of the syslinux disk (default /)."),
|
||||||
|
N_("DIR"), ARG_TYPE_STRING},
|
||||||
|
{"cwd", 'c', 0,
|
||||||
|
N_("home directory of the syslinux config (default directory of configfile)."),
|
||||||
|
N_("DIR"), ARG_TYPE_STRING},
|
||||||
|
{"isolinux", 'i', 0, N_("assume isolinux."), 0, 0},
|
||||||
|
{"pxelinux", 'p', 0, N_("assume pxelinux."), 0, 0},
|
||||||
|
{"syslinux", 's', 0, N_("assume syslinux."), 0, 0},
|
||||||
|
{0, 0, 0, 0, 0, 0}
|
||||||
|
};
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
OPTION_ROOT,
|
||||||
|
OPTION_CWD,
|
||||||
|
OPTION_ISOLINUX,
|
||||||
|
OPTION_PXELINUX,
|
||||||
|
OPTION_SYSLINUX
|
||||||
|
};
|
||||||
|
|
||||||
|
static grub_err_t
|
||||||
|
syslinux_file (grub_extcmd_context_t ctxt, const char *filename)
|
||||||
|
{
|
||||||
|
char *result;
|
||||||
|
const char *root = ctxt->state[OPTION_ROOT].set ? ctxt->state[OPTION_ROOT].arg : "/";
|
||||||
|
const char *cwd = ctxt->state[OPTION_CWD].set ? ctxt->state[OPTION_CWD].arg : NULL;
|
||||||
|
grub_syslinux_flavour_t flav = GRUB_SYSLINUX_UNKNOWN;
|
||||||
|
char *cwdf = NULL;
|
||||||
|
grub_menu_t menu;
|
||||||
|
|
||||||
|
if (ctxt->state[OPTION_ISOLINUX].set)
|
||||||
|
flav = GRUB_SYSLINUX_ISOLINUX;
|
||||||
|
if (ctxt->state[OPTION_PXELINUX].set)
|
||||||
|
flav = GRUB_SYSLINUX_PXELINUX;
|
||||||
|
if (ctxt->state[OPTION_SYSLINUX].set)
|
||||||
|
flav = GRUB_SYSLINUX_SYSLINUX;
|
||||||
|
|
||||||
|
if (!cwd)
|
||||||
|
{
|
||||||
|
char *p;
|
||||||
|
cwdf = grub_strdup (filename);
|
||||||
|
if (!cwdf)
|
||||||
|
return grub_errno;
|
||||||
|
p = grub_strrchr (cwdf, '/');
|
||||||
|
if (!p)
|
||||||
|
{
|
||||||
|
grub_free (cwdf);
|
||||||
|
cwd = "/";
|
||||||
|
cwdf = NULL;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
*p = '\0';
|
||||||
|
cwd = cwdf;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
grub_dprintf ("syslinux",
|
||||||
|
"transforming syslinux config %s, root = %s, cwd = %s\n",
|
||||||
|
filename, root, cwd);
|
||||||
|
|
||||||
|
result = grub_syslinux_config_file (root, root, cwd, cwd, filename, flav);
|
||||||
|
if (!result)
|
||||||
|
return grub_errno;
|
||||||
|
|
||||||
|
grub_dprintf ("syslinux", "syslinux config transformed\n");
|
||||||
|
|
||||||
|
menu = grub_env_get_menu ();
|
||||||
|
if (! menu)
|
||||||
|
{
|
||||||
|
menu = grub_zalloc (sizeof (*menu));
|
||||||
|
if (! menu)
|
||||||
|
return grub_errno;
|
||||||
|
|
||||||
|
grub_env_set_menu (menu);
|
||||||
|
}
|
||||||
|
|
||||||
|
grub_normal_parse_line (result, syslinux_file_getline, NULL);
|
||||||
|
grub_print_error ();
|
||||||
|
grub_free (result);
|
||||||
|
grub_free (cwdf);
|
||||||
|
|
||||||
|
return GRUB_ERR_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static grub_err_t
|
||||||
|
grub_cmd_syslinux_source (grub_extcmd_context_t ctxt,
|
||||||
|
int argc, char **args)
|
||||||
|
{
|
||||||
|
int new_env, extractor;
|
||||||
|
grub_err_t ret;
|
||||||
|
|
||||||
|
if (argc != 1)
|
||||||
|
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected"));
|
||||||
|
|
||||||
|
extractor = (ctxt->extcmd->cmd->name[0] == 'e');
|
||||||
|
new_env = (ctxt->extcmd->cmd->name[extractor ? (sizeof ("extract_syslinux_entries_") - 1)
|
||||||
|
: (sizeof ("syslinux_") - 1)] == 'c');
|
||||||
|
|
||||||
|
if (new_env)
|
||||||
|
grub_cls ();
|
||||||
|
|
||||||
|
if (new_env && !extractor)
|
||||||
|
grub_env_context_open ();
|
||||||
|
if (extractor)
|
||||||
|
grub_env_extractor_open (!new_env);
|
||||||
|
|
||||||
|
ret = syslinux_file (ctxt, args[0]);
|
||||||
|
|
||||||
|
if (new_env)
|
||||||
|
{
|
||||||
|
grub_menu_t menu;
|
||||||
|
menu = grub_env_get_menu ();
|
||||||
|
if (menu && menu->size)
|
||||||
|
grub_show_menu (menu, 1, 0);
|
||||||
|
if (!extractor)
|
||||||
|
grub_env_context_close ();
|
||||||
|
}
|
||||||
|
if (extractor)
|
||||||
|
grub_env_extractor_close (!new_env);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static grub_extcmd_t cmd_source, cmd_configfile;
|
||||||
|
static grub_extcmd_t cmd_source_extract, cmd_configfile_extract;
|
||||||
|
|
||||||
|
GRUB_MOD_INIT(syslinuxcfg)
|
||||||
|
{
|
||||||
|
cmd_source
|
||||||
|
= grub_register_extcmd ("syslinux_source",
|
||||||
|
grub_cmd_syslinux_source, 0,
|
||||||
|
N_("FILE"),
|
||||||
|
/* TRANSLATORS: "syslinux config" means
|
||||||
|
"config as used by syslinux". */
|
||||||
|
N_("Parse syslinux config in same context"),
|
||||||
|
options);
|
||||||
|
cmd_configfile
|
||||||
|
= grub_register_extcmd ("syslinux_configfile",
|
||||||
|
grub_cmd_syslinux_source, 0,
|
||||||
|
N_("FILE"),
|
||||||
|
N_("Parse syslinux config in new context"),
|
||||||
|
options);
|
||||||
|
cmd_source_extract
|
||||||
|
= grub_register_extcmd ("extract_syslinux_entries_source",
|
||||||
|
grub_cmd_syslinux_source, 0,
|
||||||
|
N_("FILE"),
|
||||||
|
N_("Parse syslinux config in same context taking only menu entries"),
|
||||||
|
options);
|
||||||
|
cmd_configfile_extract
|
||||||
|
= grub_register_extcmd ("extract_syslinux_entries_configfile",
|
||||||
|
grub_cmd_syslinux_source, 0,
|
||||||
|
N_("FILE"),
|
||||||
|
N_("Parse syslinux config in new context taking only menu entries"),
|
||||||
|
options);
|
||||||
|
}
|
||||||
|
|
||||||
|
GRUB_MOD_FINI(syslinuxcfg)
|
||||||
|
{
|
||||||
|
grub_unregister_extcmd (cmd_source);
|
||||||
|
grub_unregister_extcmd (cmd_configfile);
|
||||||
|
grub_unregister_extcmd (cmd_source_extract);
|
||||||
|
grub_unregister_extcmd (cmd_configfile_extract);
|
||||||
|
}
|
@ -29,7 +29,7 @@ GRUB_MOD_LICENSE ("GPLv3+");
|
|||||||
|
|
||||||
static const struct grub_arg_option options[] =
|
static const struct grub_arg_option options[] =
|
||||||
{
|
{
|
||||||
{ "set", 's', 0, N_("Variable name to update."), N_("VARNAME"), ARG_TYPE_STRING },
|
{ "set", 's', 0, N_("Set a variable to return value."), N_("VARNAME"), ARG_TYPE_STRING },
|
||||||
{ "upcase", 'U', 0, N_("Translate to upper case."), 0, 0 },
|
{ "upcase", 'U', 0, N_("Translate to upper case."), 0, 0 },
|
||||||
{ "downcase", 'D', 0, N_("Translate to lower case."), 0, 0 },
|
{ "downcase", 'D', 0, N_("Translate to lower case."), 0, 0 },
|
||||||
{ 0, 0, 0, 0, 0, 0 }
|
{ 0, 0, 0, 0, 0, 0 }
|
||||||
|
@ -133,7 +133,7 @@ struct signature_v4_header
|
|||||||
grub_uint8_t pkeyalgo;
|
grub_uint8_t pkeyalgo;
|
||||||
grub_uint8_t hash;
|
grub_uint8_t hash;
|
||||||
grub_uint16_t hashed_sub;
|
grub_uint16_t hashed_sub;
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
const char *hashes[] = {
|
const char *hashes[] = {
|
||||||
[0x01] = "md5",
|
[0x01] = "md5",
|
||||||
@ -885,6 +885,7 @@ grub_pubkey_open (grub_file_t io, const char *filename)
|
|||||||
if (err)
|
if (err)
|
||||||
return NULL;
|
return NULL;
|
||||||
io->device = 0;
|
io->device = 0;
|
||||||
|
io->name = 0;
|
||||||
grub_file_close (io);
|
grub_file_close (io);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -77,9 +77,9 @@ static grub_command_t cmd_ls, cmd_cat;
|
|||||||
|
|
||||||
GRUB_MOD_INIT (lsxen)
|
GRUB_MOD_INIT (lsxen)
|
||||||
{
|
{
|
||||||
cmd_ls = grub_register_command ("xen_ls", grub_cmd_lsxen, "[DIR]",
|
cmd_ls = grub_register_command ("xen_ls", grub_cmd_lsxen, N_("[DIR]"),
|
||||||
N_("List XEN storage."));
|
N_("List XEN storage."));
|
||||||
cmd_cat = grub_register_command ("xen_cat", grub_cmd_catxen, "[DIR]",
|
cmd_cat = grub_register_command ("xen_cat", grub_cmd_catxen, N_("[DIR]"),
|
||||||
N_("List XEN storage."));
|
N_("List XEN storage."));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@ static inline int GF_PER_SECTOR (const struct grub_cryptodisk *dev)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static grub_cryptodisk_t cryptodisk_list = NULL;
|
static grub_cryptodisk_t cryptodisk_list = NULL;
|
||||||
static grub_uint8_t n = 0;
|
static grub_uint8_t last_cryptodisk_id = 0;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gf_mul_x (grub_uint8_t *g)
|
gf_mul_x (grub_uint8_t *g)
|
||||||
@ -707,7 +707,7 @@ grub_cryptodisk_insert (grub_cryptodisk_t newdev, const char *name,
|
|||||||
return grub_errno;
|
return grub_errno;
|
||||||
}
|
}
|
||||||
|
|
||||||
newdev->id = n++;
|
newdev->id = last_cryptodisk_id++;
|
||||||
newdev->source_id = source->id;
|
newdev->source_id = source->id;
|
||||||
newdev->source_dev_id = source->dev->id;
|
newdev->source_dev_id = source->dev->id;
|
||||||
newdev->next = cryptodisk_list;
|
newdev->next = cryptodisk_list;
|
||||||
@ -753,7 +753,7 @@ grub_cryptodisk_cheat_insert (grub_cryptodisk_t newdev, const char *name,
|
|||||||
newdev->cheat_fd = GRUB_UTIL_FD_INVALID;
|
newdev->cheat_fd = GRUB_UTIL_FD_INVALID;
|
||||||
newdev->source_id = source->id;
|
newdev->source_id = source->id;
|
||||||
newdev->source_dev_id = source->dev->id;
|
newdev->source_dev_id = source->dev->id;
|
||||||
newdev->id = n++;
|
newdev->id = last_cryptodisk_id++;
|
||||||
newdev->next = cryptodisk_list;
|
newdev->next = cryptodisk_list;
|
||||||
cryptodisk_list = newdev;
|
cryptodisk_list = newdev;
|
||||||
|
|
||||||
|
@ -1057,7 +1057,8 @@ insert_array (grub_disk_t disk, const struct grub_diskfilter_pv_id *id,
|
|||||||
(unsigned long long) grub_disk_get_size (disk),
|
(unsigned long long) grub_disk_get_size (disk),
|
||||||
array->name, diskfilter->name);
|
array->name, diskfilter->name);
|
||||||
#ifdef GRUB_UTIL
|
#ifdef GRUB_UTIL
|
||||||
grub_util_info ("Inserting %s (+%lld,%lld) into %s (%s)\n", disk->name,
|
grub_util_info ("Inserting %s (+%" GRUB_HOST_PRIuLONG_LONG ",%"
|
||||||
|
GRUB_HOST_PRIuLONG_LONG ") into %s (%s)\n", disk->name,
|
||||||
(unsigned long long) grub_partition_get_start (disk->partition),
|
(unsigned long long) grub_partition_get_start (disk->partition),
|
||||||
(unsigned long long) grub_disk_get_size (disk),
|
(unsigned long long) grub_disk_get_size (disk),
|
||||||
array->name, diskfilter->name);
|
array->name, diskfilter->name);
|
||||||
|
@ -88,7 +88,7 @@ struct grub_nv_super
|
|||||||
char prodrev[NV_PRODREV_LEN]; /* 0x2C - 0x2F Array product revision */
|
char prodrev[NV_PRODREV_LEN]; /* 0x2C - 0x2F Array product revision */
|
||||||
grub_uint32_t unit_flags; /* 0x30 - 0x33 Flags for this disk */
|
grub_uint32_t unit_flags; /* 0x30 - 0x33 Flags for this disk */
|
||||||
struct grub_nv_array array; /* Array information */
|
struct grub_nv_array array; /* Array information */
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
static struct grub_diskfilter_vg *
|
static struct grub_diskfilter_vg *
|
||||||
grub_dmraid_nv_detect (grub_disk_t disk,
|
grub_dmraid_nv_detect (grub_disk_t disk,
|
||||||
|
@ -157,8 +157,7 @@ find_parent_device (struct grub_efidisk_data *devices,
|
|||||||
ldp = find_last_device_path (dp);
|
ldp = find_last_device_path (dp);
|
||||||
ldp->type = GRUB_EFI_END_DEVICE_PATH_TYPE;
|
ldp->type = GRUB_EFI_END_DEVICE_PATH_TYPE;
|
||||||
ldp->subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE;
|
ldp->subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE;
|
||||||
ldp->length[0] = sizeof (*ldp);
|
ldp->length = sizeof (*ldp);
|
||||||
ldp->length[1] = 0;
|
|
||||||
|
|
||||||
for (parent = devices; parent; parent = parent->next)
|
for (parent = devices; parent; parent = parent->next)
|
||||||
{
|
{
|
||||||
@ -188,8 +187,7 @@ is_child (struct grub_efidisk_data *child,
|
|||||||
ldp = find_last_device_path (dp);
|
ldp = find_last_device_path (dp);
|
||||||
ldp->type = GRUB_EFI_END_DEVICE_PATH_TYPE;
|
ldp->type = GRUB_EFI_END_DEVICE_PATH_TYPE;
|
||||||
ldp->subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE;
|
ldp->subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE;
|
||||||
ldp->length[0] = sizeof (*ldp);
|
ldp->length = sizeof (*ldp);
|
||||||
ldp->length[1] = 0;
|
|
||||||
|
|
||||||
ret = (grub_efi_compare_device_paths (dp, parent->device_path) == 0);
|
ret = (grub_efi_compare_device_paths (dp, parent->device_path) == 0);
|
||||||
grub_free (dp);
|
grub_free (dp);
|
||||||
@ -668,20 +666,20 @@ grub_efidisk_get_device_handle (grub_disk_t disk)
|
|||||||
devices = make_devices ();
|
devices = make_devices ();
|
||||||
FOR_CHILDREN (c, devices)
|
FOR_CHILDREN (c, devices)
|
||||||
{
|
{
|
||||||
grub_efi_hard_drive_device_path_t hd;
|
grub_efi_hard_drive_device_path_t *hd;
|
||||||
|
|
||||||
grub_memcpy (&hd, c->last_device_path, sizeof (hd));
|
hd = (grub_efi_hard_drive_device_path_t *) c->last_device_path;
|
||||||
|
|
||||||
if ((GRUB_EFI_DEVICE_PATH_TYPE (c->last_device_path)
|
if ((GRUB_EFI_DEVICE_PATH_TYPE (c->last_device_path)
|
||||||
== GRUB_EFI_MEDIA_DEVICE_PATH_TYPE)
|
== GRUB_EFI_MEDIA_DEVICE_PATH_TYPE)
|
||||||
&& (GRUB_EFI_DEVICE_PATH_SUBTYPE (c->last_device_path)
|
&& (GRUB_EFI_DEVICE_PATH_SUBTYPE (c->last_device_path)
|
||||||
== GRUB_EFI_HARD_DRIVE_DEVICE_PATH_SUBTYPE)
|
== GRUB_EFI_HARD_DRIVE_DEVICE_PATH_SUBTYPE)
|
||||||
&& (grub_partition_get_start (disk->partition)
|
&& (grub_partition_get_start (disk->partition)
|
||||||
== (hd.partition_start << (disk->log_sector_size
|
== (hd->partition_start << (disk->log_sector_size
|
||||||
- GRUB_DISK_SECTOR_BITS)))
|
- GRUB_DISK_SECTOR_BITS)))
|
||||||
&& (grub_partition_get_len (disk->partition)
|
&& (grub_partition_get_len (disk->partition)
|
||||||
== (hd.partition_size << (disk->log_sector_size
|
== (hd->partition_size << (disk->log_sector_size
|
||||||
- GRUB_DISK_SECTOR_BITS))))
|
- GRUB_DISK_SECTOR_BITS))))
|
||||||
{
|
{
|
||||||
handle = c->handle;
|
handle = c->handle;
|
||||||
break;
|
break;
|
||||||
@ -747,7 +745,7 @@ get_diskname_from_path (const grub_efi_device_path_t *path,
|
|||||||
struct grub_efidisk_get_device_name_ctx
|
struct grub_efidisk_get_device_name_ctx
|
||||||
{
|
{
|
||||||
char *partition_name;
|
char *partition_name;
|
||||||
grub_efi_hard_drive_device_path_t hd;
|
grub_efi_hard_drive_device_path_t *hd;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Helper for grub_efidisk_get_device_name.
|
/* Helper for grub_efidisk_get_device_name.
|
||||||
@ -759,11 +757,11 @@ grub_efidisk_get_device_name_iter (grub_disk_t disk,
|
|||||||
struct grub_efidisk_get_device_name_ctx *ctx = data;
|
struct grub_efidisk_get_device_name_ctx *ctx = data;
|
||||||
|
|
||||||
if (grub_partition_get_start (part)
|
if (grub_partition_get_start (part)
|
||||||
== (ctx->hd.partition_start << (disk->log_sector_size
|
== (ctx->hd->partition_start << (disk->log_sector_size
|
||||||
- GRUB_DISK_SECTOR_BITS))
|
- GRUB_DISK_SECTOR_BITS))
|
||||||
&& grub_partition_get_len (part)
|
&& grub_partition_get_len (part)
|
||||||
== (ctx->hd.partition_size << (disk->log_sector_size
|
== (ctx->hd->partition_size << (disk->log_sector_size
|
||||||
- GRUB_DISK_SECTOR_BITS)))
|
- GRUB_DISK_SECTOR_BITS)))
|
||||||
{
|
{
|
||||||
ctx->partition_name = grub_partition_get_name (part);
|
ctx->partition_name = grub_partition_get_name (part);
|
||||||
return 1;
|
return 1;
|
||||||
@ -816,8 +814,7 @@ grub_efidisk_get_device_name (grub_efi_handle_t *handle)
|
|||||||
|
|
||||||
dup_ldp->type = GRUB_EFI_END_DEVICE_PATH_TYPE;
|
dup_ldp->type = GRUB_EFI_END_DEVICE_PATH_TYPE;
|
||||||
dup_ldp->subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE;
|
dup_ldp->subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE;
|
||||||
dup_ldp->length[0] = sizeof (*dup_ldp);
|
dup_ldp->length = sizeof (*dup_ldp);
|
||||||
dup_ldp->length[1] = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!get_diskname_from_path (dup_dp, device_name))
|
if (!get_diskname_from_path (dup_dp, device_name))
|
||||||
@ -834,10 +831,10 @@ grub_efidisk_get_device_name (grub_efi_handle_t *handle)
|
|||||||
|
|
||||||
/* Find a partition which matches the hard drive device path. */
|
/* Find a partition which matches the hard drive device path. */
|
||||||
ctx.partition_name = NULL;
|
ctx.partition_name = NULL;
|
||||||
grub_memcpy (&ctx.hd, ldp, sizeof (ctx.hd));
|
ctx.hd = (grub_efi_hard_drive_device_path_t *) ldp;
|
||||||
if (ctx.hd.partition_start == 0
|
if (ctx.hd->partition_start == 0
|
||||||
&& (ctx.hd.partition_size << (parent->log_sector_size
|
&& (ctx.hd->partition_size << (parent->log_sector_size
|
||||||
- GRUB_DISK_SECTOR_BITS))
|
- GRUB_DISK_SECTOR_BITS))
|
||||||
== grub_disk_get_size (parent))
|
== grub_disk_get_size (parent))
|
||||||
{
|
{
|
||||||
dev_name = grub_strdup (parent->name);
|
dev_name = grub_strdup (parent->name);
|
||||||
|
@ -95,7 +95,7 @@ struct grub_geli_key
|
|||||||
grub_uint8_t iv_key[64];
|
grub_uint8_t iv_key[64];
|
||||||
grub_uint8_t cipher_key[64];
|
grub_uint8_t cipher_key[64];
|
||||||
grub_uint8_t hmac[64];
|
grub_uint8_t hmac[64];
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
struct grub_geli_phdr
|
struct grub_geli_phdr
|
||||||
{
|
{
|
||||||
@ -111,7 +111,7 @@ struct grub_geli_phdr
|
|||||||
grub_uint32_t niter;
|
grub_uint32_t niter;
|
||||||
grub_uint8_t salt[64];
|
grub_uint8_t salt[64];
|
||||||
struct grub_geli_key keys[2];
|
struct grub_geli_key keys[2];
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
@ -144,7 +144,7 @@ geli_rekey (struct grub_cryptodisk *dev, grub_uint64_t zoneno)
|
|||||||
const struct {
|
const struct {
|
||||||
char magic[4];
|
char magic[4];
|
||||||
grub_uint64_t zone;
|
grub_uint64_t zone;
|
||||||
} __attribute__ ((packed)) tohash
|
} GRUB_PACKED tohash
|
||||||
= { {'e', 'k', 'e', 'y'}, grub_cpu_to_le64 (zoneno) };
|
= { {'e', 'k', 'e', 'y'}, grub_cpu_to_le64 (zoneno) };
|
||||||
GRUB_PROPERLY_ALIGNED_ARRAY (key, GRUB_CRYPTO_MAX_MDLEN);
|
GRUB_PROPERLY_ALIGNED_ARRAY (key, GRUB_CRYPTO_MAX_MDLEN);
|
||||||
|
|
||||||
|
@ -49,7 +49,7 @@ grub_host_open (const char *name, grub_disk_t disk)
|
|||||||
return grub_error (GRUB_ERR_UNKNOWN_DEVICE, "not a host disk");
|
return grub_error (GRUB_ERR_UNKNOWN_DEVICE, "not a host disk");
|
||||||
|
|
||||||
disk->total_sectors = 0;
|
disk->total_sectors = 0;
|
||||||
disk->id = (unsigned long) "host";
|
disk->id = 0;
|
||||||
|
|
||||||
disk->data = 0;
|
disk->data = 0;
|
||||||
|
|
||||||
|
@ -49,7 +49,7 @@ struct grub_ldm_vblk {
|
|||||||
grub_uint8_t type;
|
grub_uint8_t type;
|
||||||
grub_uint32_t unused2;
|
grub_uint32_t unused2;
|
||||||
grub_uint8_t dynamic[104];
|
grub_uint8_t dynamic[104];
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
#define LDM_VBLK_MAGIC "VBLK"
|
#define LDM_VBLK_MAGIC "VBLK"
|
||||||
|
|
||||||
enum
|
enum
|
||||||
@ -83,7 +83,7 @@ struct grub_ldm_label
|
|||||||
grub_uint64_t pv_size;
|
grub_uint64_t pv_size;
|
||||||
grub_uint64_t config_start;
|
grub_uint64_t config_start;
|
||||||
grub_uint64_t config_size;
|
grub_uint64_t config_size;
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
|
|
||||||
#define LDM_MAGIC "PRIVHEAD"
|
#define LDM_MAGIC "PRIVHEAD"
|
||||||
|
@ -32,9 +32,11 @@ struct grub_loopback
|
|||||||
char *devname;
|
char *devname;
|
||||||
grub_file_t file;
|
grub_file_t file;
|
||||||
struct grub_loopback *next;
|
struct grub_loopback *next;
|
||||||
|
unsigned long id;
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct grub_loopback *loopback_list;
|
static struct grub_loopback *loopback_list;
|
||||||
|
static unsigned long last_id = 0;
|
||||||
|
|
||||||
static const struct grub_arg_option options[] =
|
static const struct grub_arg_option options[] =
|
||||||
{
|
{
|
||||||
@ -120,6 +122,7 @@ grub_cmd_loopback (grub_extcmd_context_t ctxt, int argc, char **args)
|
|||||||
}
|
}
|
||||||
|
|
||||||
newdev->file = file;
|
newdev->file = file;
|
||||||
|
newdev->id = last_id++;
|
||||||
|
|
||||||
/* Add the new entry to the list. */
|
/* Add the new entry to the list. */
|
||||||
newdev->next = loopback_list;
|
newdev->next = loopback_list;
|
||||||
@ -171,7 +174,7 @@ grub_loopback_open (const char *name, grub_disk_t disk)
|
|||||||
disk->max_agglomerate = 1 << (29 - GRUB_DISK_SECTOR_BITS
|
disk->max_agglomerate = 1 << (29 - GRUB_DISK_SECTOR_BITS
|
||||||
- GRUB_DISK_CACHE_BITS);
|
- GRUB_DISK_CACHE_BITS);
|
||||||
|
|
||||||
disk->id = (unsigned long) dev;
|
disk->id = dev->id;
|
||||||
|
|
||||||
disk->data = dev;
|
disk->data = dev;
|
||||||
|
|
||||||
|
@ -56,7 +56,7 @@ struct grub_luks_phdr
|
|||||||
grub_uint32_t keyMaterialOffset;
|
grub_uint32_t keyMaterialOffset;
|
||||||
grub_uint32_t stripes;
|
grub_uint32_t stripes;
|
||||||
} keyblock[8];
|
} keyblock[8];
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
typedef struct grub_luks_phdr *grub_luks_phdr_t;
|
typedef struct grub_luks_phdr *grub_luks_phdr_t;
|
||||||
|
|
||||||
|
@ -97,7 +97,7 @@ struct grub_raid_super_1x
|
|||||||
*/
|
*/
|
||||||
grub_uint16_t dev_roles[0]; /* Role in array, or 0xffff for a spare, or 0xfffe for faulty. */
|
grub_uint16_t dev_roles[0]; /* Role in array, or 0xffff for a spare, or 0xfffe for faulty. */
|
||||||
};
|
};
|
||||||
/* Could be __attribute__ ((packed)), but since all members in this struct
|
/* Could be GRUB_PACKED, but since all members in this struct
|
||||||
are already appropriately aligned, we can omit this and avoid suboptimal
|
are already appropriately aligned, we can omit this and avoid suboptimal
|
||||||
assembly in some cases. */
|
assembly in some cases. */
|
||||||
|
|
||||||
|
@ -175,7 +175,7 @@ struct grub_raid_super_09
|
|||||||
* Active descriptor
|
* Active descriptor
|
||||||
*/
|
*/
|
||||||
struct grub_raid_disk_09 this_disk;
|
struct grub_raid_disk_09 this_disk;
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
static struct grub_diskfilter_vg *
|
static struct grub_diskfilter_vg *
|
||||||
grub_mdraid_detect (grub_disk_t disk,
|
grub_mdraid_detect (grub_disk_t disk,
|
||||||
|
@ -47,7 +47,7 @@ grub_memdisk_open (const char *name, grub_disk_t disk)
|
|||||||
|
|
||||||
disk->total_sectors = memdisk_size / GRUB_DISK_SECTOR_SIZE;
|
disk->total_sectors = memdisk_size / GRUB_DISK_SECTOR_SIZE;
|
||||||
disk->max_agglomerate = GRUB_DISK_MAX_MAX_AGGLOMERATE;
|
disk->max_agglomerate = GRUB_DISK_MAX_MAX_AGGLOMERATE;
|
||||||
disk->id = (unsigned long) "mdsk";
|
disk->id = 0;
|
||||||
|
|
||||||
return GRUB_ERR_NONE;
|
return GRUB_ERR_NONE;
|
||||||
}
|
}
|
||||||
|
@ -44,7 +44,7 @@ struct grub_usbms_cbw
|
|||||||
grub_uint8_t lun;
|
grub_uint8_t lun;
|
||||||
grub_uint8_t length;
|
grub_uint8_t length;
|
||||||
grub_uint8_t cbwcb[16];
|
grub_uint8_t cbwcb[16];
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
struct grub_usbms_csw
|
struct grub_usbms_csw
|
||||||
{
|
{
|
||||||
@ -52,7 +52,7 @@ struct grub_usbms_csw
|
|||||||
grub_uint32_t tag;
|
grub_uint32_t tag;
|
||||||
grub_uint32_t residue;
|
grub_uint32_t residue;
|
||||||
grub_uint8_t status;
|
grub_uint8_t status;
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
struct grub_usbms_dev
|
struct grub_usbms_dev
|
||||||
{
|
{
|
||||||
@ -298,6 +298,8 @@ grub_usbms_transfer_bo (struct grub_scsi *scsi, grub_size_t cmdsize, char *cmd,
|
|||||||
grub_usb_err_t errCSW = GRUB_USB_ERR_NONE;
|
grub_usb_err_t errCSW = GRUB_USB_ERR_NONE;
|
||||||
int retrycnt = 3 + 1;
|
int retrycnt = 3 + 1;
|
||||||
|
|
||||||
|
tag++;
|
||||||
|
|
||||||
retry:
|
retry:
|
||||||
retrycnt--;
|
retrycnt--;
|
||||||
if (retrycnt == 0)
|
if (retrycnt == 0)
|
||||||
@ -306,7 +308,7 @@ grub_usbms_transfer_bo (struct grub_scsi *scsi, grub_size_t cmdsize, char *cmd,
|
|||||||
/* Setup the request. */
|
/* Setup the request. */
|
||||||
grub_memset (&cbw, 0, sizeof (cbw));
|
grub_memset (&cbw, 0, sizeof (cbw));
|
||||||
cbw.signature = grub_cpu_to_le32 (0x43425355);
|
cbw.signature = grub_cpu_to_le32 (0x43425355);
|
||||||
cbw.tag = tag++;
|
cbw.tag = tag;
|
||||||
cbw.transfer_length = grub_cpu_to_le32 (size);
|
cbw.transfer_length = grub_cpu_to_le32 (size);
|
||||||
cbw.flags = (!read_write) << GRUB_USBMS_DIRECTION_BIT;
|
cbw.flags = (!read_write) << GRUB_USBMS_DIRECTION_BIT;
|
||||||
cbw.lun = scsi->lun; /* In USB MS CBW are LUN bits on another place than in SCSI CDB, both should be set correctly. */
|
cbw.lun = scsi->lun; /* In USB MS CBW are LUN bits on another place than in SCSI CDB, both should be set correctly. */
|
||||||
@ -335,7 +337,7 @@ grub_usbms_transfer_bo (struct grub_scsi *scsi, grub_size_t cmdsize, char *cmd,
|
|||||||
grub_usb_clear_halt (dev->dev, dev->out->endp_addr);
|
grub_usb_clear_halt (dev->dev, dev->out->endp_addr);
|
||||||
goto CheckCSW;
|
goto CheckCSW;
|
||||||
}
|
}
|
||||||
return grub_error (GRUB_ERR_IO, "USB Mass Storage request failed");
|
goto retry;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Read/write the data, (maybe) according to specification. */
|
/* Read/write the data, (maybe) according to specification. */
|
||||||
|
@ -36,7 +36,7 @@ struct grub_affs_bblock
|
|||||||
grub_uint8_t flags;
|
grub_uint8_t flags;
|
||||||
grub_uint32_t checksum;
|
grub_uint32_t checksum;
|
||||||
grub_uint32_t rootblock;
|
grub_uint32_t rootblock;
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
/* Set if the filesystem is a AFFS filesystem. Otherwise this is an
|
/* Set if the filesystem is a AFFS filesystem. Otherwise this is an
|
||||||
OFS filesystem. */
|
OFS filesystem. */
|
||||||
@ -51,14 +51,14 @@ struct grub_affs_rblock
|
|||||||
grub_uint32_t unused2;
|
grub_uint32_t unused2;
|
||||||
grub_uint32_t checksum;
|
grub_uint32_t checksum;
|
||||||
grub_uint32_t hashtable[1];
|
grub_uint32_t hashtable[1];
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
struct grub_affs_time
|
struct grub_affs_time
|
||||||
{
|
{
|
||||||
grub_int32_t day;
|
grub_int32_t day;
|
||||||
grub_uint32_t min;
|
grub_uint32_t min;
|
||||||
grub_uint32_t hz;
|
grub_uint32_t hz;
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
/* The second part of a file header block. */
|
/* The second part of a file header block. */
|
||||||
struct grub_affs_file
|
struct grub_affs_file
|
||||||
@ -76,7 +76,7 @@ struct grub_affs_file
|
|||||||
grub_uint32_t parent;
|
grub_uint32_t parent;
|
||||||
grub_uint32_t extension;
|
grub_uint32_t extension;
|
||||||
grub_uint32_t type;
|
grub_uint32_t type;
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
/* The location of `struct grub_affs_file' relative to the end of a
|
/* The location of `struct grub_affs_file' relative to the end of a
|
||||||
file header block. */
|
file header block. */
|
||||||
|
@ -73,7 +73,7 @@ struct grub_bfs_extent
|
|||||||
grub_uint32_t ag;
|
grub_uint32_t ag;
|
||||||
grub_uint16_t start;
|
grub_uint16_t start;
|
||||||
grub_uint16_t len;
|
grub_uint16_t len;
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
struct grub_bfs_superblock
|
struct grub_bfs_superblock
|
||||||
{
|
{
|
||||||
@ -89,7 +89,7 @@ struct grub_bfs_superblock
|
|||||||
grub_uint8_t unused3[32];
|
grub_uint8_t unused3[32];
|
||||||
grub_uint32_t magic3;
|
grub_uint32_t magic3;
|
||||||
struct grub_bfs_extent root_dir;
|
struct grub_bfs_extent root_dir;
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
struct grub_bfs_inode
|
struct grub_bfs_inode
|
||||||
{
|
{
|
||||||
@ -118,11 +118,11 @@ struct grub_bfs_inode
|
|||||||
grub_uint64_t max_double_indirect_range;
|
grub_uint64_t max_double_indirect_range;
|
||||||
grub_uint64_t size;
|
grub_uint64_t size;
|
||||||
grub_uint32_t pad[4];
|
grub_uint32_t pad[4];
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
char inplace_link[144];
|
char inplace_link[144];
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
grub_uint8_t small_data[0];
|
grub_uint8_t small_data[0];
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
@ -134,7 +134,7 @@ struct grub_bfs_small_data_element_header
|
|||||||
grub_uint32_t type;
|
grub_uint32_t type;
|
||||||
grub_uint16_t name_len;
|
grub_uint16_t name_len;
|
||||||
grub_uint16_t value_len;
|
grub_uint16_t value_len;
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
struct grub_bfs_btree_header
|
struct grub_bfs_btree_header
|
||||||
{
|
{
|
||||||
@ -151,7 +151,7 @@ struct grub_bfs_btree_header
|
|||||||
grub_uint64_t root;
|
grub_uint64_t root;
|
||||||
#endif
|
#endif
|
||||||
grub_uint32_t unused2[2];
|
grub_uint32_t unused2[2];
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
struct grub_bfs_btree_node
|
struct grub_bfs_btree_node
|
||||||
{
|
{
|
||||||
@ -165,7 +165,7 @@ struct grub_bfs_btree_node
|
|||||||
grub_uint16_t count_keys;
|
grub_uint16_t count_keys;
|
||||||
grub_uint16_t total_key_len;
|
grub_uint16_t total_key_len;
|
||||||
#endif
|
#endif
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
struct grub_bfs_data
|
struct grub_bfs_data
|
||||||
{
|
{
|
||||||
|
@ -53,7 +53,7 @@ struct grub_btrfs_device
|
|||||||
grub_uint64_t device_id;
|
grub_uint64_t device_id;
|
||||||
grub_uint64_t size;
|
grub_uint64_t size;
|
||||||
grub_uint8_t dummy[0x62 - 0x10];
|
grub_uint8_t dummy[0x62 - 0x10];
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
struct grub_btrfs_superblock
|
struct grub_btrfs_superblock
|
||||||
{
|
{
|
||||||
@ -71,7 +71,7 @@ struct grub_btrfs_superblock
|
|||||||
char label[0x100];
|
char label[0x100];
|
||||||
grub_uint8_t dummy4[0x100];
|
grub_uint8_t dummy4[0x100];
|
||||||
grub_uint8_t bootstrap_mapping[0x800];
|
grub_uint8_t bootstrap_mapping[0x800];
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
struct btrfs_header
|
struct btrfs_header
|
||||||
{
|
{
|
||||||
@ -80,7 +80,7 @@ struct btrfs_header
|
|||||||
grub_uint8_t dummy[0x30];
|
grub_uint8_t dummy[0x30];
|
||||||
grub_uint32_t nitems;
|
grub_uint32_t nitems;
|
||||||
grub_uint8_t level;
|
grub_uint8_t level;
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
struct grub_btrfs_device_desc
|
struct grub_btrfs_device_desc
|
||||||
{
|
{
|
||||||
@ -122,28 +122,28 @@ struct grub_btrfs_chunk_item
|
|||||||
grub_uint8_t dummy2[0xc];
|
grub_uint8_t dummy2[0xc];
|
||||||
grub_uint16_t nstripes;
|
grub_uint16_t nstripes;
|
||||||
grub_uint16_t nsubstripes;
|
grub_uint16_t nsubstripes;
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
struct grub_btrfs_chunk_stripe
|
struct grub_btrfs_chunk_stripe
|
||||||
{
|
{
|
||||||
grub_uint64_t device_id;
|
grub_uint64_t device_id;
|
||||||
grub_uint64_t offset;
|
grub_uint64_t offset;
|
||||||
grub_btrfs_uuid_t device_uuid;
|
grub_btrfs_uuid_t device_uuid;
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
struct grub_btrfs_leaf_node
|
struct grub_btrfs_leaf_node
|
||||||
{
|
{
|
||||||
struct grub_btrfs_key key;
|
struct grub_btrfs_key key;
|
||||||
grub_uint32_t offset;
|
grub_uint32_t offset;
|
||||||
grub_uint32_t size;
|
grub_uint32_t size;
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
struct grub_btrfs_internal_node
|
struct grub_btrfs_internal_node
|
||||||
{
|
{
|
||||||
struct grub_btrfs_key key;
|
struct grub_btrfs_key key;
|
||||||
grub_uint64_t addr;
|
grub_uint64_t addr;
|
||||||
grub_uint64_t dummy;
|
grub_uint64_t dummy;
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
struct grub_btrfs_dir_item
|
struct grub_btrfs_dir_item
|
||||||
{
|
{
|
||||||
@ -156,7 +156,7 @@ struct grub_btrfs_dir_item
|
|||||||
#define GRUB_BTRFS_DIR_ITEM_TYPE_SYMLINK 7
|
#define GRUB_BTRFS_DIR_ITEM_TYPE_SYMLINK 7
|
||||||
grub_uint8_t type;
|
grub_uint8_t type;
|
||||||
char name[0];
|
char name[0];
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
struct grub_btrfs_leaf_descriptor
|
struct grub_btrfs_leaf_descriptor
|
||||||
{
|
{
|
||||||
@ -183,7 +183,7 @@ struct grub_btrfs_inode
|
|||||||
grub_uint64_t size;
|
grub_uint64_t size;
|
||||||
grub_uint8_t dummy2[0x70];
|
grub_uint8_t dummy2[0x70];
|
||||||
struct grub_btrfs_time mtime;
|
struct grub_btrfs_time mtime;
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
struct grub_btrfs_extent_data
|
struct grub_btrfs_extent_data
|
||||||
{
|
{
|
||||||
@ -204,7 +204,7 @@ struct grub_btrfs_extent_data
|
|||||||
grub_uint64_t filled;
|
grub_uint64_t filled;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
#define GRUB_BTRFS_EXTENT_INLINE 0
|
#define GRUB_BTRFS_EXTENT_INLINE 0
|
||||||
#define GRUB_BTRFS_EXTENT_REGULAR 1
|
#define GRUB_BTRFS_EXTENT_REGULAR 1
|
||||||
@ -1104,7 +1104,12 @@ grub_btrfs_extent_read (struct grub_btrfs_data *data,
|
|||||||
- (grub_uint8_t *) data->extent),
|
- (grub_uint8_t *) data->extent),
|
||||||
extoff, buf, csize)
|
extoff, buf, csize)
|
||||||
!= (grub_ssize_t) csize)
|
!= (grub_ssize_t) csize)
|
||||||
return -1;
|
{
|
||||||
|
if (!grub_errno)
|
||||||
|
grub_error (GRUB_ERR_BAD_COMPRESSED_DATA,
|
||||||
|
"premature end of compressed");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (data->extent->compression == GRUB_BTRFS_COMPRESSION_LZO)
|
else if (data->extent->compression == GRUB_BTRFS_COMPRESSION_LZO)
|
||||||
{
|
{
|
||||||
@ -1158,7 +1163,12 @@ grub_btrfs_extent_read (struct grub_btrfs_data *data,
|
|||||||
grub_free (tmp);
|
grub_free (tmp);
|
||||||
|
|
||||||
if (ret != (grub_ssize_t) csize)
|
if (ret != (grub_ssize_t) csize)
|
||||||
return -1;
|
{
|
||||||
|
if (!grub_errno)
|
||||||
|
grub_error (GRUB_ERR_BAD_COMPRESSED_DATA,
|
||||||
|
"premature end of compressed");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -291,7 +291,7 @@ grub_cbfsdisk_open (const char *name, grub_disk_t disk)
|
|||||||
|
|
||||||
disk->total_sectors = cbfsdisk_size / GRUB_DISK_SECTOR_SIZE;
|
disk->total_sectors = cbfsdisk_size / GRUB_DISK_SECTOR_SIZE;
|
||||||
disk->max_agglomerate = GRUB_DISK_MAX_MAX_AGGLOMERATE;
|
disk->max_agglomerate = GRUB_DISK_MAX_MAX_AGGLOMERATE;
|
||||||
disk->id = (unsigned long) "cbfs";
|
disk->id = 0;
|
||||||
|
|
||||||
return GRUB_ERR_NONE;
|
return GRUB_ERR_NONE;
|
||||||
}
|
}
|
||||||
|
@ -35,7 +35,7 @@ struct head
|
|||||||
grub_uint16_t mtime[2];
|
grub_uint16_t mtime[2];
|
||||||
grub_uint16_t namesize[1];
|
grub_uint16_t namesize[1];
|
||||||
grub_uint16_t filesize[2];
|
grub_uint16_t filesize[2];
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
static inline unsigned long long
|
static inline unsigned long long
|
||||||
read_number (const grub_uint16_t *arr, grub_size_t size)
|
read_number (const grub_uint16_t *arr, grub_size_t size)
|
||||||
|
@ -35,7 +35,7 @@ struct head
|
|||||||
grub_uint16_t mtime[2];
|
grub_uint16_t mtime[2];
|
||||||
grub_uint16_t namesize[1];
|
grub_uint16_t namesize[1];
|
||||||
grub_uint16_t filesize[2];
|
grub_uint16_t filesize[2];
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
static inline unsigned long long
|
static inline unsigned long long
|
||||||
read_number (const grub_uint16_t *arr, grub_size_t size)
|
read_number (const grub_uint16_t *arr, grub_size_t size)
|
||||||
|
@ -92,7 +92,7 @@ struct grub_fat_dir_entry
|
|||||||
grub_uint8_t m_time_tenth;
|
grub_uint8_t m_time_tenth;
|
||||||
grub_uint8_t a_time_tenth;
|
grub_uint8_t a_time_tenth;
|
||||||
grub_uint8_t reserved2[9];
|
grub_uint8_t reserved2[9];
|
||||||
} __attribute__ ((packed)) file;
|
} GRUB_PACKED file;
|
||||||
struct {
|
struct {
|
||||||
grub_uint8_t flags;
|
grub_uint8_t flags;
|
||||||
grub_uint8_t reserved1;
|
grub_uint8_t reserved1;
|
||||||
@ -103,17 +103,17 @@ struct grub_fat_dir_entry
|
|||||||
grub_uint32_t reserved3;
|
grub_uint32_t reserved3;
|
||||||
grub_uint32_t first_cluster;
|
grub_uint32_t first_cluster;
|
||||||
grub_uint64_t file_size;
|
grub_uint64_t file_size;
|
||||||
} __attribute__ ((packed)) stream_extension;
|
} GRUB_PACKED stream_extension;
|
||||||
struct {
|
struct {
|
||||||
grub_uint8_t flags;
|
grub_uint8_t flags;
|
||||||
grub_uint16_t str[15];
|
grub_uint16_t str[15];
|
||||||
} __attribute__ ((packed)) file_name;
|
} GRUB_PACKED file_name;
|
||||||
struct {
|
struct {
|
||||||
grub_uint8_t character_count;
|
grub_uint8_t character_count;
|
||||||
grub_uint16_t str[15];
|
grub_uint16_t str[15];
|
||||||
} __attribute__ ((packed)) volume_label;
|
} GRUB_PACKED volume_label;
|
||||||
} __attribute__ ((packed)) type_specific;
|
} GRUB_PACKED type_specific;
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
struct grub_fat_dir_node
|
struct grub_fat_dir_node
|
||||||
{
|
{
|
||||||
@ -142,7 +142,7 @@ struct grub_fat_dir_entry
|
|||||||
grub_uint16_t w_date;
|
grub_uint16_t w_date;
|
||||||
grub_uint16_t first_cluster_low;
|
grub_uint16_t first_cluster_low;
|
||||||
grub_uint32_t file_size;
|
grub_uint32_t file_size;
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
struct grub_fat_long_name_entry
|
struct grub_fat_long_name_entry
|
||||||
{
|
{
|
||||||
@ -154,7 +154,7 @@ struct grub_fat_long_name_entry
|
|||||||
grub_uint16_t name2[6];
|
grub_uint16_t name2[6];
|
||||||
grub_uint16_t first_cluster;
|
grub_uint16_t first_cluster;
|
||||||
grub_uint16_t name3[2];
|
grub_uint16_t name3[2];
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
typedef struct grub_fat_dir_entry grub_fat_dir_node_t;
|
typedef struct grub_fat_dir_entry grub_fat_dir_node_t;
|
||||||
|
|
||||||
|
@ -65,7 +65,7 @@ struct grub_hfs_node
|
|||||||
grub_uint8_t level;
|
grub_uint8_t level;
|
||||||
grub_uint16_t reccnt;
|
grub_uint16_t reccnt;
|
||||||
grub_uint16_t unused;
|
grub_uint16_t unused;
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
/* The head of the B*-Tree. */
|
/* The head of the B*-Tree. */
|
||||||
struct grub_hfs_treeheader
|
struct grub_hfs_treeheader
|
||||||
@ -81,7 +81,7 @@ struct grub_hfs_treeheader
|
|||||||
grub_uint32_t nodes;
|
grub_uint32_t nodes;
|
||||||
grub_uint32_t free_nodes;
|
grub_uint32_t free_nodes;
|
||||||
grub_uint8_t unused[76];
|
grub_uint8_t unused[76];
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
/* The state of a mounted HFS filesystem. */
|
/* The state of a mounted HFS filesystem. */
|
||||||
struct grub_hfs_data
|
struct grub_hfs_data
|
||||||
@ -112,7 +112,7 @@ struct grub_hfs_catalog_key
|
|||||||
|
|
||||||
/* Filename. */
|
/* Filename. */
|
||||||
grub_uint8_t str[31];
|
grub_uint8_t str[31];
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
/* The key as used on disk in a extent overflow tree. Using this key
|
/* The key as used on disk in a extent overflow tree. Using this key
|
||||||
the extents can be looked up using a fileid and logical start block
|
the extents can be looked up using a fileid and logical start block
|
||||||
@ -125,7 +125,7 @@ struct grub_hfs_extent_key
|
|||||||
grub_uint8_t forktype;
|
grub_uint8_t forktype;
|
||||||
grub_uint32_t fileid;
|
grub_uint32_t fileid;
|
||||||
grub_uint16_t first_block;
|
grub_uint16_t first_block;
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
/* A directory record. This is used to find out the directory ID. */
|
/* A directory record. This is used to find out the directory ID. */
|
||||||
struct grub_hfs_dirrec
|
struct grub_hfs_dirrec
|
||||||
@ -136,7 +136,7 @@ struct grub_hfs_dirrec
|
|||||||
grub_uint32_t dirid;
|
grub_uint32_t dirid;
|
||||||
grub_uint32_t ctime;
|
grub_uint32_t ctime;
|
||||||
grub_uint32_t mtime;
|
grub_uint32_t mtime;
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
/* Information about a file. */
|
/* Information about a file. */
|
||||||
struct grub_hfs_filerec
|
struct grub_hfs_filerec
|
||||||
@ -154,7 +154,7 @@ struct grub_hfs_filerec
|
|||||||
/* The first 3 extents of the file. The other extents can be found
|
/* The first 3 extents of the file. The other extents can be found
|
||||||
in the extent overflow file. */
|
in the extent overflow file. */
|
||||||
grub_hfs_datarecord_t extents;
|
grub_hfs_datarecord_t extents;
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
/* A record descriptor, both key and data, used to pass to call back
|
/* A record descriptor, both key and data, used to pass to call back
|
||||||
functions. */
|
functions. */
|
||||||
@ -712,7 +712,7 @@ grub_hfs_iterate_records (struct grub_hfs_data *data, int type, int idx,
|
|||||||
{
|
{
|
||||||
grub_uint8_t keylen;
|
grub_uint8_t keylen;
|
||||||
grub_uint8_t key;
|
grub_uint8_t key;
|
||||||
} __attribute__ ((packed)) *pnt;
|
} GRUB_PACKED *pnt;
|
||||||
pnt = (struct pointer *) (grub_be_to_cpu16 (node->offsets[pos])
|
pnt = (struct pointer *) (grub_be_to_cpu16 (node->offsets[pos])
|
||||||
+ node->rawnode);
|
+ node->rawnode);
|
||||||
|
|
||||||
@ -1229,14 +1229,18 @@ grub_hfs_dir_hook (struct grub_hfs_record *rec, void *hook_arg)
|
|||||||
{
|
{
|
||||||
info.dir = 1;
|
info.dir = 1;
|
||||||
info.mtimeset = 1;
|
info.mtimeset = 1;
|
||||||
|
info.inodeset = 1;
|
||||||
info.mtime = grub_be_to_cpu32 (drec->mtime) - 2082844800;
|
info.mtime = grub_be_to_cpu32 (drec->mtime) - 2082844800;
|
||||||
|
info.inode = grub_be_to_cpu32 (drec->dirid);
|
||||||
return ctx->hook (fname, &info, ctx->hook_data);
|
return ctx->hook (fname, &info, ctx->hook_data);
|
||||||
}
|
}
|
||||||
if (frec->type == GRUB_HFS_FILETYPE_FILE)
|
if (frec->type == GRUB_HFS_FILETYPE_FILE)
|
||||||
{
|
{
|
||||||
info.dir = 0;
|
info.dir = 0;
|
||||||
info.mtimeset = 1;
|
info.mtimeset = 1;
|
||||||
|
info.inodeset = 1;
|
||||||
info.mtime = grub_be_to_cpu32 (frec->mtime) - 2082844800;
|
info.mtime = grub_be_to_cpu32 (frec->mtime) - 2082844800;
|
||||||
|
info.inode = grub_be_to_cpu32 (frec->fileid);
|
||||||
return ctx->hook (fname, &info, ctx->hook_data);
|
return ctx->hook (fname, &info, ctx->hook_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,11 +34,6 @@
|
|||||||
|
|
||||||
GRUB_MOD_LICENSE ("GPLv3+");
|
GRUB_MOD_LICENSE ("GPLv3+");
|
||||||
|
|
||||||
#define GRUB_HFSPLUS_MAGIC 0x482B
|
|
||||||
#define GRUB_HFSPLUSX_MAGIC 0x4858
|
|
||||||
#define GRUB_HFSPLUS_SBLOCK 2
|
|
||||||
|
|
||||||
|
|
||||||
/* The type of node. */
|
/* The type of node. */
|
||||||
enum grub_hfsplus_btnode_type
|
enum grub_hfsplus_btnode_type
|
||||||
{
|
{
|
||||||
@ -65,7 +60,7 @@ struct grub_hfsplus_btheader
|
|||||||
grub_uint8_t btree_type;
|
grub_uint8_t btree_type;
|
||||||
grub_uint8_t key_compare;
|
grub_uint8_t key_compare;
|
||||||
grub_uint32_t attributes;
|
grub_uint32_t attributes;
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
struct grub_hfsplus_catfile
|
struct grub_hfsplus_catfile
|
||||||
{
|
{
|
||||||
@ -80,7 +75,7 @@ struct grub_hfsplus_catfile
|
|||||||
grub_uint8_t unused3[44];
|
grub_uint8_t unused3[44];
|
||||||
struct grub_hfsplus_forkdata data;
|
struct grub_hfsplus_forkdata data;
|
||||||
struct grub_hfsplus_forkdata resource;
|
struct grub_hfsplus_forkdata resource;
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
/* Filetype information as used in inodes. */
|
/* Filetype information as used in inodes. */
|
||||||
#define GRUB_HFSPLUS_FILEMODE_MASK 0170000
|
#define GRUB_HFSPLUS_FILEMODE_MASK 0170000
|
||||||
@ -919,6 +914,8 @@ grub_hfsplus_dir_iter (const char *filename,
|
|||||||
info.dir = ((filetype & GRUB_FSHELP_TYPE_MASK) == GRUB_FSHELP_DIR);
|
info.dir = ((filetype & GRUB_FSHELP_TYPE_MASK) == GRUB_FSHELP_DIR);
|
||||||
info.mtimeset = 1;
|
info.mtimeset = 1;
|
||||||
info.mtime = node->mtime;
|
info.mtime = node->mtime;
|
||||||
|
info.inodeset = 1;
|
||||||
|
info.inode = node->fileid;
|
||||||
info.case_insensitive = !! (filetype & GRUB_FSHELP_CASE_INSENSITIVE);
|
info.case_insensitive = !! (filetype & GRUB_FSHELP_CASE_INSENSITIVE);
|
||||||
grub_free (node);
|
grub_free (node);
|
||||||
return ctx->hook (filename, &info, ctx->hook_data);
|
return ctx->hook (filename, &info, ctx->hook_data);
|
||||||
|
@ -35,19 +35,19 @@ struct grub_hfsplus_compress_header1
|
|||||||
grub_uint32_t total_compressed_size_including_seek_blocks_and_header2;
|
grub_uint32_t total_compressed_size_including_seek_blocks_and_header2;
|
||||||
grub_uint32_t value_0x32;
|
grub_uint32_t value_0x32;
|
||||||
grub_uint8_t unused[0xf0];
|
grub_uint8_t unused[0xf0];
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
/* big-endian. */
|
/* big-endian. */
|
||||||
struct grub_hfsplus_compress_header2
|
struct grub_hfsplus_compress_header2
|
||||||
{
|
{
|
||||||
grub_uint32_t total_compressed_size_including_seek_blocks;
|
grub_uint32_t total_compressed_size_including_seek_blocks;
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
/* little-endian. */
|
/* little-endian. */
|
||||||
struct grub_hfsplus_compress_header3
|
struct grub_hfsplus_compress_header3
|
||||||
{
|
{
|
||||||
grub_uint32_t num_chunks;
|
grub_uint32_t num_chunks;
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
/* little-endian. */
|
/* little-endian. */
|
||||||
struct grub_hfsplus_compress_block_descriptor
|
struct grub_hfsplus_compress_block_descriptor
|
||||||
@ -59,7 +59,7 @@ struct grub_hfsplus_compress_block_descriptor
|
|||||||
struct grub_hfsplus_compress_end_descriptor
|
struct grub_hfsplus_compress_end_descriptor
|
||||||
{
|
{
|
||||||
grub_uint8_t always_the_same[50];
|
grub_uint8_t always_the_same[50];
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
struct grub_hfsplus_attr_header
|
struct grub_hfsplus_attr_header
|
||||||
{
|
{
|
||||||
@ -67,7 +67,7 @@ struct grub_hfsplus_attr_header
|
|||||||
grub_uint8_t type;
|
grub_uint8_t type;
|
||||||
grub_uint32_t unknown[1];
|
grub_uint32_t unknown[1];
|
||||||
grub_uint64_t size;
|
grub_uint64_t size;
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
struct grub_hfsplus_compress_attr
|
struct grub_hfsplus_compress_attr
|
||||||
{
|
{
|
||||||
@ -75,7 +75,7 @@ struct grub_hfsplus_compress_attr
|
|||||||
grub_uint32_t type;
|
grub_uint32_t type;
|
||||||
grub_uint32_t uncompressed_inline_size;
|
grub_uint32_t uncompressed_inline_size;
|
||||||
grub_uint32_t always_0;
|
grub_uint32_t always_0;
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
@ -156,8 +156,12 @@ hfsplus_read_compressed_real (struct grub_hfsplus_file *node,
|
|||||||
if (ts > node->size - (pos & ~(HFSPLUS_COMPRESS_BLOCK_SIZE)))
|
if (ts > node->size - (pos & ~(HFSPLUS_COMPRESS_BLOCK_SIZE)))
|
||||||
ts = node->size - (pos & ~(HFSPLUS_COMPRESS_BLOCK_SIZE));
|
ts = node->size - (pos & ~(HFSPLUS_COMPRESS_BLOCK_SIZE));
|
||||||
if (grub_zlib_decompress (tmp_buf, sz, 0,
|
if (grub_zlib_decompress (tmp_buf, sz, 0,
|
||||||
node->cbuf, ts) < 0)
|
node->cbuf, ts) != (grub_ssize_t) ts)
|
||||||
{
|
{
|
||||||
|
if (!grub_errno)
|
||||||
|
grub_error (GRUB_ERR_BAD_COMPRESSED_DATA,
|
||||||
|
"premature end of compressed");
|
||||||
|
|
||||||
grub_free (tmp_buf);
|
grub_free (tmp_buf);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -288,8 +292,14 @@ hfsplus_open_compressed_real (struct grub_hfsplus_file *node)
|
|||||||
if (grub_zlib_decompress ((char *) (cmp_head + 1),
|
if (grub_zlib_decompress ((char *) (cmp_head + 1),
|
||||||
grub_cpu_to_be64 (attr_head->size)
|
grub_cpu_to_be64 (attr_head->size)
|
||||||
- sizeof (*cmp_head), 0,
|
- sizeof (*cmp_head), 0,
|
||||||
node->cbuf, node->size) < 0)
|
node->cbuf, node->size)
|
||||||
return grub_errno;
|
!= (grub_ssize_t) node->size)
|
||||||
|
{
|
||||||
|
if (!grub_errno)
|
||||||
|
grub_error (GRUB_ERR_BAD_COMPRESSED_DATA,
|
||||||
|
"premature end of compressed");
|
||||||
|
return grub_errno;
|
||||||
|
}
|
||||||
node->compressed = 1;
|
node->compressed = 1;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -54,7 +54,7 @@ struct grub_iso9660_voldesc
|
|||||||
grub_uint8_t type;
|
grub_uint8_t type;
|
||||||
grub_uint8_t magic[5];
|
grub_uint8_t magic[5];
|
||||||
grub_uint8_t version;
|
grub_uint8_t version;
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
struct grub_iso9660_date2
|
struct grub_iso9660_date2
|
||||||
{
|
{
|
||||||
@ -65,7 +65,7 @@ struct grub_iso9660_date2
|
|||||||
grub_uint8_t minute;
|
grub_uint8_t minute;
|
||||||
grub_uint8_t second;
|
grub_uint8_t second;
|
||||||
grub_uint8_t offset;
|
grub_uint8_t offset;
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
/* A directory entry. */
|
/* A directory entry. */
|
||||||
struct grub_iso9660_dir
|
struct grub_iso9660_dir
|
||||||
@ -81,7 +81,7 @@ struct grub_iso9660_dir
|
|||||||
grub_uint8_t unused2[6];
|
grub_uint8_t unused2[6];
|
||||||
#define MAX_NAMELEN 255
|
#define MAX_NAMELEN 255
|
||||||
grub_uint8_t namelen;
|
grub_uint8_t namelen;
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
struct grub_iso9660_date
|
struct grub_iso9660_date
|
||||||
{
|
{
|
||||||
@ -93,7 +93,7 @@ struct grub_iso9660_date
|
|||||||
grub_uint8_t second[2];
|
grub_uint8_t second[2];
|
||||||
grub_uint8_t hundredth[2];
|
grub_uint8_t hundredth[2];
|
||||||
grub_uint8_t offset;
|
grub_uint8_t offset;
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
/* The primary volume descriptor. Only little endian is used. */
|
/* The primary volume descriptor. Only little endian is used. */
|
||||||
struct grub_iso9660_primary_voldesc
|
struct grub_iso9660_primary_voldesc
|
||||||
@ -112,7 +112,7 @@ struct grub_iso9660_primary_voldesc
|
|||||||
grub_uint8_t unused6[624];
|
grub_uint8_t unused6[624];
|
||||||
struct grub_iso9660_date created;
|
struct grub_iso9660_date created;
|
||||||
struct grub_iso9660_date modified;
|
struct grub_iso9660_date modified;
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
/* A single entry in the path table. */
|
/* A single entry in the path table. */
|
||||||
struct grub_iso9660_path
|
struct grub_iso9660_path
|
||||||
@ -122,7 +122,7 @@ struct grub_iso9660_path
|
|||||||
grub_uint32_t first_sector;
|
grub_uint32_t first_sector;
|
||||||
grub_uint16_t parentdir;
|
grub_uint16_t parentdir;
|
||||||
grub_uint8_t name[0];
|
grub_uint8_t name[0];
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
/* An entry in the System Usage area of the directory entry. */
|
/* An entry in the System Usage area of the directory entry. */
|
||||||
struct grub_iso9660_susp_entry
|
struct grub_iso9660_susp_entry
|
||||||
@ -131,7 +131,7 @@ struct grub_iso9660_susp_entry
|
|||||||
grub_uint8_t len;
|
grub_uint8_t len;
|
||||||
grub_uint8_t version;
|
grub_uint8_t version;
|
||||||
grub_uint8_t data[0];
|
grub_uint8_t data[0];
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
/* The CE entry. This is used to describe the next block where data
|
/* The CE entry. This is used to describe the next block where data
|
||||||
can be found. */
|
can be found. */
|
||||||
@ -144,7 +144,7 @@ struct grub_iso9660_susp_ce
|
|||||||
grub_uint32_t off_be;
|
grub_uint32_t off_be;
|
||||||
grub_uint32_t len;
|
grub_uint32_t len;
|
||||||
grub_uint32_t len_be;
|
grub_uint32_t len_be;
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
struct grub_iso9660_data
|
struct grub_iso9660_data
|
||||||
{
|
{
|
||||||
|
@ -70,7 +70,7 @@ struct grub_jfs_extent
|
|||||||
/* The physical offset of the first block on the disk. */
|
/* The physical offset of the first block on the disk. */
|
||||||
grub_uint8_t blk1;
|
grub_uint8_t blk1;
|
||||||
grub_uint32_t blk2;
|
grub_uint32_t blk2;
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
#define GRUB_JFS_IAG_INODES_OFFSET 3072
|
#define GRUB_JFS_IAG_INODES_OFFSET 3072
|
||||||
#define GRUB_JFS_IAG_INODES_COUNT 128
|
#define GRUB_JFS_IAG_INODES_COUNT 128
|
||||||
@ -79,7 +79,7 @@ struct grub_jfs_iag
|
|||||||
{
|
{
|
||||||
grub_uint8_t unused[GRUB_JFS_IAG_INODES_OFFSET];
|
grub_uint8_t unused[GRUB_JFS_IAG_INODES_OFFSET];
|
||||||
struct grub_jfs_extent inodes[GRUB_JFS_IAG_INODES_COUNT];
|
struct grub_jfs_extent inodes[GRUB_JFS_IAG_INODES_COUNT];
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
|
|
||||||
/* The head of the tree used to find extents. */
|
/* The head of the tree used to find extents. */
|
||||||
@ -94,7 +94,7 @@ struct grub_jfs_treehead
|
|||||||
grub_uint16_t count;
|
grub_uint16_t count;
|
||||||
grub_uint16_t max;
|
grub_uint16_t max;
|
||||||
grub_uint8_t unused2[10];
|
grub_uint8_t unused2[10];
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
/* A node in the extent tree. */
|
/* A node in the extent tree. */
|
||||||
struct grub_jfs_tree_extent
|
struct grub_jfs_tree_extent
|
||||||
@ -107,7 +107,7 @@ struct grub_jfs_tree_extent
|
|||||||
grub_uint32_t offset2;
|
grub_uint32_t offset2;
|
||||||
|
|
||||||
struct grub_jfs_extent extent;
|
struct grub_jfs_extent extent;
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
/* The tree of directory entries. */
|
/* The tree of directory entries. */
|
||||||
struct grub_jfs_tree_dir
|
struct grub_jfs_tree_dir
|
||||||
@ -128,7 +128,7 @@ struct grub_jfs_tree_dir
|
|||||||
/* The location of the sorted array of pointers to dirents. */
|
/* The location of the sorted array of pointers to dirents. */
|
||||||
grub_uint8_t sindex;
|
grub_uint8_t sindex;
|
||||||
grub_uint8_t unused[10];
|
grub_uint8_t unused[10];
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
/* An internal node in the dirents tree. */
|
/* An internal node in the dirents tree. */
|
||||||
struct grub_jfs_internal_dirent
|
struct grub_jfs_internal_dirent
|
||||||
@ -137,7 +137,7 @@ struct grub_jfs_internal_dirent
|
|||||||
grub_uint8_t next;
|
grub_uint8_t next;
|
||||||
grub_uint8_t len;
|
grub_uint8_t len;
|
||||||
grub_uint16_t namepart[11];
|
grub_uint16_t namepart[11];
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
/* A leaf node in the dirents tree. */
|
/* A leaf node in the dirents tree. */
|
||||||
struct grub_jfs_leaf_dirent
|
struct grub_jfs_leaf_dirent
|
||||||
@ -150,7 +150,7 @@ struct grub_jfs_leaf_dirent
|
|||||||
grub_uint8_t len;
|
grub_uint8_t len;
|
||||||
grub_uint16_t namepart[11];
|
grub_uint16_t namepart[11];
|
||||||
grub_uint32_t index;
|
grub_uint32_t index;
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
/* A leaf in the dirents tree. This one is used if the previously
|
/* A leaf in the dirents tree. This one is used if the previously
|
||||||
dirent was not big enough to store the name. */
|
dirent was not big enough to store the name. */
|
||||||
@ -159,13 +159,13 @@ struct grub_jfs_leaf_next_dirent
|
|||||||
grub_uint8_t next;
|
grub_uint8_t next;
|
||||||
grub_uint8_t len;
|
grub_uint8_t len;
|
||||||
grub_uint16_t namepart[15];
|
grub_uint16_t namepart[15];
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
struct grub_jfs_time
|
struct grub_jfs_time
|
||||||
{
|
{
|
||||||
grub_int32_t sec;
|
grub_int32_t sec;
|
||||||
grub_int32_t nanosec;
|
grub_int32_t nanosec;
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
struct grub_jfs_inode
|
struct grub_jfs_inode
|
||||||
{
|
{
|
||||||
@ -185,7 +185,7 @@ struct grub_jfs_inode
|
|||||||
union
|
union
|
||||||
{
|
{
|
||||||
/* The tree describing the extents of the file. */
|
/* The tree describing the extents of the file. */
|
||||||
struct __attribute__ ((packed))
|
struct GRUB_PACKED
|
||||||
{
|
{
|
||||||
struct grub_jfs_treehead tree;
|
struct grub_jfs_treehead tree;
|
||||||
struct grub_jfs_tree_extent extents[16];
|
struct grub_jfs_tree_extent extents[16];
|
||||||
@ -206,15 +206,15 @@ struct grub_jfs_inode
|
|||||||
grub_uint8_t sorted[8];
|
grub_uint8_t sorted[8];
|
||||||
} header;
|
} header;
|
||||||
struct grub_jfs_leaf_dirent dirents[8];
|
struct grub_jfs_leaf_dirent dirents[8];
|
||||||
} dir __attribute__ ((packed));
|
} GRUB_PACKED dir;
|
||||||
/* Fast symlink. */
|
/* Fast symlink. */
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
grub_uint8_t unused[32];
|
grub_uint8_t unused[32];
|
||||||
grub_uint8_t path[256];
|
grub_uint8_t path[256];
|
||||||
} symlink;
|
} symlink;
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
struct grub_jfs_data
|
struct grub_jfs_data
|
||||||
{
|
{
|
||||||
@ -226,7 +226,7 @@ struct grub_jfs_data
|
|||||||
int pos;
|
int pos;
|
||||||
int linknest;
|
int linknest;
|
||||||
int namecomponentlen;
|
int namecomponentlen;
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
struct grub_jfs_diropen
|
struct grub_jfs_diropen
|
||||||
{
|
{
|
||||||
@ -237,7 +237,7 @@ struct grub_jfs_diropen
|
|||||||
struct grub_jfs_leaf_dirent dirent[0];
|
struct grub_jfs_leaf_dirent dirent[0];
|
||||||
struct grub_jfs_leaf_next_dirent next_dirent[0];
|
struct grub_jfs_leaf_next_dirent next_dirent[0];
|
||||||
grub_uint8_t sorted[0];
|
grub_uint8_t sorted[0];
|
||||||
} *dirpage __attribute__ ((packed));
|
} GRUB_PACKED *dirpage;
|
||||||
struct grub_jfs_data *data;
|
struct grub_jfs_data *data;
|
||||||
struct grub_jfs_inode *inode;
|
struct grub_jfs_inode *inode;
|
||||||
int count;
|
int count;
|
||||||
@ -251,7 +251,7 @@ struct grub_jfs_diropen
|
|||||||
*/
|
*/
|
||||||
char name[256 * GRUB_MAX_UTF8_PER_UTF16 + 1];
|
char name[256 * GRUB_MAX_UTF8_PER_UTF16 + 1];
|
||||||
grub_uint32_t ino;
|
grub_uint32_t ino;
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
|
|
||||||
static grub_dl_t my_mod;
|
static grub_dl_t my_mod;
|
||||||
|
@ -38,7 +38,7 @@ struct head
|
|||||||
char rdevminor[8];
|
char rdevminor[8];
|
||||||
char namesize[8];
|
char namesize[8];
|
||||||
char check[8];
|
char check[8];
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
static inline unsigned long long
|
static inline unsigned long long
|
||||||
read_number (const char *str, grub_size_t size)
|
read_number (const char *str, grub_size_t size)
|
||||||
|
@ -143,7 +143,7 @@ struct grub_nilfs2_dir_entry
|
|||||||
char name[NILFS_NAME_LEN];
|
char name[NILFS_NAME_LEN];
|
||||||
char pad;
|
char pad;
|
||||||
#endif
|
#endif
|
||||||
} __attribute__ ((packed));
|
} GRUB_PACKED;
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user