From mboxrd@z Thu Jan 1 00:00:00 1970 From: dave.martin@linaro.org (Dave Martin) Date: Wed, 1 Jun 2011 11:48:42 +0100 Subject: [PATCH REPOST] ARM: Thumb-2: Relax relocation requirements for non-function symbols In-Reply-To: References: <1306859269-21304-1-git-send-email-dave.martin@linaro.org> Message-ID: <20110601104842.GA24856@arm.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Wed, Jun 01, 2011 at 10:27:14AM +0100, Catalin Marinas wrote: > On 31 May 2011 17:27, Dave Martin wrote: > > The "Thumb bit" of a symbol is only really meaningful for function > > symbols (STT_FUNC). > > > > However, sometimes a branch is relocated against a non-function > > symbol; for example, PC-relative branches to anonymous assembler > > local symbols are typically fixed up against the start-of-section > > symbol, which is not a function symbol. ?Some inline assembler > > generates references of this type, such as fixup code generated by > > macros in . > > > > The existing relocation code for R_ARM_THM_CALL/R_ARM_THM_JUMP24 > > interprets this case as an error, because the target symbol appears > > to be an ARM symbol; but this is really not the case, since the > > target symbol is just a base in these cases. ?The addend defines > > the precise offset to the target location, but since the addend is > > encoded in a non-interworking Thumb branch instruction, there is no > > explicit Thumb bit in the addend. ?Because these instructions never > > interwork, the implied Thumb bit in the addend is 1, and the > > destination is Thumb by definition. > > > > This patch removes the extraneous Thumb bit check for non-function > > symbols, enabling modules containing the affected relocation types > > to be loaded. ?No modification to the actual relocation code is > > required, since this code does not take bit[0] of the > > location->destination offset into account in any case. > > > > Function symbols are always checked for interworking conflicts, as > > before. > > > > Signed-off-by: Dave Martin > > Acked-by: Catalin Marinas Thanks ---Dave