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.