Updated patch with review comments (on IRC) is attached.
-- bvk.chaitanya
# Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: bvk.gro...@gmail.com-20100602091507-1ue7h482akbs3w5b # target_branch: ../mainline/ # testament_sha1: b64ba6563eb16fb1ff5ae97d2102dc8f20c6b61d # timestamp: 2010-06-02 14:51:49 +0530 # base_revision_id: phco...@gmail.com-20100531190101-7nv9wk13lovmlg25 # # 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-06-02 09:15:07 +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-28 13:48:45 +0000 +++ conf/any-emu.rmk 2010-06-02 03:42:52 +0000 @@ -1,5 +1,10 @@ # -*- makefile -*- +ifeq ($(target_cpu), sparc64) +COMMON_CFLAGS += -mno-app-regs +COMMON_LDFLAGS += -mno-relax +endif + kernel_img_RELOCATABLE = yes pkglib_PROGRAMS = kernel.img kernel_img_SOURCES = kern/device.c kern/disk.c kern/dl.c kern/env.c \ @@ -18,17 +23,6 @@ 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 - # For halt.mod. pkglib_MODULES += halt.mod halt_mod_SOURCES = commands/halt.c @@ -43,6 +37,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 @@ -100,13 +97,32 @@ 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 + +kern_emu_lite.o: kern/emu/lite.c + $(TARGET_CC) $(COMMON_CFLAGS) $(TARGET_CPPFLAGS) $(TARGET_CFLAGS) -DGRUB_FILE=\"kern/emu/lite.c\" -c -o $@ $< +CLEANFILES += kern_emu_lite.o + +kern_emu_full.o: kern/emu/full.c + $(TARGET_CC) $(COMMON_CFLAGS) $(TARGET_CPPFLAGS) $(TARGET_CFLAGS) -DGRUB_FILE=\"kern/emu/full.c\" -c -o $@ $< +CLEANFILES += kern_emu_full.o + +kern_emu_cache.o: kern/emu/cache.S + $(TARGET_CC) $(COMMON_CFLAGS) $(TARGET_CPPFLAGS) $(TARGET_CFLAGS) $(TARGET_ASFLAGS) -DGRUB_FILE=\"kern/emu/cache.S\" -c -o $@ $< +CLEANFILES += kern_emu_cache.o + +symlist.o: symlist.c + $(TARGET_CC) $(COMMON_CFLAGS) $(TARGET_CPPFLAGS) $(TARGET_CFLAGS) -DGRUB_FILE=\"symlist.c\" -c -o $@ $< +CLEANFILES += symlist.o + +CLEANFILES += grub-emu-lite +grub-emu-lite: kern_emu_lite.o kern_emu_cache.o symlist.o kernel.img + $(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: $(PREMODFILES) kern_emu_full.o grub_emu_init.o kernel.img + $(CC) -o $@ $^ $(grub_emu_LDFLAGS) $(LDFLAGS) GRUB_EMU=grub-emu - === modified file 'configure.ac' --- configure.ac 2010-05-28 17:13:48 +0000 +++ configure.ac 2010-06-02 08:21:05 +0000 @@ -609,10 +609,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 +627,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 +820,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-28 00:04:31 +0000 @@ -143,13 +143,6 @@ 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,11 +157,11 @@ $(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 $@ $(TARGET_CC) $(#{prefix}_LDFLAGS) $(TARGET_LDFLAGS) -Wl,-r,-d -o $@ #{objs_str} +PREMODFILES += #{pre_obj} #{mod_obj}: #{mod_src} $(TARGET_CC) $(TARGET_CPPFLAGS) $(TARGET_CFLAGS) $(#{prefix}_CFLAGS) -DGRUB_FILE=\\\"#{mod_src}\\\" -c -o $@ $< === modified file 'include/grub/dl.h' --- include/grub/dl.h 2010-04-27 08:27:14 +0000 +++ include/grub/dl.h 2010-06-02 09:15:07 +0000 @@ -91,11 +91,6 @@ 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)); @@ -106,7 +101,7 @@ 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) #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-28 13:48:45 +0000 +++ include/grub/emu/misc.h 2010-06-02 09:15:07 +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); === modified file 'include/grub/misc.h' --- include/grub/misc.h 2010-04-11 19:24:21 +0000 +++ include/grub/misc.h 2010-06-02 09:15:07 +0000 @@ -308,4 +308,11 @@ void EXPORT_FUNC (grub_halt) (void); #endif +#ifdef GRUB_MACHINE_EMU +/* Flag to control module autoloading in normal mode. */ +extern int EXPORT_VAR(grub_no_autoload); +#else +#define grub_no_autoload 0 +#endif + #endif /* ! GRUB_MISC_HEADER */ === added file 'kern/emu/cache.S' --- kern/emu/cache.S 1970-01-01 00:00:00 +0000 +++ kern/emu/cache.S 2010-06-02 08:21:05 +0000 @@ -0,0 +1,15 @@ +#ifndef GRUB_MACHINE_EMU +#error "This source is only meant for grub-emu platform" +#endif + +#if defined(__i386__) || defined(__x86_64__) +/* Nothing is necessary. */ +#elif defined(__sparc__) +#include "../sparc64/cache.S" +#elif defined(__mips__) +#include "../mips/cache.S" +#elif defined(__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 <http://www.gnu.org/licenses/>. + */ + +#include <config.h> +#include <grub/dl.h> +#include <grub/env.h> +#include <grub/kernel.h> +#include <grub/misc.h> +#include <grub/emu/misc.h> + +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-06-02 08:21:05 +0000 @@ -0,0 +1,40 @@ +#include <config.h> +#include <grub/emu/misc.h> + +#ifndef GRUB_MACHINE_EMU +#error "This source is only meant for grub-emu platform" +#endif + +#if defined(__i386__) +#include "../i386/dl.c" +#elif defined(__x86_64__) +#include "../x86_64/dl.c" +#elif defined(__sparc__) +#include "../sparc64/dl.c" +#elif defined(__mips__) +#include "../mips/dl.c" +#elif defined(__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-06-02 09:15:07 +0000 @@ -51,31 +51,14 @@ /* Store the prefix specified by an argument. */ static char *prefix = NULL; +int grub_no_autoload; + grub_addr_t 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 +137,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 +196,7 @@ } signal (SIGINT, SIG_IGN); + grub_emu_init (); grub_console_init (); grub_host_init (); grub_hostfs_init (); @@ -223,9 +204,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 +234,7 @@ if (setjmp (main_env) == 0) grub_main (); -#if GRUB_NO_MODULES grub_fini_all (); -#endif grub_hostfs_fini (); grub_host_fini (); @@ -287,10 +264,3 @@ } #endif - -#if GRUB_NO_MODULES -void -grub_register_exported_symbols (void) -{ -} -#endif === modified file 'normal/main.c' --- normal/main.c 2010-05-31 18:46:16 +0000 +++ normal/main.c 2010-06-02 09:15:07 +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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 7kinChIFc1ZRQA==
_______________________________________________ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel