123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- 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
|