mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-10-18 21:34:13 +08:00
Add RESOLVED_LOCALLY_P
This commit is contained in:
@ -2512,26 +2512,13 @@ r_386_got32:
|
|||||||
relative_reloc = FALSE;
|
relative_reloc = FALSE;
|
||||||
if (h != NULL)
|
if (h != NULL)
|
||||||
{
|
{
|
||||||
bfd_boolean dyn;
|
|
||||||
|
|
||||||
off = h->got.offset;
|
off = h->got.offset;
|
||||||
dyn = htab->elf.dynamic_sections_created;
|
if (RESOLVED_LOCALLY_P (info, h, htab))
|
||||||
if (! WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn,
|
|
||||||
bfd_link_pic (info),
|
|
||||||
h)
|
|
||||||
|| (bfd_link_pic (info)
|
|
||||||
&& SYMBOL_REFERENCES_LOCAL_P (info, h))
|
|
||||||
|| (ELF_ST_VISIBILITY (h->other)
|
|
||||||
&& h->root.type == bfd_link_hash_undefweak))
|
|
||||||
{
|
{
|
||||||
/* This is actually a static link, or it is a
|
/* We must initialize this entry in the global offset
|
||||||
-Bsymbolic link and the symbol is defined
|
table. Since the offset must always be a multiple
|
||||||
locally, or the symbol was forced to be local
|
of 4, we use the least significant bit to record
|
||||||
because of a version file. We must initialize
|
whether we have initialized it already.
|
||||||
this entry in the global offset table. Since the
|
|
||||||
offset must always be a multiple of 4, we use the
|
|
||||||
least significant bit to record whether we have
|
|
||||||
initialized it already.
|
|
||||||
|
|
||||||
When doing a dynamic link, we create a .rel.got
|
When doing a dynamic link, we create a .rel.got
|
||||||
relocation entry to initialize the value. This
|
relocation entry to initialize the value. This
|
||||||
|
@ -2762,8 +2762,6 @@ do_ifunc_pointer:
|
|||||||
relative_reloc = FALSE;
|
relative_reloc = FALSE;
|
||||||
if (h != NULL)
|
if (h != NULL)
|
||||||
{
|
{
|
||||||
bfd_boolean dyn;
|
|
||||||
|
|
||||||
off = h->got.offset;
|
off = h->got.offset;
|
||||||
if (h->needs_plt
|
if (h->needs_plt
|
||||||
&& h->plt.offset != (bfd_vma)-1
|
&& h->plt.offset != (bfd_vma)-1
|
||||||
@ -2779,21 +2777,12 @@ do_ifunc_pointer:
|
|||||||
base_got = htab->elf.sgotplt;
|
base_got = htab->elf.sgotplt;
|
||||||
}
|
}
|
||||||
|
|
||||||
dyn = htab->elf.dynamic_sections_created;
|
if (RESOLVED_LOCALLY_P (info, h, htab))
|
||||||
|
|
||||||
if (! WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, bfd_link_pic (info), h)
|
|
||||||
|| (bfd_link_pic (info)
|
|
||||||
&& SYMBOL_REFERENCES_LOCAL_P (info, h))
|
|
||||||
|| (ELF_ST_VISIBILITY (h->other)
|
|
||||||
&& h->root.type == bfd_link_hash_undefweak))
|
|
||||||
{
|
{
|
||||||
/* This is actually a static link, or it is a -Bsymbolic
|
/* We must initialize this entry in the global offset
|
||||||
link and the symbol is defined locally, or the symbol
|
table. Since the offset must always be a multiple
|
||||||
was forced to be local because of a version file. We
|
of 8, we use the least significant bit to record
|
||||||
must initialize this entry in the global offset table.
|
whether we have initialized it already.
|
||||||
Since the offset must always be a multiple of 8, we
|
|
||||||
use the least significant bit to record whether we
|
|
||||||
have initialized it already.
|
|
||||||
|
|
||||||
When doing a dynamic link, we create a .rela.got
|
When doing a dynamic link, we create a .rela.got
|
||||||
relocation entry to initialize the value. This is
|
relocation entry to initialize the value. This is
|
||||||
|
@ -113,6 +113,17 @@
|
|||||||
&& ((H)->root.type == bfd_link_hash_defweak \
|
&& ((H)->root.type == bfd_link_hash_defweak \
|
||||||
|| !(H)->def_regular)))
|
|| !(H)->def_regular)))
|
||||||
|
|
||||||
|
/* TRUE if this is actually a static link, or it is a -Bsymbolic link
|
||||||
|
and the symbol is defined locally, or the symbol was forced to be
|
||||||
|
local because of a version file. */
|
||||||
|
#define RESOLVED_LOCALLY_P(INFO, H, HTAB) \
|
||||||
|
(!WILL_CALL_FINISH_DYNAMIC_SYMBOL ((HTAB)->elf.dynamic_sections_created, \
|
||||||
|
bfd_link_pic (INFO), (H)) \
|
||||||
|
|| (bfd_link_pic (INFO) \
|
||||||
|
&& SYMBOL_REFERENCES_LOCAL_P ((INFO), (H))) \
|
||||||
|
|| (ELF_ST_VISIBILITY ((H)->other) \
|
||||||
|
&& (H)->root.type == bfd_link_hash_undefweak))
|
||||||
|
|
||||||
/* TRUE if TLS IE->LE transition is OK. */
|
/* TRUE if TLS IE->LE transition is OK. */
|
||||||
#define TLS_TRANSITION_IE_TO_LE_P(INFO, H, TLS_TYPE) \
|
#define TLS_TRANSITION_IE_TO_LE_P(INFO, H, TLS_TYPE) \
|
||||||
(bfd_link_executable (INFO) \
|
(bfd_link_executable (INFO) \
|
||||||
|
Reference in New Issue
Block a user