blob: abefcff2742bf1b65e34cf0121bb3570759f8446 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
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
|