From 0688afdd34c7c2a4696d22f68497a7a887e6cc37 Mon Sep 17 00:00:00 2001 From: Michael Matz Date: Fri, 4 Apr 2014 23:33:04 +0200 Subject: [PATCH] arm: Handle R_ARM_NONE relocs These relocations are used to express a dependency on a certain symbol (e.g. for EABIs exception handling to the __aeabi_unwind_cpp_pr{0,1,2} routines). Just ignore them in reloc processing. --- tccelf.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tccelf.c b/tccelf.c index 568b40fc..b55dbc90 100644 --- a/tccelf.c +++ b/tccelf.c @@ -769,6 +769,10 @@ ST_FUNC void relocate_section(TCCState *s1, Section *s) if ((0x0ffffff0 & *(int*)ptr) == 0x012FFF10) *(int*)ptr ^= 0xE12FFF10 ^ 0xE1A0F000; /* BX Rm -> MOV PC, Rm */ break; + case R_ARM_NONE: + /* Nothing to do. Normally used to indicate a dependency + on a certain symbol (like for exception handling under EABI). */ + break; default: fprintf(stderr,"FIXME: handle reloc type %x at %x [%p] to %x\n", type, (unsigned)addr, ptr, (unsigned)val);