diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2017-12-24 14:05:16 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2017-12-24 14:05:16 +0000 |
commit | e30c72b844bec93f6c197ea6c7c8cd0188964208 (patch) | |
tree | 1d71fce50e0553f474b76ee72ce01aa497f4947b | |
parent | 0d9ba4fe26725cacc7253fc3c72c4574f26bc099 (diff) |
Vendor import of lld trunk r321426:vendor/lld/lld-trunk-r321426
Notes
Notes:
svn path=/vendor/lld/dist/; revision=327158
svn path=/vendor/lld/lld-trunk-r321426/; revision=327159; tag=vendor/lld/lld-trunk-r321426
-rw-r--r-- | ELF/LinkerScript.cpp | 2 | ||||
-rw-r--r-- | test/ELF/linkerscript/data-commands.s | 36 |
2 files changed, 38 insertions, 0 deletions
diff --git a/ELF/LinkerScript.cpp b/ELF/LinkerScript.cpp index 91873e318f54..8f50a977fd75 100644 --- a/ELF/LinkerScript.cpp +++ b/ELF/LinkerScript.cpp @@ -693,6 +693,8 @@ void LinkerScript::assignOffsets(OutputSection *Sec) { if (auto *Cmd = dyn_cast<ByteCommand>(Base)) { Cmd->Offset = Dot - Ctx->OutSec->Addr; Dot += Cmd->Size; + if (Ctx->MemRegion) + Ctx->MemRegionOffset[Ctx->MemRegion] += Cmd->Size; Ctx->OutSec->Size = Dot - Ctx->OutSec->Addr; continue; } diff --git a/test/ELF/linkerscript/data-commands.s b/test/ELF/linkerscript/data-commands.s index ef154eda9f83..5a5655620dd9 100644 --- a/test/ELF/linkerscript/data-commands.s +++ b/test/ELF/linkerscript/data-commands.s @@ -44,6 +44,42 @@ # BE-NEXT: ff12ff11 22ff1122 3346ff11 22334455 # BE-NEXT: 667788 +# RUN: echo "MEMORY { \ +# RUN: rom (rwx) : ORIGIN = 0x00, LENGTH = 2K \ +# RUN: } \ +# RUN: SECTIONS { \ +# RUN: .foo : { \ +# RUN: *(.foo.1) \ +# RUN: BYTE(0x11) \ +# RUN: *(.foo.2) \ +# RUN: SHORT(0x1122) \ +# RUN: *(.foo.3) \ +# RUN: LONG(0x11223344) \ +# RUN: *(.foo.4) \ +# RUN: QUAD(0x1122334455667788) \ +# RUN: } > rom \ +# RUN: .bar : { \ +# RUN: *(.bar.1) \ +# RUN: BYTE(a + 1) \ +# RUN: *(.bar.2) \ +# RUN: SHORT(b) \ +# RUN: *(.bar.3) \ +# RUN: LONG(c + 2) \ +# RUN: *(.bar.4) \ +# RUN: QUAD(d) \ +# RUN: } > rom \ +# RUN: }" > %t-memory.script +# RUN: ld.lld -o %t-memory %t.o --script %t-memory.script +# RUN: llvm-objdump -s %t-memory | FileCheck %s --check-prefix=MEM + +# MEM: Contents of section .foo: +# MEM-NEXT: 0000 ff11ff22 11ff4433 2211ff88 77665544 +# MEM-NEXT: 0010 332211 + +# MEM: Contents of section .bar: +# MEM-NEXT: 0013 ff12ff22 11ff4633 2211ff88 77665544 +# MEM-NEXT: 0023 332211 + .global a a = 0x11 |