From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pf1-x433.google.com (mail-pf1-x433.google.com [IPv6:2607:f8b0:4864:20::433]) by sourceware.org (Postfix) with ESMTPS id 68FE63858028 for ; Mon, 1 Aug 2022 23:11:27 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 68FE63858028 Received: by mail-pf1-x433.google.com with SMTP id f28so3733222pfk.1 for ; Mon, 01 Aug 2022 16:11:27 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=u11e0uLtfrxCtectkLmJVyML4fHBLAzYNe2vconFdTo=; b=ATGrX48f9Roc59Inz2tCpO/cZj5MZzjTY/uaGZBa/y0GRNqF8bxCuILGFoIQzgl94B QvKxgJLD1/1G/3dAppP1/i0k5I69IlrQO0jX7O6QAqKkMvwpjR/LCsnXKrgqsdgdCvTl p+Sl3OExe1JYfq27dsIsF9nQ+XS5JOXVuedOLXlkDtgtjBAuELYIqG9T22K7K6OC+grD QKdjWUFcMrV+xYOizA5FtFUE+h2dFpsHBbYCsEDqjl3WbsHM+KpGAr1uwnXXd8/Lgc97 FxIm7oW321BuL4i7Yv1VVCIKf7nKA6BCLJTDklGSuaLoRP53gLFqQIxROV+2wDuxpbtI GMCg== X-Gm-Message-State: AJIora9zVDgOBqkswZLNJworA4fpGuOgvEVU80nvEk7zY5e98BCL2FBa fx5sP9py1kNRtvrTmabDF/PvCx6M4oo= X-Google-Smtp-Source: AGRyM1uri6yvRLN5oOuIHRN0IemtkSt0WJFhzVX8xB78hbfSAHs0Rjixcr/dYb2367GCtpVb9OZYag== X-Received: by 2002:a05:6a00:4481:b0:52a:c7b2:4fe with SMTP id cu1-20020a056a00448100b0052ac7b204femr18241076pfb.10.1659395486188; Mon, 01 Aug 2022 16:11:26 -0700 (PDT) Received: from gnu-tgl-3.localdomain ([172.58.37.102]) by smtp.gmail.com with ESMTPSA id o15-20020a170902d4cf00b0016ecc7d5297sm6162932plg.292.2022.08.01.16.11.25 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Aug 2022 16:11:25 -0700 (PDT) Received: from gnu-tgl-3.. (localhost [IPv6:::1]) by gnu-tgl-3.localdomain (Postfix) with ESMTP id E0A76C0112 for ; Mon, 1 Aug 2022 16:11:22 -0700 (PDT) From: "H.J. Lu" To: binutils@sourceware.org Subject: [PATCH] elf: Reset alignment for each PT_LOAD segment Date: Mon, 1 Aug 2022 16:11:22 -0700 Message-Id: <20220801231122.2503979-1-hjl.tools@gmail.com> X-Mailer: git-send-email 2.37.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-3027.1 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 autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 01 Aug 2022 23:11:29 -0000 Reset alignment for each PT_LOAD segment to avoid using alignment from the previous PT_LOAD segment. bfd/ PR ld/29435 * elf.c (assign_file_positions_for_load_sections): Reset alignment for each PT_LOAD segment. ld/ PR ld/29435 * testsuite/ld-elf/pr29435.d: New file. * testsuite/ld-elf/pr29435.s: Likewise. --- bfd/elf.c | 5 +++-- ld/testsuite/ld-elf/pr29435.d | 11 +++++++++++ ld/testsuite/ld-elf/pr29435.s | 6 ++++++ 3 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 ld/testsuite/ld-elf/pr29435.d create mode 100644 ld/testsuite/ld-elf/pr29435.s diff --git a/bfd/elf.c b/bfd/elf.c index 89484ceb233..647f2923beb 100644 --- a/bfd/elf.c +++ b/bfd/elf.c @@ -5439,7 +5439,7 @@ assign_file_positions_for_load_sections (bfd *abfd, file_ptr off; /* Octets. */ bfd_size_type maxpagesize; bfd_size_type p_align; - bool p_align_p = false; + bool p_align_p; unsigned int alloc, actual; unsigned int i, j; struct elf_segment_map **sorted_seg_map; @@ -5524,7 +5524,6 @@ assign_file_positions_for_load_sections (bfd *abfd, qsort (sorted_seg_map, alloc, sizeof (*sorted_seg_map), elf_sort_segments); - p_align = bed->p_align; maxpagesize = 1; if ((abfd->flags & D_PAGED) != 0) { @@ -5569,6 +5568,8 @@ assign_file_positions_for_load_sections (bfd *abfd, p = phdrs + m->idx; p->p_type = m->p_type; p->p_flags = m->p_flags; + p_align = bed->p_align; + p_align_p = false; if (m->count == 0) p->p_vaddr = m->p_vaddr_offset * opb; diff --git a/ld/testsuite/ld-elf/pr29435.d b/ld/testsuite/ld-elf/pr29435.d new file mode 100644 index 00000000000..4ca4fd086a2 --- /dev/null +++ b/ld/testsuite/ld-elf/pr29435.d @@ -0,0 +1,11 @@ +#ld: -shared -z separate-code -z relro +#xfail: ![check_shared_lib_support] +#xfail: ![check_relro_support] +#readelf: -Wl + +#failif +#... + +LOAD +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ .* 0x8000 +#... + +LOAD +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ .* 0x8000 +#... diff --git a/ld/testsuite/ld-elf/pr29435.s b/ld/testsuite/ld-elf/pr29435.s new file mode 100644 index 00000000000..d2d8f265f5e --- /dev/null +++ b/ld/testsuite/ld-elf/pr29435.s @@ -0,0 +1,6 @@ + .text + .balign 0x8000 + .globl foo + .type foo, %function +foo: + .byte 0 -- 2.37.1