[PATCH 4/6] H8/300 relocation fix

Waldemar Brodkorb <[email protected]> Thu, 31 Dec 2015 00:55:46 +0100
Newsgroups gmane.linux.uclinux.devel
Message-ID <[email protected]>
From: Yoshinori Sato <[email protected]>

Add new relocation R_H8_DISP32A16.
hi-byte clear on R_H8_DIR32 R_H8_DIR24A8 R_H8_DIR24R8 R_H8_DIR32A16 R_H8_DISP32A16

Signed-off-by: Yoshinori Sato <[email protected]>
Signed-off-by: Waldemar Brodkorb <[email protected]>
---
 elf2flt.c |   14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/elf2flt.c b/elf2flt.c
index 60f5207..17affd9 100644
--- a/elf2flt.c
+++ b/elf2flt.c
@@ -723,6 +723,17 @@ dump_symbols(symbols, number_of_symbols);
 
 				    flat_reloc_count++;
 				    break;
+#elif defined (TARGET_h8300)
+				case R_H8_DIR32:
+				case R_H8_DIR24A8:
+				case R_H8_DIR24R8:
+				case R_H8_DIR32A16:
+				case R_H8_DISP32A16:
+				    r_mem[0] = 0;
+				    goto good_32bit_resolved_reloc;
+				case R_H8_PCREL8:
+				case R_H8_PCREL16:
+				    continue;
 #else
 				default:
 					/* The default is to assume that the
@@ -878,6 +889,7 @@ dump_symbols(symbols, number_of_symbols);
 					break;
 				case R_H8_DIR32:
 				case R_H8_DIR32A16: /* currently 32,  could be made 16 */
+				case R_H8_DISP32A16:
 					if (sym_reloc_size != 4) {
 						printf("R_H8_DIR32 size %d\n", sym_reloc_size);
 						bad_relocs++;
@@ -889,6 +901,7 @@ dump_symbols(symbols, number_of_symbols);
 					sym_addr += sym_vma + q->addend;
 					break;
 				case R_H8_PCREL16:
+					relocation_needed = 0;
 					sym_vma = 0;
 					sym_addr = (*(q->sym_ptr_ptr))->value;
 					sym_addr += sym_vma + q->addend;
@@ -898,6 +911,7 @@ dump_symbols(symbols, number_of_symbols);
 						bfd_big_endian(abs_bfd) ? htons(sym_addr) : sym_addr;
 					continue;
 				case R_H8_PCREL8:
+					relocation_needed = 0;
 					sym_vma = 0;
 					sym_addr = (*(q->sym_ptr_ptr))->value;
 					sym_addr += sym_vma + q->addend;
-- 
1.7.10.4

_______________________________________________
uClinux-dev mailing list
[email protected]
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by [email protected]
To unsubscribe see:
http://mailman.uclinux.org/mailman/options/uclinux-dev