CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
568 lines
16 KiB
YAML
568 lines
16 KiB
YAML
## Check how yaml2obj produces SHT_NOTE sections.
|
|
|
|
## Check we can describe SHT_NOTE using the "Notes" tag. We can define
|
|
## notes using names, descriptions and types.
|
|
## Check we produce a valid name size and description size fields.
|
|
## Check we produce valid paddings.
|
|
|
|
# RUN: yaml2obj --docnum=1 %s -o %t1
|
|
# RUN: llvm-readobj --sections --section-data %t1 | FileCheck %s --check-prefix=NOTE
|
|
|
|
# NOTE: Section {
|
|
# NOTE: Index: 1
|
|
# NOTE-NEXT: Name: .note.foo (1)
|
|
# NOTE-NEXT: Type: SHT_NOTE (0x7)
|
|
# NOTE-NEXT: Flags [ (0x2)
|
|
# NOTE-NEXT: SHF_ALLOC (0x2)
|
|
# NOTE-NEXT: ]
|
|
# NOTE-NEXT: Address:
|
|
# NOTE-NEXT: Offset:
|
|
# NOTE-NEXT: Size: 36
|
|
# NOTE-NEXT: Link: 0
|
|
# NOTE-NEXT: Info: 0
|
|
# NOTE-NEXT: AddressAlignment: 0
|
|
# NOTE-NEXT: EntrySize: 0
|
|
# NOTE-NEXT: SectionData (
|
|
## namesz == (0x03000000) == sizeof("AB") + NUL terminator.
|
|
## descsz == (0x00000000) for an empty description.
|
|
## Check we produce a valid 2 bytes zeroes padding after the Name.
|
|
# NOTE-NEXT: 0000: 03000000 00000000 FF000000 41420000 |............AB..|
|
|
## namesz == (0x04000000) == sizeof("ABC") + NUL terminator.
|
|
## descsz == (0x06000000) == sizeof("123456").
|
|
## Check we produce a valid (zero align to 4) 1 byte padding after the Name.
|
|
## Check we produce a valid (zero align to 4) 2 bytes padding after the Desc.
|
|
# NOTE-NEXT: 0010: 04000000 03000000 FE000000 41424300 |............ABC.|
|
|
# NOTE-NEXT: 0020: 12345600 |.4V.|
|
|
# NOTE-NEXT: )
|
|
|
|
--- !ELF
|
|
FileHeader:
|
|
Class: ELFCLASS64
|
|
Data: ELFDATA2LSB
|
|
Type: ET_REL
|
|
Sections:
|
|
- Name: .note.foo
|
|
Type: SHT_NOTE
|
|
Flags: [ SHF_ALLOC ]
|
|
Notes:
|
|
- Name: AB
|
|
Desc: ''
|
|
Type: 0xFF
|
|
- Name: ABC
|
|
Desc: '123456'
|
|
Type: 254
|
|
|
|
## Check that for 32-bit little-endian case we produce the same section content.
|
|
|
|
# RUN: yaml2obj --docnum=2 %s -o %t2
|
|
# RUN: llvm-readobj --sections --section-data %t2 | FileCheck %s --check-prefix=NOTE
|
|
|
|
--- !ELF
|
|
FileHeader:
|
|
Class: ELFCLASS32
|
|
Data: ELFDATA2LSB
|
|
Type: ET_REL
|
|
Sections:
|
|
- Name: .note.foo
|
|
Type: SHT_NOTE
|
|
Flags: [ SHF_ALLOC ]
|
|
Notes:
|
|
- Name: AB
|
|
Desc: ''
|
|
Type: 0xFF
|
|
- Name: ABC
|
|
Desc: '123456'
|
|
Type: 254
|
|
|
|
## Check big-endian 32/64 bit cases.
|
|
## Check they produce the same content.
|
|
|
|
# RUN: yaml2obj --docnum=3 %s -o %t3
|
|
# RUN: llvm-readobj --sections --section-data %t3 | FileCheck %s --check-prefix=NOTE-BE
|
|
# RUN: yaml2obj --docnum=4 %s -o %t4
|
|
# RUN: llvm-readobj --sections --section-data %t4 | FileCheck %s --check-prefix=NOTE-BE
|
|
|
|
# NOTE-BE: Name: .note.foo
|
|
# NOTE-BE: SectionData (
|
|
# NOTE-BE-NEXT: 0000: 00000004 00000003 000000FE 41424300 |
|
|
# NOTE-BE-NEXT: 0010: 12345600 |
|
|
# NOTE-BE-NEXT: )
|
|
|
|
--- !ELF
|
|
FileHeader:
|
|
Class: ELFCLASS32
|
|
Data: ELFDATA2MSB
|
|
Type: ET_REL
|
|
Sections:
|
|
- Name: .note.foo
|
|
Type: SHT_NOTE
|
|
Notes:
|
|
- Name: ABC
|
|
Desc: '123456'
|
|
Type: 254
|
|
|
|
--- !ELF
|
|
FileHeader:
|
|
Class: ELFCLASS64
|
|
Data: ELFDATA2MSB
|
|
Type: ET_REL
|
|
Sections:
|
|
- Name: .note.foo
|
|
Type: SHT_NOTE
|
|
Notes:
|
|
- Name: ABC
|
|
Desc: '123456'
|
|
Type: 254
|
|
|
|
## Check that 'Type' field is mandatory.
|
|
|
|
# RUN: not yaml2obj --docnum=5 %s 2>&1 | FileCheck %s --check-prefix=TYPE-REQ
|
|
# TYPE-REQ: error: missing required key 'Type'
|
|
|
|
--- !ELF
|
|
FileHeader:
|
|
Class: ELFCLASS64
|
|
Data: ELFDATA2LSB
|
|
Type: ET_REL
|
|
Sections:
|
|
- Name: .note.foo
|
|
Type: SHT_NOTE
|
|
Notes:
|
|
- Name: ''
|
|
Desc: ''
|
|
|
|
## Check that neither `Name` nor `Desc` are mandatory fields.
|
|
|
|
# RUN: yaml2obj --docnum=6 %s -o %t6
|
|
# RUN: llvm-readobj --sections --section-data %t6 | FileCheck %s --check-prefix=NAME-DESC
|
|
|
|
# NAME-DESC: Name: .note.foo
|
|
# NAME-DESC: SectionData (
|
|
# NAME-DESC-NEXT: 0000: 00000000 00000000 FF000000 |
|
|
# NAME-DESC-NEXT: )
|
|
|
|
--- !ELF
|
|
FileHeader:
|
|
Class: ELFCLASS64
|
|
Data: ELFDATA2LSB
|
|
Type: ET_REL
|
|
Sections:
|
|
- Name: .note.foo
|
|
Type: SHT_NOTE
|
|
Notes:
|
|
- Type: 0xFF
|
|
|
|
## Check we can use the "Content" tag to specify any data for SHT_NOTE sections.
|
|
|
|
# RUN: yaml2obj --docnum=7 %s -o %t7
|
|
# RUN: llvm-readobj --sections --section-data %t7 | FileCheck %s --check-prefix=CONTENT
|
|
|
|
# CONTENT: Name: .note.foo
|
|
# CONTENT: SectionData (
|
|
# CONTENT-NEXT: 0000: 11223344 55 |
|
|
# CONTENT-NEXT: )
|
|
|
|
--- !ELF
|
|
FileHeader:
|
|
Class: ELFCLASS64
|
|
Data: ELFDATA2LSB
|
|
Type: ET_DYN
|
|
Sections:
|
|
- Name: .note.foo
|
|
Type: SHT_NOTE
|
|
Content: "1122334455"
|
|
|
|
## Check we emit an empty section if neither "Content", "Size" nor "Notes" were set.
|
|
|
|
# RUN: yaml2obj --docnum=8 %s -o %t8
|
|
# RUN: llvm-readelf --sections %t8 | FileCheck %s --check-prefix=NO-TAGS
|
|
|
|
# NO-TAGS: [Nr] Name Type Address Off Size
|
|
# NO-TAGS: [ 1] .note.foo NOTE 0000000000000000 000040 000000
|
|
|
|
--- !ELF
|
|
FileHeader:
|
|
Class: ELFCLASS64
|
|
Data: ELFDATA2LSB
|
|
Type: ET_DYN
|
|
Sections:
|
|
- Name: .note.foo
|
|
Type: SHT_NOTE
|
|
|
|
## "Content" and "Notes" cannot be used together to describe the SHT_NOTE section.
|
|
|
|
# RUN: not yaml2obj --docnum=9 %s 2>&1 | FileCheck %s --check-prefix=CONTENT-NOTES
|
|
|
|
# CONTENT-NOTES: error: "Notes" cannot be used with "Content" or "Size"
|
|
|
|
--- !ELF
|
|
FileHeader:
|
|
Class: ELFCLASS64
|
|
Data: ELFDATA2LSB
|
|
Type: ET_DYN
|
|
Sections:
|
|
- Name: .note.foo
|
|
Type: SHT_NOTE
|
|
Content: ""
|
|
Notes: []
|
|
|
|
## "Size" and "Notes" cannot be used together to describe the SHT_NOTE section.
|
|
|
|
# RUN: not yaml2obj --docnum=10 %s 2>&1 | FileCheck %s --check-prefix=CONTENT-NOTES
|
|
|
|
--- !ELF
|
|
FileHeader:
|
|
Class: ELFCLASS64
|
|
Data: ELFDATA2LSB
|
|
Type: ET_DYN
|
|
Sections:
|
|
- Name: .note.foo
|
|
Type: SHT_NOTE
|
|
Size: 1
|
|
Notes: []
|
|
|
|
## Check we can use only "Size" to create a SHT_NOTE section.
|
|
|
|
# RUN: yaml2obj --docnum=11 %s -o %t11
|
|
# RUN: llvm-readobj --sections --section-data %t11 | FileCheck %s --check-prefix=SIZE
|
|
|
|
# SIZE: Name: .note.foo
|
|
# SIZE: SectionData (
|
|
# SIZE-NEXT: 0000: 00000000 00000000 00000000 00000000 |
|
|
# SIZE-NEXT: 0010: 00 |
|
|
# SIZE-NEXT: )
|
|
|
|
--- !ELF
|
|
FileHeader:
|
|
Class: ELFCLASS64
|
|
Data: ELFDATA2LSB
|
|
Type: ET_EXEC
|
|
Sections:
|
|
- Name: .note.foo
|
|
Type: SHT_NOTE
|
|
Size: 0x11
|
|
|
|
## Check we can use "Size" and "Content" together to create a SHT_NOTE section.
|
|
|
|
# RUN: yaml2obj --docnum=12 %s -o %t12
|
|
# RUN: llvm-readobj --sections --section-data %t12 | FileCheck %s --check-prefix=SIZE-CONTENT
|
|
|
|
# SIZE-CONTENT: Name: .note.sizegr
|
|
# SIZE-CONTENT: SectionData (
|
|
# SIZE-CONTENT-NEXT: 0000: 11223300 00 |
|
|
# SIZE-CONTENT-NEXT: )
|
|
|
|
# SIZE-CONTENT: Name: .note.sizeeq
|
|
# SIZE-CONTENT: SectionData (
|
|
# SIZE-CONTENT-NEXT: 0000: 112233 |
|
|
# SIZE-CONTENT-NEXT: )
|
|
|
|
--- !ELF
|
|
FileHeader:
|
|
Class: ELFCLASS64
|
|
Data: ELFDATA2LSB
|
|
Type: ET_EXEC
|
|
Sections:
|
|
- Name: .note.sizegr
|
|
Type: SHT_NOTE
|
|
Size: 0x5
|
|
Content: "112233"
|
|
- Name: .note.sizeeq
|
|
Type: SHT_NOTE
|
|
Size: 0x3
|
|
Content: "112233"
|
|
|
|
## Check that when "Size" and "Content" are used together, the size
|
|
## must be greater than or equal to the content size.
|
|
|
|
# RUN: not yaml2obj --docnum=13 %s 2>&1 | FileCheck %s --check-prefix=SIZE-CONTENT-ERR
|
|
# SIZE-CONTENT-ERR: error: Section size must be greater than or equal to the content size
|
|
|
|
--- !ELF
|
|
FileHeader:
|
|
Class: ELFCLASS64
|
|
Data: ELFDATA2LSB
|
|
Type: ET_EXEC
|
|
Sections:
|
|
- Name: .note
|
|
Type: SHT_NOTE
|
|
Size: 0x1
|
|
Content: "1122"
|
|
|
|
## Check we can't use "Size" and "Notes" tags together.
|
|
|
|
# RUN: not yaml2obj --docnum=14 %s 2>&1 | FileCheck %s --check-prefix=CONTENT-NOTES
|
|
|
|
--- !ELF
|
|
FileHeader:
|
|
Class: ELFCLASS64
|
|
Data: ELFDATA2LSB
|
|
Type: ET_EXEC
|
|
Sections:
|
|
- Name: .note
|
|
Type: SHT_NOTE
|
|
Size: 0x1
|
|
Notes: []
|
|
|
|
## Check that we can use NT_* names for the note type.
|
|
|
|
# RUN: yaml2obj --docnum=15 %s -o %t15
|
|
# RUN: llvm-readobj --sections --section-data %t15 | FileCheck %s --check-prefix=TEXTUAL-TYPE
|
|
|
|
# TEXTUAL-TYPE: Name: .note.foo
|
|
# TEXTUAL-TYPE: SectionData (
|
|
# TEXTUAL-TYPE-NEXT: 0000: 03000000 00000000 03000000 41420000 |............AB..|
|
|
# TEXTUAL-TYPE-NEXT: 0010: 04000000 03000000 01000000 41424300 |............ABC.|
|
|
# TEXTUAL-TYPE-NEXT: 0020: 12345600 |.4V.|
|
|
# TEXTUAL-TYPE-NEXT: )
|
|
|
|
|
|
--- !ELF
|
|
FileHeader:
|
|
Class: ELFCLASS64
|
|
Data: ELFDATA2LSB
|
|
Type: ET_EXEC
|
|
Sections:
|
|
- Name: .note.foo
|
|
Type: SHT_NOTE
|
|
Flags: [ SHF_ALLOC ]
|
|
Notes:
|
|
- Name: AB
|
|
Desc: ''
|
|
Type: NT_GNU_BUILD_ID
|
|
- Name: ABC
|
|
Desc: '123456'
|
|
Type: NT_VERSION
|
|
|
|
## Check that an incorrect alignment is reported.
|
|
|
|
# RUN: not yaml2obj --docnum=16 %s 2>&1 | FileCheck %s --check-prefix=ERR_ALIGN1
|
|
# ERR_ALIGN1: error: .note.foo: invalid alignment for a note section: 0x1
|
|
|
|
--- !ELF
|
|
FileHeader:
|
|
Class: ELFCLASS64
|
|
Data: ELFDATA2LSB
|
|
Type: ET_EXEC
|
|
Sections:
|
|
- Name: .note.foo
|
|
Type: SHT_NOTE
|
|
AddressAlign: 1
|
|
Notes:
|
|
- Type: 0x1
|
|
|
|
## Check that note entries and their "Desc" fields are aligned according to the
|
|
## specified section alignment.
|
|
|
|
# RUN: yaml2obj --docnum=17 -D ELFCLASS=64 %s -o - | \
|
|
# RUN: llvm-readobj --sections --section-data --notes - | \
|
|
# RUN: FileCheck %s --check-prefix=TEST17
|
|
|
|
# RUN: yaml2obj --docnum=17 -D ELFCLASS=32 %s -o - | \
|
|
# RUN: llvm-readobj --sections --section-data --notes - | \
|
|
# RUN: FileCheck %s --check-prefix=TEST17
|
|
|
|
# TEST17: Name: .note.foo4
|
|
# TEST17: SectionData (
|
|
# TEST17-NEXT: 0000: 05000000 02000000 01000000 41424344 |............ABCD|
|
|
# TEST17-NEXT: 0010: 00000000 01020000 00000000 03000000 |................|
|
|
# TEST17-NEXT: 0020: 02000000 03040500 04000000 00000000 |................|
|
|
# TEST17-NEXT: 0030: 03000000 474E5500 |....GNU.|
|
|
# TEST17-NEXT: )
|
|
# TEST17: Name: .note.foo8
|
|
# TEST17: SectionData (
|
|
# TEST17-NEXT: 0000: 05000000 02000000 01000000 41424344 |............ABCD|
|
|
# TEST17-NEXT: 0010: 00000000 00000000 01020000 00000000 |................|
|
|
# TEST17-NEXT: 0020: 00000000 03000000 02000000 00000000 |................|
|
|
# TEST17-NEXT: 0030: 03040500 00000000 04000000 00000000 |................|
|
|
# TEST17-NEXT: 0040: 03000000 474E5500 |....GNU.|
|
|
# TEST17-NEXT: )
|
|
# TEST17: NoteSections [
|
|
# TEST17-NEXT: NoteSection {
|
|
# TEST17-NEXT: Name: .note.foo4
|
|
# TEST17-NEXT: Offset:
|
|
# TEST17-NEXT: Size:
|
|
# TEST17-NEXT: Notes [
|
|
# TEST17-NEXT: {
|
|
# TEST17-NEXT: Owner: ABCD
|
|
# TEST17-NEXT: Data size: 0x2
|
|
# TEST17-NEXT: Type: NT_VERSION (version)
|
|
# TEST17-NEXT: Description data (
|
|
# TEST17-NEXT: 0000: 0102 |..|
|
|
# TEST17-NEXT: )
|
|
# TEST17-NEXT: }
|
|
# TEST17-NEXT: {
|
|
# TEST17-NEXT: Owner:
|
|
# TEST17-NEXT: Data size: 0x3
|
|
# TEST17-NEXT: Type: NT_ARCH (architecture)
|
|
# TEST17-NEXT: Description data (
|
|
# TEST17-NEXT: 0000: 030405 |...|
|
|
# TEST17-NEXT: )
|
|
# TEST17-NEXT: }
|
|
# TEST17-NEXT: {
|
|
# TEST17-NEXT: Owner: GNU
|
|
# TEST17-NEXT: Data size: 0x0
|
|
# TEST17-NEXT: Type: NT_GNU_BUILD_ID (unique build ID bitstring)
|
|
# TEST17-NEXT: Build ID:
|
|
# TEST17-NEXT: }
|
|
# TEST17-NEXT: ]
|
|
# TEST17-NEXT: }
|
|
# TEST17-NEXT: NoteSection {
|
|
# TEST17-NEXT: Name: .note.foo8
|
|
# TEST17-NEXT: Offset:
|
|
# TEST17-NEXT: Size:
|
|
# TEST17-NEXT: Notes [
|
|
# TEST17-NEXT: {
|
|
# TEST17-NEXT: Owner: ABCD
|
|
# TEST17-NEXT: Data size: 0x2
|
|
# TEST17-NEXT: Type: NT_VERSION (version)
|
|
# TEST17-NEXT: Description data (
|
|
# TEST17-NEXT: 0000: 0102 |..|
|
|
# TEST17-NEXT: )
|
|
# TEST17-NEXT: }
|
|
# TEST17-NEXT: {
|
|
# TEST17-NEXT: Owner:
|
|
# TEST17-NEXT: Data size: 0x3
|
|
# TEST17-NEXT: Type: NT_ARCH (architecture)
|
|
# TEST17-NEXT: Description data (
|
|
# TEST17-NEXT: 0000: 030405 |...|
|
|
# TEST17-NEXT: )
|
|
# TEST17-NEXT: }
|
|
# TEST17-NEXT: {
|
|
# TEST17-NEXT: Owner: GNU
|
|
# TEST17-NEXT: Data size: 0x0
|
|
# TEST17-NEXT: Type: NT_GNU_BUILD_ID (unique build ID bitstring)
|
|
# TEST17-NEXT: Build ID:
|
|
# TEST17-NEXT: }
|
|
# TEST17-NEXT: ]
|
|
# TEST17-NEXT: }
|
|
# TEST17-NEXT: ]
|
|
|
|
--- !ELF
|
|
FileHeader:
|
|
Class: ELFCLASS[[ELFCLASS]]
|
|
Data: ELFDATA2LSB
|
|
Type: ET_EXEC
|
|
Sections:
|
|
- Name: .note.foo4
|
|
Type: SHT_NOTE
|
|
AddressAlign: 4
|
|
Notes:
|
|
- Name: ABCD
|
|
Type: NT_VERSION
|
|
Desc: 0102
|
|
- Type: NT_ARCH
|
|
Desc: 030405
|
|
- Name: GNU
|
|
Type: NT_GNU_BUILD_ID
|
|
- Name: .note.foo8
|
|
Type: SHT_NOTE
|
|
AddressAlign: 8
|
|
Notes:
|
|
- Name: ABCD
|
|
Type: NT_VERSION
|
|
Desc: 0102
|
|
- Type: NT_ARCH
|
|
Desc: 030405
|
|
- Name: GNU
|
|
Type: NT_GNU_BUILD_ID
|
|
|
|
## Check that the alignment for note entries is taken from the "AddressAlign"
|
|
## field even if "ShAddrAlign" is also specified; an unexpected value in the
|
|
## "ShAddrAlign" property does not trigger an incorrect alignment error.
|
|
|
|
# RUN: yaml2obj --docnum=18 -D ADDRALIGN=0 -D SHADDRALIGN=8 %s -o - | \
|
|
# RUN: llvm-readobj --sections --section-data --notes - | \
|
|
# RUN: FileCheck %s --check-prefixes=TEST18,TEST18_4
|
|
|
|
# RUN: yaml2obj --docnum=18 -D ADDRALIGN=4 -D SHADDRALIGN=3 %s -o - | \
|
|
# RUN: llvm-readobj --sections --section-data --notes - | \
|
|
# RUN: FileCheck %s --check-prefixes=TEST18,TEST18_4
|
|
|
|
# RUN: yaml2obj --docnum=18 -D ADDRALIGN=8 -D SHADDRALIGN=4 %s -o - | \
|
|
# RUN: llvm-readobj --sections --section-data --notes - | \
|
|
# RUN: FileCheck %s --check-prefixes=TEST18,TEST18_8
|
|
|
|
# TEST18: Name: .note
|
|
# TEST18: SectionData (
|
|
# TEST18_4-NEXT: 0000: 05000000 02000000 01000000 41424344 |............ABCD|
|
|
# TEST18_4-NEXT: 0010: 00000000 01020000 00000000 03000000 |................|
|
|
# TEST18_4-NEXT: 0020: 02000000 03040500 04000000 00000000 |................|
|
|
# TEST18_4-NEXT: 0030: 03000000 474E5500 |....GNU.|
|
|
# TEST18_8-NEXT: 0000: 05000000 02000000 01000000 41424344 |............ABCD|
|
|
# TEST18_8-NEXT: 0010: 00000000 00000000 01020000 00000000 |................|
|
|
# TEST18_8-NEXT: 0020: 00000000 03000000 02000000 00000000 |................|
|
|
# TEST18_8-NEXT: 0030: 03040500 00000000 04000000 00000000 |................|
|
|
# TEST18_8-NEXT: 0040: 03000000 474E5500 |....GNU.|
|
|
# TEST18-NEXT: )
|
|
|
|
--- !ELF
|
|
FileHeader:
|
|
Class: ELFCLASS64
|
|
Data: ELFDATA2LSB
|
|
Type: ET_EXEC
|
|
Sections:
|
|
- Name: .note
|
|
Type: SHT_NOTE
|
|
AddressAlign: [[ADDRALIGN]]
|
|
ShAddrAlign: [[SHADDRALIGN]]
|
|
Notes:
|
|
- Name: ABCD
|
|
Type: NT_VERSION
|
|
Desc: 0102
|
|
- Type: NT_ARCH
|
|
Desc: 030405
|
|
- Name: GNU
|
|
Type: NT_GNU_BUILD_ID
|
|
|
|
## Check that an incorrect offset for generating notes is reported.
|
|
|
|
# RUN: not yaml2obj --docnum=19 %s 2>&1 | FileCheck %s --check-prefix=ERR_OFFSET
|
|
# ERR_OFFSET: error: .note: invalid offset of a note section: 0x501, should be aligned to 4
|
|
|
|
--- !ELF
|
|
FileHeader:
|
|
Class: ELFCLASS32
|
|
Data: ELFDATA2LSB
|
|
Type: ET_EXEC
|
|
Sections:
|
|
- Name: .note
|
|
Type: SHT_NOTE
|
|
Offset: 0x501
|
|
Notes:
|
|
- Type: 0x1
|
|
|
|
## Do not issue an error if the notes array is empty.
|
|
|
|
# RUN: yaml2obj --docnum=20 %s -o - | \
|
|
# RUN: llvm-readobj --sections --section-data - | \
|
|
# RUN: FileCheck %s --check-prefix=TEST20
|
|
|
|
# TEST20: Section {
|
|
# TEST20: Name: .note
|
|
# TEST20-NEXT: Type: SHT_NOTE
|
|
# TEST20-NEXT: Flags [ (0x0)
|
|
# TEST20-NEXT: ]
|
|
# TEST20-NEXT: Address:
|
|
# TEST20-NEXT: Offset: 0x501
|
|
# TEST20-NEXT: Size: 0
|
|
# TEST20-NEXT: Link:
|
|
# TEST20-NEXT: Info:
|
|
# TEST20-NEXT: AddressAlignment: 5
|
|
# TEST20-NEXT: EntrySize:
|
|
# TEST20-NEXT: SectionData (
|
|
# TEST20-NEXT: )
|
|
# TEST20-NEXT: }
|
|
|
|
--- !ELF
|
|
FileHeader:
|
|
Class: ELFCLASS32
|
|
Data: ELFDATA2LSB
|
|
Type: ET_EXEC
|
|
Sections:
|
|
- Name: .note
|
|
Type: SHT_NOTE
|
|
Offset: 0x501
|
|
AddressAlign: 5
|
|
Notes: []
|