[PATCH] iBCS support for Solaris/x86 binaries.

David Woodhouse (David.Woodhouse@mvhi.com)
Sun, 25 Jul 1999 16:55:39 +0100


This is a multipart MIME message.

--==_Exmh_-20620088860
Content-Type: text/plain; charset=us-ascii

The attached two patches provide limited support for Solaris/x86 binaries
under Linux.

The first is a patch to the kernel, which provides an LDT entry for the
lcall27 call gate which Solaris/x86 uses, pointing to the existing lcall7
(exec_domain) handler. It also adds an extra argument to the existing handler,
which contains the segment number used in the trap, so that the handler can
differentiate between call methods.
This patch also adds the PER_SOLARIS personality.

The patch is against 2.2.10, but should apply cleanly to anything. Unless
there are problems with having the extra entries in the default LDT, this
could probably be safely applied to 2.2.11, and certainly to 2.3.next

The second patch is to ibcs-2.1-981105, adding the Solaris syscall table
and a handful of the syscalls I needed to get the basics like 'cat' and 'ls'
working. This part is work in progress, but should be a good start if anyone
else wants to join in.

Index: arch/i386/kernel/entry.S
===================================================================
RCS file: /cvs/linux/arch/i386/kernel/entry.S,v
retrieving revision 1.2
diff -u -w -r1.2 entry.S
--- arch/i386/kernel/entry.S 1999/05/12 16:48:43 1.2
+++ arch/i386/kernel/entry.S 1999/07/25 14:38:24
@@ -145,7 +145,30 @@
andl $-8192,%ebx # GET_CURRENT
movl exec_domain(%ebx),%edx # Get the execution domain
movl 4(%edx),%edx # Get the lcall7 handler for the domain
+ pushl $0x7
call *%edx
+ addl $4, %esp
+ popl %eax
+ jmp ret_from_sys_call
+
+ENTRY(lcall27)
+ pushfl # We get a different stack layout with call gates,
+ pushl %eax # which has to be cleaned up later..
+ SAVE_ALL
+ movl EIP(%esp),%eax # due to call gates, this is eflags, not eip..
+ movl CS(%esp),%edx # this is eip..
+ movl EFLAGS(%esp),%ecx # and this is cs..
+ movl %eax,EFLAGS(%esp) #
+ movl %edx,EIP(%esp) # Now we move them to their "normal" places
+ movl %ecx,CS(%esp) #
+ movl %esp,%ebx
+ pushl %ebx
+ andl $-8192,%ebx # GET_CURRENT
+ movl exec_domain(%ebx),%edx # Get the execution domain
+ movl 4(%edx),%edx # Get the lcall7 handler for the domain
+ pushl $0x27
+ call *%edx
+ addl $4, %esp
popl %eax
jmp ret_from_sys_call

Index: arch/i386/kernel/traps.c
===================================================================
RCS file: /cvs/linux/arch/i386/kernel/traps.c,v
retrieving revision 1.1.1.13
diff -u -w -r1.1.1.13 traps.c
--- arch/i386/kernel/traps.c 1999/02/27 12:39:45 1.1.1.13
+++ arch/i386/kernel/traps.c 1999/07/25 14:38:29
@@ -46,8 +46,10 @@

asmlinkage int system_call(void);
asmlinkage void lcall7(void);
+asmlinkage void lcall27(void);

-struct desc_struct default_ldt = { 0, 0 };
+struct desc_struct default_ldt[] = { { 0, 0 }, { 0, 0 }, { 0, 0 },
+ { 0, 0 }, { 0, 0 } };

/*
* The IDT has to be page-aligned to simplify the Pentium
@@ -672,7 +674,8 @@
{
if (readl(0x0FFFD9) == 'E' + ('I'<<8) + ('S'<<16) + ('A'<<24))
EISA_bus = 1;
- set_call_gate(&default_ldt,lcall7);
+ set_call_gate(&default_ldt[0],lcall7);
+ set_call_gate(&default_ldt[4],lcall27);
set_trap_gate(0,&divide_error);
set_trap_gate(1,&debug);
set_trap_gate(2,&nmi);
@@ -695,7 +698,7 @@

/* set up GDT task & ldt entries */
set_tss_desc(0, &init_task.tss);
- set_ldt_desc(0, &default_ldt, 1);
+ set_ldt_desc(0, &default_ldt[0], 5);

/* Clear NT, so that we won't have troubles with that later on */
__asm__("pushfl ; andl $0xffffbfff,(%esp) ; popfl");
Index: include/asm-i386/desc.h
===================================================================
RCS file: /cvs/linux/include/asm-i386/desc.h,v
retrieving revision 1.1.1.1
diff -u -w -r1.1.1.1 desc.h
--- include/asm-i386/desc.h 1998/10/28 23:23:14 1.1.1.1
+++ include/asm-i386/desc.h 1999/07/25 14:38:39
@@ -56,6 +56,6 @@
* This is the ldt that every process will get unless we need
* something other than this.
*/
-extern struct desc_struct default_ldt;
+extern struct desc_struct default_ldt[];

#endif
Index: include/linux/personality.h
===================================================================
RCS file: /cvs/linux/include/linux/personality.h,v
retrieving revision 1.2
diff -u -w -r1.2 personality.h
--- include/linux/personality.h 1999/06/29 14:48:45 1.2
+++ include/linux/personality.h 1999/07/25 14:38:40
@@ -27,9 +27,10 @@
#define PER_IRIX32 (0x0009 | STICKY_TIMEOUTS) /* IRIX5 32-bit */
#define PER_IRIXN32 (0x000a | STICKY_TIMEOUTS) /* IRIX6 new 32-bit */
#define PER_IRIX64 (0x000b | STICKY_TIMEOUTS) /* IRIX6 64-bit */
+#define PER_SOLARIS (0x000c | STICKY_TIMEOUTS)

/* Prototype for an lcall7 syscall handler. */
-typedef void (*lcall7_func)(struct pt_regs *);
+typedef void (*lcall7_func)(int, struct pt_regs *);


/* Description of an execution domain - personality range supported,
Index: kernel/exec_domain.c
===================================================================
RCS file: /cvs/linux/kernel/exec_domain.c,v
retrieving revision 1.1.1.3
diff -u -w -r1.1.1.3 exec_domain.c
--- kernel/exec_domain.c 1998/11/30 10:14:58 1.1.1.3
+++ kernel/exec_domain.c 1999/07/25 14:38:46
@@ -2,7 +2,7 @@
#include <linux/smp_lock.h>
#include <linux/module.h>

-static asmlinkage void no_lcall7(struct pt_regs * regs);
+static asmlinkage void no_lcall7(int segment, struct pt_regs * regs);


static unsigned long ident_map[32] = {
@@ -25,7 +25,7 @@
static struct exec_domain *exec_domains = &default_exec_domain;


-static asmlinkage void no_lcall7(struct pt_regs * regs)
+static asmlinkage void no_lcall7(int segment, struct pt_regs * regs)
{

/*
@@ -33,6 +33,7 @@
* personality set incorrectly. Check to see whether SVr4 is available,
* and use it, otherwise give the user a SEGV.
*/
+
if (current->exec_domain && current->exec_domain->module)
__MOD_DEC_USE_COUNT(current->exec_domain->module);

@@ -44,7 +45,7 @@

if (current->exec_domain && current->exec_domain->handler
&& current->exec_domain->handler != no_lcall7) {
- current->exec_domain->handler(regs);
+ current->exec_domain->handler(segment, regs);
return;
}

Can anyone enlighten me as to why some of these Solaris 2.6 binaries try to
access unmapped memory at 0x8001ba54? Does SunOS give only 2Gb of VM space to
user programs and map something strange just above it?

--==_Exmh_-20620088860
Content-Type: application/x-gzip ; name="ibcs-solaris-support2.gz"
Content-Description: ibcs-solaris-support2.gz
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="ibcs-solaris-support2.gz"

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

--==_Exmh_-20620088860
Content-Type: text/plain; charset=us-ascii

---- ---- ----
David Woodhouse David.Woodhouse@mvhi.com Office: (+44) 1223 810302
Project Leader, Process Information Systems Mobile: (+44) 976 658355
Axiom (Cambridge) Ltd., Swaffham Bulbeck, Cambridge, CB5 0NA, UK.
finger dwmw2@ferret.lmh.ox.ac.uk for PGP key.

--==_Exmh_-20620088860--

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/