summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Wemm <peter@FreeBSD.org>1998-11-04 15:20:58 +0000
committerPeter Wemm <peter@FreeBSD.org>1998-11-04 15:20:58 +0000
commit84e40f5627ce2825f905f40131e31017b458613c (patch)
tree32887d7f7c4762a0bb986e26777f67e848fb6444
parent0ce10add93b640241731715a407ed802ccf3d17b (diff)
Notes
-rw-r--r--sys/kern/kern_linker.c3
-rw-r--r--sys/kern/link_aout.c15
-rw-r--r--sys/kern/link_elf.c16
-rw-r--r--sys/kern/link_elf_obj.c16
-rw-r--r--sys/sys/linker.h7
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,