diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-01-04 11:15:37 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-01-05 07:05:52 +0100 |
commit | f027f37661fc8c12ab07f92982f0c86e4e0717de (patch) | |
tree | fee5caaa9d54e875e0c8ccc10ea3e021b27bf05e | |
parent | linkers: Avoid cast (diff) | |
download | rtems-tools-f027f37661fc8c12ab07f92982f0c86e4e0717de.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.cpp | 4 |
1 files 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 }; |