|
From: <sv...@va...> - 2009-04-15 23:10:15
|
Author: njn
Date: 2009-04-16 00:10:04 +0100 (Thu, 16 Apr 2009)
New Revision: 9553
Log:
Merge r9550..r9552 (move seg_override and sigcontext) from the DARWIN branch.
Added:
trunk/none/tests/x86-linux/
trunk/none/tests/x86-linux/filter_stderr
Removed:
trunk/none/tests/x86/seg_override.c
trunk/none/tests/x86/seg_override.stderr.exp
trunk/none/tests/x86/seg_override.stdout.exp
trunk/none/tests/x86/seg_override.vgtest
trunk/none/tests/x86/sigcontext.c
trunk/none/tests/x86/sigcontext.stderr.exp
trunk/none/tests/x86/sigcontext.stdout.exp
trunk/none/tests/x86/sigcontext.vgtest
Modified:
trunk/configure.in
trunk/none/tests/Makefile.am
trunk/none/tests/x86/Makefile.am
Modified: trunk/configure.in
===================================================================
--- trunk/configure.in 2009-04-15 07:36:54 UTC (rev 9552)
+++ trunk/configure.in 2009-04-15 23:10:04 UTC (rev 9553)
@@ -1751,6 +1751,7 @@
none/tests/ppc64/Makefile
none/tests/x86/Makefile
none/tests/linux/Makefile
+ none/tests/x86-linux/Makefile
none/docs/Makefile
exp-omega/Makefile
exp-omega/tests/Makefile
Modified: trunk/none/tests/Makefile.am
===================================================================
--- trunk/none/tests/Makefile.am 2009-04-15 07:36:54 UTC (rev 9552)
+++ trunk/none/tests/Makefile.am 2009-04-15 23:10:04 UTC (rev 9553)
@@ -22,6 +22,11 @@
SUBDIRS += linux
endif
+# Platform-specific tests
+if VGCONF_PLATFORMS_INCLUDE_X86_LINUX
+SUBDIRS += x86-linux
+endif
+
DIST_SUBDIRS = x86 amd64 ppc32 ppc64 linux .
noinst_SCRIPTS = \
Modified: trunk/none/tests/x86/Makefile.am
===================================================================
--- trunk/none/tests/x86/Makefile.am 2009-04-15 07:36:54 UTC (rev 9552)
+++ trunk/none/tests/x86/Makefile.am 2009-04-15 23:10:04 UTC (rev 9553)
@@ -50,8 +50,6 @@
movx.stderr.exp movx.stdout.exp movx.vgtest \
pushpopseg.stderr.exp pushpopseg.stdout.exp pushpopseg.vgtest \
sbbmisc.stderr.exp sbbmisc.stdout.exp sbbmisc.vgtest \
- seg_override.stderr.exp seg_override.stdout.exp seg_override.vgtest \
- sigcontext.stdout.exp sigcontext.stderr.exp sigcontext.vgtest \
smc1.stderr.exp smc1.stdout.exp smc1.vgtest \
ssse3_misaligned.stderr.exp ssse3_misaligned.stdout.exp \
ssse3_misaligned.vgtest \
@@ -85,8 +83,6 @@
movx \
pushpopseg \
sbbmisc \
- seg_override \
- sigcontext \
smc1 \
yield
if BUILD_SSSE3_TESTS
Deleted: trunk/none/tests/x86/seg_override.c
===================================================================
--- trunk/none/tests/x86/seg_override.c 2009-04-15 07:36:54 UTC (rev 9552)
+++ trunk/none/tests/x86/seg_override.c 2009-04-15 23:10:04 UTC (rev 9553)
@@ -1,138 +0,0 @@
-
-#include <stdio.h>
-#include <errno.h>
-#include <string.h>
-
-/* Stuff from Wine. */
-
-typedef unsigned short WORD; /* I guess */
-typedef unsigned char BYTE;
-
-typedef struct _LDT_ENTRY {
- WORD LimitLow;
- WORD BaseLow;
- union {
- struct {
- BYTE BaseMid;
- BYTE Flags1;
- /*Declare as bytes to avoid alignment problems */
- BYTE Flags2;
- BYTE BaseHi;
- } Bytes;
- struct {
- unsigned BaseMid : 8;
- unsigned Type : 5;
- unsigned Dpl : 2;
- unsigned Pres : 1;
- unsigned LimitHi : 4;
- unsigned Sys : 1;
- unsigned Reserved_0 : 1;
- unsigned Default_Big : 1;
- unsigned Granularity : 1;
- unsigned BaseHi : 8;
- } Bits;
- } HighWord;
-} LDT_ENTRY;
-
-inline static void *wine_ldt_get_base( const LDT_ENTRY *ent )
-{
- return (void *)(ent->BaseLow |
- (unsigned long)ent->HighWord.Bits.BaseMid << 16 |
- (unsigned long)ent->HighWord.Bits.BaseHi << 24);
-}
-inline static unsigned int wine_ldt_get_limit( const LDT_ENTRY *ent )
-{
- unsigned int limit = ent->LimitLow | (ent->HighWord.Bits.LimitHi << 16);
- if (ent->HighWord.Bits.Granularity) limit = (limit << 12) | 0xfff;
- return limit;
-}
-
-
-/* our copy of the ldt */
-LDT_ENTRY ldt_copy[8192];
-
-/* System call to set LDT entry. */
-//extern int __modify_ldt (int, struct modify_ldt_ldt_s *, size_t);
-extern int __modify_ldt (int, void *, size_t);
-
-void print_ldt ( void )
-{
- int res;
- res = __modify_ldt( 0, ldt_copy, 8192*sizeof(LDT_ENTRY) );
- printf("got %d bytes\n", res );
- perror("error is");
-}
-
-/* Structure passed on `modify_ldt' call. */
-#define MODIFY_LDT_CONTENTS_DATA 0
-#define MODIFY_LDT_CONTENTS_STACK 1
-#define MODIFY_LDT_CONTENTS_CODE 2
-
-struct modify_ldt_ldt_s
-{
- unsigned int entry_number;
- unsigned long int base_addr;
- unsigned int limit;
- unsigned int seg_32bit:1;
- unsigned int contents:2;
- unsigned int read_exec_only:1;
- unsigned int limit_in_pages:1;
- unsigned int seg_not_present:1;
- unsigned int useable:1;
- unsigned int empty:25;
-};
-
-/* System call to set LDT entry. */
-//extern int __modify_ldt (int, struct modify_ldt_ldt_s *, size_t);
-
-void set_ldt1 ( void* base )
-{
- int stat;
- struct modify_ldt_ldt_s ldt_entry;
-
- /* stop valgrind yelping about initialised holes in this struct. */
- memset(&ldt_entry, 0, sizeof(ldt_entry));
-
- ldt_entry.entry_number = 1;
- ldt_entry.base_addr = (unsigned)base; //0x12345678;
- ldt_entry.limit = 10;
- ldt_entry.seg_32bit = 1;
- ldt_entry.contents = MODIFY_LDT_CONTENTS_DATA;
- ldt_entry.read_exec_only = 0;
- ldt_entry.limit_in_pages = 0;
- ldt_entry.seg_not_present = 0;
- stat = __modify_ldt (1, &ldt_entry, sizeof (ldt_entry));
- printf("stat = %d\n", stat);
-}
-
-
-void ldt_seg_write ( int ldt_entno, unsigned offset, unsigned val )
-{
- asm volatile("movl %2, %%eax\n\t"
- "movl %1, %%edx\n\t"
- "movl %0, %%fs\n\t"
- "movl %%eax, %%fs:(%%edx)\t"
- :
- : "r" (7 /* LDT(TI), least privilege */ + (ldt_entno << 3)),
- "r" (offset), "r" (val)
- : "eax", "edx", "cc" );
-}
-
-int main ( void )
-{
- int i;
- int arr[9];
-
- for (i = 0; i < 9; i++) arr[i] = 11*i;
-
- set_ldt1( &arr[4] );
- print_ldt();
-
- ldt_seg_write(1 /* ldt entry # */, 4 /* offset */, 4444);
-
- for (i = 0; i < 9; i++) printf("%d ", arr[i]);
- printf("\n");
-
- return 0;
-}
-
Deleted: trunk/none/tests/x86/seg_override.stderr.exp
===================================================================
--- trunk/none/tests/x86/seg_override.stderr.exp 2009-04-15 07:36:54 UTC (rev 9552)
+++ trunk/none/tests/x86/seg_override.stderr.exp 2009-04-15 23:10:04 UTC (rev 9553)
@@ -1,3 +0,0 @@
-
-error is: Success
-
Deleted: trunk/none/tests/x86/seg_override.stdout.exp
===================================================================
--- trunk/none/tests/x86/seg_override.stdout.exp 2009-04-15 07:36:54 UTC (rev 9552)
+++ trunk/none/tests/x86/seg_override.stdout.exp 2009-04-15 23:10:04 UTC (rev 9553)
@@ -1,3 +0,0 @@
-stat = 0
-got 65536 bytes
-0 11 22 33 44 4444 66 77 88
Deleted: trunk/none/tests/x86/seg_override.vgtest
===================================================================
--- trunk/none/tests/x86/seg_override.vgtest 2009-04-15 07:36:54 UTC (rev 9552)
+++ trunk/none/tests/x86/seg_override.vgtest 2009-04-15 23:10:04 UTC (rev 9553)
@@ -1 +0,0 @@
-prog: seg_override
Deleted: trunk/none/tests/x86/sigcontext.c
===================================================================
--- trunk/none/tests/x86/sigcontext.c 2009-04-15 07:36:54 UTC (rev 9552)
+++ trunk/none/tests/x86/sigcontext.c 2009-04-15 23:10:04 UTC (rev 9553)
@@ -1,92 +0,0 @@
-#define _GNU_SOURCE
-
-#include <stdio.h>
-#include <signal.h>
-#include <unistd.h>
-#include <sys/ucontext.h>
-#include <asm/unistd.h>
-
-#define VAL1 0x11223344
-#define VAL2 0x44332211
-
-static void handler1(int sig, siginfo_t *si, ucontext_t *uc)
-{
- /* Since the handler will be called as kill leaves the kernel,
- this is replacing the kill syscall's return value. */
- if (uc->uc_mcontext.gregs[REG_EAX] != 0)
- printf("FAILED: handler2 expected eax == 0, not %d\n", uc->uc_mcontext.gregs[REG_EAX]);
- uc->uc_mcontext.gregs[REG_EAX] = VAL1;
-
- asm volatile (
- "movl $0, %%edx\n"
- "movl $0, %%esi\n"
- "movl $0, %%edi\n"
- : : : "edx", "esi", "edi");
-}
-
-static void handler2(int sig, struct sigcontext sc)
-{
- /* Since the handler will be called as kill leaves the kernel,
- this is replacing the kill syscall's return value. */
- if (sc.eax != 0)
- printf("FAILED: handler2 expected eax == 0, not %p\n", (void*)sc.eax);
-
- sc.eax = VAL2;
-
- asm volatile (
- "movl $0, %%edx\n"
- "movl $0, %%esi\n"
- "movl $0, %%edi\n"
- : : : "edx", "esi", "edi");
-}
-
-int main()
-{
- struct sigaction sa;
- int ret;
- int v2, v3, v4;
-
- sa.sa_handler = (void*)handler1;
- sa.sa_flags = SA_SIGINFO;
- sigfillset(&sa.sa_mask);
-
- sigaction(SIGUSR1, &sa, NULL);
-
- sa.sa_handler = (void*)handler2;
- sa.sa_flags = 0;
- sigfillset(&sa.sa_mask);
-
- sigaction(SIGUSR2, &sa, NULL);
-
- asm volatile (
- //"movl $0x11111111, %%ebp\n"
- "movl $0x22222222, %%edx\n"
- "movl $0x33333333, %%esi\n"
- "movl $0x44444444, %%edi\n"
- "int $0x80"
- : "=a" (ret), "=d" (v2), "=S" (v3), "=D" (v4)
- : "0" (__NR_kill), "b" (getpid()), "c" (SIGUSR1));
- printf("v2=%x v3=%x v4=%x\n", v2, v3, v4);
-
- if (ret == VAL1)
- printf("PASS %x\n", ret);
- else
- printf("FAIL ret=%x not %x\n", ret, VAL1);
-
- asm volatile (
- //"movl $0x11111111, %%ebp\n"
- "movl $0x22222222, %%edx\n"
- "movl $0x33333333, %%esi\n"
- "movl $0x44444444, %%edi\n"
- "int $0x80"
- : "=a" (ret), "=d" (v2), "=S" (v3), "=D" (v4)
- : "0" (__NR_kill), "b" (getpid()), "c" (SIGUSR2));
- printf("v2=%x v3=%x v4=%x\n", v2, v3, v4);
-
- if (ret == VAL2)
- printf("PASS %x\n", ret);
- else
- printf("FAIL ret=%x not %x\n", ret, VAL2);
-
- return 0;
-}
Deleted: trunk/none/tests/x86/sigcontext.stderr.exp
===================================================================
--- trunk/none/tests/x86/sigcontext.stderr.exp 2009-04-15 07:36:54 UTC (rev 9552)
+++ trunk/none/tests/x86/sigcontext.stderr.exp 2009-04-15 23:10:04 UTC (rev 9553)
@@ -1,2 +0,0 @@
-
-
Deleted: trunk/none/tests/x86/sigcontext.stdout.exp
===================================================================
--- trunk/none/tests/x86/sigcontext.stdout.exp 2009-04-15 07:36:54 UTC (rev 9552)
+++ trunk/none/tests/x86/sigcontext.stdout.exp 2009-04-15 23:10:04 UTC (rev 9553)
@@ -1,4 +0,0 @@
-v2=22222222 v3=33333333 v4=44444444
-PASS 11223344
-v2=22222222 v3=33333333 v4=44444444
-PASS 44332211
Deleted: trunk/none/tests/x86/sigcontext.vgtest
===================================================================
--- trunk/none/tests/x86/sigcontext.vgtest 2009-04-15 07:36:54 UTC (rev 9552)
+++ trunk/none/tests/x86/sigcontext.vgtest 2009-04-15 23:10:04 UTC (rev 9553)
@@ -1 +0,0 @@
-prog: sigcontext
Copied: trunk/none/tests/x86-linux (from rev 9550, branches/DARWIN/none/tests/x86-linux)
Copied: trunk/none/tests/x86-linux/filter_stderr (from rev 9552, branches/DARWIN/none/tests/x86-linux/filter_stderr)
===================================================================
--- trunk/none/tests/x86-linux/filter_stderr (rev 0)
+++ trunk/none/tests/x86-linux/filter_stderr 2009-04-15 23:10:04 UTC (rev 9553)
@@ -0,0 +1,4 @@
+#! /bin/sh
+
+../filter_stderr
+
|