diff options
author | Dmitry V. Levin <ldv@altlinux.org> | 2014-02-05 02:09:49 +0000 |
---|---|---|
committer | Dmitry V. Levin <ldv@altlinux.org> | 2014-02-05 02:28:16 +0000 |
commit | 2a32eaa157b2da63f181c37c37ecead405740d68 (patch) | |
tree | 402b3b4f99764d867e3a38c4a51aa57b3b14bd6a | |
parent | 9f56d87cc42eec3226477bdf26bfb094bc66f66a (diff) | |
download | strace-2a32eaa157b2da63f181c37c37ecead405740d68.tar.gz strace-2a32eaa157b2da63f181c37c37ecead405740d68.tar.bz2 strace-2a32eaa157b2da63f181c37c37ecead405740d68.tar.xz |
Convert personality_options to XLAT form
* linux/personality.h: New file.
* Makefile.am (EXTRA_DIST): Add it.
* system.c: Include <linux/personality.h>.
(personality_options): Update PER_* constants, convert to XLAT form.
-rw-r--r-- | Makefile.am | 1 | ||||
-rw-r--r-- | linux/personality.h | 69 | ||||
-rw-r--r-- | system.c | 44 |
3 files changed, 93 insertions, 21 deletions
diff --git a/Makefile.am b/Makefile.am index 90f333d..2ba30f6 100644 --- a/Makefile.am +++ b/Makefile.am @@ -125,6 +125,7 @@ EXTRA_DIST = \ linux/mtd-abi.h \ linux/or1k/ioctlent.h.in \ linux/or1k/syscallent.h \ + linux/personality.h \ linux/powerpc/errnoent1.h \ linux/powerpc/ioctlent.h.in \ linux/powerpc/ioctlent1.h \ diff --git a/linux/personality.h b/linux/personality.h new file mode 100644 index 0000000..aa169c4 --- /dev/null +++ b/linux/personality.h @@ -0,0 +1,69 @@ +#ifndef _UAPI_LINUX_PERSONALITY_H +#define _UAPI_LINUX_PERSONALITY_H + + +/* + * Flags for bug emulation. + * + * These occupy the top three bytes. + */ +enum { + UNAME26 = 0x0020000, + ADDR_NO_RANDOMIZE = 0x0040000, /* disable randomization of VA space */ + FDPIC_FUNCPTRS = 0x0080000, /* userspace function ptrs point to descriptors + * (signal handling) + */ + MMAP_PAGE_ZERO = 0x0100000, + ADDR_COMPAT_LAYOUT = 0x0200000, + READ_IMPLIES_EXEC = 0x0400000, + ADDR_LIMIT_32BIT = 0x0800000, + SHORT_INODE = 0x1000000, + WHOLE_SECONDS = 0x2000000, + STICKY_TIMEOUTS = 0x4000000, + ADDR_LIMIT_3GB = 0x8000000, +}; + +/* + * Security-relevant compatibility flags that must be + * cleared upon setuid or setgid exec: + */ +#define PER_CLEAR_ON_SETID (READ_IMPLIES_EXEC | \ + ADDR_NO_RANDOMIZE | \ + ADDR_COMPAT_LAYOUT | \ + MMAP_PAGE_ZERO) + +/* + * Personality types. + * + * These go in the low byte. Avoid using the top bit, it will + * conflict with error returns. + */ +enum { + PER_LINUX = 0x0000, + PER_LINUX_32BIT = 0x0000 | ADDR_LIMIT_32BIT, + PER_LINUX_FDPIC = 0x0000 | FDPIC_FUNCPTRS, + PER_SVR4 = 0x0001 | STICKY_TIMEOUTS | MMAP_PAGE_ZERO, + PER_SVR3 = 0x0002 | STICKY_TIMEOUTS | SHORT_INODE, + PER_SCOSVR3 = 0x0003 | STICKY_TIMEOUTS | + WHOLE_SECONDS | SHORT_INODE, + PER_OSR5 = 0x0003 | STICKY_TIMEOUTS | WHOLE_SECONDS, + PER_WYSEV386 = 0x0004 | STICKY_TIMEOUTS | SHORT_INODE, + PER_ISCR4 = 0x0005 | STICKY_TIMEOUTS, + PER_BSD = 0x0006, + PER_SUNOS = 0x0006 | STICKY_TIMEOUTS, + PER_XENIX = 0x0007 | STICKY_TIMEOUTS | SHORT_INODE, + PER_LINUX32 = 0x0008, + PER_LINUX32_3GB = 0x0008 | ADDR_LIMIT_3GB, + PER_IRIX32 = 0x0009 | STICKY_TIMEOUTS,/* IRIX5 32-bit */ + PER_IRIXN32 = 0x000a | STICKY_TIMEOUTS,/* IRIX6 new 32-bit */ + PER_IRIX64 = 0x000b | STICKY_TIMEOUTS,/* IRIX6 64-bit */ + PER_RISCOS = 0x000c, + PER_SOLARIS = 0x000d | STICKY_TIMEOUTS, + PER_UW7 = 0x000e | STICKY_TIMEOUTS | MMAP_PAGE_ZERO, + PER_OSF4 = 0x000f, /* OSF/1 v4 */ + PER_HPUX = 0x0010, + PER_MASK = 0x00ff, +}; + + +#endif /* _UAPI_LINUX_PERSONALITY_H */ @@ -79,6 +79,7 @@ # include <asm/sysmips.h> #endif #include <linux/sysctl.h> +#include <linux/personality.h> static const struct xlat mount_flags[] = { XLAT(MS_MGC_VAL), @@ -175,27 +176,28 @@ sys_umount2(struct tcb *tcp) /* These are not macros, but enums. We just copy the values by hand from Linux 2.6.9 here. */ static const struct xlat personality_options[] = { - { 0, "PER_LINUX" }, - { 0x00800000, "PER_LINUX_32BIT"}, - { 0x04100001, "PER_SVR4" }, - { 0x05000002, "PER_SVR3" }, - { 0x07000003, "PER_SCOSVR3" }, - { 0x06000003, "PER_OSR5" }, - { 0x05000004, "PER_WYSEV386" }, - { 0x04000005, "PER_ISCR4" }, - { 0x00000006, "PER_BSD" }, - { 0x04000006, "PER_SUNOS" }, - { 0x05000007, "PER_XENIX" }, - { 0x00000008, "PER_LINUX32" }, - { 0x08000008, "PER_LINUX32_3GB"}, - { 0x04000009, "PER_IRIX32" }, - { 0x0400000a, "PER_IRIXN32" }, - { 0x0400000b, "PER_IRIX64" }, - { 0x0000000c, "PER_RISCOS" }, - { 0x0400000d, "PER_SOLARIS" }, - { 0x0410000e, "PER_UW7" }, - { 0x0000000f, "PER_OSF4" }, - { 0x00000010, "PER_HPUX" }, + XLAT(PER_LINUX), + XLAT(PER_LINUX_32BIT), + XLAT(PER_LINUX_FDPIC), + XLAT(PER_SVR4), + XLAT(PER_SVR3), + XLAT(PER_SCOSVR3), + XLAT(PER_OSR5), + XLAT(PER_WYSEV386), + XLAT(PER_ISCR4), + XLAT(PER_BSD), + XLAT(PER_SUNOS), + XLAT(PER_XENIX), + XLAT(PER_LINUX32), + XLAT(PER_LINUX32_3GB), + XLAT(PER_IRIX32), + XLAT(PER_IRIXN32), + XLAT(PER_IRIX64), + XLAT(PER_RISCOS), + XLAT(PER_SOLARIS), + XLAT(PER_UW7), + XLAT(PER_OSF4), + XLAT(PER_HPUX), { 0, NULL }, }; |