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 <ard.biesheuvel@linaro.org>
Acked-by: Mark Rutland <mark.rutland@arm.com>
Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@19303 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
Ard Biesheuvel 2015-12-16 12:57:14 +00:00 committed by abiesheuvel
parent 850ba6a953
commit e7e120133d
1 changed files with 5 additions and 2 deletions

View File

@ -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