diff options
-rw-r--r-- | elf/Makefile | 9 | ||||
-rw-r--r-- | elf/tst-prelink-cmp.c | 49 | ||||
-rw-r--r-- | elf/tst-prelink.exp | 1 |
3 files changed, 51 insertions, 8 deletions
diff --git a/elf/Makefile b/elf/Makefile index 5e7f938..5d666b1 100644 --- a/elf/Makefile +++ b/elf/Makefile @@ -457,12 +457,10 @@ update-all-abi: update-all-abi-ld ifeq ($(have-glob-dat-reloc),yes) tests += tst-prelink +tests-internal += tst-prelink-cmp # Don't compile tst-prelink.c with PIE for GLOB_DAT relocation. CFLAGS-tst-prelink.c += -fno-pie tst-prelink-no-pie = yes -ifeq ($(run-built-tests),yes) -tests-special += $(objpfx)tst-prelink-cmp.out -endif endif # The test requires shared _and_ PIE because the executable @@ -1605,10 +1603,7 @@ tst-prelink-ENV = LD_TRACE_PRELINKING=1 $(objpfx)tst-prelink-conflict.out: $(objpfx)tst-prelink.out grep stdout $< | grep conflict | $(AWK) '{ print $$10, $$11 }' > $@ -$(objpfx)tst-prelink-cmp.out: tst-prelink.exp \ - $(objpfx)tst-prelink-conflict.out - cmp $^ > $@; \ - $(evaluate-test) +$(objpfx)tst-prelink-cmp.out: $(objpfx)tst-prelink-conflict.out $(objpfx)tst-ldconfig-X.out : tst-ldconfig-X.sh $(objpfx)ldconfig $(SHELL) $< '$(common-objpfx)' '$(test-wrapper-env)' \ diff --git a/elf/tst-prelink-cmp.c b/elf/tst-prelink-cmp.c new file mode 100644 index 0000000..588c211 --- /dev/null +++ b/elf/tst-prelink-cmp.c @@ -0,0 +1,49 @@ +/* Test the output from the environment variable, LD_TRACE_PRELINKING, + for prelink. + Copyright (C) 2021 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 <ldsodefs.h> +#include <support/check.h> +#include <support/xstdio.h> +#include <support/support.h> +#include <support/test-driver.h> + +static int +do_test (void) +{ +#ifndef DL_EXTERN_PROTECTED_DATA + return EXIT_UNSUPPORTED; +#else + char *src = xasprintf ("%s/elf/tst-prelink-conflict.out", + support_objdir_root); + FILE *f = xfopen (src,"r"); + size_t buffer_length = 0; + char *buffer = NULL; + + const char *expected = "/0 stdout\n"; + + xgetline (&buffer, &buffer_length, f); + TEST_COMPARE_STRING (expected, buffer); + + free (buffer); + xfclose (f); + return 0; +#endif +} + +#include <support/test-driver.c> diff --git a/elf/tst-prelink.exp b/elf/tst-prelink.exp deleted file mode 100644 index b35b4c9..0000000 --- a/elf/tst-prelink.exp +++ /dev/null @@ -1 +0,0 @@ -/0 stdout |