[PATCH] D70962: [LLD][ELF][AArch64] .note.gnu.property sections should have alignment 8
Peter Smith via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Dec 3 06:40:30 PST 2019
peter.smith updated this revision to Diff 231898.
peter.smith added a comment.
Updated to add context.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D70962/new/
https://reviews.llvm.org/D70962
Files:
lld/ELF/SyntheticSections.cpp
lld/test/ELF/aarch64-gnu-property-align.s
lld/test/ELF/aarch64-pt-gnu-property.s
Index: lld/test/ELF/aarch64-pt-gnu-property.s
===================================================================
--- lld/test/ELF/aarch64-pt-gnu-property.s
+++ lld/test/ELF/aarch64-pt-gnu-property.s
@@ -16,7 +16,7 @@
# CHECK-NEXT: Size: 32
# CHECK-NEXT: Link: 0
# CHECK-NEXT: Info: 0
-# CHECK-NEXT: AddressAlignment: 4
+# CHECK-NEXT: AddressAlignment: 8
# CHECK: Type: PT_GNU_PROPERTY (0x6474E553)
# CHECK-NEXT: Offset: 0x190
@@ -27,7 +27,7 @@
# CHECK-NEXT: Flags [ (0x4)
# CHECK-NEXT: PF_R (0x4)
# CHECK-NEXT: ]
-# CHECK-NEXT: Alignment: 4
+# CHECK-NEXT: Alignment: 8
.section ".note.gnu.property", "a"
.long 4
Index: lld/test/ELF/aarch64-gnu-property-align.s
===================================================================
--- /dev/null
+++ lld/test/ELF/aarch64-gnu-property-align.s
@@ -0,0 +1,42 @@
+# REQUIRES: aarch64
+# RUN: llvm-mc -filetype=obj -triple=aarch64-linux-gnu %s -o %t.o
+# RUN: ld.lld %t.o -o %t
+# RUN: llvm-readobj --sections -n %t | FileCheck %s
+
+## Check that .note.gnu.property has alignment 8 and is readable by llvm-readobj
+
+# CHECK: Name: .note.gnu.property
+# CHECK-NEXT: Type: SHT_NOTE (0x7)
+# CHECK-NEXT: Flags [ (0x2)
+# CHECK-NEXT: SHF_ALLOC (0x2)
+# CHECK-NEXT: ]
+# CHECK-NEXT: Address: 0x200190
+# CHECK-NEXT: Offset: 0x190
+# CHECK-NEXT: Size: 32
+# CHECK-NEXT: Link: 0
+# CHECK-NEXT: Info: 0
+# CHECK-NEXT: AddressAlignment: 8
+
+# CHECK: Note {
+# CHECK-NEXT: Owner: GNU
+# CHECK-NEXT: Data size: 0x10
+# CHECK-NEXT: Type: NT_GNU_PROPERTY_TYPE_0 (property note)
+# CHECK-NEXT: Property [
+# CHECK-NEXT: aarch64 feature: BTI, PAC
+
+
+.section ".note.gnu.property", "a"
+.balign 8
+.long 4
+.long 0x10
+.long 0x5
+.asciz "GNU"
+.long 0xc0000000 // GNU_PROPERTY_AARCH64_FEATURE_1_AND
+.long 4
+.long 3 // GNU_PROPERTY_AARCH64_FEATURE_1_BTI and PAC
+.long 0
+
+ .text
+ .globl _start
+ .type _start, %function
+_start: ret
Index: lld/ELF/SyntheticSections.cpp
===================================================================
--- lld/ELF/SyntheticSections.cpp
+++ lld/ELF/SyntheticSections.cpp
@@ -298,8 +298,8 @@
// sets is empty, or some input files didn't have .note.gnu.property sections),
// we don't create this section.
GnuPropertySection::GnuPropertySection()
- : SyntheticSection(llvm::ELF::SHF_ALLOC, llvm::ELF::SHT_NOTE, 4,
- ".note.gnu.property") {}
+ : SyntheticSection(llvm::ELF::SHF_ALLOC, llvm::ELF::SHT_NOTE,
+ config->is64 ? 8 : 4, ".note.gnu.property") {}
void GnuPropertySection::writeTo(uint8_t *buf) {
uint32_t featureAndType = config->emachine == EM_AARCH64
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D70962.231898.patch
Type: text/x-patch
Size: 2748 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20191203/3c592607/attachment.bin>
More information about the llvm-commits
mailing list