diff --git a/conf/any-emu.rmk b/conf/any-emu.rmk index 5f6798d79..ffaabcd2f 100644 --- a/conf/any-emu.rmk +++ b/conf/any-emu.rmk @@ -9,10 +9,11 @@ kernel_img_SOURCES = kern/device.c kern/disk.c kern/dl.c kern/env.c \ kern/corecmd.c kern/file.c kern/fs.c kern/main.c kern/misc.c \ kern/parser.c kern/partition.c kern/term.c \ kern/rescue_reader.c kern/rescue_parser.c \ - \ - kern/emu/misc.c kern/emu/getroot.c kern/emu/time.c \ - kern/emu/hostdisk.c kern/emu/hostfs.c kern/emu/console.c \ - \ + \ + kern/emu/main.c kern/emu/misc.c kern/emu/getroot.c \ + kern/emu/time.c kern/emu/hostdisk.c kern/emu/hostfs.c \ + kern/emu/console.c \ + \ gnulib/progname.c disk/host.c kernel_img_HEADERS += datetime.h emu/misc.h kernel_img_CFLAGS = $(TARGET_CPPFLAGS) $(TARGET_CFLAGS) -Wno-undef -I$(srcdir)/gnulib @@ -85,7 +86,7 @@ endif ifeq ($(enable_grub_emu_pci), yes) pkglib_MODULES += pci.mod -pci_mod_SOURCES = util/pci.c commands/lspci.c +pci_mod_SOURCES = bus/emu/pci.c commands/lspci.c pci_mod_LDFLAGS = $(COMMON_LDFLAGS) grub_emu_LDFLAGS += $(LIBPCIACCESS) kernel_img_HEADERS += libpciaccess.h @@ -104,13 +105,8 @@ DISTCLEANFILES += grub_emu_init.c CLEANFILES += grub-emu ifneq ($(TARGET_NO_MODULES), yes) grub-emu: $(pkglib_PROGRAMS) - $(CC) -o $@ $(pkglib_PROGRAMS) $(grub_emu_LDFLAGS) $(LDFLAGS) + $(CC) -o $@ $^ $(grub_emu_LDFLAGS) $(LDFLAGS) else - -pkglib_MODULES += emu.mod -emu_mod_SOURCES = kern/emu/main.c -emu_mod_CFLAGS = -I$(srcdir)/gnulib - grub-emu: $(pkglib_MODULES) $(pkglib_PROGRAMS) $(CC) -o $@ $^ $(grub_emu_LDFLAGS) $(LDFLAGS) endif diff --git a/include/grub/dl.h b/include/grub/dl.h index cfb7c2f99..cf5da7fd5 100644 --- a/include/grub/dl.h +++ b/include/grub/dl.h @@ -96,23 +96,8 @@ void grub_dl_unload_all (void); #else #define GRUB_NO_MODULES 0 #endif -#if GRUB_NO_MODULES -static inline int -grub_dl_ref (grub_dl_t mod) -{ - (void) mod; - return 0; -} -static inline int -grub_dl_unref (grub_dl_t mod) -{ - (void) mod; - return 0; -} -#else int EXPORT_FUNC(grub_dl_ref) (grub_dl_t mod); int EXPORT_FUNC(grub_dl_unref) (grub_dl_t mod); -#endif 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, diff --git a/kern/dl.c b/kern/dl.c index 19ee13243..c6a038cfa 100644 --- a/kern/dl.c +++ b/kern/dl.c @@ -469,12 +469,14 @@ grub_dl_resolve_dependencies (grub_dl_t mod, Elf_Ehdr *e) return GRUB_ERR_NONE; } -#if !GRUB_NO_MODULES int grub_dl_ref (grub_dl_t mod) { grub_dl_dep_t dep; + if (!mod) + return 0; + for (dep = mod->dep; dep; dep = dep->next) grub_dl_ref (dep->mod); @@ -486,12 +488,14 @@ grub_dl_unref (grub_dl_t mod) { grub_dl_dep_t dep; + if (!mod) + return 0; + for (dep = mod->dep; dep; dep = dep->next) grub_dl_unref (dep->mod); return --mod->ref_count; } -#endif static void grub_dl_flush_cache (grub_dl_t mod) diff --git a/kern/emu/cache.S b/kern/emu/cache.S deleted file mode 100644 index 087b2b495..000000000 --- a/kern/emu/cache.S +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef GRUB_MACHINE_EMU -#error "This source is only meant for grub-emu platform" -#endif - -#if GRUB_CPU_I386 -#elif GRUB_CPU_X86_64 -#elif GRUB_CPU_SPARC64 -#include "../sparc64/cache.S" -#elif GRUB_CPU_MIPS -#include "../mips/cache.S" -#elif GRUB_CPU_MIPSEL -#include "../mips/cache.S" -#elif GRUB_CPU_POWERPC -#include "../powerpc/cache.S" -#else -#error "No target cpu type is defined" -#endif diff --git a/kern/emu/dummy/dl.c b/kern/emu/dummy/dl.c deleted file mode 100644 index 8e9fabfc2..000000000 --- a/kern/emu/dummy/dl.c +++ /dev/null @@ -1,51 +0,0 @@ -/* - * 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 - -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; -} - -/* int */ -/* grub_dl_ref (grub_dl_t mod) */ -/* { */ -/* (void) mod; */ -/* return 0; */ -/* } */ - -/* int */ -/* grub_dl_unref (grub_dl_t mod) */ -/* { */ -/* (void) mod; */ -/* return 0; */ -/* } */ diff --git a/kern/emu/lite.c b/kern/emu/lite.c deleted file mode 100644 index 1f06e39dc..000000000 --- a/kern/emu/lite.c +++ /dev/null @@ -1,16 +0,0 @@ -#include -#include - -/* 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; -} diff --git a/kern/emu/main.c b/kern/emu/main.c index 978919f2a..c9b1d6595 100644 --- a/kern/emu/main.c +++ b/kern/emu/main.c @@ -27,6 +27,7 @@ #include #include +#include #include #include #include diff --git a/util/misc.c b/util/misc.c index 17fa6d5e4..c413352e7 100644 --- a/util/misc.c +++ b/util/misc.c @@ -564,3 +564,17 @@ grub_util_init_nls (void) #endif /* (defined(ENABLE_NLS) && ENABLE_NLS) */ } #endif + +int +grub_dl_ref (grub_dl_t mod) +{ + (void) mod; + return 0; +} + +int +grub_dl_unref (grub_dl_t mod) +{ + (void) mod; + return 0; +}