mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-07-15 05:01:13 +08:00
* readelf.c (process_program_headers): When setting loadaddr, don't
assume segment size is 4k. Use p_align instead. (loadaddr): Change from int to long. (dynamic_addr, dynamic_info, version_info): Likewise. (process_dynamic_segment <syminsz>): Likewise. (process_dynamic_segment): Adjust print format string. (rela_addr, rela_size): Delete. (process_relocs): Formatting.
This commit is contained in:
@ -1,3 +1,14 @@
|
||||
2002-12-07 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* readelf.c (process_program_headers): When setting loadaddr, don't
|
||||
assume segment size is 4k. Use p_align instead.
|
||||
(loadaddr): Change from int to long.
|
||||
(dynamic_addr, dynamic_info, version_info): Likewise.
|
||||
(process_dynamic_segment <syminsz>): Likewise.
|
||||
(process_dynamic_segment): Adjust print format string.
|
||||
(rela_addr, rela_size): Delete.
|
||||
(process_relocs): Formatting.
|
||||
|
||||
2002-12-05 Jim Wilson <wilson@redhat.com>
|
||||
|
||||
* configure.in (OBJDUMP_DEFS): Define SKIP_ZEROES as 16 for IA-64.
|
||||
|
@ -90,10 +90,8 @@
|
||||
#include "getopt.h"
|
||||
|
||||
char *program_name = "readelf";
|
||||
unsigned int dynamic_addr;
|
||||
unsigned long dynamic_addr;
|
||||
bfd_size_type dynamic_size;
|
||||
unsigned int rela_addr;
|
||||
unsigned int rela_size;
|
||||
char *dynamic_strings;
|
||||
char *string_table;
|
||||
unsigned long string_table_length;
|
||||
@ -103,9 +101,9 @@ Elf_Internal_Syminfo *dynamic_syminfo;
|
||||
unsigned long dynamic_syminfo_offset;
|
||||
unsigned int dynamic_syminfo_nent;
|
||||
char program_interpreter[64];
|
||||
int dynamic_info[DT_JMPREL + 1];
|
||||
int version_info[16];
|
||||
int loadaddr = 0;
|
||||
long dynamic_info[DT_JMPREL + 1];
|
||||
long version_info[16];
|
||||
long loadaddr = 0;
|
||||
Elf_Internal_Ehdr elf_header;
|
||||
Elf_Internal_Shdr *section_headers;
|
||||
Elf_Internal_Dyn *dynamic_segment;
|
||||
@ -3142,8 +3140,14 @@ process_program_headers (file)
|
||||
{
|
||||
case PT_LOAD:
|
||||
if (loadaddr == -1)
|
||||
loadaddr = (segment->p_vaddr & 0xfffff000)
|
||||
- (segment->p_offset & 0xfffff000);
|
||||
{
|
||||
unsigned long align_mask = -segment->p_align;
|
||||
|
||||
if (align_mask == 0)
|
||||
--align_mask;
|
||||
loadaddr = ((segment->p_vaddr & align_mask)
|
||||
- (segment->p_offset & align_mask));
|
||||
}
|
||||
break;
|
||||
|
||||
case PT_DYNAMIC:
|
||||
@ -3787,7 +3791,8 @@ process_relocs (file)
|
||||
rel_offset, rel_size);
|
||||
|
||||
dump_relocations (file, rel_offset - loadaddr, rel_size,
|
||||
dynamic_symbols, num_dynamic_syms, dynamic_strings, is_rela);
|
||||
dynamic_symbols, num_dynamic_syms, dynamic_strings,
|
||||
is_rela);
|
||||
}
|
||||
else
|
||||
printf (_("\nThere are no dynamic relocations in this file.\n"));
|
||||
@ -4653,7 +4658,7 @@ process_dynamic_segment (file)
|
||||
/* And find the syminfo section if available. */
|
||||
if (dynamic_syminfo == NULL)
|
||||
{
|
||||
unsigned int syminsz = 0;
|
||||
unsigned long syminsz = 0;
|
||||
|
||||
for (i = 0, entry = dynamic_segment;
|
||||
i < dynamic_size;
|
||||
@ -4703,7 +4708,7 @@ process_dynamic_segment (file)
|
||||
}
|
||||
|
||||
if (do_dynamic && dynamic_addr)
|
||||
printf (_("\nDynamic segment at offset 0x%x contains %ld entries:\n"),
|
||||
printf (_("\nDynamic segment at offset 0x%lx contains %ld entries:\n"),
|
||||
dynamic_addr, (long) dynamic_size);
|
||||
if (do_dynamic)
|
||||
printf (_(" Tag Type Name/Value\n"));
|
||||
|
Reference in New Issue
Block a user