## Here we document how yaml2obj handles relocation addend descriptions.

## Case 1: Check a 64-bit object.

## Case 1.1: Document we accept any hex/decimal addends in [INT64_MIN, UINT64_MAX].

## INT64_MIN   == -9223372036854775808
## UINT64_MAX  == 0xffffffffffffffff

## Addend == UINT64_MAX.
# RUN: yaml2obj %s -o %t64.decimal.max -DADDEND=18446744073709551615
# RUN: llvm-readobj -r %t64.decimal.max | FileCheck %s --check-prefix=TEST -DADDEND=0xFFFFFFFFFFFFFFFF
# RUN: yaml2obj %s -o %t64.hex.max -DADDEND=0xFFFFFFFFFFFFFFFF
# RUN: llvm-readobj -r %t64.hex.max | FileCheck %s --check-prefix=TEST -DADDEND=0xFFFFFFFFFFFFFFFF

## Addend == first positive integer.
# RUN: yaml2obj %s -o %t64.decimal.first.pos -DADDEND=1
# RUN: llvm-readobj -r %t64.decimal.first.pos | FileCheck %s --check-prefix=TEST -DADDEND=0x1
# RUN: yaml2obj %s -o %t64.hex.first.pos -DADDEND=0x1
# RUN: llvm-readobj -r %t64.hex.first.pos | FileCheck %s --check-prefix=TEST -DADDEND=0x1

## Addend == 0.
# RUN: yaml2obj %s -o %t64.decimal.null -DADDEND=0
# RUN: llvm-readobj -r %t64.decimal.null | FileCheck %s --check-prefix=TEST -DADDEND=0x0
# RUN: yaml2obj %s -o %t64.hex.null -DADDEND=0x0
# RUN: llvm-readobj -r %t64.hex.null | FileCheck %s --check-prefix=TEST -DADDEND=0x0

## Addend == first negative integer.
# RUN: yaml2obj %s -o %t64.decimal.first.neg -DADDEND=-1
# RUN: llvm-readobj -r %t64.decimal.first.neg | FileCheck %s --check-prefix=TEST -DADDEND=0xFFFFFFFFFFFFFFFF
## We do not accept negative hex addends.
# RUN: not yaml2obj %s -o /dev/null -DADDEND=-0x1 2>&1 | FileCheck %s --check-prefix=ERR

## Addend == INT64_MIN.
# RUN: yaml2obj %s -o %t64.decimal.min -DADDEND=-9223372036854775808
# RUN: llvm-readobj -r %t64.decimal.min | FileCheck %s --check-prefix=TEST -DADDEND=0x8000000000000000
# TEST: 0x0 R_{{.*}}_PC32 foo [[ADDEND]]

# Case 1.2: Document we do not accept any hex/decimal addends outside of the range specified.

## Addend == 2^64.
# RUN: not yaml2obj %s -o /dev/null -DADDEND=18446744073709551616 2>&1 | FileCheck %s --check-prefix=ERR
# RUN: not yaml2obj %s -o /dev/null -DADDEND=0x10000000000000000 2>&1 | FileCheck %s --check-prefix=ERR

## Addend == INT64_MIN - 1.
# RUN: not yaml2obj %s -o /dev/null -DADDEND=-9223372036854775809 2>&1 | FileCheck %s --check-prefix=ERR

# ERR: invalid number

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_REL
  Machine: EM_X86_64
Sections:
  - Name: .text
    Type: SHT_PROGBITS
  - Name: .rela.text
    Type: SHT_RELA
    Info: .text
    Link: .symtab
    Relocations:
      - Type:   R_X86_64_PC32
        Symbol: foo
        Addend: [[ADDEND]]
Symbols:
  - Name: foo

## Case 2: Check a 32-bit object.

## INT32_MIN   == -2147483648
## UINT32_MAX  == 0xffffffff

## Case 2.1: Document we accept any hex/decimal addends in [INT32_MIN, UINT32_MAX].

## Addend == UINT32_MAX.
# RUN: yaml2obj --docnum=2 %s -o %t32.decimal.max -DADDEND=4294967295
# RUN: llvm-readobj -r %t32.decimal.max | FileCheck %s --check-prefix=TEST -DADDEND=0xFFFFFFFF
# RUN: yaml2obj --docnum=2 %s -o %t32.hex.max -DADDEND=0xFFFFFFFF
# RUN: llvm-readobj -r %t32.hex.max | FileCheck %s --check-prefix=TEST -DADDEND=0xFFFFFFFF

## Addend == first positive integer.
# RUN: yaml2obj --docnum=2 %s -o %t32.decimal.first.pos -DADDEND=1
# RUN: llvm-readobj -r %t32.decimal.first.pos | FileCheck %s --check-prefix=TEST -DADDEND=0x1
# RUN: yaml2obj --docnum=2 %s -o %t32.hex.first.pos -DADDEND=0x1
# RUN: llvm-readobj -r %t32.hex.first.pos | FileCheck %s --check-prefix=TEST -DADDEND=0x1

## Addend == 0.
# RUN: yaml2obj --docnum=2 %s -o %t32.decimal.null -DADDEND=0
# RUN: llvm-readobj -r %t32.decimal.null | FileCheck %s --check-prefix=TEST -DADDEND=0x0
# RUN: yaml2obj --docnum=2 %s -o %t32.hex.null -DADDEND=0x0
# RUN: llvm-readobj -r %t32.hex.null | FileCheck %s --check-prefix=TEST -DADDEND=0x0

## Addend == first negative integer.
# RUN: yaml2obj --docnum=2 %s -o %t32.decimal.first.neg -DADDEND=-1
# RUN: llvm-readobj -r %t32.decimal.first.neg | FileCheck %s --check-prefix=TEST -DADDEND=0xFFFFFFFF
## We do not accept negative hex addends.
# RUN: not yaml2obj --docnum=2 %s -o /dev/null -DADDEND=-0x1 2>&1 | FileCheck %s --check-prefix=ERR

## Addend == INT32_MIN
# RUN: yaml2obj --docnum=2 %s -o %t32.decimal.min -DADDEND=-2147483648
# RUN: llvm-readobj -r %t32.decimal.min | FileCheck %s --check-prefix=TEST -DADDEND=0x80000000

# Case 2.2: Document we do not accept any hex/decimal addends outside of the range specified.

## Addend == 2^32.
# RUN: not yaml2obj --docnum=2 %s -o /dev/null -DADDEND=4294967296 2>&1 | FileCheck %s --check-prefix=ERR
# RUN: not yaml2obj --docnum=2 %s -o /dev/null -DADDEND=0x100000000 2>&1 | FileCheck %s --check-prefix=ERR

## Addend == INT32_MIN - 1.
# RUN: not yaml2obj --docnum=2 %s -o /dev/null -DADDEND=-2147483649 2>&1 | FileCheck %s --check-prefix=ERR

--- !ELF
FileHeader:
  Class:   ELFCLASS32
  Data:    ELFDATA2LSB
  Type:    ET_REL
  Machine: EM_386
Sections:
  - Name: .text
    Type: SHT_PROGBITS
  - Name: .rela.text
    Type: SHT_RELA
    Info: .text
    Link: .symtab
    Relocations:
      - Type:   R_386_PC32
        Symbol: foo
        Addend: [[ADDEND]]
Symbols:
  - Name: foo

## Case 3: Check we do not allow invalid values.
# RUN: not yaml2obj %s -D ADDEND=0x1122GGEE 2>&1 | FileCheck %s --check-prefix=ERR
# RUN: not yaml2obj %s -D ADDEND=-0x1122GGEE 2>&1 | FileCheck %s --check-prefix=ERR
# RUN: not yaml2obj %s -D ADDEND=1234G5 2>&1 | FileCheck %s --check-prefix=ERR
# RUN: not yaml2obj %s -D ADDEND=-1234G5 2>&1 | FileCheck %s --check-prefix=ERR
# RUN: not yaml2obj %s -D ADDEND=foo 2>&1 | FileCheck %s --check-prefix=ERR
# RUN: not yaml2obj %s -D ADDEND=- 2>&1 | FileCheck %s --check-prefix=ERR
# RUN: not yaml2obj %s -D ADDEND=--1234 2>&1 | FileCheck %s --check-prefix=ERR
