[rtems-tools commit] linkers: Fix for targets with a small-data area
Sebastian Huber
sebh at rtems.org
Tue Jan 5 06:06:51 UTC 2016
Module: rtems-tools
Branch: master
Commit: f027f37661fc8c12ab07f92982f0c86e4e0717de
Changeset: http://git.rtems.org/rtems-tools/commit/?id=f027f37661fc8c12ab07f92982f0c86e4e0717de
Author: Sebastian Huber <sebastian.huber at embedded-brains.de>
Date: Mon Jan 4 11:15:37 2016 +0100
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.
---
linkers/rtems-syms.cpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/linkers/rtems-syms.cpp b/linkers/rtems-syms.cpp
index 97315ac..f0ffe94 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 );",
"",
@@ -105,7 +105,7 @@ static const char* c_rtl_call_body[] =
{
"{",
" rtems_rtl_base_sym_global_add (&rtems__rtl_base_globals[0],",
- " rtems__rtl_base_globals_size);",
+ " rtems__rtl_base_globals_size[0]);",
"}",
0
};
More information about the vc
mailing list