Skip to content

Commit c45861f

Browse files
authored
Revert "[PAC][llvm-readobj][AArch64][ELF] Support GNU_PROPERTY_AARCH64_FEATURE_PAUTH" (#87434)
Reverts #85231 See build failure https://lab.llvm.org/buildbot/#/builders/186/builds/15631
1 parent 0492e1e commit c45861f

File tree

4 files changed

+157
-303
lines changed

4 files changed

+157
-303
lines changed

llvm/include/llvm/BinaryFormat/ELF.h

Lines changed: 5 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1712,6 +1712,11 @@ enum {
17121712
NT_ANDROID_TYPE_MEMTAG = 4,
17131713
};
17141714

1715+
// ARM note types.
1716+
enum {
1717+
NT_ARM_TYPE_PAUTH_ABI_TAG = 1,
1718+
};
1719+
17151720
// Memory tagging values used in NT_ANDROID_TYPE_MEMTAG notes.
17161721
enum {
17171722
// Enumeration to determine the tagging mode. In Android-land, 'SYNC' means
@@ -1735,7 +1740,6 @@ enum : unsigned {
17351740
GNU_PROPERTY_STACK_SIZE = 1,
17361741
GNU_PROPERTY_NO_COPY_ON_PROTECTED = 2,
17371742
GNU_PROPERTY_AARCH64_FEATURE_1_AND = 0xc0000000,
1738-
GNU_PROPERTY_AARCH64_FEATURE_PAUTH = 0xc0000001,
17391743
GNU_PROPERTY_X86_FEATURE_1_AND = 0xc0000002,
17401744

17411745
GNU_PROPERTY_X86_UINT32_OR_LO = 0xc0008000,
@@ -1754,26 +1758,6 @@ enum : unsigned {
17541758
GNU_PROPERTY_AARCH64_FEATURE_1_GCS = 1 << 2,
17551759
};
17561760

1757-
// aarch64 PAuth platforms.
1758-
enum : unsigned {
1759-
AARCH64_PAUTH_PLATFORM_INVALID = 0x0,
1760-
AARCH64_PAUTH_PLATFORM_BAREMETAL = 0x1,
1761-
AARCH64_PAUTH_PLATFORM_LLVM_LINUX = 0x10000002,
1762-
};
1763-
1764-
// Bit positions of version flags for AARCH64_PAUTH_PLATFORM_LLVM_LINUX.
1765-
enum : unsigned {
1766-
AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_INTRINSICS = 0,
1767-
AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_CALLS = 1,
1768-
AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_RETURNS = 2,
1769-
AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_AUTHTRAPS = 3,
1770-
AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_VPTRADDRDISCR = 4,
1771-
AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_VPTRTYPEDISCR = 5,
1772-
AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_INITFINI = 6,
1773-
AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_LAST =
1774-
AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_INITFINI,
1775-
};
1776-
17771761
// x86 processor feature bits.
17781762
enum : unsigned {
17791763
GNU_PROPERTY_X86_FEATURE_1_IBT = 1 << 0,
Lines changed: 96 additions & 209 deletions
Original file line numberDiff line numberDiff line change
@@ -1,211 +1,98 @@
11
# RUN: rm -rf %t && split-file %s %t && cd %t
22

3-
#--- gnu-42-1.s
4-
5-
.section ".note.gnu.property", "a"
6-
.long 4 // Name length is always 4 ("GNU")
7-
.long end - begin // Data length
8-
.long 5 // Type: NT_GNU_PROPERTY_TYPE_0
9-
.asciz "GNU" // Name
10-
.p2align 3
11-
begin:
12-
# PAuth ABI property note
13-
.long 0xc0000001 // Type: GNU_PROPERTY_AARCH64_FEATURE_PAUTH
14-
.long 16 // Data size
15-
.quad 42 // PAuth ABI platform
16-
.quad 1 // PAuth ABI version
17-
.p2align 3 // Align to 8 byte for 64 bit
18-
end:
19-
20-
# RUN: llvm-mc -filetype=obj -triple aarch64-linux-gnu gnu-42-1.s -o gnu-42-1.o
21-
# RUN: llvm-readelf --notes gnu-42-1.o | \
22-
# RUN: FileCheck --check-prefix=ELF -DPLATFORM="0x2a (unknown)" -DVERSION=0x1 %s
23-
# RUN: llvm-readobj --notes gnu-42-1.o | \
24-
# RUN: FileCheck --check-prefix=OBJ -DPLATFORM="0x2a (unknown)" -DVERSION=0x1 %s
25-
26-
# ELF: Displaying notes found in: .note.gnu.property
27-
# ELF-NEXT: Owner Data size Description
28-
# ELF-NEXT: GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0 (property note)
29-
# ELF-NEXT: AArch64 PAuth ABI core info: platform [[PLATFORM]], version [[VERSION]]
30-
31-
# OBJ: Notes [
32-
# OBJ-NEXT: NoteSection {
33-
# OBJ-NEXT: Name: .note.gnu.property
34-
# OBJ-NEXT: Offset: 0x40
35-
# OBJ-NEXT: Size: 0x28
36-
# OBJ-NEXT: Note {
37-
# OBJ-NEXT: Owner: GNU
38-
# OBJ-NEXT: Data size: 0x18
39-
# OBJ-NEXT: Type: NT_GNU_PROPERTY_TYPE_0 (property note)
40-
# OBJ-NEXT: Property [
41-
# OBJ-NEXT: AArch64 PAuth ABI core info: platform [[PLATFORM]], version [[VERSION]]
42-
# OBJ-NEXT: ]
43-
# OBJ-NEXT: }
44-
# OBJ-NEXT: }
45-
# OBJ-NEXT: ]
46-
47-
#--- gnu-0-0.s
48-
49-
.section ".note.gnu.property", "a"
50-
.long 4 // Name length is always 4 ("GNU")
51-
.long end - begin // Data length
52-
.long 5 // Type: NT_GNU_PROPERTY_TYPE_0
53-
.asciz "GNU" // Name
54-
.p2align 3
55-
begin:
56-
# PAuth ABI property note
57-
.long 0xc0000001 // Type: GNU_PROPERTY_AARCH64_FEATURE_PAUTH
58-
.long 16 // Data size
59-
.quad 0 // PAuth ABI platform
60-
.quad 0 // PAuth ABI version
61-
.p2align 3 // Align to 8 byte for 64 bit
62-
end:
63-
64-
# RUN: llvm-mc -filetype=obj -triple aarch64-linux-gnu gnu-0-0.s -o gnu-0-0.o
65-
# RUN: llvm-readelf --notes gnu-0-0.o | \
66-
# RUN: FileCheck --check-prefix=ELF -DPLATFORM="0x0 (invalid)" -DVERSION=0x0 %s
67-
# RUN: llvm-readobj --notes gnu-0-0.o | \
68-
# RUN: FileCheck --check-prefix=OBJ -DPLATFORM="0x0 (invalid)" -DVERSION=0x0 %s
69-
70-
#--- gnu-1-0.s
71-
72-
.section ".note.gnu.property", "a"
73-
.long 4 // Name length is always 4 ("GNU")
74-
.long end - begin // Data length
75-
.long 5 // Type: NT_GNU_PROPERTY_TYPE_0
76-
.asciz "GNU" // Name
77-
.p2align 3
78-
begin:
79-
# PAuth ABI property note
80-
.long 0xc0000001 // Type: GNU_PROPERTY_AARCH64_FEATURE_PAUTH
81-
.long 16 // Data size
82-
.quad 1 // PAuth ABI platform
83-
.quad 0 // PAuth ABI version
84-
.p2align 3 // Align to 8 byte for 64 bit
85-
end:
86-
87-
# RUN: llvm-mc -filetype=obj -triple aarch64-linux-gnu gnu-1-0.s -o gnu-1-0.o
88-
# RUN: llvm-readelf --notes gnu-1-0.o | \
89-
# RUN: FileCheck --check-prefix=ELF -DPLATFORM="0x1 (baremetal)" -DVERSION=0x0 %s
90-
# RUN: llvm-readobj --notes gnu-1-0.o | \
91-
# RUN: FileCheck --check-prefix=OBJ -DPLATFORM="0x1 (baremetal)" -DVERSION=0x0 %s
92-
93-
#--- gnu-0x10000002-85.s
94-
95-
.section ".note.gnu.property", "a"
96-
.long 4 // Name length is always 4 ("GNU")
97-
.long end - begin // Data length
98-
.long 5 // Type: NT_GNU_PROPERTY_TYPE_0
99-
.asciz "GNU" // Name
100-
.p2align 3
101-
begin:
102-
# PAuth ABI property note
103-
.long 0xc0000001 // Type: GNU_PROPERTY_AARCH64_FEATURE_PAUTH
104-
.long 16 // Data size
105-
.quad 0x10000002 // PAuth ABI platform
106-
.quad 85 // PAuth ABI version
107-
.p2align 3 // Align to 8 byte for 64 bit
108-
end:
109-
110-
# RUN: llvm-mc -filetype=obj -triple aarch64-linux-gnu gnu-0x10000002-85.s -o gnu-0x10000002-85.o
111-
# RUN: llvm-readelf --notes gnu-0x10000002-85.o | \
112-
# RUN: FileCheck --check-prefix=ELF -DPLATFORM="0x10000002 (llvm_linux)" \
113-
# RUN: -DVERSION="0x55 (PointerAuthIntrinsics, !PointerAuthCalls, PointerAuthReturns, !PointerAuthAuthTraps, PointerAuthVTPtrAddressDiscrimination, !PointerAuthVTPtrTypeDiscrimination, PointerAuthInitFini)" %s
114-
# RUN: llvm-readobj --notes gnu-0x10000002-85.o | \
115-
# RUN: FileCheck --check-prefix=OBJ -DPLATFORM="0x10000002 (llvm_linux)" \
116-
# RUN: -DVERSION="0x55 (PointerAuthIntrinsics, !PointerAuthCalls, PointerAuthReturns, !PointerAuthAuthTraps, PointerAuthVTPtrAddressDiscrimination, !PointerAuthVTPtrTypeDiscrimination, PointerAuthInitFini)" %s
117-
118-
#--- gnu-0x10000002-128.s
119-
120-
.section ".note.gnu.property", "a"
121-
.long 4 // Name length is always 4 ("GNU")
122-
.long end - begin // Data length
123-
.long 5 // Type: NT_GNU_PROPERTY_TYPE_0
124-
.asciz "GNU" // Name
125-
.p2align 3
126-
begin:
127-
# PAuth ABI property note
128-
.long 0xc0000001 // Type: GNU_PROPERTY_AARCH64_FEATURE_PAUTH
129-
.long 16 // Data size
130-
.quad 0x10000002 // PAuth ABI platform
131-
.quad 128 // PAuth ABI version
132-
.p2align 3 // Align to 8 byte for 64 bit
133-
end:
134-
135-
# RUN: llvm-mc -filetype=obj -triple aarch64-linux-gnu gnu-0x10000002-128.s -o gnu-0x10000002-128.o
136-
# RUN: llvm-readelf --notes gnu-0x10000002-128.o | \
137-
# RUN: FileCheck --check-prefix=ELF -DPLATFORM="0x10000002 (llvm_linux)" -DVERSION="0x80 (unknown)" %s
138-
# RUN: llvm-readobj --notes gnu-0x10000002-128.o | \
139-
# RUN: FileCheck --check-prefix=OBJ -DPLATFORM="0x10000002 (llvm_linux)" -DVERSION="0x80 (unknown)" %s
140-
141-
#--- gnu-short.s
142-
143-
.section ".note.gnu.property", "a"
144-
.long 4 // Name length is always 4 ("GNU")
145-
.long end - begin // Data length
146-
.long 5 // Type: NT_GNU_PROPERTY_TYPE_0
147-
.asciz "GNU" // Name
148-
.p2align 3
149-
begin:
150-
# PAuth ABI property note
151-
.long 0xc0000001 // Type: GNU_PROPERTY_AARCH64_FEATURE_PAUTH
152-
.long 12 // Data size
153-
.quad 42 // PAuth ABI platform
154-
.word 1 // PAuth ABI version
155-
.p2align 3 // Align to 8 byte for 64 bit
156-
end:
157-
158-
# RUN: llvm-mc -filetype=obj -triple aarch64-linux-gnu gnu-short.s -o gnu-short.o
159-
# RUN: llvm-readelf --notes gnu-short.o | \
160-
# RUN: FileCheck --check-prefix=ELF-ERR -DSIZE=28 -DDATASIZE=18 \
161-
# RUN: -DERR="<corrupted size: expected 16, got 12>" %s
162-
# RUN: llvm-readobj --notes gnu-short.o | \
163-
# RUN: FileCheck --check-prefix=OBJ-ERR -DSIZE=28 -DDATASIZE=18 \
164-
# RUN: -DERR="<corrupted size: expected 16, got 12>" %s
165-
166-
# ELF-ERR: Displaying notes found in: .note.gnu.property
167-
# ELF-ERR-NEXT: Owner Data size Description
168-
# ELF-ERR-NEXT: GNU 0x000000[[DATASIZE]] NT_GNU_PROPERTY_TYPE_0 (property note)
169-
# ELF-ERR-NEXT: AArch64 PAuth ABI core info: [[ERR]]
170-
171-
# OBJ-ERR: Notes [
172-
# OBJ-ERR-NEXT: NoteSection {
173-
# OBJ-ERR-NEXT: Name: .note.gnu.property
174-
# OBJ-ERR-NEXT: Offset: 0x40
175-
# OBJ-ERR-NEXT: Size: 0x[[SIZE]]
176-
# OBJ-ERR-NEXT: Note {
177-
# OBJ-ERR-NEXT: Owner: GNU
178-
# OBJ-ERR-NEXT: Data size: 0x[[DATASIZE]]
179-
# OBJ-ERR-NEXT: Type: NT_GNU_PROPERTY_TYPE_0 (property note)
180-
# OBJ-ERR-NEXT: Property [
181-
# OBJ-ERR-NEXT: AArch64 PAuth ABI core info: [[ERR]]
182-
# OBJ-ERR-NEXT: ]
183-
# OBJ-ERR-NEXT: }
184-
# OBJ-ERR-NEXT: }
185-
# OBJ-ERR-NEXT: ]
186-
187-
#--- gnu-long.s
188-
189-
.section ".note.gnu.property", "a"
190-
.long 4 // Name length is always 4 ("GNU")
191-
.long end - begin // Data length
192-
.long 5 // Type: NT_GNU_PROPERTY_TYPE_0
193-
.asciz "GNU" // Name
194-
.p2align 3
195-
begin:
196-
# PAuth ABI property note
197-
.long 0xc0000001 // Type: GNU_PROPERTY_AARCH64_FEATURE_PAUTH
198-
.long 24 // Data size
199-
.quad 42 // PAuth ABI platform
200-
.quad 1 // PAuth ABI version
201-
.quad 0x0123456789ABCDEF
202-
.p2align 3 // Align to 8 byte for 64 bit
203-
end:
204-
205-
# RUN: llvm-mc -filetype=obj -triple aarch64-linux-gnu gnu-long.s -o gnu-long.o
206-
# RUN: llvm-readelf --notes gnu-long.o | \
207-
# RUN: FileCheck --check-prefix=ELF-ERR -DSIZE=30 -DDATASIZE=20 \
208-
# RUN: -DERR="<corrupted size: expected 16, got 24>" %s
209-
# RUN: llvm-readobj --notes gnu-long.o | \
210-
# RUN: FileCheck --check-prefix=OBJ-ERR -DSIZE=30 -DDATASIZE=20 \
211-
# RUN: -DERR="<corrupted size: expected 16, got 24>" %s
3+
# RUN: llvm-mc -filetype=obj -triple=aarch64-linux-gnu abi-tag.s -o tag.o
4+
# RUN: llvm-mc -filetype=obj -triple=aarch64-linux-gnu abi-tag-short.s -o tag-short.o
5+
# RUN: llvm-mc -filetype=obj -triple=aarch64-linux-gnu abi-tag-long.s -o tag-long.o
6+
7+
# RUN: llvm-readelf --notes tag.o | FileCheck --check-prefix NORMAL %s
8+
# RUN: llvm-readelf --notes tag-short.o | FileCheck --check-prefix SHORT %s
9+
# RUN: llvm-readelf --notes tag-long.o | FileCheck --check-prefix LONG %s
10+
11+
# NORMAL: AArch64 PAuth ABI tag: platform 0x2a, version 0x1
12+
# SHORT: AArch64 PAuth ABI tag: <corrupted size: expected at least 16, got 12>
13+
# LONG: AArch64 PAuth ABI tag: platform 0x2a, version 0x1, additional info 0xEFCDAB8967452301
14+
15+
# RUN: llvm-readobj --notes tag.o | FileCheck --check-prefix LLVM-NORMAL %s
16+
# RUN: llvm-readobj --notes tag-short.o | FileCheck --check-prefix LLVM-SHORT %s
17+
# RUN: llvm-readobj --notes tag-long.o | FileCheck --check-prefix LLVM-LONG %s
18+
19+
# LLVM-SHORT: Notes [
20+
# LLVM-SHORT-NEXT: NoteSection {
21+
# LLVM-SHORT-NEXT: Name: .note.AARCH64-PAUTH-ABI-tag
22+
# LLVM-SHORT-NEXT: Offset: 0x40
23+
# LLVM-SHORT-NEXT: Size: 0x1C
24+
# LLVM-SHORT-NEXT: Note {
25+
# LLVM-SHORT-NEXT: Owner: ARM
26+
# LLVM-SHORT-NEXT: Data size: 0xC
27+
# LLVM-SHORT-NEXT: Type: NT_ARM_TYPE_PAUTH_ABI_TAG
28+
# LLVM-SHORT-NEXT: Description data (
29+
# LLVM-SHORT-NEXT: 0000: 2A000000 00000000 01000000
30+
# LLVM-SHORT-NEXT: )
31+
# LLVM-SHORT-NEXT: }
32+
# LLVM-SHORT-NEXT: }
33+
# LLVM-SHORT-NEXT: ]
34+
35+
# LLVM-NORMAL: Notes [
36+
# LLVM-NORMAL-NEXT: NoteSection {
37+
# LLVM-NORMAL-NEXT: Name: .note.AARCH64-PAUTH-ABI-tag
38+
# LLVM-NORMAL-NEXT: Offset: 0x40
39+
# LLVM-NORMAL-NEXT: Size: 0x20
40+
# LLVM-NORMAL-NEXT: Note {
41+
# LLVM-NORMAL-NEXT: Owner: ARM
42+
# LLVM-NORMAL-NEXT: Data size: 0x10
43+
# LLVM-NORMAL-NEXT: Type: NT_ARM_TYPE_PAUTH_ABI_TAG
44+
# LLVM-NORMAL-NEXT: Platform: 42
45+
# LLVM-NORMAL-NEXT: Version: 1
46+
# LLVM-NORMAL-NEXT: }
47+
# LLVM-NORMAL-NEXT: }
48+
# LLVM-NORMAL-NEXT: ]
49+
50+
# LLVM-LONG: Notes [
51+
# LLVM-LONG-NEXT: NoteSection {
52+
# LLVM-LONG-NEXT: Name: .note.AARCH64-PAUTH-ABI-tag
53+
# LLVM-LONG-NEXT: Offset: 0x40
54+
# LLVM-LONG-NEXT: Size: 0x28
55+
# LLVM-LONG-NEXT: Note {
56+
# LLVM-LONG-NEXT: Owner: ARM
57+
# LLVM-LONG-NEXT: Data size: 0x18
58+
# LLVM-LONG-NEXT: Type: NT_ARM_TYPE_PAUTH_ABI_TAG
59+
# LLVM-LONG-NEXT: Platform: 42
60+
# LLVM-LONG-NEXT: Version: 1
61+
# LLVM-LONG-NEXT: Additional info: EFCDAB8967452301
62+
# LLVM-LONG-NEXT: }
63+
# LLVM-LONG-NEXT: }
64+
# LLVM-LONG-NEXT: ]
65+
66+
#--- abi-tag.s
67+
68+
.section ".note.AARCH64-PAUTH-ABI-tag", "a"
69+
.long 4
70+
.long 16
71+
.long 1
72+
.asciz "ARM"
73+
74+
.quad 42 // platform
75+
.quad 1 // version
76+
77+
#--- abi-tag-short.s
78+
79+
.section ".note.AARCH64-PAUTH-ABI-tag", "a"
80+
.long 4
81+
.long 12
82+
.long 1
83+
.asciz "ARM"
84+
85+
.quad 42
86+
.word 1
87+
88+
#--- abi-tag-long.s
89+
90+
.section ".note.AARCH64-PAUTH-ABI-tag", "a"
91+
.long 4
92+
.long 24
93+
.long 1
94+
.asciz "ARM"
95+
96+
.quad 42 // platform
97+
.quad 1 // version
98+
.quad 0x0123456789ABCDEF // extra data

llvm/test/tools/llvm-readobj/ELF/AArch64/aarch64-note-gnu-property.s

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
// See tests for GNU_PROPERTY_AARCH64_FEATURE_PAUTH in aarch64-feature-pauth.s
2-
31
// RUN: llvm-mc -filetype=obj -triple aarch64-linux-gnu %s -o %t
42
// RUN: llvm-readelf --notes %t | FileCheck %s --check-prefix=GNU
53
// RUN: llvm-readobj --notes %t | FileCheck %s --check-prefix=LLVM

0 commit comments

Comments
 (0)