| ## Test that note values are interpreted correctly for FreeBSD executables. |
| # RUN: yaml2obj %s -o %t.o |
| # RUN: llvm-readelf --notes %t.o | FileCheck %s --check-prefixes=GNU --strict-whitespace |
| # RUN: llvm-readobj --notes %t.o | FileCheck %s --check-prefix=LLVM --strict-whitespace |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_EXEC |
| Machine: EM_RISCV |
| Sections: |
| - Name: .note.tag |
| Type: SHT_NOTE |
| AddressAlign: 0x0000000000000004 |
| Notes: |
| - Name: FreeBSD |
| Desc: '6CD61300' |
| Type: NT_FREEBSD_ABI_TAG |
| - Name: FreeBSD |
| Desc: '6C' # Invalid data (should be 4 bytes) |
| Type: NT_FREEBSD_ABI_TAG |
| - Name: FreeBSD |
| Desc: '61617263683634' |
| Type: NT_FREEBSD_ARCH_TAG |
| - Name: FreeBSD |
| Desc: 'FFFFFFFF' |
| Type: NT_FREEBSD_FEATURE_CTL |
| - Name: FreeBSD |
| Desc: '00' # Invalid data (should be 4 bytes) |
| Type: NT_FREEBSD_FEATURE_CTL |
| - Name: FreeBSD |
| Desc: '00000000' |
| Type: NT_FREEBSD_NOINIT_TAG |
| - Name: FreeBSD |
| Desc: '616263646566' |
| Type: 0xabcdef |
| - Name: FreeBSD |
| Desc: '616263646566' |
| Type: NT_FREEBSD_PROCSTAT_RLIMIT # Only valid for coredumps. |
| |
| # GNU: Displaying notes found in: .note.tag |
| # GNU-NEXT: Owner Data size Description |
| # GNU-NEXT: FreeBSD 0x00000004 NT_FREEBSD_ABI_TAG (ABI version tag) |
| # GNU-NEXT: ABI tag: 1300076 |
| # GNU-NEXT: FreeBSD 0x00000001 NT_FREEBSD_ABI_TAG (ABI version tag) |
| # GNU-NEXT: description data: 6c |
| # GNU-NEXT: FreeBSD 0x00000007 NT_FREEBSD_ARCH_TAG (architecture tag) |
| # GNU-NEXT: Arch tag: aarch64 |
| # GNU-NEXT: FreeBSD 0x00000004 NT_FREEBSD_FEATURE_CTL (FreeBSD feature control) |
| # GNU-NEXT: Feature flags: ASLR_DISABLE PROTMAX_DISABLE STKGAP_DISABLE WXNEEDED LA48 ASG_DISABLE (0xFFFFFFFF) |
| # GNU-NEXT: FreeBSD 0x00000001 NT_FREEBSD_FEATURE_CTL (FreeBSD feature control) |
| # GNU-NEXT: description data: 00 |
| # GNU-NEXT: FreeBSD 0x00000004 NT_FREEBSD_NOINIT_TAG (no .init tag) |
| # GNU-NEXT: description data: 00 00 00 00 |
| # GNU-NEXT: FreeBSD 0x00000006 Unknown note type: (0x00abcdef) |
| # GNU-NEXT: description data: 61 62 63 64 65 66 |
| ## NT_FREEBSD_PROCSTAT_RLIMIT is only a valid type for coredumps and should therefore not be decoded. |
| ## Note: Binutils prints NT_PROCSTAT_RLIMIT, but this seems incorrect |
| # GNU-NEXT: FreeBSD 0x00000006 Unknown note type: (0x0000000d) |
| # GNU-NEXT: description data: 61 62 63 64 65 66 |
| # GNU-EMPTY: |
| |
| # LLVM: Notes [ |
| # LLVM-NEXT: NoteSection { |
| # LLVM-NEXT: Name: .note.tag |
| # LLVM-NEXT: Offset: 0x40 |
| # LLVM-NEXT: Size: 0xCC |
| # LLVM-NEXT: Note { |
| # LLVM-NEXT: Owner: FreeBSD |
| # LLVM-NEXT: Data size: 0x4 |
| # LLVM-NEXT: Type: NT_FREEBSD_ABI_TAG (ABI version tag) |
| # LLVM-NEXT: ABI tag: 1300076 |
| # LLVM-NEXT: } |
| # LLVM-NEXT: Note { |
| # LLVM-NEXT: Owner: FreeBSD |
| # LLVM-NEXT: Data size: 0x1 |
| # LLVM-NEXT: Type: NT_FREEBSD_ABI_TAG (ABI version tag) |
| # LLVM-NEXT: Description data ( |
| # LLVM-NEXT: 0000: 6C |l| |
| # LLVM-NEXT: ) |
| # LLVM-NEXT: } |
| # LLVM-NEXT: Note { |
| # LLVM-NEXT: Owner: FreeBSD |
| # LLVM-NEXT: Data size: 0x7 |
| # LLVM-NEXT: Type: NT_FREEBSD_ARCH_TAG (architecture tag) |
| # LLVM-NEXT: Arch tag: aarch64 |
| # LLVM-NEXT: } |
| # LLVM-NEXT: Note { |
| # LLVM-NEXT: Owner: FreeBSD |
| # LLVM-NEXT: Data size: 0x4 |
| # LLVM-NEXT: Type: NT_FREEBSD_FEATURE_CTL (FreeBSD feature control) |
| # LLVM-NEXT: Feature flags: ASLR_DISABLE PROTMAX_DISABLE STKGAP_DISABLE WXNEEDED LA48 ASG_DISABLE (0xFFFFFFFF) |
| # LLVM-NEXT: } |
| # LLVM-NEXT: Note { |
| # LLVM-NEXT: Owner: FreeBSD |
| # LLVM-NEXT: Data size: 0x1 |
| # LLVM-NEXT: Type: NT_FREEBSD_FEATURE_CTL (FreeBSD feature control) |
| # LLVM-NEXT: Description data ( |
| # LLVM-NEXT: 0000: 00 |.| |
| # LLVM-NEXT: ) |
| # LLVM-NEXT: } |
| # LLVM-NEXT: Note { |
| # LLVM-NEXT: Owner: FreeBSD |
| # LLVM-NEXT: Data size: 0x4 |
| # LLVM-NEXT: Type: NT_FREEBSD_NOINIT_TAG (no .init tag) |
| # LLVM-NEXT: Description data ( |
| # LLVM-NEXT: 0000: 00000000 |....| |
| # LLVM-NEXT: ) |
| # LLVM-NEXT: } |
| # LLVM-NEXT: Note { |
| # LLVM-NEXT: Owner: FreeBSD |
| # LLVM-NEXT: Data size: 0x6 |
| # LLVM-NEXT: Type: Unknown (0x00abcdef) |
| # LLVM-NEXT: Description data ( |
| # LLVM-NEXT: 0000: 61626364 6566 |abcdef| |
| # LLVM-NEXT: ) |
| # LLVM-NEXT: } |
| # LLVM-NEXT: Note { |
| # LLVM-NEXT: Owner: FreeBSD |
| # LLVM-NEXT: Data size: 0x6 |
| # LLVM-NEXT: Type: Unknown (0x0000000d) |
| # LLVM-NEXT: Description data ( |
| # LLVM-NEXT: 0000: 61626364 6566 |abcdef| |
| # LLVM-NEXT: ) |
| # LLVM-NEXT: } |
| # LLVM-NEXT: } |
| # LLVM-NEXT:] |