Fix ld -r to process i386 relocs same as ld_classic --- src/ld/LinkEditClassic.hpp +++ src/ld/LinkEditClassic.hpp @@ -1363,8 +1363,8 @@ void SectionRelocationsAtom::encodeSectionReloc(ld::Internal::FinalSection* } else { // regular pointer - if ( !external && (entry.toAddend != 0) ) { - // use scattered reloc is target offset is non-zero + if ( !external && (entry.toAddend != 0) && (entry.toTarget->symbolTableInclusion() != ld::Atom::symbolTableNotIn) ) { + // use scattered reloc if target offset is non-zero into named atom (5658046) sreloc1->set_r_scattered(true); sreloc1->set_r_pcrel(false); sreloc1->set_r_length(2);