亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? elf32-arm.h

?? 基于4個(gè)mips核的noc設(shè)計(jì)
?? H
?? 第 1 頁 / 共 5 頁
字號(hào):
/* 32-bit ELF support for ARM   Copyright 1998, 1999, 2000, 2001 Free Software Foundation, Inc.   This file is part of BFD, the Binary File Descriptor library.   This program is free software; you can redistribute it and/or modify   it under the terms of the GNU General Public License as published by   the Free Software Foundation; either version 2 of the License, or   (at your option) any later version.   This program is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   GNU General Public License for more details.   You should have received a copy of the GNU General Public License   along with this program; if not, write to the Free Software   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */typedef unsigned long int insn32;typedef unsigned short int insn16;static boolean elf32_arm_set_private_flags  PARAMS ((bfd *, flagword));static boolean elf32_arm_copy_private_bfd_data  PARAMS ((bfd *, bfd *));static boolean elf32_arm_merge_private_bfd_data  PARAMS ((bfd *, bfd *));static boolean elf32_arm_print_private_bfd_data  PARAMS ((bfd *, PTR));static int elf32_arm_get_symbol_type  PARAMS (( Elf_Internal_Sym *, int));static struct bfd_link_hash_table *elf32_arm_link_hash_table_create  PARAMS ((bfd *));static bfd_reloc_status_type elf32_arm_final_link_relocate  PARAMS ((reloc_howto_type *, bfd *, bfd *, asection *, bfd_byte *,	   Elf_Internal_Rela *, bfd_vma, struct bfd_link_info *, asection *,	   const char *, unsigned char, struct elf_link_hash_entry *));static insn32 insert_thumb_branch  PARAMS ((insn32, int));static struct elf_link_hash_entry *find_thumb_glue  PARAMS ((struct bfd_link_info *, CONST char *, bfd *));static struct elf_link_hash_entry *find_arm_glue  PARAMS ((struct bfd_link_info *, CONST char *, bfd *));static void record_arm_to_thumb_glue  PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *));static void record_thumb_to_arm_glue  PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *));static void elf32_arm_post_process_headers  PARAMS ((bfd *, struct bfd_link_info *));static int elf32_arm_to_thumb_stub  PARAMS ((struct bfd_link_info *, const char *, bfd *, bfd *, asection *,	   bfd_byte *, asection *, bfd_vma, bfd_signed_vma, bfd_vma));static int elf32_thumb_to_arm_stub  PARAMS ((struct bfd_link_info *, const char *, bfd *, bfd *, asection *,	   bfd_byte *, asection *, bfd_vma, bfd_signed_vma, bfd_vma));#define INTERWORK_FLAG(abfd)   (elf_elfheader (abfd)->e_flags & EF_INTERWORK)/* The linker script knows the section names for placement.   The entry_names are used to do simple name mangling on the stubs.   Given a function name, and its type, the stub can be found. The   name can be changed. The only requirement is the %s be present.  */#define THUMB2ARM_GLUE_SECTION_NAME ".glue_7t"#define THUMB2ARM_GLUE_ENTRY_NAME   "__%s_from_thumb"#define ARM2THUMB_GLUE_SECTION_NAME ".glue_7"#define ARM2THUMB_GLUE_ENTRY_NAME   "__%s_from_arm"/* The name of the dynamic interpreter.  This is put in the .interp   section.  */#define ELF_DYNAMIC_INTERPRETER     "/usr/lib/ld.so.1"/* The size in bytes of an entry in the procedure linkage table.  */#define PLT_ENTRY_SIZE 16/* The first entry in a procedure linkage table looks like   this.  It is set up so that any shared library function that is   called before the relocation has been set up calls the dynamic   linker first.  */static const unsigned long elf32_arm_plt0_entry [PLT_ENTRY_SIZE / 4] ={  0xe52de004,	/* str   lr, [sp, #-4]!     */  0xe59fe010,	/* ldr   lr, [pc, #16]      */  0xe08fe00e,	/* add   lr, pc, lr         */  0xe5bef008	/* ldr   pc, [lr, #8]!      */};/* Subsequent entries in a procedure linkage table look like   this.  */static const unsigned long elf32_arm_plt_entry [PLT_ENTRY_SIZE / 4] ={  0xe59fc004,	/* ldr   ip, [pc, #4]       */  0xe08fc00c,	/* add   ip, pc, ip         */  0xe59cf000,	/* ldr   pc, [ip]           */  0x00000000	/* offset to symbol in got  */};/* The ARM linker needs to keep track of the number of relocs that it   decides to copy in check_relocs for each symbol.  This is so that   it can discard PC relative relocs if it doesn't need them when   linking with -Bsymbolic.  We store the information in a field   extending the regular ELF linker hash table.  *//* This structure keeps track of the number of PC relative relocs we   have copied for a given symbol.  */struct elf32_arm_pcrel_relocs_copied{  /* Next section.  */  struct elf32_arm_pcrel_relocs_copied * next;  /* A section in dynobj.  */  asection * section;  /* Number of relocs copied in this section.  */  bfd_size_type count;};/* Arm ELF linker hash entry.  */struct elf32_arm_link_hash_entry{  struct elf_link_hash_entry root;  /* Number of PC relative relocs copied for this symbol.  */  struct elf32_arm_pcrel_relocs_copied * pcrel_relocs_copied;};/* Declare this now that the above structures are defined.  */static boolean elf32_arm_discard_copies  PARAMS ((struct elf32_arm_link_hash_entry *, PTR));/* Traverse an arm ELF linker hash table.  */#define elf32_arm_link_hash_traverse(table, func, info)			\  (elf_link_hash_traverse						\   (&(table)->root,							\    (boolean (*) PARAMS ((struct elf_link_hash_entry *, PTR))) (func),	\    (info)))/* Get the ARM elf linker hash table from a link_info structure.  */#define elf32_arm_hash_table(info) \  ((struct elf32_arm_link_hash_table *) ((info)->hash))/* ARM ELF linker hash table.  */struct elf32_arm_link_hash_table{  /* The main hash table.  */  struct elf_link_hash_table root;  /* The size in bytes of the section containg the Thumb-to-ARM glue.  */  long int thumb_glue_size;  /* The size in bytes of the section containg the ARM-to-Thumb glue.  */  long int arm_glue_size;  /* An arbitary input BFD chosen to hold the glue sections.  */  bfd * bfd_of_glue_owner;  /* A boolean indicating whether knowledge of the ARM's pipeline     length should be applied by the linker.  */  int no_pipeline_knowledge;};/* Create an entry in an ARM ELF linker hash table.  */static struct bfd_hash_entry *elf32_arm_link_hash_newfunc (entry, table, string)     struct bfd_hash_entry * entry;     struct bfd_hash_table * table;     const char * string;{  struct elf32_arm_link_hash_entry * ret =    (struct elf32_arm_link_hash_entry *) entry;  /* Allocate the structure if it has not already been allocated by a     subclass.  */  if (ret == (struct elf32_arm_link_hash_entry *) NULL)    ret = ((struct elf32_arm_link_hash_entry *)	   bfd_hash_allocate (table,			      sizeof (struct elf32_arm_link_hash_entry)));  if (ret == (struct elf32_arm_link_hash_entry *) NULL)    return (struct bfd_hash_entry *) ret;  /* Call the allocation method of the superclass.  */  ret = ((struct elf32_arm_link_hash_entry *)	 _bfd_elf_link_hash_newfunc ((struct bfd_hash_entry *) ret,				     table, string));  if (ret != (struct elf32_arm_link_hash_entry *) NULL)    ret->pcrel_relocs_copied = NULL;  return (struct bfd_hash_entry *) ret;}/* Create an ARM elf linker hash table.  */static struct bfd_link_hash_table *elf32_arm_link_hash_table_create (abfd)     bfd *abfd;{  struct elf32_arm_link_hash_table *ret;  ret = ((struct elf32_arm_link_hash_table *)	 bfd_alloc (abfd, sizeof (struct elf32_arm_link_hash_table)));  if (ret == (struct elf32_arm_link_hash_table *) NULL)    return NULL;  if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,				      elf32_arm_link_hash_newfunc))    {      bfd_release (abfd, ret);      return NULL;    }  ret->thumb_glue_size = 0;  ret->arm_glue_size = 0;  ret->bfd_of_glue_owner = NULL;  ret->no_pipeline_knowledge = 0;  return &ret->root.root;}/* Locate the Thumb encoded calling stub for NAME.  */static struct elf_link_hash_entry *find_thumb_glue (link_info, name, input_bfd)     struct bfd_link_info *link_info;     CONST char *name;     bfd *input_bfd;{  char *tmp_name;  struct elf_link_hash_entry *hash;  struct elf32_arm_link_hash_table *hash_table;  /* We need a pointer to the armelf specific hash table.  */  hash_table = elf32_arm_hash_table (link_info);  tmp_name = ((char *)       bfd_malloc (strlen (name) + strlen (THUMB2ARM_GLUE_ENTRY_NAME) + 1));  BFD_ASSERT (tmp_name);  sprintf (tmp_name, THUMB2ARM_GLUE_ENTRY_NAME, name);  hash = elf_link_hash_lookup    (&(hash_table)->root, tmp_name, false, false, true);  if (hash == NULL)    /* xgettext:c-format */    _bfd_error_handler (_("%s: unable to find THUMB glue '%s' for `%s'"),			bfd_get_filename (input_bfd), tmp_name, name);  free (tmp_name);  return hash;}/* Locate the ARM encoded calling stub for NAME.  */static struct elf_link_hash_entry *find_arm_glue (link_info, name, input_bfd)     struct bfd_link_info *link_info;     CONST char *name;     bfd *input_bfd;{  char *tmp_name;  struct elf_link_hash_entry *myh;  struct elf32_arm_link_hash_table *hash_table;  /* We need a pointer to the elfarm specific hash table.  */  hash_table = elf32_arm_hash_table (link_info);  tmp_name = ((char *)       bfd_malloc (strlen (name) + strlen (ARM2THUMB_GLUE_ENTRY_NAME) + 1));  BFD_ASSERT (tmp_name);  sprintf (tmp_name, ARM2THUMB_GLUE_ENTRY_NAME, name);  myh = elf_link_hash_lookup    (&(hash_table)->root, tmp_name, false, false, true);  if (myh == NULL)    /* xgettext:c-format */    _bfd_error_handler (_("%s: unable to find ARM glue '%s' for `%s'"),			bfd_get_filename (input_bfd), tmp_name, name);  free (tmp_name);  return myh;}/* ARM->Thumb glue:   .arm   __func_from_arm:   ldr r12, __func_addr   bx  r12   __func_addr:   .word func    @ behave as if you saw a ARM_32 reloc.  */#define ARM2THUMB_GLUE_SIZE 12static const insn32 a2t1_ldr_insn = 0xe59fc000;static const insn32 a2t2_bx_r12_insn = 0xe12fff1c;static const insn32 a2t3_func_addr_insn = 0x00000001;/* Thumb->ARM:                          Thumb->(non-interworking aware) ARM   .thumb                               .thumb   .align 2                             .align 2   __func_from_thumb:              __func_from_thumb:   bx pc                                push {r6, lr}   nop                                  ldr  r6, __func_addr   .arm                                         mov  lr, pc   __func_change_to_arm:                        bx   r6   b func                       .arm   __func_back_to_thumb:   ldmia r13! {r6, lr}   bx    lr   __func_addr:   .word        func  */#define THUMB2ARM_GLUE_SIZE 8static const insn16 t2a1_bx_pc_insn = 0x4778;static const insn16 t2a2_noop_insn = 0x46c0;static const insn32 t2a3_b_insn = 0xea000000;static const insn16 t2a1_push_insn = 0xb540;static const insn16 t2a2_ldr_insn = 0x4e03;static const insn16 t2a3_mov_insn = 0x46fe;static const insn16 t2a4_bx_insn = 0x4730;static const insn32 t2a5_pop_insn = 0xe8bd4040;static const insn32 t2a6_bx_insn = 0xe12fff1e;booleanbfd_elf32_arm_allocate_interworking_sections (info)     struct bfd_link_info * info;{  asection * s;  bfd_byte * foo;  struct elf32_arm_link_hash_table * globals;  globals = elf32_arm_hash_table (info);  BFD_ASSERT (globals != NULL);  if (globals->arm_glue_size != 0)    {      BFD_ASSERT (globals->bfd_of_glue_owner != NULL);      s = bfd_get_section_by_name	(globals->bfd_of_glue_owner, ARM2THUMB_GLUE_SECTION_NAME);      BFD_ASSERT (s != NULL);      foo = (bfd_byte *) bfd_alloc	(globals->bfd_of_glue_owner, globals->arm_glue_size);      s->_raw_size = s->_cooked_size = globals->arm_glue_size;      s->contents = foo;    }  if (globals->thumb_glue_size != 0)    {      BFD_ASSERT (globals->bfd_of_glue_owner != NULL);      s = bfd_get_section_by_name	(globals->bfd_of_glue_owner, THUMB2ARM_GLUE_SECTION_NAME);      BFD_ASSERT (s != NULL);      foo = (bfd_byte *) bfd_alloc	(globals->bfd_of_glue_owner, globals->thumb_glue_size);      s->_raw_size = s->_cooked_size = globals->thumb_glue_size;      s->contents = foo;    }  return true;}static voidrecord_arm_to_thumb_glue (link_info, h)     struct bfd_link_info * link_info;     struct elf_link_hash_entry * h;{  const char * name = h->root.root.string;  register asection * s;  char * tmp_name;  struct elf_link_hash_entry * myh;  struct elf32_arm_link_hash_table * globals;  globals = elf32_arm_hash_table (link_info);  BFD_ASSERT (globals != NULL);  BFD_ASSERT (globals->bfd_of_glue_owner != NULL);  s = bfd_get_section_by_name    (globals->bfd_of_glue_owner, ARM2THUMB_GLUE_SECTION_NAME);  BFD_ASSERT (s != NULL);  tmp_name = ((char *)       bfd_malloc (strlen (name) + strlen (ARM2THUMB_GLUE_ENTRY_NAME) + 1));  BFD_ASSERT (tmp_name);  sprintf (tmp_name, ARM2THUMB_GLUE_ENTRY_NAME, name);  myh = elf_link_hash_lookup    (&(globals)->root, tmp_name, false, false, true);  if (myh != NULL)    {      /* We've already seen this guy.  */      free (tmp_name);      return;    }  /* The only trick here is using hash_table->arm_glue_size as the value. Even     though the section isn't allocated yet, this is where we will be putting     it.  */  _bfd_generic_link_add_one_symbol (link_info, globals->bfd_of_glue_owner, tmp_name,				    BSF_GLOBAL,				    s, globals->arm_glue_size + 1,				    NULL, true, false,				    (struct bfd_link_hash_entry **) &myh);  free (tmp_name);  globals->arm_glue_size += ARM2THUMB_GLUE_SIZE;  return;}static voidrecord_thumb_to_arm_glue (link_info, h)     struct bfd_link_info *link_info;     struct elf_link_hash_entry *h;{  const char *name = h->root.root.string;  register asection *s;  char *tmp_name;  struct elf_link_hash_entry *myh;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品嫩草99a| 青青草国产成人av片免费| 国产麻豆精品95视频| 99精品一区二区三区| 蜜臀av在线播放一区二区三区| 亚洲蜜臀av乱码久久精品| 日韩免费看的电影| 欧美电影一区二区三区| 欧美日韩综合在线免费观看| 国产精品99久久久久久有的能看| 天使萌一区二区三区免费观看| 亚洲日本一区二区三区| 国产精品久久久久久一区二区三区| 久久这里都是精品| 青青国产91久久久久久| 亚洲成精国产精品女| 国产精品的网站| 自拍偷自拍亚洲精品播放| 国产精品丝袜久久久久久app| 日本一区二区三区电影| 五月天久久比比资源色| 亚洲成av人片www| 午夜一区二区三区视频| 天天爽夜夜爽夜夜爽精品视频| 午夜精品视频一区| 久久99精品国产| 国产成人日日夜夜| 99精品在线免费| 在线成人高清不卡| 蜜桃一区二区三区四区| 国产乱子轮精品视频| 91免费国产在线| 欧美区在线观看| 久久精品男人的天堂| 中文字幕一区二区三区在线不卡| 亚洲午夜精品一区二区三区他趣| 日韩激情视频网站| 国产suv精品一区二区三区| 91丨porny丨国产入口| 欧美一级专区免费大片| 国产精品亚洲一区二区三区在线 | 精品国产三级电影在线观看| 国产欧美一区二区三区鸳鸯浴| 亚洲日本在线天堂| 538prom精品视频线放| 久久久久久久综合色一本| 亚洲一区二区在线视频| 亚洲欧洲色图综合| 蜜桃久久久久久| 在线亚洲欧美专区二区| 久久久久久久久久久久久久久99| 亚洲精品视频一区二区| 久久精品国产秦先生| 91精品福利视频| 日本一区二区视频在线观看| 日韩国产精品久久| 日本二三区不卡| 国产精品久久久久影院亚瑟 | 亚洲资源在线观看| 看电视剧不卡顿的网站| 欧美顶级少妇做爰| 亚洲综合色噜噜狠狠| 盗摄精品av一区二区三区| 日韩欧美一级片| 午夜视频一区二区三区| 91麻豆123| 中文字幕一区二区日韩精品绯色| 久久99九九99精品| 欧美在线高清视频| 亚洲人成精品久久久久| 成人激情视频网站| 中文一区二区完整视频在线观看| 韩国一区二区三区| 2017欧美狠狠色| 国产成人午夜精品5599| 久久久久久**毛片大全| 国产一区二区精品在线观看| 精品久久久久一区二区国产| 美日韩一区二区| 国产亚洲制服色| 亚洲综合激情另类小说区| 99精品视频一区| 亚洲制服丝袜一区| 欧美丰满嫩嫩电影| 毛片不卡一区二区| 国产色综合一区| 成人理论电影网| 亚洲欧美在线视频| 在线欧美小视频| 午夜电影一区二区三区| 制服丝袜在线91| 国产成人av一区二区| 国产精品人成在线观看免费| 色婷婷国产精品久久包臀| 午夜不卡av在线| 精品国产露脸精彩对白| 成人开心网精品视频| 丝袜美腿亚洲一区二区图片| 精品入口麻豆88视频| bt7086福利一区国产| 一二三四社区欧美黄| 日韩欧美中文字幕一区| 成人av电影在线网| 亚洲一区免费在线观看| 精品久久久久久亚洲综合网| 99在线热播精品免费| 日韩激情在线观看| 亚洲色图在线播放| 日韩一区二区在线看片| 不卡一二三区首页| 日本欧美肥老太交大片| 国产精品久久久久久久第一福利| 欧美视频完全免费看| 成人av网站在线| 亚洲va国产天堂va久久en| 欧美大白屁股肥臀xxxxxx| 成人精品国产福利| 免费在线观看视频一区| 国产欧美日韩三级| 中文字幕视频一区二区三区久| 国产一区福利在线| 一区二区三区在线高清| 欧美成人高清电影在线| 色偷偷成人一区二区三区91| 激情综合网最新| 亚洲美女屁股眼交| 欧美大片在线观看一区二区| av电影在线观看完整版一区二区| 日本欧美一区二区三区乱码| 国产精品二区一区二区aⅴ污介绍| 欧美美女bb生活片| 在线看不卡av| av网站免费线看精品| 国产激情精品久久久第一区二区| 午夜精品久久久久久久99水蜜桃| 国产精品久久久久久久第一福利| 久久久久国产精品麻豆| 日韩一级大片在线| 欧美一区二区三区免费视频| 欧美在线免费播放| 91麻豆福利精品推荐| 福利一区二区在线观看| 678五月天丁香亚洲综合网| 91网站视频在线观看| 国产成人在线视频播放| 久久国产免费看| 美腿丝袜亚洲色图| 免费在线欧美视频| 激情综合色播激情啊| 美女视频免费一区| 免费成人在线观看| 美女高潮久久久| 亚洲成av人片一区二区三区| 一区二区日韩电影| 亚洲天堂成人在线观看| 中文字幕一区二区在线播放 | 国内不卡的二区三区中文字幕| 精品亚洲欧美一区| 精久久久久久久久久久| 国产在线精品免费av| 国产精品一二三四区| 欧美综合视频在线观看| 美女网站在线免费欧美精品| 老司机一区二区| 国产美女视频91| 91一区在线观看| 欧美夫妻性生活| 久久蜜臀中文字幕| 中文字幕人成不卡一区| 一区二区久久久久久| 日韩国产欧美在线观看| 岛国精品在线观看| 一本一道综合狠狠老| 欧美高清你懂得| 国产欧美一区二区三区在线看蜜臀| 日韩伦理免费电影| 日产欧产美韩系列久久99| 国产中文字幕精品| 欧美怡红院视频| 2020国产精品自拍| 亚洲h精品动漫在线观看| 国产一区二区看久久| 在线观看中文字幕不卡| 精品av久久707| 亚洲一级片在线观看| 国产精品一级二级三级| 欧美精三区欧美精三区| 国产精品免费看片| 奇米精品一区二区三区在线观看| 成人在线视频一区| 欧美哺乳videos| 亚洲一级二级在线| av网站一区二区三区| 精品国产1区二区| 日本不卡高清视频| 在线日韩一区二区| 综合久久久久久久| 成人免费的视频| 久久免费视频一区| 蜜臂av日日欢夜夜爽一区|