This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: hppa patchset 1 of 4


Hi Alan,

: This lot is bfd/ minus changes to elf32-hppa.c.  I'm not posting them
: (unless requested) because they're rather major and Jeff has said he is
: happy to pass "ownership" of the elf32-hppa code to me.

Great - would add yourself to that section in the MAINTAINERS file
please ?

: bfd/ChangeLog
: 	* elf64-hppa.c (elf64_hppa_dyn_hash_table_init): Add
: 	ATTRIBUTE_UNUSED to unused args.
: 	(get_opd): Likewise.
: 	(get_plt): Likewise.
: 	(get_dlt): Likewise.
: 	(get_stub): Likewise.
: 	(elf64_hppa_adjust_dynamic_symbol): Likewise.
: 	(elf64_hppa_link_output_symbol_hook): Likewise.
: 	(elf64_hppa_check_relocs): Delete unused var.
: 	(elf64_hppa_size_dynamic_sections): Likewise.
: 	(elf64_hppa_finalize_opd): Likewise.
: 	(elf64_hppa_finalize_dynreloc): Likewise.
: 	(elf64_hppa_modify_segment_map): Likewise.
: 	(elf64_hppa_finish_dynamic_sections): Likewise.
: 
: 	* elf-hppa.h (elf_hppa_final_write_processing): Add
: 	ATTRIBUTE_UNUSED to unused args.
: 	(elf_hppa_final_link_relocate): Likewise.
: 	(elf_hppa_record_segment_addrs): Add paretheses.
: 	(elf_hppa_relocate_section): Constify dyn_name.
: 
: 	From  David Huggins-Daines  <dhd@linuxcare.com>
: 	* config.bfd: Add hppa*64*-*-linux-gnu 64-bit target, and
: 	rearrange case statement so that it gets preferred to 32-bit ones.
: 
: 	* elf32-hppa.c (elf32_hppa_bfd_final_link_relocate): Use
: 	asection->id instead of address of asection structure.
: 	(elf32_hppa_size_stubs): Likewise.
: 
: 	* elf32-hppa.c (elf32_hppa_size_stubs): Use just one stub section
: 	for .init* and .fini*.
: 
: 	* elf32-hppa.c (elf32_hppa_bfd_final_link_relocate): Mask pointers
: 	and addends used in stub names to 32 bits.
: 	(elf32_hppa_size_stubs): Likewise.
: 
: 	* elf-hppa.h (elf_hppa_final_link_relocate): Don't sum addend
: 	twice for R_PARISC_GPREL64.  Use bfd_put_32 for R_PARISC_PCREL32,
: 	not bfd_put_64.  Fix minor comment typo and formatting.
: 
: 	Changes to create multiple linker stubs, positioned immediately
: 	before the section where they are required.
: 	* elf32-hppa.c: Don't include hppa_stubs.h.
: 	(elf32_hppa_stub_hash_entry): Add a pointer to the stub section.
: 	(elf32_hppa_stub_hash_table): Delete.
: 	(elf32_hppa_link_hash_entry): Delete.
: 	(elf32_hppa_link_hash_table): Use plain bfd_hash_table for
: 	stub_hash_table, and store the struct here rather than a pointer.
: 	Delete output_symbol_count.  Add offset array.  Change
: 	global_value to a bfd_vma.
: 	(elf32_hppa_stub_hash_lookup): Use table instead of table->root.
: 	(elf32_hppa_stub_hash_traverse): Delete.
: 	(elf32_hppa_name_of_stub): Delete.
: 	(elf32_hppa_link_hash_lookup): Delete.
: 	(elf32_hppa_link_hash_traverse): Delete.
: 	(elf32_hppa_stub_hash_table_init): Delete.
: 	(elf32_hppa_size_of_stub): Pass input section and offset rather
: 	than location and calculate location here.  Don't pass name as all
: 	stubs are now the same size.
: 	(elf32_hppa_stub_hash_newfunc): Init new fields.
: 	(elf32_hppa_link_hash_table_create): Likewise, and stub_hash_table
: 	too.
: 	(elf32_hppa_bfd_final_link_relocate): Cast enums to int before
: 	comparing against ints.  Rewrite stub handling code.
: 	(elf32_hppa_relocate_section): Make r_type and r_symndx unsigned.
: 	Case enums to int before comparing against ints.  Remove
: 	bfd_reloc_dangerous case.
: 	(elf32_hppa_build_one_stub): Rewrite.
: 	(elf32_hppa_size_one_stub): New function.
: 	(elf32_hppa_build_stubs): Rewrite.
: 	(elf32_hppa_size_stubs): Pass in linker call-back functions.
: 	Rewrite stub-handling specific code.
: 
: 	* elf32-hppa.h (elf32_hppa_size_stubs): Update prototype.
: 
: 	* elf64-hppa.c (elf64_hppa_dyn_hash_entry): Fix a comment typo.
: 
: 	* hppa_stubs.h: Delete.
: 	* Makefile.am (SOURCE_HFILES): Remove hppa_stubs.h
: 	(elf32-hppa.lo): Remove hppa_stubs.h from dependencies.
: 	* Makefile.in: Regenerate.
: 
: 	* elf-hppa.h (_bfd_elf_hppa_gen_reloc_type): Handle e_nlsel and
: 	e_nlrsel.
: 
: 	* libhppa.h (hppa_field_adjust): Correct e_nsel case.
: 
: 	* elf32-hppa.c (elf32_hppa_relocate_section): Mention the offset
: 	and section name for bfd_reloc_notsupported error message.
: 	(elf32_hppa_bfd_final_link_relocate): Print reasons for returning
: 	bfd_reloc_notsupported.
: 	(elf32_hppa_relocate_section): Add ATTRIBUTE_UNUSED to output_bfd.
: 
: 	* elf32-hppa.c (elf32_hppa_bfd_final_link_relocate): Handle
: 	undefined weak symbols for all relocs.
: 	(elf32_hppa_size_of_stub): Adjust calculation by 8 since branch
: 	offsets are relative to one past the delay slot.
: 	(elf32_hppa_size_stubs): Account for reloc addend when calculating
: 	branch destination.  Put addend into stub name too.
: 	(elf32_hppa_bfd_final_link_relocate): Account for reloc addend and
: 	adjust by 8 when deciding whether a linker stub is needed.  Put
: 	addend into stub name as for above.
: 
: 	* elf32-hppa.c (hppa_elf_relocate_insn): Change signed/unsigned on
: 	various args and vars.
: 	(elf32_hppa_bfd_final_link_relocate): Here too.
: 	(elf32_hppa_size_stubs): Rename index -> indx.  Use e_indx for
: 	inner block var to avoid shadowing.
: 
: 	* elf32-hppa.h (_bfd_elf32_hppa_gen_reloc_type):  Make `field' arg
: 	unsigned.
: 	* elf64-hppa.h (_bfd_elf64_hppa_gen_reloc_type): Ditto.
: 	* elf-hppa.h (_bfd_elf_hppa_gen_reloc_type): Ditto.
: 	(elf_hppa_fake_sections): Rename local var to avoid shadowing.
: 
: 	* libhppa.h: Change practically all unsigned ints to plain ints.
: 	Remove tests on gcc version.  Instead use ATTRIBUTE_UNUSED for
: 	prototypes.
: 
: 	From Ryan Bradetich  <rbradetich@uswest.net>
: 	* libhppa.h (hppa_opcode_type): New enum to replace #define's.
: 	* elf32-hppa.c (elf32_hppa_bfd_final_link_relocate): Modify to
: 	suit above.
: 	From  David Huggins-Daines  <dhd@linuxcare.com>
: 	* elf-hppa.h (elf_hppa_relocate_insn): Update the opcode constants
: 	to the new OP_* ones.
: 
: 	* elf32-hppa.c (elf32_hppa_size_stubs): Consolidate freeing on
: 	error exit.  Bail out earlier on plabel relocs that we aren't
: 	interested in.  Don't tell elf32_hppa_stub_hash_lookup to copy
: 	string, and then don't free our copy.
: 	(elf32_hppa_build_one_stub): Make insn unsigned int.
: 
: 	* libhppa.h (bfd_hppa_insn2fmt): 22 bit branches are only
: 	available with BL, not BE and BLE.
: 
: 	* elf32-hppa.c (hppa_elf_relocate_insn): Add some more example
: 	code for elf arg relocs.
: 	(elf32_hppa_bfd_final_link_relocate): Replace boolean is_local
: 	argument with elf_link_hash_entry h.  Handle undefined weak
: 	symbols.  Move $global$ lookup from here...
: 	(elf32_hppa_relocate_section): ...to here.  Return correct error
: 	message for non-handled relocs.
: 	(elf32_hppa_size_of_stub): Correctly test branch range.  Previous
: 	wrong test was -0x3ffff to +0x40000.
: 
: 	* elf-hppa.h (elf_hppa_final_link_relocate): R_PARISC_DIR17R,
: 	R_PARISC_DIR17F, and R_PARISC_DIR21L are for absolute branches;
: 	Handle them as such.
: 	(elf_hppa_relocate_insn): Fix a typo.
: 
: 	* libhppa.h (GET_FIELD, GET_BIT, MASK, CATENATE, ELEVEN): Delete.
: 	(assemble_3, assemble_6, assemble_12, assemble_16, assemble_16a,
: 	assemble_17, assemble_21): Delete.
: 	Supply defines for all 64 possible opcodes.
: 	(bfd_hppa_insn2fmt): Add bfd argument, and use to select wide mode
: 	formats.  Handle COMICLR.
: 	(hppa_rebuild_insn): Delete bfd argument.  Handle formats 10, -11,
: 	-10, -16, 16, 22.
: 
: 	* elf32-hppa.c (hppa_elf_relocate_insn): Complete rewrite.
: 	(elf32_hppa_bfd_final_link_relocate): Major rewrite.
: 	(elf32_hppa_build_one_stub): Modify hppa_elf_relocate_insn calls
: 	to suit.
: 	(elf32_hppa_size_stubs): Don't free stub_name twice.  Read in all
: 	the local syms - did this code get deleted accidentally?  Ignore
: 	undefined and undefweak syms.
: 
: 	* elf-hppa.h (elf_hppa_final_link): Move hppa_info to outermost
: 	block.  Use it instead of elf64_hppa_hash_table (info).
: 	(elf_hppa_final_link_relocate): Use hppa_info instead of
: 	elf64_hppa_hash_table (info).
: 
: 	* libhppa.h (re_assemble_3, re_assemble_12, re_assemble_16,
: 	re_assemble_17, re_assemble_21, re_assemble_22): Don't mask insn.
: 	(hppa_rebuild_insn): Mask immediate bits here instead.
: 	* elf-hppa.h (elf_hppa_relocate_insn): Mask here too.

Approved.

Cheers
	Nick

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]