#endif
#if defined(LINUX)
-# if defined(SPARC)
+# if defined(SPARC) || defined(SPARC64)
# define LINUXSPARC
# endif
# if defined(ALPHA)
#include <linux/a.out.h>
#include <asm/psr.h>
#undef SUPPORTED_PERSONALITIES
+#if defined(SPARC64)
+#define SUPPORTED_PERSONALITIES 3
+#else
#define SUPPORTED_PERSONALITIES 2
+#endif /* SPARC64 */
#endif /* LINUXSPARC */
#ifdef X86_64
#define TCB_FOLLOWFORK 00400 /* Process should have forks followed */
#define TCB_REPRINT 01000 /* We should reprint this syscall on exit */
#ifdef LINUX
-# if defined(ALPHA) || defined(SPARC) || defined(POWERPC) || defined(IA64) || defined(HPPA) || defined(SH) || defined(SH64) || defined(S390) || defined(S390X) || defined(ARM)
+# if defined(ALPHA) || defined(SPARC) || defined(SPARC64) || defined(POWERPC) || defined(IA64) || defined(HPPA) || defined(SH) || defined(SH64) || defined(S390) || defined(S390X) || defined(ARM)
# define TCB_WAITEXECVE 02000 /* ignore SIGTRAP after exceve */
# endif
# define TCB_CLONE_DETACHED 04000 /* CLONE_DETACHED set in creating syscall */
# define __NR_exit_group 234
# elif defined S390 || defined S390X
# define __NR_exit_group 248
-# elif defined SPARC
+# elif defined SPARC || defined SPARC64
# define __NR_exit_group 188
# endif /* ALPHA et al */
# endif /* !__NR_exit_group */
#endif
extern int set_personality P((int personality));
-extern char *xlookup P((struct xlat *, int));
+extern char *xlookup P((const struct xlat *, int));
extern struct tcb *alloctcb P((int));
extern struct tcb *pid2tcb P((int));
extern void droptcb P((struct tcb *));
+extern int expand_tcbtab P((void));
extern void set_sortby P((char *));
extern void set_overhead P((int));
extern void newoutf P((struct tcb *));
extern int get_scno P((struct tcb *));
extern int trace_syscall P((struct tcb *));
-extern void printxval P((struct xlat *, int, char *));
+extern void printxval P((const struct xlat *, int, char *));
extern int printargs P((struct tcb *));
-extern int addflags P((struct xlat *, int));
-extern int printflags P((struct xlat *, int));
+extern int addflags P((const struct xlat *, int));
+extern int printflags P((const struct xlat *, int));
extern int umoven P((struct tcb *, long, int, char *));
extern int umovestr P((struct tcb *, long, int, char *));
extern int upeek P((int, long, long *));
extern void printsock P((struct tcb *, long, int));
extern void print_sock_optmgmt P((struct tcb *, long, int));
extern void printrusage P((struct tcb *, long));
+extern void printuid P((const char *, unsigned long));
extern int clearbpt P((struct tcb *));
extern int setbpt P((struct tcb *));
extern int sigishandled P((struct tcb *, int));
extern void printcall P((struct tcb *));
-extern char *signame P((int));
+extern const char *signame P((int));
extern void printsignal P((int));
extern void printleader P((struct tcb *));
extern void printtrailer P((struct tcb *));
#endif
extern int internal_fork P((struct tcb *));
extern int internal_exec P((struct tcb *));
-extern int internal_wait P((struct tcb *));
+extern int internal_wait P((struct tcb *, int));
extern int internal_exit P((struct tcb *));
-extern char *ioctl_lookup P((long));
+extern const struct ioctlent *ioctl_lookup P((long));
+extern const struct ioctlent *ioctl_next_match P((const struct ioctlent *));
extern int ioctl_decode P((struct tcb *, long, long));
extern int term_ioctl P((struct tcb *, long, long));
extern int sock_ioctl P((struct tcb *, long, long));
#ifdef SUNOS4
extern int fixvfork P((struct tcb *));
#endif
-#if !(defined(LINUX) && !defined(SPARC))
+#if !(defined(LINUX) && !defined(SPARC) && !defined(SPARC64) && !defined(IA64))
extern long getrval2 P((struct tcb *));
#endif
#ifdef USE_PROCFS
int nargs;
int sys_flags;
int (*sys_func)();
- char *sys_name;
+ const char *sys_name;
};
-extern struct sysent *sysent;
+extern const struct sysent *sysent;
extern int nsyscalls;
-extern char **errnoent;
+extern const char *const *errnoent;
extern int nerrnos;
struct ioctlent {
- char *doth;
- char *symbol;
+ const char *doth;
+ const char *symbol;
unsigned long code;
};
-extern struct ioctlent *ioctlent;
-extern int nioctlent;
-
-extern char **signalent;
-extern int nsignals;
-
-extern struct ioctlent *ioctlent;
+extern const struct ioctlent *ioctlent;
extern int nioctlents;
-extern char **signalent;
+
+extern const char *const *signalent;
extern int nsignals;
-extern struct ioctlent ioctlent0[];
-extern int nioctlents0;
-extern char *signalent0[];
-extern int nsignals0;
+extern const struct ioctlent ioctlent0[];
+extern const int nioctlents0;
+extern const char *const signalent0[];
+extern const int nsignals0;
#if SUPPORTED_PERSONALITIES >= 2
-extern struct ioctlent ioctlent1[];
-extern int nioctlents1;
-extern char *signalent1[];
-extern int nsignals1;
+extern const struct ioctlent ioctlent1[];
+extern constint nioctlents1;
+extern const char *const signalent1[];
+extern const int nsignals1;
#endif /* SUPPORTED_PERSONALITIES >= 2 */
#if SUPPORTED_PERSONALITIES >= 3
-extern struct ioctlent ioctlent2[];
-extern int nioctlents2;
-extern char *signalent2[];
-extern int nsignals2;
+extern const struct ioctlent ioctlent2[];
+extern const int nioctlents2;
+extern const char *const signalent2[];
+extern constint nsignals2;
#endif /* SUPPORTED_PERSONALITIES >= 3 */
#if defined(FREEBSD) || (defined(LINUX) \
- && defined(POWERPC) && !defined(__powerpc64__))
+ && defined(POWERPC) && !defined(__powerpc64__)) \
+ || (defined (LINUX) && defined (MIPS) && !defined(__mips64))
/* ARRGH! off_t args are aligned on 64 bit boundaries! */
#define ALIGN64(tcp,arg) \
do { \