HomePhabricator

[LLD][ELF] Error if _GLOBAL_OFFSET_TABLE_ is defined in input objects

Description

[LLD][ELF] Error if _GLOBAL_OFFSET_TABLE_ is defined in input objects

The _GLOBAL_OFFSET_TABLE_ is a linker defined symbol that is placed at
some location relative to the .got, .got.plt or .toc section. On some
targets such as Arm the correctness of some code sequences using a
relocation to _GLOBAL_OFFSET_TABLE_ depend on the value of the symbol
being in the linker defined place. Follow the ld.gold example and give
a multiple symbol definition error. The ld.bfd behaviour is to ignore the
definition in the input object and redefine it, which seems like it could
be more surprising.

fixes pr39587

Differential Revision: https://reviews.llvm.org/D54624

Details

Committed
psmithNov 29 2018, 3:18 AM
Differential Revision
D54624: [LLD][ELF] Error if _GLOBAL_OFFSET_TABLE_ is defined in input objects
Branches
Unknown
Tags
Unknown