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 + -
显示快捷键?