## The computed LMA of a section in a PT_LOAD equals sh_offset-p_offset+p_paddr.
## The byte offset difference between two sections equals the difference between their LMAs.

## Corollary: if two sections are in the same PT_LOAD, the byte offset
## difference equals the difference between their sh_addr fields.

# RUN: yaml2obj --docnum=1 %s -o %t1
# RUN: llvm-objcopy -O binary %t1 %t1.out
# RUN: od -A x -t x2 %t1.out | FileCheck %s --check-prefix=CHECK1 --ignore-case
# RUN: wc -c %t1.out | FileCheck %s --check-prefix=SIZE1

# CHECK1:      000000 c3c3 c3c3 0000 0000 0000 0000 0000 0000
# CHECK1-NEXT: 000010 0000 0000 0000 0000 0000 0000 0000 0000
# CHECK1-NEXT: *
# CHECK1-NEXT: 001000 3232
# SIZE1:       4098

--- !ELF
FileHeader:
  Class:           ELFCLASS64
  Data:            ELFDATA2LSB
  Type:            ET_EXEC
  Machine:         EM_X86_64
Sections:
  - Name:            .text
    Type:            SHT_PROGBITS
    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
    Address:         0x1000
    AddressAlign:    0x1000
    Content:         "c3c3c3c3"
  - Name:            .data
    Type:            SHT_PROGBITS
    Flags:           [ SHF_ALLOC, SHF_WRITE ]
    Address:         0x2000
    AddressAlign:    0x1000
    Content:         "3232"
ProgramHeaders:
  - Type:     PT_LOAD
    Flags:    [ PF_R, PF_W ]
    FirstSec: .text
    LastSec:  .data

## The computed LMA of a section not in a PT_LOAD equals its sh_addr.

# RUN: yaml2obj --docnum=2 %s -o %t2
# RUN: llvm-objcopy -O binary %t2 %t2.out
# RUN: od -A x -t x2 %t2.out | FileCheck %s --check-prefix=CHECK2 --ignore-case
# RUN: wc -c %t2.out | FileCheck %s --check-prefix=SIZE2

## The computed LMA of .data is 0x4000. The minimum LMA of all non-empty sections is 0x1000.
## The content of .data will be written at 0x4000-0x1000 = 0x3000.
# CHECK2:      000000 c3c3 c3c3 0000 0000 0000 0000 0000 0000
# CHECK2-NEXT: 000010 0000 0000 0000 0000 0000 0000 0000 0000
# CHECK2-NEXT: *
# CHECK2-NEXT: 003000 3232
# SIZE2:       12290

--- !ELF
FileHeader:
  Class:           ELFCLASS64
  Data:            ELFDATA2LSB
  Type:            ET_EXEC
  Machine:         EM_X86_64
Sections:
  - Name:            .text
    Type:            SHT_PROGBITS
    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
    ## Not in a PT_LOAD. LMA = sh_addr = 0x1000.
    Address:         0x1000
    AddressAlign:    0x1000
    Content:         "c3c3c3c3"
  - Name:            .data
    Type:            SHT_PROGBITS
    Flags:           [ SHF_ALLOC, SHF_WRITE ]
    ## LMA = sh_offset-p_offset+p_paddr = 0x2000-0x2000+0x4000 = 0x4000.
    Address:         0x2000
    AddressAlign:    0x1000
    Content:         "3232"
ProgramHeaders:
  - Type:     PT_LOAD
    Flags:    [ PF_R, PF_W ]
    VAddr:    0x2000
    ## p_vaddr is increased from 0x2000 to 0x4000.
    PAddr:    0x4000
    FirstSec: .data
    LastSec:  .data

## Check that we use sh_offset instead of sh_addr to decide where to write section contents.

# RUN: yaml2obj --docnum=3 %s -o %t3
# RUN: llvm-objcopy -O binary %t3 %t3.out
# RUN: od -A x -t x2 %t3.out | FileCheck %s --check-prefix=CHECK3 --ignore-case
# RUN: wc -c %t3.out | FileCheck %s --check-prefix=SIZE3

## The minimum LMA of all non-empty sections is 0x1000.
## The content of .data will be written at 0x3000-0x1000 = 0x2000.
# CHECK3:      000000 c3c3 c3c3 0000 0000 0000 0000 0000 0000
# CHECK3-NEXT: 000010 0000 0000 0000 0000 0000 0000 0000 0000
# CHECK3-NEXT: *
# CHECK3-NEXT: 002000 3232
# SIZE3:       8194

--- !ELF
FileHeader:
  Class:           ELFCLASS64
  Data:            ELFDATA2LSB
  Type:            ET_EXEC
  Machine:         EM_X86_64
Sections:
  - Name:            .text
    Type:            SHT_PROGBITS
    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
    ## Not in a PT_LOAD. LMA = sh_addr = 0x1000.
    Address:         0x1000
    AddressAlign:    0x1000
    Content:         "c3c3c3c3"
  - Name:            .data
    Type:            SHT_PROGBITS
    Flags:           [ SHF_ALLOC, SHF_WRITE ]
    ## sh_addr is increased from 0x2000 to 0x3000, but it is ignored.
    ## LMA = sh_offset-p_offset+p_paddr = 0x2000-0x2000+0x3000 = 0x3000.
    Address:         0x3000
    AddressAlign:    0x1000
    Content:         "3232"
ProgramHeaders:
  - Type:     PT_LOAD
    Flags:    [ PF_R, PF_W ]
    VAddr:    0x3000
    FirstSec: .data
    LastSec:  .data

## The first section (.text) is empty. Test that we skip its LMA until the first
## non-empty section, otherwise we would leave a large number of leading zeroes.
# RUN: yaml2obj --docnum=4 %s -o %t4
# RUN: llvm-objcopy -O binary %t4 %t4.out
# RUN: od -A x -t x2 %t4.out | FileCheck %s --check-prefix=SKIPEMPTY

# SKIPEMPTY:      000000 3232
# SKIPEMPTY-NEXT: 000002

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_EXEC
  Machine: EM_X86_64
Sections:
  - Name:         .text
    Type:         SHT_PROGBITS
    Flags:        [ SHF_ALLOC, SHF_EXECINSTR ]
    Address:      0x1000
    AddressAlign: 0x1000
  - Name:         gap
    Type:         Fill
    Size:         0x1000
  - Name:         .data
    Type:         SHT_PROGBITS
    Flags:        [ SHF_ALLOC, SHF_WRITE ]
    Content:      "3232"

## The last section (.data) is empty. Test that we stop dumping after the last
## non-empty section, otherwise we would leave a large number of trailing zeroes.
# RUN: yaml2obj --docnum=5 %s -o %t5
# RUN: llvm-objcopy -O binary %t5 %t5.out
# RUN: od -A x -t x2 %t5.out | FileCheck %s --check-prefix=SKIPEMPTY

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_EXEC
  Machine: EM_X86_64
Sections:
  - Name:         .text
    Type:         SHT_PROGBITS
    Flags:        [ SHF_ALLOC, SHF_EXECINSTR ]
    Address:      0x1000
    AddressAlign: 0x1000
    Content:      "3232"
  - Name:         gap
    Type:         Fill
    Size:         0xffd
  - Name:         .data
    Type:         SHT_PROGBITS
    Flags:        [ SHF_ALLOC, SHF_WRITE ]

## NOBITS sections should not appear in output.
# RUN: yaml2obj --docnum=6 %s -o %t6
# RUN: llvm-objcopy -O binary %t6 %t6.out
# RUN: od -A x -t x2 %t6.out | FileCheck %s --check-prefix=SKIPNOBITS --ignore-case

# SKIPNOBITS:      000000 c3c3 c3c3
# SKIPNOBITS-NEXT: 000004

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_EXEC
  Machine: EM_X86_64
Sections:
  - Name:         .bss
    Type:         SHT_NOBITS
    Flags:        [ SHF_ALLOC ]
    Address:      0x1000
    AddressAlign: 0x1000
    Size:         0x123
  - Name:         gap
    Type:         Fill
    Size:         0xffd
  - Name:         .text
    Type:         SHT_PROGBITS
    Flags:        [ SHF_ALLOC, SHF_EXECINSTR ]
    Address:      0x4000
    AddressAlign: 0x1000
    Content:      "c3c3c3c3"

## If .bss is converted to non-SHT_NOBITS, align its new offset. This may affect
## the output size.
# RUN: yaml2obj --docnum=7 %s -o %t7
# RUN: llvm-objcopy -O binary --set-section-flags .bss=alloc,contents %t7 %t7.out
# RUN: od -A x -t x2 %t7.out | FileCheck %s --check-prefix=FILLNOBITS --ignore-case

# FILLNOBITS:      000000 c3c3 0000 0000 0000 0000 0000 0000 0000
# FILLNOBITS-NEXT: 000010 0000 00
# FILLNOBITS-NEXT: 000013

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_EXEC
  Machine: EM_X86_64
Sections:
  - Name:         .text
    Type:         SHT_PROGBITS
    Flags:        [ SHF_ALLOC, SHF_EXECINSTR ]
    Address:      0x1000
    AddressAlign: 0x1000
    Content:      "c3c3"
  - Name:         .bss
    Type:         SHT_NOBITS
    Flags:        [ SHF_ALLOC ]
    ## sh_offset is not aligned.
    ShOffset:     0x1002
    Size:         0x3
    AddressAlign: 0x10
ProgramHeaders:
  - Type:     PT_LOAD
    Flags:    [ PF_R, PF_W, PF_X ]
    Offset:   0x1000
    VAddr:    0x1000
    PAddr:    0x1000
    FileSize: 0x2
    MemSize:  0x13
    Align:    0x1000

## Test that sections do not move relative to their physical addresses if
## the physical address is not aligned. This behavior matches GNU objcopy
## and is important for embedded images where the physical address is
## used to store the initial data image. Without converting the type of a
## NOBITS section, don't align the offset. This matches GNU objcopy when
## the physical address of a section is not aligned.

# RUN: yaml2obj --docnum=8 %s -o %t8
# RUN: llvm-objcopy -O binary --only-section=.text --only-section=.data %t8 %t8.out
# RUN: od -A x -t x1 %t8.out | FileCheck %s --check-prefix=PHYSUNALIGNED --ignore-case

# PHYSUNALIGNED:      000000 11 22 33 44 55 66 77 88 99 aa bb cc dd ee ff 00
# PHYSUNALIGNED-NEXT: 000010 11 22 33 44 bd ac cd ab

--- !ELF
FileHeader:
  Class:           ELFCLASS64
  Data:            ELFDATA2LSB
  Type:            ET_EXEC
  Machine:         EM_X86_64
ProgramHeaders:
  - Type:            PT_LOAD
    Flags:           [ PF_X, PF_R ]
    FirstSec:        .text
    LastSec:         .text
    VAddr:           0x200000
    PAddr:           0x200000
    Align:           0x1000
  - Type:            PT_LOAD
    Flags:           [ PF_W, PF_R ]
    FirstSec:        .data
    LastSec:         .data
    VAddr:           0x400000
    PAddr:           0x200014
## PAddr is not aligned by sh_addralign(.data)
    Align:           0x1000
Sections:
  - Name:            .text
    Type:            SHT_PROGBITS
    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
    Address:         0x200000
    AddressAlign:    0x1
    Offset:          0x1000
    Content:         112233445566778899aabbccddeeff0011223344
  - Name:            .data
    Type:            SHT_PROGBITS
    Flags:           [ SHF_WRITE, SHF_ALLOC ]
    Address:         0x400000
    AddressAlign:    0x8
    Offset:          0x2000
    Content:         BDACCDAB
