aboutsummaryrefslogtreecommitdiff
path: root/manual
AgeCommit message (Collapse)AuthorFilesLines
2025-05-16manual: add sched_getcpu()DJ Delorie1-0/+16
Reviewed-by: Collin Funk <collin.funk1@gmail.com>
2025-05-16manual: Clarifications for listing directoriesFlorian Weimer1-2/+64
Support for seeking is limited. Using the d_off and d_reclen members of struct dirent is discouraged, especially with readdir. Concurrent modification of directories during iteration may result in duplicate or missing etnries.
2025-05-15manual: add remaining CPU_* macrosDJ Delorie1-9/+168
Adds remaining CPU_* macros, including the CPU_*_S macros for dynamic-sized cpu sets. Reviewed-by: Collin Funk <collin.funk1@gmail.com>
2025-05-14Implement C23 rootn.Joseph Myers1-0/+16
C23 adds various <math.h> function families originally defined in TS 18661-4. Add the rootn functions, which compute the Yth root of X for integer Y (with a domain error if Y is 0, even if X is a NaN). The integer exponent has type long long int in C23; it was intmax_t in TS 18661-4, and as with other interfaces changed after their initial appearance in the TS, I don't think we need to support the original version of the interface. As with pown and compoundn, I strongly encourage searching for worst cases for ulps error for these implementations (necessarily non-exhaustively, given the size of the input space). I also expect a custom implementation for a given format could be much faster as well as more accurate, although the implementation is simpler than those for pown and compoundn. This completes adding to glibc those TS 18661-4 functions (ignoring DFP) that are included in C23. See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118592 regarding the C23 mathematical functions (not just the TS 18661-4 ones) missing built-in functions in GCC, where such functions might usefully be added. Tested for x86_64 and x86, and with build-many-glibcs.py.
2025-05-14powerpc64le: Remove configure check for objcopy >= 2.26.Stefan Liebler1-4/+0
Due to raising the minimum binutils version to >= 2.26, the configure check for testing support of --update-section is not needed anymore. Reviewed-by: Peter Bergner <bergner@tenstorrent.com>
2025-05-14Raise the minimum binutils version to 2.39Stefan Liebler1-3/+1
The recent commit 27b96e069aad17cefea9437542180bff448ac3a0 raises the minimum GCC version to 12.1 which was released in 2022. The current minimum bintuils version 2.25 was released end of 2014. This patch now raises the minimum binutils version to 2.39 which was also released in 2022. The hint for ARC is not needed anymore. In sysdeps/[alpha|hppa|csky]/configure.ac, PIE is unsupported with this comment: PIE builds fail on binutils 2.37 and earlier, see: https://sourceware.org/bugzilla/show_bug.cgi?id=28672 This patch keeps PIE unsupported and let the machine maintainers test and enable it later. In sysdeps/arm/configure.ac, there is a check whether TPOFF relocs with addends are assembled correctly, which is known to be broken in binutils 2.24 and 2.25. See: https://sourceware.org/bugzilla/show_bug.cgi?id=18383 This patch keeps the check as is and let the machine maintainers check if it still required. According to Florian Weimer: Having at least binutils 2.38 will allow us to assume that this linker bug is fixed: Bug 28743 - -z relro creats holes in the process image on GNU/Linux <https://sourceware.org/bugzilla/show_bug.cgi?id=28743> Reviewed-by: Florian Weimer <fweimer@redhat.com>
2025-05-12manual: fix typo for sched_[sg]etattrDJ Delorie1-2/+2
Originally added in 41a90f3f5f which says it's adding sched_getattr and sched_setattr. Reviewed-by: Collin Funk <collin.funk1@gmail.com>
2025-05-12Document all CLOCK_* valuesJoseph Myers1-1/+30
The manual documents CLOCK_REALTIME and CLOCK_MONOTONIC but not other CLOCK_* values. Add documentation of the POSIX clocks CLOCK_PROCESS_CPUTIME_ID and CLOCK_THREAD_CPUTIME_ID, along with a reference to the Linux man pages for the semantics of the Linux-specific clocks supported (as with some other functionality coming direct from the Linux kernel where the man pages can be considered the main documentation). Note: CLOCK_MONOTONIC_RAW, CLOCK_REALTIME_COARSE and CLOCK_MONOTONIC_COARSE are also defined in the toplevel bits/time.h, as used for Hurd. Nevertheless, I see no sign that the Hurd code in glibc actually has any support for those clocks, so I think it is correct to document them as Linux-specific (and to refer only to the Linux man pages for their semantics). Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2025-05-09Implement C23 compoundnJoseph Myers1-0/+16
C23 adds various <math.h> function families originally defined in TS 18661-4. Add the compoundn functions, which compute (1+X) to the power Y for integer Y (and X at least -1). The integer exponent has type long long int in C23; it was intmax_t in TS 18661-4, and as with other interfaces changed after their initial appearance in the TS, I don't think we need to support the original version of the interface. Note that these functions are "compoundn" with a trailing "n", *not* "compound" (CORE-MATH has the wrong name, for example). As with pown, I strongly encourage searching for worst cases for ulps error for these implementations (necessarily non-exhaustively, given the size of the input space). I also expect a custom implementation for a given format could be much faster as well as more accurate (I haven't tested or benchmarked the CORE-MATH implementation for binary32); this is one of the more complicated and less efficient functions to implement in a type-generic way. As with exp2m1 and exp10m1, this showed up places where the powerpc64le IFUNC setup is not as self-contained as one might hope (in this case, without the changes specific to powerpc64le, there were undefined references to __GI___expf128). Tested for x86_64 and x86, and with build-many-glibcs.py.
2025-05-05manual: add more pthread functionsDJ Delorie1-0/+396
Add stubs and partial docs for many undocumented pthreads functions. While neither exhaustive nor complete, gives minimal usage docs for many functions and expands the pthreads chapters, making it easier to continue improving this section in the future. Reviewed-by: Collin Funk <collin.funk1@gmail.com>
2025-04-14manual/tunables: fix a trivial typoAurelien Jarno1-1/+1
Fixes: 12a497c716f0 ("elf: Extend glibc.rtld.execstack tunable to force executable stack (BZ 32653)" Reviewed-by: Florian Weimer <fweimer@redhat.com>
2025-04-14manual: Mention POSIX-1.2024 requires time_t to be 64 bit or wider.Collin Funk1-1/+2
* manual/time.texi (Time Types): Mention POSIX-1.2024 requires 64 bit time_t. Signed-off-by: Collin Funk <collin.funk1@gmail.com> Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2025-04-14manual: Update standardization of getline and getdelim [BZ #32830]Collin Funk1-11/+15
* manual/stdio.texi (Line Input): Document that getline and getdelim where GNU extensions until standardized in POSIX.1-2008. Add restrict to function prototypes. Signed-off-by: Collin Funk <collin.funk1@gmail.com> Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2025-04-08elf: Extend glibc.rtld.execstack tunable to force executable stack (BZ 32653)Adhemerval Zanella1-3/+7
From the bug report [1], multiple programs still require to dlopen shared libraries with either missing PT_GNU_STACK or with the executable bit set. Although, in some cases, it seems to be a hard-craft assembly source without the required .note.GNU-stack marking (so the static linker is forced to set the stack executable if the ABI requires it), other cases seem that the library uses trampolines [2]. Unfortunately, READ_IMPLIES_EXEC is not an option since on some ABIs (x86_64), the kernel clears the bit, making it unsupported. To avoid reinstating the broken code that changes stack permission on dlopen (0ca8785a28), this patch extends the glibc.rtld.execstack tunable to allow an option to force an executable stack at the program startup. The tunable is a security issue because it defeats the PT_GNU_STACK hardening. It has the slight advantage of making it explicit by the caller, and, as for other tunables, this is disabled for setuid binaries. A tunable also allows us to eventually remove it, but from previous experiences, it would require some time. Checked on aarch64-linux-gnu, x86_64-linux-gnu, and i686-linux-gnu. [1] https://sourceware.org/bugzilla/show_bug.cgi?id=32653 [2] https://github.com/conda-forge/ctng-compiler-activation-feedstock/issues/143 Reviewed-by: Sam James <sam@gentoo.org>
2025-04-08stdlib: Implement C2Y uabs, ulabs, ullabs and uimaxabsLenard Mollenkopf1-2/+10
C2Y adds unsigned versions of the abs functions (see C2Y draft N3467 and proposal N3349). Tested for x86_64. Signed-off-by: Lenard Mollenkopf <glibc@lenardmollenkopf.de>
2025-03-31Raise the minimum GCC version to 12.1 [BZ #32539]H.J. Lu1-20/+2
For all Linux distros with glibc 2.40 which I can find, GCC 14.2 is used to compile glibc 2.40: OS GCC URL AOSC 14.2.0 https://aosc.io/ Arch Linux 14.2.0 https://archlinux.org/ ArchPOWER 14.2.0 https://archlinuxpower.org/ Artix 14.2.0 https://artixlinux.org/ Debian 14.2.0 https://www.debian.org/ Devuan 14.2.0 https://www.devuan.org/ Exherbo 14.2.0 https://www.exherbolinux.org/ Fedora 14.2.1 https://fedoraproject.org/ Gentoo 14.2.1 https://gentoo.org/ Kali Linux 14.2.0 https://www.kali.org/ KaOS 14.2.0 https://kaosx.us/ LiGurOS 14.2.0 https://liguros.gitlab.io/ Mageia 14.2.0 https://www.mageia.org/en/ Manjaro 14.2.0 https://manjaro.org/ NixOS 14.2.0 https://nixos.org/ openmamba 14.2.0 https://openmamba.org/ OpenMandriva 14.2.0 https://openmandriva.org/ openSUSE 14.2.0 https://www.opensuse.org/ Parabola 14.2.0 https://www.parabola.nu/ PLD Linux 14.2.0 https://pld-linux.org/ PureOS 14.2.0 https://pureos.net/ Raspbian 14.2.0 http://raspbian.org/ Slackware 14.2.0 http://www.slackware.com/ Solus 14.2.0 https://getsol.us/ T2 SDE 14.2.0 http://t2sde.org/ Ubuntu 14.2.0 https://www.ubuntu.com/ Wikidata 14.2.0 https://wikidata.org/ Support older versions of GCC to build glibc 2.42: 1. Need to work around bugs in older versions of GCC. 2. Can't use the new features in newer versions of GCC, which may be required for new features, like _Float16 which requires GCC 12.1 or above, in glibc, The main benefit of supporting older versions of GCC is easier backport of bug fixes to the older releases of glibc, which can be mitigated by avoiding incompatible features in newer versions of GCC for critical bug fixes. Require GCC 12.1 or newer to build. Remove GCC version check for PowerPC and s390x. TEST_CC and TEST_CXX can be used to test the glibc build with the older versions of GCC. For glibc developers who are using Linux OSes which don't come with GCC 12.1 or newer, they should build and install GCC 12.1 or newer to work on glibc. This fixes BZ #32539. Signed-off-by: H.J. Lu <hjl.tools@gmail.com> Reviewed-by: Sam James <sam@gentoo.org>
2025-03-31manual: tidy the longopt.c exampleSamuel Zeter1-5/+5
- Change longopt.c's backticks to single quotes - puts() does not use format specifiers Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2025-03-31manual: Document functions adopted by POSIX.1-2024.Collin Funk10-85/+116
Here is a patch updating the documentation to mention GNU and BSD extensions that were adopted by POSIX.1-2024. * manual/llio.texi (Memory-mapped I/O): Add that MAP_ANON and MAP_ANONYMOUS were added by POSIX.1-2024. * manual/memory.texi (Changing Block Size): Mention that reallocarray was added by POSIX.1-2024. * manual/message.texi (Message Translation): Adjust wording to match standardization. (Translation with gettext): Mention the gettext family of functions were added by POSIX.1-2024. * manual/pattern.texi (Wildcard Matching): Mention that FNM_CASEFOLD was added by POSIX.1-2024. * manual/process.texi (Creating a Process): Mention that _Fork and WCOREDUMP were added by POSIX.1-2024. * manual/signal.texi (Miscellaneous Signals): Mention that SIGWINCH was added by POSIX-1.2024. * manual/startup.texi (Environment Access): Mention that secure_getenv was added by POSIX.1-2024. * manual/string.texi (Truncating Strings): Mention that strlcpy, strlcat, wcslcpy, and wslcat were added by POSIX-1.2024. (Search Functions): Document that memmem was added by POSIX-1.2024. * manual/terminal.texi (Allocation): Mention that ptsname_r was added by POSIX-1.2024. * manual/threads.texi (Waiting with Explicit Clocks): Move node under POSIX Threads. Mention pthread_cond_clockwait, pthread_rwlock_clockrdlock, and pthread_rwlock_clockwrlock were added by POSIX-1.2024. (Joining Threads): New node under Non-POSIX Extensions. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> Signed-off-by: Collin Funk <collin.funk1@gmail.com>
2025-03-27Implement C23 pownJoseph Myers1-0/+14
C23 adds various <math.h> function families originally defined in TS 18661-4. Add the pown functions, which are like pow but with an integer exponent. That exponent has type long long int in C23; it was intmax_t in TS 18661-4, and as with other interfaces changed after their initial appearance in the TS, I don't think we need to support the original version of the interface. The test inputs are based on the subset of test inputs for pow that use integer exponents that fit in long long. As the first such template implementation that saves and restores the rounding mode internally (to avoid possible issues with directed rounding and intermediate overflows or underflows in the wrong rounding mode), support also needed to be added for using SET_RESTORE_ROUND* in such template function implementations. This required math-type-macros-float128.h to include <fenv_private.h>, so it can tell whether SET_RESTORE_ROUNDF128 is defined. In turn, the include order with <fenv_private.h> included before <math_private.h> broke loongarch builds, showing up that sysdeps/loongarch/math_private.h is really a fenv_private.h file (maybe implemented internally before the consistent split of those headers in 2018?) and needed to be renamed to fenv_private.h to avoid errors with duplicate macro definitions if <math_private.h> is included after <fenv_private.h>. The underlying implementation uses __ieee754_pow functions (called more than once in some cases, where the exponent does not fit in the floating type). I expect a custom implementation for a given format, that only handles integer exponents but handles larger exponents directly, could be faster and more accurate in some cases. I encourage searching for worst cases for ulps error for these implementations (necessarily non-exhaustively, given the size of the input space). Tested for x86_64 and x86, and with build-many-glibcs.py.
2025-03-24Add _FORTIFY_SOURCE support for inet_ptonAaron Merey1-0/+2
Add function __inet_pton_chk which calls __chk_fail when the size of argument dst is too small. inet_pton is redirected to __inet_pton_chk or __inet_pton_warn when _FORTIFY_SOURCE is > 0. Also add tests to debug/tst-fortify.c, update the abilist with __inet_pton_chk and mention inet_pton fortification in maint.texi. Co-authored-by: Frédéric Bérat <fberat@redhat.com> Reviewed-by: Florian Weimer <fweimer@redhat.com>
2025-03-21Add _FORTIFY_SOURCE support for inet_ntopFrédéric Bérat1-0/+2
- Create the __inet_ntop_chk routine that verifies that the builtin size of the destination buffer is at least as big as the size given by the user. - Redirect calls from inet_ntop to __inet_ntop_chk or __inet_ntop_warn - Update the abilist for this new routine - Update the manual to mention the new fortification Reviewed-by: Florian Weimer <fweimer@redhat.com>
2025-03-14Implement C23 powrJoseph Myers1-0/+15
C23 adds various <math.h> function families originally defined in TS 18661-4. Add the powr functions, which are like pow, but with simpler handling of special cases (based on exp(y*log(x)), so negative x and 0^0 are domain errors, powers of -0 are always +0 or +Inf never -0 or -Inf, and 1^+-Inf and Inf^0 are also domain errors, while NaN^0 and 1^NaN are NaN). The test inputs are taken from those for pow, with appropriate adjustments (including removing all tests that would be domain errors from those in auto-libm-test-in and adding some more such tests in libm-test-powr.inc). The underlying implementation uses __ieee754_pow functions after dealing with all special cases that need to be handled differently. It might be a little faster (avoiding a wrapper and redundant checks for special cases) to have an underlying implementation built separately for both pow and powr with compile-time conditionals for special-case handling, but I expect the benefit of that would be limited given that both functions will end up needing to use the same logic for computing pow outside of special cases. My understanding is that powr(negative, qNaN) should raise "invalid": that the rule on "invalid" for an argument outside the domain of the function takes precedence over a quiet NaN argument producing a quiet NaN result with no exceptions raised (for rootn it's explicit that the 0th root of qNaN raises "invalid"). I've raised this on the WG14 reflector to confirm the intent. Tested for x86_64 and x86, and with build-many-glibcs.py.
2025-03-12math: Refactor how to use libm-test-ulpsAdhemerval Zanella2-31/+23
The current approach tracks math maximum supported errors by explicitly setting them per function and architecture. On newer implementations or new compiler versions, the file is updated with newer values if it shows higher results. The idea is to track the maximum known error, to update the manual with the obtained values. The constant libm-test-ulps shows little value, where it is usually a mechanical change done by the maintainer, for past releases it is usually ignored whether the ulp change resulted from a compiler regression, and the math tests already have a maximum ulp error that triggers a regression. It was shown by a recent update after the new acosf [1] implementation that is correctly rounded, where the libm-test-ulps was indeed from a compiler issue. This patch removes all arch-specific libm-test-ulps, adds system generic libm-test-ulps where applicable, and changes its semantics. The generic files now track specific implementation constraints, like if it is expected to be correctly rounded, or if the system-specific has different error expectations. Now multiple libm-test-ulps can be defined, and system-specific overrides generic implementation. This is for the case where arch-specific implementation might show worse precision than generic implementation, for instance, the cbrtf on i686. Regressions are only reported if the implementation shows larger errors than 9 ulps (13 for IBM long double) unless it is overridden by libm-test-ulps and the maximum error is not printed at the end of tests. The regen-ulps rule is also removed since it does not make sense to update the libm-test-ulps automatically. The manual error table is also removed, Paul Zimmermann and others have been tracking libm precision with a more comprehensive analysis for some releases; so link to his work instead. [1] https://sourceware.org/git/?p=glibc.git;a=commit;h=9cc9f8e11e8fb8f54f1e84d9f024917634a78201
2025-03-12Linux: Add the pthread_gettid_np function (bug 27880)Florian Weimer1-0/+18
Current Bionic has this function, with enhanced error checking (the undefined case terminates the process). Reviewed-by: Joseph Myers <josmyers@redhat.com>
2025-03-07Implement C23 rsqrtJoseph Myers1-0/+13
C23 adds various <math.h> function families originally defined in TS 18661-4. Add the rsqrt functions (1/sqrt(x)). The test inputs are taken from those for sqrt. Tested for x86_64 and x86, and with build-many-glibcs.py.
2025-03-06manual: Mark perror as MT-unsafe and update check-safety.shCarlos O'Donell2-25/+61
The manual marked perror as MT-safe, but then listed a remark indicating that it was unsafe because of a race between the function and access to stderr. The function is indeed MT-unsafe because of the unlocked access to stderr internals and bug 32730 has been filed to address this issue. The script manual/check-safety.sh should have caught this issue, but a missed escaping of "?" along with searching of all inputs again via "$@" resulted in a non-functional regexp. In order to avoid regressions we also update check-safety.sh. The script manual/check-safety.sh is updated in the following ways: * The MT-unsafe remarks in MT-safe context check is fixed. - It now detects the perror safety note mistake. * Comments updated indicating that we allow MT context marks to count for other contexts if they are related. - This is why commit ad9c4c536115ba38be3e63592a632709ec8209b4 failed and the failure is now understood as expected. * All checks now have verbose output. * Back reference based duplicate checks are removed. - They are too complex and don't cover all cases. No regressions on x86_64.
2025-03-04manual: Explain sched_yield semantics with different schedulersSiddhesh Poyarekar1-9/+22
The manual entry for sched_yield mentions that the function call could be a nop if there are no other tasks with the same absolute priority. Expand the explanation to include example schedulers on Linux so that it's clear that sched_yield may not always result in a different task being scheduled. Signed-off-by: Siddhesh Poyarekar <siddhesh@sourceware.org> Reviewed-by: Joseph Myers <josmyers@redhat.com>
2025-02-20manual: Mark setlogmask as AS-unsafe and AC-unsafe.Carlos O'Donell1-1/+1
This fixes the check-safety.sh failure with commit ad9c4c536115ba38be3e63592a632709ec8209b4, and correctly marks the function AS-unsafe and AC-unsafe due to the use of the non-recursive lock. Tested on x86_64 without regressions. Reviewed-by: Frédéric Bérat <fberat@redhat.com>
2025-02-19manual: Document setlogmask as MT-safe.Carlos O'Donell1-4/+1
setlogmask(3) was made MT-safe in glibc-2.33 with the fix for bug 26100. Reviewed-by: Florian Weimer <fweimer@redhat.com>
2025-02-05manual: Update signal descriptionsDJ Delorie1-9/+28
Based on auditing all the signals and source trees for Hurd and Linux... SIGSYS - This is not used for a bad system call (ENOSYS is used for that). This is used by SECCOMP and some cases where an invalid sub-function was requested. SIGSTKFLT - Note it used to be a coprocessor stack fault but is now obsolete and available for general user use. SIGLOST - Hurd only now; note that its original purpose as an NFS lock lost signal is obsolete. SIGPWR - Note this is for power lost *and* power restored, and is more a user-mode signal than a kernel-generated signal. Reviewed-by: Florian Weimer <fweimer@redhat.com>
2025-02-04manual: make @manpageurl more specific to each outputDJ Delorie3-5/+24
Tweak the @manpageurl macro to customize the output for each of html, info, and pdf output. HTML and PDF (at least, these days) support clicking on the link title, whereas info does not. Add text to the intro section explaining which man pages are normative and which aren't.
2025-01-31manual: Safety annotations for timespec_get and timespec_getresTulio Magno Quites Machado Filho1-0/+2
Add preliminary annotations that are consistent with clock_gettime and clock_getres. Reviewed-by: Florian Weimer <fweimer@redhat.com>
2025-01-30manual: Add links to POSIX Semaphores man-pages documentationArjun Shankar1-0/+21
The POSIX Semaphores functions are currently undocumented in our info pages. This commit adds links to the man-pages documentation for all the `sem_*' functions (except `sem_clockwait') so that they refer to some useful documentation instead of just being stubs. `sem_clockwait' isn't documented by man-pages but thankfully already has a small useful blurb in our own docs. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2025-01-30manual: Consolidate POSIX Semaphores docs in Threads chapterArjun Shankar2-78/+88
This commit moves the `sem_*' family of functions from the IPC chapter, replacing them with a reference to their new location in the Threads chapter. `sem_clockwait' is also moved out of the Non-POSIX Extensions subsection since it is now included in the standard since Issue 8: https://pubs.opengroup.org/onlinepubs/9799919799/functions/sem_clockwait.html Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2025-01-29manual: Update compatibility note on flushing of line-oriented filesFlorian Weimer1-6/+12
Operation systems which represent text files in a line-oriented fashion (and not as byte streams with a character sequence reserved for line termination) logically cannot flush a buffer without also creating a terminated line. Update this portability note and move it to the Binary Streams section. Add another related compatibility concern, too.
2025-01-28INSTALL: update last tested version numbersAndreas K. Hüttel1-7/+7
Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
2025-01-27contrib.texi: minor improvementsAndreas K. Hüttel1-2/+3
Mention CORE-MATH developers by name Fix accent Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
2025-01-27contrib.texi: Update from 2.40..2.41 commit logAndreas K. Hüttel1-22/+78
Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
2025-01-20Linux: Do not check unused bytes after sched_getattr in tst-sched_setattrFlorian Weimer1-3/+3
Linux 6.13 was released with a change that overwrites those bytes. This means that the check_unused subtest fails. Update the manual accordingly. Tested-by: Xi Ruoyao <xry111@xry111.site> Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2025-01-20aarch64: Add glibc.cpu.aarch64_gcs tunableSzabolcs Nagy1-0/+43
This tunable controls Guarded Control Stack (GCS) for the process. 0 = disabled: do not enable GCS 1 = enforced: check markings and fail if any binary is not marked 2 = optional: check markings but keep GCS off if a binary is unmarked 3 = override: enable GCS, markings are ignored By default it is 0, so GCS is disabled, value 1 will enable GCS. The status is stored into GL(dl_aarch64_gcs) early and only applied later, since enabling GCS is tricky: it must happen on a top level stack frame. Using GL instead of GLRO because it may need updates depending on loaded libraries that happen after readonly protection is applied, however library marking based GCS setting is not yet implemented. Describe new tunable in the manual. Co-authored-by: Yury Khrustalev <yury.khrustalev@arm.com> Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2025-01-01Update copyright dates with scripts/update-copyrightsPaul Eggert47-47/+47
2024-12-31elf: Add glibc.rtld.execstackAdhemerval Zanella1-0/+28
The new tunable can be used to control whether executable stacks are allowed from either the main program or dependencies. The default is to allow executable stacks. The executable stacks default permission is checked agains the one provided by the PT_GNU_STACK from program headers (if present). The tunable also disables the stack permission change if any dependency requires an executable stack at loading time. Checked on x86_64-linux-gnu, i686-linux-gnu, and aarch64-linux-gnu. Reviewed-by: Florian Weimer <fweimer@redhat.com>
2024-12-30INSTALL, NEWS: Document requirement of gawk with MPFR supportAndreas K. Hüttel1-0/+4
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
2024-12-27libio: asprintf should write NULL upon failureFlorian Weimer1-1/+8
This was suggested most recently by Solar Designer, noting that code replacing vsprintf with vasprintf in a security fix was subtly wrong: Re: GStreamer Security Advisory 2024-0003: Orc compiler stack-based buffer overflow <https://www.openwall.com/lists/oss-security/2024/07/26/2> Previous libc-alpha discussions: I: [PATCH] asprintf error handling fix <https://inbox.sourceware.org/libc-alpha/20011205185828.GA8376@ldv.office.alt-linux.org/> asprintf() issue <https://inbox.sourceware.org/libc-alpha/CANSoFxt-cdc-+C4u-rTENMtY4X9RpRSuv+axDswSPxbDgag8_Q@mail.gmail.com/> I don't think we need a compatibility symbol for this. As the GStreamer example shows, this change is much more likely to fix bugs than cause compatibility issues. Suggested-by: Dmitry V. Levin <ldv@altlinux.org> Suggested-by: Archie Cobbs <archie.cobbs@gmail.com> Suggested-by: Solar Designer <solar@openwall.com> Reviewed-by: Sam James <sam@gentoo.org>
2024-12-24NEWS: Mention testing glibc build with a different set of compilersH.J. Lu1-4/+3
Also document C and C++ compilers used to test glibc should come from the same set of compilers. Signed-off-by: H.J. Lu <hjl.tools@gmail.com> Reviewed-by: Sam James <sam@gentoo.org>
2024-12-16manual: Document more sigaction flagsDJ Delorie1-0/+39
Adds documentation for three-argument handler Adds remainder of the SA_* flags Reviewed-by: Florian Weimer <fweimer@redhat.com>
2024-12-12Implement C23 atan2piJoseph Myers1-0/+14
C23 adds various <math.h> function families originally defined in TS 18661-4. Add the atan2pi functions (atan2(y,x)/pi). Tested for x86_64 and x86, and with build-many-glibcs.py.
2024-12-11Implement C23 atanpiJoseph Myers1-0/+14
C23 adds various <math.h> function families originally defined in TS 18661-4. Add the atanpi functions (atan(x)/pi). Tested for x86_64 and x86, and with build-many-glibcs.py.
2024-12-11Add TEST_CC and TEST_CXX supportH.J. Lu1-0/+9
Support testing glibc build with a different C compiler or a different C++ compiler with $ ../glibc-VERSION/configure TEST_CC="gcc-6.4.1" TEST_CXX="g++-6.4.1" 1. Add LIBC_TRY_CC_AND_TEST_CC_OPTION, LIBC_TRY_CC_AND_TEST_CC_COMMAND and LIBC_TRY_CC_AND_TEST_LINK to test both CC and TEST_CC. 2. Add check and xcheck targets to Makefile.in and override build compiler options with ones from TEST_CC and TEST_CXX. Tested on Fedora 41/x86-64: 1. Building with GCC 14.2.1 and testing with GCC 6.4.1 and GCC 11.2.1. 2. Building with GCC 15 and testing with GCC 6.4.1. Support for GCC versions older than GCC 6.2 may need to change the test sources. Other targets may need to update configure.ac under sysdeps and modify Makefile.in to override target build compiler options. Signed-off-by: H.J. Lu <hjl.tools@gmail.com> Reviewed-by: Sam James <sam@gentoo.org>
2024-12-10Implement C23 asinpiJoseph Myers1-0/+17
C23 adds various <math.h> function families originally defined in TS 18661-4. Add the asinpi functions (asin(x)/pi). Tested for x86_64 and x86, and with build-many-glibcs.py.