summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2016-01-04 11:15:37 +0100
committerChris Johns <chrisj@rtems.org>2016-03-21 17:44:38 +1100
commite6a06751cc58127a52e2948cc8b0349692f6f74b (patch)
treeca63e68a832fe7a0d4aaa4c20dfcd6d6e2105686
parenttester: Fix reraising an exception with Python2 and Python3. (diff)
downloadrtems-tools-e6a06751cc58127a52e2948cc8b0349692f6f74b.tar.bz2
linkers: Fix for targets with a small-data area
On certain targets (e.g. PowerPC) global data below a certain threshold (e.g. 8 bytes) may resided in a special memory area, the small-data area. This allows more efficient load/store operations. Placing such data into the wrong section (e.g. .rodata) leads to relocation errors during link-time. See test program libtests/dl02 in the RTEMS testsuite. Using an array of unspecified size prevents that the compiler assumes that a certain variable is in the small-data area.
-rw-r--r--linkers/rtems-syms.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/linkers/rtems-syms.cpp b/linkers/rtems-syms.cpp
index c8f54ae..a017ffa 100644
--- a/linkers/rtems-syms.cpp
+++ b/linkers/rtems-syms.cpp
@@ -60,7 +60,7 @@ static const char* c_header[] =
" */",
"",
"extern const unsigned char rtems__rtl_base_globals[];",
- "extern const unsigned int rtems__rtl_base_globals_size;",
+ "extern const unsigned int rtems__rtl_base_globals_size[];",
"",
"void rtems_rtl_base_sym_global_add (const unsigned char* , unsigned int );",
"",
@@ -104,8 +104,8 @@ static const char* c_trailer[] =
static const char* c_rtl_call_body[] =
{
"{",
- " rtems_rtl_base_sym_global_add ((const unsigned char*) &rtems__rtl_base_globals,",
- " rtems__rtl_base_globals_size);",
+ " rtems_rtl_base_sym_global_add ((const unsigned char*) &rtems__rtl_base_globals[0],",
+ " rtems__rtl_base_globals_size[0]);",
"}",
0
};