coff-rs6000.c

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

C
2,164
字号
  HOWTO (1,	                /* type */	 0,	                /* rightshift */	 -2,	                /* size (0 = byte, 1 = short, 2 = long) */	 32,	                /* bitsize */	 false,	                /* pc_relative */	 0,	                /* bitpos */	 complain_overflow_bitfield, /* complain_on_overflow */	 0,		        /* special_function */	 "R_NEG",               /* name */	 true,	                /* partial_inplace */	 0xffffffff,            /* src_mask */	 0xffffffff,            /* dst_mask */	 false),                /* pcrel_offset */  /* 32 bit PC relative relocation.  */  HOWTO (2,	                /* type */	 0,	                /* rightshift */	 2,	                /* size (0 = byte, 1 = short, 2 = long) */	 32,	                /* bitsize */	 true,	                /* pc_relative */	 0,	                /* bitpos */	 complain_overflow_signed, /* complain_on_overflow */	 0,		        /* special_function */	 "R_REL",               /* name */	 true,	                /* partial_inplace */	 0xffffffff,            /* src_mask */	 0xffffffff,            /* dst_mask */	 false),                /* pcrel_offset */  /* 16 bit TOC relative relocation.  */  HOWTO (3,	                /* type */	 0,	                /* rightshift */	 1,	                /* size (0 = byte, 1 = short, 2 = long) */	 16,	                /* bitsize */	 false,	                /* pc_relative */	 0,	                /* bitpos */	 complain_overflow_bitfield, /* complain_on_overflow */	 0,		        /* special_function */	 "R_TOC",               /* name */	 true,	                /* partial_inplace */	 0xffff,	        /* src_mask */	 0xffff,        	/* dst_mask */	 false),                /* pcrel_offset */  /* I don't really know what this is.  */  HOWTO (4,	                /* type */	 1,	                /* rightshift */	 2,	                /* size (0 = byte, 1 = short, 2 = long) */	 32,	                /* bitsize */	 false,	                /* pc_relative */	 0,	                /* bitpos */	 complain_overflow_bitfield, /* complain_on_overflow */	 0,		        /* special_function */	 "R_RTB",               /* name */	 true,	                /* partial_inplace */	 0xffffffff,	        /* src_mask */	 0xffffffff,        	/* dst_mask */	 false),                /* pcrel_offset */  /* External TOC relative symbol.  */  HOWTO (5,	                /* type */	 0,	                /* rightshift */	 2,	                /* size (0 = byte, 1 = short, 2 = long) */	 16,	                /* bitsize */	 false,	                /* pc_relative */	 0,	                /* bitpos */	 complain_overflow_bitfield, /* complain_on_overflow */	 0,		        /* special_function */	 "R_GL",                /* name */	 true,	                /* partial_inplace */	 0xffff,	        /* src_mask */	 0xffff,        	/* dst_mask */	 false),                /* pcrel_offset */  /* Local TOC relative symbol.  */  HOWTO (6,	                /* type */	 0,	                /* rightshift */	 2,	                /* size (0 = byte, 1 = short, 2 = long) */	 16,	                /* bitsize */	 false,	                /* pc_relative */	 0,	                /* bitpos */	 complain_overflow_bitfield, /* complain_on_overflow */	 0,		        /* special_function */	 "R_TCL",               /* name */	 true,	                /* partial_inplace */	 0xffff,	        /* src_mask */	 0xffff,        	/* dst_mask */	 false),                /* pcrel_offset */  EMPTY_HOWTO (7),  /* Non modifiable absolute branch.  */  HOWTO (8,	                /* type */	 0,	                /* rightshift */	 2,	                /* size (0 = byte, 1 = short, 2 = long) */	 26,	                /* bitsize */	 false,	                /* pc_relative */	 0,	                /* bitpos */	 complain_overflow_bitfield, /* complain_on_overflow */	 0,		        /* special_function */	 "R_BA",                /* name */	 true,	                /* partial_inplace */	 0x3fffffc,	        /* src_mask */	 0x3fffffc,        	/* dst_mask */	 false),                /* pcrel_offset */  EMPTY_HOWTO (9),  /* Non modifiable relative branch.  */  HOWTO (0xa,	                /* type */	 0,	                /* rightshift */	 2,	                /* size (0 = byte, 1 = short, 2 = long) */	 26,	                /* bitsize */	 true,	                /* pc_relative */	 0,	                /* bitpos */	 complain_overflow_signed, /* complain_on_overflow */	 0,		        /* special_function */	 "R_BR",                /* name */	 true,	                /* partial_inplace */	 0x3fffffc,	        /* src_mask */	 0x3fffffc,        	/* dst_mask */	 false),                /* pcrel_offset */  EMPTY_HOWTO (0xb),  /* Indirect load.  */  HOWTO (0xc,	                /* type */	 0,	                /* rightshift */	 2,	                /* size (0 = byte, 1 = short, 2 = long) */	 16,	                /* bitsize */	 false,	                /* pc_relative */	 0,	                /* bitpos */	 complain_overflow_bitfield, /* complain_on_overflow */	 0,		        /* special_function */	 "R_RL",                /* name */	 true,	                /* partial_inplace */	 0xffff,	        /* src_mask */	 0xffff,        	/* dst_mask */	 false),                /* pcrel_offset */  /* Load address.  */  HOWTO (0xd,	                /* type */	 0,	                /* rightshift */	 2,	                /* size (0 = byte, 1 = short, 2 = long) */	 16,	                /* bitsize */	 false,	                /* pc_relative */	 0,	                /* bitpos */	 complain_overflow_bitfield, /* complain_on_overflow */	 0,		        /* special_function */	 "R_RLA",               /* name */	 true,	                /* partial_inplace */	 0xffff,	        /* src_mask */	 0xffff,        	/* dst_mask */	 false),                /* pcrel_offset */  EMPTY_HOWTO (0xe),  /* Non-relocating reference.  */  HOWTO (0xf,	                /* type */	 0,	                /* rightshift */	 2,	                /* size (0 = byte, 1 = short, 2 = long) */	 32,	                /* bitsize */	 false,	                /* pc_relative */	 0,	                /* bitpos */	 complain_overflow_bitfield, /* complain_on_overflow */	 0,		        /* special_function */	 "R_REF",               /* name */	 false,	                /* partial_inplace */	 0,		        /* src_mask */	 0,     	   	/* dst_mask */	 false),                /* pcrel_offset */  EMPTY_HOWTO (0x10),  EMPTY_HOWTO (0x11),  /* TOC relative indirect load.  */  HOWTO (0x12,	                /* type */	 0,	                /* rightshift */	 2,	                /* size (0 = byte, 1 = short, 2 = long) */	 16,	                /* bitsize */	 false,	                /* pc_relative */	 0,	                /* bitpos */	 complain_overflow_bitfield, /* complain_on_overflow */	 0,		        /* special_function */	 "R_TRL",               /* name */	 true,	                /* partial_inplace */	 0xffff,	        /* src_mask */	 0xffff,        	/* dst_mask */	 false),                /* pcrel_offset */  /* TOC relative load address.  */  HOWTO (0x13,	                /* type */	 0,	                /* rightshift */	 2,	                /* size (0 = byte, 1 = short, 2 = long) */	 16,	                /* bitsize */	 false,	                /* pc_relative */	 0,	                /* bitpos */	 complain_overflow_bitfield, /* complain_on_overflow */	 0,		        /* special_function */	 "R_TRLA",              /* name */	 true,	                /* partial_inplace */	 0xffff,	        /* src_mask */	 0xffff,        	/* dst_mask */	 false),                /* pcrel_offset */  /* Modifiable relative branch.  */  HOWTO (0x14,	                /* type */	 1,	                /* rightshift */	 2,	                /* size (0 = byte, 1 = short, 2 = long) */	 32,	                /* bitsize */	 false,	                /* pc_relative */	 0,	                /* bitpos */	 complain_overflow_bitfield, /* complain_on_overflow */	 0,		        /* special_function */	 "R_RRTBI",             /* name */	 true,	                /* partial_inplace */	 0xffffffff,	        /* src_mask */	 0xffffffff,        	/* dst_mask */	 false),                /* pcrel_offset */  /* Modifiable absolute branch.  */  HOWTO (0x15,	                /* type */	 1,	                /* rightshift */	 2,	                /* size (0 = byte, 1 = short, 2 = long) */	 32,	                /* bitsize */	 false,	                /* pc_relative */	 0,	                /* bitpos */	 complain_overflow_bitfield, /* complain_on_overflow */	 0,		        /* special_function */	 "R_RRTBA",             /* name */	 true,	                /* partial_inplace */	 0xffffffff,	        /* src_mask */	 0xffffffff,        	/* dst_mask */	 false),                /* pcrel_offset */  /* Modifiable call absolute indirect.  */  HOWTO (0x16,	                /* type */	 0,	                /* rightshift */	 2,	                /* size (0 = byte, 1 = short, 2 = long) */	 16,	                /* bitsize */	 false,	                /* pc_relative */	 0,	                /* bitpos */	 complain_overflow_bitfield, /* complain_on_overflow */	 0,		        /* special_function */	 "R_CAI",               /* name */	 true,	                /* partial_inplace */	 0xffff,	        /* src_mask */	 0xffff,        	/* dst_mask */	 false),                /* pcrel_offset */  /* Modifiable call relative.  */  HOWTO (0x17,	                /* type */	 0,	                /* rightshift */	 2,	                /* size (0 = byte, 1 = short, 2 = long) */	 16,	                /* bitsize */	 false,	                /* pc_relative */	 0,	                /* bitpos */	 complain_overflow_bitfield, /* complain_on_overflow */	 0,		        /* special_function */	 "R_CREL",              /* name */	 true,	                /* partial_inplace */	 0xffff,	        /* src_mask */	 0xffff,        	/* dst_mask */	 false),                /* pcrel_offset */  /* Modifiable branch absolute.  */  HOWTO (0x18,	                /* type */	 0,	                /* rightshift */	 2,	                /* size (0 = byte, 1 = short, 2 = long) */	 26,	                /* bitsize */	 false,	                /* pc_relative */	 0,	                /* bitpos */	 complain_overflow_bitfield, /* complain_on_overflow */	 0,		        /* special_function */	 "R_RBA",               /* name */	 true,	                /* partial_inplace */	 0xffff,	        /* src_mask */	 0xffff,        	/* dst_mask */	 false),                /* pcrel_offset */  /* Modifiable branch absolute.  */  HOWTO (0x19,	                /* type */	 0,	                /* rightshift */	 2,	                /* size (0 = byte, 1 = short, 2 = long) */	 32,	                /* bitsize */	 false,	                /* pc_relative */	 0,	                /* bitpos */	 complain_overflow_bitfield, /* complain_on_overflow */	 0,		        /* special_function */	 "R_RBAC",              /* name */	 true,	                /* partial_inplace */	 0xffff,	        /* src_mask */	 0xffff,        	/* dst_mask */	 false),                /* pcrel_offset */  /* Modifiable branch relative.  */  HOWTO (0x1a,	                /* type */	 0,	                /* rightshift */	 2,	                /* size (0 = byte, 1 = short, 2 = long) */	 26,	                /* bitsize */	 false,	                /* pc_relative */	 0,	                /* bitpos */	 complain_overflow_signed, /* complain_on_overflow */	 0,		        /* special_function */	 "R_RBR",               /* name */	 true,	                /* partial_inplace */	 0xffff,	        /* src_mask */	 0xffff,        	/* dst_mask */	 false),                /* pcrel_offset */  /* Modifiable branch absolute.  */  HOWTO (0x1b,	                /* type */	 0,	                /* rightshift */	 2,	                /* size (0 = byte, 1 = short, 2 = long) */	 16,	                /* bitsize */	 false,	                /* pc_relative */	 0,	                /* bitpos */	 complain_overflow_bitfield, /* complain_on_overflow */	 0,		        /* special_function */	 "R_RBRC",              /* name */	 true,	                /* partial_inplace */	 0xffff,	        /* src_mask */	 0xffff,        	/* dst_mask */	 false),                /* pcrel_offset */  HOWTO (0,                     /* type */         0,                     /* rightshift */         4,                     /* size (0 = byte, 1 = short, 2 = long) */         64,                    /* bitsize */         false,                 /* pc_relative */         0,                     /* bitpos */         complain_overflow_bitfield, /* complain_on_overflow */         0,                     /* special_function */         "R_POS",               /* name */         true,                  /* partial_inplace */         MINUS_ONE,             /* src_mask */	 MINUS_ONE,             /* dst_mask */	 false)                 /* pcrel_offset */};/* These are the first two like the above but for 16-bit relocs.  */static reloc_howto_type xcoff_howto_table_16[] ={  /* Standard 16 bit relocation.  */  HOWTO (0,	                /* type */	 0,	                /* rightshift */	 2,	                /* size (0 = byte, 1 = short, 2 = long) */	 16,	                /* bitsize */	 false,	                /* pc_relative */	 0,	                /* bitpos */	 complain_overflow_bitfield, /* complain_on_overflow */	 0,		        /* special_function */	 "R_POS_16",            /* name */	 true,	                /* partial_inplace */	 0xffffffff,            /* src_mask */	 0xffffffff,            /* dst_mask */	 false),                /* pcrel_offset */  /* 16 bit relocation, but store negative value.  */  HOWTO (1,	                /* type */	 0,	                /* rightshift */	 -2,	                /* size (0 = byte, 1 = short, 2 = long) */	 16,	                /* bitsize */	 false,	                /* pc_relative */	 0,	                /* bitpos */	 complain_overflow_bitfield, /* complain_on_overflow */	 0,		        /* special_function */	 "R_NEG_16",            /* name */	 true,	                /* partial_inplace */	 0xffffffff,            /* src_mask */	 0xffffffff,            /* dst_mask */	 false),                /* pcrel_offset */  /* 16 bit PC relative relocation.  */  HOWTO (2,	                /* type */	 0,	                /* rightshift */	 2,	                /* size (0 = byte, 1 = short, 2 = long) */	 32,	                /* bitsize */	 true,	                /* pc_relative */	 0,	                /* bitpos */	 complain_overflow_signed, /* complain_on_overflow */	 0,		        /* special_function */	 "R_REL_16",            /* name */	 true,	                /* partial_inplace */	 0xffffffff,            /* src_mask */	 0xffffffff,            /* dst_mask */	 false)                /* pcrel_offset */  };void_bfd_xcoff_rtype2howto (relent, internal)     arelent *relent;     struct internal_reloc *internal;{  relent->howto = xcoff_howto_table + internal->r_type;  if (relent->howto->bitsize != ((unsigned int) internal->r_size & 0x1f) + 1      && (internal->r_type	  < sizeof (xcoff_howto_table_16)/sizeof (xcoff_howto_table_16[0])))    relent->howto = xcoff_howto_table_16 + internal->r_type;  /* The r_size field of an XCOFF reloc encodes the bitsize of the     relocation, as well as indicating whether it is signed or not.     Doublecheck that the relocation information gathered from the     type matches this information.  The bitsize is not significant     for R_REF relocs.  */  if (relent->howto->dst_mask != 0      && (relent->howto->bitsize	  != ((unsigned int) internal->r_size & 0x3f) + 1))    abort ();#if 0  if ((internal->r_size & 0x80) != 0      ? (relent->howto->complain_on_overflow != complain_overflow_signed)      : (relent->howto->complain_on_overflow != complain_overflow_bitfield))    abort ();#endif}reloc_howto_type *_bfd_xcoff_reloc_type_lookup (abfd, code)     bfd *abfd ATTRIBUTE_UNUSED;     bfd_reloc_code_real_type code;{  switch (code)    {    case BFD_RELOC_PPC_B26:      return &xcoff_howto_table[0xa];    case BFD_RELOC_PPC_BA26:      return &xcoff_howto_table[8];    case BFD_RELOC_PPC_TOC16:      return &xcoff_howto_table[3];    case BFD_RELOC_32:    case BFD_RELOC_CTOR:

⌨️ 快捷键说明

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