Re: [PATCH 2/2] ArmVirtPkg ARM: make relocatable PrePi users build with CLANG35

Ard Biesheuvel

On 3 August 2016 at 12:00, Laszlo Ersek <> wrote:
On 08/03/16 10:21, Ard Biesheuvel wrote:
The clang developers have made a backward incompatible change to the
command line arguments, and have replaced '-mllvm -arm-use-movt=0'
with '-mno-movt'. This does not matter for most ARM platforms, and
therefore it has been removed from the default CLANG35/ARM CC flags
in patch 1c63516075b3 ("BaseTools CLANG35: drop problematic use-movt
and save-temps options"), but as it turns out, the relocatable PrePi
implementation used by ArmVirtQemuKernel and ArmVirtXen will fail to
build if it contains MOVT/MOVW pairs, due to the fact that these are
not runtime relocatable under ELF.

Since they are runtime relocatable under PE/COFF, and GenFw does the
right thing when encountering them, selectively controlling their
use is more appropriate than disabling them altogether. Therefore,
this patch adds the -mno-movt argument only for the platforms that
use the relocatable PrePi, and only for the module types that may
be pulled into its build.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <>
ArmVirtPkg/ArmVirtQemuKernel.dsc | 8 ++++++++
ArmVirtPkg/ArmVirtXen.dsc | 9 +++++++++
2 files changed, 17 insertions(+)

diff --git a/ArmVirtPkg/ArmVirtQemuKernel.dsc b/ArmVirtPkg/ArmVirtQemuKernel.dsc
index 01a1d9b4613b..6c536d9bbd2d 100644
--- a/ArmVirtPkg/ArmVirtQemuKernel.dsc
+++ b/ArmVirtPkg/ArmVirtQemuKernel.dsc
@@ -45,6 +45,9 @@ [LibraryClasses.ARM]

+ ArmLib|ArmPkg/Library/ArmLib/ArmV7/ArmV7LibSec.inf
How does this library resolution change relate to the stated purpose of
the patch?
It prevents a version of ArmLib being pulled into the build of the
relocatable PrePi that was built using the BuildOptions for DXE_DRIVER
type modules.


Join to automatically receive all group messages.