Ard:
Good to know --script option can be appended and work fine.
Thanks
Liming
-----Original Message-----
From: Ard Biesheuvel [mailto:***@linaro.org]
Sent: Thursday, July 02, 2015 1:05 PM
To: Justen, Jordan L
Cc: Gao, Liming; Liu, Yingke D; edk2-***@lists.sourceforge.net
Subject: Re: [PATCH] BaseTools: fix a syntax error in 4 KB aligned GNU ld linker script
Post by Jordan JustenPost by Gao, LimingAgree. We will follow this rule, apply the patch and push it
without any modification.
My point is that if there is a mistake, we should not bother to update
the log message to fix that mistake. Hopefully we can just be more
careful with the patch message if we stop thinking that we can go back
and fix it later. :)
Post by Gao, Liminggcc-4k is added for new UEFI2.5 Properties Table. When enable this
feature, gcc-4k script will be required for RUNTIME driver. It can
be configured in [BuildOptions] of DSC file for RUNTIME driver
only. We could update Ovmf to enable this feature, which can be
turned on/off by build flag. Is it OK to you?
Is there an example of how to enable it for a platform? Or, the
feature is still is not fully complete?
Hello Jordan,
As I reported here:
http://article.gmane.org/gmane.comp.bios.tianocore.devel/16433
I gave this a quick spin by adding this
----------8<------------
diff --git a/OvmfPkg/OvmfPkgX64.dsc b/OvmfPkg/OvmfPkgX64.dsc index e5fc90d2e610..7f06b51f65cf 100644
--- a/OvmfPkg/OvmfPkgX64.dsc
+++ b/OvmfPkg/OvmfPkgX64.dsc
@@ -48,6 +48,9 @@ [BuildOptions]
INTEL:*_*_X64_GENFW_FLAGS = --keepexceptiontable !endif
+[BuildOptions.X64.EDKII.DXE_RUNTIME_DRIVER]
+ GCC:*_*_*_DLINK_FLAGS =
--script=$(EDK_TOOLS_PATH)/Scripts/gcc-4K-align-ld-script
+
################################################################################
#
# SKU Identification section - list of all SKU IDs supported by this Platform.
----------8<------------
to the OvmfPkg build, and it appears to work fine.
There are a couple of things to be aware of, though.
- It depends on Laszlo's end-of-dxe series
http://thread.gmane.org/gmane.comp.bios.tianocore.devel/16304
- Adding subsequent --script arguments to GNU ld accumulates linker scripts instead of replacing them. This works correctly in this case since the linker scripts are identical except for the section alignments, but it is something to keep in mind.
- It crashes the Linux kernel at boot. The crash seems to be inside SetVirtualAddressMap (), which suggests that X64 Linux suffers from the same problem as AARCH64, i.e., that the virtual mapping does not preserve the offset between adjacent code and data regions. This is not required by the spec, though, so this feature essentially breaks backward compatibility.
The latter is a huge concern imo, since the fact that it breaks older OSes will impede the adoption of an otherwise very useful security feature.
Regards,
Ard.
Post by Jordan JustenPost by Gao, Liming-----Original Message-----
From: Justen, Jordan L
Sent: Thursday, July 2, 2015 6:42 AM
To: Liu, Yingke D; Ard Biesheuvel
Subject: RE: [PATCH] BaseTools: fix a syntax error in 4 KB aligned GNU ld linker script
Post by Liu, Yingke DHi Ard,
Thanks for the comments, I have updated the log message.
For future reference, I think you should not bother to update the log
message. It is a bad practice, and the git archive will not see the
updated log message anyhow. It should also be noted that it will not
be possible to update the commit message when git is the main
upstream repo.
I think it is best just to acknowledge the mistake, and remember it for next time.
I have a question. Where is the 4K script used? git grep gcc-4K shows
no references to it.
-Jordan
Post by Liu, Yingke D-----Original Message-----
Sent: Wednesday, July 01, 2015 16:12
To: Liu, Yingke D
Subject: Re: [PATCH] BaseTools: fix a syntax error in 4 KB aligned
GNU ld linker script
Hello Dennis,
Thanks for merging this.
Next time, could you please keep the subject line as well?
Post by Gao, LimingSubject: [PATCH] BaseTools: fix a syntax error in 4 KB aligned
GNU ld linker script
There needs to be a space between the output section name and the colon, i.e.,
as the subject line which looks a little silly imo
Thanks,
Ard.
Post by Gao, Liming-----Original Message-----
Sent: Tuesday, June 30, 2015 7:00 PM
Cc: Ard Biesheuvel
Subject: [PATCH] BaseTools: fix a syntax error in 4 KB aligned
GNU ld linker script
There needs to be a space between the output section name and the colon, i.e.,
.text : ALIGN(0x1000)
^
Fix this for all output sections
Contributed-under: TianoCore Contribution Agreement 1.0
---
BaseTools/Scripts/gcc-4K-align-ld-script | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/BaseTools/Scripts/gcc-4K-align-ld-script
b/BaseTools/Scripts/gcc-4K-align-ld-script
index 1f23079023a6..16cf623a3362 100644
--- a/BaseTools/Scripts/gcc-4K-align-ld-script
+++ b/BaseTools/Scripts/gcc-4K-align-ld-script
@@ -3,12 +3,12 @@ SECTIONS
{
/* . = 0 + SIZEOF_HEADERS; */
. = 0x280;
- .text: ALIGN(0x1000)
+ .text : ALIGN(0x1000)
{
*(.text .stub .text.* .gnu.linkonce.t.*)
. = ALIGN(0x20);
}
- .data: ALIGN(0x1000)
+ .data : ALIGN(0x1000)
{
*(
)
. = ALIGN(0x20);
}
- .eh_frame: ALIGN(0x1000)
+ .eh_frame : ALIGN(0x1000)
{
KEEP (*(.eh_frame))
}
- .got: ALIGN(0x1000)
+ .got : ALIGN(0x1000)
{
*(.got .got.*)
. = ALIGN(0x20);
}
- .rela: ALIGN(0x1000)
+ .rela : ALIGN(0x1000)
{
*(.rela .rela.*)
}
--
1.9.1