Index: genmk.rb =================================================================== RCS file: /cvsroot/grub/grub2/genmk.rb,v retrieving revision 1.8 diff -u -r1.8 genmk.rb --- genmk.rb 4 Apr 2004 13:45:59 -0000 1.8 +++ genmk.rb 9 Oct 2004 15:31:20 -0000 @@ -117,12 +117,12 @@ address@hidden: #{pre_obj} #{mod_obj} -rm -f $@ - $(LD) -r -o $@ $^ + $(LD) -r -d -o $@ $^ $(STRIP) --strip-unneeded -K grub_mod_init -K grub_mod_fini -R .note -R .comment $@ #{pre_obj}: #{objs_str} -rm -f $@ - $(LD) -r -o $@ $^ + $(LD) -r -d -o $@ $^ #{mod_obj}: #{mod_src} $(CC) $(CPPFLAGS) $(CFLAGS) $(#{prefix}_CFLAGS) -c -o $@ $< Index: include/grub/dl.h =================================================================== RCS file: /cvsroot/grub/grub2/include/grub/dl.h,v retrieving revision 1.6 diff -u -r1.6 dl.h --- include/grub/dl.h 4 Apr 2004 13:46:00 -0000 1.6 +++ include/grub/dl.h 9 Oct 2004 15:31:21 -0000 @@ -26,13 +26,13 @@ #include #define GRUB_MOD_INIT \ -static void grub_mod_init (grub_dl_t mod) __attribute__ ((unused)); \ +static void grub_mod_init (grub_dl_t mod) __attribute__ ((used)); \ static void \ grub_mod_init (grub_dl_t mod) #define GRUB_MOD_FINI \ -static void grub_mod_fini (void) __attribute__ ((unused)); \ +static void grub_mod_fini (void) __attribute__ ((used)); \ static void \ grub_mod_fini (void) #define GRUB_MOD_NAME(name) \ Index: kern/dl.c =================================================================== RCS file: /cvsroot/grub/grub2/kern/dl.c,v retrieving revision 1.7 diff -u -r1.7 dl.c --- kern/dl.c 4 Apr 2004 13:46:01 -0000 1.7 +++ kern/dl.c 9 Oct 2004 15:31:21 -0000 @@ -548,6 +548,8 @@ goto failed; mod = grub_dl_load_core (core, size); + if (! mod) goto failed; + mod->ref_count = 0; failed: