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;