coff-tic54x.c

来自「基于4个mips核的noc设计」· C语言 代码 · 共 761 行 · 第 1/2 页

C
761
字号
        {          relent->sym_ptr_ptr = (symbols                                 + obj_convert (abfd)[reloc->r_symndx]);          ptr = *(relent->sym_ptr_ptr);        }    }  else    {      relent->sym_ptr_ptr = section->symbol_ptr_ptr;      ptr = *(relent->sym_ptr_ptr);    }  /* The symbols definitions that we have read in have been     relocated as if their sections started at 0. But the offsets     refering to the symbols in the raw data have not been     modified, so we have to have a negative addend to compensate.     Note that symbols which used to be common must be left alone */  /* Calculate any reloc addend by looking at the symbol */  CALC_ADDEND (abfd, ptr, *reloc, relent);  relent->address -= section->vma;  /* !!     relent->section = (asection *) NULL;*/  /* Fill in the relent->howto field from reloc->r_type */  tic54x_lookup_howto (relent, reloc);}/* COFF0 differs in file/section header size and relocation entry size */static CONST bfd_coff_backend_data ticoff0_swap_table ={  coff_SWAP_aux_in, coff_SWAP_sym_in, coff_SWAP_lineno_in,  coff_SWAP_aux_out, coff_SWAP_sym_out,  coff_SWAP_lineno_out, coff_SWAP_reloc_out,  coff_SWAP_filehdr_out, coff_SWAP_aouthdr_out,  coff_SWAP_scnhdr_out,  FILHSZ_V0, AOUTSZ, SCNHSZ_V01, SYMESZ, AUXESZ, RELSZ_V0, LINESZ, FILNMLEN,#ifdef COFF_LONG_FILENAMES  true,#else  false,#endif#ifdef COFF_LONG_SECTION_NAMES  true,#else  false,#endif#ifdef COFF_FORCE_SYMBOLS_IN_STRINGS  true,#else  false,#endif#ifdef COFF_DEBUG_STRING_WIDE_PREFIX  4,#else  2,#endif  COFF_DEFAULT_SECTION_ALIGNMENT_POWER,  coff_SWAP_filehdr_in, coff_SWAP_aouthdr_in, coff_SWAP_scnhdr_in,  coff_SWAP_reloc_in, ticoff0_bad_format_hook, coff_set_arch_mach_hook,  coff_mkobject_hook, styp_to_sec_flags, coff_set_alignment_hook,  coff_slurp_symbol_table, symname_in_debug_hook, coff_pointerize_aux_hook,  coff_print_aux, coff_reloc16_extra_cases, coff_reloc16_estimate,  coff_classify_symbol, coff_compute_section_file_positions,  coff_start_final_link, coff_relocate_section, coff_rtype_to_howto,  coff_adjust_symndx, coff_link_add_one_symbol,  coff_link_output_has_begun, coff_final_link_postscript};/* COFF1 differs in section header size */static CONST bfd_coff_backend_data ticoff1_swap_table ={  coff_SWAP_aux_in, coff_SWAP_sym_in, coff_SWAP_lineno_in,  coff_SWAP_aux_out, coff_SWAP_sym_out,  coff_SWAP_lineno_out, coff_SWAP_reloc_out,  coff_SWAP_filehdr_out, coff_SWAP_aouthdr_out,  coff_SWAP_scnhdr_out,  FILHSZ, AOUTSZ, SCNHSZ_V01, SYMESZ, AUXESZ, RELSZ, LINESZ, FILNMLEN,#ifdef COFF_LONG_FILENAMES  true,#else  false,#endif#ifdef COFF_LONG_SECTION_NAMES  true,#else  false,#endif  COFF_DEFAULT_SECTION_ALIGNMENT_POWER,#ifdef COFF_FORCE_SYMBOLS_IN_STRINGS  true,#else  false,#endif#ifdef COFF_DEBUG_STRING_WIDE_PREFIX  4,#else  2,#endif  coff_SWAP_filehdr_in, coff_SWAP_aouthdr_in, coff_SWAP_scnhdr_in,  coff_SWAP_reloc_in, ticoff1_bad_format_hook, coff_set_arch_mach_hook,  coff_mkobject_hook, styp_to_sec_flags, coff_set_alignment_hook,  coff_slurp_symbol_table, symname_in_debug_hook, coff_pointerize_aux_hook,  coff_print_aux, coff_reloc16_extra_cases, coff_reloc16_estimate,  coff_classify_symbol, coff_compute_section_file_positions,  coff_start_final_link, coff_relocate_section, coff_rtype_to_howto,  coff_adjust_symndx, coff_link_add_one_symbol,  coff_link_output_has_begun, coff_final_link_postscript};/* TI COFF v0, DOS tools (little-endian headers) */const bfd_target tic54x_coff0_vec ={  "coff0-c54x",			/* name */  bfd_target_coff_flavour,  BFD_ENDIAN_LITTLE,		/* data byte order is little */  BFD_ENDIAN_LITTLE,		/* header byte order is little (DOS tools) */  (HAS_RELOC | EXEC_P |		/* object flags */   HAS_LINENO | HAS_DEBUG |   HAS_SYMS | HAS_LOCALS | WP_TEXT ),  (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */  '_',				/* leading symbol underscore */  '/',				/* ar_pad_char */  15,				/* ar_max_namelen */  bfd_getl64, bfd_getl_signed_64, bfd_putl64,  tic54x_getl32, tic54x_getl_signed_32, tic54x_putl32,  bfd_getl16, bfd_getl_signed_16, bfd_putl16,	/* data */  bfd_getl64, bfd_getl_signed_64, bfd_putl64,  bfd_getl32, bfd_getl_signed_32, bfd_putl32,  bfd_getl16, bfd_getl_signed_16, bfd_putl16,	/* hdrs */  {_bfd_dummy_target, coff_object_p,	/* bfd_check_format */   bfd_generic_archive_p, _bfd_dummy_target},  {bfd_false, coff_mkobject, _bfd_generic_mkarchive,	/* bfd_set_format */   bfd_false},  {bfd_false, coff_write_object_contents,	/* bfd_write_contents */   _bfd_write_archive_contents, bfd_false},  BFD_JUMP_TABLE_GENERIC (coff),  BFD_JUMP_TABLE_COPY (coff),  BFD_JUMP_TABLE_CORE (_bfd_nocore),  BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),  BFD_JUMP_TABLE_SYMBOLS (coff),  BFD_JUMP_TABLE_RELOCS (coff),  BFD_JUMP_TABLE_WRITE (tic54x),  BFD_JUMP_TABLE_LINK (coff),  BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),  NULL,  (PTR)&ticoff0_swap_table};/* TI COFF v0, SPARC tools (big-endian headers) */const bfd_target tic54x_coff0_beh_vec ={  "coff0-beh-c54x",			/* name */  bfd_target_coff_flavour,  BFD_ENDIAN_LITTLE,		/* data byte order is little */  BFD_ENDIAN_BIG,		/* header byte order is big */  (HAS_RELOC | EXEC_P |		/* object flags */   HAS_LINENO | HAS_DEBUG |   HAS_SYMS | HAS_LOCALS | WP_TEXT ),  (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */  '_',				/* leading symbol underscore */  '/',				/* ar_pad_char */  15,				/* ar_max_namelen */  bfd_getl64, bfd_getl_signed_64, bfd_putl64,  tic54x_getl32, tic54x_getl_signed_32, tic54x_putl32,  bfd_getl16, bfd_getl_signed_16, bfd_putl16,	/* data */  bfd_getb64, bfd_getb_signed_64, bfd_putb64,  bfd_getb32, bfd_getb_signed_32, bfd_putb32,  bfd_getb16, bfd_getb_signed_16, bfd_putb16,	/* hdrs */  {_bfd_dummy_target, coff_object_p,	/* bfd_check_format */   bfd_generic_archive_p, _bfd_dummy_target},  {bfd_false, coff_mkobject, _bfd_generic_mkarchive,	/* bfd_set_format */   bfd_false},  {bfd_false, coff_write_object_contents,	/* bfd_write_contents */   _bfd_write_archive_contents, bfd_false},  BFD_JUMP_TABLE_GENERIC (coff),  BFD_JUMP_TABLE_COPY (coff),  BFD_JUMP_TABLE_CORE (_bfd_nocore),  BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),  BFD_JUMP_TABLE_SYMBOLS (coff),  BFD_JUMP_TABLE_RELOCS (coff),  BFD_JUMP_TABLE_WRITE (tic54x),  BFD_JUMP_TABLE_LINK (coff),  BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),  &tic54x_coff0_vec,  (PTR)&ticoff0_swap_table};/* TI COFF v1, DOS tools (little-endian headers) */const bfd_target tic54x_coff1_vec ={  "coff1-c54x",			/* name */  bfd_target_coff_flavour,  BFD_ENDIAN_LITTLE,		/* data byte order is little */  BFD_ENDIAN_LITTLE,		/* header byte order is little (DOS tools) */  (HAS_RELOC | EXEC_P |		/* object flags */   HAS_LINENO | HAS_DEBUG |   HAS_SYMS | HAS_LOCALS | WP_TEXT ),  (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */  '_',				/* leading symbol underscore */  '/',				/* ar_pad_char */  15,				/* ar_max_namelen */  bfd_getl64, bfd_getl_signed_64, bfd_putl64,  tic54x_getl32, tic54x_getl_signed_32, tic54x_putl32,  bfd_getl16, bfd_getl_signed_16, bfd_putl16,	/* data */  bfd_getl64, bfd_getl_signed_64, bfd_putl64,  bfd_getl32, bfd_getl_signed_32, bfd_putl32,  bfd_getl16, bfd_getl_signed_16, bfd_putl16,	/* hdrs */  {_bfd_dummy_target, coff_object_p,	/* bfd_check_format */   bfd_generic_archive_p, _bfd_dummy_target},  {bfd_false, coff_mkobject, _bfd_generic_mkarchive,	/* bfd_set_format */   bfd_false},  {bfd_false, coff_write_object_contents,	/* bfd_write_contents */   _bfd_write_archive_contents, bfd_false},  BFD_JUMP_TABLE_GENERIC (coff),  BFD_JUMP_TABLE_COPY (coff),  BFD_JUMP_TABLE_CORE (_bfd_nocore),  BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),  BFD_JUMP_TABLE_SYMBOLS (coff),  BFD_JUMP_TABLE_RELOCS (coff),  BFD_JUMP_TABLE_WRITE (tic54x),  BFD_JUMP_TABLE_LINK (coff),  BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),  &tic54x_coff0_beh_vec,  (PTR)&ticoff1_swap_table};/* TI COFF v1, SPARC tools (big-endian headers) */const bfd_target tic54x_coff1_beh_vec ={  "coff1-beh-c54x",			/* name */  bfd_target_coff_flavour,  BFD_ENDIAN_LITTLE,		/* data byte order is little */  BFD_ENDIAN_BIG,		/* header byte order is big */  (HAS_RELOC | EXEC_P |		/* object flags */   HAS_LINENO | HAS_DEBUG |   HAS_SYMS | HAS_LOCALS | WP_TEXT ),  (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */  '_',				/* leading symbol underscore */  '/',				/* ar_pad_char */  15,				/* ar_max_namelen */  bfd_getl64, bfd_getl_signed_64, bfd_putl64,  tic54x_getl32, tic54x_getl_signed_32, tic54x_putl32,  bfd_getl16, bfd_getl_signed_16, bfd_putl16,	/* data */  bfd_getb64, bfd_getb_signed_64, bfd_putb64,  bfd_getb32, bfd_getb_signed_32, bfd_putb32,  bfd_getb16, bfd_getb_signed_16, bfd_putb16,	/* hdrs */  {_bfd_dummy_target, coff_object_p,	/* bfd_check_format */   bfd_generic_archive_p, _bfd_dummy_target},  {bfd_false, coff_mkobject, _bfd_generic_mkarchive,	/* bfd_set_format */   bfd_false},  {bfd_false, coff_write_object_contents,	/* bfd_write_contents */   _bfd_write_archive_contents, bfd_false},  BFD_JUMP_TABLE_GENERIC (coff),  BFD_JUMP_TABLE_COPY (coff),  BFD_JUMP_TABLE_CORE (_bfd_nocore),  BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),  BFD_JUMP_TABLE_SYMBOLS (coff),  BFD_JUMP_TABLE_RELOCS (coff),  BFD_JUMP_TABLE_WRITE (tic54x),  BFD_JUMP_TABLE_LINK (coff),  BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),  &tic54x_coff1_vec,  (PTR)&ticoff1_swap_table};/* TI COFF v2, TI DOS tools output (little-endian headers) */const bfd_target tic54x_coff2_vec ={  "coff2-c54x",			/* name */  bfd_target_coff_flavour,  BFD_ENDIAN_LITTLE,		/* data byte order is little */  BFD_ENDIAN_LITTLE,		/* header byte order is little (DOS tools) */  (HAS_RELOC | EXEC_P |		/* object flags */   HAS_LINENO | HAS_DEBUG |   HAS_SYMS | HAS_LOCALS | WP_TEXT ),  (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */  '_',				/* leading symbol underscore */  '/',				/* ar_pad_char */  15,				/* ar_max_namelen */  bfd_getl64, bfd_getl_signed_64, bfd_putl64,  tic54x_getl32, tic54x_getl_signed_32, tic54x_putl32,  bfd_getl16, bfd_getl_signed_16, bfd_putl16,	/* data */  bfd_getl64, bfd_getl_signed_64, bfd_putl64,  bfd_getl32, bfd_getl_signed_32, bfd_putl32,  bfd_getl16, bfd_getl_signed_16, bfd_putl16,	/* hdrs */  {_bfd_dummy_target, coff_object_p,	/* bfd_check_format */   bfd_generic_archive_p, _bfd_dummy_target},  {bfd_false, coff_mkobject, _bfd_generic_mkarchive,	/* bfd_set_format */   bfd_false},  {bfd_false, coff_write_object_contents,	/* bfd_write_contents */   _bfd_write_archive_contents, bfd_false},  BFD_JUMP_TABLE_GENERIC (coff),  BFD_JUMP_TABLE_COPY (coff),  BFD_JUMP_TABLE_CORE (_bfd_nocore),  BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),  BFD_JUMP_TABLE_SYMBOLS (coff),  BFD_JUMP_TABLE_RELOCS (coff),  BFD_JUMP_TABLE_WRITE (tic54x),  BFD_JUMP_TABLE_LINK (coff),  BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),  &tic54x_coff1_beh_vec,  COFF_SWAP_TABLE};/* TI COFF v2, TI SPARC tools output (big-endian headers) */const bfd_target tic54x_coff2_beh_vec ={  "coff2-beh-c54x",			/* name */  bfd_target_coff_flavour,  BFD_ENDIAN_LITTLE,		/* data byte order is little */  BFD_ENDIAN_BIG,		/* header byte order is big */  (HAS_RELOC | EXEC_P |		/* object flags */   HAS_LINENO | HAS_DEBUG |   HAS_SYMS | HAS_LOCALS | WP_TEXT ),  (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */  '_',				/* leading symbol underscore */  '/',				/* ar_pad_char */  15,				/* ar_max_namelen */  bfd_getl64, bfd_getl_signed_64, bfd_putl64,  tic54x_getl32, tic54x_getl_signed_32, tic54x_putl32,  bfd_getl16, bfd_getl_signed_16, bfd_putl16,	/* data */  bfd_getb64, bfd_getb_signed_64, bfd_putb64,  bfd_getb32, bfd_getb_signed_32, bfd_putb32,  bfd_getb16, bfd_getb_signed_16, bfd_putb16,	/* hdrs */  {_bfd_dummy_target, coff_object_p,	/* bfd_check_format */   bfd_generic_archive_p, _bfd_dummy_target},  {bfd_false, coff_mkobject, _bfd_generic_mkarchive,	/* bfd_set_format */   bfd_false},  {bfd_false, coff_write_object_contents,	/* bfd_write_contents */   _bfd_write_archive_contents, bfd_false},  BFD_JUMP_TABLE_GENERIC (coff),  BFD_JUMP_TABLE_COPY (coff),  BFD_JUMP_TABLE_CORE (_bfd_nocore),  BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),  BFD_JUMP_TABLE_SYMBOLS (coff),  BFD_JUMP_TABLE_RELOCS (coff),  BFD_JUMP_TABLE_WRITE (tic54x),  BFD_JUMP_TABLE_LINK (coff),  BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),  &tic54x_coff2_vec,  COFF_SWAP_TABLE};

⌨️ 快捷键说明

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