From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ed1-x531.google.com (mail-ed1-x531.google.com [IPv6:2a00:1450:4864:20::531]) by sourceware.org (Postfix) with ESMTPS id D294F385841C for ; Wed, 24 Nov 2021 13:18:37 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org D294F385841C Received: by mail-ed1-x531.google.com with SMTP id g14so10280007edb.8 for ; Wed, 24 Nov 2021 05:18:37 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=XYQiKSPEhNVrBE4+yaDzgdLbQqaCzz3UT/YeCVMrk9o=; b=lHZOIv69yLy+hKVxfJpzly1nymRc+23UpQDju6FlrAUZcJ1jJiCDoooAKK1uiOyKVe 1f0gAQHf1da64EQU1rNYlO4oLxpJ6a+25kRExrcG7pMNsCZ3VvPFyb4pxaDJREb/VS1+ ieQVw9aG17Urv87axffAVum0MSDl1nEmKCtBCh+5tPKYpcU89hsbRbS79P4yZykmtcEZ pvXpLAon+B+6h6A2eDxu6njuIr3ZSoptHhU0OQnHeQQojDk6TtFbnqxmxk3WtJ4gStx9 k4cK3dptLV4HkXo7untITkc+WSV3/XS8yxY1Ev180B40aqA7QmM5JDfe7MdLKjF5KNJt AFDQ== X-Gm-Message-State: AOAM533bOyqU9dw+n3SZ986DT1t4sGNm4aWfmfUAFuwt6j1fGeLj5m+M ecqumJbeD6QbPQtTcxow9+uknDuDt+c= X-Google-Smtp-Source: ABdhPJxhUtWeYYv2yIBDvLNDOL4mK+g1CkMTrX2SZxjZi1AFmq3yjGGK0kGbZHsK3Ky7VFOzL4OUxw== X-Received: by 2002:a05:6402:2806:: with SMTP id h6mr24152654ede.120.1637759916911; Wed, 24 Nov 2021 05:18:36 -0800 (PST) Received: from localhost.localdomain (138.sub226.ddfr.nl. [217.27.226.138]) by smtp.gmail.com with ESMTPSA id c7sm6963721ejd.91.2021.11.24.05.18.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 24 Nov 2021 05:18:36 -0800 (PST) From: "J.W. Jagersma" To: binutils@sourceware.org Cc: dj@delorie.com, "J.W. Jagersma" Subject: [PATCH] coff-go32: consistent 16-byte section alignment Date: Wed, 24 Nov 2021 14:17:21 +0100 Message-Id: <20211124131720.945-1-jwjagersma@gmail.com> X-Mailer: git-send-email 2.33.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-18.4 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, UPPERCASE_50_75 autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) 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: Wed, 24 Nov 2021 13:18:40 -0000 Section alignment for coff-go32 is inconsistent - The '.text' and '.data' sections are 16-byte aligned, but named sections '.text.*' and '.data.*' are only 4-byte aligned. '.gnu.linkonce.r.*' is aligned to 16 bytes, yet '.rodata' and '.rodata.*' are aligned to 4 bytes. For '.bss' all input sections are only aligned to 4 bytes. This primarily can cause trouble when using SSE instructions, which require their memory operands to be aligned to 16-byte boundaries. This patch solves the issue simply by setting the section alignment to 16 bytes, for all code and data sections referenced in the default linker script. bfd/ 2021-11-24 Jan W. Jagersma * coff-go32.c (COFF_SECTION_ALIGNMENT_ENTRIES): Use partial name match for .text, .data. Add entries for .const, .rodata, .bss, .gnu.linkonce.b. --- bfd/coff-go32.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/bfd/coff-go32.c b/bfd/coff-go32.c index d73c32b215d..3139ce07ac7 100644 --- a/bfd/coff-go32.c +++ b/bfd/coff-go32.c @@ -28,9 +28,15 @@ #define COFF_LONG_FILENAMES #define COFF_SECTION_ALIGNMENT_ENTRIES \ -{ COFF_SECTION_NAME_EXACT_MATCH (".data"), \ +{ COFF_SECTION_NAME_PARTIAL_MATCH (".data"), \ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 4 }, \ -{ COFF_SECTION_NAME_EXACT_MATCH (".text"), \ +{ COFF_SECTION_NAME_PARTIAL_MATCH (".text"), \ + COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 4 }, \ +{ COFF_SECTION_NAME_PARTIAL_MATCH (".const"), \ + COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 4 }, \ +{ COFF_SECTION_NAME_PARTIAL_MATCH (".rodata"), \ + COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 4 }, \ +{ COFF_SECTION_NAME_PARTIAL_MATCH (".bss"), \ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 4 }, \ { COFF_SECTION_NAME_PARTIAL_MATCH (".gnu.linkonce.d"), \ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 4 }, \ @@ -38,6 +44,8 @@ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 4 }, \ { COFF_SECTION_NAME_PARTIAL_MATCH (".gnu.linkonce.r"), \ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 4 }, \ +{ COFF_SECTION_NAME_PARTIAL_MATCH (".gnu.linkonce.b"), \ + COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 4 }, \ { COFF_SECTION_NAME_PARTIAL_MATCH (".debug"), \ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 0 }, \ { COFF_SECTION_NAME_PARTIAL_MATCH (".gnu.linkonce.wi"), \ -- 2.33.0