From: Steve Chamberlain Date: Mon, 4 May 1992 23:42:03 +0000 (+0000) Subject: * bfd-in.h: bump version to 1.96 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=2cfd05621b47ac1b59e751533289e255b85e2ae5;p=binutils-gdb.git * bfd-in.h: bump version to 1.96 Major change; changed calling convention for bfd_get_relocated_section_contents so that caller allocates memory for section data. * coffcode.h (bfd_coff_get_relocated_section_contents), reloc.c, seclet.c, targets.c, bfd.c: reflect new convention. * coffcode.h (styp_to_sec_flags): if styp_flags is not a special case, then use reasonable default values for SEC_* flags. --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index a6566df5860..55c53b6363d 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,14 @@ +Mon May 4 11:49:15 1992 Steve Chamberlain (sac@thepub.cygnus.com) + + * bfd-in.h: bump version to 1.96 + Major change; changed calling convention for + bfd_get_relocated_section_contents so that caller allocates + memory for section data. + * coffcode.h (bfd_coff_get_relocated_section_contents), reloc.c, + seclet.c, targets.c, bfd.c: reflect new convention. + * coffcode.h (styp_to_sec_flags): if styp_flags is not a special + case, then use reasonable default values for SEC_* flags. + Fri May 1 12:58:34 1992 Steve Chamberlain (sac@thepub.cygnus.com) * coffcode.h (coff_write_object_contents): use RELSZ to work out diff --git a/bfd/bfd-in.h b/bfd/bfd-in.h index 1d299adad17..f14de501bf0 100644 --- a/bfd/bfd-in.h +++ b/bfd/bfd-in.h @@ -52,7 +52,7 @@ here. */ # endif #endif -#define BFD_VERSION "0.18" +#define BFD_VERSION "1.96" /* forward declaration */ typedef struct _bfd bfd; @@ -226,7 +226,7 @@ typedef struct bfd_error_vector { } bfd_error_vector_type; -PROTO (char *, bfd_errmsg, ()); +PROTO (char *, bfd_errmsg, (bfd_ec error_tag)); PROTO (void, bfd_perror, (CONST char *message)); @@ -235,7 +235,7 @@ typedef enum bfd_print_symbol bfd_print_symbol_name, bfd_print_symbol_more, bfd_print_symbol_all, - bfd_print_symbol_nm, /* Pretty format suitable for nm program. */ + bfd_print_symbol_nm /* Pretty format suitable for nm program. */ } bfd_print_symbol_type; @@ -281,7 +281,8 @@ CAT(NAME,_sizeof_headers),\ CAT(NAME,_bfd_debug_info_start),\ CAT(NAME,_bfd_debug_info_end),\ CAT(NAME,_bfd_debug_info_accumulate),\ -CAT(NAME,_bfd_get_relocated_section_contents) +CAT(NAME,_bfd_get_relocated_section_contents),\ +CAT(NAME,_bfd_relax_section) #define COFF_SWAP_TABLE \ coff_swap_aux_in, coff_swap_sym_in, coff_swap_lineno_in, \ diff --git a/bfd/coff-a29k.c b/bfd/coff-a29k.c index 5ec48aa9102..8f7674d9774 100644 --- a/bfd/coff-a29k.c +++ b/bfd/coff-a29k.c @@ -61,12 +61,13 @@ asymbol *symbol; /* this function is in charge of performing all the 29k relocations */ static bfd_reloc_status_type -DEFUN(a29k_reloc,(abfd, reloc_entry, symbol_in, data, input_section), +DEFUN(a29k_reloc,(abfd, reloc_entry, symbol_in, data, input_section, output_bfd), bfd *abfd AND arelent *reloc_entry AND asymbol *symbol_in AND PTR data AND - asection *input_section) + asection *input_section AND + bfd *output_bfd) { /* the consth relocation comes in two parts, we have to remember the state between calls, in these variables */ @@ -79,12 +80,18 @@ DEFUN(a29k_reloc,(abfd, reloc_entry, symbol_in, data, input_section), unsigned short r_type; long signed_value; - unsigned long addr = reloc_entry->address + input_section->vma; + unsigned long addr = reloc_entry->address ; /*+ input_section->vma*/ bfd_byte *hit_data =addr + (bfd_byte *)(data); r_type = reloc_entry->howto->type; - /* FIXME: Do we need to check for partial linking here */ + if (output_bfd) { + /* Partial linking - do nothing */ + reloc_entry->address += input_section->output_offset; + return bfd_reloc_ok; + + } + if (symbol_in && (symbol_in->section == &bfd_und_section)) { /* Keep the state machine happy in case we're called again */ @@ -191,7 +198,7 @@ DEFUN(a29k_reloc,(abfd, reloc_entry, symbol_in, data, input_section), return(bfd_reloc_overflow); } - bfd_put_16(abfd, insn, hit_data); + bfd_put_16(abfd, insn, hit_data); break; case R_WORD: insn = bfd_get_32(abfd, hit_data); diff --git a/bfd/seclet.c b/bfd/seclet.c index e03048847e0..871b26f8c6c 100644 --- a/bfd/seclet.c +++ b/bfd/seclet.c @@ -57,10 +57,11 @@ DEFUN(rel,(abfd, seclet, output_section), bfd_seclet_type *seclet AND asection *output_section) { - bfd_byte *data; + if (output_section->flags & SEC_HAS_CONTENTS ) { - data = bfd_get_relocated_section_contents(abfd, seclet); + bfd_byte *data = alloca(seclet->size); + data = bfd_get_relocated_section_contents(abfd, seclet, data); if(bfd_set_section_contents(abfd, output_section, data, @@ -69,6 +70,7 @@ DEFUN(rel,(abfd, seclet, output_section), { abort(); } + } }