diff mbox series

[v3,18/19] image: Add support for relocating crypto_algos in linker lists

Message ID 20210714220547.170371-19-mr.nuke.me@gmail.com
State Accepted
Commit b9826bf0c16ec225042c3fa760f8e22e6d9bc329
Delegated to: Tom Rini
Headers show
Series tools: Use a single config for Host OpenSSL (plus dependent patches) | expand

Commit Message

Alex G. July 14, 2021, 10:05 p.m. UTC
Function pointers from crypto_algos array are relocated, when
NEEDS_MANUAL_RELOC is set. This relocation doesn't happen if the algo
is placed in a linker list. Implement this relocation.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Acked-by: Michal Simek <michal.simek@xilinx.com>
---
 common/image-sig.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)
diff mbox series

Patch

diff --git a/common/image-sig.c b/common/image-sig.c
index d680bf7d98..fb0035524e 100644
--- a/common/image-sig.c
+++ b/common/image-sig.c
@@ -97,6 +97,19 @@  struct crypto_algo *image_get_crypto_algo(const char *full_name)
 	struct crypto_algo *crypto, *end;
 	const char *name;
 
+#if defined(CONFIG_NEEDS_MANUAL_RELOC)
+	static bool done;
+
+	if (!done) {
+		crypto = ll_entry_start(struct crypto_algo, cryptos);
+		end = ll_entry_end(struct crypto_algo, cryptos);
+		for (; crypto < end; crypto++) {
+			crypto->name += gd->reloc_off;
+			crypto->verify += gd->reloc_off;
+		}
+	}
+#endif
+
 	/* Move name to after the comma */
 	name = strchr(full_name, ',');
 	if (!name)