# Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: address@hidden # target_branch: ../mainline/ # testament_sha1: 58a6119f369683840d67a9b8a1fa98839f0dcbf7 # timestamp: 2010-05-26 17:49:59 +0530 # base_revision_id: address@hidden # db1ym880qz05yxpg # # Begin patch === modified file 'Makefile.in' --- Makefile.in 2010-05-18 11:55:26 +0000 +++ Makefile.in 2010-05-25 10:39:03 +0000 @@ -44,7 +44,6 @@ # Internationalization library. LIBINTL = @LIBINTL@ -TARGET_NO_MODULES = @TARGET_NO_MODULES@ # Util library. LIBUTIL = @LIBUTIL@ @@ -187,17 +186,10 @@ -include $(wildcard $(GRUB_CONTRIB)/*/conf/common.mk) endif -ifeq ($(TARGET_NO_MODULES), yes) - TARGET_CFLAGS += -DGRUB_TARGET_NO_MODULES=1 - CFLAGS += -DGRUB_TARGET_NO_MODULES=1 -endif - ### General targets. CLEANFILES += $(pkglib_DATA) $(pkgdata_DATA) po/*.mo -ifneq ($(TARGET_NO_MODULES), yes) pkglib_DATA += moddep.lst command.lst fs.lst partmap.lst parttool.lst handler.lst video.lst crypto.lst terminal.lst -endif moddep.lst: $(DEFSYMFILES) $(UNDSYMFILES) genmoddep.awk cat $(DEFSYMFILES) /dev/null \ | $(AWK) -f $(srcdir)/genmoddep.awk $(UNDSYMFILES) > $@ \ @@ -298,7 +290,7 @@ ) > $@ pkglib_BUILDDIR += config.h grub_script.tab.h -all-local: $(PROGRAMS) $(GRUB_EMU) $(PKGLIB) $(PKGDATA) $(SCRIPTS) $(INFOS) $(MKFILES) $(foreach lang, $(LINGUAS), po/$(lang).mo) +all-local: $(PROGRAMS) $(GRUB_EMU) $(GRUB_EMU_LITE) $(PKGLIB) $(PKGDATA) $(SCRIPTS) $(INFOS) $(MKFILES) $(foreach lang, $(LINGUAS), po/$(lang).mo) install: install-local @@ -319,7 +311,7 @@ $(INSTALL_DATA) $$dir$$file $(DESTDIR)$(pkgdatadir)/$$dest; \ done $(SHELL) $(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(mandir)/man1 - @list='$(bin_UTILITIES) $(GRUB_EMU)'; for file in $$list; do \ + @list='$(bin_UTILITIES) $(GRUB_EMU) $(GRUB_EMU_LITE)'; for file in $$list; do \ if test -f "$$file"; then dir=; else dir="$(srcdir)/"; fi; \ dest="`echo $$file | sed 's,.*/,,' | sed '$(transform)'`"; \ $(INSTALL_PROGRAM) $$dir$$file $(DESTDIR)$(bindir)/$$dest; \ @@ -395,7 +387,7 @@ dest="`echo $$file | sed 's,.*/,,'`"; \ rm -f $(DESTDIR)$(pkgdatadir)/$$dest; \ done - @list='$(bin_UTILITIES) $(bin_SCRIPTS) $(GRUB_EMU)'; for file in $$list; do \ + @list='$(bin_UTILITIES) $(bin_SCRIPTS) $(GRUB_EMU) $(GRUB_EMU_LITE)'; for file in $$list; do \ dest="`echo $$file | sed 's,.*/,,' | sed '$(transform)'`"; \ rm -f $(DESTDIR)$(bindir)/$$dest; \ rm -f $(DESTDIR)$(mandir)/man1/$$dest.1; \ === modified file 'commands/parttool.c' --- commands/parttool.c 2010-05-03 11:17:12 +0000 +++ commands/parttool.c 2010-05-04 04:17:48 +0000 @@ -175,7 +175,7 @@ } /* Load modules. */ -#if !GRUB_NO_MODULES + if (! grub_no_autoload) { const char *prefix; prefix = grub_env_get ("prefix"); @@ -233,7 +233,6 @@ /* Ignore errors. */ grub_errno = GRUB_ERR_NONE; } -#endif if (argc == 1) return show_help (); === modified file 'conf/any-emu.rmk' --- conf/any-emu.rmk 2010-05-06 03:15:39 +0000 +++ conf/any-emu.rmk 2010-05-26 11:23:43 +0000 @@ -1,6 +1,9 @@ # -*- makefile -*- -COMMON_CFLAGS += -nostdinc -isystem $(shell $(TARGET_CC) -print-file-name=include) +ifeq ($(target_cpu), sparc64) +COMMON_CFLAGS += -mno-app-regs +COMMON_LDFLAGS += -mno-relax +endif kernel_img_RELOCATABLE = yes pkglib_PROGRAMS = kernel.img @@ -20,16 +23,15 @@ kernel_img_LDFLAGS = $(COMMON_LDFLAGS) TARGET_NO_STRIP = yes -ifneq ($(TARGET_NO_MODULES), yes) -kernel_img_SOURCES += symlist.c kern/$(target_cpu)/dl.c -ifneq ($(target_cpu), i386) -ifneq ($(target_cpu), x86_64) -kernel_img_SOURCES += kern/$(target_cpu)/cache.S -endif -endif -else -kernel_img_SOURCES += grub_emu_init.c -endif +noinst_MODULES = emu-full.mod +emu_full_mod_SOURCES = kern/emu/full.c +emu_full_mod_CFLAGS = $(COMMON_CFLAGS) +emu_full_mod_LDFLAGS = $(COMMON_LDFLAGS) + +noinst_MODULES = emu-lite.mod +emu_lite_mod_SOURCES = kern/emu/lite.c kern/emu/cache.S symlist.c +emu_lite_mod_CFLAGS = $(COMMON_CFLAGS) +emu_lite_mod_LDFLAGS = $(COMMON_LDFLAGS) # For halt.mod. pkglib_MODULES += halt.mod @@ -45,6 +47,9 @@ endif grub_emu_LDFLAGS = $(LIBCURSES) +ifeq ($(target_cpu), sparc64) +grub_emu_LDFLAGS += -m64 -melf64_sparc -mno-relax +endif ifeq ($(enable_grub_emu_usb), yes) kernel_img_HEADERS += libusb.h @@ -102,13 +107,16 @@ rm -f $@; echo $(pkglib_MODULES) | sh $(srcdir)/genemuinit.sh $(NM) > $@ DISTCLEANFILES += grub_emu_init.c +grub_emu_init.o: grub_emu_init.c grub_emu_init.h + rm -f $@; $(TARGET_CC) $(TARGET_CPPFLAGS) $(TARGET_CFLAGS) -DGRUB_FILE=\"grub_init.c\" -c -o $@ $< +CLEANFILES += grub_emu_init.o + +CLEANFILES += grub-emu-lite +grub-emu-lite: $(pkglib_PROGRAMS) emu-lite.mod + $(CC) -o $@ $^ $(grub_emu_LDFLAGS) $(LDFLAGS) +GRUB_EMU_LITE=grub-emu-lite + CLEANFILES += grub-emu -ifneq ($(TARGET_NO_MODULES), yes) -grub-emu: $(pkglib_PROGRAMS) - $(CC) -o $@ $^ $(grub_emu_LDFLAGS) $(LDFLAGS) -else -grub-emu: $(pkglib_MODULES) $(pkglib_PROGRAMS) - $(CC) -o $@ $^ $(grub_emu_LDFLAGS) $(LDFLAGS) -endif +grub-emu: $(pkglib_MODULES) $(pkglib_PROGRAMS) emu-full.mod grub_emu_init.o + $(CC) -o $@ $^ $(grub_emu_LDFLAGS) $(LDFLAGS) GRUB_EMU=grub-emu - === modified file 'configure.ac' --- configure.ac 2010-05-18 11:33:35 +0000 +++ configure.ac 2010-05-26 11:23:43 +0000 @@ -54,14 +54,12 @@ amd64) target_cpu=x86_64 ;; sparc) target_cpu=sparc64 ;; mipsel|mips64el) - target_cpu=mips; - TARGET_CFLAGS="$TARGET_CFLAGS -DGRUB_CPU_MIPSEL=1"; - CFLAGS="$CFLAGS -DGRUB_CPU_MIPSEL=1"; + target_cpu=mips; + cpu_CPPFLAGS="-DGRUB_CPU_MIPSEL=1"; ;; mips|mips64) - target_cpu=mips; - TARGET_CFLAGS="$TARGET_CFLAGS -DGRUB_CPU_MIPS=1"; - CFLAGS="$CFLAGS -DGRUB_CPU_MIPS=1"; + target_cpu=mips; + cpu_CPPFLAGS="-DGRUB_CPU_MIPS=1"; ;; esac @@ -136,25 +134,29 @@ esac case "$platform" in - coreboot) machine_CFLAGS="-DGRUB_MACHINE_COREBOOT=1" ;; - multiboot) machine_CFLAGS="-DGRUB_MACHINE_MULTIBOOT=1" ;; - efi) machine_CFLAGS="-DGRUB_MACHINE_EFI=1" ;; - ieee1275) machine_CFLAGS="-DGRUB_MACHINE_IEEE1275=1" ;; - qemu) machine_CFLAGS="-DGRUB_MACHINE_QEMU=1" ;; - pc) machine_CFLAGS="-DGRUB_MACHINE_PCBIOS=1" ;; - emu) machine_CFLAGS="-DGRUB_MACHINE_EMU=1" ;; - yeeloong) machine_CFLAGS="-DGRUB_MACHINE_MIPS_YEELOONG=1 -DGRUB_MACHINE_MIPS_BONITO=1" ;; - qemu-mips) machine_CFLAGS="-DGRUB_MACHINE_MIPS_QEMU_MIPS=1 -DGRUB_MACHINE_MIPS_BONITO=1" ;; + coreboot) machine_CPPFLAGS="-DGRUB_MACHINE_COREBOOT=1" ;; + multiboot) machine_CPPFLAGS="-DGRUB_MACHINE_MULTIBOOT=1" ;; + efi) machine_CPPFLAGS="-DGRUB_MACHINE_EFI=1" ;; + ieee1275) machine_CPPFLAGS="-DGRUB_MACHINE_IEEE1275=1" ;; + qemu) machine_CPPFLAGS="-DGRUB_MACHINE_QEMU=1" ;; + pc) machine_CPPFLAGS="-DGRUB_MACHINE_PCBIOS=1" ;; + emu) machine_CPPFLAGS="-DGRUB_MACHINE_EMU=1" ;; + yeeloong) machine_CPPFLAGS="-DGRUB_MACHINE_MIPS_YEELOONG=1 -DGRUB_MACHINE_MIPS_BONITO=1" ;; + qemu-mips) machine_CPPFLAGS="-DGRUB_MACHINE_MIPS_QEMU_MIPS=1 -DGRUB_MACHINE_MIPS_BONITO=1" ;; esac case "$target_cpu" in - mips) machine_CFLAGS="$machine_CFLAGS -DGRUB_MACHINE_MIPS=1" ;; - sparc64) machine_CFLAGS="$machine_CFLAGS -DGRUB_MACHINE_SPARC64=1" ;; + i386) cpu_CPPFLAGS="$cpu_CPPFLAGS -DGRUB_CPU_I386";; + x86_64) cpu_CPPFLAGS="$cpu_CPPFLAGS -DGRUB_CPU_X86_64";; + powerpc) cpu_CPPFLAGS="$cpu_CPPFLAGS -DGRUB_CPU_POWERPC";; + mips) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MIPS=1" ;; # cpu_CPPFLAGS handled above + sparc64) cpu_CPPFLAGS="$cpu_CPPFLAGS -DGRUB_CPU_SPARC64"; + machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_SPARC64=1" ;; esac -machine_CFLAGS="$machine_CFLAGS -DMACHINE=`echo ${target_cpu}_$platform | sed y,abcdefghijklmnopqrstuvwxyz,ABCDEFGHIJKLMNOPQRSTUVWXYZ,`" +machine_CPPFLAGS="$machine_CPPFLAGS -DMACHINE=`echo ${target_cpu}_$platform | sed y,abcdefghijklmnopqrstuvwxyz,ABCDEFGHIJKLMNOPQRSTUVWXYZ,`" -CFLAGS="$CFLAGS $machine_CFLAGS" -TARGET_ASFLAGS="$TARGET_ASFLAGS $machine_CFLAGS" -TARGET_CFLAGS="$TARGET_CFLAGS $machine_CFLAGS" +CPPFLAGS="$CPPFLAGS $cpu_CPPFLAGS $machine_CPPFLAGS" +TARGET_ASFLAGS="$TARGET_ASFLAGS $cpu_CPPFLAGS $machine_CPPFLAGS" +TARGET_CFLAGS="$TARGET_CFLAGS $cpu_CPPFLAGS $machine_CPPFLAGS" AC_SUBST(host_cpu) AC_SUBST(host_os) @@ -609,10 +611,6 @@ [AS_HELP_STRING([--enable-grub-emu-pci], [build and install the `grub-emu' debugging utility with PCI support (potentially dangerous) (default=no)])]) -AC_ARG_ENABLE([grub-emu-modules], - [AS_HELP_STRING([--enable-grub-emu-modules], - [Support module loading in `grub-emu' debugging utility (default=no)])]) - if test "$platform" = emu; then missing_ncurses= [# Check for curses libraries.] @@ -631,19 +629,6 @@ AC_MSG_ERROR([grub-emu can't be compiled without ncurses]) fi -if test x"$enable_grub_emu_modules" = xyes ; then - TARGET_NO_MODULES=no -else - TARGET_NO_MODULES=yes -fi -AC_SUBST(TARGET_NO_MODULES) - -if test "$TARGET_NO_MODULES" = yes ; then - # Do not convert modules, otherwise linkage may fail (Cygwin only). - # FIXME: Should be checked above before TARGET_OBJ2ELF is set first. - TARGET_OBJ2ELF= -fi - if test x"$enable_grub_emu_usb" = xno ; then grub_emu_usb_excuse="explicitly disabled" fi @@ -837,11 +822,6 @@ else echo PCI support for grub-emu: No "($grub_emu_pci_excuse)" fi -if [ x"$TARGET_NO_MODULES" = xno ]; then -echo Module support for grub-emu: Yes -else -echo Module support for grub-emu: No -fi fi if [ x"$enable_mm_debug" = xyes ]; then echo With memory debugging: Yes === modified file 'genmk.rb' --- genmk.rb 2010-04-09 23:25:46 +0000 +++ genmk.rb 2010-05-04 04:17:48 +0000 @@ -143,13 +143,6 @@ MOSTLYCLEAN_MODULE_TARGETS += address@hidden@rule_count} UNDSYMFILES += #{undsym} -ifeq ($(TARGET_NO_MODULES), yes) address@hidden: #{pre_obj} $(TARGET_OBJ2ELF) - -rm -f $@ - $(TARGET_CC) $(#{prefix}_LDFLAGS) $(TARGET_LDFLAGS) -Wl,-r,-d -o $@ #{pre_obj} - if test ! -z \"$(TARGET_OBJ2ELF)\"; then ./$(TARGET_OBJ2ELF) $@ || (rm -f $@; exit 1); fi - if test x$(TARGET_NO_STRIP) != xyes ; then $(STRIP) --strip-unneeded -K grub_mod_init -K grub_mod_fini -K _grub_mod_init -K _grub_mod_fini -R .note -R .comment $@; fi -else ifneq ($(TARGET_APPLE_CC),1) address@hidden: #{pre_obj} #{mod_obj} $(TARGET_OBJ2ELF) -rm -f $@ @@ -164,7 +157,6 @@ $(OBJCONV) -f$(TARGET_MODULE_FORMAT) -nr:_grub_mod_init:grub_mod_init -nr:_grub_mod_fini:grub_mod_fini -wd1106 -ew2030 -ew2050 -nu -nd address@hidden $@ -rm -f address@hidden endif -endif #{pre_obj}: $(#{prefix}_DEPENDENCIES) #{objs_str} -rm -f $@ === modified file 'include/grub/cache.h' --- include/grub/cache.h 2010-02-06 23:52:31 +0000 +++ include/grub/cache.h 2010-05-26 04:26:59 +0000 @@ -23,7 +23,8 @@ #include #include -#if defined (__i386__) || defined (__x86_64__) +#if defined (__i386__) || defined (__x86_64__) || \ + (defined (GRUB_MACHINE_EMU) && GRUB_MACHINE_EMU) static inline void grub_arch_sync_caches (void *address __attribute__ ((unused)), grub_size_t len __attribute__ ((unused))) === modified file 'include/grub/dl.h' --- include/grub/dl.h 2010-04-27 08:27:14 +0000 +++ include/grub/dl.h 2010-05-25 10:39:03 +0000 @@ -91,22 +91,17 @@ int EXPORT_FUNC(grub_dl_unload) (grub_dl_t mod); void grub_dl_unload_unneeded (void); void grub_dl_unload_all (void); -#if defined (GRUB_UTIL) || defined (GRUB_TARGET_NO_MODULES) -#define GRUB_NO_MODULES 1 -#else -#define GRUB_NO_MODULES 0 -#endif int EXPORT_FUNC(grub_dl_ref) (grub_dl_t mod); int EXPORT_FUNC(grub_dl_unref) (grub_dl_t mod); void EXPORT_FUNC(grub_dl_iterate) (int (*hook) (grub_dl_t mod)); grub_dl_t EXPORT_FUNC(grub_dl_get) (const char *name); -grub_err_t grub_dl_register_symbol (const char *name, void *addr, - grub_dl_t mod); +grub_err_t EXPORT_FUNC(grub_dl_register_symbol) (const char *name, void *addr, + grub_dl_t mod); grub_err_t grub_arch_dl_check_header (void *ehdr); grub_err_t grub_arch_dl_relocate_symbols (grub_dl_t mod, void *ehdr); -#if defined (_mips) && ! GRUB_NO_MODULES +#if defined (_mips) && (! defined (GRUB_MACHINE_EMU) || ! GRUB_MACHINE_EMU) #define GRUB_LINKER_HAVE_INIT 1 void grub_arch_dl_init_linker (void); #endif === modified file 'include/grub/emu/misc.h' --- include/grub/emu/misc.h 2010-05-06 03:15:39 +0000 +++ include/grub/emu/misc.h 2010-05-26 04:28:23 +0000 @@ -23,6 +23,7 @@ extern int verbosity; extern const char *program_name; +void grub_emu_init (void); void grub_init_all (void); void grub_fini_all (void); @@ -46,5 +47,6 @@ #endif char * EXPORT_FUNC(xasprintf) (const char *fmt, ...); +char * canonicalize_file_name (const char *path); #endif /* GRUB_EMU_MISC_H */ === modified file 'include/grub/misc.h' --- include/grub/misc.h 2010-04-11 19:24:21 +0000 +++ include/grub/misc.h 2010-05-04 04:17:48 +0000 @@ -50,6 +50,9 @@ /* XXX: If grub_memmove is too slow, we must implement grub_memcpy. */ #define grub_memcpy(d,s,n) grub_memmove ((d), (s), (n)) +/* Flag to control module autoloading in normal mode. */ +extern int EXPORT_VAR(grub_no_autoload); + void *EXPORT_FUNC(grub_memmove) (void *dest, const void *src, grub_size_t n); char *EXPORT_FUNC(grub_strcpy) (char *dest, const char *src); char *EXPORT_FUNC(grub_strncpy) (char *dest, const char *src, int c); === added file 'kern/emu/cache.S' --- kern/emu/cache.S 1970-01-01 00:00:00 +0000 +++ kern/emu/cache.S 2010-05-06 06:08:35 +0000 @@ -0,0 +1,19 @@ +#ifndef GRUB_MACHINE_EMU +#error "This source is only meant for grub-emu platform" +#endif + +#if defined(GRUB_CPU_I386) +/* Nothing is necessary. */ +#elif defined(GRUB_CPU_X86_64) +/* Nothing is necessary. */ +#elif defined(GRUB_CPU_SPARC64) +#include "../sparc64/cache.S" +#elif defined(GRUB_CPU_MIPS) +#include "../mips/cache.S" +#elif defined(GRUB_CPU_MIPSEL) +#include "../mips/cache.S" +#elif defined(GRUB_CPU_POWERPC) +#include "../powerpc/cache.S" +#else +#error "No target cpu type is defined" +#endif === added file 'kern/emu/full.c' --- kern/emu/full.c 1970-01-01 00:00:00 +0000 +++ kern/emu/full.c 2010-05-06 06:08:35 +0000 @@ -0,0 +1,50 @@ +/* + * GRUB -- GRand Unified Bootloader + * Copyright (C) 2010 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 . + */ + +#include +#include +#include +#include +#include +#include + +void +grub_register_exported_symbols (void) +{ +} + +grub_err_t +grub_arch_dl_check_header (void *ehdr) +{ + (void) ehdr; + return GRUB_ERR_BAD_MODULE; +} + +grub_err_t +grub_arch_dl_relocate_symbols (grub_dl_t mod, void *ehdr) +{ + (void) mod; + (void) ehdr; + return GRUB_ERR_BAD_MODULE; +} + +void +grub_emu_init (void) +{ + grub_no_autoload = 1; +} === added file 'kern/emu/lite.c' --- kern/emu/lite.c 1970-01-01 00:00:00 +0000 +++ kern/emu/lite.c 2010-05-06 06:08:35 +0000 @@ -0,0 +1,42 @@ +#include +#include + +#ifndef GRUB_MACHINE_EMU +#error "This source is only meant for grub-emu platform" +#endif + +#if defined(GRUB_CPU_I386) +#include "../i386/dl.c" +#elif defined(GRUB_CPU_X86_64) +#include "../x86_64/dl.c" +#elif defined(GRUB_CPU_SPARC64) +#include "../sparc64/dl.c" +#elif defined(GRUB_CPU_MIPS) +#include "../mips/dl.c" +#elif defined(GRUB_CPU_MIPSEL) +#include "../mips/dl.c" +#elif defined(GRUB_CPU_POWERPC) +#include "../powerpc/dl.c" +#else +#error "No target cpu type is defined" +#endif + +/* grub-emu-lite supports dynamic module loading, so it won't have any + embedded modules. */ +void +grub_init_all (void) +{ + return; +} + +void +grub_fini_all (void) +{ + return; +} + +void +grub_emu_init (void) +{ + return; +} === modified file 'kern/emu/main.c' --- kern/emu/main.c 2010-05-04 03:39:03 +0000 +++ kern/emu/main.c 2010-05-04 04:17:48 +0000 @@ -57,25 +57,6 @@ return 0; } -#if GRUB_NO_MODULES -grub_err_t -grub_arch_dl_check_header (void *ehdr) -{ - (void) ehdr; - - return GRUB_ERR_BAD_MODULE; -} - -grub_err_t -grub_arch_dl_relocate_symbols (grub_dl_t mod, void *ehdr) -{ - (void) mod; - (void) ehdr; - - return GRUB_ERR_BAD_MODULE; -} -#endif - void grub_reboot (void) { @@ -154,10 +135,7 @@ void grub_hostfs_fini (void); void grub_host_init (void); void grub_host_fini (void); -#if GRUB_NO_MODULES -void grub_init_all (void); -void grub_fini_all (void); -#endif +void grub_emu_init (void); int main (int argc, char *argv[]) @@ -216,6 +194,7 @@ } signal (SIGINT, SIG_IGN); + grub_emu_init (); grub_console_init (); grub_host_init (); grub_hostfs_init (); @@ -223,9 +202,7 @@ /* XXX: This is a bit unportable. */ grub_util_biosdisk_init (dev_map); -#if GRUB_NO_MODULES grub_init_all (); -#endif /* Make sure that there is a root device. */ if (! root_dev) @@ -255,9 +232,7 @@ if (setjmp (main_env) == 0) grub_main (); -#if GRUB_NO_MODULES grub_fini_all (); -#endif grub_hostfs_fini (); grub_host_fini (); @@ -287,10 +262,3 @@ } #endif - -#if GRUB_NO_MODULES -void -grub_register_exported_symbols (void) -{ -} -#endif === modified file 'kern/main.c' --- kern/main.c 2010-05-01 19:32:23 +0000 +++ kern/main.c 2010-05-04 04:17:48 +0000 @@ -30,6 +30,8 @@ #include #include +int grub_no_autoload; + void grub_module_iterate (int (*hook) (struct grub_module_header *header)) { === modified file 'normal/main.c' --- normal/main.c 2010-05-01 18:28:07 +0000 +++ normal/main.c 2010-05-04 04:17:48 +0000 @@ -476,10 +476,13 @@ static void read_lists (const char *val) { - read_command_list (val); - read_fs_list (val); - read_crypto_list (val); - read_terminal_list (val); + if (! grub_no_autoload) + { + read_command_list (val); + read_fs_list (val); + read_crypto_list (val); + read_terminal_list (val); + } } static char * === modified file 'util/misc.c' --- util/misc.c 2010-05-20 22:16:10 +0000 +++ util/misc.c 2010-05-26 04:28:23 +0000 @@ -185,12 +185,10 @@ { } -#if GRUB_NO_MODULES void grub_register_exported_symbols (void) { } -#endif #ifdef __MINGW32__ @@ -214,14 +212,6 @@ #endif -#if !(defined (__i386__) || defined (__x86_64__)) && GRUB_NO_MODULES -void -grub_arch_sync_caches (void *address __attribute__ ((unused)), - grub_size_t len __attribute__ ((unused))) -{ -} -#endif - #ifdef __MINGW32__ void sync (void) # Begin bundle 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 OZJlEJ4fzF3JFOFCQFriqvQ=