diff options
| -rw-r--r-- | sys/kern/kern_linker.c | 3 | ||||
| -rw-r--r-- | sys/kern/link_aout.c | 15 | ||||
| -rw-r--r-- | sys/kern/link_elf.c | 16 | ||||
| -rw-r--r-- | sys/kern/link_elf_obj.c | 16 | ||||
| -rw-r--r-- | sys/sys/linker.h | 7 |
5 files changed, 23 insertions, 34 deletions
diff --git a/sys/kern/kern_linker.c b/sys/kern/kern_linker.c index d46fe78c49d0..7a2b1f24ade4 100644 --- a/sys/kern/kern_linker.c +++ b/sys/kern/kern_linker.c @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: kern_linker.c,v 1.12 1998/11/03 13:09:31 peter Exp $ + * $Id: kern_linker.c,v 1.13 1998/11/03 14:27:05 peter Exp $ */ #include "opt_ddb.h" @@ -49,6 +49,7 @@ MALLOC_DEFINE(M_LINKER, "kld", "kernel linker"); linker_file_t linker_current_file; +linker_file_t linker_kernel_file; static struct lock lock; /* lock for the file list */ static linker_class_list_t classes; diff --git a/sys/kern/link_aout.c b/sys/kern/link_aout.c index 4d7126a9149d..29b588489b68 100644 --- a/sys/kern/link_aout.c +++ b/sys/kern/link_aout.c @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: link_aout.c,v 1.15 1998/10/25 17:44:51 phk Exp $ + * $Id: link_aout.c,v 1.16 1998/11/03 14:25:21 peter Exp $ */ #ifndef __alpha__ @@ -55,13 +55,6 @@ static int link_aout_search_symbol(linker_file_t lf, caddr_t value, static void link_aout_unload_file(linker_file_t); static void link_aout_unload_module(linker_file_t); -/* - * The file representing the currently running kernel. This contains - * the global symbol table. - */ - -static linker_file_t linker_kernel_file; - static struct linker_class_ops link_aout_class_ops = { link_aout_load_module, }; @@ -308,8 +301,10 @@ load_dependancies(linker_file_t lf) /* * All files are dependant on /kernel. */ - linker_kernel_file->refs++; - linker_file_add_dependancy(lf, linker_kernel_file); + if (linker_kernel_file) { + linker_kernel_file->refs++; + linker_file_add_dependancy(lf, linker_kernel_file); + } off = LD_NEED(af->dynamic); diff --git a/sys/kern/link_elf.c b/sys/kern/link_elf.c index b1a4193d4607..6f9a5789d085 100644 --- a/sys/kern/link_elf.c +++ b/sys/kern/link_elf.c @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: link_elf.c,v 1.7 1998/10/16 03:55:00 peter Exp $ + * $Id: link_elf.c,v 1.8 1998/10/25 17:44:51 phk Exp $ */ #include <sys/param.h> @@ -58,13 +58,6 @@ static int link_elf_search_symbol(linker_file_t, caddr_t value, static void link_elf_unload_file(linker_file_t); static void link_elf_unload_module(linker_file_t); -/* - * The file representing the currently running kernel. This contains - * the global symbol table. - */ - -linker_file_t linker_kernel_file; - static struct linker_class_ops link_elf_class_ops = { link_elf_load_module, }; @@ -738,10 +731,11 @@ load_dependancies(linker_file_t lf) /* * All files are dependant on /kernel. */ - linker_kernel_file->refs++; - linker_file_add_dependancy(lf, linker_kernel_file); + if (linker_kernel_file) { + linker_kernel_file->refs++; + linker_file_add_dependancy(lf, linker_kernel_file); + } - for (dp = ef->dynamic; dp->d_tag != DT_NULL; dp++) { if (dp->d_tag == DT_NEEDED) { name = ef->strtab + dp->d_un.d_val; diff --git a/sys/kern/link_elf_obj.c b/sys/kern/link_elf_obj.c index b1a4193d4607..6f9a5789d085 100644 --- a/sys/kern/link_elf_obj.c +++ b/sys/kern/link_elf_obj.c @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: link_elf.c,v 1.7 1998/10/16 03:55:00 peter Exp $ + * $Id: link_elf.c,v 1.8 1998/10/25 17:44:51 phk Exp $ */ #include <sys/param.h> @@ -58,13 +58,6 @@ static int link_elf_search_symbol(linker_file_t, caddr_t value, static void link_elf_unload_file(linker_file_t); static void link_elf_unload_module(linker_file_t); -/* - * The file representing the currently running kernel. This contains - * the global symbol table. - */ - -linker_file_t linker_kernel_file; - static struct linker_class_ops link_elf_class_ops = { link_elf_load_module, }; @@ -738,10 +731,11 @@ load_dependancies(linker_file_t lf) /* * All files are dependant on /kernel. */ - linker_kernel_file->refs++; - linker_file_add_dependancy(lf, linker_kernel_file); + if (linker_kernel_file) { + linker_kernel_file->refs++; + linker_file_add_dependancy(lf, linker_kernel_file); + } - for (dp = ef->dynamic; dp->d_tag != DT_NULL; dp++) { if (dp->d_tag == DT_NEEDED) { name = ef->strtab + dp->d_un.d_val; diff --git a/sys/sys/linker.h b/sys/sys/linker.h index 45a62da29047..565239daa62c 100644 --- a/sys/sys/linker.h +++ b/sys/sys/linker.h @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: linker.h,v 1.8 1998/10/09 23:07:27 peter Exp $ + * $Id: linker.h,v 1.9 1998/10/16 03:55:01 peter Exp $ */ #ifndef _SYS_LINKER_H_ @@ -133,6 +133,11 @@ struct linker_class { extern linker_file_t linker_current_file; /* + * The "file" for the kernel. + */ +extern linker_file_t linker_kernel_file; + +/* * Add a new file class to the linker. */ int linker_add_class(const char* desc, void* priv, |
