2007-08-09 H.J. Lu <hongjiu.lu@intel.com>
PR ld/4909 * elf.c (print_segment_map): New function. (assign_file_positions_for_load_sections): Call print_segment_map when a section can't be allocated in segment.
This commit is contained in:
parent
d4310edb35
commit
6d33f2176c
@ -1,3 +1,10 @@
|
||||
2007-08-09 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR ld/4909
|
||||
* elf.c (print_segment_map): New function.
|
||||
(assign_file_positions_for_load_sections): Call print_segment_map
|
||||
when a section can't be allocated in segment.
|
||||
|
||||
2007-08-09 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
* opncls.c (bfd_openr_iovec): Fix the OPEN parameter macro expansion.
|
||||
|
27
bfd/elf.c
27
bfd/elf.c
@ -3971,6 +3971,32 @@ vma_page_aligned_bias (bfd_vma vma, ufile_ptr off, bfd_vma maxpagesize)
|
||||
return ((vma - off) % maxpagesize);
|
||||
}
|
||||
|
||||
static void
|
||||
print_segment_map (const struct elf_segment_map *m)
|
||||
{
|
||||
unsigned int j;
|
||||
const char *pt = get_segment_type (m->p_type);
|
||||
char buf[32];
|
||||
|
||||
if (pt == NULL)
|
||||
{
|
||||
if (m->p_type >= PT_LOPROC && m->p_type <= PT_HIPROC)
|
||||
sprintf (buf, "LOPROC+%7.7x",
|
||||
(unsigned int) (m->p_type - PT_LOPROC));
|
||||
else if (m->p_type >= PT_LOOS && m->p_type <= PT_HIOS)
|
||||
sprintf (buf, "LOOS+%7.7x",
|
||||
(unsigned int) (m->p_type - PT_LOOS));
|
||||
else
|
||||
snprintf (buf, sizeof (buf), "%8.8x",
|
||||
(unsigned int) m->p_type);
|
||||
pt = buf;
|
||||
}
|
||||
fprintf (stderr, "%s:", pt);
|
||||
for (j = 0; j < m->count; j++)
|
||||
fprintf (stderr, " %s", m->sections [j]->name);
|
||||
putc ('\n',stderr);
|
||||
}
|
||||
|
||||
/* Assign file positions to the sections based on the mapping from
|
||||
sections to segments. This function also sets up some fields in
|
||||
the file header. */
|
||||
@ -4359,6 +4385,7 @@ assign_file_positions_for_load_sections (bfd *abfd,
|
||||
(*_bfd_error_handler)
|
||||
(_("%B: section `%A' can't be allocated in segment %d"),
|
||||
abfd, sec, j);
|
||||
print_segment_map (m);
|
||||
bfd_set_error (bfd_error_bad_value);
|
||||
return FALSE;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user