summaryrefslogtreecommitdiff
path: root/linux-Add-a-getauxval-test-BZ-23293.patch
diff options
context:
space:
mode:
Diffstat (limited to 'linux-Add-a-getauxval-test-BZ-23293.patch')
-rw-r--r--linux-Add-a-getauxval-test-BZ-23293.patch114
1 files changed, 114 insertions, 0 deletions
diff --git a/linux-Add-a-getauxval-test-BZ-23293.patch b/linux-Add-a-getauxval-test-BZ-23293.patch
new file mode 100644
index 0000000..f3f41cf
--- /dev/null
+++ b/linux-Add-a-getauxval-test-BZ-23293.patch
@@ -0,0 +1,114 @@
+From 9faf5262c77487c96da8a3e961b88c0b1879e186 Mon Sep 17 00:00:00 2001
+From: Szabolcs Nagy <szabolcs.nagy@arm.com>
+Date: Tue, 3 May 2022 13:18:04 +0100
+Subject: [PATCH 3/4] linux: Add a getauxval test [BZ #23293]
+
+Conflict:adapt Makefile context
+Reference:https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=9faf5262c77487c96da8a3e961b88c0b1879e186
+
+This is for bug 23293 and it relies on the glibc test system running
+tests via explicit ld.so invokation by default.
+
+Reviewed-by: Florian Weimer <fweimer@redhat.com>
+Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
+---
+ sysdeps/unix/sysv/linux/Makefile | 1 +
+ sysdeps/unix/sysv/linux/tst-getauxval.c | 74 +++++++++++++++++++++++++
+ 2 files changed, 75 insertions(+)
+ create mode 100644 sysdeps/unix/sysv/linux/tst-getauxval.c
+
+diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
+index ca953804d0..89cb005c7d 100644
+--- a/sysdeps/unix/sysv/linux/Makefile
++++ b/sysdeps/unix/sysv/linux/Makefile
+@@ -126,6 +126,7 @@ tests += tst-clone tst-clone2 tst-clone3 tst-fanotify tst-personality \
+ tst-close_range \
+ tst-prctl \
+ tst-scm_rights \
++ tst-getauxval \
+ # tests
+
+ # Test for the symbol version of fcntl that was replaced in glibc 2.28.
+diff --git a/sysdeps/unix/sysv/linux/tst-getauxval.c b/sysdeps/unix/sysv/linux/tst-getauxval.c
+new file mode 100644
+index 0000000000..c4b6195743
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/tst-getauxval.c
+@@ -0,0 +1,74 @@
++/* Basic test for getauxval.
++ Copyright (C) 2022 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
++ <https://www.gnu.org/licenses/>. */
++
++#include <unistd.h>
++#include <stdio.h>
++#include <support/check.h>
++#include <sys/auxv.h>
++
++static int missing;
++static int mismatch;
++
++static void
++check_nonzero (unsigned long t, const char *s)
++{
++ unsigned long v = getauxval (t);
++ printf ("%s: %lu (0x%lx)\n", s, v, v);
++ if (v == 0)
++ missing++;
++}
++
++static void
++check_eq (unsigned long t, const char *s, unsigned long want)
++{
++ unsigned long v = getauxval (t);
++ printf ("%s: %lu want: %lu\n", s, v, want);
++ if (v != want)
++ mismatch++;
++}
++
++#define NZ(x) check_nonzero (x, #x)
++#define EQ(x, want) check_eq (x, #x, want)
++
++static int
++do_test (void)
++{
++ /* These auxv entries should be non-zero on Linux. */
++ NZ (AT_PHDR);
++ NZ (AT_PHENT);
++ NZ (AT_PHNUM);
++ NZ (AT_PAGESZ);
++ NZ (AT_ENTRY);
++ NZ (AT_CLKTCK);
++ NZ (AT_RANDOM);
++ NZ (AT_EXECFN);
++ if (missing)
++ FAIL_EXIT1 ("Found %d missing auxv entries.\n", missing);
++
++ /* Check against syscalls. */
++ EQ (AT_UID, getuid ());
++ EQ (AT_EUID, geteuid ());
++ EQ (AT_GID, getgid ());
++ EQ (AT_EGID, getegid ());
++ if (mismatch)
++ FAIL_EXIT1 ("Found %d mismatching auxv entries.\n", mismatch);
++
++ return 0;
++}
++
++#include <support/test-driver.c>
+--
+2.27.0
+