ecoffswap.h

来自「基于4个mips核的noc设计」· C头文件 代码 · 共 864 行 · 第 1/3 页

H
864
字号
  struct sym_ext *ext = (struct sym_ext *) ext_ptr;  SYMR intern[1];  *intern = *intern_copy;	/* Make it reasonable to do in-place.  */  bfd_h_put_32 (abfd, intern->iss, (bfd_byte *)ext->s_iss);  ecoff_put_off (abfd, intern->value, (bfd_byte *)ext->s_value);  /* now the fun stuff...  */  if (bfd_header_big_endian (abfd)) {    ext->s_bits1[0] = (((intern->st << SYM_BITS1_ST_SH_BIG)			& SYM_BITS1_ST_BIG)		       | ((intern->sc >> SYM_BITS1_SC_SH_LEFT_BIG)			  & SYM_BITS1_SC_BIG));    ext->s_bits2[0] = (((intern->sc << SYM_BITS2_SC_SH_BIG)			& SYM_BITS2_SC_BIG)		       | (intern->reserved ? SYM_BITS2_RESERVED_BIG : 0)		       | ((intern->index >> SYM_BITS2_INDEX_SH_LEFT_BIG)			  & SYM_BITS2_INDEX_BIG));    ext->s_bits3[0] = (intern->index >> SYM_BITS3_INDEX_SH_LEFT_BIG) & 0xff;    ext->s_bits4[0] = (intern->index >> SYM_BITS4_INDEX_SH_LEFT_BIG) & 0xff;  } else {    ext->s_bits1[0] = (((intern->st << SYM_BITS1_ST_SH_LITTLE)			& SYM_BITS1_ST_LITTLE)		       | ((intern->sc << SYM_BITS1_SC_SH_LITTLE)			  & SYM_BITS1_SC_LITTLE));    ext->s_bits2[0] = (((intern->sc >> SYM_BITS2_SC_SH_LEFT_LITTLE)			& SYM_BITS2_SC_LITTLE)		       | (intern->reserved ? SYM_BITS2_RESERVED_LITTLE : 0)		       | ((intern->index << SYM_BITS2_INDEX_SH_LITTLE)			  & SYM_BITS2_INDEX_LITTLE));    ext->s_bits3[0] = (intern->index >> SYM_BITS3_INDEX_SH_LEFT_LITTLE) & 0xff;    ext->s_bits4[0] = (intern->index >> SYM_BITS4_INDEX_SH_LEFT_LITTLE) & 0xff;  }#ifdef TEST  if (memcmp ((char *)ext, (char *)intern, sizeof (*intern)) != 0)    abort ();#endif}/* Swap in an external symbol record.  */static voidecoff_swap_ext_in (abfd, ext_copy, intern)     bfd *abfd;     PTR ext_copy;     EXTR *intern;{  struct ext_ext ext[1];  *ext = *(struct ext_ext *) ext_copy;  /* now the fun stuff...  */  if (bfd_header_big_endian (abfd)) {    intern->jmptbl      = 0 != (ext->es_bits1[0] & EXT_BITS1_JMPTBL_BIG);    intern->cobol_main  = 0 != (ext->es_bits1[0] & EXT_BITS1_COBOL_MAIN_BIG);    intern->weakext     = 0 != (ext->es_bits1[0] & EXT_BITS1_WEAKEXT_BIG);  } else {    intern->jmptbl      = 0 != (ext->es_bits1[0] & EXT_BITS1_JMPTBL_LITTLE);    intern->cobol_main  = 0 != (ext->es_bits1[0] & EXT_BITS1_COBOL_MAIN_LITTLE);    intern->weakext     = 0 != (ext->es_bits1[0] & EXT_BITS1_WEAKEXT_LITTLE);  }  intern->reserved = 0;#if defined (ECOFF_32) || defined (ECOFF_SIGNED_32)  intern->ifd           = bfd_h_get_signed_16 (abfd, (bfd_byte *)ext->es_ifd);#endif#if defined (ECOFF_64) || defined (ECOFF_SIGNED_64)  intern->ifd           = bfd_h_get_signed_32 (abfd, (bfd_byte *)ext->es_ifd);#endif  ecoff_swap_sym_in (abfd, &ext->es_asym, &intern->asym);#ifdef TEST  if (memcmp ((char *)ext, (char *)intern, sizeof (*intern)) != 0)    abort ();#endif}/* Swap out an external symbol record.  */static voidecoff_swap_ext_out (abfd, intern_copy, ext_ptr)     bfd *abfd;     const EXTR *intern_copy;     PTR ext_ptr;{  struct ext_ext *ext = (struct ext_ext *) ext_ptr;  EXTR intern[1];  *intern = *intern_copy;	/* Make it reasonable to do in-place.  */  /* now the fun stuff...  */  if (bfd_header_big_endian (abfd)) {    ext->es_bits1[0] = ((intern->jmptbl ? EXT_BITS1_JMPTBL_BIG : 0)			| (intern->cobol_main ? EXT_BITS1_COBOL_MAIN_BIG : 0)			| (intern->weakext ? EXT_BITS1_WEAKEXT_BIG : 0));    ext->es_bits2[0] = 0;#if defined (ECOFF_64) || defined (ECOFF_SIGNED_64)    ext->es_bits2[1] = 0;    ext->es_bits2[2] = 0;#endif  } else {    ext->es_bits1[0] = ((intern->jmptbl ? EXT_BITS1_JMPTBL_LITTLE : 0)			| (intern->cobol_main ? EXT_BITS1_COBOL_MAIN_LITTLE : 0)			| (intern->weakext ? EXT_BITS1_WEAKEXT_LITTLE : 0));    ext->es_bits2[0] = 0;#if defined (ECOFF_64) || defined (ECOFF_SIGNED_64)    ext->es_bits2[1] = 0;    ext->es_bits2[2] = 0;#endif  }#if defined (ECOFF_32) || defined (ECOFF_SIGNED_32)  bfd_h_put_signed_16 (abfd, intern->ifd, (bfd_byte *)ext->es_ifd);#endif#if defined (ECOFF_64) || defined (ECOFF_SIGNED_64)  bfd_h_put_signed_32 (abfd, intern->ifd, (bfd_byte *)ext->es_ifd);#endif  ecoff_swap_sym_out (abfd, &intern->asym, &ext->es_asym);#ifdef TEST  if (memcmp ((char *)ext, (char *)intern, sizeof (*intern)) != 0)    abort ();#endif}/* Swap in a relative file descriptor.  */static voidecoff_swap_rfd_in (abfd, ext_ptr, intern)     bfd *abfd;     PTR ext_ptr;     RFDT *intern;{  struct rfd_ext *ext = (struct rfd_ext *) ext_ptr;  *intern = bfd_h_get_32 (abfd, (bfd_byte *)ext->rfd);#ifdef TEST  if (memcmp ((char *)ext, (char *)intern, sizeof (*intern)) != 0)    abort ();#endif}/* Swap out a relative file descriptor.  */static voidecoff_swap_rfd_out (abfd, intern, ext_ptr)     bfd *abfd;     const RFDT *intern;     PTR ext_ptr;{  struct rfd_ext *ext = (struct rfd_ext *) ext_ptr;  bfd_h_put_32 (abfd, *intern, (bfd_byte *)ext->rfd);#ifdef TEST  if (memcmp ((char *)ext, (char *)intern, sizeof (*intern)) != 0)    abort ();#endif}/* Swap in an optimization symbol.  */static voidecoff_swap_opt_in (abfd, ext_copy, intern)     bfd *abfd;     PTR ext_copy;     OPTR *intern;{  struct opt_ext ext[1];  *ext = *(struct opt_ext *) ext_copy;  if (bfd_header_big_endian (abfd))    {      intern->ot = ext->o_bits1[0];      intern->value = (((unsigned int) ext->o_bits2[0]			<< OPT_BITS2_VALUE_SH_LEFT_BIG)		       | ((unsigned int) ext->o_bits3[0]			  << OPT_BITS2_VALUE_SH_LEFT_BIG)		       | ((unsigned int) ext->o_bits4[0]			  << OPT_BITS2_VALUE_SH_LEFT_BIG));    }  else    {      intern->ot = ext->o_bits1[0];      intern->value = ((ext->o_bits2[0] << OPT_BITS2_VALUE_SH_LEFT_LITTLE)		       | (ext->o_bits3[0] << OPT_BITS2_VALUE_SH_LEFT_LITTLE)		       | (ext->o_bits4[0] << OPT_BITS2_VALUE_SH_LEFT_LITTLE));    }  _bfd_ecoff_swap_rndx_in (bfd_header_big_endian (abfd),			   &ext->o_rndx, &intern->rndx);  intern->offset = bfd_h_get_32 (abfd, (bfd_byte *) ext->o_offset);#ifdef TEST  if (memcmp ((char *)ext, (char *)intern, sizeof (*intern)) != 0)    abort ();#endif}/* Swap out an optimization symbol.  */static voidecoff_swap_opt_out (abfd, intern_copy, ext_ptr)     bfd *abfd;     const OPTR *intern_copy;     PTR ext_ptr;{  struct opt_ext *ext = (struct opt_ext *) ext_ptr;  OPTR intern[1];  *intern = *intern_copy;	/* Make it reasonable to do in-place.  */  if (bfd_header_big_endian (abfd))    {      ext->o_bits1[0] = intern->ot;      ext->o_bits2[0] = intern->value >> OPT_BITS2_VALUE_SH_LEFT_BIG;      ext->o_bits3[0] = intern->value >> OPT_BITS3_VALUE_SH_LEFT_BIG;      ext->o_bits4[0] = intern->value >> OPT_BITS4_VALUE_SH_LEFT_BIG;    }  else    {      ext->o_bits1[0] = intern->ot;      ext->o_bits2[0] = intern->value >> OPT_BITS2_VALUE_SH_LEFT_LITTLE;      ext->o_bits3[0] = intern->value >> OPT_BITS3_VALUE_SH_LEFT_LITTLE;      ext->o_bits4[0] = intern->value >> OPT_BITS4_VALUE_SH_LEFT_LITTLE;    }  _bfd_ecoff_swap_rndx_out (bfd_header_big_endian (abfd),			    &intern->rndx, &ext->o_rndx);  bfd_h_put_32 (abfd, intern->value, (bfd_byte *) ext->o_offset);#ifdef TEST  if (memcmp ((char *)ext, (char *)intern, sizeof (*intern)) != 0)    abort ();#endif}/* Swap in a dense number.  */static voidecoff_swap_dnr_in (abfd, ext_copy, intern)     bfd *abfd;     PTR ext_copy;     DNR *intern;{  struct dnr_ext ext[1];  *ext = *(struct dnr_ext *) ext_copy;  intern->rfd = bfd_h_get_32 (abfd, (bfd_byte *) ext->d_rfd);  intern->index = bfd_h_get_32 (abfd, (bfd_byte *) ext->d_index);#ifdef TEST  if (memcmp ((char *)ext, (char *)intern, sizeof (*intern)) != 0)    abort ();#endif}/* Swap out a dense number.  */static voidecoff_swap_dnr_out (abfd, intern_copy, ext_ptr)     bfd *abfd;     const DNR *intern_copy;     PTR ext_ptr;{  struct dnr_ext *ext = (struct dnr_ext *) ext_ptr;  DNR intern[1];  *intern = *intern_copy;	/* Make it reasonable to do in-place.  */  bfd_h_put_32 (abfd, intern->rfd, (bfd_byte *) ext->d_rfd);  bfd_h_put_32 (abfd, intern->index, (bfd_byte *) ext->d_index);#ifdef TEST  if (memcmp ((char *)ext, (char *)intern, sizeof (*intern)) != 0)    abort ();#endif}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?