From patchwork Mon Jun 29 03:40:53 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "H.J. Lu" X-Patchwork-Id: 138007 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 04CF84BA2E22 for ; Mon, 29 Jun 2026 03:42:08 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 04CF84BA2E22 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20251104 header.b=Szq6nNLw X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail-pg1-x529.google.com (mail-pg1-x529.google.com [IPv6:2607:f8b0:4864:20::529]) by sourceware.org (Postfix) with ESMTPS id 934614BA2E17 for ; Mon, 29 Jun 2026 03:41:31 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 934614BA2E17 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 934614BA2E17 Authentication-Results: sourceware.org; arc=pass smtp.remote-ip=2607:f8b0:4864:20::529 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1782704491; cv=pass; b=Awtukjyblv2wZKpz2ygHH3ByQhrQU/3U7EnV+UKdMlqoMmNqklSco9rIxRliqStot/Ma9pypDAKdsQAZQupBPuybyG1bXYuOvnc8GTqk83xRDvAkf9cPe6k0TBfYev1g+oXvarDOVCf2tZglvLyqIbjlscRDvLXRurrAU57590s= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1782704491; c=relaxed/simple; bh=g//tFdOMC2YslCVgHs2368OnKTYznF3GBrbgAs8/wq4=; h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To; b=S5A+hyL3A1KpoOSnU350L8WF6obF5IdCSsrn/P49YINzJmFHe6nZ0sSidJKwWwilqg0UoxRhyYdbPVmw1Gzb9t73C4t+0GXDpkK5PjFSoYbXR/CWfS56aL/f8qgdI2UeX0Q46m7dUsFtb/XcjKtpFWbIA3CT4ynU7AvjRUB/PJg= ARC-Authentication-Results: i=2; sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20251104 header.b=Szq6nNLw DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 934614BA2E17 Received: by mail-pg1-x529.google.com with SMTP id 41be03b00d2f7-c964d52321bso373517a12.0 for ; Sun, 28 Jun 2026 20:41:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1782704490; cv=none; d=google.com; s=arc-20260327; b=AO1JwS2myCpi88mFkR7V6Vfm0lthxa/fkzNLqOllaqHgpIk6zHz1MMYvqM/Ap+fBPg P9DzwpvMVnRLZ+JYvGgRBJ0XW+mU568jXY+Pf6Ioo0t2sPke3UYbXMMLKrkcrtMEqQwe +DgRR0gr+XbVPkx3Xy3nH74iGjG1wncKmt2kIMUKs1l12WRCHhAl1RAnKVo3ku3IZkJY JnCjTteu9ky/SW/6mW8itLPL0tAO66m+hEPtdCBWUdTjc6ADTnCOZhlVtrSUsrlbanw8 8H9S54CKCygEcJDGhCcsYeNTxB66Ix+mOK8wpk1oZ8IPHGo295YlSMpVO3V2dHRJ5zJ4 UH3Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=jAj6weRyBZFQ3u4uMAHSn/euU9Thf/dX6JqR6Y5DuEs=; fh=4UV4rdHF8N73Tg7hAjOf4KFGPTxxy1bJyyYTScOBC4Q=; b=POOhwXAa4Z7SCnSkalxZ7gQqor2LFBOGfW7DD6cJk6Mv31r8bUQOnNnjQcZ40xnMcT 1xeV88DtyQXuAMAPrSHdfet8K4JEZRtCOxVRHthJ9EHjy0oXU3vKR0EjGNvNWq8vt9XB I2qkhVHYC0ScFwArSDdAmUUQ0M1u9670Kwvh7a0LmeswWRefpV1OTLILlMrJScpq5nVu 9YZv2avUPpmSY4AVMHtRqmb9yIk/+V+jKh3vTvcZO7kjg74BTIFy5Pd295oTdCG01Od/ BsVCjlnRjYpm0DGSP+kvCGuBiB1zpylO2QqP4qdF9AYidLzlSDZjhCgnbMwLJr9ufE3o teXg==; darn=sourceware.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1782704490; x=1783309290; darn=sourceware.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=jAj6weRyBZFQ3u4uMAHSn/euU9Thf/dX6JqR6Y5DuEs=; b=Szq6nNLwWXPE/UR2gy/7PjWzD5ZtopmYIQW05EKnIL8FfUlLTjsu1f7BX3gTVmIhtg wB2PD/7hQ8DcePTH3Z8I9AVT2r5FAfLQCn6qOQ+Q1+SvhQqWBdAlp0Zj3B8DXP5JY4Sk uiXHtNBQ6HT3lk13BoRYsYBUwjRKq6U7Jq4s/y7uRgDrBM3Ezvcp6+7KcxpgGMLN95eV ZaulLZJuX8XOzbUlSFzbGDcglP/K6uurv9wF7IHWG8O011ooyway4Td6QGIi+f1LiB1H OqO/IpjHsRf44ypHMkfjGhQ8+nlPJ4TNDpbCt6yeTIWrFEivu6Sd3pPNHmxmHVa1ztE8 t80A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782704490; x=1783309290; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=jAj6weRyBZFQ3u4uMAHSn/euU9Thf/dX6JqR6Y5DuEs=; b=Bn83j6/h8QCvo3O0RTPnGBVNCZu6Es5i9CMNK09cEW0wB4HP7Va26UFppiaYVKQKv3 F9EgIhG+vo4VZhFNyQ04bBKLavWHt5q1MJWXF4yJGGxB2g2mwtFBayWNg3/oOCoiEm2N zn1Xbpl50NRHs609xw9l1Q9p3oeRyKj7Cvtiwob+mmccLyZHDec1W8fA4JrqqX2CzBiz If9k+Dwzk+Ws7XgfD1Dey2WRbTAkMc7pw82TuX1t0wW1nQ3pFNjIHpa/DMsOmHVahUKy oRLrRmzMwtZalNWwsBC6Elm7N+n05fBMnrAIYEhCA3IqRU9SAW+0vkMbg6d7+yraPNi1 W/Fg== X-Forwarded-Encrypted: i=1; AFNElJ8K2DOBukVvJ8jjEMk5/Q+5qntnhfYfaeMCWdojz4R5WRRIwAhrT9hZUzTW4QBNsa8xnVln+dDKyg==@sourceware.org X-Gm-Message-State: AOJu0YwEyEON1w74jkCpkE+hcCC6lKBu4mp/xqC44R3u0YbZ5mQHGWI1 cZg4IkgtW/G+awkbfEY7ve1TVcsgjJ6GVAJ1TeQGYSEYQpNYPHGZypI3aXETRhxTcIHZwCviaDu H8+2UspsJ9anBKGZV1fkSztYk55gLJzU= X-Gm-Gg: AfdE7ckwjS2yjFrV1gUuLwAn5RxipBz3cW9aA8psGWRtTsVAr6ZuMFORxYq0VOxXbzM wqlV1HJFw37ljzKsUBYzIwI88Brwbt1o0rOyxjbHlgxJzsfr3kKYgaXDvgzsipZoKhLbGOD8l/v +8VvQwnGD+oSfxjjKKlZfH9nTre32lWmNxcnoBmAsnxr2eesaAGCnf3NVdPtFSnnYyfSGu77SGK ZX9WAVDf087Fzv5s5saMPE7CIatzk2wGes03cQvM2IdhXbYglZzOlRYdbYPRANJvoSj0dKKAabD XfOg4Q== X-Received: by 2002:a05:6a21:4d91:b0:3bf:6c04:a814 with SMTP id adf61e73a8af0-3bf6c04ad32mr7727814637.53.1782704490470; Sun, 28 Jun 2026 20:41:30 -0700 (PDT) MIME-Version: 1.0 References: <05c74589-fa62-4673-bb6e-9154d37024ee@redhat.com> In-Reply-To: From: "H.J. Lu" Date: Mon, 29 Jun 2026 11:40:53 +0800 X-Gm-Features: AVVi8Cd3ScDubS84wMo6RRUTEg3JRk-OcdaAIcajAap5pT6-UYY3XoCkMad0Tis Message-ID: Subject: [PATCH v5] elf: Set image base address to the maximum page size To: Alan Modra Cc: Nick Clifton , Binutils X-Spam-Status: No, score=-3009.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP shortcircuit=no autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: binutils-bounces~patchwork=sourceware.org@sourceware.org On Mon, Jun 29, 2026 at 9:24 AM Alan Modra wrote: > > On Fri, Jun 26, 2026 at 12:06:50PM +0800, H.J. Lu wrote: > > Here is the v4 patch. > > On x86_64-linux I see FAIL: ld-elf/textaddr8 due to not matching the > expected header. > > Program Headers: > Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align > LOAD 0x000000 0x0000000000800000 0x0000000000800000 0x0000e8 0x0000e8 R 0x800000 > LOAD 0x800000 0x0000000001000000 0x0000000001000000 0x000004 0x000004 R E 0x800000 > LOAD 0x1000000 0x0000000001800000 0x0000000001800000 0x000004 0x000004 RW 0x800000 > > aarch64-linux-gnu +FAIL: ld-elf/textaddr8 > alpha-linux-gnu +FAIL: ld-elf/textaddr8 > am33_2.0-linux-gnu +FAIL: ld-elf/textaddr8 > armeb-linux-gnueabi +FAIL: ld-elf/textaddr8 > arm-linux-gnueabi +FAIL: ld-elf/textaddr8 > cris-linux-gnu +FAIL: ld-elf/textaddr8 > crisv32-linux-gnu +FAIL: ld-elf/textaddr8 > csky-linux-gnu +FAIL: ld-elf/textaddr8 > frv-linux-gnu +FAIL: ld-elf/textaddr8 > h8300-linux-gnu +FAIL: ld-elf/textaddr8 > hppa64-linux-gnu +FAIL: ld-elf/textaddr8 > hppa-linux-gnu +FAIL: ld-elf/textaddr8 > i586-linux-gnu +FAIL: ld-elf/textaddr8 > ia64-linux-gnu +FAIL: ld-elf/textaddr8 > kvx-linux-gnu +FAIL: ld-elf/textaddr8 > lm32-linux-gnu +FAIL: ld-elf/textaddr8 > loongarch64-linux-gnu +FAIL: ld-elf/textaddr8 > m32r-linux-gnu +FAIL: ld-elf/textaddr8 > m68k-linux-gnu +FAIL: ld-elf/textaddr8 > metag-linux-gnu +FAIL: ld-elf/textaddr8 > microblaze-linux-gnu +FAIL: ld-elf/textaddr8 > microblaze-linux-gnu +FAIL: ld-elf/textaddr9 > mips64-linux-gnuabi64 +FAIL: ld-elf/textaddr8 > mipsel-linux-gnu +FAIL: ld-elf/textaddr8 > mipsisa32el-linux-gnu +FAIL: ld-elf/textaddr8 > mips-linux-gnu +FAIL: ld-elf/textaddr8 > nds32le-linux-gnu +FAIL: ld-elf/textaddr8 > nds32le-linux-gnu +FAIL: ld-elf/textaddr9 > or1k-linux-gnu +FAIL: ld-elf/textaddr8 > powerpc64le-linux-gnu +FAIL: ld-elf/textaddr8 > powerpc64-linux-gnu +FAIL: ld-elf/textaddr8 > powerpc-linux-gnu +FAIL: ld-elf/textaddr8 > riscv64-linux-gnu +FAIL: ld-elf/textaddr8 > s390-linux-gnu +FAIL: ld-elf/textaddr8 > s390x-linux-gnu +FAIL: ld-elf/textaddr8 > sh4-linux-gnu +FAIL: ld-elf/textaddr8 > sparc64-linux-gnu +FAIL: ld-elf/textaddr8 > sparc-linux-gnu +FAIL: ld-elf/textaddr8 > tilegx-linux-gnu +FAIL: ld-elf/textaddr8 > tilepro-linux-gnu +FAIL: ld-elf/textaddr8 > x86_64-pc-linux-gnu +FAIL: ld-elf/textaddr8 > x86_64-pc-linux-gnux32 +FAIL: ld-elf/textaddr8 > > Changes in v5: 1. Adjust ld-elf/textaddr8 and ld-elf/textaddr9. 2. Add testsuite/ld-elf/textaddr10.d. From c0b8ac0fedc9cf836a4ae1126b7540e58de54c1a Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Thu, 28 May 2026 10:47:37 +0800 Subject: [PATCH v5] elf: Set image base address to the maximum page size When generating Position Dependent Executable for ELF with the maximum page size set on command-line, set the default image base address to the maximum page size to avoid segfault if it is lower than the maximum page size and issue an warning if the image base address set on command-line is lower than the maximum page size. PR ld/34184 * ldexp.c (fold_binary): Set the default image base address to the maximum page size for ELF PDE output if it is lower than the maximum page size set on command-line and issue an warning if the image base address set on command-line is lower than the maximum page size. * testsuite/ld-elf/elf.exp: Add ld/34184 tests for PDE, PIE static PDE and static PIE. * testsuite/ld-elf/pr34184.c: New file. * testsuite/ld-elf/textaddr3.d: Change -Ttext-segment address to 0x200100 so that it > the maximum page size. * testsuite/ld-elf/textaddr5.d: Likewise. * testsuite/ld-elf/textaddr8.d: New test. * testsuite/ld-elf/textaddr9.d: Likewise. * testsuite/ld-elf/textaddr10.d: Likewise. Signed-off-by: H.J. Lu --- ld/ldexp.c | 44 ++++++++++++++++++++++++++++---- ld/testsuite/ld-elf/elf.exp | 36 ++++++++++++++++++++++++++ ld/testsuite/ld-elf/pr34184.c | 8 ++++++ ld/testsuite/ld-elf/textaddr10.d | 9 +++++++ ld/testsuite/ld-elf/textaddr3.d | 2 +- ld/testsuite/ld-elf/textaddr5.d | 2 +- ld/testsuite/ld-elf/textaddr8.d | 9 +++++++ ld/testsuite/ld-elf/textaddr9.d | 9 +++++++ 8 files changed, 112 insertions(+), 7 deletions(-) create mode 100644 ld/testsuite/ld-elf/pr34184.c create mode 100644 ld/testsuite/ld-elf/textaddr10.d create mode 100644 ld/testsuite/ld-elf/textaddr8.d create mode 100644 ld/testsuite/ld-elf/textaddr9.d diff --git a/ld/ldexp.c b/ld/ldexp.c index 7bda6acc4c9..19542ad99c6 100644 --- a/ld/ldexp.c +++ b/ld/ldexp.c @@ -552,20 +552,54 @@ fold_binary (etree_type *tree) /* Check to see if the user has overridden the default value. */ segment_name = tree->binary.rhs->name.name; + + bool update_image_base + = ((bfd_get_flavour (link_info.output_bfd) + == bfd_target_elf_flavour) + && bfd_link_pde (&link_info) + && link_info.maxpagesize_is_set); + for (seg = segments; seg; seg = seg->next) if (strcmp (seg->name, segment_name) == 0) { if (!seg->used && config.magic_demand_paged - && link_info.maxpagesize != 0 - && (seg->value % link_info.maxpagesize) != 0) - einfo (_("%P: warning: address of `%s' " - "isn't multiple of maximum page size\n"), - segment_name); + && link_info.maxpagesize != 0) + { + if (seg->value < link_info.maxpagesize) + { + if (update_image_base) + einfo (_("%P: warning: image base (0x%llx) < " + "maximum page size (0x%llx)\n"), + (unsigned long long) seg->value, + (unsigned long long) link_info.maxpagesize); + } + else if ((seg->value % link_info.maxpagesize) != 0) + einfo (_("%P: warning: address of `%s' " + "isn't multiple of maximum page size\n"), + segment_name); + + /* Don't override image base from command-line. */ + if (strcmp (segment_name, "text-segment") == 0) + update_image_base = false; + + } seg->used = true; value = seg->value; break; } + + /* When generating Position Dependent Executable for ELF with the + maximum page size set on command-line, if image base address + is lower than the maximum page size, set image base address + to the maximum page size to avoid segfault. NB: For ELF, + -Ttext-segment=ADDR is an alias of --image-base=ADDR, which + sets the base address of the ELF executable. */ + if (update_image_base + && link_info.maxpagesize > value + && strcmp (segment_name, "text-segment") == 0) + value = link_info.maxpagesize; + new_rel_from_abs (value); return; } diff --git a/ld/testsuite/ld-elf/elf.exp b/ld/testsuite/ld-elf/elf.exp index 8fca30dbeeb..51b8c942648 100644 --- a/ld/testsuite/ld-elf/elf.exp +++ b/ld/testsuite/ld-elf/elf.exp @@ -535,6 +535,15 @@ if { [istarget *-*-linux*] "pr14525.out" \ "-fPIE" \ ] \ + [list \ + "Run PR ld/34184 test (static PIE)" \ + "-pie -Wl,-z,max-page-size=0x800000" \ + "" \ + {pr34184.c} \ + "pr34184-static-pie" \ + "pass.out" \ + "-fPIE" \ + ] \ ] } @@ -580,6 +589,33 @@ if { [istarget *-*-linux*] {} \ "-Wl,-R,tmpdir tmpdir/pr32690.so" \ ] \ + [list \ + "Run PR ld/34184 test (PDE)" \ + "$NOPIE_LDFLAGS -Wl,-z,max-page-size=0x800000" \ + "" \ + {pr34184.c} \ + "pr34184-pde" \ + "pass.out" \ + "$NOPIE_CFLAGS" \ + ] \ + [list \ + "Run PR ld/34184 test (static PDE)" \ + "-static $NOPIE_LDFLAGS -Wl,-z,max-page-size=0x800000" \ + "" \ + {pr34184.c} \ + "pr34184-static-pde" \ + "pass.out" \ + "$NOPIE_CFLAGS" \ + ] \ + [list \ + "Run PR ld/34184 test (PIE)" \ + "-pie -Wl,-z,max-page-size=0x800000" \ + "" \ + {pr34184.c} \ + "pr34184-pie" \ + "pass.out" \ + "-fPIE" \ + ] \ ] } diff --git a/ld/testsuite/ld-elf/pr34184.c b/ld/testsuite/ld-elf/pr34184.c new file mode 100644 index 00000000000..8fb892c6aaa --- /dev/null +++ b/ld/testsuite/ld-elf/pr34184.c @@ -0,0 +1,8 @@ +#include + +int +main () +{ + printf ("PASS\n"); + return 0; +} diff --git a/ld/testsuite/ld-elf/textaddr10.d b/ld/testsuite/ld-elf/textaddr10.d new file mode 100644 index 00000000000..570aeb74b4f --- /dev/null +++ b/ld/testsuite/ld-elf/textaddr10.d @@ -0,0 +1,9 @@ +#source: maxpage1.s +#ld: -shared -z max-page-size=0x800000 -z noseparate-code +#readelf: -l --wide +#target: *-*-linux-gnu *-*-gnu* arm*-*-uclinuxfdpiceabi +#xfail: ![check_shared_lib_support] + +#... + LOAD +0x0* 0x0* 0x0* 0x[0-9a-f]+ 0x[0-9a-f]+ R E 0x800000 +#pass diff --git a/ld/testsuite/ld-elf/textaddr3.d b/ld/testsuite/ld-elf/textaddr3.d index 3796b7dcb98..284d5a47015 100644 --- a/ld/testsuite/ld-elf/textaddr3.d +++ b/ld/testsuite/ld-elf/textaddr3.d @@ -1,4 +1,4 @@ #source: maxpage1.s -#ld: -Ttext-segment 0x10000 -z max-page-size=0x200000 +#ld: -Ttext-segment 0x200100 -z max-page-size=0x200000 #target: *-*-linux-gnu *-*-gnu* arm*-*-uclinuxfdpiceabi #warning: .*address of `text-segment' isn't multiple of maximum page size diff --git a/ld/testsuite/ld-elf/textaddr5.d b/ld/testsuite/ld-elf/textaddr5.d index ab1097f40cf..1f65c5136e0 100644 --- a/ld/testsuite/ld-elf/textaddr5.d +++ b/ld/testsuite/ld-elf/textaddr5.d @@ -1,5 +1,5 @@ #source: maxpage1.s -#ld: -shared -z max-page-size=0x200000 -Ttext-segment 0x10000 +#ld: -shared -z max-page-size=0x200000 -Ttext-segment 0x200100 #target: *-*-linux-gnu *-*-gnu* arm*-*-uclinuxfdpiceabi #xfail: ![check_shared_lib_support] #warning: .*address of `text-segment' isn't multiple of maximum page size diff --git a/ld/testsuite/ld-elf/textaddr8.d b/ld/testsuite/ld-elf/textaddr8.d new file mode 100644 index 00000000000..1d8607c1d59 --- /dev/null +++ b/ld/testsuite/ld-elf/textaddr8.d @@ -0,0 +1,9 @@ +#source: maxpage1.s +#ld: -z max-page-size=0x800000 --image-base 0x40000 -z separate-code +#warning: image base \(0x40000\) < maximum page size \(0x800000\) +#readelf: -l --wide +#target: *-*-linux-gnu *-*-gnu* arm*-*-uclinuxfdpiceabi + +#... + LOAD +0x0* 0x0*800000 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ R [E ] 0x800000 +#pass diff --git a/ld/testsuite/ld-elf/textaddr9.d b/ld/testsuite/ld-elf/textaddr9.d new file mode 100644 index 00000000000..29b13879a1d --- /dev/null +++ b/ld/testsuite/ld-elf/textaddr9.d @@ -0,0 +1,9 @@ +#source: maxpage1.s +#ld: -shared -z max-page-size=0x800000 --image-base 0x40000 -z noseparate-code +#readelf: -l --wide +#target: *-*-linux-gnu *-*-gnu* arm*-*-uclinuxfdpiceabi +#xfail: ![check_shared_lib_support] + +#... + LOAD +0x0* 0x0* 0x0* 0x[0-9a-f]+ 0x[0-9a-f]+ R E 0x800000 +#pass -- 2.54.0