## 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:]