obj_bsssec (abfd)->lma = obj_bsssec (abfd)->vma;
static const bfd_target *b_out_callback PARAMS ((bfd *));static bfd_reloc_status_type calljx_callback  PARAMS ((bfd *, struct bfd_link_info *, arelent *, PTR src, PTR dst,	   asection *));static bfd_reloc_status_type callj_callback  PARAMS ((bfd *, struct bfd_link_info *, arelent *, PTR data,	   unsigned int srcidx, unsigned int dstidx, asection *, boolean));static bfd_vma get_value PARAMS ((arelent *, struct bfd_link_info *,				  asection *));static int abs32code PARAMS ((bfd *, asection *, arelent *,			      unsigned int, struct bfd_link_info *));static boolean b_out_bfd_relax_section PARAMS ((bfd *, asection *,						struct bfd_link_info *,						boolean *));static bfd_byte *b_out_bfd_get_relocated_section_contents  PARAMS ((bfd *, struct bfd_link_info *, struct bfd_link_order *,	   bfd_byte *, boolean, asymbol **));/* Swaps the information in an executable header taken from a raw byte   stream memory image, into the internal exec_header structure.  */voidbout_swap_exec_header_in (abfd, raw_bytes, execp)     bfd *abfd;     struct external_exec *raw_bytes;     struct internal_exec *execp;{  struct external_exec *bytes = (struct external_exec *)raw_bytes;  /* Now fill in fields in the execp, from the bytes in the raw data.  */  execp->a_info   = bfd_h_get_32 (abfd, bytes->e_info);  execp->a_text   = GET_WORD (abfd, bytes->e_text);  execp->a_data   = GET_WORD (abfd, bytes->e_data);  execp->a_bss    = GET_WORD (abfd, bytes->e_bss);  execp->a_syms   = GET_WORD (abfd, bytes->e_syms);  execp->a_entry  = GET_WORD (abfd, bytes->e_entry);  execp->a_trsize = GET_WORD (abfd, bytes->e_trsize);  execp->a_drsize = GET_WORD (abfd, bytes->e_drsize);  execp->a_tload  = GET_WORD (abfd, bytes->e_tload);  execp->a_dload  = GET_WORD (abfd, bytes->e_dload);  execp->a_talign = bytes->e_talign[0];  execp->a_dalign = bytes->e_dalign[0];  execp->a_balign = bytes->e_balign[0];  execp->a_relaxable = bytes->e_relaxable[0];}/* Swaps the information in an internal exec header structure into the   supplied buffer ready for writing to disk.  */PROTO(void, bout_swap_exec_header_out,	  (bfd *abfd,	   struct internal_exec *execp,	   struct external_exec *raw_bytes));voidbout_swap_exec_header_out (abfd, execp, raw_bytes)     bfd *abfd;     struct internal_exec *execp;     struct external_exec *raw_bytes;{  struct external_exec *bytes = (struct external_exec *)raw_bytes;  /* Now fill in fields in the raw data, from the fields in the exec struct. */  bfd_h_put_32 (abfd, execp->a_info  , bytes->e_info);  PUT_WORD (abfd, execp->a_text  , bytes->e_text);  PUT_WORD (abfd, execp->a_data  , bytes->e_data);  PUT_WORD (abfd, execp->a_bss   , bytes->e_bss);  PUT_WORD (abfd, execp->a_syms  , bytes->e_syms);  PUT_WORD (abfd, execp->a_entry , bytes->e_entry);  PUT_WORD (abfd, execp->a_trsize, bytes->e_trsize);  PUT_WORD (abfd, execp->a_drsize, bytes->e_drsize);  PUT_WORD (abfd, execp->a_tload , bytes->e_tload);  PUT_WORD (abfd, execp->a_dload , bytes->e_dload);  bytes->e_talign[0] = execp->a_talign;  bytes->e_dalign[0] = execp->a_dalign;  bytes->e_balign[0] = execp->a_balign;  bytes->e_relaxable[0] = execp->a_relaxable;}static const bfd_target *b_out_object_p (abfd)     bfd *abfd;{  struct internal_exec anexec;  struct external_exec exec_bytes;  if (bfd_read ((PTR) &exec_bytes, 1, EXEC_BYTES_SIZE, abfd)      != EXEC_BYTES_SIZE) {    if (bfd_get_error () != bfd_error_system_call)      bfd_set_error (bfd_error_wrong_format);    return 0;  }  anexec.a_info = bfd_h_get_32 (abfd, exec_bytes.e_info);  if (N_BADMAG (anexec)) {    bfd_set_error (bfd_error_wrong_format);    return 0;  }  bout_swap_exec_header_in (abfd, &exec_bytes, &anexec);  return aout_32_some_aout_object_p (abfd, &anexec, b_out_callback);}/* Finish up the opening of a b.out file for reading.  Fill in all the   fields that are not handled by common code.  */static const bfd_target *b_out_callback (abfd)     bfd *abfd;{  struct internal_exec *execp = exec_hdr (abfd);  unsigned long bss_start;  /* Architecture and machine type */  bfd_set_arch_mach(abfd,		    bfd_arch_i960, /* B.out only used on i960 */		    bfd_mach_i960_core /* Default */		    );  /* The positions of the string table and symbol table.  */  obj_str_filepos (abfd) = N_STROFF (*execp);  obj_sym_filepos (abfd) = N_SYMOFF (*execp);  /* The alignments of the sections */  obj_textsec (abfd)->alignment_power = execp->a_talign;  obj_datasec (abfd)->alignment_power = execp->a_dalign;  obj_bsssec  (abfd)->alignment_power = execp->a_balign;  /* The starting addresses of the sections.  */  obj_textsec (abfd)->vma = execp->a_tload;  obj_datasec (abfd)->vma = execp->a_dload;  /* And reload the sizes, since the aout module zaps them */  obj_textsec (abfd)->_raw_size = execp->a_text;  bss_start = execp->a_dload + execp->a_data; /* BSS = end of data section */  obj_bsssec (abfd)->vma = align_power (bss_start, execp->a_balign);  /* The file positions of the sections */  obj_textsec (abfd)->filepos = N_TXTOFF(*execp);  obj_datasec (abfd)->filepos = N_DATOFF(*execp);  /* The file positions of the relocation info */  obj_textsec (abfd)->rel_filepos = N_TROFF(*execp);  obj_datasec (abfd)->rel_filepos =  N_DROFF(*execp);  adata(abfd).page_size = 1;	/* Not applicable. */  adata(abfd).segment_size = 1; /* Not applicable. */  adata(abfd).exec_bytes_size = EXEC_BYTES_SIZE;  if (execp->a_relaxable)   abfd->flags |= BFD_IS_RELAXABLE;  return abfd->xvec;}