# HG changeset patch # User Michael Spacefalcon # Date 1396590322 0 # Node ID 4d8dfdbd2ea14b272e7145967c0e532f4131bdc4 # Parent fb1e47bebe005e9343f8a465944e86a462bea2ef tiobjd: auto-translation of section-relative relocs made more conservative diff -r fb1e47bebe00 -r 4d8dfdbd2ea1 ticoff/disasm.c --- a/ticoff/disasm.c Fri Apr 04 05:11:32 2014 +0000 +++ b/ticoff/disasm.c Fri Apr 04 05:45:22 2014 +0000 @@ -19,23 +19,24 @@ unsigned *addp; { struct internal_scnhdr *sec; - unsigned addr; - struct internal_syment *sym, *symsel; + unsigned addr, delta; + struct internal_syment *sym; unsigned n; sec = (*symp)->section; addr = *addp; - symsel = 0; for (n = 0; n < sec->nsymbols; n++) { sym = sec->sorted_symbols[n]; if (sym->value > addr) - break; - if (sym->class == C_EXT || sym->class == C_STAT) - symsel = sym; - } - if (symsel) { - *symp = symsel; - *addp = addr - symsel->value; + return; + if (sym->class != C_EXT && sym->class != C_STAT) + continue; + delta = addr - sym->value; + if (sym->name[0] == '_' && !delta || + sym->name[0] == '$' && delta <= 1) { + *symp = sym; + *addp = delta; + } } }