summaryrefslogtreecommitdiffstats
path: root/cpukit/libdl/rtl-mdreloc-h8300.c
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/libdl/rtl-mdreloc-h8300.c')
-rw-r--r--cpukit/libdl/rtl-mdreloc-h8300.c212
1 files changed, 0 insertions, 212 deletions
diff --git a/cpukit/libdl/rtl-mdreloc-h8300.c b/cpukit/libdl/rtl-mdreloc-h8300.c
deleted file mode 100644
index f1a52e4f9d..0000000000
--- a/cpukit/libdl/rtl-mdreloc-h8300.c
+++ /dev/null
@@ -1,212 +0,0 @@
-#include <sys/cdefs.h>
-
-#include <errno.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#include <rtems/rtl/rtl.h>
-#include "rtl-elf.h"
-#include "rtl-error.h"
-#include <rtems/rtl/rtl-trace.h>
-#include "rtl-unwind.h"
-#include "rtl-unwind-dw2.h"
-
-uint32_t
-rtems_rtl_elf_section_flags (const rtems_rtl_obj* obj,
- const Elf_Shdr* shdr)
-{
- return 0;
-}
-
-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)
-{
- (void) obj;
- (void) section;
- (void) name;
- (void) shdr;
- return flags;
-}
-
-bool
-rtems_rtl_elf_arch_section_alloc (const rtems_rtl_obj* obj,
- rtems_rtl_obj_sect* sect)
-{
- (void) obj;
- (void) sect;
- return false;
-}
-
-bool
-rtems_rtl_elf_arch_section_free (const rtems_rtl_obj* obj,
- rtems_rtl_obj_sect* sect)
-{
- (void) obj;
- (void) sect;
- return false;
-}
-
-bool
-rtems_rtl_elf_rel_resolve_sym (Elf_Word type)
-{
- return true;
-}
-
-size_t
-rtems_rtl_elf_relocate_tramp_max_size (void)
-{
- /*
- * Disable by returning 0.
- */
- return 0;
-}
-
-rtems_rtl_elf_rel_status
-rtems_rtl_elf_relocate_rela_tramp (rtems_rtl_obj* obj,
- const Elf_Rela* rela,
- const rtems_rtl_obj_sect* sect,
- const char* symname,
- const Elf_Byte syminfo,
- const Elf_Word symvalue)
-{
- (void) obj;
- (void) rela;
- (void) sect;
- (void) symname;
- (void) syminfo;
- (void) symvalue;
- return rtems_rtl_elf_rel_no_error;
-}
-
-rtems_rtl_elf_rel_status
-rtems_rtl_elf_relocate_rela (rtems_rtl_obj* obj,
- const Elf_Rela* rela,
- const rtems_rtl_obj_sect* sect,
- const char* symname,
- const Elf_Byte syminfo,
- const Elf_Word symvalue)
-{
- Elf_Addr *where;
- Elf_Word tmp;
-
- where = (Elf_Addr *)(sect->base + rela->r_offset);
-
- if (rtems_rtl_trace (RTEMS_RTL_TRACE_RELOC)) {
- printf("rela relocation type is %ld\n", ELF_R_TYPE(rela->r_info));
- printf("relocated address 0x%08lx\n", (Elf_Addr)where);
- }
-
- tmp = symvalue;
- switch (ELF_R_TYPE(rela->r_info)) {
- case R_TYPE(NONE):
- break;
-
- case R_TYPE(DIR16):
- *(uint16_t *)where += symvalue + rela->r_addend;
- break;
-
- case R_TYPE(DIR32):
- case R_TYPE(DIR32A16):
- *where += symvalue + rela->r_addend;
- break;
-
- case R_TYPE(DIR24A8):
- if (ELF32_R_SYM(rela->r_info))
- *where += symvalue + rela->r_addend;
- break;
-
- case R_TYPE(DIR24R8):
- where = (uint32_t *)((uint32_t)where - 1);
- *where = (*where & 0xff000000) | ((*where & 0xffffff) + symvalue + rela->r_addend);
- break;
-
- case R_TYPE(PCREL8):
- /* bcc instruction */
- tmp = symvalue + rela->r_addend - (Elf_Addr)where - 1;
- if (((Elf32_Sword)tmp > 0x7f) || ((Elf32_Sword)tmp < -(Elf32_Sword)0x80)){
- printf("PCREL8 overflow\n");
- return rtems_rtl_elf_rel_failure;
- } else {
- *(uint8_t *)where = tmp;
- }
- break;
-
- case R_TYPE(PCREL16):
- /* bcc instruction */
- tmp = symvalue + rela->r_addend - (Elf_Addr)where - 2;
- if (((Elf32_Sword)tmp > 0x7fff) || ((Elf32_Sword)tmp < -(Elf32_Sword)0x8000)){
- printf("PCREL16 overflow\n");
- return rtems_rtl_elf_rel_failure;
- } else {
- *(uint16_t *)where = tmp;
- }
- break;
-
- default:
- rtems_rtl_set_error (EINVAL, "rela type record not supported");
- printf("Unsupported reloc types\n");
- return rtems_rtl_elf_rel_failure;
- }
- return rtems_rtl_elf_rel_no_error;
-}
-
-rtems_rtl_elf_rel_status
-rtems_rtl_elf_relocate_rel_tramp (rtems_rtl_obj* obj,
- const Elf_Rel* rel,
- const rtems_rtl_obj_sect* sect,
- const char* symname,
- const Elf_Byte syminfo,
- const Elf_Word symvalue)
-{
- (void) obj;
- (void) rel;
- (void) sect;
- (void) symname;
- (void) syminfo;
- (void) symvalue;
- rtems_rtl_set_error (EINVAL, "rel type record not supported");
- return rtems_rtl_elf_rel_failure;
-}
-
-rtems_rtl_elf_rel_status
-rtems_rtl_elf_relocate_rel (rtems_rtl_obj* obj,
- const Elf_Rel* rel,
- const rtems_rtl_obj_sect* sect,
- const char* symname,
- const Elf_Byte syminfo,
- const Elf_Word symvalue)
-{
- (void) obj;
- (void) rel;
- (void) sect;
- (void) symname;
- (void) syminfo;
- (void) symvalue;
- rtems_rtl_set_error (EINVAL, "rel type record not supported");
- return rtems_rtl_elf_rel_failure;
-}
-
-bool
-rtems_rtl_elf_unwind_parse (const rtems_rtl_obj* obj,
- const char* name,
- uint32_t flags)
-{
- return rtems_rtl_elf_unwind_dw2_parse (obj, name, flags);
-}
-
-bool
-rtems_rtl_elf_unwind_register (rtems_rtl_obj* obj)
-{
- return rtems_rtl_elf_unwind_dw2_register (obj);
-}
-
-bool
-rtems_rtl_elf_unwind_deregister (rtems_rtl_obj* obj)
-{
- return rtems_rtl_elf_unwind_dw2_deregister (obj);
-}