| From 0a337328411d5b3f37b169a83b6fee3f1726130f Mon Sep 17 00:00:00 2001 |
| From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> |
| 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 <thomas.petazzoni@free-electrons.com> |
| --- |
| 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 |
| |