summaryrefslogtreecommitdiffstats
path: root/cpukit/libdl/rtl-elf.h
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2019-02-02 15:09:53 +1100
committerChris Johns <chrisj@rtems.org>2019-02-09 10:06:34 +1100
commit6c9f0176a916cdbe88e04417e7aa1405d80c500f (patch)
tree1846dd800a123e682f15e49a893426a9a6a064c4 /cpukit/libdl/rtl-elf.h
parentlibdl: Add support for large memory programs (diff)
downloadrtems-6c9f0176a916cdbe88e04417e7aa1405d80c500f.tar.bz2
libdl: Add powerpc large memory and small data support.
- Add support for architecure sections that can be handled by the architecture back end. - Add trampoline/fixup support for PowerPC. This means the PowerPC now supports large memory loading of applications. - Add a bit allocator to manage small block based regions of memory. - Add small data (sdata/sbss) support for the PowerPC. The support makes the linker allocated small data region of memory a global resource available to libdl loaded object files. Updates #3687 Updates #3685
Diffstat (limited to 'cpukit/libdl/rtl-elf.h')
-rw-r--r--cpukit/libdl/rtl-elf.h41
1 files changed, 40 insertions, 1 deletions
diff --git a/cpukit/libdl/rtl-elf.h b/cpukit/libdl/rtl-elf.h
index d781bfb3a4..73d1e01bb1 100644
--- a/cpukit/libdl/rtl-elf.h
+++ b/cpukit/libdl/rtl-elf.h
@@ -70,7 +70,7 @@ typedef struct rtems_rtl_mdreloc_trmap
/**
* Architecture specific handler to translate unknown section flags to RTL
- * section flags.
+ * section flags. If this function returns 0 an error is raised.
*
* @param obj The object file being relocated.
* @param shdr The ELF section header.
@@ -81,6 +81,45 @@ uint32_t rtems_rtl_elf_section_flags (const rtems_rtl_obj* obj,
const Elf_Shdr* shdr);
/**
+ * Architecture specific handler to parse the section and add any flags that
+ * may be need to handle the section.
+ *
+ * @param obj The object file being relocated.
+ * @param seciton The section index.
+ * @param name The name of the section
+ * @param shdr The ELF section header.
+ * @param flags The standard ELF parsed flags.
+ * @retval uint32_t Extra RTL object file flags.
+ */
+uint32_t rtems_rtl_elf_arch_parse_section (const rtems_rtl_obj* obj,
+ int section,
+ const char* name,
+ const Elf_Shdr* shdr,
+ const uint32_t flags);
+
+/**
+ * Architecture specific handler to allocate a section. Some sections are
+ * specific to an architecture and need special allocators.
+ *
+ * @param obj The object file being relocated.
+ * @param sect The section data.
+ * @retval true The allocator was successful.
+ */
+bool rtems_rtl_elf_arch_section_alloc (const rtems_rtl_obj* obj,
+ rtems_rtl_obj_sect* sect);
+
+/**
+ * Architecture specific handler to free a section. Some sections are
+ * specific to an architecture and need special allocators.
+ *
+ * @param obj The object file being relocated.
+ * @param sect The section data.
+ * @retval true The allocator was successful.
+ */
+bool rtems_rtl_elf_arch_section_free (const rtems_rtl_obj* obj,
+ rtems_rtl_obj_sect* sect);
+
+/**
* Architecture specific handler to check is a relocation record's type is
* required to resolve a symbol.
*