mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-26 17:16:07 +00:00

--oformat=binary is rare (used in a few places in FreeBSD, see `stand/i386/mbr/Makefile` `LDFLAGS_BIN`) The result should be identical to a normal output transformed by `objcopy -O binary`. The current implementation ignores addresses and lays out sections by respecting output section alignments. It can fail when an output section address is specified, e.g. `.rodata ALIGN(16) :` (PR33651). Fix PR33651 by respecting LMA. The code is similar to `tools/llvm-objcop/ELF/Object.cpp` BinaryWriter::finalize after D71035 and D79229. Unforunately for an output section without PT_LOAD, we assume its LMA is equal to its VMA. So the result is still incorrect when an output section LMA (`AT(...)`) is specified Also drop `alignTo(off, config->wordsize)`. GNU ld does not round up the file size. Differential Revision: https://reviews.llvm.org/D85086
18 lines
432 B
ArmAsm
18 lines
432 B
ArmAsm
# REQUIRES: x86
|
|
# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t
|
|
|
|
# RUN: ld.lld -N -Ttext 0x100 -o %t.out %t --oformat binary
|
|
# RUN: od -t x1 -v %t.out | FileCheck %s --check-prefix=BIN
|
|
|
|
# BIN: 0000000 90
|
|
# BIN-NEXT: 0000001
|
|
|
|
## The same but without OMAGIC.
|
|
# RUN: ld.lld -Ttext 0x100 -o %t.out %t --oformat binary
|
|
# RUN: od -t x1 -v %t.out | FileCheck %s --check-prefix=BIN
|
|
|
|
.text
|
|
.globl _start
|
|
_start:
|
|
nop
|