This is an archive of the discontinued LLVM Phabricator instance.

[MachO][TLOF] Use hasLocalLinkage to determine if indirect symbol is local
ClosedPublic

Authored by thegameg on Aug 21 2019, 3:39 PM.

Details

Summary

Local symbols in the indirect symbol table contain the value INDIRECT_SYMBOL_LOCAL and the corresponding __pointers entry must contain the address of the target.

In r349060, I added support for local symbols in the indirect symbol table, which was checking if the symbol isDefined && !isExternal to determine if the symbol is local or not.

It turns out that isDefined will return false if the user of the symbol comes before its definition, and we'll again generate .long 0 which will be the symbol at the adress 0x0.

Instead of doing that, use GlobalValue::hasLocalLinkage() to check if the symbol is local.

Diff Detail

Event Timeline

thegameg created this revision.Aug 21 2019, 3:39 PM
Herald added a project: Restricted Project. · View Herald TranscriptAug 21 2019, 3:39 PM
pete accepted this revision.Aug 22 2019, 9:14 AM

LGTM.

This revision is now accepted and ready to land.Aug 22 2019, 9:14 AM
This revision was automatically updated to reflect the committed changes.