Branch: refs/heads/master
  Home:   https://github.com/tianocore/edk2
  Commit: 1c63516075b3d7e06a8919b030afdef3116d6373
      
https://github.com/tianocore/edk2/commit/1c63516075b3d7e06a8919b030afdef3116d6373
  Author: Ard Biesheuvel <ard.biesheu...@linaro.org>
  Date:   2016-08-02 (Tue, 02 Aug 2016)

  Changed paths:
    M BaseTools/Conf/tools_def.template

  Log Message:
  -----------
  BaseTools CLANG35: drop problematic use-movt and save-temps options

Some versions of Clang fail on every input file when using the
-save-temps options, and produces the following heplful error message:

  <unknown>:0: error: Undefined temporary symbol

Simply dropping the option for CLANG35 is the simplest way around this,
since the value of storing .i and .s files is dubious anyway.

Also, drop the arm-use-movt option, which does not appear to be
supported anymore by recent versions of clang.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheu...@linaro.org>
Acked-by: Jordan Justen <jordan.l.jus...@intel.com>


  Commit: ff54bcdf2e4e07d91e6568953d3af359fd6b5586
      
https://github.com/tianocore/edk2/commit/ff54bcdf2e4e07d91e6568953d3af359fd6b5586
  Author: Ard Biesheuvel <ard.biesheu...@linaro.org>
  Date:   2016-08-02 (Tue, 02 Aug 2016)

  Changed paths:
    M ArmVirtPkg/PrePi/Scripts/PrePi-PIE.lds

  Log Message:
  -----------
  ArmVirtPkg/ArmVirtPrePiUniCoreRelocatable: ignore .hash and .note sections

Newer versions of ld automatically emit .gnu.hash and .note.gnu.build-id
sections, which are not listed in the linker script, and will end up
breaking the build with an allocation conflict, e.g.,

  /usr/bin/aarch64-linux-gnu-ld: section .note.gnu.build-id loaded at
    [0000000000000000,0000000000000023] overlaps section .text loaded at
    [0000000000000000,0000000000017dbf]

Since we don't require or care about these sections, update the linker
script so that they are discarded. Note that this involves emitting the
.note.gnu.build-id section into a non-allocatable segment to prevent the
linker from noticing that it is being discarded (and subsequently
complaining about it)

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheu...@linaro.org>
Acked-by: Laszlo Ersek <ler...@redhat.com>
Acked-by: Jordan Justen <jordan.l.jus...@intel.com>


  Commit: befb3ba5150200ce94044c8c27e6e812d8e89680
      
https://github.com/tianocore/edk2/commit/befb3ba5150200ce94044c8c27e6e812d8e89680
  Author: Ard Biesheuvel <ard.biesheu...@linaro.org>
  Date:   2016-08-02 (Tue, 02 Aug 2016)

  Changed paths:
    M BaseTools/Conf/build_rule.template
    M BaseTools/Conf/tools_def.template

  Log Message:
  -----------
  BaseTools UNIXGCC ELFGCC CYGGCC: clone GCC build rule family into GCCLD

Before we can make non-backward compatible changes to the GCC build rules
regarding the use of the 'gcc' binary as the linker, clone the existing
GCC build rules into a 'GCCLD' build rule family, and move the legacy
toolchains UNIXGCC, CYGGCC, CYGGCCxASL and ELFGCC over to it.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheu...@linaro.org>
Reviewed-by: Jordan Justen <jordan.l.jus...@intel.com>
Reviewed-by: Liming Gao <liming....@intel.com>


  Commit: a1b8baccc30ba7c3911359e271b0e0a3ef56d501
      
https://github.com/tianocore/edk2/commit/a1b8baccc30ba7c3911359e271b0e0a3ef56d501
  Author: Ard Biesheuvel <ard.biesheu...@linaro.org>
  Date:   2016-08-02 (Tue, 02 Aug 2016)

  Changed paths:
    M ArmVirtPkg/PrePi/ArmVirtPrePiUniCoreRelocatable.inf
    M BaseTools/Conf/build_rule.template
    M BaseTools/Conf/tools_def.template
    M EmulatorPkg/Unix/Host/Host.inf

  Log Message:
  -----------
  BaseTools GCC: use 'gcc' as the linker command for GCC44 and later

To accommodate upcoming GCCx toolchain versions that require 'gcc' to
be used as the linker in order to support LTO, switch GCC44 and later
(including CLANG35) to a new DLINK build rule that invokes 'gcc' as the
linker instead of 'ld'. Since gcc expects its command line arguments in
a different format, and expects arguments that it needs to pass to the
linker to be prefixed with '-Wl,', this involves changes to most of the
DLINK_FLAGS definitions in tools_def.template, as well as some changes to
module .INF files that set their own linker options.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheu...@linaro.org>
Reviewed-by: Jordan Justen <jordan.l.jus...@intel.com>
Reviewed-by: Liming Gao <liming....@intel.com>


  Commit: e1458aaded8e34b0c74c1a17ac1dc3765d97c082
      
https://github.com/tianocore/edk2/commit/e1458aaded8e34b0c74c1a17ac1dc3765d97c082
  Author: Ard Biesheuvel <ard.biesheu...@linaro.org>
  Date:   2016-08-02 (Tue, 02 Aug 2016)

  Changed paths:
    A ArmPkg/Library/GccLto/liblto-aarch64.a
    A ArmPkg/Library/GccLto/liblto-aarch64.s
    A ArmPkg/Library/GccLto/liblto-arm.a
    A ArmPkg/Library/GccLto/liblto-arm.s

  Log Message:
  -----------
  ArmPkg: add prebuilt glue binaries for GCC5 LTO support

GCC in LTO mode interoperates poorly with non-standard libraries that
provide implementations of compiler intrinsics such as memcpy/memset
or the stack protector entry points. Such libraries need to be built
in non-LTO mode, and then referenced explicitly on the linker command
line using a -plugin-opt=-pass-through=-lxxx linker option.

However, if these intrinsics are also referenced directly, the LTO
version of the code will be pulled in, and will happily satisfy all
other references to the same symbol.

So add a pair of glue libraries, for ARM and AARCH64, that reference
the known intrinsics. Since the binaries live under ArmPkg directly,
we can reference them in tools_def.txt. Under LD garbage collection,
the object itself will be pruned, and so will the intrinsics that end
up unused by the module.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheu...@linaro.org>
Acked-by: Jordan Justen <jordan.l.jus...@intel.com>
Reviewed-by: Leif Lindholm <leif.lindh...@linaro.org>


  Commit: 7fd5d619806df5e5b9bdbd0cfe14580040ea3615
      
https://github.com/tianocore/edk2/commit/7fd5d619806df5e5b9bdbd0cfe14580040ea3615
  Author: Ard Biesheuvel <ard.biesheu...@linaro.org>
  Date:   2016-08-02 (Tue, 02 Aug 2016)

  Changed paths:
    M BaseTools/Scripts/GccBase.lds

  Log Message:
  -----------
  BaseTools GCC: drop GNU notes section from EFI image

Recent versions of GNU ld automatically emit a .notes section into
the ELF binary containing a build id. Since this is an allocatable
section by default, it will be identified by GenFw as a section
that requires PE/COFF conversion, which may cause sections to be
moved around unexpectedly.

So retain the section, but tag it as INFO, which tells the linker
that it should not be accounted for in the binary's memory layout.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheu...@linaro.org>
Acked-by: Jordan Justen <jordan.l.jus...@intel.com>
Reviewed-by: Liming Gao <liming....@intel.com>


  Commit: 4a8466d4babab43ee6ee46e37c2abb8248661ad5
      
https://github.com/tianocore/edk2/commit/4a8466d4babab43ee6ee46e37c2abb8248661ad5
  Author: Ard Biesheuvel <ard.biesheu...@linaro.org>
  Date:   2016-08-02 (Tue, 02 Aug 2016)

  Changed paths:
    M BaseTools/Conf/tools_def.template
    M MdePkg/Include/X64/ProcessorBind.h

  Log Message:
  -----------
  BaseTools GCC: introduce GCC5 toolchain to support GCC v5.x in LTO mode

This adds support for GCC 5.x in LTO mode for IA32, X64, ARM and
AARCH64. Due to the fact that the GCC project switched to a new
numbering scheme where the first digit is now incremented for every
major release, the new toolchain is simply called 'GCC5', and is
intended to support all GCC v5.x releases.

Since IA32 and X64 enable compiler optimizations (-Os) for both DEBUG
and RELEASE builds, LTO support is equally enabled for both targets.
On ARM and AARCH64, DEBUG builds are not optimized, and so the LTO
optimizations are only enabled for RELEASE.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheu...@linaro.org>
Reviewed-by: Jordan Justen <jordan.l.jus...@intel.com>
Reviewed-by: Liming Gao <liming....@intel.com>


  Commit: 026a82abf0bd6268d32f4559dbede00715264f74
      
https://github.com/tianocore/edk2/commit/026a82abf0bd6268d32f4559dbede00715264f74
  Author: Ard Biesheuvel <ard.biesheu...@linaro.org>
  Date:   2016-08-02 (Tue, 02 Aug 2016)

  Changed paths:
    M BaseTools/Source/C/GenFw/Elf64Convert.c

  Log Message:
  -----------
  BaseTools/GenFw AARCH64: convert ADRP to ADR instructions if binary size 
allows it

The ADRP instruction in the AArch64 ISA requires the link time and load time
offsets of a binary to be equal modulo 4 KB. The reason is that this instruction
always produces a multiple of 4 KB, and relies on a subsequent ADD or LDR
instruction to set the offset into the page. The resulting symbol reference
only produces the correct value if the symbol in question resides at that
exact offset into the page, and so loading the binary at arbitrary offsets
is not possible.

Due to the various levels of padding when packing FVs into FVs into FDs, this
alignment is very costly for XIP code, and so we would like to relax this
alignment requirement if possible.

Given that symbols that are sufficiently close (within 1 MB) of the reference
can also be reached using an ADR instruction which does not suffer from this
alignment issue, let's replace ADRP instructions with ADR after linking if
the offset can be encoded in this instruction's immediate field. Note that
this only makes sense if the section alignment is < 4 KB. Otherwise,
replacing the ADRP has no benefit, considering that the subsequent ADD or
LDR instruction is retained, and that micro-architectures are more likely
to be optimized for ADRP/ADD pairs (i.e., via micro op fusing) than for
ADR/ADD pairs, which are non-typical.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheu...@linaro.org>
Reviewed-by: Leif Lindholm <leif.lindh...@linaro.org>


  Commit: b89919ee8f8c9441c3514a3c5f352c0901103569
      
https://github.com/tianocore/edk2/commit/b89919ee8f8c9441c3514a3c5f352c0901103569
  Author: Ard Biesheuvel <ard.biesheu...@linaro.org>
  Date:   2016-08-02 (Tue, 02 Aug 2016)

  Changed paths:
    M BaseTools/Conf/build_rule.template
    M BaseTools/Conf/tools_def.template

  Log Message:
  -----------
  BaseTools AARCH64: override XIP module linker alignment to 32 bytes

Now that GenFw converts small code model ADRP instructions to ADR on
the fly, we can reduce the alignment for XIP modules, where large
alignment values may cause considerable waste of flash space due to
excessive padding. This limits the module size to 1 MB, but this is
not a concern in practice.

So set the XIP section alignment to 0x20 for DEBUG_GCC49, DEBUG_GCC5
and *_CLANG35, all of which use the small code model.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheu...@linaro.org>
Reviewed-by: Leif Lindholm <leif.lindh...@linaro.org>


Compare: https://github.com/tianocore/edk2/compare/28ade7b802e0...b89919ee8f8c
------------------------------------------------------------------------------
_______________________________________________
edk2-commits mailing list
edk2-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-commits

Reply via email to