[PATCH] D65722: [ELF] Expand regions for gaps due to explicit address

Rui Ueyama via llvm-commits llvm-commits at lists.llvm.org
Fri Aug 9 01:07:47 PDT 2019


Thanks!

On Fri, Aug 9, 2019 at 10:25 AM Fangrui Song via Phabricator <
reviews at reviews.llvm.org> wrote:

> This revision was automatically updated to reflect the committed changes.
> Closed by commit rL368379: [ELF] Expand regions for gaps due to explicit
> address (authored by MaskRay, committed by ).
>
> Changed prior to commit:
>   https://reviews.llvm.org/D65722?vs=213516&id=214271#toc
>
> Repository:
>   rL LLVM
>
> CHANGES SINCE LAST ACTION
>   https://reviews.llvm.org/D65722/new/
>
> https://reviews.llvm.org/D65722
>
> Files:
>   lld/trunk/ELF/LinkerScript.cpp
>   lld/trunk/test/ELF/linkerscript/memory-gap-explicit-expr.test
>
>
> Index: lld/trunk/ELF/LinkerScript.cpp
> ===================================================================
> --- lld/trunk/ELF/LinkerScript.cpp
> +++ lld/trunk/ELF/LinkerScript.cpp
> @@ -772,6 +772,14 @@
>    if ((sec->flags & SHF_ALLOC) && sec->addrExpr)
>      setDot(sec->addrExpr, sec->location, false);
>
> +  // If the address of the section has been moved forward by an explicit
> +  // expression so that it now starts past the current curPos of the
> enclosing
> +  // region, we need to expand the current region to account for the space
> +  // between the previous section, if any, and the start of this section.
> +  if (ctx->memRegion && ctx->memRegion->curPos < dot)
> +    expandMemoryRegion(ctx->memRegion, dot - ctx->memRegion->curPos,
> +                       ctx->memRegion->name, sec->name);
> +
>    switchTo(sec);
>
>    if (sec->lmaExpr)
> Index: lld/trunk/test/ELF/linkerscript/memory-gap-explicit-expr.test
> ===================================================================
> --- lld/trunk/test/ELF/linkerscript/memory-gap-explicit-expr.test
> +++ lld/trunk/test/ELF/linkerscript/memory-gap-explicit-expr.test
> @@ -0,0 +1,18 @@
> +# REQUIRES: x86
> +
> +# RUN: echo '.section .aaa, "a"; .quad 0; .section .bbb, "a"; .quad 0;' \
> +# RUN:   | llvm-mc -filetype=obj -triple=x86_64 - -o %t.o
> +# RUN: ld.lld %t.o --script %s -o %t
> +# RUN: llvm-readelf -S %t | FileCheck %s
> +
> +# CHECK: .aaa PROGBITS 0000000000000000 001000 000008
> +# CHECK: .bbb PROGBITS 0000000000000014 001014 000008
> +
> +MEMORY {
> +  REGION (rwx) : ORIGIN = 0x0000, LENGTH = 0x100
> +}
> +
> +SECTIONS {
> +  .aaa 0 : { *(.aaa) } > REGION
> +  .bbb 0x14 : { *(.bbb) } > REGION
> +}
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190809/131460a3/attachment.html>


More information about the llvm-commits mailing list