Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 15 May 2014 15:36:51 +0200
From:      Oliver Pinter <oliver.pntr@gmail.com>
To:        current@freebsd.org, arch@freebsd.org
Cc:        gavin@freebsd.org, kib@freebsd.org
Subject:   [RFC] remove dead code from link_elf.c
Message-ID:  <CAPjTQNHTiEeSuf9y4Ddriq5Jj7L6yYNSqLujH2ni=XdUF5b-bg@mail.gmail.com>

next in thread | raw e-mail | index | archive | help

[-- Attachment #1 --]
Hi all!

I found that the SPARSE_MAPPING used only in sys/kern/link_elf.c file,
and no other place in kernel, nor in generated codes in /usr/obj/...

op@pandora-d opBSD.git> git grep -i SPARSE_MAPPING
sys/kern/link_elf.c:#ifdef SPARSE_MAPPING
sys/kern/link_elf.c:#ifdef SPARSE_MAPPING
sys/kern/link_elf.c:#ifdef SPARSE_MAPPING
sys/kern/link_elf.c:#ifdef SPARSE_MAPPING
sys/kern/link_elf.c:#ifdef SPARSE_MAPPING
sys/kern/link_elf.c:#ifdef SPARSE_MAPPING
sys/kern/link_elf.c:#ifdef SPARSE_MAPPING

I proposed to remove the old/dead codes. Patch attached. Tested on amd64.

[-- Attachment #2 --]
From 0d0c70f629ae0c4ab0c990a33df37e1a766a8420 Mon Sep 17 00:00:00 2001
From: Oliver Pinter <oliver.pntr@gmail.com>
Date: Thu, 15 May 2014 15:19:24 +0200
Subject: [PATCH] link_elf: remove SPARSE_MAPPING and related code

Signed-off-by: Oliver Pinter <oliver.pntr@gmail.com>
---
 sys/kern/link_elf.c | 52 ----------------------------------------------------
 1 file changed, 52 deletions(-)

diff --git a/sys/kern/link_elf.c b/sys/kern/link_elf.c
index 631ba75..22fd584 100644
--- a/sys/kern/link_elf.c
+++ b/sys/kern/link_elf.c
@@ -55,11 +55,6 @@ __FBSDID("$FreeBSD$");
 
 #include <vm/vm.h>
 #include <vm/vm_param.h>
-#ifdef SPARSE_MAPPING
-#include <vm/vm_object.h>
-#include <vm/vm_kern.h>
-#include <vm/vm_extern.h>
-#endif
 #include <vm/pmap.h>
 #include <vm/vm_map.h>
 
@@ -77,9 +72,6 @@ typedef struct elf_file {
 	struct linker_file lf;		/* Common fields */
 	int		preloaded;	/* Was file pre-loaded */
 	caddr_t		address;	/* Relocation address */
-#ifdef SPARSE_MAPPING
-	vm_object_t	object;		/* VM object to hold file pages */
-#endif
 	Elf_Dyn		*dynamic;	/* Symbol table etc. */
 	Elf_Hashelt	nbuckets;	/* DT_HASH info */
 	Elf_Hashelt	nchains;
@@ -394,9 +386,6 @@ link_elf_init(void* arg)
 	ef = (elf_file_t) linker_kernel_file;
 	ef->preloaded = 1;
 	ef->address = 0;
-#ifdef SPARSE_MAPPING
-	ef->object = 0;
-#endif
 	ef->dynamic = dp;
 
 	if (dp != NULL)
@@ -671,9 +660,6 @@ link_elf_link_preload(linker_class_t cls,
 	ef->preloaded = 1;
 	ef->modptr = modptr;
 	ef->address = *(caddr_t *)baseptr;
-#ifdef SPARSE_MAPPING
-	ef->object = 0;
-#endif
 	dp = (vm_offset_t)ef->address + *(vm_offset_t *)dynptr;
 	ef->dynamic = (Elf_Dyn *)dp;
 	lf->address = ef->address;
@@ -883,24 +869,7 @@ link_elf_load_file(linker_class_t cls, const char* filename,
 	}
 
 	ef = (elf_file_t) lf;
-#ifdef SPARSE_MAPPING
-	ef->object = vm_object_allocate(OBJT_DEFAULT, mapsize >> PAGE_SHIFT);
-	if (ef->object == NULL) {
-		error = ENOMEM;
-		goto out;
-	}
-	ef->address = (caddr_t) vm_map_min(kernel_map);
-	error = vm_map_find(kernel_map, ef->object, 0,
-	    (vm_offset_t *) &ef->address, mapsize, 0, VMFS_OPTIMAL_SPACE,
-	    VM_PROT_ALL, VM_PROT_ALL, 0);
-	if (error != 0) {
-		vm_object_deallocate(ef->object);
-		ef->object = 0;
-		goto out;
-	}
-#else
 	ef->address = malloc(mapsize, M_LINKER, M_WAITOK);
-#endif
 	mapbase = ef->address;
 
 	/*
@@ -917,19 +886,6 @@ link_elf_load_file(linker_class_t cls, const char* filename,
 		bzero(segbase + segs[i]->p_filesz,
 		    segs[i]->p_memsz - segs[i]->p_filesz);
 
-#ifdef SPARSE_MAPPING
-		/*
-		 * Wire down the pages
-		 */
-		error = vm_map_wire(kernel_map,
-		    (vm_offset_t) segbase,
-		    (vm_offset_t) segbase + segs[i]->p_memsz,
-		    VM_MAP_WIRE_SYSTEM|VM_MAP_WIRE_NOHOLES);
-		if (error != KERN_SUCCESS) {
-			error = ENOMEM;
-			goto out;
-		}
-#endif
 	}
 
 #ifdef GPROF
@@ -1085,16 +1041,8 @@ link_elf_unload_file(linker_file_t file)
 		return;
 	}
 
-#ifdef SPARSE_MAPPING
-	if (ef->object != NULL) {
-		vm_map_remove(kernel_map, (vm_offset_t) ef->address,
-		    (vm_offset_t) ef->address
-		    + (ef->object->size << PAGE_SHIFT));
-	}
-#else
 	if (ef->address != NULL)
 		free(ef->address, M_LINKER);
-#endif
 	if (ef->symbase != NULL)
 		free(ef->symbase, M_LINKER);
 	if (ef->strbase != NULL)
-- 
1.9.2


Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAPjTQNHTiEeSuf9y4Ddriq5Jj7L6yYNSqLujH2ni=XdUF5b-bg>