aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/libc.h25
-rw-r--r--src/lib9/getcallerpc-386.c7
-rw-r--r--src/lib9/getcallerpc-arm.c8
-rw-r--r--src/lib9/getcallerpc-arm64.c8
-rw-r--r--src/lib9/getcallerpc-mips.c8
-rw-r--r--src/lib9/getcallerpc-power.c11
-rw-r--r--src/lib9/getcallerpc-sun4u.s5
-rw-r--r--src/lib9/getcallerpc-x86_64.c7
-rw-r--r--src/lib9/mkfile2
9 files changed, 15 insertions, 66 deletions
diff --git a/include/libc.h b/include/libc.h
index 45b22b69..94d5b5ca 100644
--- a/include/libc.h
+++ b/include/libc.h
@@ -11,13 +11,13 @@
#define _LIBC_H_ 1
#if defined(__cplusplus)
extern "C" {
-#endif
+#endif
#include <utf.h>
#include <fmt.h>
/*
- * Begin usual libc.h
+ * Begin usual libc.h
*/
#ifndef nil
@@ -361,7 +361,7 @@ enum
extern int p9atexit(void(*)(void));
extern void p9atexitdont(void(*)(void));
extern int atnotify(int(*)(void*, char*), int);
-/*
+/*
* <stdlib.h>
extern double atof(char*); <stdlib.h>
*/
@@ -385,6 +385,9 @@ extern int exitcode(char*);
extern void exits(char*);
extern double frexp(double, int*);
extern ulong getcallerpc(void*);
+#if defined(__GNUC__) || defined(__clang__)
+#define getcallerpc(x) ((ulong)__builtin_return_address(0))
+#endif
extern char* p9getenv(char*);
extern int p9putenv(char*, char*);
extern int getfields(char*, char**, int, int, char*);
@@ -479,7 +482,7 @@ extern void lock(Lock*);
extern void unlock(Lock*);
extern int canlock(Lock*);
extern int (*_lock)(Lock*, int, ulong);
-extern void (*_unlock)(Lock*, ulong);
+extern void (*_unlock)(Lock*, ulong);
typedef struct QLock QLock;
struct QLock
@@ -670,15 +673,15 @@ extern void freenetconninfo(NetConnInfo*);
enum
{
- RFNAMEG = (1<<0),
- RFENVG = (1<<1),
+ RFNAMEG = (1<<0),
+ RFENVG = (1<<1),
RFFDG = (1<<2),
RFNOTEG = (1<<3),
RFPROC = (1<<4),
RFMEM = (1<<5),
RFNOWAIT = (1<<6),
- RFCNAMEG = (1<<10),
- RFCENVG = (1<<11),
+ RFCNAMEG = (1<<10),
+ RFCENVG = (1<<11),
RFCFDG = (1<<12)
/* RFREND = (1<<13), */
/* RFNOMNT = (1<<14) */
@@ -707,7 +710,7 @@ struct Dir {
char *uid; /* owner name */
char *gid; /* group name */
char *muid; /* last modifier name */
-
+
/* 9P2000.u extensions */
uint uidnum; /* numeric uid */
uint gidnum; /* numeric gid */
@@ -750,7 +753,7 @@ extern int p9exec(char*, char*[]);
extern int p9execl(char*, ...);
/* extern int p9fork(void); */
extern int p9rfork(int);
-/* not implemented
+/* not implemented
extern int fauth(int, char*);
extern int fstat(int, uchar*, int);
extern int fwstat(int, uchar*, int);
@@ -767,7 +770,7 @@ extern int notifyoff(char*);
extern int p9open(char*, int);
extern int fd2path(int, char*, int);
extern int p9pipe(int*);
-/*
+/*
* use defs from <unistd.h>
extern long pread(int, void*, long, vlong);
extern long preadv(int, IOchunk*, int, vlong);
diff --git a/src/lib9/getcallerpc-386.c b/src/lib9/getcallerpc-386.c
deleted file mode 100644
index 1367370e..00000000
--- a/src/lib9/getcallerpc-386.c
+++ /dev/null
@@ -1,7 +0,0 @@
-#include <lib9.h>
-
-ulong
-getcallerpc(void *x)
-{
- return (((ulong*)(x))[-1]);
-}
diff --git a/src/lib9/getcallerpc-arm.c b/src/lib9/getcallerpc-arm.c
deleted file mode 100644
index 9bb4a955..00000000
--- a/src/lib9/getcallerpc-arm.c
+++ /dev/null
@@ -1,8 +0,0 @@
-#include <lib9.h>
-
-ulong
-getcallerpc(void *x)
-{
- return ((ulong*)x)[-2];
-}
-
diff --git a/src/lib9/getcallerpc-arm64.c b/src/lib9/getcallerpc-arm64.c
deleted file mode 100644
index 9bb4a955..00000000
--- a/src/lib9/getcallerpc-arm64.c
+++ /dev/null
@@ -1,8 +0,0 @@
-#include <lib9.h>
-
-ulong
-getcallerpc(void *x)
-{
- return ((ulong*)x)[-2];
-}
-
diff --git a/src/lib9/getcallerpc-mips.c b/src/lib9/getcallerpc-mips.c
deleted file mode 100644
index 9bb4a955..00000000
--- a/src/lib9/getcallerpc-mips.c
+++ /dev/null
@@ -1,8 +0,0 @@
-#include <lib9.h>
-
-ulong
-getcallerpc(void *x)
-{
- return ((ulong*)x)[-2];
-}
-
diff --git a/src/lib9/getcallerpc-power.c b/src/lib9/getcallerpc-power.c
deleted file mode 100644
index b4bf6980..00000000
--- a/src/lib9/getcallerpc-power.c
+++ /dev/null
@@ -1,11 +0,0 @@
-#include <lib9.h>
-
-ulong
-getcallerpc(void *x)
-{
- ulong *lp;
-
- lp = x;
-
- return lp[-1];
-}
diff --git a/src/lib9/getcallerpc-sun4u.s b/src/lib9/getcallerpc-sun4u.s
deleted file mode 100644
index f28e57f1..00000000
--- a/src/lib9/getcallerpc-sun4u.s
+++ /dev/null
@@ -1,5 +0,0 @@
-.text
-.globl getcallerpc
-getcallerpc:
- retl
- or %o7, %r0, %o0
diff --git a/src/lib9/getcallerpc-x86_64.c b/src/lib9/getcallerpc-x86_64.c
deleted file mode 100644
index 1367370e..00000000
--- a/src/lib9/getcallerpc-x86_64.c
+++ /dev/null
@@ -1,7 +0,0 @@
-#include <lib9.h>
-
-ulong
-getcallerpc(void *x)
-{
- return (((ulong*)(x))[-1]);
-}
diff --git a/src/lib9/mkfile b/src/lib9/mkfile
index 8f7283ef..943b597b 100644
--- a/src/lib9/mkfile
+++ b/src/lib9/mkfile
@@ -104,7 +104,7 @@ LIB9OFILES=\
fcallfmt.$O\
frand.$O\
get9root.$O\
- getcallerpc-$OBJTYPE.$O\
+ getcallerpc.$O\
getenv.$O\
getfields.$O\
getnetconn.$O\