From d0a27c3b8e57cf15bb15292bf9e90efc7be5b710 Mon Sep 17 00:00:00 2001 From: Per Bothner Date: Thu, 26 Sep 1991 18:26:28 +0000 Subject: [PATCH] Fix bfd_perform_relocation to handle pc-relative relocs better. --- bfd/ChangeLog | 43 +++++++++++++++++++++++++++++++++++++++++++ bfd/reloc.c | 8 ++++---- 2 files changed, 47 insertions(+), 4 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index db1e1383beb..3e3e707f06b 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,46 @@ +Thu Sep 26 11:24:24 1991 Per Bothner (bothner at cygnus.com) + + * reloc.c (bfd_perform_relocation): Fix pc-relative relocation + to use correct segment. + +Mon Sep 23 18:24:34 1991 Per Bothner (bothner at cygnus.com) + + * aoutx.h (print_symbol): Handle missing symbol->name. + +Fri Sep 20 12:26:01 1991 Stu Grossman (grossman at cygnus.com) + + * aoutf1.h (swapcore_sparc): Change name of USRSTACK, fix comment + at top of routine. + +Tue Sep 17 17:23:49 1991 Stu Grossman (grossman at cygnus.com) + + * oasys.c, configure.in, config/h-irix3, config/t-irix3: + add sgi/irix support. + +Thu Sep 12 14:29:09 1991 John Gilmore (gnu at cygint.cygnus.com) + + Changes for the AMD 29000 Ultracomputer port from David Wood. + (wood@nyu.edu). + + * opncls.c (bfd_fdopenr): Handle NO_FCNTL. + + * Makefile.in: Make subdirs work by using $(INCDIR) in the + crude dependencies. + + * coffcode.h (coff_real_object_p): Pass information about the + current file's coff symbol format to BFD via the coff_data struct. + (coff_find_nearest_line): obj_icof => coff_data. + (coff_swap_sym_{in,out}): Check that SYMNMLEN == E_SYMNMLEN. + (coff_swap_aux_{in,out}): Check that FILNMLEN == E_FILNMLEN + and DIMNUM == E_DIMNUM. + * configure.in: Handle a29k-*-* hosts, and targets + a29k-*-coff, a29k-*-aout, and a29k-*-sym1. + * libcoff-in.h: Add local_n_btmask, local_n_btshft, + local_n_tmask, local_n_tshift, local_symesz, local_auxesz, + local_linesz to `coff_data' (tdata) struct. + (coff_data, coff_data_type, coff_tdata): Rename struct icofdata. + * config/h-ultra3: Handle a29k-*-* hosts as Ultracomputers. + Thu Sep 12 14:07:22 1991 Roland H. Pesch (pesch at cygint.cygnus.com) * Makefile.in: $(MAKE) for make, $(docdir) for doc diff --git a/bfd/reloc.c b/bfd/reloc.c index 466497ef9a4..2d931c97f08 100644 --- a/bfd/reloc.c +++ b/bfd/reloc.c @@ -84,7 +84,7 @@ The symbol to relocate against was undefined. $ bfd_reloc_undefined, -The relocaction was performed, but may not be ok - presently generated +The relocation was performed, but may not be ok - presently generated only when linking i960 coff files with i960 b.out symbols. $ bfd_reloc_dangerous @@ -131,7 +131,7 @@ $} arelent; @table @code @item sym_ptr_ptr The symbol table pointer points to a pointer to the symbol ascociated with the -relocation request. This would naturaly be the pointer into the table +relocation request. This would naturally be the pointer into the table returned by the back end's get_symtab action. @xref{Symbols}. The symbol is referenced through a pointer to a pointer so that tools like the linker can fixup all the symbols of the same name by modifying @@ -148,7 +148,7 @@ two bytes of a four byte word would not touch the first byte pointed to in a big endian world. @item addend The addend is a value provided by the back end to be added (!) to the -relocation offset. It's interpretation is dependent upon the howto. +relocation offset. Its interpretation is dependent upon the howto. For example, on the 68k the code: *+ @@ -513,7 +513,7 @@ DEFUN(bfd_perform_relocation,(abfd, relocation -= - output_base + input_section->output_offset; + input_section->output_section->vma + input_section->output_offset; if (howto->pcrel_offset == true) { relocation -= reloc_entry->address; -- 2.30.2