From fd708fe0e1f813d6faf02d92ec5e8d73ce876ed1 Mon Sep 17 00:00:00 2001 From: Ard Biesheuvel Date: Mon, 8 Jun 2020 13:02:12 +0200 Subject: [PATCH] ArmVirtPkg: add FDF rule for self-relocating PrePi In preparation for making the self-relocating PrePi use the ordinary BasePeCoffLib routines for relocating the image in place in memory at start, add a special FDF rule that builds SEC modules as PE32 images with the relocation metadata preserved. Signed-off-by: Ard Biesheuvel Acked-by: Jiewen Yao Reviewed-by: Laszlo Ersek Acked-by: Sami Mujawar --- ArmVirtPkg/ArmVirtQemuKernel.fdf | 2 +- ArmVirtPkg/ArmVirtRules.fdf.inc | 5 +++++ ArmVirtPkg/ArmVirtXen.fdf | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ArmVirtPkg/ArmVirtQemuKernel.fdf b/ArmVirtPkg/ArmVirtQemuKernel.fdf index 72fc8dd698..55e33aba0d 100644 --- a/ArmVirtPkg/ArmVirtQemuKernel.fdf +++ b/ArmVirtPkg/ArmVirtQemuKernel.fdf @@ -136,7 +136,7 @@ READ_STATUS = TRUE READ_LOCK_CAP = TRUE READ_LOCK_STATUS = TRUE - INF ArmVirtPkg/PrePi/ArmVirtPrePiUniCoreRelocatable.inf + INF RuleOverride = SELF_RELOC ArmVirtPkg/PrePi/ArmVirtPrePiUniCoreRelocatable.inf FILE FV_IMAGE = 9E21FD93-9C72-4c15-8C4B-E77F1DB2D792 { SECTION GUIDED EE4E5898-3914-4259-9D6E-DC7BD79403CF PROCESSING_REQUIRED = TRUE { diff --git a/ArmVirtPkg/ArmVirtRules.fdf.inc b/ArmVirtPkg/ArmVirtRules.fdf.inc index 63de26abe0..b8ec040d23 100644 --- a/ArmVirtPkg/ArmVirtRules.fdf.inc +++ b/ArmVirtPkg/ArmVirtRules.fdf.inc @@ -39,6 +39,11 @@ TE TE Align = Auto $(INF_OUTPUT)/$(MODULE_NAME).efi } +[Rule.Common.SEC.SELF_RELOC] + FILE SEC = $(NAMED_GUID) { + TE TE Align = Auto $(INF_OUTPUT)/$(MODULE_NAME).efi + } + [Rule.Common.PEI_CORE] FILE PEI_CORE = $(NAMED_GUID) FIXED { TE TE Align = Auto $(INF_OUTPUT)/$(MODULE_NAME).efi diff --git a/ArmVirtPkg/ArmVirtXen.fdf b/ArmVirtPkg/ArmVirtXen.fdf index 6a97bceeac..f708878f49 100644 --- a/ArmVirtPkg/ArmVirtXen.fdf +++ b/ArmVirtPkg/ArmVirtXen.fdf @@ -233,7 +233,7 @@ READ_STATUS = TRUE READ_LOCK_CAP = TRUE READ_LOCK_STATUS = TRUE - INF ArmVirtPkg/PrePi/ArmVirtPrePiUniCoreRelocatable.inf + INF RuleOverride = SELF_RELOC ArmVirtPkg/PrePi/ArmVirtPrePiUniCoreRelocatable.inf FILE FV_IMAGE = 9E21FD93-9C72-4c15-8C4B-E77F1DB2D792 { SECTION GUIDED EE4E5898-3914-4259-9D6E-DC7BD79403CF PROCESSING_REQUIRED = TRUE {