Binutils 2.29 changed behavior of the adr instruction to always
add the thumb mode switch offset, which breaks usages where the
user is interested in the address of an internal symbol, instead
of a jump address. Binutils 3.31 fixed this by only adding the
offset when interworking is required.

As there are toolchains out there with broken binutils, it's better
to fix the code to work around the issue by not using the named
label.

Signed-off-by: Lucas Stach <[email protected]>
Tested-by: Robert Schwebel <[email protected]>
---
 arch/arm/crypto/sha256-core.S_shipped | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/crypto/sha256-core.S_shipped 
b/arch/arm/crypto/sha256-core.S_shipped
index 15e0f4ad1e68..4f9cf833b94b 100644
--- a/arch/arm/crypto/sha256-core.S_shipped
+++ b/arch/arm/crypto/sha256-core.S_shipped
@@ -92,7 +92,7 @@ sha256_block_data_order:
 #if __ARM_ARCH__<7
        sub     r3,pc,#8                @ sha256_block_data_order
 #else
-       adr     r3,sha256_block_data_order
+       adr     r3,.
 #endif
 #if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__)
        ldr     r12,.LOPENSSL_armcap
-- 
2.19.0


_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox

Reply via email to