public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: Ard Biesheuvel <ard.biesheuvel@linaro.org>
To: edk2-devel@lists.01.org
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>,
	Michael D Kinney <michael.d.kinney@intel.com>,
	Liming Gao <liming.gao@intel.com>, Ruiyu Ni <ruiyu.ni@intel.com>,
	Hao Wu <hao.a.wu@intel.com>,
	Leif Lindholm <leif.lindholm@linaro.org>,
	Jordan Justen <jordan.l.justen@intel.com>,
	Andrew Fish <afish@apple.com>, Star Zeng <star.zeng@intel.com>,
	Eric Dong <eric.dong@intel.com>, Laszlo Ersek <lersek@redhat.com>,
	Zenith432 <zenith432@users.sourceforge.net>,
	"Shi, Steven" <steven.shi@intel.com>
Subject: [RFC PATCH 01/11] MdePkg/ProcessorBind.h: define macro to decorate module entry points
Date: Tue, 12 Jun 2018 17:22:56 +0200	[thread overview]
Message-ID: <20180612152306.25998-2-ard.biesheuvel@linaro.org> (raw)
In-Reply-To: <20180612152306.25998-1-ard.biesheuvel@linaro.org>

Add a macro EFI_ENTRYPOINT that we will use to decorate functions that
serve as the entry points for EFI modules. This is necessary to work
around a limitation in GCC, which may prune such routines from the
ELF binary if they are defined with hidden visibility, even if they
are explicitly referenced as the entry point on the linker command
line.

The hidden visibility is required to inform the compiler that, even
though we are building the code in PIE mode, we are only doing so
to get code that can run anywhere in the address space without
requiring 64-bit wide absolute symbol references, and we are not
interested in other things that PIE code typically provides, such
as symbol preemptability and a reduced CoW footprint due to the
fact that all dynamic relocations target the same area in the binary.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
---
 MdePkg/Include/Base.h | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/MdePkg/Include/Base.h b/MdePkg/Include/Base.h
index 4f7bd4449c36..eee48dcd4b29 100644
--- a/MdePkg/Include/Base.h
+++ b/MdePkg/Include/Base.h
@@ -274,6 +274,13 @@ VERIFY_SIZE_OF (__VERIFY_UINT32_ENUM_SIZE, 4);
   #define PACKED
 #endif
 
+#ifndef EFI_ENTRYPOINT
+  //
+  // Set to empty value if not already set by the arch-specific header
+  //
+  #define EFI_ENTRYPOINT
+#endif
+
 ///
 /// 128 bit buffer containing a unique identifier value.
 /// Unless otherwise specified, aligned on a 64 bit boundary.
-- 
2.17.1



  reply	other threads:[~2018-06-12 15:23 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-12 15:22 [RFC PATCH 00/11] GCC/X64: use hidden visibility for LTO PIE code Ard Biesheuvel
2018-06-12 15:22 ` Ard Biesheuvel [this message]
2018-06-12 15:22 ` [RFC PATCH 02/11] DuetPkg: annotate module entry points with EFI_ENTRYPOINT Ard Biesheuvel
2018-06-12 15:22 ` [RFC PATCH 03/11] EdkCompatibilityPkg: " Ard Biesheuvel
2018-06-12 15:22 ` [RFC PATCH 04/11] EmbeddedPkg: " Ard Biesheuvel
2018-06-12 15:23 ` [RFC PATCH 05/11] EmulatorPkg: " Ard Biesheuvel
2018-06-12 15:23 ` [RFC PATCH 06/11] IntelFrameWorkPkg: " Ard Biesheuvel
2018-06-12 15:23 ` [RFC PATCH 07/11] MdeModulePkg: " Ard Biesheuvel
2018-06-12 15:23 ` [RFC PATCH 08/11] MdePkg: " Ard Biesheuvel
2018-06-12 15:23 ` [RFC PATCH 09/11] Nt32Pkg: " Ard Biesheuvel
2018-06-12 15:23 ` [RFC PATCH 10/11] UefiCpuPkg: " Ard Biesheuvel
2018-06-12 15:23 ` [RFC PATCH 11/11] MdePkg/ProcessorBind.h X64: drop non-LTO limitation on visiblity override Ard Biesheuvel
2018-06-12 18:33 ` [RFC PATCH 00/11] GCC/X64: use hidden visibility for LTO PIE code Laszlo Ersek
2018-06-12 18:58   ` Ard Biesheuvel
2018-06-13  2:08 ` Shi, Steven

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180612152306.25998-2-ard.biesheuvel@linaro.org \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox