--- ld64-97.17-64.bak/src/ld/MachOWriterExecutable.hpp 2025-02-15 15:28:03.000000000 -0600 +++ ld64-97.17/src/ld/MachOWriterExecutable.hpp 2025-03-06 22:12:06.000000000 -0600 @@ -7436,11 +7436,22 @@ const int64_t picbase_twoGigLimit = 0x80000000; if ( ref->getTargetBinding() != ObjectFile::Reference::kDontBind ) { - targetAddr = ref->getTarget().getAddress() + ref->getTargetOffset(); - if ( finalLinkedImage ) - relocateableExternal = (relocationNeededInFinalLinkedImage(ref->getTarget()) == kRelocExternal); - else - relocateableExternal = this->makesExternalRelocatableReference(ref->getTarget()); + switch ( (typename A::ReferenceKinds)(ref->getKind()) ) { + case A::kNoFixUp: + case A::kFollowOn: + case A::kGroupSubordinate: + case A::kDtraceTypeReference: + case A::kDtraceProbe: + /* Skip the next steps where the variable is not used. */ + break; + default: + targetAddr = ref->getTarget().getAddress() + ref->getTargetOffset(); + if ( finalLinkedImage ) + relocateableExternal = (relocationNeededInFinalLinkedImage(ref->getTarget()) == kRelocExternal); + else + relocateableExternal = this->makesExternalRelocatableReference(ref->getTarget()); + break; + } } switch ( (typename A::ReferenceKinds)(ref->getKind()) ) {