forked from Imagelibrary/binutils-gdb
elf: Reset alignment for each PT_LOAD segment
Reset alignment for each PT_LOAD segment to avoid using alignment from the previous PT_LOAD segment. bfd/ PR ld/29435 * elf.c (assign_file_positions_for_load_sections): Reset alignment for each PT_LOAD segment. ld/ PR ld/29435 * testsuite/ld-elf/pr29435.d: New file. * testsuite/ld-elf/pr29435.s: Likewise.
This commit is contained in:
@@ -5440,8 +5440,6 @@ assign_file_positions_for_load_sections (bfd *abfd,
|
||||
Elf_Internal_Phdr *p;
|
||||
file_ptr off; /* Octets. */
|
||||
bfd_size_type maxpagesize;
|
||||
bfd_size_type p_align;
|
||||
bool p_align_p = false;
|
||||
unsigned int alloc, actual;
|
||||
unsigned int i, j;
|
||||
struct elf_segment_map **sorted_seg_map;
|
||||
@@ -5526,7 +5524,6 @@ assign_file_positions_for_load_sections (bfd *abfd,
|
||||
qsort (sorted_seg_map, alloc, sizeof (*sorted_seg_map),
|
||||
elf_sort_segments);
|
||||
|
||||
p_align = bed->p_align;
|
||||
maxpagesize = 1;
|
||||
if ((abfd->flags & D_PAGED) != 0)
|
||||
{
|
||||
@@ -5561,6 +5558,8 @@ assign_file_positions_for_load_sections (bfd *abfd,
|
||||
asection **secpp;
|
||||
bfd_vma off_adjust; /* Octets. */
|
||||
bool no_contents;
|
||||
bfd_size_type p_align;
|
||||
bool p_align_p;
|
||||
|
||||
/* An ELF segment (described by Elf_Internal_Phdr) may contain a
|
||||
number of sections with contents contributing to both p_filesz
|
||||
@@ -5571,6 +5570,8 @@ assign_file_positions_for_load_sections (bfd *abfd,
|
||||
p = phdrs + m->idx;
|
||||
p->p_type = m->p_type;
|
||||
p->p_flags = m->p_flags;
|
||||
p_align = bed->p_align;
|
||||
p_align_p = false;
|
||||
|
||||
if (m->count == 0)
|
||||
p->p_vaddr = m->p_vaddr_offset * opb;
|
||||
|
||||
11
ld/testsuite/ld-elf/pr29435.d
Normal file
11
ld/testsuite/ld-elf/pr29435.d
Normal file
@@ -0,0 +1,11 @@
|
||||
#ld: -shared -z separate-code -z relro
|
||||
#xfail: ![check_shared_lib_support]
|
||||
#xfail: ![check_relro_support]
|
||||
#readelf: -Wl
|
||||
|
||||
#failif
|
||||
#...
|
||||
+LOAD +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ .* 0x8000
|
||||
#...
|
||||
+LOAD +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ .* 0x8000
|
||||
#...
|
||||
6
ld/testsuite/ld-elf/pr29435.s
Normal file
6
ld/testsuite/ld-elf/pr29435.s
Normal file
@@ -0,0 +1,6 @@
|
||||
.text
|
||||
.balign 0x8000
|
||||
.globl foo
|
||||
.type foo, %function
|
||||
foo:
|
||||
.byte 0
|
||||
Reference in New Issue
Block a user