]> git.proxmox.com Git - grub2.git/commitdiff
replace --enable-grub-emu-modules with grub-emu-lite
authorBVK Chaitanya <bvk.groups@gmail.com>
Tue, 4 May 2010 04:17:48 +0000 (09:47 +0530)
committerBVK Chaitanya <bvk.groups@gmail.com>
Tue, 4 May 2010 04:17:48 +0000 (09:47 +0530)
12 files changed:
Makefile.in
commands/parttool.c
conf/any-emu.rmk
configure.ac
genmk.rb
include/grub/dl.h
include/grub/emu/misc.h
include/grub/misc.h
kern/emu/main.c
kern/main.c
normal/main.c
util/misc.c

index 822a087971024801feca82749d9134901206c33c..513deb51646506b4bfda5e0d0e3aa33f8e18e014 100644 (file)
@@ -44,7 +44,6 @@ pkglibdir =  $(libdir)/`echo @PACKAGE_TARNAME@/$(target_cpu)-$(platform) | sed '
 
 # Internationalization library.
 LIBINTL = @LIBINTL@
-TARGET_NO_MODULES = @TARGET_NO_MODULES@
 
 # Util library.
 LIBUTIL = @LIBUTIL@
@@ -187,17 +186,10 @@ include $(srcdir)/conf/tests.mk
 -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 @@ build_env.mk: Makefile
        ) > $@
 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-local: all
          $(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 @@ uninstall:
          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; \
index 528cf43d75bc234977553aca4d5d0c82ca5453c6..f2a62e581d775417de10ac34a59ae23f65bc6d69 100644 (file)
@@ -175,7 +175,7 @@ grub_cmd_parttool (grub_command_t cmd __attribute__ ((unused)),
     }
 
   /* Load modules. */
-#if !GRUB_NO_MODULES
+  if (! grub_no_autoload)
   {
     const char *prefix;
     prefix = grub_env_get ("prefix");
@@ -233,7 +233,6 @@ grub_cmd_parttool (grub_command_t cmd __attribute__ ((unused)),
     /* Ignore errors.  */
     grub_errno = GRUB_ERR_NONE;
   }
-#endif
 
   if (argc == 1)
     return show_help ();
index cb0ec873fbdeedbef07e04efad7c8361d9d6a2e8..4e940181b6937eac7cbc1252ab7f009515b79a83 100644 (file)
@@ -20,16 +20,13 @@ kernel_img_CFLAGS = $(TARGET_CPPFLAGS) $(TARGET_CFLAGS) -Wno-undef -I$(srcdir)/g
 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)
+
+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)
 
 # For halt.mod.
 pkglib_MODULES += halt.mod
@@ -102,13 +99,16 @@ grub_emu_init.c: genemuinit.sh $(pkglib_MODULES) grub_emu_init.h
        rm -f $@; echo $(pkglib_MODULES) | sh $(srcdir)/genemuinit.sh $(NM) > $@
 DISTCLEANFILES += grub_emu_init.c
 
-CLEANFILES += grub-emu
-ifneq ($(TARGET_NO_MODULES), yes)
-grub-emu: $(pkglib_PROGRAMS)
+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)
-else
-grub-emu: $(pkglib_MODULES) $(pkglib_PROGRAMS)
+GRUB_EMU_LITE=grub-emu-lite
+
+CLEANFILES += grub-emu
+grub-emu: $(pkglib_MODULES) $(pkglib_PROGRAMS) emu-full.mod grub_emu_init.o
        $(CC) -o $@ $^ $(grub_emu_LDFLAGS) $(LDFLAGS)
-endif
 GRUB_EMU=grub-emu
-
index 4e1dd41d88ef40b22897ad1d6eaa09c173cc9fa1..9462b32a35122dce9ccc49b7b5c2819f952b2297 100644 (file)
@@ -54,14 +54,12 @@ case "$target_cpu" in
   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,24 +134,27 @@ case "$host_os" in
 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
 
-CFLAGS="$CFLAGS $machine_CFLAGS"
-TARGET_ASFLAGS="$TARGET_ASFLAGS $machine_CFLAGS"
-TARGET_CFLAGS="$TARGET_CFLAGS $machine_CFLAGS"
+CPPFLAGS="$CPPFLAGS $cpu_CPPFLAGS $machine_CPPFLAGS"
+TARGET_CFLAGS="$TARGET_CFLAGS $cpu_CPPFLAGS $machine_CPPFLAGS"
 
 AC_SUBST(host_cpu)
 AC_SUBST(host_os)
@@ -608,10 +609,6 @@ AC_ARG_ENABLE([grub-emu-pci],
              [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.]
@@ -630,19 +627,6 @@ if test x"$missing_ncurses" = xtrue ; then
   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
@@ -820,11 +804,6 @@ echo PCI support for grub-emu: Yes
 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
index e62dbd4f6d502ce9dda756e583f7d5a685cc5688..6b5ecd1d44a2fe23cbd86f6814c4d6090f18700e 100644 (file)
--- a/genmk.rb
+++ b/genmk.rb
@@ -143,13 +143,6 @@ mostlyclean-module-#{@name}.#{@rule_count}:
 MOSTLYCLEAN_MODULE_TARGETS += mostlyclean-module-#{@name}.#{@rule_count}
 UNDSYMFILES += #{undsym}
 
-ifeq ($(TARGET_NO_MODULES), yes)
-#{@name}: #{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)
 #{@name}: #{pre_obj} #{mod_obj} $(TARGET_OBJ2ELF)
        -rm -f $@
@@ -164,7 +157,6 @@ else
        $(OBJCONV) -f$(TARGET_MODULE_FORMAT) -nr:_grub_mod_init:grub_mod_init -nr:_grub_mod_fini:grub_mod_fini -wd1106 -ew2030 -ew2050 -nu -nd $@.bin $@
        -rm -f $@.bin
 endif
-endif
 
 #{pre_obj}: $(#{prefix}_DEPENDENCIES) #{objs_str}
        -rm -f $@
index cf5da7fd5be5ab600a73d3e3c74c6685b60bcd9b..fde2e31633580ca4c891f6e8ac3e7439db5a57e9 100644 (file)
@@ -91,22 +91,17 @@ grub_dl_t grub_dl_load_core (void *addr, grub_size_t size);
 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) && ! GRUB_MACHINE_EMU
 #define GRUB_LINKER_HAVE_INIT 1
 void grub_arch_dl_init_linker (void);
 #endif
index 146e64aa9c2b9f8a833effae944810d137d98128..6d7fd88200acb8b8705b5e8f831d14a7e65a277c 100644 (file)
@@ -16,6 +16,7 @@
 extern int verbosity;
 extern const char *program_name;
 
+void grub_emu_init (void);
 void grub_init_all (void);
 void grub_fini_all (void);
 
index 9bfc6974e8127bfce4501ab1477e691569c2aa6f..1ec8bbc5a7a2f68c8b112824aae2b579eaafacf9 100644 (file)
@@ -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);
index fb5dbf19fa2f5c0cf82fca175745c265c72aa2f5..8d6118c93b9ec83806afe26f879bb5661f4b368b 100644 (file)
@@ -57,25 +57,6 @@ grub_arch_modules_addr (void)
   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_init (void);
 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 @@ main (int argc, char *argv[])
     }
 
   signal (SIGINT, SIG_IGN);
+  grub_emu_init ();
   grub_console_init ();
   grub_host_init ();
   grub_hostfs_init ();
@@ -223,9 +202,7 @@ main (int argc, char *argv[])
   /* 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 @@ main (int argc, char *argv[])
   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 @@ grub_millisleep (grub_uint32_t ms)
 }
 
 #endif
-
-#if GRUB_NO_MODULES
-void
-grub_register_exported_symbols (void)
-{
-}
-#endif
index 1fdf4ab07ace4408d62392e19309c940d43065fc..2541d3295db753f6b3ae3c8abbf0a0ef7871be39 100644 (file)
@@ -30,6 +30,8 @@
 #include <grub/reader.h>
 #include <grub/parser.h>
 
+int grub_no_autoload;
+
 void
 grub_module_iterate (int (*hook) (struct grub_module_header *header))
 {
index 4ed17e82cb8001a549bfd2265eb37b925e476c02..2d493b897c6014d5e2b83009055935848bf78e45 100644 (file)
@@ -476,10 +476,13 @@ grub_normal_init_page (struct grub_term_output *term)
 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 *
index 1656d6b5bf50ffad4af63c30aed8d43cb10bde7c..caec60552f23e0573909272c1375fee71b9d912b 100644 (file)
@@ -193,12 +193,10 @@ grub_mm_init_region (void *addr __attribute__ ((unused)),
 {
 }
 
-#if GRUB_NO_MODULES
 void
 grub_register_exported_symbols (void)
 {
 }
-#endif
 
 #ifdef __MINGW32__
 
@@ -222,7 +220,7 @@ grub_millisleep (grub_uint32_t ms)
 
 #endif
 
-#if !(defined (__i386__) || defined (__x86_64__)) && GRUB_NO_MODULES
+#if !(defined (__i386__) || defined (__x86_64__)) && GRUB_MACHINE_EMU
 void
 grub_arch_sync_caches (void *address __attribute__ ((unused)),
                       grub_size_t len __attribute__ ((unused)))