Compare commits

..
Author SHA1 Message Date
Vladimir Serbinenko 67a51e8e15 Include arrows and lines in ascii.h 2013-12-07 13:59:15 +01:00
358 changed files with 2983 additions and 12773 deletions

No files matched your search

+13 -30
View File
@@ -11,6 +11,7 @@ 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
@@ -31,59 +32,48 @@ 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-ofpathname.exe grub-pe2elf
grub-core/build-grub-pe2elf.exe grub-probe
/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
@@ -114,18 +104,17 @@ 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
@@ -192,7 +181,6 @@ 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
@@ -214,7 +202,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.h grub-core/rs_decoder.S
widthspec.bin widthspec.bin
widthspec.h widthspec.h
docs/stamp-1 docs/stamp-1
@@ -228,14 +216,9 @@ 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
-1055
View File
File diff suppressed because it is too large. Load diff
+2 -2
View File
@@ -17,7 +17,6 @@ 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
@@ -26,7 +25,8 @@ 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 doesn't support -mno-app-regs and so can't be used for sparc64 Note: clang has no support for generating 64-bit sparc code and hence you
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
+2 -2
View File
@@ -127,7 +127,7 @@ widthspec.h: $(FONT_SOURCE) build-grub-gen-widthspec
CLEANFILES += widthspec.h CLEANFILES += widthspec.h
# Install config.h into platformdir # Install config.h into platformdir
nodist_platform_HEADERS = config.h platform_HEADERS = config.h
pkgdata_DATA += grub-mkconfig_lib pkgdata_DATA += grub-mkconfig_lib
@@ -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 serial' --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' --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
-68
View File
@@ -62,7 +62,6 @@ 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;
@@ -155,7 +154,6 @@ 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;
@@ -402,21 +400,6 @@ 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;
@@ -561,7 +544,6 @@ 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;
@@ -608,9 +590,6 @@ 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;
@@ -1242,24 +1221,6 @@ 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;
@@ -1293,32 +1254,3 @@ 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)';
};
+5 -28
View File
@@ -19,8 +19,6 @@ 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],
@@ -290,12 +288,7 @@ 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])])
@@ -304,11 +297,7 @@ 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])])
@@ -317,11 +306,7 @@ 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])])
@@ -345,11 +330,7 @@ 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])])
@@ -358,11 +339,7 @@ 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])])
+9 -8
View File
@@ -8,17 +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 -Wl,--no-relax LDFLAGS_PLATFORM = -Wl,-melf64_sparc -mno-relax
endif
if COND_sparc64_emu
CFLAGS_PLATFORM += -mno-app-regs
LDFLAGS_PLATFORM = -Wl,--no-relax
endif endif
if COND_arm if COND_arm
if !COND_emu CFLAGS_PLATFORM += -mthumb-interwork
CCASFLAGS_PLATFORM = -mthumb-interwork
LDFLAGS_PLATFORM = -Wl,--wrap=__clear_cache LDFLAGS_PLATFORM = -Wl,--wrap=__clear_cache
endif endif
endif
if COND_arm64 if COND_arm64
CFLAGS_PLATFORM += -mcmodel=large CFLAGS_PLATFORM += -mcmodel=large
endif endif
@@ -35,6 +31,7 @@ CPPFLAGS_DEFAULT += -I$(top_builddir)
CPPFLAGS_DEFAULT += -I$(top_srcdir) CPPFLAGS_DEFAULT += -I$(top_srcdir)
CPPFLAGS_DEFAULT += -I$(top_srcdir)/include CPPFLAGS_DEFAULT += -I$(top_srcdir)/include
CPPFLAGS_DEFAULT += -I$(top_builddir)/include CPPFLAGS_DEFAULT += -I$(top_builddir)/include
CPPFLAGS_DEFAULT += -I$(top_srcdir)/grub-core/lib/libgcrypt-grub/include
CPPFLAGS_DEFAULT += -I$(top_srcdir)/grub-core/lib/libgcrypt-grub/src/ CPPFLAGS_DEFAULT += -I$(top_srcdir)/grub-core/lib/libgcrypt-grub/src/
CCASFLAGS_DEFAULT = $(CPPFLAGS_DEFAULT) -DASM_FILE=1 CCASFLAGS_DEFAULT = $(CPPFLAGS_DEFAULT) -DASM_FILE=1
BUILD_CPPFLAGS += $(CPPFLAGS_DEFAULT) BUILD_CPPFLAGS += $(CPPFLAGS_DEFAULT)
@@ -45,7 +42,11 @@ 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)
STRIPFLAGS_KERNEL = -R .rel.dyn -R .reginfo -R .note -R .comment -R .drectve -R .note.gnu.gold-version if COND_CYGWIN
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
+1 -1
View File
@@ -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-cygwin-img-ld.sc EXTRA_DIST += conf/i386-pc-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,8 +5,6 @@ SECTIONS
.text : .text :
{ {
start = . ; start = . ;
_start = . ;
__start = . ;
*(.text) *(.text)
etext = . ; etext = . ;
} }
@@ -35,8 +33,6 @@ SECTIONS
{ {
*(.edata) *(.edata)
end = . ; end = . ;
_end = . ;
__end = . ;
} }
.stab : .stab :
{ {
+6
View File
@@ -51,6 +51,12 @@
#define PACKAGE_NAME "@PACKAGE_NAME@" #define PACKAGE_NAME "@PACKAGE_NAME@"
/* Define to the address where bug reports for this package should be sent. */ /* Define to the address where bug reports for this package should be sent. */
#define PACKAGE_BUGREPORT "@PACKAGE_BUGREPORT@" #define PACKAGE_BUGREPORT "@PACKAGE_BUGREPORT@"
/* Default boot directory name" */
#define GRUB_BOOT_DIR_NAME "@bootdirname@"
/* Default grub directory name */
#define GRUB_DIR_NAME "@grubdirname@"
/* Define to 1 if GCC generates calls to __register_frame_info(). */
#define NEED_REGISTER_FRAME_INFO @NEED_REGISTER_FRAME_INFO@
#define GRUB_TARGET_CPU "@GRUB_TARGET_CPU@" #define GRUB_TARGET_CPU "@GRUB_TARGET_CPU@"
#define GRUB_PLATFORM "@GRUB_PLATFORM@" #define GRUB_PLATFORM "@GRUB_PLATFORM@"
+52 -130
View File
@@ -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.02~beta2],[bug-grub@gnu.org]) AC_INIT([GRUB],[2.00],[bug-grub@gnu.org])
AC_CONFIG_AUX_DIR([build-aux]) AC_CONFIG_AUX_DIR([build-aux])
@@ -69,7 +69,6 @@ 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
@@ -177,10 +176,6 @@ 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
@@ -214,14 +209,20 @@ case "$platform" in
qemu) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_QEMU=1" ;; qemu) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_QEMU=1" ;;
pc) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_PCBIOS=1" ;; pc) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_PCBIOS=1" ;;
emu) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_EMU=1" ;; emu) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_EMU=1" ;;
loongson) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MIPS_LOONGSON=1" ;; loongson) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MIPS_LOONGSON=1 -DGRUB_MACHINE_MIPS_BONITO=1" ;;
qemu_mips) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MIPS_QEMU_MIPS=1" ;; qemu_mips) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MIPS_QEMU_MIPS=1 -DGRUB_MACHINE_MIPS_BONITO=1" ;;
arc) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_ARC=1" ;; arc) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_ARC=1" ;;
esac esac
case "$target_cpu" in
arm) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_ARM=1" ;;
arm64) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_ARM64=1" ;;
mips |mipsel) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MIPS=1" ;;
sparc64) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_SPARC64=1" ;;
esac
if test x${target_cpu} = xmipsel ; then if test x${target_cpu} = xmipsel ; then
machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE=`echo mips_$platform | sed y,abcdefghijklmnopqrstuvwxyz,ABCDEFGHIJKLMNOPQRSTUVWXYZ,`" machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE=`echo mips_$platform | sed y,abcdefghijklmnopqrstuvwxyz,ABCDEFGHIJKLMNOPQRSTUVWXYZ,`"
else else
machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE=`echo ${target_cpu}_$platform | sed y,abcdefghijklmnopqrstuvwxyz,ABCDEFGHIJKLMNOPQRSTUVWXYZ,`" machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE=`echo ${target_cpu}_$platform | sed y,abcdefghijklmnopqrstuvwxyz,ABCDEFGHIJKLMNOPQRSTUVWXYZ,` -DGRUB_TARGET_CPU_`echo ${target_cpu} | sed y,abcdefghijklmnopqrstuvwxyz,ABCDEFGHIJKLMNOPQRSTUVWXYZ,`=1"
fi fi
case "${target_cpu}-$platform" in case "${target_cpu}-$platform" in
@@ -344,11 +345,6 @@ 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)
@@ -426,8 +422,8 @@ esac
# For gnulib. # For gnulib.
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 -Wreturn-type -Wsequence-point -Wshadow -Wsign-compare -Wswitch -Wtrigraphs -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="-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 -Wmissing-include-dirs -Wmissing-prototypes -Wmissing-declarations -Wformat=2" 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"
HOST_CFLAGS="$HOST_CFLAGS $WARN_FLAGS -Wcast-align" HOST_CFLAGS="$HOST_CFLAGS $WARN_FLAGS -Wcast-align"
@@ -503,20 +499,13 @@ if test "x$target_cpu" != xi386 && test "x$target_cpu" != xx86_64; then
TARGET_CFLAGS="$TARGET_CFLAGS -Wcast-align" TARGET_CFLAGS="$TARGET_CFLAGS -Wcast-align"
fi fi
TARGET_CC_VERSION="$(LC_ALL=C $TARGET_CC --version | head -n1)"
AC_CACHE_CHECK([which extra warnings work], [grub_cv_target_cc_w_extra_flags], [ AC_CACHE_CHECK([which extra warnings work], [grub_cv_target_cc_w_extra_flags], [
LDFLAGS="$TARGET_LDFLAGS -nostdlib -static" LDFLAGS="$TARGET_LDFLAGS -nostdlib -static"
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([[ AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])], [flag=1], [flag=0])
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
@@ -690,13 +679,23 @@ 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"$grub_cv_target_cc_link_format" = x-mi386pe || test x"$grub_cv_target_cc_link_format" = x-mi386pep ; then if test x"$target_os" = xcygwin ; 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
@@ -741,7 +740,7 @@ if test x"$efiemu_excuse" = x ; then
fi fi
fi fi
if test x"$enable_efiemu" = xyes && test x"$efiemu_excuse" != x ; then if test x"$enable_efiemu" = xyes && test x"$efiemu_excuse" != x ; then
AC_MSG_ERROR([efiemu runtime was explicitly requested but can't be compiled ($efiemu_excuse)]) AC_MSG_ERROR([efiemu runtime was explicitly requested but can't be compiled])
fi fi
if test x"$efiemu_excuse" = x ; then if test x"$efiemu_excuse" = x ; then
enable_efiemu=yes enable_efiemu=yes
@@ -753,35 +752,11 @@ AC_SUBST([EFIEMU64_LINK_FORMAT])
CFLAGS="$TARGET_CFLAGS" CFLAGS="$TARGET_CFLAGS"
if test x"$target_cpu" = xi386 || test x"$target_cpu" = xx86_64; then
if test x"$platform" = xemu ; then
TARGET_OBJ2ELF=
grub_cv_target_cc_link_format=
case "$host_os" in
*darwin* | *mac*)
grub_cv_target_cc_link_format="-arch,${target_cpu}"
TARGET_LDFLAGS="$TARGET_LDFLAGS -Wl,$grub_cv_target_cc_link_format"
;;
*windows* | *cygwin* | *mingw*)
if test x${target_cpu} = xi386 ; then
grub_cv_target_cc_link_format=-mi386pe;
TARGET_OBJ2ELF='./build-grub-pe2elf';
fi
if test x${target_cpu} = xx86_64 ; then
grub_cv_target_cc_link_format=-mi386pep;
TARGET_OBJ2ELF='./build-grub-pep2elf';
fi
TARGET_LDFLAGS="$TARGET_LDFLAGS -Wl,$grub_cv_target_cc_link_format"
;;
esac
elif 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 -mi386pe -mi386pep -arch,${target_cpu}; do 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
if test x${target_cpu} != xi386 && test x$format = x-mi386pe; then if test x${target_cpu} != xi386 && test x$format = x${target_cpu}pe; then
continue
fi
if test x${target_cpu} != xx86_64 && test x$format = x-mi386pep; then
continue continue
fi fi
CFLAGS="$TARGET_CFLAGS" CFLAGS="$TARGET_CFLAGS"
@@ -802,12 +777,9 @@ elif 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
@@ -825,12 +797,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$grub_cv_target_cc_link_format = x-mi386pep ; then elif test x$grub_cv_target_cc_link_format = x-mi386pe && test x$platform = xpc; 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-cygwin-img-ld.sc" TARGET_IMG_LDSCRIPT='$(top_srcdir)'"/${grub_coredir}/conf/i386-pc-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-cygwin-img-ld.sc" TARGET_IMG_LDFLAGS_AC="-Wl,-T${srcdir}/${grub_coredir}/conf/i386-pc-cygwin-img-ld.sc"
TARGET_IMG_BASE_LDOPT="-Wl,-Ttext" TARGET_IMG_BASE_LDOPT="-Wl,-Ttext"
TARGET_IMG_CFLAGS= TARGET_IMG_CFLAGS=
else else
@@ -848,7 +820,7 @@ AC_SUBST(TARGET_LDFLAGS_OLDMAGIC)
LDFLAGS="$TARGET_LDFLAGS" LDFLAGS="$TARGET_LDFLAGS"
if test "$target_cpu" = x86_64 || test "$target_cpu-$platform" = sparc64-emu ; then if test "$target_cpu" = x86_64; 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"
@@ -858,8 +830,6 @@ if test "$target_cpu" = x86_64 || test "$target_cpu-$platform" = sparc64-emu ; t
]) ])
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
@@ -888,38 +858,6 @@ 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
AC_CACHE_CHECK([whether option -Qn works], grub_cv_target_cc_qn, [
CFLAGS="$TARGET_CFLAGS -Qn -Werror"
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
[grub_cv_target_cc_qn=yes],
[grub_cv_target_cc_qn=no])])
if test "x$grub_cv_target_cc_qn" = xyes; then
TARGET_CFLAGS="$TARGET_CFLAGS -Qn"
fi fi
# #
@@ -1010,7 +948,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 -Wno-error" CFLAGS="$TARGET_CFLAGS -nostdlib -Wl,--defsym,___main=0x8100 -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
@@ -1024,11 +962,10 @@ 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
DEFSYM="-Wl,--defsym,_abort=_main -Wl,--defsym,__main=_main" CFLAGS="$TARGET_CFLAGS -nostdlib -Wl,--defsym,_abort=_main"
else else
DEFSYM="-Wl,--defsym,abort=main -Wl,--defsym,_main=main -Wl,--defsym,__main=main" CFLAGS="$TARGET_CFLAGS -nostdlib -Wl,--defsym,abort=main"
fi fi
CFLAGS="$TARGET_CFLAGS -nostdlib $DEFSYM"
fi fi
# Check for libgcc symbols # Check for libgcc symbols
@@ -1037,7 +974,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" CFLAGS="$TARGET_CFLAGS -nostdlib -Wl,--defsym,___main=0x8100"
fi fi
LIBS="" LIBS=""
@@ -1051,7 +988,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" CFLAGS="$TARGET_CFLAGS -nostdlib ${TARGET_IMG_LDFLAGS_AC} ${TARGET_IMG_BASE_LDOPT},0x8000 -Wl,--defsym,___main=0x8100"
fi fi
grub_CHECK_BSS_START_SYMBOL grub_CHECK_BSS_START_SYMBOL
grub_CHECK_END_SYMBOL grub_CHECK_END_SYMBOL
@@ -1170,7 +1107,7 @@ AC_CHECK_LIB([usb], [usb_claim_interface], [LIBUSB="-lusb"],
[grub_emu_usb_excuse=["need libusb headers"]]) [grub_emu_usb_excuse=["need libusb headers"]])
[fi] [fi]
if test x"$enable_grub_emu_usb" = xyes && test x"$grub_emu_usb_excuse" != x ; then if test x"$enable_grub_emu_usb" = xyes && test x"$grub_emu_usb_excuse" != x ; then
AC_MSG_ERROR([USB support for grub-emu was explicitly requested but can't be compiled ($grub_emu_usb_excuse)]) AC_MSG_ERROR([USB support for grub-emu was explicitly requested but can't be compiled])
fi fi
if test x"$grub_emu_usb_excuse" = x ; then if test x"$grub_emu_usb_excuse" = x ; then
enable_grub_emu_usb=yes enable_grub_emu_usb=yes
@@ -1179,7 +1116,7 @@ enable_grub_emu_usb=no
fi fi
if test x"$enable_grub_emu_sdl" = xno ; then if test x"$enable_grub_emu_sdl" = xno ; then
grub_emu_sdl_excuse="explicitly disabled" grub_emu_sdl_excuse="explicitely disabled"
fi fi
[if [ x"$grub_emu_sdl_excuse" = x ]; then [if [ x"$grub_emu_sdl_excuse" = x ]; then
# Check for libSDL libraries.] # Check for libSDL libraries.]
@@ -1195,7 +1132,7 @@ AC_CHECK_LIB([SDL], [SDL_Init], [LIBSDL="-lSDL"],
[fi] [fi]
if test x"enable_grub_emu_sdl" = xyes && test x"$grub_emu_sdl_excuse" != x ; then if test x"enable_grub_emu_sdl" = xyes && test x"$grub_emu_sdl_excuse" != x ; then
AC_MSG_ERROR([SDL support for grub-emu was explicitly requested but can't be compiled ($grub_emu_sdl_excuse)]) AC_MSG_ERROR([SDL support for grub-emu was explicitely requested but can't be compiled])
fi fi
if test x"$grub_emu_sdl_excuse" = x ; then if test x"$grub_emu_sdl_excuse" = x ; then
enable_grub_emu_sdl=yes enable_grub_emu_sdl=yes
@@ -1264,18 +1201,14 @@ if test x"$grub_mkfont_excuse" = x ; then
freetype_cflags=`$FREETYPE --cflags` freetype_cflags=`$FREETYPE --cflags`
freetype_libs=`$FREETYPE --libs` freetype_libs=`$FREETYPE --libs`
SAVED_CPPFLAGS="$CPPFLAGS" SAVED_CPPFLAGS="$CPPFLAGS"
SAVED_LIBS="$LIBS"
CPPFLAGS="$CPPFLAGS $freetype_cflags" CPPFLAGS="$CPPFLAGS $freetype_cflags"
LIBS="$LIBS $freetype_libs"
AC_CHECK_HEADERS([ft2build.h], [], AC_CHECK_HEADERS([ft2build.h], [],
[grub_mkfont_excuse=["need freetype2 headers"]]) [grub_mkfont_excuse=["need freetype2 headers"]])
AC_LINK_IFELSE([AC_LANG_CALL([], [FT_Load_Glyph])], [], [grub_mkfont_excuse=["freetype2 library unusable"]])
CPPFLAGS="$SAVED_CPPFLAGS" CPPFLAGS="$SAVED_CPPFLAGS"
LIBS="$SAVED_LIBS"
fi fi
if test x"$enable_grub_mkfont" = xyes && test x"$grub_mkfont_excuse" != x ; then if test x"$enable_grub_mkfont" = xyes && test x"$grub_mkfont_excuse" != x ; then
AC_MSG_ERROR([grub-mkfont was explicitly requested but can't be compiled ($grub_mkfont_excuse)]) AC_MSG_ERROR([grub-mkfont was explicitly requested but can't be compiled])
fi fi
if test x"$grub_mkfont_excuse" = x ; then if test x"$grub_mkfont_excuse" = x ; then
enable_grub_mkfont=yes enable_grub_mkfont=yes
@@ -1323,18 +1256,14 @@ if test x"$grub_build_mkfont_excuse" = x ; then
build_freetype_cflags=`$BUILD_FREETYPE --cflags` build_freetype_cflags=`$BUILD_FREETYPE --cflags`
build_freetype_libs=`$BUILD_FREETYPE --libs` build_freetype_libs=`$BUILD_FREETYPE --libs`
SAVED_CPPFLAGS_2="$CPPFLAGS" SAVED_CPPFLAGS_2="$CPPFLAGS"
SAVED_LIBS="$LIBS"
CPPFLAGS="$CPPFLAGS $build_freetype_cflags" CPPFLAGS="$CPPFLAGS $build_freetype_cflags"
LIBS="$LIBS $build_freetype_libs"
AC_CHECK_HEADERS([ft2build.h], [], AC_CHECK_HEADERS([ft2build.h], [],
[grub_build_mkfont_excuse=["need freetype2 headers"]]) [grub_build_mkfont_excuse=["need freetype2 headers"]])
AC_LINK_IFELSE([AC_LANG_CALL([], [FT_Load_Glyph])], [], [grub_build_mkfont_excuse=["freetype2 library unusable"]])
LIBS="$SAVED_LIBS"
CPPFLAGS="$SAVED_CPPFLAGS_2" CPPFLAGS="$SAVED_CPPFLAGS_2"
fi fi
if test x"$enable_build_grub_mkfont" = xyes && test x"$grub_build_mkfont_excuse" != x ; then if test x"$enable_build_grub_mkfont" = xyes && test x"$grub_build_mkfont_excuse" != x ; then
AC_MSG_ERROR([build-grub-mkfont was explicitly requested but can't be compiled ($grub_build_mkfont_excuse)]) AC_MSG_ERROR([build-grub-mkfont was explicitly requested but can't be compiled])
fi fi
if test x"$grub_build_mkfont_excuse" = x ; then if test x"$grub_build_mkfont_excuse" = x ; then
enable_build_grub_mkfont=yes enable_build_grub_mkfont=yes
@@ -1342,11 +1271,7 @@ else
enable_build_grub_mkfont=no enable_build_grub_mkfont=no
fi fi
if test x"$enable_build_grub_mkfont" = xno && ( test "x$platform" = xqemu || test "x$platform" = xloongson || test "x$platform" = xqemu_mips || test "x$target_cpu"-"$platform" = xpowerpc-ieee1275 || test "x$platform" = xcoreboot ); then if test x"$enable_build_grub_mkfont" = xno && ( test "x$platform" = xqemu || test "x$platform" = xloongson || test "x$platform" = xqemu_mips || test "x$target_cpu"-"$platform" = xpowerpc-ieee1275 || test "x$platform" = xcoreboot ); then
if test x"$grub_build_mkfont_excuse" = x ; then AC_MSG_ERROR([qemu, powerpc-ieee1275, coreboot and loongson ports needs build-time grub-mkfont])
AC_MSG_ERROR([qemu, powerpc-ieee1275, coreboot and loongson ports needs build-time grub-mkfont])
else
AC_MSG_ERROR([qemu, powerpc-ieee1275, coreboot and loongson ports needs build-time grub-mkfont ($grub_build_mkfont_excuse)])
fi
fi fi
AC_SUBST([build_freetype_cflags]) AC_SUBST([build_freetype_cflags])
@@ -1389,7 +1314,7 @@ if test x"$starfield_excuse" = x; then
fi fi
if test x"$enable_grub_themes" = xyes && test x"$starfield_excuse" != x; then if test x"$enable_grub_themes" = xyes && test x"$starfield_excuse" != x; then
AC_MSG_ERROR([themes were explicitly requested but requirements are not satisfied ($starfield_excuse)]) AC_MSG_ERROR([themes were explicitly requested but requirements are not satisfied])
fi fi
AC_SUBST([DJVU_FONT_SOURCE]) AC_SUBST([DJVU_FONT_SOURCE])
@@ -1415,11 +1340,7 @@ if test x"$enable_build_grub_mkfont" = xno ; then
fi fi
if test "x$FONT_SOURCE" = x && ( test "x$platform" = xqemu || test "x$platform" = xloongson || test "x$platform" = xqemu_mips || test "x$target_cpu"-"$platform" = xpowerpc-ieee1275 || test "x$platform" = xcoreboot ); then if test "x$FONT_SOURCE" = x && ( test "x$platform" = xqemu || test "x$platform" = xloongson || test "x$platform" = xqemu_mips || test "x$target_cpu"-"$platform" = xpowerpc-ieee1275 || test "x$platform" = xcoreboot ); then
if test x"$grub_build_mkfont_excuse" = x ; then AC_MSG_ERROR([qemu, powerpc-ieee1275, coreboot and loongson ports need unifont])
AC_MSG_ERROR([qemu, powerpc-ieee1275, coreboot and loongson ports need unifont])
else
AC_MSG_ERROR([qemu, powerpc-ieee1275, coreboot and loongson ports need unifont ($grub_build_mkfont_excuse)])
fi
fi fi
AC_SUBST([FONT_SOURCE]) AC_SUBST([FONT_SOURCE])
@@ -1451,7 +1372,7 @@ if test x"$grub_mount_excuse" = x ; then
fi fi
if test x"$enable_grub_mount" = xyes && test x"$grub_mount_excuse" != x ; then if test x"$enable_grub_mount" = xyes && test x"$grub_mount_excuse" != x ; then
AC_MSG_ERROR([grub-mount was explicitly requested but can't be compiled ($grub_mount_excuse)]) AC_MSG_ERROR([grub-mount was explicitly requested but can't be compiled])
fi fi
if test x"$grub_mount_excuse" = x ; then if test x"$grub_mount_excuse" = x ; then
enable_grub_mount=yes enable_grub_mount=yes
@@ -1519,7 +1440,7 @@ AC_CHECK_HEADER([lzma.h], [], [liblzma_excuse="need lzma header"])
fi fi
if test x"$enable_liblzma" = xyes && test x"$liblzma_excuse" != x ; then if test x"$enable_liblzma" = xyes && test x"$liblzma_excuse" != x ; then
AC_MSG_ERROR([liblzma support was explicitly requested but requirements are not satisfied ($liblzma_excuse)]) AC_MSG_ERROR([liblzma support was explicitly requested but requirements are not satisfied])
fi fi
@@ -1556,7 +1477,7 @@ if test x"$libzfs_excuse" = x ; then
fi fi
if test x"$enable_libzfs" = xyes && test x"$libzfs_excuse" != x ; then if test x"$enable_libzfs" = xyes && test x"$libzfs_excuse" != x ; then
AC_MSG_ERROR([libzfs support was explicitly requested but requirements are not satisfied ($libzfs_excuse)]) AC_MSG_ERROR([libzfs support was explicitly requested but requirements are not satisfied])
fi fi
if test x"$libzfs_excuse" = x ; then if test x"$libzfs_excuse" = x ; then
@@ -1585,6 +1506,7 @@ AC_SUBST(BSS_START_SYMBOL)
AC_SUBST(END_SYMBOL) AC_SUBST(END_SYMBOL)
AC_SUBST(PACKAGE) AC_SUBST(PACKAGE)
AC_SUBST(VERSION) AC_SUBST(VERSION)
AC_SUBST(NEED_REGISTER_FRAME_INFO)
AC_ARG_ENABLE([werror], AC_ARG_ENABLE([werror],
[AS_HELP_STRING([--disable-werror], [AS_HELP_STRING([--disable-werror],
@@ -1616,13 +1538,13 @@ AC_SUBST(TARGET_CPP)
AC_SUBST(TARGET_CCAS) AC_SUBST(TARGET_CCAS)
AC_SUBST(TARGET_OBJ2ELF) AC_SUBST(TARGET_OBJ2ELF)
AC_SUBST(TARGET_MODULE_FORMAT) AC_SUBST(TARGET_MODULE_FORMAT)
AC_SUBST(TARGET_CC_VERSION)
AC_SUBST(TARGET_CFLAGS) AC_SUBST(TARGET_CFLAGS)
AC_SUBST(TARGET_LDFLAGS) 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)
@@ -1655,7 +1577,6 @@ 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])
@@ -1695,6 +1616,7 @@ 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 -16
View File
@@ -3123,7 +3123,7 @@ This variable contains the ``highlight'' foreground and background terminal
colors, separated by a slash (@samp{/}). Setting this variable changes colors, separated by a slash (@samp{/}). Setting this variable changes
those colors. For the available color names, @pxref{color_normal}. those colors. For the available color names, @pxref{color_normal}.
The default is @samp{black/light-gray}. The default is @samp{black/white}.
@node color_normal @node color_normal
@@ -3152,7 +3152,7 @@ those colors. Each color must be a name from the following list:
@item white @item white
@end itemize @end itemize
The default is @samp{light-gray/black}. The default is @samp{white/black}.
The color support support varies from terminal to terminal. The color support support varies from terminal to terminal.
@@ -5994,21 +5994,9 @@ 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.
@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 @end table
@node Invoking grub-mkconfig @node Invoking grub-mkconfig
@chapter Invoking grub-mkconfig @chapter Invoking grub-mkconfig
@@ -6385,7 +6373,7 @@ just do:
@end group @end group
@end example @end example
Also, the latest version is available using Git. See Also, the latest version is available using Bazaar. See
@uref{http://www.gnu.org/software/grub/grub-download.html} for more @uref{http://www.gnu.org/software/grub/grub-download.html} for more
information. information.
-2
View File
@@ -1,2 +0,0 @@
[NAME]
grub-file \- check file type
-4
View File
@@ -1,4 +0,0 @@
[NAME]
grub-macbless \- bless a mac file/directory
[SEE ALSO]
.BR grub-install (1)
-4
View File
@@ -1,4 +0,0 @@
[NAME]
grub-syslinux2cfg \- transform syslinux config into grub.cfg
[SEE ALSO]
.BR grub-menulst2cfg (8)
-6
View File
@@ -178,12 +178,6 @@ 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
+1 -4
View File
@@ -718,14 +718,11 @@ 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 \
$(TARGET_OBJ2ELF) $< $@ || (rm -f $@; exit 1); \ cp $< $@.bin; $(TARGET_OBJ2ELF) $@.bin && cp $@.bin $@ || (rm -f $@.bin; 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"""))
+5 -6
View File
@@ -26,11 +26,8 @@ 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_TARGET_WORDSIZE=32 -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_UTIL=1 -DGRUB_BUILD_PROGRAM_NAME=\"build-grub-pe2elf\" $^
# gentrigtables # gentrigtables
gentrigtables: gentrigtables.c gentrigtables: gentrigtables.c
@@ -103,6 +100,7 @@ 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
@@ -112,6 +110,7 @@ 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
@@ -170,6 +169,7 @@ endif
if COND_mips_qemu_mips if COND_mips_qemu_mips
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/keyboard_layouts.h KERNEL_HEADER_FILES += $(top_builddir)/include/grub/keyboard_layouts.h
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/kernel.h KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/kernel.h
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/cpu/cache.h
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/serial.h KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/serial.h
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/loader.h KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/loader.h
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/terminfo.h KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/terminfo.h
@@ -181,6 +181,7 @@ if COND_mips_loongson
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/keyboard_layouts.h KERNEL_HEADER_FILES += $(top_builddir)/include/grub/keyboard_layouts.h
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/kernel.h KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/kernel.h
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/time.h KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/time.h
KERNEL_HEADER_FILES += $(top_builddir)/include/grub/cpu/cache.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
@@ -221,14 +222,12 @@ KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/uboot/uboot.h
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/uboot/disk.h KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/uboot/disk.h
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/extcmd.h KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/extcmd.h
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/lib/arg.h KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/lib/arg.h
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/arm/system.h
endif endif
if COND_arm_efi if COND_arm_efi
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/arm/efi/loader.h KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/arm/efi/loader.h
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/efi.h KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/efi.h
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/disk.h KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/disk.h
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/arm/system.h
endif endif
if COND_arm64_efi if COND_arm64_efi
+21 -64
View File
@@ -59,7 +59,9 @@ 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';
@@ -70,21 +72,15 @@ 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';
@@ -197,7 +193,6 @@ kernel = {
ia64_efi = kern/ia64/efi/init.c; ia64_efi = kern/ia64/efi/init.c;
ia64_efi = kern/ia64/dl.c; ia64_efi = kern/ia64/dl.c;
ia64_efi = kern/ia64/dl_helper.c; ia64_efi = kern/ia64/dl_helper.c;
ia64_efi = kern/ia64/cache.c;
arm_efi = kern/arm/efi/init.c; arm_efi = kern/arm/efi/init.c;
arm_efi = kern/arm/efi/misc.c; arm_efi = kern/arm/efi/misc.c;
@@ -245,7 +240,6 @@ 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;
@@ -288,9 +282,6 @@ kernel = {
emu = osdep/emuconsole.c; emu = osdep/emuconsole.c;
extra_dist = osdep/unix/emuconsole.c; extra_dist = osdep/unix/emuconsole.c;
extra_dist = osdep/windows/emuconsole.c; extra_dist = osdep/windows/emuconsole.c;
emu = osdep/dl.c;
extra_dist = osdep/unix/dl.c;
extra_dist = osdep/windows/dl.c;
emu = osdep/sleep.c; emu = osdep/sleep.c;
emu = osdep/init.c; emu = osdep/init.c;
emu = osdep/emunet.c; emu = osdep/emunet.c;
@@ -623,6 +614,11 @@ 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;
@@ -1443,11 +1439,6 @@ 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;
@@ -1621,14 +1612,6 @@ 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;
@@ -1665,6 +1648,10 @@ 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;
@@ -1672,8 +1659,7 @@ module = {
sparc64_ieee1275 = loader/sparc64/ieee1275/linux.c; sparc64_ieee1275 = loader/sparc64/ieee1275/linux.c;
ia64_efi = loader/ia64/efi/linux.c; ia64_efi = loader/ia64/efi/linux.c;
arm = loader/arm/linux.c; arm = loader/arm/linux.c;
arm64 = loader/arm64/linux.c; arm = lib/fdt.c;
fdt = lib/fdt.c;
common = loader/linux.c; common = loader/linux.c;
common = lib/cmdline.c; common = lib/cmdline.c;
enable = noemu; enable = noemu;
@@ -1683,19 +1669,14 @@ 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;
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; extra_dist = loader/machoXX.c;
enable = x86;
}; };
module = { module = {
@@ -1754,7 +1735,6 @@ 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,11 +1924,6 @@ 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;
@@ -2136,12 +2111,6 @@ 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;
@@ -2284,15 +2253,3 @@ 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;
};
+1 -1
View File
@@ -58,7 +58,7 @@ VARIABLE(grub_core_entry_addr)
orb $0x02, %al orb $0x02, %al
outb $0x92 outb $0x92
1: 1:
movl EXT_C(grub_core_entry_addr), %edx movl grub_core_entry_addr, %edx
jmp *%edx jmp *%edx
#include "../../../kern/i386/realmode.S" #include "../../../kern/i386/realmode.S"
+41 -41
View File
@@ -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_2F) lui $t0, %hi(GRUB_MACHINE_PCI_CONF_CTRL_REG_ADDR)
lui $t1, %hi(GRUB_MACHINE_PCI_CONFSPACE_2F) lui $t1, %hi(GRUB_MACHINE_PCI_CONFSPACE)
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_2F) - 1) andi $t4, $t4, ((1 << GRUB_PCI_NUM_DEVICES) - 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_2F) ($t0) sw $t4, %lo(GRUB_MACHINE_PCI_CONF_CTRL_REG_ADDR) ($t0)
lw $t2, (%lo(GRUB_MACHINE_PCI_CONFSPACE_2F) + GRUB_PCI_REG_PCI_ID) ($t1) lw $t2, (%lo(GRUB_MACHINE_PCI_CONFSPACE) + 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_2F) lui $t0, %hi(GRUB_MACHINE_PCI_CONFSPACE)
li $t1, GRUB_CS5536_MSR_MAILBOX_CONFIG_ENABLED li $t1, GRUB_CS5536_MSR_MAILBOX_CONFIG_ENABLED
sw $t1, (%lo(GRUB_MACHINE_PCI_CONFSPACE_2F) + GRUB_CS5536_MSR_MAILBOX_CONFIG) ($t0) sw $t1, (%lo(GRUB_MACHINE_PCI_CONFSPACE) + 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_2F + GRUB_CS5536_LBAR_SMBUS) lui $t0, %hi(GRUB_MACHINE_PCI_IO_BASE + GRUB_CS5536_LBAR_SMBUS)
/* Disable SMB. */ /* Disable SMB. */
sb $zero, %lo(GRUB_MACHINE_PCI_IO_BASE_2F + GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL2) ($t0) sb $zero, %lo(GRUB_MACHINE_PCI_IO_BASE + GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL2) ($t0)
/* Disable interrupts. */ /* Disable interrupts. */
sb $zero, %lo(GRUB_MACHINE_PCI_IO_BASE_2F + GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1) ($t0) sb $zero, %lo(GRUB_MACHINE_PCI_IO_BASE + GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1) ($t0)
/* Set as master. */ /* Set as master. */
sb $zero, %lo(GRUB_MACHINE_PCI_IO_BASE_2F + GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_ADDR) ($t0) sb $zero, %lo(GRUB_MACHINE_PCI_IO_BASE + 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_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_CTRL3) ($t0)
sb $t1, %lo(GRUB_MACHINE_PCI_IO_BASE_2F + GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL2) ($t0) sb $t1, %lo(GRUB_MACHINE_PCI_IO_BASE + 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_2F + GRUB_CS5536_LBAR_GPIO) lui $t0, %hi(GRUB_MACHINE_PCI_IO_BASE + GRUB_CS5536_LBAR_GPIO)
addiu $t0, $t0, %lo(GRUB_MACHINE_PCI_IO_BASE_2F + GRUB_CS5536_LBAR_GPIO) addiu $t0, $t0, %lo(GRUB_MACHINE_PCI_IO_BASE + 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_2F) lui $t0, %hi(GRUB_MACHINE_PCI_CONFSPACE)
sw $a0, (%lo(GRUB_MACHINE_PCI_CONFSPACE_2F) + GRUB_CS5536_MSR_MAILBOX_ADDR) ($t0) sw $a0, (%lo(GRUB_MACHINE_PCI_CONFSPACE) + GRUB_CS5536_MSR_MAILBOX_ADDR) ($t0)
sw $a1, (%lo(GRUB_MACHINE_PCI_CONFSPACE_2F) + GRUB_CS5536_MSR_MAILBOX_DATA0) ($t0) sw $a1, (%lo(GRUB_MACHINE_PCI_CONFSPACE) + GRUB_CS5536_MSR_MAILBOX_DATA0) ($t0)
jr $ra jr $ra
sw $a2, (%lo(GRUB_MACHINE_PCI_CONFSPACE_2F) + GRUB_CS5536_MSR_MAILBOX_DATA1) ($t0) sw $a2, (%lo(GRUB_MACHINE_PCI_CONFSPACE) + 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_2F) lui $t0, %hi(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_STATUS + GRUB_MACHINE_PCI_IO_BASE)
lb $t0, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_STATUS + GRUB_MACHINE_PCI_IO_BASE_2F) ($t0) lb $t0, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_STATUS + GRUB_MACHINE_PCI_IO_BASE) ($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_2F) lui $t0, %hi(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1 + GRUB_MACHINE_PCI_IO_BASE)
lb $t1, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1 + GRUB_MACHINE_PCI_IO_BASE_2F) ($t0) lb $t1, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1 + GRUB_MACHINE_PCI_IO_BASE) ($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_2F) ($t0) sb $t1, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1 + GRUB_MACHINE_PCI_IO_BASE) ($t0)
/* Send device address. */ /* Send device address. */
lui $t0, %hi(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_DATA + GRUB_MACHINE_PCI_IO_BASE_2F) lui $t0, %hi(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_DATA + GRUB_MACHINE_PCI_IO_BASE)
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_2F) ($t0) sb $t1, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_DATA + GRUB_MACHINE_PCI_IO_BASE) ($t0)
/* Send ACK. */ /* Send ACK. */
lui $t0, %hi(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1 + GRUB_MACHINE_PCI_IO_BASE_2F) lui $t0, %hi(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1 + GRUB_MACHINE_PCI_IO_BASE)
lb $t1, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1 + GRUB_MACHINE_PCI_IO_BASE_2F) ($t0) lb $t1, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1 + GRUB_MACHINE_PCI_IO_BASE) ($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_2F) ($t0) sb $t1, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1 + GRUB_MACHINE_PCI_IO_BASE) ($t0)
/* Send byte address. */ /* Send byte address. */
lui $t0, %hi(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_DATA + GRUB_MACHINE_PCI_IO_BASE_2F) lui $t0, %hi(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_DATA + GRUB_MACHINE_PCI_IO_BASE)
bal smbus_wait bal smbus_wait
sb $t2, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_DATA + GRUB_MACHINE_PCI_IO_BASE_2F) ($t0) sb $t2, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_DATA + GRUB_MACHINE_PCI_IO_BASE) ($t0)
/* Send START. */ /* Send START. */
lui $t0, %hi(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1 + GRUB_MACHINE_PCI_IO_BASE_2F) lui $t0, %hi(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1 + GRUB_MACHINE_PCI_IO_BASE)
lb $t1, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1 + GRUB_MACHINE_PCI_IO_BASE_2F) ($t0) lb $t1, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1 + GRUB_MACHINE_PCI_IO_BASE) ($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_2F) ($t0) sb $t1, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1 + GRUB_MACHINE_PCI_IO_BASE) ($t0)
/* Send device address. */ /* Send device address. */
lui $t0, %hi(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_DATA + GRUB_MACHINE_PCI_IO_BASE_2F) lui $t0, %hi(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_DATA + GRUB_MACHINE_PCI_IO_BASE)
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_2F) ($t0) sb $t1, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_DATA + GRUB_MACHINE_PCI_IO_BASE) ($t0)
/* Send STOP. */ /* Send STOP. */
lui $t0, %hi(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1 + GRUB_MACHINE_PCI_IO_BASE_2F) lui $t0, %hi(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1 + GRUB_MACHINE_PCI_IO_BASE)
lb $t1, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1 + GRUB_MACHINE_PCI_IO_BASE_2F) ($t0) lb $t1, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1 + GRUB_MACHINE_PCI_IO_BASE) ($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_2F) ($t0) sb $t1, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_CTRL1 + GRUB_MACHINE_PCI_IO_BASE) ($t0)
lui $t0, %hi(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_DATA + GRUB_MACHINE_PCI_IO_BASE_2F) lui $t0, %hi(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_DATA + GRUB_MACHINE_PCI_IO_BASE)
lb $v0, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_DATA + GRUB_MACHINE_PCI_IO_BASE_2F) ($t0) lb $v0, %lo(GRUB_CS5536_LBAR_SMBUS + GRUB_CS5536_SMB_REG_DATA + GRUB_MACHINE_PCI_IO_BASE) ($t0)
jr $t3 jr $t3
andi $v0, $v0, 0xff andi $v0, $v0, 0xff
read_spd_fail: read_spd_fail:
+1 -1
View File
@@ -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
boot_path_end:
kernel_byte: .xword (2 << 9) kernel_byte: .xword (2 << 9)
boot_path_end:
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)
+36 -113
View File
@@ -30,66 +30,8 @@ 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_2f (void) write_bases (void)
{ {
int i; int i;
grub_uint32_t reg = 0; grub_uint32_t reg = 0;
@@ -97,54 +39,38 @@ write_bases_2f (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_2F = reg; GRUB_MACHINE_PCI_IO_CTRL_REG = 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)
{ {
if (grub_bonito_type == GRUB_BONITO_2F) int i;
{ 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_2f (); write_bases ();
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 *
@@ -160,17 +86,14 @@ 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)))
{ {
if (grub_bonito_type == GRUB_BONITO_2F) int i;
{ for (i = 0; i < GRUB_MACHINE_PCI_NUM_WIN; i++)
int i; if (usage_win[i] && addr_win[i]
for (i = 0; i < GRUB_MACHINE_PCI_NUM_WIN; i++) == (((grub_addr_t) mem | 0x20000000)
if (usage_win[i] && addr_win[i] & ~GRUB_MACHINE_PCI_WIN_OFFSET_MASK))
== (((grub_addr_t) mem | 0x20000000) {
& ~GRUB_MACHINE_PCI_WIN_OFFSET_MASK)) usage_win[i]--;
{ return;
usage_win[i]--; }
return; grub_fatal ("Tried to unmap not mapped region");
}
grub_fatal ("Tried to unmap not mapped region");
}
} }
+2 -7
View File
@@ -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, token_ftd; grub_uint32_t token;
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,18 +1541,13 @@ 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 && ((token & GRUB_EHCI_STATUS_ACTIVE) == 0) if ((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)
+3 -3
View File
@@ -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];
} GRUB_PACKED; } __attribute__((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 */
} GRUB_PACKED; } __attribute__((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;
} GRUB_PACKED; } __attribute__((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;
+1 -1
View File
@@ -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;
} GRUB_PACKED; } __attribute__ ((packed));
static void static void
real_config (struct grub_serial_port *port) real_config (struct grub_serial_port *port)
+2 -2
View File
@@ -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];
} GRUB_PACKED; } __attribute__ ((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];
} GRUB_PACKED; } __attribute__ ((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;
+5 -5
View File
@@ -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 *) ((((grub_addr_t) target - 1) | 0xf) + 1); target = (grub_uint8_t *) ((((long) 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 *) ((((grub_addr_t) target - 1) | 0xf) + 1); target = (grub_uint8_t *) ((((long) 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 *) ((((grub_addr_t) target - 1) | 0xf) + 1); target = (grub_uint8_t *) ((((long) 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 *) ((((grub_addr_t) target - 1) | 0xf) + 1); target = (grub_uint8_t *) ((((long) 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)) = ((grub_addr_t) targetebda) >> 4; (*((grub_uint16_t *) 0x40e)) = ((long)targetebda) >> 4;
grub_dprintf ("acpi", "EBDA switched\n"); grub_dprintf ("acpi", "EBDA switched\n");
return GRUB_ERR_NONE; return GRUB_ERR_NONE;
+1 -1
View File
@@ -56,7 +56,7 @@ GRUB_MOD_INIT(boottime)
{ {
cmd_boottime = cmd_boottime =
grub_register_command ("boottime", grub_cmd_boottime, grub_register_command ("boottime", grub_cmd_boottime,
0, N_("Show boot time statistics.")); 0, N_("Get boot time statistics."));
} }
GRUB_MOD_FINI(boottime) GRUB_MOD_FINI(boottime)
+6 -6
View File
@@ -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_packed_guid_t acpi_guid = GRUB_EFI_ACPI_TABLE_GUID; static grub_efi_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_packed_guid_t *guid = grub_efi_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_packed_guid_t))) if (! grub_memcmp (guid, &acpi_guid, sizeof (grub_efi_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_packed_guid_t acpi20_guid = GRUB_EFI_ACPI_20_TABLE_GUID; static grub_efi_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_packed_guid_t *guid = grub_efi_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_packed_guid_t))) if (! grub_memcmp (guid, &acpi20_guid, sizeof (grub_efi_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;
} }
+1 -1
View File
@@ -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_packed_guid_t *guid = grub_efi_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)))
+1 -1
View File
@@ -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_packed_guid_t **protocols; grub_efi_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);
+1 -1
View File
@@ -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 ("%lld tables:\n", (long long) st->num_table_entries); grub_printf ("%ld tables:\n", 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++)
{ {
+4 -8
View File
@@ -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, i; grub_uint32_t len, l;
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,9 +44,7 @@ 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);
if (t->total_table_len <= sizeof (struct grub_efi_sal_system_table)) while (len > 0)
return;
for (i = 0; i < t->entry_count; i++)
{ {
switch (*(grub_uint8_t *) desc) switch (*(grub_uint8_t *) desc)
{ {
@@ -125,8 +123,6 @@ 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;
} }
} }
@@ -139,12 +135,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_packed_guid_t guid = GRUB_EFI_SAL_TABLE_GUID; grub_efi_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_packed_guid_t)) == 0) sizeof (grub_efi_guid_t)) == 0)
{ {
disp_sal (t->vendor_table); disp_sal (t->vendor_table);
return GRUB_ERR_NONE; return GRUB_ERR_NONE;
-678
View File
@@ -1,678 +0,0 @@
/*
* 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 unprivileged guest kernel"),
0, 0},
{"is-x86_64-xen-domu", 0, 0,
N_("Check if FILE can be booted as x86_64 Xen unprivileged guest kernel"), 0, 0},
{"is-x86-xen-dom0", 0, 0,
N_("Check if FILE can be used as Xen x86 privileged 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-arm64-linux", 0, 0,
N_("Check if FILE is ARM64 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-arm64-efi", 0, 0,
N_("Check if FILE is ARM64 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_ARM64_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_ARM64_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, sig_pi;
if (grub_file_read (file, &sig_pi, 4) != 4)
break;
/* Raspberry pi. */
if (sig_pi == grub_cpu_to_le32_compile_time (0xea000006))
{
ret = 1;
break;
}
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))
{
ret = 1;
break;
}
break;
}
case IS_ARM64_LINUX:
{
grub_uint32_t sig;
if (grub_file_seek (file, 0x38) == (grub_size_t) -1)
break;
if (grub_file_read (file, &sig, 4) != 4)
break;
if (sig == grub_cpu_to_le32_compile_time (0x644d5241))
{
ret = 1;
break;
}
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_ARM64_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_ARM64_EFI
&& coff_head.machine !=
grub_cpu_to_le16_compile_time (GRUB_PE32_MACHINE_ARM64))
break;
if (type == IS_ARM_EFI
&& coff_head.machine !=
grub_cpu_to_le16_compile_time (GRUB_PE32_MACHINE_ARMTHUMB_MIXED))
break;
if (type == IS_IA_EFI || type == IS_64_EFI || type == IS_ARM64_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
View File
@@ -1,5 +0,0 @@
#define GRUB_TARGET_WORDSIZE 32
#define XX 32
#define ehdrXX ehdr32
#define grub_file_check_netbsdXX grub_file_check_netbsd32
#include "fileXX.c"
-5
View File
@@ -1,5 +0,0 @@
#define GRUB_TARGET_WORDSIZE 64
#define XX 64
#define ehdrXX ehdr64
#define grub_file_check_netbsdXX grub_file_check_netbsd64
#include "fileXX.c"
-70
View File
@@ -1,70 +0,0 @@
/*
* 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;
}
+1 -1
View File
@@ -55,7 +55,7 @@ GRUB_MOD_INIT(cmosdump)
{ {
cmd = grub_register_command ("cmosdump", grub_cmd_cmosdump, cmd = grub_register_command ("cmosdump", grub_cmd_cmosdump,
0, 0,
N_("Show raw dump of the CMOS contents.")); N_("Dump CMOS contents."));
} }
GRUB_MOD_FINI(cmosdump) GRUB_MOD_FINI(cmosdump)
+1 -2
View File
@@ -109,10 +109,9 @@ GRUB_MOD_INIT(cmostest)
N_("Test bit at BYTE:BIT in CMOS.")); N_("Test bit at BYTE:BIT in CMOS."));
cmd_clean = grub_register_command ("cmosclean", grub_cmd_cmosclean, cmd_clean = grub_register_command ("cmosclean", grub_cmd_cmosclean,
N_("BYTE:BIT"), N_("BYTE:BIT"),
N_("Clear bit at BYTE:BIT in CMOS.")); N_("Clean bit at BYTE:BIT in CMOS."));
cmd_set = grub_register_command ("cmosset", grub_cmd_cmosset, cmd_set = grub_register_command ("cmosset", grub_cmd_cmosset,
N_("BYTE:BIT"), N_("BYTE:BIT"),
/* TRANSLATORS: A bit may be either set (1) or clear (0). */
N_("Set bit at BYTE:BIT in CMOS.")); N_("Set bit at BYTE:BIT in CMOS."));
} }
@@ -109,7 +109,7 @@ GRUB_MOD_INIT(cbtime)
{ {
cmd_boottime = cmd_boottime =
grub_register_command ("coreboot_boottime", grub_cmd_coreboot_boottime, grub_register_command ("coreboot_boottime", grub_cmd_coreboot_boottime,
0, N_("Show coreboot boot time statistics.")); 0, N_("Get coreboot boot time statistics."));
} }
GRUB_MOD_FINI(cbtime) GRUB_MOD_FINI(cbtime)
+4 -30
View File
@@ -34,38 +34,19 @@ 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}
}; };
enum #define bit_LM (1 << 29)
{
MODE_LM = 0,
MODE_PAE = 1
};
enum unsigned char grub_cpuid_has_longmode = 0;
{
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, grub_cmd_cpuid (grub_extcmd_context_t ctxt __attribute__ ((unused)),
int argc __attribute__ ((unused)), int argc __attribute__ ((unused)),
char **args __attribute__ ((unused))) char **args __attribute__ ((unused)))
{ {
int val = 0; return grub_cpuid_has_longmode ? GRUB_ERR_NONE
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"));
@@ -78,7 +59,6 @@ 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;
@@ -99,12 +79,6 @@ 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)
+79
View File
@@ -0,0 +1,79 @@
/* 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);
}
+1 -1
View File
@@ -74,7 +74,7 @@ typedef struct drivemap_node
grub_uint8_t redirto; grub_uint8_t redirto;
} drivemap_node_t; } drivemap_node_t;
typedef struct GRUB_PACKED int13map_node typedef struct __attribute__ ((packed)) int13map_node
{ {
grub_uint8_t disknum; grub_uint8_t disknum;
grub_uint8_t mapto; grub_uint8_t mapto;
+1 -14
View File
@@ -314,11 +314,7 @@ 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))
@@ -473,19 +469,10 @@ 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'"),
#ifdef GRUB_MACHINE_PCBIOS "initrd16");
"initrd16"
#else
"initrd"
#endif
);
return cmd->func (cmd, argc, args); return cmd->func (cmd, argc, args);
} }
+1 -1
View File
@@ -455,7 +455,7 @@ GRUB_MOD_INIT(loadenv)
{ {
cmd_load = cmd_load =
grub_register_extcmd ("load_env", grub_cmd_load_env, 0, grub_register_extcmd ("load_env", grub_cmd_load_env, 0,
N_("[-f FILE] [-s|--skip-sig] [variable_name_to_whitelist] [...]"), N_("[-f FILE] [-s|--skip-sig] [whitelisted_variable_name] [...]"),
N_("Load variables from environment block file."), N_("Load variables from environment block file."),
options); options);
cmd_list = cmd_list =
-236
View File
@@ -1,236 +0,0 @@
/* 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_uint32_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, (grub_uint32_t) 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);
}
+2 -8
View File
@@ -101,18 +101,12 @@ 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");
#if GRUB_CPU_SIZEOF_VOID_P == GRUB_CPU_SIZEOF_LONG addr = (grub_uint8_t *) grub_strtoul (argv[0], 0, 0);
#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_strtoaddr (argv[1], 0, 0); size = (grub_size_t) grub_strtoul (argv[1], 0, 0);
while (size--) while (size--)
{ {
+1 -1
View File
@@ -133,7 +133,7 @@ show_help (grub_device_t dev)
} }
} }
if (! found) if (! found)
grub_printf_ (N_("Sorry, no parttool is available for %s\n"), grub_printf_ (N_("Sorry no parttool is available for %s\n"),
dev->disk->partition->partmap->name); dev->disk->partition->partmap->name);
return GRUB_ERR_NONE; return GRUB_ERR_NONE;
} }
+1 -1
View File
@@ -166,7 +166,7 @@ GRUB_MOD_INIT(pcidump)
{ {
cmd = grub_register_extcmd ("pcidump", grub_cmd_pcidump, 0, cmd = grub_register_extcmd ("pcidump", grub_cmd_pcidump, 0,
N_("[-s POSITION] [-d DEVICE]"), N_("[-s POSITION] [-d DEVICE]"),
N_("Show raw dump of the PCI configuration space."), options); N_("Dump PCI configuration space."), options);
} }
GRUB_MOD_FINI(pcidump) GRUB_MOD_FINI(pcidump)
-214
View File
@@ -1,214 +0,0 @@
/*
* 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_("current directory of the syslinux [default is parent directory of input file]."),
N_("DIR"), ARG_TYPE_STRING},
{"isolinux", 'i', 0, N_("assume input is an isolinux configuration file."), 0, 0},
{"pxelinux", 'p', 0, N_("assume input is a pxelinux configuration file."), 0, 0},
{"syslinux", 's', 0, N_("assume input is a syslinux configuration file."), 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_("Execute syslinux config in same context"),
options);
cmd_configfile
= grub_register_extcmd ("syslinux_configfile",
grub_cmd_syslinux_source, 0,
N_("FILE"),
N_("Execute syslinux config in new context"),
options);
cmd_source_extract
= grub_register_extcmd ("extract_syslinux_entries_source",
grub_cmd_syslinux_source, 0,
N_("FILE"),
N_("Execute 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_("Execute 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);
}
+1 -1
View File
@@ -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_("Set a variable to return value."), N_("VARNAME"), ARG_TYPE_STRING }, { "set", 's', 0, N_("Variable name to update."), 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 }
+5 -6
View File
@@ -41,7 +41,7 @@ enum
static const struct grub_arg_option options[] = static const struct grub_arg_option options[] =
{ {
{"skip-sig", 's', 0, {"skip-sig", 's', 0,
N_("Skip signature-checking of the public key file."), 0, ARG_TYPE_NONE}, N_("Skip signature-checking of the signature file."), 0, ARG_TYPE_NONE},
{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;
} GRUB_PACKED; } __attribute__ ((packed));
const char *hashes[] = { const char *hashes[] = {
[0x01] = "md5", [0x01] = "md5",
@@ -885,7 +885,6 @@ 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;
} }
@@ -966,14 +965,14 @@ GRUB_MOD_INIT(verify)
options); options);
cmd_trust = grub_register_extcmd ("trust", grub_cmd_trust, 0, cmd_trust = grub_register_extcmd ("trust", grub_cmd_trust, 0,
N_("[-s|--skip-sig] PUBKEY_FILE"), N_("[-s|--skip-sig] PUBKEY_FILE"),
N_("Add PUBKEY_FILE to trusted keys."), N_("Add PKFILE to trusted keys."),
options); options);
cmd_list = grub_register_command ("list_trusted", grub_cmd_list, cmd_list = grub_register_command ("list_trusted", grub_cmd_list,
0, 0,
N_("Show the list of trusted keys.")); N_("List trusted keys."));
cmd_distrust = grub_register_command ("distrust", grub_cmd_distrust, cmd_distrust = grub_register_command ("distrust", grub_cmd_distrust,
N_("PUBKEY_ID"), N_("PUBKEY_ID"),
N_("Remove PUBKEY_ID from trusted keys.")); N_("Remove KEYID from trusted keys."));
} }
GRUB_MOD_FINI(verify) GRUB_MOD_FINI(verify)
+4 -4
View File
@@ -77,10 +77,10 @@ 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, N_("[DIR]"), cmd_ls = grub_register_command ("xen_ls", grub_cmd_lsxen, "[DIR]",
N_("List Xen storage.")); N_("List XEN storage."));
cmd_cat = grub_register_command ("xen_cat", grub_cmd_catxen, N_("[DIR]"), cmd_cat = grub_register_command ("xen_cat", grub_cmd_catxen, "[DIR]",
N_("List Xen storage.")); N_("List XEN storage."));
} }
GRUB_MOD_FINI (lsxen) GRUB_MOD_FINI (lsxen)
+3 -3
View File
@@ -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 last_cryptodisk_id = 0; static grub_uint8_t n = 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 = last_cryptodisk_id++; newdev->id = n++;
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 = last_cryptodisk_id++; newdev->id = n++;
newdev->next = cryptodisk_list; newdev->next = cryptodisk_list;
cryptodisk_list = newdev; cryptodisk_list = newdev;
+1 -2
View File
@@ -1057,8 +1057,7 @@ 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 (+%" GRUB_HOST_PRIuLONG_LONG ",%" grub_util_info ("Inserting %s (+%lld,%lld) into %s (%s)\n", disk->name,
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);
+1 -1
View File
@@ -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 */
} GRUB_PACKED; } __attribute__ ((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,
+21 -33
View File
@@ -157,7 +157,8 @@ 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 = sizeof (*ldp); ldp->length[0] = sizeof (*ldp);
ldp->length[1] = 0;
for (parent = devices; parent; parent = parent->next) for (parent = devices; parent; parent = parent->next)
{ {
@@ -187,7 +188,8 @@ 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 = sizeof (*ldp); ldp->length[0] = 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);
@@ -333,21 +335,6 @@ name_devices (struct grub_efidisk_data *devices)
if (! dp) if (! dp)
continue; continue;
/* Ghosts proudly presented by Apple. */
if (GRUB_EFI_DEVICE_PATH_TYPE (dp) == GRUB_EFI_MEDIA_DEVICE_PATH_TYPE
&& GRUB_EFI_DEVICE_PATH_SUBTYPE (dp)
== GRUB_EFI_VENDOR_MEDIA_DEVICE_PATH_SUBTYPE)
{
grub_efi_vendor_device_path_t *vendor = (grub_efi_vendor_device_path_t *) dp;
const struct grub_efi_guid apple = GRUB_EFI_VENDOR_APPLE_GUID;
if (vendor->header.length == sizeof (*vendor)
&& grub_memcmp (&vendor->vendor_guid, &apple,
sizeof (vendor->vendor_guid)) == 0
&& find_parent_device (devices, d))
continue;
}
m = d->block_io->media; m = d->block_io->media;
if (GRUB_EFI_DEVICE_PATH_TYPE (dp) == GRUB_EFI_ACPI_DEVICE_PATH_TYPE if (GRUB_EFI_DEVICE_PATH_TYPE (dp) == GRUB_EFI_ACPI_DEVICE_PATH_TYPE
&& GRUB_EFI_DEVICE_PATH_SUBTYPE (dp) && GRUB_EFI_DEVICE_PATH_SUBTYPE (dp)
@@ -681,20 +668,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;
hd = (grub_efi_hard_drive_device_path_t *) c->last_device_path; grub_memcpy (&hd, c->last_device_path, sizeof (hd));
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;
@@ -760,7 +747,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.
@@ -772,11 +759,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;
@@ -829,7 +816,8 @@ 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 = sizeof (*dup_ldp); dup_ldp->length[0] = 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))
@@ -846,10 +834,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;
ctx.hd = (grub_efi_hard_drive_device_path_t *) ldp; grub_memcpy (&ctx.hd, ldp, sizeof (ctx.hd));
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);
+3 -3
View File
@@ -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];
} GRUB_PACKED; } __attribute__ ((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];
} GRUB_PACKED; } __attribute__ ((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;
} GRUB_PACKED tohash } __attribute__ ((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);
+1 -1
View File
@@ -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 = 0; disk->id = (unsigned long) "host";
disk->data = 0; disk->data = 0;
+3 -3
View File
@@ -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];
} GRUB_PACKED; } __attribute__ ((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;
} GRUB_PACKED; } __attribute__ ((packed));
#define LDM_MAGIC "PRIVHEAD" #define LDM_MAGIC "PRIVHEAD"
@@ -1012,7 +1012,7 @@ grub_util_ldm_embed (struct grub_disk *disk, unsigned int *nsectors,
usable for bootloaders (called generically usable for bootloaders (called generically
"embedding zone") and this operation is "embedding zone") and this operation is
called "embedding". */ called "embedding". */
N_("your LDM Embedding Partition is too small;" N_("your LDM embedding Partition is too small;"
" embedding won't be possible")); " embedding won't be possible"));
*nsectors = lv->size; *nsectors = lv->size;
if (*nsectors > max_nsectors) if (*nsectors > max_nsectors)
+1 -4
View File
@@ -32,11 +32,9 @@ 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[] =
{ {
@@ -122,7 +120,6 @@ 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;
@@ -174,7 +171,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 = dev->id; disk->id = (unsigned long) dev;
disk->data = dev; disk->data = dev;
+1 -1
View File
@@ -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];
} GRUB_PACKED; } __attribute__ ((packed));
typedef struct grub_luks_phdr *grub_luks_phdr_t; typedef struct grub_luks_phdr *grub_luks_phdr_t;
+4 -5
View File
@@ -65,7 +65,7 @@ grub_lvm_checkvalue (char **p, char *str, char *tmpl)
static int static int
grub_lvm_check_flag (char *p, const char *str, const char *flag) grub_lvm_check_flag (char *p, const char *str, const char *flag)
{ {
grub_size_t len_str = grub_strlen (str), len_flag = grub_strlen (flag); int len_str = grub_strlen (str), len_flag = grub_strlen (flag);
while (1) while (1)
{ {
char *q; char *q;
@@ -111,8 +111,7 @@ grub_lvm_detect (grub_disk_t disk,
struct grub_lvm_disk_locn *dlocn; struct grub_lvm_disk_locn *dlocn;
struct grub_lvm_mda_header *mdah; struct grub_lvm_mda_header *mdah;
struct grub_lvm_raw_locn *rlocn; struct grub_lvm_raw_locn *rlocn;
unsigned int i, j; unsigned int i, j, vgname_len;
grub_size_t vgname_len;
struct grub_diskfilter_vg *vg; struct grub_diskfilter_vg *vg;
struct grub_diskfilter_pv *pv; struct grub_diskfilter_pv *pv;
@@ -274,7 +273,7 @@ grub_lvm_detect (grub_disk_t disk,
/* Add all the pvs to the volume group. */ /* Add all the pvs to the volume group. */
while (1) while (1)
{ {
grub_ssize_t s; int s;
while (grub_isspace (*p)) while (grub_isspace (*p))
p++; p++;
@@ -341,7 +340,7 @@ grub_lvm_detect (grub_disk_t disk,
/* And add all the lvs to the volume group. */ /* And add all the lvs to the volume group. */
while (1) while (1)
{ {
grub_ssize_t s; int s;
int skip_lv = 0; int skip_lv = 0;
struct grub_diskfilter_lv *lv; struct grub_diskfilter_lv *lv;
struct grub_diskfilter_segment *seg; struct grub_diskfilter_segment *seg;
+1 -1
View File
@@ -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 GRUB_PACKED, but since all members in this struct /* Could be __attribute__ ((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. */
+1 -1
View File
@@ -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;
} GRUB_PACKED; } __attribute__ ((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,
+1 -1
View File
@@ -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 = 0; disk->id = (unsigned long) "mdsk";
return GRUB_ERR_NONE; return GRUB_ERR_NONE;
} }
+2 -2
View File
@@ -34,9 +34,9 @@ static unsigned powx_inv[256];
static const grub_uint8_t poly = 0x1d; static const grub_uint8_t poly = 0x1d;
static void static void
grub_raid_block_mulx (unsigned mul, char *buf, grub_size_t size) grub_raid_block_mulx (unsigned mul, char *buf, int size)
{ {
grub_size_t i; int i;
grub_uint8_t *p; grub_uint8_t *p;
p = (grub_uint8_t *) buf; p = (grub_uint8_t *) buf;
+4 -6
View File
@@ -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];
} GRUB_PACKED; } __attribute__ ((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;
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_usbms_dev struct grub_usbms_dev
{ {
@@ -298,8 +298,6 @@ 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)
@@ -308,7 +306,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. */
@@ -337,7 +335,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;
} }
goto retry; return grub_error (GRUB_ERR_IO, "USB Mass Storage request failed");
} }
/* Read/write the data, (maybe) according to specification. */ /* Read/write the data, (maybe) according to specification. */
+46 -24
View File
@@ -111,42 +111,64 @@ static struct grub_font null_font;
static grub_uint8_t font_loader_initialized; static grub_uint8_t font_loader_initialized;
#if HAVE_FONT_SOURCE #if HAVE_FONT_SOURCE
static struct grub_font_glyph *ascii_font_glyph[0x80]; static struct grub_font_glyph *ascii_font_glyph[ASCII_NUM];
static struct grub_font_glyph *arrows_font_glyph[ARROWS_NUM];
static struct grub_font_glyph *lines_font_glyph[LINES_NUM];
static void
init_fallback (struct grub_font_glyph **glyphs, const unsigned char *stored,
grub_uint32_t len)
{
grub_uint32_t current;
for (current = 0; current < len; current++)
{
glyphs[current] =
grub_malloc (sizeof (struct grub_font_glyph) + ASCII_BITMAP_SIZE);
if (!glyphs[current])
{
grub_errno = GRUB_ERR_NONE;
continue;
}
glyphs[current]->width = 8;
glyphs[current]->height = 16;
glyphs[current]->offset_x = 0;
glyphs[current]->offset_y = -2;
glyphs[current]->device_width = 8;
glyphs[current]->font = NULL;
grub_memcpy (glyphs[current]->bitmap,
&stored[current * ASCII_BITMAP_SIZE],
ASCII_BITMAP_SIZE);
}
}
#endif #endif
static struct grub_font_glyph * static struct grub_font_glyph *
ascii_glyph_lookup (grub_uint32_t code) ascii_glyph_lookup (grub_uint32_t code)
{ {
#if HAVE_FONT_SOURCE #if HAVE_FONT_SOURCE
static int ascii_failback_initialized = 0; static int ascii_fallback_initialized = 0;
struct grub_font_glyph **p;
if (code >= 0x80) if (code < ASCII_NUM)
p = &ascii_font_glyph[code];
else if (code >= ARROWS_START && code < ARROWS_START + ARROWS_NUM)
p = &arrows_font_glyph[code - ARROWS_START];
else if (code >= LINES_START && code < LINES_START + LINES_NUM)
p = &lines_font_glyph[code - LINES_START];
else
return NULL; return NULL;
if (ascii_failback_initialized == 0) if (ascii_fallback_initialized == 0)
{ {
int current; init_fallback (ascii_font_glyph, ascii_bitmaps, ASCII_NUM);
for (current = 0; current < 0x80; current++) init_fallback (arrows_font_glyph, arrows_bitmaps, ARROWS_NUM);
{ init_fallback (lines_font_glyph, lines_bitmaps, LINES_NUM);
ascii_font_glyph[current] = ascii_fallback_initialized = 1;
grub_malloc (sizeof (struct grub_font_glyph) + ASCII_BITMAP_SIZE);
ascii_font_glyph[current]->width = 8;
ascii_font_glyph[current]->height = 16;
ascii_font_glyph[current]->offset_x = 0;
ascii_font_glyph[current]->offset_y = -2;
ascii_font_glyph[current]->device_width = 8;
ascii_font_glyph[current]->font = NULL;
grub_memcpy (ascii_font_glyph[current]->bitmap,
&ascii_bitmaps[current * ASCII_BITMAP_SIZE],
ASCII_BITMAP_SIZE);
}
ascii_failback_initialized = 1;
} }
return ascii_font_glyph[code]; return *p;
#else #else
(void) code; (void) code;
return NULL; return NULL;
+4 -4
View File
@@ -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;
} GRUB_PACKED; } __attribute__ ((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];
} GRUB_PACKED; } __attribute__ ((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;
} GRUB_PACKED; } __attribute__ ((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;
} GRUB_PACKED; } __attribute__ ((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. */
+8 -8
View File
@@ -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;
} GRUB_PACKED; } __attribute__ ((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;
} GRUB_PACKED; } __attribute__ ((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];
} GRUB_PACKED; } __attribute__ ((packed));
char inplace_link[144]; char inplace_link[144];
} GRUB_PACKED; } __attribute__ ((packed));
grub_uint8_t small_data[0]; grub_uint8_t small_data[0];
} GRUB_PACKED; } __attribute__ ((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;
} GRUB_PACKED; } __attribute__ ((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];
} GRUB_PACKED; } __attribute__ ((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
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_bfs_data struct grub_bfs_data
{ {
+12 -22
View File
@@ -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];
} GRUB_PACKED; } __attribute__ ((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];
} GRUB_PACKED; } __attribute__ ((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;
} GRUB_PACKED; } __attribute__ ((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;
} GRUB_PACKED; } __attribute__ ((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;
} GRUB_PACKED; } __attribute__ ((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;
} GRUB_PACKED; } __attribute__ ((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;
} GRUB_PACKED; } __attribute__ ((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];
} GRUB_PACKED; } __attribute__ ((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;
} GRUB_PACKED; } __attribute__ ((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;
}; };
}; };
} GRUB_PACKED; } __attribute__ ((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,12 +1104,7 @@ 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)
{ {
@@ -1163,12 +1158,7 @@ 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;
} }
+1 -1
View File
@@ -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 = 0; disk->id = (unsigned long) "cbfs";
return GRUB_ERR_NONE; return GRUB_ERR_NONE;
} }
+1 -1
View File
@@ -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];
} GRUB_PACKED; } __attribute__ ((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)
+1 -1
View File
@@ -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];
} GRUB_PACKED; } __attribute__ ((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)
+8 -8
View File
@@ -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];
} GRUB_PACKED file; } __attribute__ ((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;
} GRUB_PACKED stream_extension; } __attribute__ ((packed)) stream_extension;
struct { struct {
grub_uint8_t flags; grub_uint8_t flags;
grub_uint16_t str[15]; grub_uint16_t str[15];
} GRUB_PACKED file_name; } __attribute__ ((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];
} GRUB_PACKED volume_label; } __attribute__ ((packed)) volume_label;
} GRUB_PACKED type_specific; } __attribute__ ((packed)) type_specific;
} GRUB_PACKED; } __attribute__ ((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;
} GRUB_PACKED; } __attribute__ ((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];
} GRUB_PACKED; } __attribute__ ((packed));
typedef struct grub_fat_dir_entry grub_fat_dir_node_t; typedef struct grub_fat_dir_entry grub_fat_dir_node_t;
+7 -11
View File
@@ -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;
} GRUB_PACKED; } __attribute__ ((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];
} GRUB_PACKED; } __attribute__ ((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];
} GRUB_PACKED; } __attribute__ ((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;
} GRUB_PACKED; } __attribute__ ((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;
} GRUB_PACKED; } __attribute__ ((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;
} GRUB_PACKED; } __attribute__ ((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;
} GRUB_PACKED *pnt; } __attribute__ ((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,18 +1229,14 @@ 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);
} }
+7 -4
View File
@@ -34,6 +34,11 @@
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
{ {
@@ -60,7 +65,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;
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_hfsplus_catfile struct grub_hfsplus_catfile
{ {
@@ -75,7 +80,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;
} GRUB_PACKED; } __attribute__ ((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
@@ -914,8 +919,6 @@ 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);
+9 -19
View File
@@ -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];
} GRUB_PACKED; } __attribute__ ((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;
} GRUB_PACKED; } __attribute__ ((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;
} GRUB_PACKED; } __attribute__ ((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];
} GRUB_PACKED; } __attribute__ ((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;
} GRUB_PACKED; } __attribute__ ((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;
} GRUB_PACKED; } __attribute__ ((packed));
enum enum
{ {
@@ -156,12 +156,8 @@ 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) != (grub_ssize_t) ts) node->cbuf, ts) < 0)
{ {
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;
} }
@@ -292,14 +288,8 @@ 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) node->cbuf, node->size) < 0)
!= (grub_ssize_t) node->size) return grub_errno;
{
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;
} }
+8 -8
View File
@@ -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;
} GRUB_PACKED; } __attribute__ ((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;
} GRUB_PACKED; } __attribute__ ((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;
} GRUB_PACKED; } __attribute__ ((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;
} GRUB_PACKED; } __attribute__ ((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;
} GRUB_PACKED; } __attribute__ ((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];
} GRUB_PACKED; } __attribute__ ((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];
} GRUB_PACKED; } __attribute__ ((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;
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_iso9660_data struct grub_iso9660_data
{ {
+16 -16
View File
@@ -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;
} GRUB_PACKED; } __attribute__ ((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];
} GRUB_PACKED; } __attribute__ ((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];
} GRUB_PACKED; } __attribute__ ((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;
} GRUB_PACKED; } __attribute__ ((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];
} GRUB_PACKED; } __attribute__ ((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];
} GRUB_PACKED; } __attribute__ ((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;
} GRUB_PACKED; } __attribute__ ((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];
} GRUB_PACKED; } __attribute__ ((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;
} GRUB_PACKED; } __attribute__ ((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 GRUB_PACKED struct __attribute__ ((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];
} GRUB_PACKED dir; } dir __attribute__ ((packed));
/* 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;
} GRUB_PACKED; } __attribute__ ((packed));
} GRUB_PACKED; } __attribute__ ((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;
} GRUB_PACKED; } __attribute__ ((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];
} GRUB_PACKED *dirpage; } *dirpage __attribute__ ((packed));
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;
} GRUB_PACKED; } __attribute__ ((packed));
static grub_dl_t my_mod; static grub_dl_t my_mod;
+1 -1
View File
@@ -38,7 +38,7 @@ struct head
char rdevminor[8]; char rdevminor[8];
char namesize[8]; char namesize[8];
char check[8]; char check[8];
} GRUB_PACKED; } __attribute__ ((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)
+1 -1
View File
@@ -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
} GRUB_PACKED; } __attribute__ ((packed));
enum enum
{ {
+1 -1
View File
@@ -643,7 +643,7 @@ struct symlink_descriptor
grub_uint16_t len1; grub_uint16_t len1;
grub_uint16_t off2; grub_uint16_t off2;
grub_uint16_t len2; grub_uint16_t len2;
} GRUB_PACKED; } __attribute__ ((packed));
static char * static char *
grub_ntfs_read_symlink (grub_fshelp_node_t node) grub_ntfs_read_symlink (grub_fshelp_node_t node)
+1 -1
View File
@@ -35,7 +35,7 @@ struct head
char mtime[11]; char mtime[11];
char namesize[6]; char namesize[6];
char filesize[11]; char filesize[11];
} GRUB_PACKED; } __attribute__ ((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)
+1 -1
View File
@@ -44,7 +44,7 @@ grub_procdev_open (const char *name, grub_disk_t disk)
return grub_error (GRUB_ERR_UNKNOWN_DEVICE, "not a procfs disk"); return grub_error (GRUB_ERR_UNKNOWN_DEVICE, "not a procfs disk");
disk->total_sectors = 0; disk->total_sectors = 0;
disk->id = 0; disk->id = (unsigned long) "proc";
disk->data = 0; disk->data = 0;
+14 -14
View File
@@ -109,14 +109,14 @@ struct grub_reiserfs_superblock
grub_uint8_t unused[4]; grub_uint8_t unused[4];
grub_uint16_t uuid[8]; grub_uint16_t uuid[8];
char label[16]; char label[16];
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_reiserfs_journal_header struct grub_reiserfs_journal_header
{ {
grub_uint32_t last_flush_uid; grub_uint32_t last_flush_uid;
grub_uint32_t unflushed_offset; grub_uint32_t unflushed_offset;
grub_uint32_t mount_id; grub_uint32_t mount_id;
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_reiserfs_description_block struct grub_reiserfs_description_block
{ {
@@ -124,14 +124,14 @@ struct grub_reiserfs_description_block
grub_uint32_t len; grub_uint32_t len;
grub_uint32_t mount_id; grub_uint32_t mount_id;
grub_uint32_t real_blocks[0]; grub_uint32_t real_blocks[0];
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_reiserfs_commit_block struct grub_reiserfs_commit_block
{ {
grub_uint32_t id; grub_uint32_t id;
grub_uint32_t len; grub_uint32_t len;
grub_uint32_t real_blocks[0]; grub_uint32_t real_blocks[0];
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_reiserfs_stat_item_v1 struct grub_reiserfs_stat_item_v1
{ {
@@ -145,7 +145,7 @@ struct grub_reiserfs_stat_item_v1
grub_uint32_t ctime; grub_uint32_t ctime;
grub_uint32_t rdev; grub_uint32_t rdev;
grub_uint32_t first_direct_byte; grub_uint32_t first_direct_byte;
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_reiserfs_stat_item_v2 struct grub_reiserfs_stat_item_v2
{ {
@@ -160,7 +160,7 @@ struct grub_reiserfs_stat_item_v2
grub_uint32_t ctime; grub_uint32_t ctime;
grub_uint32_t blocks; grub_uint32_t blocks;
grub_uint32_t first_direct_byte; grub_uint32_t first_direct_byte;
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_reiserfs_key struct grub_reiserfs_key
{ {
@@ -172,13 +172,13 @@ struct grub_reiserfs_key
{ {
grub_uint32_t offset; grub_uint32_t offset;
grub_uint32_t type; grub_uint32_t type;
} GRUB_PACKED v1; } v1 __attribute__ ((packed));
struct struct
{ {
grub_uint64_t offset_type; grub_uint64_t offset_type;
} GRUB_PACKED v2; } v2 __attribute__ ((packed));
} u; } u;
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_reiserfs_item_header struct grub_reiserfs_item_header
{ {
@@ -187,11 +187,11 @@ struct grub_reiserfs_item_header
{ {
grub_uint16_t free_space; grub_uint16_t free_space;
grub_uint16_t entry_count; grub_uint16_t entry_count;
} GRUB_PACKED u; } u __attribute__ ((packed));
grub_uint16_t item_size; grub_uint16_t item_size;
grub_uint16_t item_location; grub_uint16_t item_location;
grub_uint16_t version; grub_uint16_t version;
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_reiserfs_block_header struct grub_reiserfs_block_header
{ {
@@ -200,14 +200,14 @@ struct grub_reiserfs_block_header
grub_uint16_t free_space; grub_uint16_t free_space;
grub_uint16_t reserved; grub_uint16_t reserved;
struct grub_reiserfs_key block_right_delimiting_key; struct grub_reiserfs_key block_right_delimiting_key;
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_reiserfs_disk_child struct grub_reiserfs_disk_child
{ {
grub_uint32_t block_number; grub_uint32_t block_number;
grub_uint16_t size; grub_uint16_t size;
grub_uint16_t reserved; grub_uint16_t reserved;
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_reiserfs_directory_header struct grub_reiserfs_directory_header
{ {
@@ -216,7 +216,7 @@ struct grub_reiserfs_directory_header
grub_uint32_t object_id; grub_uint32_t object_id;
grub_uint16_t location; grub_uint16_t location;
grub_uint16_t state; grub_uint16_t state;
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_fshelp_node struct grub_fshelp_node
{ {
+9 -9
View File
@@ -35,7 +35,7 @@ struct grub_sfs_bheader
grub_uint8_t magic[4]; grub_uint8_t magic[4];
grub_uint32_t chksum; grub_uint32_t chksum;
grub_uint32_t ipointtomyself; grub_uint32_t ipointtomyself;
} GRUB_PACKED; } __attribute__ ((packed));
/* The sfs rootblock. */ /* The sfs rootblock. */
struct grub_sfs_rblock struct grub_sfs_rblock
@@ -50,7 +50,7 @@ struct grub_sfs_rblock
grub_uint8_t unused3[8]; grub_uint8_t unused3[8];
grub_uint32_t rootobject; grub_uint32_t rootobject;
grub_uint32_t btree; grub_uint32_t btree;
} GRUB_PACKED; } __attribute__ ((packed));
enum enum
{ {
@@ -69,18 +69,18 @@ struct grub_sfs_obj
{ {
grub_uint32_t first_block; grub_uint32_t first_block;
grub_uint32_t size; grub_uint32_t size;
} GRUB_PACKED file; } file __attribute__ ((packed));
struct struct
{ {
grub_uint32_t hashtable; grub_uint32_t hashtable;
grub_uint32_t dir_objc; grub_uint32_t dir_objc;
} GRUB_PACKED dir; } dir __attribute__ ((packed));
} file_dir; } file_dir;
grub_uint32_t mtime; grub_uint32_t mtime;
grub_uint8_t type; grub_uint8_t type;
grub_uint8_t filename[1]; grub_uint8_t filename[1];
grub_uint8_t comment[1]; grub_uint8_t comment[1];
} GRUB_PACKED; } __attribute__ ((packed));
#define GRUB_SFS_TYPE_DELETED 32 #define GRUB_SFS_TYPE_DELETED 32
#define GRUB_SFS_TYPE_SYMLINK 64 #define GRUB_SFS_TYPE_SYMLINK 64
@@ -95,13 +95,13 @@ struct grub_sfs_objc
grub_uint32_t prev; grub_uint32_t prev;
/* The amount of objects depends on the blocksize. */ /* The amount of objects depends on the blocksize. */
struct grub_sfs_obj objects[1]; struct grub_sfs_obj objects[1];
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_sfs_btree_node struct grub_sfs_btree_node
{ {
grub_uint32_t key; grub_uint32_t key;
grub_uint32_t data; grub_uint32_t data;
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_sfs_btree_extent struct grub_sfs_btree_extent
{ {
@@ -109,7 +109,7 @@ struct grub_sfs_btree_extent
grub_uint32_t next; grub_uint32_t next;
grub_uint32_t prev; grub_uint32_t prev;
grub_uint16_t size; grub_uint16_t size;
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_sfs_btree struct grub_sfs_btree
{ {
@@ -120,7 +120,7 @@ struct grub_sfs_btree
/* Normally this can be kind of node, but just extents are /* Normally this can be kind of node, but just extents are
supported. */ supported. */
struct grub_sfs_btree_node node[1]; struct grub_sfs_btree_node node[1];
} GRUB_PACKED; } __attribute__ ((packed));
+11 -11
View File
@@ -71,7 +71,7 @@ struct grub_squash_super
grub_uint64_t diroffset; grub_uint64_t diroffset;
grub_uint64_t unk1offset; grub_uint64_t unk1offset;
grub_uint64_t unk2offset; grub_uint64_t unk2offset;
} GRUB_PACKED; } __attribute__ ((packed));
/* Chunk-based */ /* Chunk-based */
struct grub_squash_inode struct grub_squash_inode
@@ -89,7 +89,7 @@ struct grub_squash_inode
grub_uint32_t offset; grub_uint32_t offset;
grub_uint32_t size; grub_uint32_t size;
grub_uint32_t block_size[0]; grub_uint32_t block_size[0];
} GRUB_PACKED file; } __attribute__ ((packed)) file;
struct { struct {
grub_uint64_t chunk; grub_uint64_t chunk;
grub_uint64_t size; grub_uint64_t size;
@@ -98,13 +98,13 @@ struct grub_squash_inode
grub_uint32_t offset; grub_uint32_t offset;
grub_uint32_t dummy3; grub_uint32_t dummy3;
grub_uint32_t block_size[0]; grub_uint32_t block_size[0];
} GRUB_PACKED long_file; } __attribute__ ((packed)) long_file;
struct { struct {
grub_uint32_t chunk; grub_uint32_t chunk;
grub_uint32_t dummy; grub_uint32_t dummy;
grub_uint16_t size; grub_uint16_t size;
grub_uint16_t offset; grub_uint16_t offset;
} GRUB_PACKED dir; } __attribute__ ((packed)) dir;
struct { struct {
grub_uint32_t dummy1; grub_uint32_t dummy1;
grub_uint32_t size; grub_uint32_t size;
@@ -112,14 +112,14 @@ struct grub_squash_inode
grub_uint32_t dummy2; grub_uint32_t dummy2;
grub_uint16_t dummy3; grub_uint16_t dummy3;
grub_uint16_t offset; grub_uint16_t offset;
} GRUB_PACKED long_dir; } __attribute__ ((packed)) long_dir;
struct { struct {
grub_uint32_t dummy; grub_uint32_t dummy;
grub_uint32_t namelen; grub_uint32_t namelen;
char name[0]; char name[0];
} GRUB_PACKED symlink; } __attribute__ ((packed)) symlink;
} GRUB_PACKED; } __attribute__ ((packed));
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_squash_cache_inode struct grub_squash_cache_inode
{ {
@@ -137,7 +137,7 @@ struct grub_squash_dirent_header
grub_uint32_t nelems; grub_uint32_t nelems;
grub_uint32_t ino_chunk; grub_uint32_t ino_chunk;
grub_uint32_t dummy; grub_uint32_t dummy;
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_squash_dirent struct grub_squash_dirent
{ {
@@ -147,7 +147,7 @@ struct grub_squash_dirent
/* Actually the value is the length of name - 1. */ /* Actually the value is the length of name - 1. */
grub_uint16_t namelen; grub_uint16_t namelen;
char name[0]; char name[0];
} GRUB_PACKED; } __attribute__ ((packed));
enum enum
{ {
@@ -164,7 +164,7 @@ struct grub_squash_frag_desc
grub_uint64_t offset; grub_uint64_t offset;
grub_uint32_t size; grub_uint32_t size;
grub_uint32_t dummy; grub_uint32_t dummy;
} GRUB_PACKED; } __attribute__ ((packed));
enum enum
{ {
+1 -1
View File
@@ -48,7 +48,7 @@ struct head
char devmajor[8]; char devmajor[8];
char devminor[8]; char devminor[8];
char prefix[155]; char prefix[155];
} GRUB_PACKED; } __attribute__ ((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)
+19 -19
View File
@@ -117,32 +117,32 @@ struct grub_udf_lb_addr
{ {
grub_uint32_t block_num; grub_uint32_t block_num;
grub_uint16_t part_ref; grub_uint16_t part_ref;
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_udf_short_ad struct grub_udf_short_ad
{ {
grub_uint32_t length; grub_uint32_t length;
grub_uint32_t position; grub_uint32_t position;
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_udf_long_ad struct grub_udf_long_ad
{ {
grub_uint32_t length; grub_uint32_t length;
struct grub_udf_lb_addr block; struct grub_udf_lb_addr block;
grub_uint8_t imp_use[6]; grub_uint8_t imp_use[6];
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_udf_extent_ad struct grub_udf_extent_ad
{ {
grub_uint32_t length; grub_uint32_t length;
grub_uint32_t start; grub_uint32_t start;
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_udf_charspec struct grub_udf_charspec
{ {
grub_uint8_t charset_type; grub_uint8_t charset_type;
grub_uint8_t charset_info[63]; grub_uint8_t charset_info[63];
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_udf_timestamp struct grub_udf_timestamp
{ {
@@ -156,14 +156,14 @@ struct grub_udf_timestamp
grub_uint8_t centi_seconds; grub_uint8_t centi_seconds;
grub_uint8_t hundreds_of_micro_seconds; grub_uint8_t hundreds_of_micro_seconds;
grub_uint8_t micro_seconds; grub_uint8_t micro_seconds;
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_udf_regid struct grub_udf_regid
{ {
grub_uint8_t flags; grub_uint8_t flags;
grub_uint8_t ident[23]; grub_uint8_t ident[23];
grub_uint8_t ident_suffix[8]; grub_uint8_t ident_suffix[8];
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_udf_tag struct grub_udf_tag
{ {
@@ -175,7 +175,7 @@ struct grub_udf_tag
grub_uint16_t desc_crc; grub_uint16_t desc_crc;
grub_uint16_t desc_crc_length; grub_uint16_t desc_crc_length;
grub_uint32_t tag_location; grub_uint32_t tag_location;
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_udf_fileset struct grub_udf_fileset
{ {
@@ -197,7 +197,7 @@ struct grub_udf_fileset
struct grub_udf_regid domain_ident; struct grub_udf_regid domain_ident;
struct grub_udf_long_ad next_ext; struct grub_udf_long_ad next_ext;
struct grub_udf_long_ad streamdir_icb; struct grub_udf_long_ad streamdir_icb;
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_udf_icbtag struct grub_udf_icbtag
{ {
@@ -209,7 +209,7 @@ struct grub_udf_icbtag
grub_uint8_t file_type; grub_uint8_t file_type;
struct grub_udf_lb_addr parent_idb; struct grub_udf_lb_addr parent_idb;
grub_uint16_t flags; grub_uint16_t flags;
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_udf_file_ident struct grub_udf_file_ident
{ {
@@ -220,7 +220,7 @@ struct grub_udf_file_ident
grub_uint8_t file_ident_length; grub_uint8_t file_ident_length;
struct grub_udf_long_ad icb; struct grub_udf_long_ad icb;
grub_uint16_t imp_use_length; grub_uint16_t imp_use_length;
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_udf_file_entry struct grub_udf_file_entry
{ {
@@ -245,7 +245,7 @@ struct grub_udf_file_entry
grub_uint32_t ext_attr_length; grub_uint32_t ext_attr_length;
grub_uint32_t alloc_descs_length; grub_uint32_t alloc_descs_length;
grub_uint8_t ext_attr[0]; grub_uint8_t ext_attr[0];
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_udf_extended_file_entry struct grub_udf_extended_file_entry
{ {
@@ -274,20 +274,20 @@ struct grub_udf_extended_file_entry
grub_uint32_t ext_attr_length; grub_uint32_t ext_attr_length;
grub_uint32_t alloc_descs_length; grub_uint32_t alloc_descs_length;
grub_uint8_t ext_attr[0]; grub_uint8_t ext_attr[0];
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_udf_vrs struct grub_udf_vrs
{ {
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;
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_udf_avdp struct grub_udf_avdp
{ {
struct grub_udf_tag tag; struct grub_udf_tag tag;
struct grub_udf_extent_ad vds; struct grub_udf_extent_ad vds;
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_udf_pd struct grub_udf_pd
{ {
@@ -300,7 +300,7 @@ struct grub_udf_pd
grub_uint32_t access_type; grub_uint32_t access_type;
grub_uint32_t start; grub_uint32_t start;
grub_uint32_t length; grub_uint32_t length;
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_udf_partmap struct grub_udf_partmap
{ {
@@ -319,7 +319,7 @@ struct grub_udf_partmap
grub_uint8_t ident[62]; grub_uint8_t ident[62];
} type2; } type2;
}; };
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_udf_lvd struct grub_udf_lvd
{ {
@@ -336,14 +336,14 @@ struct grub_udf_lvd
grub_uint8_t imp_use[128]; grub_uint8_t imp_use[128];
struct grub_udf_extent_ad integrity_seq_ext; struct grub_udf_extent_ad integrity_seq_ext;
grub_uint8_t part_maps[1608]; grub_uint8_t part_maps[1608];
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_udf_aed struct grub_udf_aed
{ {
struct grub_udf_tag tag; struct grub_udf_tag tag;
grub_uint32_t prev_ae; grub_uint32_t prev_ae;
grub_uint32_t ae_len; grub_uint32_t ae_len;
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_udf_data struct grub_udf_data
{ {
+3 -3
View File
@@ -187,7 +187,7 @@ struct grub_ufs_inode
}; };
grub_uint8_t unused[24]; grub_uint8_t unused[24];
} GRUB_PACKED; } __attribute__ ((packed));
#else #else
/* UFS inode. */ /* UFS inode. */
struct grub_ufs_inode struct grub_ufs_inode
@@ -217,7 +217,7 @@ struct grub_ufs_inode
grub_uint32_t gen; grub_uint32_t gen;
grub_uint32_t unused; grub_uint32_t unused;
grub_uint8_t pad[12]; grub_uint8_t pad[12];
} GRUB_PACKED; } __attribute__ ((packed));
#endif #endif
/* Directory entry. */ /* Directory entry. */
@@ -234,7 +234,7 @@ struct grub_ufs_dirent
grub_uint8_t namelen_bsd; grub_uint8_t namelen_bsd;
}; };
}; };
} GRUB_PACKED; } __attribute__ ((packed));
/* Information about a "mounted" ufs filesystem. */ /* Information about a "mounted" ufs filesystem. */
struct grub_ufs_data struct grub_ufs_data
+11 -11
View File
@@ -54,7 +54,7 @@ struct grub_xfs_sblock
grub_uint8_t log2_agblk; grub_uint8_t log2_agblk;
grub_uint8_t unused6[67]; grub_uint8_t unused6[67];
grub_uint8_t log2_dirblk; grub_uint8_t log2_dirblk;
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_xfs_dir_header struct grub_xfs_dir_header
{ {
@@ -64,8 +64,8 @@ struct grub_xfs_dir_header
{ {
grub_uint32_t i4; grub_uint32_t i4;
grub_uint64_t i8; grub_uint64_t i8;
} GRUB_PACKED parent; } parent __attribute__ ((packed));
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_xfs_dir_entry struct grub_xfs_dir_entry
{ {
@@ -73,13 +73,13 @@ struct grub_xfs_dir_entry
grub_uint16_t offset; grub_uint16_t offset;
char name[1]; char name[1];
/* Inode number follows, 32 bits. */ /* Inode number follows, 32 bits. */
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_xfs_dir2_entry struct grub_xfs_dir2_entry
{ {
grub_uint64_t inode; grub_uint64_t inode;
grub_uint8_t len; grub_uint8_t len;
} GRUB_PACKED; } __attribute__ ((packed));
typedef grub_uint32_t grub_xfs_extent[4]; typedef grub_uint32_t grub_xfs_extent[4];
@@ -91,20 +91,20 @@ struct grub_xfs_btree_node
grub_uint64_t left; grub_uint64_t left;
grub_uint64_t right; grub_uint64_t right;
grub_uint64_t keys[1]; grub_uint64_t keys[1];
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_xfs_btree_root struct grub_xfs_btree_root
{ {
grub_uint16_t level; grub_uint16_t level;
grub_uint16_t numrecs; grub_uint16_t numrecs;
grub_uint64_t keys[1]; grub_uint64_t keys[1];
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_xfs_time struct grub_xfs_time
{ {
grub_uint32_t sec; grub_uint32_t sec;
grub_uint32_t nanosec; grub_uint32_t nanosec;
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_xfs_inode struct grub_xfs_inode
{ {
@@ -133,14 +133,14 @@ struct grub_xfs_inode
} dir; } dir;
grub_xfs_extent extents[XFS_INODE_EXTENTS]; grub_xfs_extent extents[XFS_INODE_EXTENTS];
struct grub_xfs_btree_root btree; struct grub_xfs_btree_root btree;
} GRUB_PACKED data; } data __attribute__ ((packed));
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_xfs_dirblock_tail struct grub_xfs_dirblock_tail
{ {
grub_uint32_t leaf_count; grub_uint32_t leaf_count;
grub_uint32_t leaf_stale; grub_uint32_t leaf_stale;
} GRUB_PACKED; } __attribute__ ((packed));
struct grub_fshelp_node struct grub_fshelp_node
{ {
+3 -7
View File
@@ -293,13 +293,9 @@ static grub_err_t
zlib_decompress (void *s, void *d, zlib_decompress (void *s, void *d,
grub_size_t slen, grub_size_t dlen) grub_size_t slen, grub_size_t dlen)
{ {
if (grub_zlib_decompress (s, slen, 0, d, dlen) == (grub_ssize_t) dlen) if (grub_zlib_decompress (s, slen, 0, d, dlen) < 0)
return GRUB_ERR_NONE; return grub_errno;
return GRUB_ERR_NONE;
if (!grub_errno)
grub_error (GRUB_ERR_BAD_COMPRESSED_DATA,
"premature end of compressed");
return grub_errno;
} }
static grub_err_t static grub_err_t
+3 -3
View File
@@ -77,13 +77,13 @@ typedef grub_size_t size_t;
typedef struct _U16_S { typedef struct _U16_S {
U16 v; U16 v;
} GRUB_PACKED U16_S; } __attribute__ ((packed)) U16_S;
typedef struct _U32_S { typedef struct _U32_S {
U32 v; U32 v;
} GRUB_PACKED U32_S; } __attribute__ ((packed)) U32_S;
typedef struct _U64_S { typedef struct _U64_S {
U64 v; U64 v;
} GRUB_PACKED U64_S; } __attribute__ ((packed)) U64_S;
#define A64(x) (((U64_S *)(x))->v) #define A64(x) (((U64_S *)(x))->v)
#define A32(x) (((U32_S *)(x))->v) #define A32(x) (((U32_S *)(x))->v)
+3 -3
View File
@@ -53,6 +53,9 @@ if test x@TARGET_APPLE_LINKER@ != x1; then
fi fi
rm -f $t1 $t2 rm -f $t1 $t2
if ! test -z "${TARGET_OBJ2ELF}"; then
"${TARGET_OBJ2ELF}" $tmpfile || exit 1
fi
if test x@platform@ != xemu; then if test x@platform@ != xemu; then
@TARGET_STRIP@ --strip-unneeded \ @TARGET_STRIP@ --strip-unneeded \
-K grub_mod_init -K grub_mod_fini \ -K grub_mod_init -K grub_mod_fini \
@@ -60,9 +63,6 @@ if test x@TARGET_APPLE_LINKER@ != x1; then
-R .note.gnu.gold-version -R .note.GNU-stack \ -R .note.gnu.gold-version -R .note.GNU-stack \
-R .note -R .comment $tmpfile || exit 1 -R .note -R .comment $tmpfile || exit 1
fi fi
if ! test -z "${TARGET_OBJ2ELF}"; then
"${TARGET_OBJ2ELF}" $tmpfile || exit 1
fi
else else
tmpfile2=${outfile}.tmp2 tmpfile2=${outfile}.tmp2
t1=${outfile}.t1.c t1=${outfile}.t1.c
+18 -16
View File
@@ -14,23 +14,25 @@
# Read symbols' info from stdin. # Read symbols' info from stdin.
BEGIN { BEGIN {
error = 0 error = 0
} lineno = 0;
while (getline <"/dev/stdin") {
{ lineno++;
if ($1 == "defined") { if ($1 == "defined") {
symtab[$3] = $2; symtab[$3] = $2;
modtab[$2] = "" modtab[$2] modtab[$2] = "" modtab[$2]
} else if ($1 == "undefined") { } else if ($1 == "undefined") {
if ($3 in symtab) if ($3 in symtab)
modtab[$2] = modtab[$2] " " symtab[$3]; modtab[$2] = modtab[$2] " " symtab[$3];
else if ($3 != "__gnu_local_gp" && $3 != "_gp_disp") { else if ($3 != "__gnu_local_gp" && $3 != "_gp_disp") {
printf "%s in %s is not defined\n", $3, $2 >"/dev/stderr"; printf "%s in %s is not defined\n", $3, $2 >"/dev/stderr";
error++; error++;
}
}
else {
printf "error: %u: unrecognized input format\n", lineno;
error++;
break;
} }
}
else {
printf "error: %u: unrecognized input format\n", NR;
error++;
} }
} }
-4
View File
@@ -154,8 +154,6 @@ label_get_minimal_size (void *vself, unsigned *width, unsigned *height)
+ grub_font_get_descent (self->font)); + grub_font_get_descent (self->font));
} }
#pragma GCC diagnostic ignored "-Wformat-nonliteral"
static void static void
label_set_state (void *vself, int visible, int start __attribute__ ((unused)), label_set_state (void *vself, int visible, int start __attribute__ ((unused)),
int current, int end __attribute__ ((unused))) int current, int end __attribute__ ((unused)))
@@ -237,8 +235,6 @@ label_set_property (void *vself, const char *name, const char *value)
return GRUB_ERR_NONE; return GRUB_ERR_NONE;
} }
#pragma GCC diagnostic error "-Wformat-nonliteral"
static struct grub_gui_component_ops label_ops = static struct grub_gui_component_ops label_ops =
{ {
.destroy = label_destroy, .destroy = label_destroy,
-4
View File
@@ -183,8 +183,6 @@ draw_pixmap_bar (grub_gui_progress_bar_t self)
} }
} }
#pragma GCC diagnostic ignored "-Wformat-nonliteral"
static void static void
draw_text (grub_gui_progress_bar_t self) draw_text (grub_gui_progress_bar_t self)
{ {
@@ -214,8 +212,6 @@ draw_text (grub_gui_progress_bar_t self)
} }
} }
#pragma GCC diagnostic error "-Wformat-nonliteral"
static void static void
progress_bar_paint (void *vself, const grub_video_rect_t *region) progress_bar_paint (void *vself, const grub_video_rect_t *region)
{ {
Loaded 100 of 358 files, more files were not shown because too many files have changed in this diff. Show more