From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-it0-x22a.google.com (mail-it0-x22a.google.com [IPv6:2607:f8b0:4001:c0b::22a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 2D5FA1A1DE9 for ; Tue, 13 Sep 2016 07:43:43 -0700 (PDT) Received: by mail-it0-x22a.google.com with SMTP id n143so40544714ita.1 for ; Tue, 13 Sep 2016 07:43:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=IQ0zFO65+JyYUXsLE+QaSD8lEYet63fXvV03cxFJ9wQ=; b=NPLQES2pRg2C9j/YuF/AOLR/3Q/BwrTudFdR30UjJk65vw9g/j7PUresivPSziILmZ 7BOe8b3AQRJpzMVs6ig1qHauo6qit/oCMzzaR+XffQwQ4fBuHF1XWSqlquvU/SOIZIYK AudjaZeTF/4FIQTr4AgOM9LX9ZZhyn5bmhZRg= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=IQ0zFO65+JyYUXsLE+QaSD8lEYet63fXvV03cxFJ9wQ=; b=X4lKnc1Oya09lKHb+LajhlJfJN440p0ve+tqYwwzZVihDfCsRuW2FzqH9Hmp8Yu42Z nBop9XN5PhIpSNI+rZWxzXHjHgelXVEp/1SlRkYEAijOq5KkShttxEHMn3XbJslGaEVn AsrxNVuP5lSRmqKNaW/4cGgE8Mf3Z2KVYWTrenBoBmeYm+BVFX6OtApLAmrfs+CHZ3i6 5vz4ULN3HcGcVrTrV/Ilx0LiH7DWwULvKPkyjhq4QJhxzwOoT5CkOkPw5rQhGo8z7t4m ry5CDICZohOuG/THi/fXWpFRAIibnmxWzHY3YrhnGKWtVKQcuUJcZtnxRjw9edbwMUWL Wznw== X-Gm-Message-State: AE9vXwNbDF80INDQuu+XWfyNW1yQfPW7lE9SJi2AH9nRN6BLMJyb2tFxgQxVgjG10JIP9hTUnG6KI07aXMTj2wVZ X-Received: by 10.107.9.32 with SMTP id j32mr1929637ioi.153.1473777822287; Tue, 13 Sep 2016 07:43:42 -0700 (PDT) MIME-Version: 1.0 Received: by 10.36.204.195 with HTTP; Tue, 13 Sep 2016 07:43:41 -0700 (PDT) In-Reply-To: References: <20160913140236.GC540@e102648.cambridge.arm.com> From: Ard Biesheuvel Date: Tue, 13 Sep 2016 15:43:41 +0100 Message-ID: To: Achin Gupta Cc: edk2-devel-01 Subject: Re: Relocation fixup during AARCH64 SEC PE-COFF generation? X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Sep 2016 14:43:43 -0000 Content-Type: text/plain; charset=UTF-8 On 13 September 2016 at 15:12, Ard Biesheuvel wrote: > On 13 September 2016 at 15:03, Achin Gupta wrote: >> Hi All, >> >> Upon entry into UEFI, the ArmPlatformPkg/PrePi/PeiUniCore.inf SEC module >> executes directly from within the firmware volume. The FV would typically be >> loaded in DRAM by ARM Trusted Firmware. The rule in ArmJuno.fdf for SEC file >> types converts a PE-COFF module into a stripped Terse executable as follows: >> >> [Rule.AARCH64.SEC] >> FILE SEC = $(NAMED_GUID) RELOCS_STRIPPED FIXED { >> TE TE Align = Auto $(INF_OUTPUT)/$(MODULE_NAME).efi >> } >> >> The GCC_ARM_AARCH64_DLINK_COMMON variable includes the "--emit-relocs" option >> when the ELF image is generated. Since the SEC module is able to "XIP" from the >> within FV, this means that the relocations have to be fixed up at link time >> before the TE image is created. >> > > Correct. GenFv relocates the image based on the runtime address of the > firmware volume. > >> It seems to me that in GenFw.c, at least the static relocations are fixed up >> when an ELF image is converted to PE-COFF. Can someone confirm if I am correct >> in understanding that dynamic relocations will be left as is in the PE-COFF >> image while static relocations will be fixed up? >> > > We usually don't emit dynamic relocations, since we are not linking > shared objects. ... or more specifically, all absolute static relocations are converted into PE/COFF base relocations, all relative static relocations are validated against the PE/COFF layout (which we keep 1:1 identical with the ELF section layout), and all dynamic relocations are ignored. Note that this implies that proxy generating static relocations are rejected, since --emit-relocs does not produce any output for the proxies.