mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-08-26 07:19:16 +08:00
No PT_INTERP when .interp is zero size
Some targets don't set a default interpreter, resulting in an empty .interp section unless --dynamic-linker is passed to ld. A PT_INTERP without a path is rather useless. The testsuite change fixes a failure on microblaze-linux. bfd/ * elf.c (get_program_header_size): Don't count PT_INTERP if .interp is empty. (_bfd_elf_map_sections_to_segments): Don't create PT_INTERP if .interp is empty. ld/ * testsuite/ld-elf/pr22423.d: Pass --dynamic-linker to ld.
This commit is contained in:
@ -1,3 +1,10 @@
|
|||||||
|
2018-10-08 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
|
* elf.c (get_program_header_size): Don't count PT_INTERP if
|
||||||
|
.interp is empty.
|
||||||
|
(_bfd_elf_map_sections_to_segments): Don't create PT_INTERP if
|
||||||
|
.interp is empty.
|
||||||
|
|
||||||
2018-10-08 Alan Modra <amodra@gmail.com>
|
2018-10-08 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
* elf32-spu.c (spu_elf_modify_segment_map): Don't insert
|
* elf32-spu.c (spu_elf_modify_segment_map): Don't insert
|
||||||
|
@ -4335,7 +4335,7 @@ get_program_header_size (bfd *abfd, struct bfd_link_info *info)
|
|||||||
segs = 2;
|
segs = 2;
|
||||||
|
|
||||||
s = bfd_get_section_by_name (abfd, ".interp");
|
s = bfd_get_section_by_name (abfd, ".interp");
|
||||||
if (s != NULL && (s->flags & SEC_LOAD) != 0)
|
if (s != NULL && (s->flags & SEC_LOAD) != 0 && s->size != 0)
|
||||||
{
|
{
|
||||||
/* If we have a loadable interpreter section, we need a
|
/* If we have a loadable interpreter section, we need a
|
||||||
PT_INTERP segment. In this case, assume we also need a
|
PT_INTERP segment. In this case, assume we also need a
|
||||||
@ -4647,7 +4647,7 @@ _bfd_elf_map_sections_to_segments (bfd *abfd, struct bfd_link_info *info)
|
|||||||
the program headers and a PT_INTERP segment for the .interp
|
the program headers and a PT_INTERP segment for the .interp
|
||||||
section. */
|
section. */
|
||||||
s = bfd_get_section_by_name (abfd, ".interp");
|
s = bfd_get_section_by_name (abfd, ".interp");
|
||||||
if (s != NULL && (s->flags & SEC_LOAD) != 0)
|
if (s != NULL && (s->flags & SEC_LOAD) != 0 && s->size != 0)
|
||||||
{
|
{
|
||||||
amt = sizeof (struct elf_segment_map);
|
amt = sizeof (struct elf_segment_map);
|
||||||
m = (struct elf_segment_map *) bfd_zalloc (abfd, amt);
|
m = (struct elf_segment_map *) bfd_zalloc (abfd, amt);
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
2018-10-08 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
|
* testsuite/ld-elf/pr22423.d: Pass --dynamic-linker to ld.
|
||||||
|
|
||||||
2018-10-05 Richard Henderson <rth@twiddle.net>
|
2018-10-05 Richard Henderson <rth@twiddle.net>
|
||||||
|
|
||||||
* testsuite/ld-or1k/or1k.exp: Add test cases for plt generation.
|
* testsuite/ld-or1k/or1k.exp: Add test cases for plt generation.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#source: start.s
|
#source: start.s
|
||||||
#readelf: -l -W
|
#readelf: -l -W
|
||||||
#ld: -pie
|
#ld: -pie --dynamic-linker=/usr/lib/ld.so.1
|
||||||
#target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
|
#target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
|
||||||
|
|
||||||
#...
|
#...
|
||||||
|
Reference in New Issue
Block a user