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:
parent
e0c3dfa2ee
commit
1b9e270b09
|
@ -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>
|
||||
|
||||
* 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;
|
||||
|
||||
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
|
||||
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
|
||||
section. */
|
||||
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);
|
||||
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>
|
||||
|
||||
* testsuite/ld-or1k/or1k.exp: Add test cases for plt generation.
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#source: start.s
|
||||
#readelf: -l -W
|
||||
#ld: -pie
|
||||
#ld: -pie --dynamic-linker=/usr/lib/ld.so.1
|
||||
#target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
|
||||
|
||||
#...
|
||||
|
|
Loading…
Reference in New Issue