about summary refs log tree commit diff
path: root/sysdeps/unix/sysv
Commit message (Collapse)AuthorAgeFilesLines
* linux: open and openat ignore 'mode' with O_TMPFILE in flagsEric Rannaud2016-08-143-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Both open and openat load their last argument 'mode' lazily, using va_arg() only if O_CREAT is found in oflag. This is wrong, mode is also necessary if O_TMPFILE is in oflag. By chance on x86_64, the problem wasn't evident when using O_TMPFILE with open, as the 3rd argument of open, even when not loaded with va_arg, is left untouched in RDX, where the syscall expects it. However, openat was not so lucky, and O_TMPFILE couldn't be used: mode is the 4th argument, in RCX, but the syscall expects its 4th argument in a different register than the glibc wrapper, in R10. Introduce a macro __OPEN_NEEDS_MODE (oflag) to test if either O_CREAT or O_TMPFILE is set in oflag. Tested on Linux x86_64. [BZ #17523] * io/fcntl.h (__OPEN_NEEDS_MODE): New macro. * io/bits/fcntl2.h (open): Use it. (openat): Likewise. * io/open.c (__libc_open): Likewise. * io/open64.c (__libc_open64): Likewise. * io/open64_2.c (__open64_2): Likewise. * io/open_2.c (__open_2): Likewise. * io/openat.c (__openat): Likewise. * io/openat64.c (__openat64): Likewise. * io/openat64_2.c (__openat64_2): Likewise. * io/openat_2.c (__openat_2): Likewise. * sysdeps/mach/hurd/open.c (__libc_open): Likewise. * sysdeps/mach/hurd/openat.c (__openat): Likewise. * sysdeps/posix/open64.c (__libc_open64): Likewise. * sysdeps/unix/sysv/linux/dl-openat64.c (openat64): Likewise. * ports/sysdeps/unix/sysv/linux/generic/open.c (__libc_open): Likewise. (__open_nocancel): Likewise. * ports/sysdeps/unix/sysv/linux/generic/open64.c (__libc_open64): Likewise. * sysdeps/unix/sysv/linux/open64.c (__libc_open64): Likewise. * sysdeps/unix/sysv/linux/openat.c (__OPENAT): Likewise. (cherry picked from commit 65f6f938cd562a614a68e15d0581a34b177ec29d)
* CVE-2016-1234: glob: Do not copy d_name field of struct dirent [BZ #19779]Florian Weimer2016-05-121-0/+22
| | | | | | | | Instead, we store the data we need from the return value of readdir in an object of the new type struct readdir_result. This type is independent of the layout of struct dirent. (cherry picked from commit 5171f3079f2cc53e0548fc4967361f4d1ce9d7ea)
* S390: Fix "backtrace() returns infinitely deep stack frames with ↵Stefan Liebler2016-04-282-0/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | makecontext()" [BZ #18508]. On s390/s390x backtrace(buffer, size) returns the series of called functions until "makecontext_ret" and additional entries (up to "size") with "makecontext_ret". GDB-backtrace is also warning: "Backtrace stopped: previous frame identical to this frame (corrupt stack?)" To reproduce this scenario you have to setup a new context with makecontext() and activate it with setcontext(). See e.g. cf() function in testcase stdlib/tst-makecontext.c. Or see bug in libgo "Bug 66303 - runtime.Caller() returns infinitely deep stack frames on s390x " (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66303). This patch omits the cfi_startproc/cfi_endproc directives in ENTRY/END macro of __makecontext_ret. Thus no frame information is generated in .eh_frame and backtrace stops after __makecontext_ret. There is also no .eh_frame info for _start or thread_start functions. ChangeLog: [BZ #18508] * stdlib/Makefile ($(objpfx)tst-makecontext3): Depend on $(libdl). * stdlib/tst-makecontext.c (cf): Test if _Unwind_Backtrace is not called infinitely times. (backtrace_helper): New function. (trace_arg): New struct. (st1): Enlarge stack size. * sysdeps/unix/sysv/linux/s390/s390-32/__makecontext_ret.S: (__makecontext_ret): Omit cfi_startproc and cfi_endproc. * sysdeps/unix/sysv/linux/s390/s390-64/__makecontext_ret.S: Likewise. (cherry picked from commit 890b7a4b33d482b5c768ab47d70758b80227e9bc)
* S/390: Fix setcontext/swapcontext which are not restoring sigmask. [BZ #18080]Stefan Liebler2016-04-284-24/+12
| | | | | | | This patch uses sigprocmask(SIG_SETMASK) instead of SIG_BLOCK in setcontext, swapcontext. (cherry picked from commit 2e807f29595eb5b1e5d0decc6e356a3562ecc58e)
* S/390: Revert the jmp_buf/ucontext_t ABI changeStefan Liebler2014-09-0517-276/+61
| | | | Backport of commit 2f438e20ab591641760e97458d5d1569942eced5
* SPARC: add prlimit and prlimit64 in <bits/resource.h> (BZ #16943)Aurelien Jarno2014-05-161-0/+27
| | | | | | | | | | prlimit and prlimit64 have been added in the main <bits/resource.h>, but not in the SPARC specific version. Fix that. Note: this is Debian bug#703559, reported by Emilio Pozuelo Monfort <pochu@debian.org> (cherry picked from commit d16e6ec7ca2c861ba681e3a2fbd431725774292e)
* SPARC: add EFD_SEMAPHORE in <bits/eventfd.h> (BZ #16916)Aurelien Jarno2014-05-071-0/+2
| | | | | | | EFD_SEMAPHORE has been added in the main <bits/eventfd.h>, but not in the SPARC specific version. Fix that. (cherry picked from commit 83df9ad0cc861ef24f08a88c5a4c055e2516d33c)
* Revert "Patch [1/4] async-signal safe TLS."Allan McRae2014-02-062-50/+0
| | | | This reverts commit 69a17d9d245dc3551792e95e1823cc2d877592f3.
* Fix comment in kernel-features.h.Carlos O'Donell2014-02-051-1/+1
| | | | Use "was" not "were."
* Fix tst-setgetname for Linux kernels < 2.6.33.Carlos O'Donell2014-02-051-0/+6
| | | | | | | | Support for /proc/self/task/$tid/comm as added in Linux 2.6.33, therefore since the test tst-setgetname relies on this functionality to operate we must skip the test in kernels < 2.6.33. We wrap the checks with __ASSUME_PROC_PID_TASK_COMM such that in the future when we move arch_minimum_kernel to 2.6.33 we can remove this code.
* PowerPC: powerpc64le abilist for 2.17Adhemerval Zanella2014-02-0413-0/+3149
| | | | This patch is the abifiles for powerpc64le based on GLIBC 2.17.
* Restore ucontext ABI for soft-float sh4.Kaz Kojima2014-01-241-1/+1
|
* Adjust SH specific fpu_control.h and ucontext.h files.Kaz Kojima2014-01-232-103/+17
|
* S/390: Merge 32 and 64 bit ucontext.h.Andreas Krebbel2014-01-222-98/+6
|
* PowerPC: Fix gettimeofday ifunc selectionAdhemerval Zanella2014-01-202-4/+10
| | | | | | | | | | | | The IFUNC selector for gettimeofday runs before _libc_vdso_platform_setup where __vdso_gettimeofday is set. The selector then sets __gettimeofday (the internal version used within GLIBC) to use the system call version instead of the vDSO one. This patch changes the check if vDSO is available to get its value directly instead of rely on __vdso_gettimeofday. This patch changes it by getting the vDSO value directly. It fixes BZ#16431.
* PowerPC: Fix ftime gettimeofday internal call returning bogus dataAdhemerval Zanella2014-01-162-4/+36
| | | | | | | | | | | | This patches fixes BZ#16430 by setting a different symbol for internal GLIBC calls that points to ifunc resolvers. For PPC32, if the symbol is defined as hidden (which is the case for gettimeofday and time) the compiler will create local branches (symbol@local) and linker will not create PLT calls (required for IFUNC). This will leads to internal symbol calling the IFUNC resolver instead of the resolved symbol. For PPC64 this behavior does not occur because a call to a function in another translation unit might use a different toc pointer thus requiring a PLT call.
* S/390: Make ucontext_t extendible.Andreas Krebbel2014-01-0714-17/+279
|
* S/390: Make jmp_buf extendible.Andreas Krebbel2014-01-0710-6/+159
|
* ptrace.h: add __ prefix to ptrace_peeksiginfo_argsMike Frysinger2014-01-064-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | All the other ptrace structures in this file have a __ prefix except this new one. This in turn causes build problems for most packages that try to use ptrace such as strace: gcc -DHAVE_CONFIG_H -I. -I../.. -I../../linux/x86_64 -I../../linux \ -I./linux -Wall -Wwrite-strings -g -O2 -MT process.o -MD -MP \ -MF .deps/process.Tpo -c -o process.o ../../process.c In file included from ../../process.c:63:0: /usr/include/linux/ptrace.h:58:8: error: redefinition of 'struct ptrace_peeksiginfo_args' struct ptrace_peeksiginfo_args { ^ In file included from ../../defs.h:159:0, from ../../process.c:37: /usr/include/sys/ptrace.h:191:8: note: originally defined here struct ptrace_peeksiginfo_args ^ Since this struct was introduced in glibc-2.18, there shouldn't be any real regressions with adding the __ prefix. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* tst-fanotify: switch to AC_DEFINEMike Frysinger2014-01-043-2/+4
| | | | | Reported-by: Joseph S. Myers <joseph@codesourcery.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* Update copyright notices with scripts/update-copyrightsAllan McRae2014-01-01747-747/+747
|
* tst-fanotify: check for linux/fanotify.h existenceMike Frysinger2013-12-313-0/+61
| | | | | | | | We support older kernels that lack this header, so check for it before we try to use it. Reported-by: Adhemerval Zanella <azanella@linux.vnet.ibm.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* Flatten sysdeps/unix/bsd/bsd4.4 into sysdeps/unix/bsd.Joseph Myers2013-12-221-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As discussed in <https://sourceware.org/ml/libc-alpha/2012-04/msg00840.html> and <https://sourceware.org/ml/libc-alpha/2012-04/msg00989.html>, it seems appropriate to flatten sysdeps/unix/bsd/bsd4.4 into sysdeps/unix/bsd. The bulk of the patch is just moving files. The only other changes are: update paths in sysdeps/mach/hurd/Implies and sysdeps/unix/sysv/linux/wait3.c; merge the two syscalls.list files, with the removal of syscalls that were in sysdeps/unix/bsd/syscalls.list but overridden in the bsd4.4 directory by .c files there. Tested x86_64. The installed shared libraries are identical before and after the patch except for libc.so where the move of wait3.c (included by sysdeps/unix/sysv/linux/wait3.c) affects debug info, but the disassembly is unchanged. * sysdeps/mach/hurd/Implies: Change unix/bsd/bsd4.4 to unix/bsd. * sysdeps/unix/bsd/syscalls.list (chflags): Add entry from sysdeps/unix/bsd/bsd4.4/syscalls.list. (fchflags): Likewise. (revoke): Likewise. (setlogin): Likewise. (sigaltstack): Likewise. (wait4): Likewise. (sigblock): Remove. (sigsetmask): Likewise. (wait3): Likewise. (waitpid): Likewise. * sysdeps/unix/bsd/bsd4.4/syscalls.list: Remove file. * sysdeps/unix/sysv/linux/wait3.c: Update directory of included file. * sysdeps/unix/bsd/bsd4.4/Makefile: Move to ... * sysdeps/unix/bsd/Makefile: ... here. * sysdeps/unix/bsd/bsd4.4/Versions: Move to ... * sysdeps/unix/bsd/Versions: ... here. * sysdeps/unix/bsd/bsd4.4/bits/sockaddr.h: Move to ... * sysdeps/unix/bsd/bits/sockaddr.h: ... here. * sysdeps/unix/bsd/bsd4.4/cmsg_nxthdr.c: Move to ... * sysdeps/unix/bsd/cmsg_nxthdr.c: ... here. * sysdeps/unix/bsd/bsd4.4/sigblock.c: Move to ... * sysdeps/unix/bsd/sigblock.c: ... here. * sysdeps/unix/bsd/bsd4.4/sigsetmask.c: Move to ... * sysdeps/unix/bsd/sigsetmask.c: ... here. * sysdeps/unix/bsd/bsd4.4/sigvec.c: Move to ... * sysdeps/unix/bsd/sigvec.c: ... here. * sysdeps/unix/bsd/bsd4.4/tcdrain.c: Move to ... * sysdeps/unix/bsd/tcdrain.c: ... here. * sysdeps/unix/bsd/bsd4.4/tcgetattr.c: Move to ... * sysdeps/unix/bsd/tcgetattr.c: ... here. * sysdeps/unix/bsd/bsd4.4/tcsetattr.c: Move to ... * sysdeps/unix/bsd/tcsetattr.c: ... here. * sysdeps/unix/bsd/bsd4.4/wait.c: Move to ... * sysdeps/unix/bsd/wait.c: ... here. * sysdeps/unix/bsd/bsd4.4/wait3.c: Move to ... * sysdeps/unix/bsd/wait3.c: ... here. * sysdeps/unix/bsd/bsd4.4/waitpid.c: Move to ... * sysdeps/unix/bsd/waitpid.c: ... here.
* Patch [1/4] async-signal safe TLS.Paul Pluzhnikov2013-12-182-0/+50
| | | | | | | | | | | | | 2013-12-18 Andrew Hunter <ahh@google.com> * sysdeps/generic/ldsodefs.h (_dl_mask_all_signals): New prototype. (_dl_unmask_signals): Likewise. * sysdeps/mach/hurd/dl-sysdep.h (_dl_mask_all_signals): New stub. (_dl_unmask_all_signals): Likewise. * sysdeps/unix/sysv/linux/dl-sysdep.h (_dl_mask_all_signals): New prototype. (_dl_unmask_all_signals): Likewise. * sysdeps/unix/sysv/linux/dl-sysdep.c (_dl_mask_all_signals): New function. (_dl_unmask_signals): Likewise.
* Update powerpc-nofpu localplt.data for fegetround hidden_proto / hidden_def.Joseph Myers2013-12-181-1/+0
| | | | | | | | | | My recent changes that added libm_hidden_proto / libm_hidden_def for fegetround had the side effect of removing the need for a localplt.data entry for fegetround for powerpc-nofpu. This patch removes that entry. Tested powerpc-nofpu. * sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/localplt.data: Don't expect fegetround reference in libm.so.
* PowerPC: Adjust multiarch Implies for PowerPC64Adhemerval Zanella2013-12-131-2/+0
| | | | | | This patch adds Implies files on multiarch folder for POWER chips so multirach is enabled when building with --with-cpu and powerN option.
* PowerPC: Adjust multiarch Implies for PowerPC64Adhemerval Zanella2013-12-137-14/+0
| | | | | | This patch adds Implies files on multiarch folder for POWER chips so multirach is enabled when building with --with-cpu and powerN option.
* PowerPC: Adjust multiarch Implies for PowerPC32Adhemerval Zanella2013-12-066-12/+0
| | | | | This patch adds Implies files on multiarch folder for POWER chips so multirach is enabled when building with --with-cpu and powerN option.
* PowerPC: change sysdeps fpu folderAdhemerval Zanella2013-12-061-2/+0
| | | | | This patch makes the fpu/multiarch folder appears in front of the powerpc/fpu folder.
* PowerPC: initial support for multilib for PowerPC32Adhemerval Zanella2013-12-061-2/+0
| | | | | This patch add a empty Makefile, the C IFUNC helper macros, and a empty available IFUNC implementation enumeration.
* Add SH implementation of sotruss-lib.c and c++-types.data.Kaz Kojima2013-12-061-0/+67
|
* PowerPC: Add systemtap static probe points in setjmp/longjmpAdhemerval Zanella2013-12-051-1/+1
| | | | | | | | | This patch add static probes for setjmp/longjmp in the way gdb expects,fixing the gdb.base/longjmp.exp gdb testcases. It changes the symbol_name and use macros to to avoid change the probe names and ending up adding more logic on GDB (since with the expected name GDB work seamlessly).
* PowerPC64 ELFv2 ABI 6/6: Bump ld.so soname version numberUlrich Weigand2013-12-045-7/+190
| | | | | | | | | | | | | | | | To avoid having a ELFv2 binary accidentally picking up an old ABI ld.so, this patch bumps the soname to ld64.so.2. In theory (or for testing purposes) this will also allow co-installing ld.so versions for both ABIs on the same system. Note that the kernel will already be able to load executables of both ABIs. However, there is currently no plan to use that theoretical possibility in a any supported distribution environment ... Note that in order to check which ABI to use, we need to invoke the compiler to check the _CALL_ELF macro; this is done in a new configure check in sysdeps/unix/sysv/linux/powerpc/powerpc64/configure.ac, replacing the hard-coded value of default-abi in the Makefile.
* PowerPC64 ELFv2 ABI 4/6: Stack frame layout changesUlrich Weigand2013-12-045-59/+43
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This updates glibc for the changes in the ELFv2 relating to the stack frame layout. These are described in more detail here: http://gcc.gnu.org/ml/gcc-patches/2013-11/msg01149.html http://gcc.gnu.org/ml/gcc-patches/2013-11/msg01146.html Specifically, the "compiler and linker doublewords" were removed, which has the effect that the save slot for the TOC register is now at offset 24 rather than 40 to the stack pointer. In addition, a function may now no longer necessarily assume that its caller has set up a 64-byte register save area its use. To address the first change, the patch goes through all assembler files and replaces immediate offsets in instructions accessing the ABI-defined stack slots by symbolic offsets. Those already were defined in ucontext_i.sym and used in some of the context routines, but that doesn't really seem like the right place for those defines. The patch instead defines those symbolic offsets in sysdeps.h, in two variants for the old and new ABI, and uses them systematically in all assembler files, not just the context routines. The second change only affected a few assembler files that used the save area to temporarily store some registers. In those cases where this happens within a leaf function, this patch changes the code to store those registers to the "red zone" below the stack pointer. Otherwise, the functions already allocate a stack frame, and the patch changes them to add extra space in these frames as temporary space for the ELFv2 ABI.
* PowerPC64 ELFv2 ABI 2/6: Remove function descriptorsUlrich Weigand2013-12-043-1/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch adds support for the ELFv2 ABI feature to remove function descriptors. See this GCC patch for in-depth discussion: http://gcc.gnu.org/ml/gcc-patches/2013-11/msg01141.html This mostly involves two types of changes: updating assembler source files to the new logic, and updating the dynamic loader. After the refactoring in the previous patch, most of the assembler source changes can be handled simply by providing ELFv2 versions of the macros in sysdep.h. One somewhat non-obvious change is in __GI__setjmp: this used to "fall through" to the immediately following __setjmp ENTRY point. This is no longer safe in the ELFv2 since ENTRY defines both a global and a local entry point, and you cannot simply fall through to a global entry point as it requires r12 to be set up. Also, makecontext needs to be updated to set up registers according to the new ABI for calling into the context's start routine. The dynamic linker changes mostly consist of removing special code to handle function descriptors. We also need to support the new PLT and glink format used by the the ELFv2 linker, see: https://sourceware.org/ml/binutils/2013-10/msg00376.html In addition, the dynamic linker now verifies that the dynamic libraries it loads match its own ABI. The hack in VDSO_IFUNC_RET to "synthesize" a function descriptor for vDSO routines is also no longer necessary for ELFv2.
* PowerPC64 ELFv2 ABI 1/6: Code refactoringUlrich Weigand2013-12-041-3/+1
| | | | | | | | | | | | | | This is the first patch to support the new ELFv2 ABI in glibc. As preparation, this patch simply refactors some of the powerpc64 assembler code to move all code related to creating function descriptors (.opd section) or using function descriptors (function pointer call) into a central place in sysdep.h. Note that most locations creating .opd entries were already using macros in sysdep.h, this patch simply extends this to the remaining places. No relevant change in generated code expected.
* PowerPC64: Fix incorrect CFI in *context routinesUlrich Weigand2013-12-042-0/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | The context established by "makecontext" has a link register pointing back to an error path within the makecontext routine. This is currently covered by the CFI FDE for makecontext itself, which is simply wrong for the stack frame *inside* the context. When trying to unwind (e.g. doing a backtrace) in a routine inside a context created by makecontext, this can lead to uninitialized stack slots being accessed, causing the unwinder to crash in the worst case. Similarly, during parts of the "setcontext" routine, when the stack pointer has already been switched to point to the new context, the address range is still covered by the CFI FDE for setcontext. When trying to unwind in that situation (e.g. backtrace from an async signal handler for profiling), it is again possible that the unwinder crashes. Theses are all problems in existing code, but the changes in stack frame layout appear to make the "worst case" much more likely in the ELFv2 ABI context. This causes regressions e.g. in the libgo testsuite on ELFv2. This patch fixes this by ending the makecontext/setcontext FDEs before those problematic parts of the assembler, similar to what is already done on other platforms. This fixes the libgo regression on ELFv2.
* Properly handle shm_open validation. Fixes bug 16274.Ondřej Bílka2013-12-031-2/+2
|
* Add powerpc-nofpu/e500 support functions for atomic compound assignment and ↵Joseph Myers2013-11-281-0/+6
| | | | FLT_ROUNDS.
* PowerPC: Fix __fe_nomask_env missing symbolAdhemerval Zanella2013-11-262-4/+4
| | | | | This patch fix the missing symbol __fe_nomask_env from commit 41e8926aa4b7f17bc95984737ee82a254ad0911c for GLIBC_2.1.
* Use __glibc_reserved instead __unused.Ondřej Bílka2013-11-2640-169/+169
|
* Fix typo in sys/ptrace.h.Carlos O'Donell2013-11-251-1/+1
| | | | | | | The event code is PTRACE_EVENT_SECCOMP, not PTRAVE_EVENT_SECCOMP. This patch fixes the V->C typo. There are no ABI issues since the number remains the same for the code. Code using the old wrong name will need to be updated.
* PowerPC: Fix __fe_mask_env exportAdhemerval Zanella2013-11-132-2/+2
| | | | Change SHLIB_COMPAT calls to GLIBC_2_19 for __fe_nomask_env symbol.
* Set arch_minimum_kernel to 3.4.0 for x32H.J. Lu2013-11-132-0/+6
| | | | x32 ABI support was added in Linux kernel 3.4.0.
* PowerPC: Fix __fe_mask_env exportAdhemerval Zanella2013-11-133-6/+10
| | | | | This patch does not export __fe_mask_env anymore, only providing a compatibility symbol. It fixes BZ#14143.
* PowerPC: Fix vDSO missing ODP entriesAdhemerval Zanella2013-11-083-5/+28
| | | | | | | This patch fixes the vDSO symbol used directed in IFUNC resolver where they do not have an associated ODP entry leading to undefined behavior in some cases. It adds an artificial OPD static entry to such cases and set its TOC to non 0 to avoid triggering lazy resolutions.
* Restrict shm_open and shm_unlink to SHMDIR. Fixes bugs 14752 and 15763.Ondřej Bílka2013-10-311-6/+8
|
* rename configure.in to configure.acMike Frysinger2013-10-304-2/+2
| | | | | | | Autoconf has been deprecating configure.in for quite a long time. Rename all our configure.in and preconfigure.in files to .ac. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* Add e500 port.Joseph Myers2013-10-182-1/+4
|
* Move powerpc ports pieces to libc.Joseph Myers2013-10-0424-0/+4153
|