From b38551dabe957864da72ef2e038863b20e6dfc7c Mon Sep 17 00:00:00 2001 From: marco_g Date: Thu, 20 Jan 2005 17:33:09 +0000 Subject: [PATCH] 2005-01-20 Timothy Baldwin * include/grub/dl.h (GRUB_MOD_INIT): Changed `__attribute__ ((unused))' to `__attribute__ ((used))'. (GRUB_MOD_FINI): Likewise. * kern/dl.c (grub_dl_load_file): Fix null pointer dereference. * genmk.rb (PModule): Assign space to common symbols when linking modules. --- ChangeLog | 9 +++++++++ genmk.rb | 4 ++-- include/grub/dl.h | 4 ++-- kern/dl.c | 3 +++ 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 956f1933e..7ccefb7b4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2005-01-20 Timothy Baldwin + + * include/grub/dl.h (GRUB_MOD_INIT): Changed `__attribute__ + ((unused))' to `__attribute__ ((used))'. + (GRUB_MOD_FINI): Likewise. + * kern/dl.c (grub_dl_load_file): Fix null pointer dereference. + * genmk.rb (PModule): Assign space to common symbols when linking + modules. + 2005-01-20 Marco Gerards * include/grub/mm.h (grub_mm_init_region): Change the type of the diff --git a/genmk.rb b/genmk.rb index 6a749c29d..94fe9b3d8 100644 --- a/genmk.rb +++ b/genmk.rb @@ -117,12 +117,12 @@ UNDSYMFILES += #{undsym} #{@name}: #{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 $@ $< diff --git a/include/grub/dl.h b/include/grub/dl.h index a62319596..3ddff6d81 100644 --- a/include/grub/dl.h +++ b/include/grub/dl.h @@ -26,12 +26,12 @@ #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) diff --git a/kern/dl.c b/kern/dl.c index 12a7c3233..e6a172c7a 100644 --- a/kern/dl.c +++ b/kern/dl.c @@ -560,6 +560,9 @@ grub_dl_load_file (const char *filename) goto failed; mod = grub_dl_load_core (core, size); + if (! mod) + goto failed; + mod->ref_count = 0; failed: -- 2.39.5