xref: /llvm-project/llvm/test/tools/llvm-readobj/ELF/note-freebsd.test (revision ab930ee7cad8b8bf7968bb8d0c0d72524e2313c4)
1## Test that note values are interpreted correctly for FreeBSD executables.
2# RUN: yaml2obj %s -o %t.o
3# RUN: llvm-readelf --notes %t.o | FileCheck %s --check-prefixes=GNU --strict-whitespace
4# RUN: llvm-readobj --notes %t.o | FileCheck %s --check-prefix=LLVM --strict-whitespace
5
6--- !ELF
7FileHeader:
8  Class:   ELFCLASS64
9  Data:    ELFDATA2LSB
10  Type:    ET_EXEC
11  Machine: EM_RISCV
12Sections:
13  - Name:         .note.tag
14    Type:         SHT_NOTE
15    AddressAlign: 0x0000000000000004
16    Notes:
17      - Name: FreeBSD
18        Desc: '6CD61300'
19        Type: NT_FREEBSD_ABI_TAG
20      - Name: FreeBSD
21        Desc: '6C'  # Invalid data (should be 4 bytes)
22        Type: NT_FREEBSD_ABI_TAG
23      - Name: FreeBSD
24        Desc: '61617263683634'
25        Type: NT_FREEBSD_ARCH_TAG
26      - Name: FreeBSD
27        Desc: 'FFFFFFFF'
28        Type: NT_FREEBSD_FEATURE_CTL
29      - Name: FreeBSD
30        Desc: '00'  # Invalid data (should be 4 bytes)
31        Type: NT_FREEBSD_FEATURE_CTL
32      - Name: FreeBSD
33        Desc: '00000000'
34        Type: NT_FREEBSD_NOINIT_TAG
35      - Name: FreeBSD
36        Desc: '616263646566'
37        Type: 0xabcdef
38      - Name: FreeBSD
39        Desc: '616263646566'
40        Type: NT_FREEBSD_PROCSTAT_RLIMIT # Only valid for coredumps.
41
42# GNU: Displaying notes found in: .note.tag
43# GNU-NEXT: Owner                Data size 	Description
44# GNU-NEXT: FreeBSD              0x00000004	NT_FREEBSD_ABI_TAG (ABI version tag)
45# GNU-NEXT:   ABI tag: 1300076
46# GNU-NEXT: FreeBSD              0x00000001	NT_FREEBSD_ABI_TAG (ABI version tag)
47# GNU-NEXT:   description data: 6c
48# GNU-NEXT: FreeBSD              0x00000007	NT_FREEBSD_ARCH_TAG (architecture tag)
49# GNU-NEXT:   Arch tag: aarch64
50# GNU-NEXT: FreeBSD              0x00000004	NT_FREEBSD_FEATURE_CTL (FreeBSD feature control)
51# GNU-NEXT:   Feature flags: ASLR_DISABLE PROTMAX_DISABLE STKGAP_DISABLE WXNEEDED LA48 ASG_DISABLE (0xFFFFFFFF)
52# GNU-NEXT: FreeBSD              0x00000001	NT_FREEBSD_FEATURE_CTL (FreeBSD feature control)
53# GNU-NEXT:   description data: 00
54# GNU-NEXT: FreeBSD              0x00000004	NT_FREEBSD_NOINIT_TAG (no .init tag)
55# GNU-NEXT:   description data: 00 00 00 00
56# GNU-NEXT: FreeBSD              0x00000006	Unknown note type: (0x00abcdef)
57# GNU-NEXT:   description data: 61 62 63 64 65 66
58## NT_FREEBSD_PROCSTAT_RLIMIT is only a valid type for coredumps and should therefore not be decoded.
59## Note: Binutils prints NT_PROCSTAT_RLIMIT, but this seems incorrect
60# GNU-NEXT: FreeBSD              0x00000006	Unknown note type: (0x0000000d)
61# GNU-NEXT:   description data: 61 62 63 64 65 66
62# GNU-EMPTY:
63
64# LLVM:     NoteSections [
65# LLVM-NEXT:  NoteSection {
66# LLVM-NEXT:    Name: .note.tag
67# LLVM-NEXT:    Offset: 0x40
68# LLVM-NEXT:    Size: 0xCC
69# LLVM-NEXT:    Notes [
70# LLVM-NEXT:        {
71# LLVM-NEXT:            Owner: FreeBSD
72# LLVM-NEXT:            Data size: 0x4
73# LLVM-NEXT:            Type: NT_FREEBSD_ABI_TAG (ABI version tag)
74# LLVM-NEXT:            ABI tag: 1300076
75# LLVM-NEXT:        }
76# LLVM-NEXT:        {
77# LLVM-NEXT:            Owner: FreeBSD
78# LLVM-NEXT:            Data size: 0x1
79# LLVM-NEXT:            Type: NT_FREEBSD_ABI_TAG (ABI version tag)
80# LLVM-NEXT:            Description data (
81# LLVM-NEXT:                0000: 6C                                   |l|
82# LLVM-NEXT:            )
83# LLVM-NEXT:        }
84# LLVM-NEXT:        {
85# LLVM-NEXT:            Owner: FreeBSD
86# LLVM-NEXT:            Data size: 0x7
87# LLVM-NEXT:            Type: NT_FREEBSD_ARCH_TAG (architecture tag)
88# LLVM-NEXT:            Arch tag: aarch64
89# LLVM-NEXT:        }
90# LLVM-NEXT:        {
91# LLVM-NEXT:            Owner: FreeBSD
92# LLVM-NEXT:            Data size: 0x4
93# LLVM-NEXT:            Type: NT_FREEBSD_FEATURE_CTL (FreeBSD feature control)
94# LLVM-NEXT:            Feature flags: ASLR_DISABLE PROTMAX_DISABLE STKGAP_DISABLE WXNEEDED LA48 ASG_DISABLE (0xFFFFFFFF)
95# LLVM-NEXT:        }
96# LLVM-NEXT:        {
97# LLVM-NEXT:            Owner: FreeBSD
98# LLVM-NEXT:            Data size: 0x1
99# LLVM-NEXT:            Type: NT_FREEBSD_FEATURE_CTL (FreeBSD feature control)
100# LLVM-NEXT:            Description data (
101# LLVM-NEXT:                0000: 00                                   |.|
102# LLVM-NEXT:            )
103# LLVM-NEXT:        }
104# LLVM-NEXT:        {
105# LLVM-NEXT:            Owner: FreeBSD
106# LLVM-NEXT:            Data size: 0x4
107# LLVM-NEXT:            Type: NT_FREEBSD_NOINIT_TAG (no .init tag)
108# LLVM-NEXT:            Description data (
109# LLVM-NEXT:                0000: 00000000                             |....|
110# LLVM-NEXT:            )
111# LLVM-NEXT:        }
112# LLVM-NEXT:        {
113# LLVM-NEXT:            Owner: FreeBSD
114# LLVM-NEXT:            Data size: 0x6
115# LLVM-NEXT:            Type: Unknown (0x00abcdef)
116# LLVM-NEXT:            Description data (
117# LLVM-NEXT:                0000: 61626364 6566                        |abcdef|
118# LLVM-NEXT:            )
119# LLVM-NEXT:        }
120# LLVM-NEXT:        {
121# LLVM-NEXT:            Owner: FreeBSD
122# LLVM-NEXT:            Data size: 0x6
123# LLVM-NEXT:            Type: Unknown (0x0000000d)
124# LLVM-NEXT:            Description data (
125# LLVM-NEXT:                0000: 61626364 6566                        |abcdef|
126# LLVM-NEXT:            )
127# LLVM-NEXT:        }
128# LLVM-NEXT:    ]
129# LLVM-NEXT:  }
130# LLVM-NEXT:]
131