diff --git a/arch/powerpc/reloc.h b/arch/powerpc/reloc.h index d5ba74a723154b55825966d3d992fcde03745f37..1563450d8ba15482fa55e7a2b1a1b3a15b0201d8 100644 --- a/arch/powerpc/reloc.h +++ b/arch/powerpc/reloc.h @@ -32,9 +32,9 @@ static inline int do_single_reloc( *reloc_addr = def.sym->st_value + addend; break; case R_PPC_TPREL32: - *reloc_addr += def.sym - ? def.sym->st_value + def.dso->tls_offset - 0x7000 - : self->tls_offset - 0x7000; + *reloc_addr = (def.sym + ? def.sym->st_value + def.dso->tls_offset + : self->tls_offset) - 0x7000 + addend; break; } return 0;