This is an archive of the discontinued LLVM Phabricator instance.

Bring back r323297.
ClosedPublic

Authored by espindola on Feb 16 2018, 11:05 AM.

Details

Reviewers
rnk
Summary

It was reverted because it broke the grub build. The reason the grub build broke is because grub does its own relocation processing and was not handing R_386_PLT32. Since grub has no dynamic linker, the fix is trivial: handle R_386_PLT32 exactly like R_386_PC32.

On the report it was noted that they are using -fno-integrated-assembler. The upstream GAS (starting with 451875b4f976a527395e9303224c7881b65e12ed) will already be producing a R_386_PLT32 anyway, so they have to update their code one way or the other

Original message:

Don't assume a null GV is local for ELF and MachO.

This is already a simplification, and should help with avoiding a plt
reference when calling an intrinsic with -fno-plt.

With this change we return false for null GVs, so the caller only
needs to check the new metadata to decide if it should use foo@plt or
*foo@got.

Diff Detail

Event Timeline

espindola created this revision.Feb 16 2018, 11:05 AM
rnk accepted this revision.Feb 16 2018, 2:12 PM

lgtm

This revision is now accepted and ready to land.Feb 16 2018, 2:12 PM