[haiku-commits] r39220 - haiku/trunk/src/system/kernel/arch/arm

  • From: ithamar.adema@xxxxxxxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sun, 31 Oct 2010 01:10:36 +0200 (CEST)

Author: ithamar
Date: 2010-10-31 01:10:36 +0200 (Sun, 31 Oct 2010)
New Revision: 39220
Changeset: http://dev.haiku-os.org/changeset/39220

Modified:
   haiku/trunk/src/system/kernel/arch/arm/arch_elf.cpp
Log:
ARM:
* Disable TRACE output of ELF relocation
* Implement R_ARM_RELATIVE (for kernel modules)

No more errors on 'loading' of kernel modules now!


Modified: haiku/trunk/src/system/kernel/arch/arm/arch_elf.cpp
===================================================================
--- haiku/trunk/src/system/kernel/arch/arm/arch_elf.cpp 2010-10-30 22:53:32 UTC 
(rev 39219)
+++ haiku/trunk/src/system/kernel/arch/arm/arch_elf.cpp 2010-10-30 23:10:36 UTC 
(rev 39220)
@@ -1,4 +1,7 @@
 /*
+ * Copyright 2010, Ithamar R. Adema <ithamar.adema@xxxxxxxxxxxxxxxx>
+ * All rights reserved. Distributed under the terms of the MIT License.
+ *
  * Copyright 2009, Johannes Wischert, johanneswi@xxxxxxxxxx
  * All rights reserved. Distributed under the terms of the MIT License.
  *
@@ -19,7 +22,7 @@
 #include <arch/elf.h>
 
 
-#define TRACE_ARCH_ELF
+//#define TRACE_ARCH_ELF
 #ifdef TRACE_ARCH_ELF
 #      define TRACE(x) dprintf x
 #      define CHATTY 1
@@ -210,9 +213,21 @@
                        }
                }
 
+               // calc A
                switch (ELF32_R_TYPE(rel[i].r_info)) {
+                       case R_ARM_RELATIVE:
+                               A = *(addr_t *)(image->text_region.delta + 
rel[i].r_offset);
+                               TRACE(("A %p\n", (void *)A));
+                               break;
+               }
+
+               switch (ELF32_R_TYPE(rel[i].r_info)) {
                        case R_ARM_NONE:
                                continue;
+                       case R_ARM_RELATIVE:
+                               // B + A;
+                               finalAddress = image->text_region.delta + A;
+                               break;
                        case R_ARM_JMP_SLOT:
                        case R_ARM_GLOB_DAT:
                                finalAddress = S;


Other related posts:

  • » [haiku-commits] r39220 - haiku/trunk/src/system/kernel/arch/arm - ithamar . adema