BaseTools: GCC: move most AutoGen.obj contents back to .data section
authorArd Biesheuvel <ard.biesheuvel@linaro.org>
Thu, 23 Feb 2017 18:30:51 +0000 (18:30 +0000)
committerLaszlo Ersek <lersek@redhat.com>
Fri, 24 Feb 2017 10:27:56 +0000 (11:27 +0100)
commit3cf41b8728a39d1e0d3ee7ae1a1be5f4ecf3b8d9
treef3ea1e072d04f99871b4025e770982cb2e0ef489
parent37322be5bc8a8196335669c67b7a2fbf529a7f1c
BaseTools: GCC: move most AutoGen.obj contents back to .data section

The generated AutoGen.c files mostly contain read-only data, but due to
lacking annotations, all of it is emitted into the .data section by the
compiler.

Given that GUIDs are UEFI's gaffer tape, having writable GUIDs is a
security hazard, and this was the main rationale for putting AutoGen.obj
in the .text section. However, as it turns out, patchable PCDs are emitted
there as well, which can legally be modified at runtime.

So update the wildcard pattern to only match g...Guid sections, and move
everything else back to .data (Note that this relies on -fdata-sections,
without that option, everything is emitted into .data)

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Tested-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
Fixes: 233bd25b000f92fc4bbe181fa48edcd72808de8e
[lersek@redhat.com: add reference to previous commit being fixed up]
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
BaseTools/Scripts/GccBase.lds