[lld] r288974 - Use the correct MaxPageSize.

Rui Ueyama via llvm-commits llvm-commits at lists.llvm.org
Wed Dec 7 12:43:12 PST 2016


Maybe we should rename Target->MaxPageSize Target->DefaultMaxPageSize to
prevent future programmers' errors?

On Wed, Dec 7, 2016 at 12:29 PM, Rafael Espindola via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> Author: rafael
> Date: Wed Dec  7 14:29:46 2016
> New Revision: 288974
>
> URL: http://llvm.org/viewvc/llvm-project?rev=288974&view=rev
> Log:
> Use the correct MaxPageSize.
>
> Now Target->MaxPageSize is only used as the default value of
> Config->MaxPageSize.
>
> Modified:
>     lld/trunk/ELF/Driver.cpp
>     lld/trunk/test/ELF/image-base.s
>
> Modified: lld/trunk/ELF/Driver.cpp
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Driver.
> cpp?rev=288974&r1=288973&r2=288974&view=diff
> ============================================================
> ==================
> --- lld/trunk/ELF/Driver.cpp (original)
> +++ lld/trunk/ELF/Driver.cpp Wed Dec  7 14:29:46 2016
> @@ -738,7 +738,7 @@ static uint64_t getImageBase(opt::InputA
>      error("-image-base: number expected, but got " + S);
>      return 0;
>    }
> -  if ((V % Target->MaxPageSize) != 0)
> +  if ((V % Config->MaxPageSize) != 0)
>      warn("-image-base: address isn't multiple of page size: " + S);
>    return V;
>  }
> @@ -758,6 +758,14 @@ template <class ELFT> void LinkerDriver:
>        ELFT::Is64Bits || Config->EMachine == EM_X86_64 ||
> Config->MipsN32Abi;
>    Config->Mips64EL =
>        (Config->EMachine == EM_MIPS && Config->EKind == ELF64LEKind);
> +
> +  // Initialize Config->MaxPageSize. The default value is defined by
> +  // each target.
> +  Config->MaxPageSize =
> +      getZOptionValue(Args, "max-page-size", Target->MaxPageSize);
> +  if (!isPowerOf2_64(Config->MaxPageSize))
> +    error("max-page-size: value isn't a power of 2");
> +
>    Config->ImageBase = getImageBase(Args);
>
>    // Default output filename is "a.out" by the Unix tradition.
> @@ -775,13 +783,6 @@ template <class ELFT> void LinkerDriver:
>    for (auto *Arg : Args.filtered(OPT_trace_symbol))
>      Symtab.trace(Arg->getValue());
>
> -  // Initialize Config->MaxPageSize. The default value is defined by
> -  // each target.
> -  Config->MaxPageSize =
> -      getZOptionValue(Args, "max-page-size", Target->MaxPageSize);
> -  if (!isPowerOf2_64(Config->MaxPageSize))
> -    error("max-page-size: value isn't a power of 2");
> -
>    // Add all files to the symbol table. This will add almost all
>    // symbols that we need to the symbol table.
>    for (InputFile *F : Files)
>
> Modified: lld/trunk/test/ELF/image-base.s
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/
> image-base.s?rev=288974&r1=288973&r2=288974&view=diff
> ============================================================
> ==================
> --- lld/trunk/test/ELF/image-base.s (original)
> +++ lld/trunk/test/ELF/image-base.s Wed Dec  7 14:29:46 2016
> @@ -3,6 +3,10 @@
>  # RUN: ld.lld -image-base=0x1000000 %t -o %t1
>  # RUN: llvm-readobj -program-headers %t1 | FileCheck %s
>
> +# RUN: ld.lld -image-base=0x1000 -z max-page-size=0x2000 %t -o %t1 2>&1 |
> FileCheck --check-prefix=WARN %s
> +# WARN: warning: -image-base: address isn't multiple of page size: 0x1000
> +
> +
>  .global _start
>  _start:
>    nop
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20161207/b39e7673/attachment.html>


More information about the llvm-commits mailing list