On 3/9/21 10:14 AM, shwaresyst wrote: > > To me that looks like a conformance violation and should be reverted. There > is no _SC_SIGSTKSZ defined in <unistd.h> by the standard, to begin with, so > that use of sysconf() is a non-portable extension on its own.
Portable apps can't use _SC_SIGSTKSZ, but the standard generally permits implementations to define further constants. Then again, re-reading XSH 2.2.2: " Implementations may add symbols to the headers shown in the following table, provided the identifiers for those symbols either: Begin with the corresponding reserved prefixes in the table, or ..." but the table lacks a row for <unistd.h> with _CS_* and _SC_* constants. Looks like you found an independent defect. > > I could see the definition of SIGSTKSZ being changed to the static minimum a > particular processor requires, or is initially allocated as a 'safe' amount, > rather than static "default size", and moving SIGSTKSZ to <limits.h>. This > would contrast to MINSIGSTKSZ as the lowest value for a platform for all > supported processors. Then an application could use sysconf() to query for > the maximum size the configuration supports if it wants to use more than > that, as a runtime increasable limit. As I understand it, the concern in glibc is less about runtime increasability, so much as ABI compatibility with applications compiled against older headers at a time when the kernel had less state information to store during a context switch. -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3226 Virtualization: qemu.org | libvirt.org