diff options
| author | forsyth <forsyth@vitanuova.com> | 2011-06-29 15:15:08 +0100 |
|---|---|---|
| committer | forsyth <forsyth@vitanuova.com> | 2011-06-29 15:15:08 +0100 |
| commit | 6b2e32351192dd10dd3d671e2b61608c692507e6 (patch) | |
| tree | 82f17976ee34dd2ad73477efdefccb46d6f85ec2 | |
| parent | c594916b7a30516eff15698d7cc1f8e440a55a3d (diff) | |
20110629-1515
30 files changed, 51 insertions, 32 deletions
@@ -1,3 +1,6 @@ +20110629 + change x86 getcallerpc to avoid use of %ebp [issue 266] + change type of getcallerpc to uintptr from ulong 20110619 emu/port/devfs-posix.c: put major/minor st_dev into path without mapping (with luck) emu/port/kproc-pthreads.c: ensure pthread stack is at least PTHREAD_STACK_MIN (plus slop) diff --git a/DragonFly/386/include/lib9.h b/DragonFly/386/include/lib9.h index 284f3c24..19cffeef 100644 --- a/DragonFly/386/include/lib9.h +++ b/DragonFly/386/include/lib9.h @@ -260,7 +260,7 @@ extern void _assert(char*); extern double charstod(int(*)(void*), void*); extern char* cleanname(char*); extern double frexp(double, int*); -extern ulong getcallerpc(void*); +extern uintptr getcallerpc(void*); extern int getfields(char*, char**, int, int, char*); extern char* getuser(void); extern char* getwd(char*, int); diff --git a/FreeBSD/386/include/lib9.h b/FreeBSD/386/include/lib9.h index 88914732..e17701ac 100644 --- a/FreeBSD/386/include/lib9.h +++ b/FreeBSD/386/include/lib9.h @@ -261,7 +261,7 @@ extern void _assert(char*); extern double charstod(int(*)(void*), void*); extern char* cleanname(char*); extern double frexp(double, int*); -extern ulong getcallerpc(void*); +extern uintptr getcallerpc(void*); extern int getfields(char*, char**, int, int, char*); extern char* getuser(void); extern char* getwd(char*, int); diff --git a/Irix/mips/include/lib9.h b/Irix/mips/include/lib9.h index e5cf87d2..010777be 100644 --- a/Irix/mips/include/lib9.h +++ b/Irix/mips/include/lib9.h @@ -244,7 +244,7 @@ struct Tm { extern void _assert(char*); extern double charstod(int(*)(void*), void*); extern char* cleanname(char*); -extern ulong getcallerpc(void*); +extern uintptr getcallerpc(void*); extern int getfields(char*, char**, int, int, char*); extern char* getuser(void); extern char* getwd(char*, int); diff --git a/Linux/386/include/lib9.h b/Linux/386/include/lib9.h index a782b4d6..4c26709b 100644 --- a/Linux/386/include/lib9.h +++ b/Linux/386/include/lib9.h @@ -6,6 +6,9 @@ #define _LARGEFILE_SOURCE 1 #define _LARGEFILE64_SOURCE 1 #define _FILE_OFFSET_BITS 64 +#ifdef USE_PTHREADS +#define _REENTRANT 1 +#endif #include <features.h> #include <sys/types.h> #include <stdlib.h> @@ -256,7 +259,7 @@ extern vlong osnsec(void); extern void _assert(char*); extern double charstod(int(*)(void*), void*); extern char* cleanname(char*); -extern ulong getcallerpc(void*); +extern uintptr getcallerpc(void*); extern int getfields(char*, char**, int, int, char*); extern char* getuser(void); extern char* getwd(char*, int); diff --git a/Linux/arm/include/lib9.h b/Linux/arm/include/lib9.h index c76ef660..b3ed6a33 100644 --- a/Linux/arm/include/lib9.h +++ b/Linux/arm/include/lib9.h @@ -6,6 +6,9 @@ #define _LARGEFILE_SOURCE 1 #define _LARGEFILE64_SOURCE 1 #define _FILE_OFFSET_BITS 64 +#ifdef USE_PTHREADS +#define _REENTRANT 1 +#endif #include <features.h> #include <sys/types.h> #include <stdlib.h> @@ -256,7 +259,7 @@ extern vlong osnsec(void); extern void _assert(char*); extern double charstod(int(*)(void*), void*); extern char* cleanname(char*); -//extern ulong getcallerpc(void*); +//extern uintptr getcallerpc(void*); extern int getfields(char*, char**, int, int, char*); extern char* getuser(void); extern char* getwd(char*, int); @@ -455,7 +458,7 @@ extern char *argv0; #define setbinmode() /* need the inline because the link register is not saved in a known location */ -static __inline ulong getcallerpc(void* dummy) { +static __inline uintptr getcallerpc(void* dummy) { ulong lr; __asm__( "mov %0, %%lr;" : "=r" (lr) diff --git a/Linux/power/include/lib9.h b/Linux/power/include/lib9.h index de93d34e..8bd3bf74 100644 --- a/Linux/power/include/lib9.h +++ b/Linux/power/include/lib9.h @@ -6,6 +6,9 @@ #define _LARGEFILE_SOURCE 1 #define _LARGEFILE64_SOURCE 1 #define _FILE_OFFSET_BITS 64 +#ifdef USE_PTHREADS +#define _REENTRANT 1 +#endif #include <features.h> #include <sys/types.h> #include <stdlib.h> @@ -257,7 +260,7 @@ extern vlong osnsec(void); extern void _assert(char*); extern double charstod(int(*)(void*), void*); extern char* cleanname(char*); -extern ulong getcallerpc(void*); +extern uintptr getcallerpc(void*); extern int getfields(char*, char**, int, int, char*); extern char* getuser(void); extern char* getwd(char*, int); diff --git a/Linux/spim/include/lib9.h b/Linux/spim/include/lib9.h index ca034445..8718c294 100644 --- a/Linux/spim/include/lib9.h +++ b/Linux/spim/include/lib9.h @@ -261,7 +261,7 @@ extern vlong osnsec(void); extern void _assert(char*); extern double charstod(int(*)(void*), void*); extern char* cleanname(char*); -extern ulong getcallerpc(void*); +extern uintptr getcallerpc(void*); extern int getfields(char*, char**, int, int, char*); extern char* getuser(void); extern char* getwd(char*, int); diff --git a/MacOSX/386/include/lib9.h b/MacOSX/386/include/lib9.h index ce2321cf..2d04266b 100644 --- a/MacOSX/386/include/lib9.h +++ b/MacOSX/386/include/lib9.h @@ -275,7 +275,7 @@ extern void _assert(char*); extern double charstod(int(*)(void*), void*); extern char* cleanname(char*); extern double frexp(double, int*); -extern ulong getcallerpc(void*); +extern uintptr getcallerpc(void*); extern int getfields(char*, char**, int, int, char*); extern char* getuser(void); extern char* getwd(char*, int); diff --git a/MacOSX/power/include/lib9.h b/MacOSX/power/include/lib9.h index fa172673..0c1ed055 100644 --- a/MacOSX/power/include/lib9.h +++ b/MacOSX/power/include/lib9.h @@ -275,7 +275,7 @@ extern void _assert(char*); extern double charstod(int(*)(void*), void*); extern char* cleanname(char*); extern double frexp(double, int*); -extern ulong getcallerpc(void*); +extern uintptr getcallerpc(void*); extern int getfields(char*, char**, int, int, char*); extern char* getuser(void); extern char* getwd(char*, int); diff --git a/NetBSD/386/include/lib9.h b/NetBSD/386/include/lib9.h index cc7e03ef..b2884de5 100644 --- a/NetBSD/386/include/lib9.h +++ b/NetBSD/386/include/lib9.h @@ -264,7 +264,7 @@ extern void _assert(char*); extern double charstod(int(*)(void*), void*); extern char* cleanname(char*); extern double frexp(double, int*); -extern ulong getcallerpc(void*); +extern uintptr getcallerpc(void*); extern int getfields(char*, char**, int, int, char*); extern char* getuser(void); extern char* getwd(char*, int); diff --git a/Nt/386/include/lib9.h b/Nt/386/include/lib9.h index 71dbda51..0937c33e 100755 --- a/Nt/386/include/lib9.h +++ b/Nt/386/include/lib9.h @@ -269,7 +269,7 @@ extern vlong osnsec(void); extern void _assert(char*); extern double charstod(int(*)(void*), void*); extern char* cleanname(char*); -extern ulong getcallerpc(void*); +extern uintptr getcallerpc(void*); extern int getfields(char*, char**, int, int, char*); extern char* getuser(void); extern char* getuser(void); diff --git a/OpenBSD/386/include/lib9.h b/OpenBSD/386/include/lib9.h index 5008a148..050fa070 100644 --- a/OpenBSD/386/include/lib9.h +++ b/OpenBSD/386/include/lib9.h @@ -261,7 +261,7 @@ extern void _assert(char*); extern double charstod(int(*)(void*), void*); extern char* cleanname(char*); extern double frexp(double, int*); -extern ulong getcallerpc(void*); +extern uintptr getcallerpc(void*); extern int getfields(char*, char**, int, int, char*); extern char* getuser(void); extern char* getwd(char*, int); diff --git a/Plan9/386/include/lib9.h b/Plan9/386/include/lib9.h index 33721e45..e60fba8a 100644 --- a/Plan9/386/include/lib9.h +++ b/Plan9/386/include/lib9.h @@ -341,7 +341,7 @@ extern int enc16(char*, int, uchar*, int); extern int encodefmt(Fmt*); extern void exits(char*); extern double frexp(double, int*); -extern ulong getcallerpc(void*); +extern uintptr getcallerpc(void*); extern char* getenv(char*); extern int getfields(char*, char**, int, int, char*); extern char* getuser(void); diff --git a/Plan9/arm/include/lib9.h b/Plan9/arm/include/lib9.h index 33721e45..e60fba8a 100644 --- a/Plan9/arm/include/lib9.h +++ b/Plan9/arm/include/lib9.h @@ -341,7 +341,7 @@ extern int enc16(char*, int, uchar*, int); extern int encodefmt(Fmt*); extern void exits(char*); extern double frexp(double, int*); -extern ulong getcallerpc(void*); +extern uintptr getcallerpc(void*); extern char* getenv(char*); extern int getfields(char*, char**, int, int, char*); extern char* getuser(void); diff --git a/Plan9/mips/include/lib9.h b/Plan9/mips/include/lib9.h index 333b29f9..91e0f3d4 100644 --- a/Plan9/mips/include/lib9.h +++ b/Plan9/mips/include/lib9.h @@ -341,7 +341,7 @@ extern int enc16(char*, int, uchar*, int); extern int encodefmt(Fmt*); extern void exits(char*); extern double frexp(double, int*); -extern ulong getcallerpc(void*); +extern uintptr getcallerpc(void*); extern char* getenv(char*); extern int getfields(char*, char**, int, int, char*); extern char* getuser(void); diff --git a/Plan9/power/include/lib9.h b/Plan9/power/include/lib9.h index 333b29f9..91e0f3d4 100644 --- a/Plan9/power/include/lib9.h +++ b/Plan9/power/include/lib9.h @@ -341,7 +341,7 @@ extern int enc16(char*, int, uchar*, int); extern int encodefmt(Fmt*); extern void exits(char*); extern double frexp(double, int*); -extern ulong getcallerpc(void*); +extern uintptr getcallerpc(void*); extern char* getenv(char*); extern int getfields(char*, char**, int, int, char*); extern char* getuser(void); diff --git a/Plan9/sparc/include/lib9.h b/Plan9/sparc/include/lib9.h index 333b29f9..91e0f3d4 100644 --- a/Plan9/sparc/include/lib9.h +++ b/Plan9/sparc/include/lib9.h @@ -341,7 +341,7 @@ extern int enc16(char*, int, uchar*, int); extern int encodefmt(Fmt*); extern void exits(char*); extern double frexp(double, int*); -extern ulong getcallerpc(void*); +extern uintptr getcallerpc(void*); extern char* getenv(char*); extern int getfields(char*, char**, int, int, char*); extern char* getuser(void); diff --git a/Solaris/386/include/lib9.h b/Solaris/386/include/lib9.h index 661d62ab..57b69801 100644 --- a/Solaris/386/include/lib9.h +++ b/Solaris/386/include/lib9.h @@ -103,7 +103,7 @@ extern ulong getrealloctag(void*); extern void* malloctopoolblock(void*); extern int getfields(char*, char**, int, int, char*); -extern ulong getcallerpc(void*); +extern uintptr getcallerpc(void*); /* * print routines diff --git a/Solaris/sparc/include/lib9.h b/Solaris/sparc/include/lib9.h index 1fb520c5..a79cd72b 100644 --- a/Solaris/sparc/include/lib9.h +++ b/Solaris/sparc/include/lib9.h @@ -255,7 +255,7 @@ extern void _assert(char*); extern double charstod(int(*)(void*), void*); extern char* cleanname(char*); extern double frexp(double, int*); -extern ulong getcallerpc(void*); +extern uintptr getcallerpc(void*); extern int getfields(char*, char**, int, int, char*); extern char* getuser(void); extern char* getwd(char*, int); diff --git a/include/kern.h b/include/kern.h index 93121b8a..cf268bff 100644 --- a/include/kern.h +++ b/include/kern.h @@ -202,6 +202,7 @@ extern Rune* runefmtstrflush(Fmt*); #pragma varargck type "%" void #pragma varargck type "n" int* #pragma varargck type "p" void* +#pragma varargck type "p" uintptr #pragma varargck flag ',' #pragma varargck type "<" void* #pragma varargck type "[" void* @@ -341,7 +342,7 @@ extern int enc16(char*, int, uchar*, int); extern int encodefmt(Fmt*); extern void exits(char*); extern double frexp(double, int*); -extern ulong getcallerpc(void*); +extern uintptr getcallerpc(void*); extern char* getenv(char*); extern int getfields(char*, char**, int, int, char*); extern char* getuser(void); diff --git a/include/version.h b/include/version.h index 7582f39f..db8015a9 100644 --- a/include/version.h +++ b/include/version.h @@ -1 +1 @@ -#define VERSION "Fourth Edition (20110619)" +#define VERSION "Fourth Edition (20110629)" diff --git a/lib9/getcallerpc-DragonFly-386.S b/lib9/getcallerpc-DragonFly-386.S index d4ae6218..f05355ec 100644 --- a/lib9/getcallerpc-DragonFly-386.S +++ b/lib9/getcallerpc-DragonFly-386.S @@ -3,5 +3,6 @@ .type getcallerpc,@function .global getcallerpc getcallerpc: - movl 4(%ebp), %eax + movl 4(%esp), %eax + movl -4(%eax), %eax ret diff --git a/lib9/getcallerpc-FreeBSD-386.S b/lib9/getcallerpc-FreeBSD-386.S index 134c2847..d7dc16ea 100644 --- a/lib9/getcallerpc-FreeBSD-386.S +++ b/lib9/getcallerpc-FreeBSD-386.S @@ -3,5 +3,6 @@ .type getcallerpc,@function .global getcallerpc getcallerpc: - movl 4(%ebp), %eax + movl 4(%esp), %eax + movl -4(%eax), %eax ret diff --git a/lib9/getcallerpc-Linux-386.S b/lib9/getcallerpc-Linux-386.S index ae817758..a439875e 100644 --- a/lib9/getcallerpc-Linux-386.S +++ b/lib9/getcallerpc-Linux-386.S @@ -2,5 +2,6 @@ .type getcallerpc,@function .global getcallerpc getcallerpc: - movl 4(%ebp), %eax + movl 4(%esp), %eax + movl -4(%eax), %eax ret diff --git a/lib9/getcallerpc-MacOSX-386.s b/lib9/getcallerpc-MacOSX-386.s index 92f940d7..d2aef82e 100644 --- a/lib9/getcallerpc-MacOSX-386.s +++ b/lib9/getcallerpc-MacOSX-386.s @@ -1,8 +1,7 @@ .file "getcallerpc-MacOSX-386.s" - .text - .globl _getcallerpc _getcallerpc: - movl 4(%ebp), %eax + movl 4(%esp), %eax + movl -4(%eax), %eax ret diff --git a/lib9/getcallerpc-NetBSD-386.S b/lib9/getcallerpc-NetBSD-386.S index 8cf0040b..09148627 100644 --- a/lib9/getcallerpc-NetBSD-386.S +++ b/lib9/getcallerpc-NetBSD-386.S @@ -3,5 +3,6 @@ .type getcallerpc,@function .global getcallerpc getcallerpc: - movl 4(%ebp), %eax + movl 4(%esp), %eax + movl -4(%eax), %eax ret diff --git a/lib9/getcallerpc-OpenBSD-386.S b/lib9/getcallerpc-OpenBSD-386.S index edf1fd61..88817063 100644 --- a/lib9/getcallerpc-OpenBSD-386.S +++ b/lib9/getcallerpc-OpenBSD-386.S @@ -3,5 +3,6 @@ .type getcallerpc,@function .global getcallerpc getcallerpc: - movl 4(%ebp), %eax + movl 4(%esp), %eax + movl -4(%eax), %eax ret diff --git a/lib9/getcallerpc-Solaris-386.s b/lib9/getcallerpc-Solaris-386.s index 5d4c7053..ad582d39 100644 --- a/lib9/getcallerpc-Solaris-386.s +++ b/lib9/getcallerpc-Solaris-386.s @@ -1,7 +1,8 @@ .align 4 .globl getcallerpc getcallerpc: - movl 4(%ebp),%eax + movl 4(%esp), %eax + movl -4(%eax), %eax ret .align 4 .type getcallerpc,@function diff --git a/lib9/getcallerpc-Unixware-386.s b/lib9/getcallerpc-Unixware-386.s index 5d4c7053..ad582d39 100644 --- a/lib9/getcallerpc-Unixware-386.s +++ b/lib9/getcallerpc-Unixware-386.s @@ -1,7 +1,8 @@ .align 4 .globl getcallerpc getcallerpc: - movl 4(%ebp),%eax + movl 4(%esp), %eax + movl -4(%eax), %eax ret .align 4 .type getcallerpc,@function |
