summaryrefslogtreecommitdiffstats
path: root/cpukit/libdl/rtl-mdreloc-powerpc.c
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2019-03-06 21:15:56 +1100
committerChris Johns <chrisj@rtems.org>2019-03-07 06:33:47 +1100
commitec1dd51aae0cbce0560b3d72a6f86c938340f2fc (patch)
treeac4868a4d7a9a6af5ee2b523231002142570006c /cpukit/libdl/rtl-mdreloc-powerpc.c
parenttestsuite: Make the OPERATION_COUNT a test configuration parameter. (diff)
downloadrtems-ec1dd51aae0cbce0560b3d72a6f86c938340f2fc.tar.bz2
libdl: Add small data support to the remaining PowerPC BSPs.
Updates #3687
Diffstat (limited to '')
-rw-r--r--cpukit/libdl/rtl-mdreloc-powerpc.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/cpukit/libdl/rtl-mdreloc-powerpc.c b/cpukit/libdl/rtl-mdreloc-powerpc.c
index 5c52823a0f..0a9703984d 100644
--- a/cpukit/libdl/rtl-mdreloc-powerpc.c
+++ b/cpukit/libdl/rtl-mdreloc-powerpc.c
@@ -50,11 +50,16 @@ get_sda_base (void)
static void*
get_sdata_start (void)
{
+#if _ARCH_PPC64
+ return NULL;
+#else
Elf_Addr addr;
GET_ADDR(__SDATA_START__, addr);
return (void*) addr;
+#endif
}
+#if !_ARCH_PPC64
static size_t
get_sdata_sbss_size (void)
{
@@ -74,6 +79,7 @@ get_sdata_libdl_size (void)
GET_ADDR(bsp_section_sdata_libdl_end, end);
return end - begin;
}
+#endif
uint32_t
rtems_rtl_elf_section_flags (const rtems_rtl_obj* obj,
@@ -89,6 +95,7 @@ rtems_rtl_elf_arch_parse_section (const rtems_rtl_obj* obj,
const Elf_Shdr* shdr,
const uint32_t flags)
{
+#if !_ARCH_PPC64
struct {
const char* label;
size_t len;
@@ -104,6 +111,7 @@ rtems_rtl_elf_arch_parse_section (const rtems_rtl_obj* obj,
if (strncmp (name, prefix[p].label, prefix[p].len) == 0)
return flags | RTEMS_RTL_OBJ_SECT_ARCH_ALLOC;
}
+#endif
return flags;
}
@@ -111,6 +119,10 @@ bool
rtems_rtl_elf_arch_section_alloc (const rtems_rtl_obj* obj,
rtems_rtl_obj_sect* sect)
{
+#if _ARCH_PPC64
+ rtems_rtl_set_error (ENOMEM, ".sdata no supported by ABI");
+ return false;
+#else
if (rtems_rtl_trace (RTEMS_RTL_TRACE_DETAIL))
printf ("rtl: section: arch: alloc: name=%s size=%zu flags=%08" PRIx32 \
" order=%i link=%d info=%d\n",
@@ -138,16 +150,19 @@ rtems_rtl_elf_arch_section_alloc (const rtems_rtl_obj* obj,
}
return true;
+#endif
}
bool
rtems_rtl_elf_arch_section_free (const rtems_rtl_obj* obj,
rtems_rtl_obj_sect* sect)
{
+#if !_ARCH_PPC64
if (rtems_rtl_trace (RTEMS_RTL_TRACE_DETAIL))
printf ("rtl: section: arch: free: name=%s size=%zu\n", sect->name, sect->size);
if (sdata != NULL)
rtems_rtl_bit_alloc_bfree (sdata, sect->base, sect->size);
+#endif
return true;
}