From 0a337328411d5b3f37b169a83b6fee3f1726130f Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Thu, 26 May 2016 15:57:33 +0200 Subject: [PATCH] Support architectures with non-empty __USER_LABEL_PREFIX__ On some architectures (like Blackfin), a C symbol does not directly match with assembly symbols. The C symbol references are in fact all prefixed by a so-called "user label prefix". So when a symbol defined in an assembly file needs to be referenced from C, this symbol should be prefixed by the "user label prefix". This commit updates dtddata.S to take into account __USER_LABEL_PREFIX__ when it exists. Signed-off-by: Thomas Petazzoni --- src/dtddata.S | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/dtddata.S b/src/dtddata.S index ce51133..ad2a4db 100644 --- a/src/dtddata.S +++ b/src/dtddata.S @@ -30,17 +30,24 @@ /* from: http://www.linuxjournal.com/content/embedding-file-executable-aka-hello-world-version-5967#comment-348129 */ +#ifdef __USER_LABEL_PREFIX__ +#define CONCAT1(a, b) CONCAT2(a, b) +#define CONCAT2(a, b) a ## b +#define SYM(x) CONCAT1 (__USER_LABEL_PREFIX__, x) +#else +#endif + .macro binfile name file .p2align 2 - .globl \name\()_begin -\name\()_begin: + .globl SYM(\name\()_begin) +SYM(\name\()_begin): .incbin "\file" -\name\()_end: +SYM(\name\()_end): .byte 0 .p2align 2 - .globl \name\()_len -\name\()_len: - .int (\name\()_end - \name\()_begin) + .globl SYM(\name\()_len) +SYM(\name\()_len): + .int (SYM(\name\()_end) - SYM(\name\()_begin)) .endm .section .rodata -- 2.7.4