From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1039) id D0F44385802A; Mon, 24 Jan 2022 14:49:22 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D0F44385802A Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: H.J. Lu To: glibc-cvs@sourceware.org Subject: [glibc] elf: Add a test for PT_LOAD segments with p_align == 1 [BZ #28688] X-Act-Checkin: glibc X-Git-Author: H.J. Lu X-Git-Refname: refs/heads/master X-Git-Oldrev: b5237c0746fcf5252fc88291a63782c59167fcb5 X-Git-Newrev: e4c9268d154ff11c070eba4791d33bd3a5875bca Message-Id: <20220124144922.D0F44385802A@sourceware.org> Date: Mon, 24 Jan 2022 14:49:22 +0000 (GMT) X-BeenThere: glibc-cvs@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Glibc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 Jan 2022 14:49:22 -0000 https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=e4c9268d154ff11c070eba4791d33bd3a5875bca commit e4c9268d154ff11c070eba4791d33bd3a5875bca Author: H.J. Lu Date: Tue Dec 21 12:25:20 2021 -0800 elf: Add a test for PT_LOAD segments with p_align == 1 [BZ #28688] Add tst-p_alignmod2-edit to edit the copy of tst-p_alignmod-base.so to set p_align of the first PT_LOAD segment to 1 and verify that the shared library can be loaded normally. Reviewed-by: Adhemerval Zanella Diff: --- elf/Makefile | 13 +++++++++++++ elf/tst-p_align2.c | 27 +++++++++++++++++++++++++++ elf/tst-p_alignmod2-edit.c | 27 +++++++++++++++++++++++++++ 3 files changed, 67 insertions(+) diff --git a/elf/Makefile b/elf/Makefile index 1758259075..687b913a53 100644 --- a/elf/Makefile +++ b/elf/Makefile @@ -414,7 +414,9 @@ tests += \ tst-noload \ tst-null-argv \ tst-p_alignmod1-edit \ + tst-p_alignmod2-edit \ tst-p_align1 \ + tst-p_align2 \ tst-relsort1 \ tst-ro-dynamic \ tst-rtld-run-static \ @@ -2609,3 +2611,14 @@ $(objpfx)tst-p_alignmod1.so: $(objpfx)tst-p_alignmod1-edit \ cp $(objpfx)tst-p_alignmod-base.so $@ $(test-wrapper-env) $(run-program-env) $(rtld-prefix) \ $(objpfx)tst-p_alignmod1-edit $@ + +$(objpfx)tst-p_align2: $(objpfx)tst-p_alignmod2.so + +# Make a copy of tst-p_alignmod-base.so and update p_align of the first +# PT_LOAD segment. +$(objpfx)tst-p_alignmod2.so: $(objpfx)tst-p_alignmod2-edit \ + $(objpfx)tst-p_alignmod-base.so + rm -f $@ + cp $(objpfx)tst-p_alignmod-base.so $@ + $(test-wrapper-env) $(run-program-env) $(rtld-prefix) \ + $(objpfx)tst-p_alignmod2-edit $@ diff --git a/elf/tst-p_align2.c b/elf/tst-p_align2.c new file mode 100644 index 0000000000..961c7fbbf1 --- /dev/null +++ b/elf/tst-p_align2.c @@ -0,0 +1,27 @@ +/* Check different alignments of PT_LOAD segments in a shared library. + 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 + . */ + +#include "tst-p_align.h" + +static int +do_test (void) +{ + return do_load_test (); +} + +#include diff --git a/elf/tst-p_alignmod2-edit.c b/elf/tst-p_alignmod2-edit.c new file mode 100644 index 0000000000..4c2ae65b4e --- /dev/null +++ b/elf/tst-p_alignmod2-edit.c @@ -0,0 +1,27 @@ +/* Set p_align of the first PT_LOAD segment to 1. + 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 + . */ + +#include "tst-elf-edit.h" + +/* Set p_align to 1. */ + +static size_t +update_p_align (size_t p_align __attribute__ ((unused))) +{ + return 1; +}