Commit Graph

303 Commits

Author SHA1 Message Date
Jakub Jelinek 08d8fa1187 * elf/external.h (GRP_ENTRY_SIZE): Define.
* readelf.c (CHECK_ENTSIZE_VALUES, CHECK_ENTSIZE): Define.
	(process_section_headers): Use it.
	(process_relocs): Don't crash if symsec is not SHT_SYMTAB
	or SHT_DYNSYM.
	(process_version_sections): Use sizeof (Elf_External_Versym)
	instead of sh_entsize.
2005-06-17 13:37:26 +00:00
Jakub Jelinek c256ffe730 * readelf.c (cmalloc, xcmalloc, xcrealloc): New functions.
(get_data): Add nmemb argument.  Return NULL if nmemb * size
	overflows.  If var == NULL, allocate one extra byte and
	clear it.
	(slurp_rela_relocs, slurp_rel_relocs, get_32bit_program_headers,
	get_64bit_program_headers, get_program_headers,
	get_32bit_section_headers, get_64bit_section_headers,
	get_32bit_elf_symbols, get_64bit_elf_symbols, process_section_headers,
	process_section_groups, process_relocs, slurp_ia64_unwind_table,
	ia64_process_unwind, slurp_hppa_unwind_table, hppa_process_unwind,
	get_32bit_dynamic_section, get_64bit_dynamic_section,
	process_dynamic_section, process_version_sections, get_dynamic_data,
	process_symbol_table, dump_section, load_debug_str, load_debug_loc,
	load_debug_range, read_and_display_attr_value, process_debug_info,
	get_debug_info, frame_need_space, display_debug_frames,
	display_debug_section, process_mips_specific, process_gnu_liblist,
	process_corefile_note_segment): Adjust get_data callers.  Use
	cmalloc, xcmalloc and xcrealloc instead of {m,xm,xre}alloc where
	passed size is a product of 2 numbers.

	* readelf.c (print_mode): Fix comment typo.
	(slurp_rela_relocs, slurp_rel_relocs): Fix memory leaks.
	(dump_relocations): Fix a thinko in check for invalid st_name.
	(process_program_headers): Don't crash if string_table is NULL.
	(process_section_headers): Don't crash if e_shstrndx is invalid.
	Ensure string_table_length is 0 if string_table == NULL.
	Don't return just because string_table is NULL.
	(process_section_groups): Don't crash if symtab's sh_link or
	symbol's st_name is invalid.  Fix a memory leak.  Fix check for
	invalid section number entry.
	(process_relocs): Don't crash if relocation or symbol section's
	sh_link is invalid.
	(slurp_ia64_unwind_table, slurp_hppa_unwind_table): Don't crash if
	relocation section's sh_info is invalid.
	(ia64_process_unwind, hppa_process_unwind): Don't crash if symbol
	table's sh_link is invalid.
	(process_version_sections): Don't crash on version or symbol
	section's sh_link is invalid.  Don't crash if symbol's st_shndx
	is invalid.
	(process_symbol_table): Don't crash if string table is corrupt
	or symbol's st_name, st_shndx, vna_name or vda_name is invalid.
	(debug_apply_rela_addends): Don't crash if relocation section's
	sh_info or sh_link is invalid.
	(display_debug_loc): Warn for unterminated .debug_loc section
	or start offsets not within .debug_loc section boundaries.
	(process_gnu_liblist): Don't crash if liblist section's sh_link
	or entry's l_name is invalid.
2005-06-14 11:06:28 +00:00
Eric Christopher a34e3ecb69 2005-06-07 Eric Christopher <echristo@redhat.com>
* Makefile.am (eelf32ms1.c): Use tab.
        * Makefile.in: Regenerate.

2005-06-07  Eric Christopher  <echristo@redhat.com>

        * readelf.c (guess_is_rela): Support ms1.
        (dump_relocations): Ditto.
        (get_machine_name): Ditto.
2005-06-07 23:56:50 +00:00
Aldy Hernandez 1ae72221f9 * Makefile.am (readelf.o): Depend on ms1.h.
* Makefile.in: Regenerate.

	* readelf.c: Include ms1.h.
2005-06-07 21:14:09 +00:00
Richard Henderson 7ace3541ba * readelf.c (dump_relocations): Special case R_ALPHA_LITUSE. 2005-05-31 22:52:50 +00:00
Richard Henderson fabcb3612f * readelf.c (get_alpha_dynamic_type): New.
(get_dynamic_type): Call it.
2005-05-29 23:18:51 +00:00
H.J. Lu 391cb864cf 2005-05-24 H.J. Lu <hongjiu.lu@intel.com>
* readelf.c (process_section_groups): Report group section
	index. Check if the section member index is valid.
2005-05-24 13:53:30 +00:00
Nick Clifton 41a865baa2 (fetch_indirect_string): Display a warning message when a corrupt
DW_FORM_strp value is encountered.

(process_debug_info): Mention that the compilation unit offset is being
  displayed in hexadecimal.

(display_debug_lines): Fix typo in name of .debug_line section.
2005-05-23 12:12:00 +00:00
Ben Elliston d68f40330b binutils/ChangeLog
* readelf.c (read_and_display_attr_value): Handle a DW_AT_encoding
	value of DW_ATE_GNU_decimal_float.

include/elf/ChangeLog
	* dwarf2.h (enum dwarf_type): Assign DW_ATE_GNU_decimal_float from
	the user-defined encoding space pending inclusion in the standard.
2005-05-18 22:42:09 +00:00
Alan Modra 1fe44d7986 include/elf/
* ppc.h (DT_PPC_GOT): Rename from DT_PPC_GLINK.
bfd/
	* elf32-ppc.c (ppc_elf_size_dynamic_sections): Set DT_PPC_GOT,
	not DT_PPC_GLINK.
	(ppc_elf_finish_dynamic_sections): Likewise.
binutils/
	* readelf.c (get_ppc_dynamic_type): Display DT_PPC_GOT, not
	DT_PPC_GLINK.
2005-05-14 05:07:20 +00:00
Fred Fish f59f7c79ed 2005-05-13 Fred Fish <fnf@specifixinc.com>
* readelf.c: Fix a couple of obvious comment typos,
	'debug_str' -> 'debug_ranges' and proecess' -> 'process'.
2005-05-14 01:38:14 +00:00
H.J. Lu a4a0073871 2005-05-13 H.J. Lu <hongjiu.lu@intel.com>
* readelf.c (dump_ia64_unwind): Get stamp with proper size.
2005-05-13 18:35:55 +00:00
Nick Clifton 1ec742ac5e Add missing \n character to end of warning message created by the previous delta 2005-05-12 14:09:23 +00:00
Nick Clifton 52d1fb02ab If pointer_size has not been found then assume that it is 4 in order to
prevent a seg fault when process_extend_line_op attempts to read the line
data.
2005-05-12 09:05:36 +00:00
Alan Modra 7490d522be * readelf.c (get_ppc_dynamic_type): New function for DT_PPC_GLINK.
(get_dynamic_type): Call the above.
2005-05-11 14:10:59 +00:00
Nick Clifton b43b5d5f76 Update FSF address 2005-05-08 14:17:41 +00:00
Ben Elliston 85b1c36d31 * ar.c (mri_mode): Make static.
* arsup.c (obfd, real_name, outfile): Likewise.
	* binemul.c (ar_emul_create): Remove unused function.
	(ar_emul_default_create): Likewise.
	* binemul.h (ar_emul_create): Remove declaration.
	(ar_emul_default_create): Likewise.
	(struct bin_emulation_xfer_struct): Remove ar_create member.
	* bucomm.c (report): Make static.
	* bucomm.h (report): Remove declaration.
	* cxxfilt.c (mbuffer): Make static.
	(main): Use unsigned ints for some loop control variables.
	* readelf.c: Make many global variables static.
	* size.c (berkeley_format): Make static.
	(long_options): Likewise.
	* emul_aix.c (bin_aix_emulation): Remove ar_emul_default_create
	structure initialiser.
	(bin_aix5_emulation): Likewise.
	* emul_vanilla.c (bin_vanilla_emulation): Likewise.
2005-04-29 00:03:33 +00:00
Daniel Jacobowitz ae67fcb5e7 * readelf.c (display_debug_frames): Use data factor for
DW_CFA_def_cfa_sf and DW_CFA_def_cfa_offset_sf.
2005-04-20 18:43:16 +00:00
Nick Clifton 520494b6f8 (debug_apply_rela_addends): Remove redundant %s from printf string. 2005-04-16 07:43:56 +00:00
Maciej W. Rozycki a8b683fc5e * readelf.c (debug_apply_rela_addends): Reorder r_info as
necessary for 64-bit MIPS.
2005-04-04 15:07:18 +00:00
H.J. Lu 595cf52ef2 2005-03-31 H.J. Lu <hongjiu.lu@intel.com>
* readelf.c (do_full_section_name): New.
	(options): Add "--full-section-name"/'N'.
	(usage): Add -N/--full-section-name.
	(parse_args): Handle 'N'.
	(process_section_headers): Print out the full section name if
	do_full_section_name isn't 0.
2005-04-01 00:03:17 +00:00
Mark Mitchell b294bdf8d0 * elf32-arm.c (elf32_arm_modify_segment_map): New function.
(elf32_arm_additional_program_headers): Likewise.
	(elf_backend_modify_segment_map): Define.
	(elf_backend_additional_program_headers): Likewise.
	(elf32_arm_symbian_modify_segment_map): Use
	elf32_arm_modify_segment_map.

	* binutils/readelf.c (get_arm_segment_type): New function.
	(get_segment_type): Use it.

	* arm.h (PT_ARM_EXIDX): Define.
2005-03-18 17:06:16 +00:00
Jakub Jelinek e9e446227d * readelf.c (get_file_type, get_machine_name, get_osabi_name,
get_segment_type, get_section_type_name, get_elf_class,
	get_data_encoding, get_group_flags, dynamic_section_mips_val,
	get_symbol_binding, get_symbol_type, get_TAG_name, get_FORM_name,
	get_AT_name, process_mips_specific, process_gnu_liblist,
	get_note_type, get_netbsd_elfcore_note_type): Use snprintf instead of
	sprintf where needed.
	(get_dynamic_type): Likewise.  Increase buff to 64 bytes.
	(get_elf_section_flags): Increase buff to 33 bytes.  Avoid
	using strcat.
	(get_dynamic_flags): Renamed to...
	(print_dynamic_flags): ... this.  Print the flags to stdout instead
	of returning them as string.
	(process_dynamic_section): Adjust caller.
2005-02-28 15:27:16 +00:00
H.J. Lu 35515c66de 2005-02-25 H.J. Lu <hongjiu.lu@intel.com>
* readelf.c (display_debug_ranges): Print out offset for end of
	list.
2005-02-25 22:12:12 +00:00
Alan Modra dc3c06c291 * Makefile.am (syslex.o, sysinfo.o): Pass AM_CFLAGS to compiler.
(syslex.o, sysinfo.o, dlltool.o, rescoff.o): Remove duplicate
	dependencies.  Run "make dep-am".
	* nlmconv.c: Warning fixes.
	* readelf.c: Likewise.
	* srconv.c: Likewise.
	* sysdump.c: Likewise.
	* sysinfo.y: Likewise.
	* syslex.l: Likewise.  Use yyleng instead of strlen, memcpy instead
	of strcpy.
	* Makefile.in: Regenerate.
2005-02-22 12:57:27 +00:00
Alan Modra 665435215e * readelf.c (BYTE_GET8): Delete. Replace uses with BYTE_GET.
(byte_get_little_endian): Don't handle size of -8.
	(byte_get_signed, byte_get_big_endian): Likewise.
	(print_dec_vma, print_hex_vma): New functions.
	(print_vma): Use them.  Return chars output.
	(get_dynamic_data): Return a bfd_vma array.  Add ent_size parm.
	(process_symbol_table): Handle alpha and s390 .hash.
2005-02-21 02:55:56 +00:00
H.J. Lu 904c75ac4f 2005-02-18 H.J. Lu <hongjiu.lu@intel.com>
* readelf.c (display_debug_loc): Print out offset for end of
	list.
2005-02-18 15:58:45 +00:00
H.J. Lu d1f5c6e34f 2005-02-10 H.J. Lu <hongjiu.lu@intel.com>
* readelf.c (group_count): Don't initialize it.
	(process_section_groups): Reurn 1 if we won't do unwind nor
	section groups. Set group_count to 0 before counting group
	sections and return 1 if there are no group sections. Reread
	SHT_SYMTAB/SHT_STRTAB sections only when needed. Don't skip
	section 0.
	(process_object): Only set do_unwind to 0 if
	process_section_groups return 0.
2005-02-11 15:48:11 +00:00
Richard Sandiford 89fac5e3c3 * readelf.c (eh_addr_size): New variable.
(find_section): Move earlier in file.  Return empty sections too.
	(process_program_headers): Use find_section to find .dynamic.
	(process_section_headers): Initialize eh_addr_size.
	(dump_ia64_unwind, slurp_ia64_unwind_table, ia64_process_unwind)
	(dump_hppa_unwind, slurp_hppa_unwind_table, hppa_process_unwind)
	(display_debug_frames): Use it instead of local addr_size variable.
	(size_of_encoded_value): Get pointer size from eh_addr_size rather
	than is_32bit_elf.
2005-01-31 20:35:25 +00:00
H.J. Lu 0853c0928a 2005-01-10 H.J. Lu <hongjiu.lu@intel.com>
BZ 635
	readelf.c (saved_base_address): Removed.
	(decode_64bit_range): Likewise.
	(decode_range): Likewise.
	(display_64bit_debug_ranges): Likewise.
	(debug_info): Add range_lists, num_range_lists and
	max_range_lists.
	(read_and_display_attr_value): Handle do_debug_ranges.
	(process_debug_info): Likewise.
	(display_debug_ranges): Rewrite.
	(process_object): Free range_lists.
2005-01-10 17:28:37 +00:00
H.J. Lu e54b12b779 2005-01-05 H.J. Lu <hongjiu.lu@intel.com>
* readelf.c (display_debug_loc): Display base address
	specifiers.  Always output <End of list>.
2005-01-05 17:29:41 +00:00
H.J. Lu b38c701560 2005-01-05 H.J. Lu <hongjiu.lu@intel.com>
* readelf.c (have_frame_base): New.
	(need_base_address): Likewise.
	(saved_base_address): Likewise.
	(decode_location_expression): Return 1 if DW_AT_frame_base is
	needed.
	(debug_info): Add base_address and a have_frame_base pointer.
	(read_and_display_attr_value): Replace saved_DW_AT_low_pc with
	saved_base_address. Record base address. Set have_frame_base.
	Record if a location list has DW_AT_frame_base. Display if a
	location expression has no DW_AT_frame_base but needs one. Set
	saved_base_address only if needed.
	(process_debug_info): Clear have_frame_base, saved_base_address
	and set need_base_address.
	(display_debug_loc): Display if a location expression has no
	DW_AT_frame_base but needs one. Display if start >= end. Don't
	adjust for section address. Properly handle base address.
	(process_object): Free the have_frame_base pointer in
	debug_info.
2005-01-05 16:15:47 +00:00
H.J. Lu b0660586ab 2005-01-04 H.J. Lu <hongjiu.lu@intel.com>
* readelf.c (display_debug_loc): Display offsets for hole and
	overlap.
	(display_debug_str): Add a newline at the end.
2005-01-04 23:37:18 +00:00
Nick Clifton 5b18a4bc09 BZ 615
* readelf.c (process_debug_info): New.
(debug_info): Add num_loc_offsets, loc_offsets and
last_loc_offset_p.
(get_debug_info): Use process_debug_info.
(display_debug_loc): Properly handle location list. Warn if bad
location lists are encoutnered.
(read_and_process_attr_value): New.
(read_and_display_attr_value): Use "%lx" for DW_FORM_data4.
(display_debug_info): Use process_debug_info.
(process_object): Also free loc_offsets in debug_information.
2005-01-04 11:20:45 +00:00
H.J. Lu 0c548fce69 2004-12-27 H.J. Lu <hongjiu.lu@intel.com>
* readelf.c (read_leb128): Support 64bit host.
2004-12-27 19:08:31 +00:00
Nick Clifton 76a5626062 readelf.c (last_pointer_size, warned_about_missing_comp_units):
New variables associated with obtaining the pointer size for a comp_unit.
  (get_pointer_size_of_comp_unit): Add an extra parameter - the name of the
  section requesting the pointer size.  Use this name in error messages.  If
  there are not enough comp_units available produce a warning message, but
  return the last known pointer size so that section dumping can continue.
  (get_debug_info): Reset the new variables.
  (display_debug_lines): Add extra parameter to invocation of
  get_pointer_size_of_comp_unit and remove error message when it returns 0.
  (display_debug_loc): Likewise.
2004-12-22 11:04:44 +00:00
Ian Lance Taylor ebcb91b7dc * readelf.c (get_machine_flags): Handle E_MIPS_MACH_9000. 2004-12-09 06:19:12 +00:00
Nick Clifton dc85a459cf *sigh* undo previous delta which was done too early... 2004-11-08 12:59:37 +00:00
Nick Clifton 9b131d320b oops - omitted from previous delta 2004-11-08 12:55:40 +00:00
Nick Clifton 18bd398bc4 Add support to readelf to decode and display the contents of .debug_ranges
sections.
2004-11-03 10:44:45 +00:00
Alan Modra 57346661b5 * readelf.c (ia64_unw_aux_info, ia64_unw_table_entry): Rename from
unw_aux_info and unw_table_entry.
	(find_symbol_for_address): Pass symtab and strtab info explicitly.
	(dump_ia64_unwind): Rename unw_{aux_info,table_entry} with ia64_
	prefix.
	(slurp_ia64_unwind_table): Likewise.
	(ia64_process_unwind): Rename from old process_unwind.
	(hppa_unw_aux_info): New.
	(dump_hppa_unwind): New.
	(slurp_hppa_unwind_table): New.
	(hppa_process_unwind): New.
	(process_unwind): Factor out common unwinding checks; dispatch to
	unwind handler based on machine type.
2004-11-03 02:21:57 +00:00
Nick Clifton 935d0bca48 (display_debug_lines): Fix typo in error message. 2004-11-02 09:54:12 +00:00
Nick Clifton 1ec5cd3721 readelf.c (get_note_type): Handle notes not in core files.
(process_note_sections): New function.
  (process_corefile_contents): Rename to ...
  (process_notes): ... this.
  (process_object): Call process_notes, not process_corefile_contents.
doc/binutils.texi: Update readelf -n documentation.
2004-10-26 16:05:42 +00:00
H.J. Lu 1ffa9a1825 2004-10-25 David Mosberger <davidm@hpl.hp.com>
* readelf.c (slurp_ia64_unwind_table): Support relocations against
	non-section symbols by adding in the symbol value.
2004-10-25 15:24:25 +00:00
Nick Clifton d79b3d5057 PR 465
* readelf.c (dynamic_strings_length): New global variable.
(VALID_DYNAMIC_NAME, GET_DYNAMIC_NAME): New macros for accessing
strings in the dynamic string table.
(process_section_headers): Initialise dynamic_strings_length.
(process_dynamic_section): Likewise.
(process_object): Reset dynamic_string_length when the buffer is freed.
(dynamic_sections_mips_val): Use the new macros.
(process_dynamic_section): Likewise.
(process_version_sections): Likewise.
(process_symbol_table): Likewise.
(process_syminfo): Likewise.
(process_mips_specific): Likewise.
(dump_relocations): Add a new parameter 'strtablen' and use this to verify that
  string offset in a given reloc is valid.  Print a suitable error message
  otherwise.
(process_relocs): Pass the new argument to dump_relocations.
2004-10-25 09:59:01 +00:00
H.J. Lu 5ab0c1a196 2004-10-19 H.J. Lu <hongjiu.lu@intel.com>
* readelf.c (process_section_groups): Free symtab after use.
2004-10-19 19:30:33 +00:00
Paul Brook 8cb5156692 2004-10-12 Paul Brook <paul@codesourcery.com>
bfd/
	* elf32-arm.h: Support EABI version 4 objects.
binutils/
	* readelf.c (decode_ARM_machine_flags): Support EABI version 4.
gas/
	* config/tc-arm.c (md_begin): Change EF_ARM_EABI_VER3 to
	EF_ARM_EABI_VER4.
	(arm_eabis): Ditto.
	* doc/c-arm.texi: Document that we actually support -meabi=4, not
	-meabi=3.
include/
	* elf/arm.h (EF_ARM_EABI_VER4): Define.
2004-10-12 14:17:08 +00:00
Daniel Jacobowitz d2b2c203e1 bfd/
* config.bfd: Include 64-bit support for i[3-7]86-*-solaris2*.
	* elf64-x86-64.c (elf64_x86_64_section_from_shdr): New function.
	(elf_backend_section_from_shdr): Define.
binutils/
	* readelf.c (get_x86_64_section_type_name): New function.
	(get_section_type_name): Use it.
gas/
	* config/tc-i386.c: Include "elf/x86-64.h".
	(i386_elf_section_type): New function.
	* config/tc-i386.h (md_elf_section_type): Define.
	(i386_elf_section_type): New prototype.
gas/testsuite/
	* gas/i386/i386.exp: Don't run divide test for targets where '/'
	is a comment.  Run x86-64-unwind for 64-bit ELF targets.
	* gas/i386/x86-64-unwind.d, gas/i386/x86-64-unwind.s: New.
include/
	* elf/common.h (PT_SUNW_EH_FRAME): Define.
	* elf/x86-64.h (SHT_X86_64_UNWIND): Define.
ld/
	* configure.tgt: Include elf_x86_64 for i[3-7]86-*-solaris2*.
2004-10-08 13:55:11 +00:00
Alexandre Oliva 1c877e87e3 * readelf.c (get_machine_flags): Don't fall through into m68k cpu
types.
2004-10-07 21:01:43 +00:00
Nick Clifton 40a18ebd3a The patch below adds binutils support for the SHT_ARM_EXIDX, as defined by
the ARM EABI.
2004-10-01 12:59:42 +00:00