Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 19 Sep 2000 11:55:00 +0900
From:      Takanori Watanabe <takawata@shidahara1.planet.sci.kobe-u.ac.jp>
To:        freebsd-arch@freebsd.org
Subject:   [CFR]patch for kern/kern_exec.c and sys/imgact.h
Message-ID:  <200009190255.LAA77533@shidahara1.planet.sci.kobe-u.ac.jp>

next in thread | raw e-mail | index | archive | help
I suggested by imp to talk about this issue in this list, 
So I write again in this list.

I ported kernel part of PEACE (Portable Executable win32 API
 Compatible Environment) and I want to change kern/kern_exec.c and 
sys/imgact.h as follows to make the module run correctly.
The main reason fot this change is as mentioned above but 
this change is useful for farther executable format support, I convince.
Are there anyone review this patch?If this patch is reviewed,I'll commit 
ASAP.

Takanori Watanabe
<a href="http://www.planet.sci.kobe-u.ac.jp/~takawata/key.html">;
Public Key</a>
Key fingerprint =  2C 51 E2 78 2C E1 C5 2D  0F F1 20 A3 11 3A 62 2A 


--- sys/imgact.h.orig	Mon Sep 18 02:18:46 2000
+++ sys/imgact.h	Mon Sep 18 02:19:25 2000
@@ -58,6 +58,7 @@
 	struct vm_page *firstpage;	/* first page that we mapped */
 	char *fname;            /* pointer to filename of executable (user space) */
 	unsigned long ps_strings; /* PS_STRINGS for BSD/OS binaries */
+	size_t auxarg_size;
 };
 
 #ifdef _KERNEL
--- kern/kern_exec.c.orig	Fri Jul 14 15:44:45 2000
+++ kern/kern_exec.c	Mon Sep 18 02:59:45 2000
@@ -127,6 +127,7 @@
 	imgp->vp = NULL;
 	imgp->firstpage = NULL;
 	imgp->ps_strings = 0;
+	imgp->auxarg_size=0;
 
 	/*
 	 * Allocate temporary demand zeroed space for argument and
@@ -613,14 +614,21 @@
 	 * If we have a valid auxargs ptr, prepare some room
 	 * on the stack.
 	 */
-	if (imgp->auxargs)
+	if (imgp->auxargs){
+        /*
+	 * 'AT_COUNT*2' is size for the ELF Auxargs data.
+	 * This is for lower compatibility.
+	 */
+		imgp->auxarg_size=(imgp->auxarg_size)?imgp->auxarg_size
+		    :(AT_COUNT*2);
 	/*
 	 * The '+ 2' is for the null pointers at the end of each of the
-	 * arg and env vector sets, and 'AT_COUNT*2' is room for the
-	 * ELF Auxargs data.
+	 * arg and env vector sets,and imgp->auxarg_size is room for argument
+	 * of Runtime loader.
 	 */
 		vectp = (char **)(destp - (imgp->argc + imgp->envc + 2 +
-				  AT_COUNT*2) * sizeof(char*));
+				  imgp->auxarg_size) * sizeof(char*));
+	}
 	else 
 	/*
 	 * The '+ 2' is for the null pointers at the end of each of the



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-arch" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200009190255.LAA77533>