platform/upstream/glibc.git
17 months agoelf: Sort Makefile variables.
Carlos O'Donell [Tue, 30 May 2023 12:01:27 +0000 (08:01 -0400)]
elf: Sort Makefile variables.

Sort Makefile variables using scrips/sort-makefile-lines.py.

No code generation changes observed in non-test binary artifacts.
No regressions on x86_64 and i686.

Reviewed-by: Florian Weimer <fweimer@redhat.com>
17 months agoFix a few more typos I missed in previous round -- BZ 25337
Paul Pluzhnikov [Fri, 2 Jun 2023 03:40:12 +0000 (03:40 +0000)]
Fix a few more typos I missed in previous round -- BZ 25337

17 months agoFix all the remaining misspellings -- BZ 25337
Paul Pluzhnikov [Sat, 20 May 2023 13:37:47 +0000 (13:37 +0000)]
Fix all the remaining misspellings -- BZ 25337

17 months agoUse __nonnull for the epoll_wait(2) family of syscalls
Alejandro Colomar [Mon, 22 May 2023 22:01:21 +0000 (00:01 +0200)]
Use __nonnull for the epoll_wait(2) family of syscalls

Signed-off-by: Alejandro Colomar <alx@kernel.org>
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
17 months agoFix invalid use of NULL in epoll_pwait2(2) test
Alejandro Colomar [Wed, 31 May 2023 20:44:22 +0000 (22:44 +0200)]
Fix invalid use of NULL in epoll_pwait2(2) test

epoll_pwait2(2)'s second argument should be nonnull.  We're going to add
__nonnull to the prototype, so let's fix the test accordingly.  We can
use a dummy variable to avoid passing NULL.

Reported-by: Adhemerval Zanella Netto <adhemerval.zanella@linaro.org>
Signed-off-by: Alejandro Colomar <alx@kernel.org>
17 months agogetipv4sourcefilter: Get rid of alloca
Joe Simmons-Talbott [Tue, 30 May 2023 18:32:55 +0000 (14:32 -0400)]
getipv4sourcefilter: Get rid of alloca

Use a scratch_buffer rather than alloca to avoid potential stack
overflows.
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
17 months agogetsourcefilter: Get rid of alloca.
Joe Simmons-Talbott [Tue, 30 May 2023 18:13:40 +0000 (14:13 -0400)]
getsourcefilter: Get rid of alloca.

Use a scratch_buffer rather than alloca to avoid potential stack
overflows.
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
17 months agotests: fix warn unused results
Frédéric Bérat [Thu, 1 Jun 2023 14:27:47 +0000 (16:27 +0200)]
tests: fix warn unused results

With fortification enabled, few function calls return result need to be
checked, has they get the __wur macro enabled.
Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
17 months agonptl_db/thread_dbP.h: fix warn unused result
Frédéric Bérat [Thu, 1 Jun 2023 14:27:44 +0000 (16:27 +0200)]
nptl_db/thread_dbP.h: fix warn unused result

Fix unused result warnings, detected when _FORTIFY_SOURCE is enabled in
glibc.
Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
17 months agomalloc/{memusage.c, memusagestat.c}: fix warn unused result
Frédéric Bérat [Thu, 1 Jun 2023 14:27:43 +0000 (16:27 +0200)]
malloc/{memusage.c, memusagestat.c}: fix warn unused result

Fix unused result warnings, detected when _FORTIFY_SOURCE is enabled in
glibc.
Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
17 months agocatgets/gencat.c: fix warn unused result
Frédéric Bérat [Thu, 1 Jun 2023 14:27:42 +0000 (16:27 +0200)]
catgets/gencat.c: fix warn unused result

Fix unused result warnings, detected when _FORTIFY_SOURCE is enabled in
glibc.
Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
17 months agotests: replace ftruncate by xftruncate
Frédéric Bérat [Fri, 28 Apr 2023 12:21:39 +0000 (14:21 +0200)]
tests: replace ftruncate by xftruncate

With fortification enabled, ftruncate calls return result needs to be
checked, has it gets the __wur macro enabled.

Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
17 months agotests: replace write by xwrite
Frédéric Bérat [Thu, 1 Jun 2023 16:40:05 +0000 (12:40 -0400)]
tests: replace write by xwrite

Using write without cheks leads to warn unused result when __wur is
enabled.

Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
17 months agox86-64: Use YMM registers in memcmpeq-evex.S
H.J. Lu [Thu, 1 Jun 2023 15:53:35 +0000 (08:53 -0700)]
x86-64: Use YMM registers in memcmpeq-evex.S

Since the assembly source file with -evex suffix should use YMM registers,
not ZMM registers, include x86-evex256-vecs.h by default to use YMM
registers in memcmpeq-evex.S
Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com>
17 months agosupport: Don't fail on fchown when spawning sgid processes
Siddhesh Poyarekar [Thu, 1 Jun 2023 11:23:15 +0000 (07:23 -0400)]
support: Don't fail on fchown when spawning sgid processes

In some cases (e.g. when podman creates user containers), the only other
group assigned to the executing user is nobody and fchown fails with it
because the group is not mapped.  Do not fail the test in this case,
instead exit as unsupported.

Reported-by: Frédéric Bérat <fberat@redhat.com>
Tested-by: Frédéric Bérat <fberat@redhat.com>
Signed-off-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
17 months agoio: Fix F_GETLK, F_SETLK, and F_SETLKW for powerpc64
Adhemerval Zanella [Tue, 30 May 2023 19:40:38 +0000 (16:40 -0300)]
io: Fix F_GETLK, F_SETLK, and F_SETLKW for powerpc64

Different than other 64 bit architectures, powerpc64 defines the
LFS POSIX lock constants  with values similar to 32 ABI, which
are meant to be used with fcntl64 syscall.  Since powerpc64 kABI
does not have fcntl, the constants are adjusted with the
FCNTL_ADJUST_CMD macro.

The 4d0fe291aed3a476a changed the logic of generic constants
LFS value are equal to the default values; which is now wrong
for powerpc64.

Fix the value by explicit define the previous glibc constants
(powerpc64 does not need to use the 32 kABI value, but it simplifies
the FCNTL_ADJUST_CMD which should be kept as compatibility).

Checked on powerpc64-linux-gnu and powerpc-linux-gnu.

17 months agoelf: Remove spurios SHARED conditional from elf/rtld.c
Florian Weimer [Wed, 31 May 2023 05:35:07 +0000 (07:35 +0200)]
elf: Remove spurios SHARED conditional from elf/rtld.c

elf/rtld.c is only ever built in SHARED mode.

17 months agoFix misspellings in sysdeps/ -- BZ 25337
Paul Pluzhnikov [Tue, 30 May 2023 23:02:29 +0000 (23:02 +0000)]
Fix misspellings in sysdeps/ -- BZ 25337

17 months agoio: Fix record locking contants on 32 bit arch with 64 bit default time_t (BZ#30477)
Adhemerval Zanella [Wed, 24 May 2023 19:24:19 +0000 (16:24 -0300)]
io: Fix record locking contants on 32 bit arch with 64 bit default time_t (BZ#30477)

For architecture with default 64 bit time_t support, the kernel
does not provide LFS and non-LFS values for F_GETLK, F_GETLK, and
F_GETLK (the default value used for 64 bit architecture are used).

This is might be considered an ABI break, but the currenct exported
values is bogus anyway.

The POSIX lockf is not affected since it is aliased to lockf64,
which already uses the LFS values.

Checked on i686-linux-gnu and the new tests on a riscv32.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
17 months agoio: Re-flow and sort multiline Makefile definitions
Adhemerval Zanella [Wed, 24 May 2023 18:09:26 +0000 (15:09 -0300)]
io: Re-flow and sort multiline Makefile definitions

17 months agoelf: Make more functions available for binding during dlclose (bug 30425)
Florian Weimer [Tue, 30 May 2023 11:25:50 +0000 (13:25 +0200)]
elf: Make more functions available for binding during dlclose (bug 30425)

Previously, after destructors for a DSO have been invoked, ld.so refused
to bind against that DSO in all cases.  Relax this restriction somewhat
if the referencing object is itself a DSO that is being unloaded.  This
assumes that the symbol reference is not going to be stored anywhere.

The situation in the test case can arise fairly easily with C++ and
objects that are built with different optimization levels and therefore
define different functions with vague linkage.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
17 months agoLoongArch: Fix inconsistency in SHMLBA macro values between glibc and kernel
caiyinyu [Thu, 25 May 2023 09:01:11 +0000 (17:01 +0800)]
LoongArch: Fix inconsistency in SHMLBA macro values between glibc and kernel

The LoongArch glibc was using the value of the SHMLBA macro from common code,
which is __getpagesize() (16k), but this was inconsistent with the value of
the SHMLBA macro in the kernel, which is SZ_64K (64k). This caused several
shmat-related tests in LTP (Linux Test Project) to fail. This commit fixes
the issue by ensuring that the glibc's SHMLBA macro value matches the value
used in the kernel like other architectures.

17 months agoFix misspellings in elf/ -- BZ 25337
Paul Pluzhnikov [Sat, 27 May 2023 20:47:46 +0000 (20:47 +0000)]
Fix misspellings in elf/ -- BZ 25337

Applying this commit results in bit-identical libc.so.6.
The elf/ld-linux-x86-64.so.2 does change, but only in .note.gnu.build-id

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
17 months agoriscv: Add the clone3 wrapper
Adhemerval Zanella [Wed, 28 Sep 2022 02:49:24 +0000 (23:49 -0300)]
riscv: Add the clone3 wrapper

It follows the internal signature:

  extern int clone3 (struct clone_args *__cl_args, size_t __size,
 int (*__func) (void *__arg), void *__arg);

Checked on riscv64-linux-gnu-rv64imafdc-lp64d.

Reviewed-by: Palmer Dabbelt <palmer@rivosinc.com>
17 months agoposix: Add error message for EAI_OVERFLOW
Dridi Boukelmoune [Thu, 25 May 2023 12:45:03 +0000 (14:45 +0200)]
posix: Add error message for EAI_OVERFLOW

Signed-off-by: Dridi Boukelmoune <dridi.boukelmoune@gmail.com>
Reviewed-by: Arjun Shankar <arjun@redhat.com>
17 months agosetsourcefilter: Replace alloca with a scratch_buffer.
Joe Simmons-Talbott [Tue, 16 May 2023 13:45:49 +0000 (09:45 -0400)]
setsourcefilter: Replace alloca with a scratch_buffer.

Use a scratch_buffer rather than either alloca or malloc to reduce the
possibility of a stack overflow.

Suggested-by: Adhemerval Zanella Netto <adhemerval.zanella@linaro.org>
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
17 months agotime: strftime_l: Avoid an unbounded alloca.
Joe Simmons-Talbott [Tue, 23 May 2023 19:41:29 +0000 (15:41 -0400)]
time: strftime_l: Avoid an unbounded alloca.

Avoid possible stack overflow by removing alloca() and converting to
wide characters within the buffer.

Suggested-by: Paul Eggert <eggert@cs.ucla.edu>
17 months agox86: Use 64MB as nt-store threshold if no cacheinfo [BZ #30429]
Noah Goldstein [Tue, 9 May 2023 03:10:20 +0000 (22:10 -0500)]
x86: Use 64MB as nt-store threshold if no cacheinfo [BZ #30429]

If `non_temporal_threshold` is below `minimum_non_temporal_threshold`,
it almost certainly means we failed to read the systems cache info.

In this case, rather than defaulting the minimum correct value, we
should default to a value that gets at least reasonable
performance. 64MB is chosen conservatively to be at the very high
end. This should never cause non-temporal stores when, if we had read
cache info, we wouldn't have otherwise.
Reviewed-by: Florian Weimer <fweimer@redhat.com>
17 months agohurd: Fix setting up signal thread stack alignment
Samuel Thibault [Sat, 27 May 2023 22:29:14 +0000 (00:29 +0200)]
hurd: Fix setting up signal thread stack alignment

x86_64 needs special alignment when calling functions, so we have to use
MACHINE_THREAD_STATE_SETUP_CALL for the signal thread when forking.

17 months agomach: Fix startup with stack protector
Samuel Thibault [Sat, 27 May 2023 21:06:00 +0000 (23:06 +0200)]
mach: Fix startup with stack protector

thread_set_state() is used to set up TLS, so stack protection can not be
used yet.

17 months agoFix misspellings in manual/ -- BZ 25337
Paul Pluzhnikov [Sat, 27 May 2023 16:41:44 +0000 (16:41 +0000)]
Fix misspellings in manual/ -- BZ 25337

17 months agoFix misspellings in iconv/ and iconvdata/ -- BZ 25337
Paul Pluzhnikov [Sat, 27 May 2023 06:48:33 +0000 (06:48 +0000)]
Fix misspellings in iconv/ and iconvdata/ -- BZ 25337

All the changes are in comments or '#error' messages.
Applying this commit results in bit-identical rebuild of iconvdata/*.so

Reviewed-by: Florian Weimer <fw@deneb.enyo.de>
17 months agoAdd MFD_NOEXEC_SEAL, MFD_EXEC from Linux 6.3 to bits/mman-shared.h
Joseph Myers [Fri, 26 May 2023 15:04:51 +0000 (15:04 +0000)]
Add MFD_NOEXEC_SEAL, MFD_EXEC from Linux 6.3 to bits/mman-shared.h

Linux 6.3 adds new constants MFD_NOEXEC_SEAL and MFD_EXEC.  Add these
to bits/mman-shared.h (conditional on MFD_NOEXEC_SEAL not already
being defined, similar to the existing conditional on the older MFD_*
macros).

Tested for x86_64.

17 months agoAdd IP_LOCAL_PORT_RANGE from Linux 6.3 to bits/in.h
Joseph Myers [Fri, 26 May 2023 15:04:13 +0000 (15:04 +0000)]
Add IP_LOCAL_PORT_RANGE from Linux 6.3 to bits/in.h

Linux 6.3 adds a new constant IP_LOCAL_PORT_RANGE.  Add it to the
corresponding bits/in.h in glibc.

Tested for x86_64.

17 months agoAdd AT_RSEQ_* from Linux 6.3 to elf.h
Joseph Myers [Fri, 26 May 2023 15:03:31 +0000 (15:03 +0000)]
Add AT_RSEQ_* from Linux 6.3 to elf.h

Linux 6.3 adds constants AT_RSEQ_FEATURE_SIZE and AT_RSEQ_ALIGN; add
them to glibc's elf.h.  (Recall that, although elf.h is a
system-independent header, so far we've put AT_* constants there even
if Linux-specific, as discussed in bug 15794.  So rather than making
any attempt to fix that issue, the new constants are just added there
alongside the existing ones.)

Tested for x86_64.

17 months agosetipv4sourcefilter: Avoid using alloca.
Joe Simmons-Talbott [Fri, 26 May 2023 13:58:27 +0000 (09:58 -0400)]
setipv4sourcefilter: Avoid using alloca.

Use a scratch_buffer rather than alloca/malloc to avoid potential stack
overflow.

Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
17 months agowchar: Define va_list for POSIX (BZ #30035)
Adhemerval Zanella [Mon, 23 Jan 2023 16:59:31 +0000 (13:59 -0300)]
wchar: Define va_list for POSIX (BZ #30035)

This was uncovered by a recent clang change [1].  Different than ISO C,
POSIX states that va_list should be exported by wchar.h [2].

Checked on x86_64-linux-gnu and aarch64-linux-gnu.

[1] https://reviews.llvm.org/D137268
[2] https://pubs.opengroup.org/onlinepubs/9699919799.2018edition/basedefs/wchar.h.html

17 months agoelf: add test for dl-printf
Roy Eldar [Thu, 25 May 2023 14:41:59 +0000 (17:41 +0300)]
elf: add test for dl-printf

This patch checks _dl_debug_vdprintf, by passing various inputs to
_dl_dprintf and comparing the output with invocations of snprintf.

Signed-off-by: Roy Eldar <royeldar0@gmail.com>
Reviewed-by: Florian Weimer <fweimer@redhat.com>
17 months agoelf: fix handling of negative numbers in dl-printf
Roy Eldar [Thu, 25 May 2023 14:41:58 +0000 (17:41 +0300)]
elf: fix handling of negative numbers in dl-printf

_dl_debug_vdprintf is a bare-bones printf implementation; currently
printing a signed integer (using "%d" format specifier) behaves
incorrectly when the number is negative, as it just prints the
corresponding unsigned integer, preceeded by a minus sign.

For example, _dl_printf("%d", -1) would print '-4294967295'.

Signed-off-by: Roy Eldar <royeldar0@gmail.com>
Reviewed-by: Florian Weimer <fweimer@redhat.com>
17 months agoelf: Update comment in open_path
Siddhesh Poyarekar [Thu, 25 May 2023 15:15:54 +0000 (11:15 -0400)]
elf: Update comment in open_path

f55727ca53308a206cf00d0442f8c57c73761899 updated open_path to use the
r_search_path_struct struct but failed to update the comment.

Signed-off-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
17 months agoelf: Add test for locating libraries in root dir (bug 30435)
Qixing ksyx Xue [Thu, 25 May 2023 15:10:54 +0000 (11:10 -0400)]
elf: Add test for locating libraries in root dir (bug 30435)

When dlopen is being called, efforts have been made to improve
future lookup performance. This includes marking a search path
as non-existent using `stat`. However, if the root directory
is given as a search path, there exists a bug which erroneously
marks it as non-existing.

The bug is reproduced under the following sequence:

  1. dlopen is called to open a shared library, with at least:
     1) a dependency 'A.so' not directly under the '/' directory
        (e.g. /lib/A.so), and
     2) another dependency 'B.so' resides in '/'.
  2. for this bug to reproduce, 'A.so' should be searched *before* 'B.so'.
  3. it first tries to find 'A.so' in /, (e.g. /A.so):
     - this will (obviously) fail,
     - since it's the first time we have seen the '/' directory,
       its 'status' is 'unknown'.
  4. `buf[buflen - namelen - 1] = '\0'` is executed:
     - it intends to remove the leaf and its final slash,
     - because of the speciality of '/', its buflen == namelen + 1,
     - it erroneously clears the entire buffer.
  6. it then calls 'stat' with the empty buffer:
     - which will result in an error.
  7. so it marks '/' as 'nonexisting', future lookups will not consider
     this path.
  8. while /B.so *does* exist, failure to look it up in the '/'
     directory leads to a 'cannot open shared object file' error.

This patch fixes the bug by preventing 'buflen', an index to put '\0',
from being set to 0, so that the root '/' is always kept.
Relative search paths are always considered as 'existing' so this
wont be affected.

Writeup by Moody Liu <mooodyhunter@outlook.com>

Suggested-by: Carlos O'Donell <carlos@redhat.com>
Signed-off-by: Qixing ksyx Xue <qixingxue@outlook.com>
Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
17 months agoio: Re-flow and sort multiline Makefile definitions
Adhemerval Zanella [Wed, 24 May 2023 18:09:26 +0000 (15:09 -0300)]
io: Re-flow and sort multiline Makefile definitions

17 months agoFix special case for C2x strtol binary constant handling (BZ# 30371)
Adhemerval Zanella [Thu, 25 May 2023 11:14:37 +0000 (08:14 -0300)]
Fix special case for C2x strtol binary constant handling (BZ# 30371)

When the base is 0 or 2 and the first two characters are '0' and 'b',
but the rest are no binary digits.  In this case this is no error,
and strtol must return 0 and ENDPTR points to the 'x' or 'b'.

Checked on x86_64-linux-gnu and i686-linux-gnu.

Reviewed-by: Florian Weimer <fweimer@redhat.com>
17 months agortld: properly handle root directory in load path (bug 30435)
Andreas Schwab [Tue, 16 May 2023 12:41:46 +0000 (14:41 +0200)]
rtld: properly handle root directory in load path (bug 30435)

Don't strip the trailing slash when checking for existence of a load path
element to handle the special case of the root directory.

17 months agosysdeps/pthread/eintr.c: fix warn unused result
Frédéric Bérat [Fri, 28 Apr 2023 12:21:33 +0000 (14:21 +0200)]
sysdeps/pthread/eintr.c: fix warn unused result

Fix unused result warnings, detected when _FORTIFY_SOURCE is enabled in
glibc.

Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
17 months agosunrpc/netname.c: fix warn unused result
Frédéric Bérat [Fri, 28 Apr 2023 12:21:32 +0000 (14:21 +0200)]
sunrpc/netname.c: fix warn unused result

Fix unused result warnings, detected when _FORTIFY_SOURCE is enabled in
glibc.

Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
17 months agolocale/programs/locarchive.c: fix warn unused result
Frédéric Bérat [Fri, 28 Apr 2023 12:21:29 +0000 (14:21 +0200)]
locale/programs/locarchive.c: fix warn unused result

Fix unused result warnings, detected when _FORTIFY_SOURCE is enabled in
glibc.

Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
17 months agosupport: Reformat Makefile.
Carlos O'Donell [Tue, 23 May 2023 12:34:56 +0000 (08:34 -0400)]
support: Reformat Makefile.

Add list end markers.
Sort text using scripts/sort-makefile-lines.py.

No code generation changes observed in non-test binary artifacts.
No regressions on x86_64 and i686.

17 months agoRegenerate configure fragment -- BZ 25337.
Paul Pluzhnikov [Tue, 23 May 2023 16:21:29 +0000 (16:21 +0000)]
Regenerate configure fragment -- BZ 25337.

In commit 0b25c28e028b63c95108c442d8112811107e4c13 I updated congure.ac
but neglected to regenerate updated configure.

Fix this here.

17 months agoFix misspellings in sysdeps/powerpc -- BZ 25337
Paul Pluzhnikov [Tue, 23 May 2023 12:11:30 +0000 (12:11 +0000)]
Fix misspellings in sysdeps/powerpc -- BZ 25337

All fixes are in comments, so the binaries should be identical
before/after this commit, but I can't verify this.

Reviewed-by: Rajalakshmi Srinivasaraghavan <rajis@linux.ibm.com>
17 months agoFix misspellings in sysdeps/unix -- BZ 25337
Paul Pluzhnikov [Tue, 23 May 2023 10:50:31 +0000 (10:50 +0000)]
Fix misspellings in sysdeps/unix -- BZ 25337

Applying this commit results in bit-identical rebuild of
libc.so.6 math/libm.so.6 elf/ld-linux-x86-64.so.2 mathvec/libmvec.so.1

Reviewed-by: Florian Weimer <fweimer@redhat.com>
17 months agoFix misspellings in sysdeps/x86_64 -- BZ 25337.
Paul Pluzhnikov [Tue, 23 May 2023 03:57:01 +0000 (03:57 +0000)]
Fix misspellings in sysdeps/x86_64 -- BZ 25337.

Applying this commit results in bit-identical rebuild of libc.so.6
math/libm.so.6 elf/ld-linux-x86-64.so.2 mathvec/libmvec.so.1

Reviewed-by: Florian Weimer <fweimer@redhat.com>
17 months agomach: Fix accessing mach_i386.h
Samuel Thibault [Tue, 23 May 2023 07:36:22 +0000 (09:36 +0200)]
mach: Fix accessing mach_i386.h

Fixes: 196358ae26aa ("mach: Fix installing mach_i386.h")

17 months agoFix misspellings in sysdeps/x86_64/fpu/multiarch -- BZ 25337.
Paul Pluzhnikov [Mon, 22 May 2023 03:40:33 +0000 (03:40 +0000)]
Fix misspellings in sysdeps/x86_64/fpu/multiarch -- BZ 25337.

Applying this commit results in a bit-identical rebuild of
mathvec/libmvec.so.1 (which is the only binary that gets rebuilt).

Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com>
17 months agomach: Fix installing mach_i386.h
Samuel Thibault [Mon, 22 May 2023 23:44:43 +0000 (01:44 +0200)]
mach: Fix installing mach_i386.h

We do not want mach_i386.h to get installed into machine/, but into
i386/ or x86_64/ depending where mach_i386.defs was found, i.e.
according to 32/64 bitness.

17 months agohurd: Fix making ld.so run static binaries with retry
Samuel Thibault [Mon, 22 May 2023 22:31:31 +0000 (00:31 +0200)]
hurd: Fix making ld.so run static binaries with retry

We need O_EXEC for __rtld_execve

17 months agoAdd voice-admit DSCP code point from RFC-5865
Ronan Pigott [Mon, 22 May 2023 20:13:41 +0000 (22:13 +0200)]
Add voice-admit DSCP code point from RFC-5865

17 months agomach: Fix mach_setup_thread_impl with NULL stack_base
Samuel Thibault [Mon, 22 May 2023 17:47:49 +0000 (17:47 +0000)]
mach: Fix mach_setup_thread_impl with NULL stack_base

This is notably necessary for running the gmon thread.

17 months agoRemove last remnants of have-protected
Andreas Schwab [Mon, 8 May 2023 13:40:46 +0000 (15:40 +0200)]
Remove last remnants of have-protected

17 months agoS390: Use compile-only instead of also link-tests in configure.
Stefan Liebler [Fri, 12 May 2023 10:44:49 +0000 (12:44 +0200)]
S390: Use compile-only instead of also link-tests in configure.

Some of the s390-specific configure checks are using compile and
link configure tests.  Now use only compile tests as the link
tests fails when e.g. bootstrapping a cross-toolchain due to
missing crt-files/libc.so.  This is achieved by using
AC_COMPILE_IFELSE in configure.ac file.

This is observable e.g. when using buildroot which builds glibc
only once or the build-many-glibcs.py script.  Note that the latter
one is building glibc twice in the compilers-step (configure-checks
fails) and in the glibcs-step (configure-checks succeed).

Note, that the s390 specific configure tests for static PIE have to
link an executable to test binutils support.  Thus we can't fix
those tests.

17 months agoFix build for hurd/thread-self.c for i386.
Flavio Cruz [Mon, 22 May 2023 05:16:50 +0000 (01:16 -0400)]
Fix build for hurd/thread-self.c for i386.

We need to include hurd.h for libc_hidden_proto (__hurd_thread_self),
introduced in b44c1e12524b ("hurd: Fix using interposable
hurd_thread_self")

This the error log:

In file included from <command-line>:
./../include/libc-symbols.h:472:33: error: '__EI___hurd_thread_self' aliased to undefined symbol '__GI___hurd_thread_self'
  472 |   extern thread __typeof (name) __EI_##name \
      |                                 ^~~~~
./../include/libc-symbols.h:468:3: note: in expansion of macro '__hidden_ver2'
  468 |   __hidden_ver2 (, local, internal, name)
      |   ^~~~~~~~~~~~~
./../include/libc-symbols.h:476:41: note: in expansion of macro '__hidden_ver1'
  476 | #  define hidden_def(name)              __hidden_ver1(__GI_##name, name, name);
      |                                         ^~~~~~~~~~~~~
./../include/libc-symbols.h:557:32: note: in expansion of macro 'hidden_def'
  557 | # define libc_hidden_def(name) hidden_def (name)
      |                                ^~~~~~~~~~
thread-self.c:27:1: note: in expansion of macro 'libc_hidden_def'
   27 | libc_hidden_def (__hurd_thread_self)
      | ^~~~~~~~~~~~~~~
Message-Id: <ZGr6wj2UOxg3F0qH@jupiter.tail36e24.ts.net>

17 months agoio: Fix a typo
Sergey Bugaev [Sat, 20 May 2023 11:55:31 +0000 (14:55 +0300)]
io: Fix a typo

Fixes 85f7554cd97e7f03d8dc66278653045ef63a2221
"Add test case for O_TMPFILE handling in open, openat"

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Message-Id: <20230520115531.3911877-3-bugaevc@gmail.com>

17 months agohtl: Use __hurd_fail () instead of assigning errno
Sergey Bugaev [Sat, 20 May 2023 11:55:30 +0000 (14:55 +0300)]
htl: Use __hurd_fail () instead of assigning errno

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Message-Id: <20230520115531.3911877-2-bugaevc@gmail.com>

17 months agohurd: Use __hurd_fail () instead of assigning errno
Sergey Bugaev [Sat, 20 May 2023 11:55:29 +0000 (14:55 +0300)]
hurd: Use __hurd_fail () instead of assigning errno

The __hurd_fail () inline function is the dedicated, idiomatic way of
reporting errors in the Hurd part of glibc. Not only is it more concise
than '{ errno = err; return -1; }', it is since commit
6639cc10029e24e06b34e169712b21c31b8cf213
"hurd: Mark error functions as __COLD" marked with the cold attribute,
telling the compiler that this codepath is unlikely to be executed.

In one case, use __hurd_dfail () over the plain __hurd_fail ().

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Message-Id: <20230520115531.3911877-1-bugaevc@gmail.com>

17 months agopowerpc:GCC(<10) doesn't allow -mlong-double-64 after -mabi=ieeelongdouble
Mahesh Bodapati [Fri, 12 May 2023 10:22:59 +0000 (05:22 -0500)]
powerpc:GCC(<10) doesn't allow -mlong-double-64 after -mabi=ieeelongdouble

Removed -mabi=ieeelongdouble on failing tests. It resolves the error.
error: ‘-mabi=ieeelongdouble’ requires ‘-mlong-double-128’

17 months agohurd: Fix using interposable hurd_thread_self
Sergey Bugaev [Fri, 19 May 2023 14:47:24 +0000 (17:47 +0300)]
hurd: Fix using interposable hurd_thread_self

Create a private hidden __hurd_thread_self alias, and use that one.

Fixes 2f8ecb58a59eb82c43214d000842d99644a662d1
"hurd: Fix x86_64 _hurd_tls_fork" and
c7fcce38c83a2bb665ef5dc4981bf20c7e586123
"hurd: Make sure to not use tcb->self"

Reported-by: Joseph Myers <joseph@codesourcery.com>
Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
17 months agohurd 64bit: Re-introduce gai_suspend symbol
Samuel Thibault [Fri, 19 May 2023 18:44:01 +0000 (20:44 +0200)]
hurd 64bit: Re-introduce gai_suspend symbol

4d3f846b88d3 ("hurd: Fix __TIMESIZE on x86_64") incidentaly dropped it
because it fixed hurd 64bit into setting __TIMESIZE to 64, and that case
was not having gai_suspend defined yet.

17 months agohurd: Fix __TIMESIZE on x86_64
Sergey Bugaev [Fri, 19 May 2023 17:15:16 +0000 (20:15 +0300)]
hurd: Fix __TIMESIZE on x86_64

We had sizeof (time_t) == 8, but __TIMESIZE == 32.

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Message-Id: <20230519171516.3698754-1-bugaevc@gmail.com>

17 months agoposix: Reformat Makefile.
Carlos O'Donell [Thu, 18 May 2023 20:20:29 +0000 (16:20 -0400)]
posix: Reformat Makefile.

Fix LOCALE list formatting.
Sort all reflowed text using scripts/sort-makefile-lines.py.

No code generation changes observed in binary artifacts.
No regressions on x86_64 and i686.

17 months agohurd: Fix expected c++ types
Samuel Thibault [Thu, 18 May 2023 23:45:06 +0000 (01:45 +0200)]
hurd: Fix expected c++ types

90604f670c10 ("hurd 64bit: Add data for check-c++-types") actually added
the 32bit version. This fixes it into a 64bit version.

17 months agocatgets: Reformat Makefile.
Carlos O'Donell [Thu, 18 May 2023 17:13:32 +0000 (13:13 -0400)]
catgets: Reformat Makefile.

Reflow all long lines adding comment terminators.
Sort all reflowed text using scripts/sort-makefile-lines.py.

No code generation changes observed in binary artifacts.
No regressions on x86_64 and i686.

17 months agobenchtests: Reformat Makefile.
Carlos O'Donell [Thu, 18 May 2023 17:06:02 +0000 (13:06 -0400)]
benchtests: Reformat Makefile.

Reflow all long lines adding comment terminators.
Sort all reflowed text using scripts/sort-makefile-lines.py.

No regressions running microbenchmarks.
No code generation changes observed in binary artifacts.
No regressions on x86_64 and i686.

17 months agoassert: Reformat Makefile.
Carlos O'Donell [Thu, 18 May 2023 16:56:45 +0000 (12:56 -0400)]
assert: Reformat Makefile.

Reflow all long lines adding comment terminators.
Sort all reflowed text using scripts/sort-makefile-lines.py.

No code generation changes observed in binary artifacts.
No regressions on x86_64 and i686.

17 months agonptl: Reformat Makefile.
Carlos O'Donell [Wed, 17 May 2023 12:27:59 +0000 (08:27 -0400)]
nptl: Reformat Makefile.

Reflow all long lines adding comment terminators.
Rename files that cause inconsistent ordering.
Sort all reflowed text using scripts/sort-makefile-lines.py.

No code generation changes observed in binary artifacts.
No regressions on x86_64 and i686.

17 months agowcsmbs: Reformat Makefile.
Carlos O'Donell [Wed, 17 May 2023 13:34:53 +0000 (09:34 -0400)]
wcsmbs: Reformat Makefile.

Reflow Makefile.
Sort using updated scripts/sort-makefile-lines.py.

Code generation is changed as routines are linked in sorted order
as expected.

No regressions on x86_64 and i686.

Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
17 months agomisc: Reformat Makefile.
Carlos O'Donell [Wed, 17 May 2023 13:34:24 +0000 (09:34 -0400)]
misc: Reformat Makefile.

Reflow Makefile.
Sort using updated scripts/sort-makefile-lines.py.

Code generation is changed as routines are linked in sorted order
as expected.

No regressions on x86_64 and i686.

Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
17 months agostdio-common: Adjust tests in Makefile
Carlos O'Donell [Wed, 17 May 2023 13:33:05 +0000 (09:33 -0400)]
stdio-common: Adjust tests in Makefile

Sort tests against updated scripts/sort-makefile-lines.py.

No changes in generated code.
No regressions on x86_64 and i686.

Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
17 months agoelf: Adjust tests in Makefile.
Carlos O'Donell [Wed, 17 May 2023 13:27:17 +0000 (09:27 -0400)]
elf: Adjust tests in Makefile.

Sort tests against updated scripts/sort-makefile-lines.py.

No changes in generated code.
No regressions on x86_64 and i686.

Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
17 months agoscripts: sort-makefile-lines.py
Carlos O'Donell [Wed, 17 May 2023 13:16:41 +0000 (09:16 -0400)]
scripts: sort-makefile-lines.py

We must return < 0, 0, or > 0 as the result of the comparison function
for cmp_to_key() to work correctly across all comparisons.

Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
17 months agoAdd a SECURITY.md
Siddhesh Poyarekar [Wed, 17 May 2023 23:44:46 +0000 (19:44 -0400)]
Add a SECURITY.md

Move content from the Security Process[1] and Security Exceptions[2]
wiki documents into the repository so that it is in a standard place for
analysis tools to look for the glibc security policy.

This is a more or less verbatim port of the wiki document with some
restructuring for a more coherent layout since the two pages are now
merged.  There should be no change in messaging in this commit.

Signed-off-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
17 months agoAdd HWCAP2_SME* from Linux 6.3 to AArch64 bits/hwcap.h
Joseph Myers [Thu, 18 May 2023 14:55:27 +0000 (14:55 +0000)]
Add HWCAP2_SME* from Linux 6.3 to AArch64 bits/hwcap.h

Linux 6.3 adds six HWCAP2_SME* constants for AArch64; add them to the
corresponding bits/hwcap.h in glibc.

Tested with build-many-glibcs.py for aarch64-linux-gnu.

17 months agohurd: Also make it possible to call strlen very early
Sergey Bugaev [Wed, 17 May 2023 19:14:35 +0000 (22:14 +0300)]
hurd: Also make it possible to call strlen very early

strlen, which is another ifunc-selected function, is invoked during
early static executable startup if the argv arrives from the exec
server. Make it not crash.

Checked on x86_64-gnu: statically linked executables launched after the
exec server is up now start up successfully.

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Message-Id: <20230517191436.73636-10-bugaevc@gmail.com>

17 months agohurd: Fix setting up pthreads
Sergey Bugaev [Wed, 17 May 2023 19:14:34 +0000 (22:14 +0300)]
hurd: Fix setting up pthreads

On x86_64, we have to pass function arguments in registers, not on the
stack. We also have to align the stack pointer in a specific way. Since
sharing the logic with i386 does not bring much benefit, split the file
back into i386- and x86_64-specific versions, and fix the x86_64 version
to set up the thread properly.

Bonus: i386 keeps doing the extra RPC inside __thread_set_pcsptp to
fetch the state of the thread before setting it; but x86_64 no lnoger
does that.

Checked on x86_64-gnu and i686-gnu.

Fixes be6d002ca277ffc90058d382396150cb0e785b9c
"hurd: Set up the basic tree for x86_64-gnu"

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Message-Id: <20230517191436.73636-9-bugaevc@gmail.com>

17 months agohurd: Fix x86_64 _hurd_tls_fork
Sergey Bugaev [Wed, 17 May 2023 19:14:33 +0000 (22:14 +0300)]
hurd: Fix x86_64 _hurd_tls_fork

It is illegal to call thread_get_state () on mach_thread_self (), so
this codepath cannot be used as-is to fork the calling thread's TLS.
Fortunately we can use THREAD_SELF (aka %fs:0x0) to find out the value
of our fs_base without calling into the kernel.

Fixes: f6cf701efc61c9ad910372bda14b9a235db310a8
"hurd: Implement TLS for x86_64"

Checked on x86_64-gnu: fork () now works!

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Message-Id: <20230517191436.73636-8-bugaevc@gmail.com>

17 months agohurd: Make sure to not use tcb->self
Sergey Bugaev [Wed, 17 May 2023 19:14:32 +0000 (22:14 +0300)]
hurd: Make sure to not use tcb->self

Unlike sigstate->thread, tcb->self did not hold a Mach port reference on
the thread port it names. This means that the port can be deallocated,
and the name reused for something else, without anyone noticing. Using
tcb->self will then lead to port use-after-free.

Fortunately nothing was accessing tcb->self, other than it being
intially set to then-valid thread port name upon TCB initialization. To
assert that this keeps being the case without altering TCB layout,
rename self -> self_do_not_use, and stop initializing it.

Also, do not (re-)allocate a whole separate and unused stack for the
main thread, and just exit __pthread_setup early in this case.

Found upon attempting to use tcb->self and getting unexpected crashes.

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Message-Id: <20230517191436.73636-7-bugaevc@gmail.com>

17 months agohurd: Use __mach_setup_thread_call ()
Sergey Bugaev [Wed, 17 May 2023 19:14:31 +0000 (22:14 +0300)]
hurd: Use __mach_setup_thread_call ()

...instead of mach_setup_thread (), which is unsuitable for setting up
function calls.

Checked on x86_64-gnu: the signal thread no longer crashes upon trying
to process a message.

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Message-Id: <20230517191436.73636-6-bugaevc@gmail.com>

17 months agomach: Add __mach_setup_thread_call ()
Sergey Bugaev [Wed, 17 May 2023 19:14:30 +0000 (22:14 +0300)]
mach: Add __mach_setup_thread_call ()

This is just like mach_setup_thread (), but it's suitable for making the
thread call a function correctly, as opposed to explicitly setting the
thread's stack and instruction pointers to the given values. Internally,
it uses MACHINE_THREAD_STATE_SETUP_CALL.

Unlike mach_setup_thread (), which is exported via mach.h for the
benefit of the Hurd exec server, __mach_setup_thread_call () is private
to glibc for the time being.

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Message-Id: <20230517191436.73636-5-bugaevc@gmail.com>

17 months agohurd: Use MACHINE_THREAD_STATE_SETUP_CALL
Sergey Bugaev [Wed, 17 May 2023 19:14:29 +0000 (22:14 +0300)]
hurd: Use MACHINE_THREAD_STATE_SETUP_CALL

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Message-Id: <20230517191436.73636-4-bugaevc@gmail.com>

17 months agomach: Define MACHINE_THREAD_STATE_SETUP_CALL
Sergey Bugaev [Wed, 17 May 2023 19:14:28 +0000 (22:14 +0300)]
mach: Define MACHINE_THREAD_STATE_SETUP_CALL

The existing two macros, MACHINE_THREAD_STATE_SET_PC and
MACHINE_THREAD_STATE_SET_SP, can be used to set program counter and the
stack pointer registers in a machine-specific thread state structure.

Useful as it is, this may not be enough to set up the thread to make a
function call, because the machine-specific ABI may impose additional
requirements. In particular, x86_64 ABI requires that upon function
entry, the stack pointer is 8 less than 16-byte aligned (sp & 15 == 8).

To deal with this, introduce a new macro,
MACHINE_THREAD_STATE_SETUP_CALL (), which sets both stack and
instruction pointers, and also applies any machine-specific requirements
to make a valid function call. The default implementation simply
forwards to MACHINE_THREAD_STATE_SET_PC and MACHINE_THREAD_STATE_SET_SP,
but on x86_64 we additionally align the stack pointer.

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Message-Id: <20230517191436.73636-3-bugaevc@gmail.com>

17 months agoUse TASK_THREAD_TIMES_INFO_COUNT when calling task_info with TASK_THREAD_TIMES_INFO
Flavio Cruz [Wed, 17 May 2023 02:59:24 +0000 (22:59 -0400)]
Use TASK_THREAD_TIMES_INFO_COUNT when calling task_info with TASK_THREAD_TIMES_INFO

This hasn't caused any problems yet but we are passing a pointer to struct
task_thread_times_info which can cause problems if we populate over the
existing size of the struct.
Message-Id: <ZGRDDNcOM2hA3CuT@jupiter.tail36e24.ts.net>

17 months agoargp: Reformat Makefile.
Carlos O'Donell [Tue, 16 May 2023 15:59:25 +0000 (11:59 -0400)]
argp: Reformat Makefile.

Reflow Makefile.
Sort using scripts/sort-makefile-lines.py.

Code generation is changed as routines are linked in sorted order
as expected.

No regressions on x86_64 and i686.

17 months agostdlib: Avoid undefined behavior in stdlib/tst-labs
Florian Weimer [Tue, 16 May 2023 21:26:40 +0000 (23:26 +0200)]
stdlib: Avoid undefined behavior in stdlib/tst-labs

The last loop could attempt to overflow beyond INT_MAX on 32-bit
architectures.

Also switch to GNU style.

Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
17 months agostdlib: Use long long int in stdlib/tst-llabs
Florian Weimer [Tue, 16 May 2023 20:54:25 +0000 (22:54 +0200)]
stdlib: Use long long int in stdlib/tst-llabs

And adjust for GNU style.

Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
18 months agoUpdate kernel version to 6.3 in header constant tests
Joseph Myers [Tue, 16 May 2023 23:15:13 +0000 (23:15 +0000)]
Update kernel version to 6.3 in header constant tests

This patch updates the kernel version in the tests tst-mman-consts.py,
tst-mount-consts.py and tst-pidfd-consts.py to 6.3.  (There are no new
constants covered by these tests in 6.3 that need any other header
changes.)

Tested with build-many-glibcs.py.

18 months agoi386: Use pthread_barrier for synchronization on tst-bz21269
DJ Delorie [Tue, 16 May 2023 02:50:35 +0000 (22:50 -0400)]
i386: Use pthread_barrier for synchronization on tst-bz21269

So I was able to reproduce the hangs in the original source, and debug
it, and fix it.  In doing so, I realized that we can't use anything
complex to trigger the thread because that "anything" might also cause
the expected segfault and force everything out of sync again.

Here's what I ended up with, and it doesn't seem to hang where the
original one hung quite often (in a tight while..end loop).  The key
changes are:

1. Calls to futex are error checked, with retries, to ensure that the
   futexes are actually doing what they're supposed to be doing.  In the
   original code, nearly every futex call returned an error.

2. The main loop has checks for whether the thread ran or not, and
   "unlocks" the thread if it didn't (this is how the original source
   hangs).

Note: the usleep() is not for timing purposes, but just to give the
kernel an excuse to run the other thread at that time.  The test will
not hang without it, but is more likely to test the right bugfix
if the usleep() is present.

18 months agostdlib: Add testcases for llabs(). (BZ #30263)
Joe Simmons-Talbott [Tue, 4 Apr 2023 13:57:47 +0000 (09:57 -0400)]
stdlib: Add testcases for llabs(). (BZ #30263)

Test minimum and maximum long long values, zero, 32bit crossover points, and
part of the range of long long values.  Use '-fno-builtin' to ensure we are
testing the implementation.

Reviewed-by: Wilco Dijkstra <Wilco.Dijkstra@arm.com>
18 months agostdlib: Add testcases for labs(). (BZ #30263)
Joe Simmons-Talbott [Tue, 4 Apr 2023 13:57:46 +0000 (09:57 -0400)]
stdlib: Add testcases for labs(). (BZ #30263)

Test minimum and maximum long values, zero, and part of the range
of long values.  Use '-fno-builtin' to ensure we are testing the
implementation.

Reviewed-by: Wilco Dijkstra <Wilco.Dijkstra@arm.com>
18 months agostdlib: Add testcases for abs(). (BZ #30263)
Joe Simmons-Talbott [Tue, 4 Apr 2023 13:57:45 +0000 (09:57 -0400)]
stdlib: Add testcases for abs(). (BZ #30263)

Test minimum and maximum int values, zero, and part of the range
of int values.  Use '-fno-builtin' to ensure we are testing the
implementation.

Reviewed-by: Wilco Dijkstra <Wilco.Dijkstra@arm.com>
18 months agohurd: Fix computing user stack pointer
Sergey Bugaev [Mon, 15 May 2023 08:33:23 +0000 (11:33 +0300)]
hurd: Fix computing user stack pointer

Fixes b574ae0a2876ee94e4fe617f878407bf818c2df0
"hurd: Implement sigreturn for x86_64"

Checked on x86_64-gnu.

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Message-Id: <20230515083323.1358039-5-bugaevc@gmail.com>

18 months agohurd: Fix sc_i386_thread_state layout
Sergey Bugaev [Mon, 15 May 2023 08:33:22 +0000 (11:33 +0300)]
hurd: Fix sc_i386_thread_state layout

The real i386_thread_state Mach structure has an alignment of 8 on
x86_64. However, in struct sigcontext, the compiler was packing sc_gs
(which is the first member of sc_i386_thread_state) into the same 8-byte
slot as sc_error; this resulted in the rest of sc_i386_thread_state
members having wrong offsets relative to each other, and the overall
sc_i386_thread_state layout mismatching that of i386_thread_state.

Fix this by explicitly adding the required padding members, and
statically asserting that this results in the desired alignment.

The same goes for sc_i386_float_state.

Checked on x86_64-gnu.

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Message-Id: <20230515083323.1358039-4-bugaevc@gmail.com>