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
197 lines
7.0 KiB
Plaintext
197 lines
7.0 KiB
Plaintext
## Check for basic functionality using an input file with
|
|
## various section types, adresses, data, and no segments.
|
|
# RUN: yaml2obj %s --docnum=1 -o %t
|
|
# RUN: llvm-objcopy -O srec %t - | \
|
|
# RUN: FileCheck --match-full-lines --strict-whitespace %s --check-prefix=SREC
|
|
|
|
## The record type for the header should be S0 with a 2 byte address
|
|
## of 0. For an output file named "-" the header data field should contain "2D".
|
|
## The byte count field should therefore have a value of 4: 2 bytes for address,
|
|
## 1 byte for output file and 1 byte for checksum.
|
|
# SREC:S00400002DCE
|
|
# SREC-NEXT:S31500001000000102030405060708090A0B0C0D0E0F62
|
|
# SREC-NEXT:S30A0000101010111213147B
|
|
# SREC-NEXT:S30F00EFFFFF1111111111111111111159
|
|
# SREC-NEXT:S31000FFFFF83031323334353637383940AC
|
|
# SREC-NEXT:S30A8000100000010203045B
|
|
# SREC-NEXT:S70500000000FA
|
|
|
|
## Terminator should contain the entry point.
|
|
# RUN: llvm-objcopy -O srec --set-start=0xF0000000 %t --only-section=.dummy - 2>&1 | \
|
|
# RUN: FileCheck --match-full-lines --strict-whitespace %s --check-prefix=ENTRY
|
|
## Sign-extended entry point is OK.
|
|
# RUN: llvm-objcopy -O srec --set-start=0xFFFFFFFFF0000000 %t --only-section=.dummy - 2>&1 | \
|
|
# RUN: FileCheck --match-full-lines --strict-whitespace %s --check-prefix=ENTRY
|
|
|
|
# ENTRY:S00400002DCE
|
|
# ENTRY-NEXT:S705F00000000A
|
|
|
|
## Start address which exceeds 32 bit range triggers an error.
|
|
# RUN: not llvm-objcopy -O srec --set-start=0xF00000000 %t - 2>&1 | \
|
|
# RUN: FileCheck %s --check-prefix=BAD_START
|
|
|
|
# BAD_START: entry point address 0xf00000000 overflows 32 bits
|
|
|
|
## Sign-extended start address which exceeds 32 bit range triggers an error.
|
|
# RUN: not llvm-objcopy -O srec --set-start=0xFFFFFFFF0F000000 %t - 2>&1 | \
|
|
# RUN: FileCheck %s --check-prefix=BAD_EXTENDED_START
|
|
|
|
# BAD_EXTENDED_START: entry point address 0xffffffff0f000000 overflows 32 bits
|
|
|
|
--- !ELF
|
|
FileHeader:
|
|
Class: ELFCLASS64
|
|
Data: ELFDATA2LSB
|
|
Type: ET_EXEC
|
|
Machine: EM_X86_64
|
|
Sections:
|
|
- Name: .data1
|
|
## Records for this section should come last.
|
|
Type: SHT_PROGBITS
|
|
Flags: [ SHF_ALLOC ]
|
|
Content: "11111111111111111111"
|
|
Address: 0xEFFFFF
|
|
- Name: .data2
|
|
## This section overlaps 24-bit address boundary, so we expect
|
|
## its record type to be S3.
|
|
Type: SHT_PROGBITS
|
|
Flags: [ SHF_ALLOC ]
|
|
Content: "3031323334353637383940"
|
|
Address: 0xFFFFF8
|
|
## Sign-extended addresses are OK.
|
|
- Name: .data3
|
|
Type: SHT_PROGBITS
|
|
Flags: [ SHF_ALLOC ]
|
|
Address: 0xFFFFFFFF80001000
|
|
Content: "0001020304"
|
|
- Name: .text
|
|
## This section's contents exceed default line length of 16 bytes
|
|
## so we expect two lines created for it. Records for this section
|
|
## should appear before records for the previous section.
|
|
Type: SHT_PROGBITS
|
|
Flags: [ SHF_ALLOC ]
|
|
Address: 0x1000
|
|
Content: "000102030405060708090A0B0C0D0E0F1011121314"
|
|
- Name: .bss
|
|
## NOBITS sections are not written.
|
|
Type: SHT_NOBITS
|
|
Flags: [ SHF_ALLOC ]
|
|
Address: 0x10100
|
|
Size: 0x1000
|
|
- Name: .dummy
|
|
## Non-allocatable sections are not written.
|
|
Type: SHT_PROGBITS
|
|
Flags: [ ]
|
|
Address: 0x20FFF8
|
|
Size: 65536
|
|
|
|
## Check for various error cases.
|
|
|
|
## Check that section address range overlapping 32 bit range
|
|
## triggers an error.
|
|
# RUN: yaml2obj %s --docnum=2 -o %t.err
|
|
# RUN: not llvm-objcopy -O srec --only-section=.text1 %t.err - 2>&1 | \
|
|
# RUN: FileCheck %s --check-prefix=BAD-ADDR
|
|
# RUN: not llvm-objcopy -O srec --only-section=.text2 %t.err - 2>&1 | \
|
|
# RUN: FileCheck %s --check-prefix=BAD-ADDR2
|
|
|
|
# BAD-ADDR: section '.text1' address range [0xfffffff8, 0x100000000] is not 32 bit
|
|
# BAD-ADDR2: section '.text2' address range [0xffffffff0, 0xffffffff4] is not 32 bit
|
|
|
|
## Check that zero length section is not written.
|
|
# RUN: llvm-objcopy -O srec --only-section=.text %t.err - | \
|
|
# RUN: FileCheck --match-full-lines --strict-whitespace --implicit-check-not={{.}} %s --check-prefix=ZERO_SIZE_SEC
|
|
|
|
## There should be no records besides header and terminator.
|
|
# ZERO_SIZE_SEC:S00400002DCE
|
|
# ZERO_SIZE_SEC-NEXT:S9030000FC
|
|
|
|
--- !ELF
|
|
FileHeader:
|
|
Class: ELFCLASS64
|
|
Data: ELFDATA2LSB
|
|
Type: ET_EXEC
|
|
Machine: EM_X86_64
|
|
Sections:
|
|
- Name: .text1
|
|
## Part of section data is in 32-bit address range and part isn't.
|
|
Type: SHT_PROGBITS
|
|
Flags: [ SHF_ALLOC]
|
|
Address: 0xFFFFFFF8
|
|
Content: "000102030405060708"
|
|
- Name: .text2
|
|
## Entire secion is outside of 32-bit range.
|
|
Type: SHT_PROGBITS
|
|
Flags: [ SHF_ALLOC ]
|
|
Address: 0xFFFFFFFF0
|
|
Content: "0001020304"
|
|
|
|
## This tests an input file with segments and expects
|
|
## physical addresses instead of virtual addresses.
|
|
# RUN: yaml2obj %s --docnum=3 -o %t.seg
|
|
# RUN: llvm-objcopy -O srec %t.seg - | \
|
|
# RUN: FileCheck --match-full-lines --strict-whitespace %s --check-prefix=PADDR
|
|
|
|
# PADDR:S00400002DCE
|
|
# PADDR-NEXT:S214100000000102030405060708090A0B0C0D0E0F63
|
|
# PADDR-NEXT:S20910001010111213147C
|
|
# PADDR-NEXT:S20F10001530313233343536373839407E
|
|
# PADDR-NEXT:S20810002040414243C1
|
|
# PADDR-NEXT:S20F10002450515253545556575859600F
|
|
# PADDR-NEXT:S20720FFF8000000E1
|
|
# PADDR-NEXT:S804100000EB
|
|
|
|
--- !ELF
|
|
## This file has a non-contiguous section layout with large gaps.
|
|
## These sections are all tightly packed into one PT_LOAD segment
|
|
## starting at physical address 0x100000. Records should use physical addresses.
|
|
FileHeader:
|
|
Class: ELFCLASS64
|
|
Data: ELFDATA2LSB
|
|
Type: ET_EXEC
|
|
Machine: EM_X86_64
|
|
Entry: 0x100000
|
|
Sections:
|
|
- Name: .text
|
|
Type: SHT_PROGBITS
|
|
Flags: [ SHF_ALLOC ]
|
|
Address: 0x0
|
|
Content: "000102030405060708090A0B0C0D0E0F1011121314"
|
|
- Name: .data1
|
|
Type: SHT_PROGBITS
|
|
Flags: [ SHF_ALLOC ]
|
|
Content: "3031323334353637383940"
|
|
Address: 0xFFF8
|
|
- Name: .data2
|
|
Type: SHT_PROGBITS
|
|
Flags: [ SHF_ALLOC ]
|
|
Content: "40414243"
|
|
Address: 0x10100
|
|
- Name: .data3
|
|
Type: SHT_PROGBITS
|
|
Flags: [ SHF_ALLOC ]
|
|
Content: "5051525354555657585960"
|
|
Address: 0x10FFF8
|
|
- Name: .bss
|
|
Type: SHT_NOBITS
|
|
Flags: [ SHF_ALLOC ]
|
|
Address: 0x10100
|
|
Size: 0x1000
|
|
- Name: .dummy
|
|
Type: SHT_PROGBITS
|
|
Flags: [ SHF_ALLOC ]
|
|
Address: 0x20FFF8
|
|
Size: 3
|
|
- Name: .nonalloc
|
|
Type: SHT_PROGBITS
|
|
Flags: [ ]
|
|
Address: 0x300000
|
|
Size: 1
|
|
ProgramHeaders:
|
|
- Type: PT_LOAD
|
|
Flags: [ PF_X, PF_R ]
|
|
VAddr: 0xF00000000
|
|
PAddr: 0x100000
|
|
FirstSec: .text
|
|
LastSec: .bss
|