diff options
Diffstat (limited to 'ports/sysdeps/unix/sysv/linux/alpha')
-rw-r--r-- | ports/sysdeps/unix/sysv/linux/alpha/bits/fcntl.h | 1 | ||||
-rw-r--r-- | ports/sysdeps/unix/sysv/linux/alpha/bits/ipc.h | 4 | ||||
-rw-r--r-- | ports/sysdeps/unix/sysv/linux/alpha/bits/mman.h | 102 | ||||
-rw-r--r-- | ports/sysdeps/unix/sysv/linux/alpha/bits/msq.h | 4 | ||||
-rw-r--r-- | ports/sysdeps/unix/sysv/linux/alpha/bits/sem.h | 4 | ||||
-rw-r--r-- | ports/sysdeps/unix/sysv/linux/alpha/bits/shm.h | 12 | ||||
-rw-r--r-- | ports/sysdeps/unix/sysv/linux/alpha/bits/stat.h | 4 | ||||
-rw-r--r-- | ports/sysdeps/unix/sysv/linux/alpha/configure | 2 | ||||
-rw-r--r-- | ports/sysdeps/unix/sysv/linux/alpha/configure.ac (renamed from ports/sysdeps/unix/sysv/linux/alpha/configure.in) | 0 | ||||
-rw-r--r-- | ports/sysdeps/unix/sysv/linux/alpha/kernel_stat.h | 4 | ||||
-rw-r--r-- | ports/sysdeps/unix/sysv/linux/alpha/nptl/pt-vfork.S | 2 | ||||
-rw-r--r-- | ports/sysdeps/unix/sysv/linux/alpha/nptl/vfork.S | 2 | ||||
-rw-r--r-- | ports/sysdeps/unix/sysv/linux/alpha/rt_sigaction.S | 18 | ||||
-rw-r--r-- | ports/sysdeps/unix/sysv/linux/alpha/xstatconv.c | 14 |
14 files changed, 60 insertions, 113 deletions
diff --git a/ports/sysdeps/unix/sysv/linux/alpha/bits/fcntl.h b/ports/sysdeps/unix/sysv/linux/alpha/bits/fcntl.h index 2e31691c2b..02c9a7f751 100644 --- a/ports/sysdeps/unix/sysv/linux/alpha/bits/fcntl.h +++ b/ports/sysdeps/unix/sysv/linux/alpha/bits/fcntl.h @@ -36,6 +36,7 @@ #define __O_DIRECT 02000000 /* Direct disk access. */ #define __O_NOATIME 04000000 /* Do not set atime. */ #define __O_PATH 040000000 /* Resolve pathname but do not open file. */ +#define __O_TMPFILE 0100100000 /* Atomically create nameless file. */ /* Not necessary, files are always with 64bit off_t. */ #define __O_LARGEFILE 0 diff --git a/ports/sysdeps/unix/sysv/linux/alpha/bits/ipc.h b/ports/sysdeps/unix/sysv/linux/alpha/bits/ipc.h index 66903d3ac2..deb3a2b213 100644 --- a/ports/sysdeps/unix/sysv/linux/alpha/bits/ipc.h +++ b/ports/sysdeps/unix/sysv/linux/alpha/bits/ipc.h @@ -49,6 +49,6 @@ struct ipc_perm unsigned int mode; /* Read/write permission. */ unsigned short int __seq; /* Sequence number. */ unsigned short int __pad1; - unsigned long int __unused1; - unsigned long int __unused2; + unsigned long int __glibc_reserved1; + unsigned long int __glibc_reserved2; }; diff --git a/ports/sysdeps/unix/sysv/linux/alpha/bits/mman.h b/ports/sysdeps/unix/sysv/linux/alpha/bits/mman.h index c51b05d37f..a0d087c1fa 100644 --- a/ports/sysdeps/unix/sysv/linux/alpha/bits/mman.h +++ b/ports/sysdeps/unix/sysv/linux/alpha/bits/mman.h @@ -23,46 +23,7 @@ /* The following definitions basically come from the kernel headers. But the kernel header is not namespace clean. */ - -/* Protections are chosen from these bits, OR'd together. The - implementation does not necessarily support PROT_EXEC or PROT_WRITE - without PROT_READ. The only guarantees are that no writing will be - allowed without PROT_WRITE and no access will be allowed for PROT_NONE. */ - -#define PROT_READ 0x1 /* Page can be read. */ -#define PROT_WRITE 0x2 /* Page can be written. */ -#define PROT_EXEC 0x4 /* Page can be executed. */ -#define PROT_NONE 0x0 /* Page can not be accessed. */ -#define PROT_GROWSDOWN 0x01000000 /* Extend change to start of - growsdown vma (mprotect only). */ -#define PROT_GROWSUP 0x02000000 /* Extend change to start of - growsup vma (mprotect only). */ - -/* Sharing types (must choose one and only one of these). */ -#define MAP_SHARED 0x01 /* Share changes. */ -#define MAP_PRIVATE 0x02 /* Changes are private. */ -#ifdef __USE_MISC -# define MAP_TYPE 0x0f /* Mask for type of mapping. */ -#endif - -/* Other flags. */ -#define MAP_FIXED 0x100 /* Interpret addr exactly. */ -#ifdef __USE_MISC -# define MAP_FILE 0 -# define MAP_ANONYMOUS 0x10 /* Don't use a file. */ -# define MAP_ANON MAP_ANONYMOUS -/* When MAP_HUGETLB is set bits [26:31] encode the log2 of the huge page size. */ -# define MAP_HUGE_SHIFT 26 -# define MAP_HUGE_MASK 0x3f -#endif - -/* Not used by Linux, but here to make sure we don't clash with - OSF/1 defines. */ -#if 0 && defined __USE_BSD -# define MAP_HASSEMAPHORE 0x0200 -# define MAP_INHERIT 0x0400 -# define MAP_UNALIGNED 0x0800 -#endif +#define __MAP_ANONYMOUS 0x10 /* Don't use a file. */ /* These are Linux-specific. */ #ifdef __USE_MISC @@ -77,53 +38,28 @@ # define MAP_HUGETLB 0x100000 /* Create huge page mapping. */ #endif -/* Flags to `msync'. */ -#define MS_ASYNC 1 /* Sync memory asynchronously. */ -#define MS_SYNC 2 /* Synchronous memory sync. */ -#define MS_INVALIDATE 4 /* Invalidate the caches. */ - /* Flags for `mlockall'. */ -#define MCL_CURRENT 8192 /* Lock all currently mapped pages. */ -#define MCL_FUTURE 16384 /* Lock all additions to address - space. */ +#define MCL_CURRENT 8192 +#define MCL_FUTURE 16384 -/* Flags for `mremap'. */ -#ifdef __USE_GNU -# define MREMAP_MAYMOVE 1 -# define MREMAP_FIXED 2 -#endif +#include <bits/mman-linux.h> + +/* Values that differ from standard <mman-linux.h>. For the most part newer + values are shared, but older values are skewed. */ + +#undef MAP_FIXED +#define MAP_FIXED 0x100 + +#undef MS_SYNC +#define MS_SYNC 2 +#undef MS_INVALIDATE +#define MS_INVALIDATE 4 -/* Advice to `madvise'. */ #ifdef __USE_BSD -# define MADV_NORMAL 0 /* No further special treatment. */ -# define MADV_RANDOM 1 /* Expect random page references. */ -# define MADV_SEQUENTIAL 2 /* Expect sequential page references. */ -# define MADV_WILLNEED 3 /* Will need these pages. */ -# define MADV_DONTNEED 6 /* Don't need these pages. */ -# define MADV_REMOVE 9 /* Remove these pages and resources. */ -# define MADV_DONTFORK 10 /* Do not inherit across fork. */ -# define MADV_DOFORK 11 /* Do inherit across fork. */ -# define MADV_MERGEABLE 12 /* KSM may merge identical pages. */ -# define MADV_UNMERGEABLE 13 /* KSM may not merge identical pages. */ -# define MADV_HUGEPAGE 14 /* Worth backing with hugepages. */ -# define MADV_NOHUGEPAGE 15 /* Not worth backing with hugepages. */ -# define MADV_DONTDUMP 16 /* Exclude from the core dump. */ -# define MADV_DODUMP 17 /* Clear MADV_DONTDUMP. */ -# define MADV_HWPOISON 100 /* Poison a page for testing. */ +# undef MADV_DONTNEED +# define MADV_DONTNEED 6 #endif - -/* The POSIX people had to invent similar names for the same things. */ #ifdef __USE_XOPEN2K -# define POSIX_MADV_NORMAL 0 /* No further special treatment. */ -# define POSIX_MADV_RANDOM 1 /* Expect random page references. */ -# define POSIX_MADV_SEQUENTIAL 2 /* Expect sequential page references. */ -# define POSIX_MADV_WILLNEED 3 /* Will need these pages. */ -# define POSIX_MADV_DONTNEED 6 /* Don't need these pages. */ -#endif - -/* Not used by Linux, but here to make sure we don't clash with - OSF/1 defines. */ -#if 0 && defined __USE_BSD -# define MADV_DONTNEED_COMPAT 4 /* Old version? */ -# define MADV_SPACEAVAIL 5 /* Ensure resources are available. */ +# undef POSIX_MADV_DONTNEED +# define POSIX_MADV_DONTNEED 6 #endif diff --git a/ports/sysdeps/unix/sysv/linux/alpha/bits/msq.h b/ports/sysdeps/unix/sysv/linux/alpha/bits/msq.h index 8bb057b4ee..415ef21a99 100644 --- a/ports/sysdeps/unix/sysv/linux/alpha/bits/msq.h +++ b/ports/sysdeps/unix/sysv/linux/alpha/bits/msq.h @@ -46,8 +46,8 @@ struct msqid_ds msglen_t msg_qbytes; /* max number of bytes allowed on queue */ __pid_t msg_lspid; /* pid of last msgsnd() */ __pid_t msg_lrpid; /* pid of last msgrcv() */ - unsigned long int __unused1; - unsigned long int __unused2; + unsigned long int __glibc_reserved1; + unsigned long int __glibc_reserved2; }; #ifdef __USE_MISC diff --git a/ports/sysdeps/unix/sysv/linux/alpha/bits/sem.h b/ports/sysdeps/unix/sysv/linux/alpha/bits/sem.h index c2d73aa4e8..739cbc415f 100644 --- a/ports/sysdeps/unix/sysv/linux/alpha/bits/sem.h +++ b/ports/sysdeps/unix/sysv/linux/alpha/bits/sem.h @@ -41,8 +41,8 @@ struct semid_ds __time_t sem_otime; /* last semop() time */ __time_t sem_ctime; /* last time changed by semctl() */ unsigned long int sem_nsems; /* number of semaphores in set */ - unsigned long int __unused1; - unsigned long int __unused2; + unsigned long int __glibc_reserved1; + unsigned long int __glibc_reserved2; }; /* The user should define a union like the following to use it for arguments diff --git a/ports/sysdeps/unix/sysv/linux/alpha/bits/shm.h b/ports/sysdeps/unix/sysv/linux/alpha/bits/shm.h index 125e277f35..cd9476f4de 100644 --- a/ports/sysdeps/unix/sysv/linux/alpha/bits/shm.h +++ b/ports/sysdeps/unix/sysv/linux/alpha/bits/shm.h @@ -56,8 +56,8 @@ struct shmid_ds __pid_t shm_cpid; /* pid of creator */ __pid_t shm_lpid; /* pid of last shmop */ shmatt_t shm_nattch; /* number of current attaches */ - unsigned long int __unused1; - unsigned long int __unused2; + unsigned long int __glibc_reserved1; + unsigned long int __glibc_reserved2; }; #ifdef __USE_MISC @@ -79,10 +79,10 @@ struct shminfo unsigned long int shmmni; unsigned long int shmseg; unsigned long int shmall; - unsigned long int __unused1; - unsigned long int __unused2; - unsigned long int __unused3; - unsigned long int __unused4; + unsigned long int __glibc_reserved1; + unsigned long int __glibc_reserved2; + unsigned long int __glibc_reserved3; + unsigned long int __glibc_reserved4; }; struct shm_info diff --git a/ports/sysdeps/unix/sysv/linux/alpha/bits/stat.h b/ports/sysdeps/unix/sysv/linux/alpha/bits/stat.h index 3e106477f3..c34cbca371 100644 --- a/ports/sysdeps/unix/sysv/linux/alpha/bits/stat.h +++ b/ports/sysdeps/unix/sysv/linux/alpha/bits/stat.h @@ -92,7 +92,7 @@ struct stat __ST_TIME(a); /* Time of last access. */ __ST_TIME(m); /* Time of last modification. */ __ST_TIME(c); /* Time of last status change. */ - long __unused[3]; + long __glibc_reserved[3]; }; #ifdef __USE_LARGEFILE64 @@ -113,7 +113,7 @@ struct stat64 __ST_TIME(a); /* Time of last access. */ __ST_TIME(m); /* Time of last modification. */ __ST_TIME(c); /* Time of last status change. */ - long __unused[3]; + long __glibc_reserved[3]; }; #endif diff --git a/ports/sysdeps/unix/sysv/linux/alpha/configure b/ports/sysdeps/unix/sysv/linux/alpha/configure index b5df524c1c..9afb5874cb 100644 --- a/ports/sysdeps/unix/sysv/linux/alpha/configure +++ b/ports/sysdeps/unix/sysv/linux/alpha/configure @@ -1,4 +1,4 @@ -# This file is generated from configure.in by Autoconf. DO NOT EDIT! +# This file is generated from configure.ac by Autoconf. DO NOT EDIT! # Local configure fragment for sysdeps/unix/sysv/linux/alpha # We did historically export the unwinder from glibc. diff --git a/ports/sysdeps/unix/sysv/linux/alpha/configure.in b/ports/sysdeps/unix/sysv/linux/alpha/configure.ac index a8b6996657..a8b6996657 100644 --- a/ports/sysdeps/unix/sysv/linux/alpha/configure.in +++ b/ports/sysdeps/unix/sysv/linux/alpha/configure.ac diff --git a/ports/sysdeps/unix/sysv/linux/alpha/kernel_stat.h b/ports/sysdeps/unix/sysv/linux/alpha/kernel_stat.h index 94d358efc4..6708411407 100644 --- a/ports/sysdeps/unix/sysv/linux/alpha/kernel_stat.h +++ b/ports/sysdeps/unix/sysv/linux/alpha/kernel_stat.h @@ -40,7 +40,7 @@ struct kernel_stat64 unsigned long st_mtimensec; unsigned long st_ctime; unsigned long st_ctimensec; - long __unused[3]; + long __glibc_reserved[3]; }; /* Definition of `struct stat' used by glibc 2.0. */ @@ -82,7 +82,7 @@ struct glibc21_stat unsigned int st_flags; unsigned int st_gen; int __pad3; - long __unused[4]; + long __glibc_reserved[4]; }; #define XSTAT_IS_XSTAT64 1 diff --git a/ports/sysdeps/unix/sysv/linux/alpha/nptl/pt-vfork.S b/ports/sysdeps/unix/sysv/linux/alpha/nptl/pt-vfork.S index d9629b9ec5..50b152d0cb 100644 --- a/ports/sysdeps/unix/sysv/linux/alpha/nptl/pt-vfork.S +++ b/ports/sysdeps/unix/sysv/linux/alpha/nptl/pt-vfork.S @@ -25,7 +25,7 @@ ldl a2, PID_OFFSET(v0); \ mov v0, a1; \ /* Write back its negation, to indicate that the pid value is \ - uninitialized in the the child, and in the window between \ + uninitialized in the child, and in the window between \ here and the point at which we restore the value. */ \ negl a2, t0; \ stl t0, PID_OFFSET(v0); diff --git a/ports/sysdeps/unix/sysv/linux/alpha/nptl/vfork.S b/ports/sysdeps/unix/sysv/linux/alpha/nptl/vfork.S index 1ca7678d1c..03aa37f43c 100644 --- a/ports/sysdeps/unix/sysv/linux/alpha/nptl/vfork.S +++ b/ports/sysdeps/unix/sysv/linux/alpha/nptl/vfork.S @@ -26,7 +26,7 @@ mov v0, a1; \ /* If the cached value is initialized (nonzero), then write \ back its negation, or INT_MIN, to indicate that the pid \ - value is uninitialized in the the child, and in the window \ + value is uninitialized in the child, and in the window \ between here and the point at which we restore the value. */ \ ldah t0, -0x8000; \ negl a2, t1; \ diff --git a/ports/sysdeps/unix/sysv/linux/alpha/rt_sigaction.S b/ports/sysdeps/unix/sysv/linux/alpha/rt_sigaction.S index 3d291fd0b4..6efa7386d5 100644 --- a/ports/sysdeps/unix/sysv/linux/alpha/rt_sigaction.S +++ b/ports/sysdeps/unix/sysv/linux/alpha/rt_sigaction.S @@ -83,14 +83,21 @@ PSEUDO_END(__syscall_rt_sigaction) cfi_offset (64, \base + 2 * 8) .endm - .align 4 - cfi_startproc cfi_return_column (64) .cfi_signal_frame SIGCONTEXT_REGS -648 - cfi_def_cfa_offset (648) + + /* While this frame is marked as a signal frame, that only applies + to how this return address is handled for the outer frame. + The return address that arrived here, from the inner frame, is + not marked as a signal frame and so the unwinder still tries to + subtract 1 to examine the presumed call insn. Thus we must + extend the unwind info to a nop before the start. */ + nop + .align 4 + __syscall_sigreturn: mov sp, a0 ldi v0, __NR_sigreturn @@ -98,8 +105,11 @@ __syscall_sigreturn: .size __syscall_sigreturn, .-__syscall_sigreturn .type __syscall_sigreturn, @function - .align 4 + /* See above wrt including the nop. */ cfi_def_cfa_offset (176 + 648) + nop + .align 4 + __syscall_rt_sigreturn: mov sp,a0 ldi v0,__NR_rt_sigreturn diff --git a/ports/sysdeps/unix/sysv/linux/alpha/xstatconv.c b/ports/sysdeps/unix/sysv/linux/alpha/xstatconv.c index 79ec57840e..4e7e78b98f 100644 --- a/ports/sysdeps/unix/sysv/linux/alpha/xstatconv.c +++ b/ports/sysdeps/unix/sysv/linux/alpha/xstatconv.c @@ -74,10 +74,10 @@ __xstat_conv (int vers, struct kernel_stat *kbuf, void *ubuf) buf->st_flags = kbuf->st_flags; buf->st_gen = kbuf->st_gen; buf->__pad3 = 0; - buf->__unused[0] = 0; - buf->__unused[1] = 0; - buf->__unused[2] = 0; - buf->__unused[3] = 0; + buf->__glibc_reserved[0] = 0; + buf->__glibc_reserved[1] = 0; + buf->__glibc_reserved[2] = 0; + buf->__glibc_reserved[3] = 0; } break; @@ -105,9 +105,9 @@ __xstat_conv (int vers, struct kernel_stat *kbuf, void *ubuf) buf->st_ctime = kbuf->st_ctime; buf->st_ctimensec = 0; - buf->__unused[0] = 0; - buf->__unused[1] = 0; - buf->__unused[2] = 0; + buf->__glibc_reserved[0] = 0; + buf->__glibc_reserved[1] = 0; + buf->__glibc_reserved[2] = 0; } break; |