commit 540caa5873bcc3bc2a0e1896119f5b53a0e8e630 from: Russ Cox date: Tue Jan 07 20:31:51 2020 UTC lib9: remove getcallerpc implementations These make no sense and are not really needed at all. Add a best-effort attempt to get at the gcc/clang macro in lib9.h, but if it fails, no big deal. Fixes #324. commit - 2897735523dd05a4ef21d25d3d99fa7fa0b24b44 commit + 540caa5873bcc3bc2a0e1896119f5b53a0e8e630 blob - 45b22b691cded6bfcfdf2e11fd3883bd049d5c3b blob + 94d5b5ca500807dfbd8c67a87ca20c1309b80eea --- include/libc.h +++ include/libc.h @@ -11,13 +11,13 @@ #define _LIBC_H_ 1 #if defined(__cplusplus) extern "C" { -#endif +#endif #include #include /* - * 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); -/* +/* * extern double atof(char*); */ @@ -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 extern long pread(int, void*, long, vlong); extern long preadv(int, IOchunk*, int, vlong); blob - 1367370e93737504e23f9d9460166ea770c27887 (mode 644) blob + /dev/null --- src/lib9/getcallerpc-386.c +++ /dev/null @@ -1,7 +0,0 @@ -#include - -ulong -getcallerpc(void *x) -{ - return (((ulong*)(x))[-1]); -} blob - 9bb4a9559a4d4e4cf6dcd7d9fd3506f29ef96b03 (mode 644) blob + /dev/null --- src/lib9/getcallerpc-arm.c +++ /dev/null @@ -1,8 +0,0 @@ -#include - -ulong -getcallerpc(void *x) -{ - return ((ulong*)x)[-2]; -} - blob - 9bb4a9559a4d4e4cf6dcd7d9fd3506f29ef96b03 (mode 644) blob + /dev/null --- src/lib9/getcallerpc-arm64.c +++ /dev/null @@ -1,8 +0,0 @@ -#include - -ulong -getcallerpc(void *x) -{ - return ((ulong*)x)[-2]; -} - blob - 9bb4a9559a4d4e4cf6dcd7d9fd3506f29ef96b03 (mode 644) blob + /dev/null --- src/lib9/getcallerpc-mips.c +++ /dev/null @@ -1,8 +0,0 @@ -#include - -ulong -getcallerpc(void *x) -{ - return ((ulong*)x)[-2]; -} - blob - b4bf6980febc2fe8bffb4264c4e09d49578d2f50 (mode 644) blob + /dev/null --- src/lib9/getcallerpc-power.c +++ /dev/null @@ -1,11 +0,0 @@ -#include - -ulong -getcallerpc(void *x) -{ - ulong *lp; - - lp = x; - - return lp[-1]; -} blob - f28e57f18b4630d158f136171082983b1fcadc70 (mode 644) blob + /dev/null --- src/lib9/getcallerpc-sun4u.s +++ /dev/null @@ -1,5 +0,0 @@ -.text -.globl getcallerpc -getcallerpc: - retl - or %o7, %r0, %o0 blob - 1367370e93737504e23f9d9460166ea770c27887 (mode 644) blob + /dev/null --- src/lib9/getcallerpc-x86_64.c +++ /dev/null @@ -1,7 +0,0 @@ -#include - -ulong -getcallerpc(void *x) -{ - return (((ulong*)(x))[-1]); -} blob - 8f7283ef8f5386087c9ecc50cc2b161597b489fc blob + 943b597b9871a64e00b87b2ed70fa9e763dae0ec --- src/lib9/mkfile +++ 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\