From e7e120133d5f5fa7871d20d3995da87826f172e6 Mon Sep 17 00:00:00 2001 From: Ard Biesheuvel Date: Wed, 16 Dec 2015 12:57:14 +0000 Subject: [PATCH] ArmPkg: rewrite vector table population macros Unfortunately, Clang does not support the use of symbol references in .org directives, and bails with the following error message when it encounters them: <...>:error: expected assembly-time absolute expression .org DebugAgentVectorTable + 0x000 So replace the .org arguments with absolute values, and move the whole vector table into a subsection with the appropriate alignment, and starting at .org 0x0. This gives the same protection with respect to entries that exceed 128 bytes, in a way that Clang supports as well. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel Acked-by: Mark Rutland Reviewed-by: Leif Lindholm git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@19303 6f19259b-4bc3-4df7-8a09-765794883524 --- ArmPkg/Include/Chipset/AArch64.h | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ArmPkg/Include/Chipset/AArch64.h b/ArmPkg/Include/Chipset/AArch64.h index 5e1653bcb6..e53605f641 100644 --- a/ArmPkg/Include/Chipset/AArch64.h +++ b/ArmPkg/Include/Chipset/AArch64.h @@ -119,15 +119,18 @@ #define ARM_VECTOR_LOW_A32_SERR 0x780 #define VECTOR_BASE(tbl) \ + .section .text.##tbl##,"ax"; \ .align 11; \ + .org 0x0; \ GCC_ASM_EXPORT(tbl); \ ASM_PFX(tbl): \ #define VECTOR_ENTRY(tbl, off) \ - .org ASM_PFX(tbl) + off + .org off #define VECTOR_END(tbl) \ - .org ASM_PFX(tbl) + 0x800 + .org 0x800; \ + .previous VOID EFIAPI