mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-30 12:44:10 +08:00
csky: Don't generate unnecessary dynamic tags
Dynamic tags, DT_JMPREL, PLTREL and PLTRELSZ, are needed only if there are relocation entries for PLT. Don't generate them if there are no relocation entries for PLT. bfd/ PR ld/26083 * elf32-csky.c (csky_elf_size_dynamic_sections): Call _bfd_elf_add_dynamic_tags. ld/ PR ld/26083 * testsuite/ld-csky/tls-ie-v1.d: Updated. * testsuite/ld-csky/tls-ie.d: Likewise.
This commit is contained in:
parent
c679ec98a1
commit
2c8e370829
@ -1,3 +1,9 @@
|
||||
2020-06-24 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR ld/26083
|
||||
* elf32-csky.c (csky_elf_size_dynamic_sections): Call
|
||||
_bfd_elf_add_dynamic_tags.
|
||||
|
||||
2020-06-24 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR ld/26083
|
||||
|
@ -2093,49 +2093,8 @@ csky_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
}
|
||||
|
||||
if (htab->elf.dynamic_sections_created)
|
||||
{
|
||||
/* Add some entries to the .dynamic section. We fill in the
|
||||
values later, in csky_elf_finish_dynamic_sections, but we
|
||||
must add the entries now so that we get the correct size for
|
||||
the .dynamic section. The DT_DEBUG entry is filled in by the
|
||||
dynamic linker and used by the debugger. */
|
||||
#define add_dynamic_entry(TAG, VAL) \
|
||||
_bfd_elf_add_dynamic_entry (info, TAG, VAL)
|
||||
|
||||
if (bfd_link_executable (info) && !add_dynamic_entry (DT_DEBUG, 0))
|
||||
return FALSE;
|
||||
|
||||
if (htab->elf.sgot->size != 0 || htab->elf.splt->size)
|
||||
{
|
||||
if (!add_dynamic_entry (DT_PLTGOT, 0)
|
||||
|| !add_dynamic_entry (DT_PLTRELSZ, 0)
|
||||
|| !add_dynamic_entry (DT_PLTREL, DT_RELA)
|
||||
|| !add_dynamic_entry (DT_JMPREL, 0))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (relocs)
|
||||
{
|
||||
if (!add_dynamic_entry (DT_RELA, 0)
|
||||
|| !add_dynamic_entry (DT_RELASZ, 0)
|
||||
|| !add_dynamic_entry (DT_RELAENT,
|
||||
sizeof (Elf32_External_Rela)))
|
||||
return FALSE;
|
||||
|
||||
/* If any dynamic relocs apply to a read-only section,
|
||||
then we need a DT_TEXTREL entry. */
|
||||
if ((info->flags & DF_TEXTREL) == 0)
|
||||
elf_link_hash_traverse (&htab->elf,
|
||||
_bfd_elf_maybe_set_textrel, info);
|
||||
|
||||
if ((info->flags & DF_TEXTREL) != 0
|
||||
&& !add_dynamic_entry (DT_TEXTREL, 0))
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
#undef add_dynamic_entry
|
||||
|
||||
return TRUE;
|
||||
htab->elf.dt_pltgot_required = htab->elf.sgot->size != 0;
|
||||
return _bfd_elf_add_dynamic_tags (output_bfd, info, relocs);
|
||||
}
|
||||
|
||||
/* Finish up dynamic symbol handling. We set the contents of various
|
||||
|
@ -1,3 +1,9 @@
|
||||
2020-06-24 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR ld/26083
|
||||
* testsuite/ld-csky/tls-ie-v1.d: Updated.
|
||||
* testsuite/ld-csky/tls-ie.d: Likewise.
|
||||
|
||||
2020-06-24 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR ld/26083
|
||||
|
@ -4,7 +4,7 @@
|
||||
#ld: -shared --hash-style=sysv
|
||||
#readelf: -d -r
|
||||
|
||||
Dynamic section at offset 0x[0-9a-f]+ contains 13 entries:
|
||||
Dynamic section at offset 0x[0-9a-f]+ contains 10 entries:
|
||||
Tag Type Name/Value
|
||||
0x00000004 \(HASH\) .*
|
||||
0x00000005 \(STRTAB\) .*
|
||||
@ -12,9 +12,6 @@ Dynamic section at offset 0x[0-9a-f]+ contains 13 entries:
|
||||
0x0000000a \(STRSZ\) .* \(bytes\)
|
||||
0x0000000b \(SYMENT\) .* \(bytes\)
|
||||
0x00000003 \(PLTGOT\) 0x[0-9a-f]+
|
||||
0x00000002 \(PLTRELSZ\) 0 \(bytes\)
|
||||
0x00000014 \(PLTREL\) RELA
|
||||
0x00000017 \(JMPREL\) 0x[0-9a-f]+
|
||||
0x00000007 \(RELA\) 0x[0-9a-f]+
|
||||
0x00000008 \(RELASZ\) 12 \(bytes\)
|
||||
0x00000009 \(RELAENT\) 12 \(bytes\)
|
||||
|
@ -3,7 +3,7 @@
|
||||
#ld: -shared --hash-style=sysv
|
||||
#readelf: -d -r
|
||||
|
||||
Dynamic section at offset 0x[0-9a-f]+ contains 13 entries:
|
||||
Dynamic section at offset 0x[0-9a-f]+ contains 10 entries:
|
||||
Tag Type Name/Value
|
||||
0x00000004 \(HASH\) .*
|
||||
0x00000005 \(STRTAB\) .*
|
||||
@ -11,9 +11,6 @@ Dynamic section at offset 0x[0-9a-f]+ contains 13 entries:
|
||||
0x0000000a \(STRSZ\) .* \(bytes\)
|
||||
0x0000000b \(SYMENT\) .* \(bytes\)
|
||||
0x00000003 \(PLTGOT\) 0x[0-9a-f]+
|
||||
0x00000002 \(PLTRELSZ\) 0 \(bytes\)
|
||||
0x00000014 \(PLTREL\) RELA
|
||||
0x00000017 \(JMPREL\) 0x[0-9a-f]+
|
||||
0x00000007 \(RELA\) 0x[0-9a-f]+
|
||||
0x00000008 \(RELASZ\) 12 \(bytes\)
|
||||
0x00000009 \(RELAENT\) 12 \(bytes\)
|
||||
|
Loading…
Reference in New Issue
Block a user