From 513884a413f4d970d93d142ef881ab3d55ffb0a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20B=C3=A9rat?= Date: Wed, 8 Jan 2025 17:20:44 +0100 Subject: [PATCH] Backport elf/tst-startup-errno test Resolves: RHEL-58671 --- glibc-RHEL-58671.patch | 90 ++++++++++++++++++++++++++++++++++++++++++ glibc.spec | 2 + 2 files changed, 92 insertions(+) create mode 100644 glibc-RHEL-58671.patch diff --git a/glibc-RHEL-58671.patch b/glibc-RHEL-58671.patch new file mode 100644 index 0000000..a991ece --- /dev/null +++ b/glibc-RHEL-58671.patch @@ -0,0 +1,90 @@ +commit 83fd4149ffdae86c8864a6828f39dd942956636f +Author: Aaron Merey +Date: Thu Sep 19 11:11:39 2024 -0400 + + Test that errno is set to 0 at program startup + + Add new testcase elf/tst-startup-errno.c which tests that errno is set + to 0 at first ELF constructor execution and at the start of the + program's main function. + + Tested for x86_64 + + Reviewed-by: Carlos O'Donell + +diff --git a/elf/Makefile b/elf/Makefile +index ffadf1c61f66bef8..ff59287519433b8d 100644 +--- a/elf/Makefile ++++ b/elf/Makefile +@@ -434,6 +434,7 @@ tests += \ + tst-single_threaded-pthread \ + tst-sonamemove-dlopen \ + tst-sonamemove-link \ ++ tst-startup-errno \ + tst-thrlock \ + tst-tls10 \ + tst-tls11 \ +diff --git a/elf/tst-startup-errno.c b/elf/tst-startup-errno.c +new file mode 100644 +index 0000000000000000..59a1005fb674a5c3 +--- /dev/null ++++ b/elf/tst-startup-errno.c +@@ -0,0 +1,58 @@ ++/* Test the value of errno at program startup. ++ Copyright (C) 2024 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, see ++ . */ ++ ++#include ++#include ++#include ++ ++/* Verify that errno is 0 at first ELF constructor execution and at ++ the start of main. */ ++ ++static void set_ctor_errno (void) __attribute__((constructor)); ++static int ctor_errno = -1; ++ ++static void ++set_ctor_errno (void) ++{ ++ ctor_errno = errno; ++} ++ ++static int ++get_ctor_errno (void) ++{ ++ return ctor_errno; ++} ++ ++int ++main (void) ++{ ++ if (errno != 0) ++ { ++ printf ("At start of main errno set to %d != 0\n", errno); ++ exit (1); ++ } ++ ++ if (get_ctor_errno () != 0) ++ { ++ printf ("At ctor exec errno set to %d != 0\n", get_ctor_errno ()); ++ exit (1); ++ } ++ ++ return 0; ++} ++ diff --git a/glibc.spec b/glibc.spec index 6528290..36d9d8d 100644 --- a/glibc.spec +++ b/glibc.spec @@ -1042,6 +1042,7 @@ Patch734: glibc-RHEL-56539.patch Patch735: glibc-RHEL-56540-1.patch Patch736: glibc-RHEL-56540-2.patch Patch737: glibc-RHEL-56540-3.patch +Patch738: glibc-RHEL-58671.patch ############################################################################## # Continued list of core "glibc" package information: @@ -3046,6 +3047,7 @@ update_gconv_modules_cache () - Backport test implementation to verify lstat behavior (RHEL-56539) - Backport test implementation to verify rewinddir behavior (RHEL-56540) +- Backport elf/tst-startup-errno test (RHEL-58671) * Thu Dec 19 2024 DJ Delorie - 2.34-148 - Increase ungetc test coverage, guarantee single char pushback (RHEL-46738)