* ecoff.h (struct ecoff_debug_info): Add adjust field.
authorIan Lance Taylor <ian@airs.com>
Fri, 25 Mar 1994 22:18:00 +0000 (22:18 +0000)
committerIan Lance Taylor <ian@airs.com>
Fri, 25 Mar 1994 22:18:00 +0000 (22:18 +0000)
(struct ecoff_value_adjust): Define.

include/coff/ChangeLog
include/coff/ecoff.h

index 2c9ac2c..20f6c07 100644 (file)
@@ -1,3 +1,12 @@
+Fri Mar 25 17:16:55 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)
+
+       * ecoff.h (struct ecoff_debug_info): Add adjust field.
+       (struct ecoff_value_adjust): Define.
+
+Tue Mar 22 13:22:47 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)
+
+       * mips.h (MIPS_R_PCREL16): Define.
+
 Sat Feb 26 10:26:38 1994  Ian Lance Taylor  (ian@cygnus.com)
 
        * ecoff.h: Add casts to avoid warnings from SVR4 cc.
@@ -375,6 +384,7 @@ Sat Nov 30 20:38:35 1991  Steve Chamberlain  (sac at rtl.cygnus.com)
        * ChangeLog, a29k.h, h8300.h, i386.h, i960.h, internal.h, m68k.h,
        m88k.h, mips.h, rs6000.h: move from above coff-<foo>.h
 
-
-
-
+\f
+Local Variables:
+version-control: never
+End:
index 6e3d126..e3b1dd7 100644 (file)
@@ -158,42 +158,42 @@ struct tir_ext {
        unsigned char   t_tq23[1];
 };
 
-#define        TIR_BITS1_FBITFIELD_BIG         0x80
-#define        TIR_BITS1_FBITFIELD_LITTLE      0x01
+#define        TIR_BITS1_FBITFIELD_BIG         ((unsigned int) 0x80)
+#define        TIR_BITS1_FBITFIELD_LITTLE      ((unsigned int) 0x01)
 
-#define        TIR_BITS1_CONTINUED_BIG         0x40
-#define        TIR_BITS1_CONTINUED_LITTLE      0x02
+#define        TIR_BITS1_CONTINUED_BIG         ((unsigned int) 0x40)
+#define        TIR_BITS1_CONTINUED_LITTLE      ((unsigned int) 0x02)
 
-#define        TIR_BITS1_BT_BIG                0x3F
+#define        TIR_BITS1_BT_BIG                ((unsigned int) 0x3F)
 #define        TIR_BITS1_BT_SH_BIG             0
-#define        TIR_BITS1_BT_LITTLE             0xFC
+#define        TIR_BITS1_BT_LITTLE             ((unsigned int) 0xFC)
 #define        TIR_BITS1_BT_SH_LITTLE          2
 
-#define        TIR_BITS_TQ4_BIG                0xF0
+#define        TIR_BITS_TQ4_BIG                ((unsigned int) 0xF0)
 #define        TIR_BITS_TQ4_SH_BIG             4
-#define        TIR_BITS_TQ5_BIG                0x0F
+#define        TIR_BITS_TQ5_BIG                ((unsigned int) 0x0F)
 #define        TIR_BITS_TQ5_SH_BIG             0
-#define        TIR_BITS_TQ4_LITTLE             0x0F
+#define        TIR_BITS_TQ4_LITTLE             ((unsigned int) 0x0F)
 #define        TIR_BITS_TQ4_SH_LITTLE          0
-#define        TIR_BITS_TQ5_LITTLE             0xF0
+#define        TIR_BITS_TQ5_LITTLE             ((unsigned int) 0xF0)
 #define        TIR_BITS_TQ5_SH_LITTLE          4
 
-#define        TIR_BITS_TQ0_BIG                0xF0
+#define        TIR_BITS_TQ0_BIG                ((unsigned int) 0xF0)
 #define        TIR_BITS_TQ0_SH_BIG             4
-#define        TIR_BITS_TQ1_BIG                0x0F
+#define        TIR_BITS_TQ1_BIG                ((unsigned int) 0x0F)
 #define        TIR_BITS_TQ1_SH_BIG             0
-#define        TIR_BITS_TQ0_LITTLE             0x0F
+#define        TIR_BITS_TQ0_LITTLE             ((unsigned int) 0x0F)
 #define        TIR_BITS_TQ0_SH_LITTLE          0
-#define        TIR_BITS_TQ1_LITTLE             0xF0
+#define        TIR_BITS_TQ1_LITTLE             ((unsigned int) 0xF0)
 #define        TIR_BITS_TQ1_SH_LITTLE          4
 
-#define        TIR_BITS_TQ2_BIG                0xF0
+#define        TIR_BITS_TQ2_BIG                ((unsigned int) 0xF0)
 #define        TIR_BITS_TQ2_SH_BIG             4
-#define        TIR_BITS_TQ3_BIG                0x0F
+#define        TIR_BITS_TQ3_BIG                ((unsigned int) 0x0F)
 #define        TIR_BITS_TQ3_SH_BIG             0
-#define        TIR_BITS_TQ2_LITTLE             0x0F
+#define        TIR_BITS_TQ2_LITTLE             ((unsigned int) 0x0F)
 #define        TIR_BITS_TQ2_SH_LITTLE          0
-#define        TIR_BITS_TQ3_LITTLE             0xF0
+#define        TIR_BITS_TQ3_LITTLE             ((unsigned int) 0xF0)
 #define        TIR_BITS_TQ3_SH_LITTLE          4
 
 /* Relative symbol external record */
@@ -203,19 +203,19 @@ struct rndx_ext {
 };
 
 #define        RNDX_BITS0_RFD_SH_LEFT_BIG      4
-#define        RNDX_BITS1_RFD_BIG              0xF0
+#define        RNDX_BITS1_RFD_BIG              ((unsigned int) 0xF0)
 #define        RNDX_BITS1_RFD_SH_BIG           4
 
 #define        RNDX_BITS0_RFD_SH_LEFT_LITTLE   0
-#define        RNDX_BITS1_RFD_LITTLE           0x0F
+#define        RNDX_BITS1_RFD_LITTLE           ((unsigned int) 0x0F)
 #define        RNDX_BITS1_RFD_SH_LEFT_LITTLE   8
 
-#define        RNDX_BITS1_INDEX_BIG            0x0F
+#define        RNDX_BITS1_INDEX_BIG            ((unsigned int) 0x0F)
 #define        RNDX_BITS1_INDEX_SH_LEFT_BIG    16
 #define        RNDX_BITS2_INDEX_SH_LEFT_BIG    8
 #define        RNDX_BITS3_INDEX_SH_LEFT_BIG    0
 
-#define        RNDX_BITS1_INDEX_LITTLE         0xF0
+#define        RNDX_BITS1_INDEX_LITTLE         ((unsigned int) 0xF0)
 #define        RNDX_BITS1_INDEX_SH_LITTLE      4
 #define        RNDX_BITS2_INDEX_SH_LEFT_LITTLE 4
 #define        RNDX_BITS3_INDEX_SH_LEFT_LITTLE 12
@@ -338,7 +338,9 @@ struct ecoff_debug_info
      structure provides the sizes of the structures and the functions
      needed to swap the information in and out.  These pointers are
      all pointers to arrays, not single structures.  They will be NULL
-     if there are no instances of the relevant structure.  */
+     if there are no instances of the relevant structure.  These
+     fields are also used by the assembler to output ECOFF debugging
+     information.  */
   unsigned char *line;
   PTR external_dnr;    /* struct dnr_ext */
   PTR external_pdr;    /* struct pdr_ext */
@@ -351,30 +353,49 @@ struct ecoff_debug_info
   PTR external_rfd;    /* struct rfd_ext */
   PTR external_ext;    /* struct ext_ext */
 
-  /* When we are linking, the above pointers point to growing buffers.
-     This set of pointers point to the end of the buffers.  */
-  unsigned char *line_end;
-  PTR external_dnr_end;        /* struct dnr_ext */
-  PTR external_pdr_end;        /* struct pdr_ext */
-  PTR external_sym_end;        /* struct sym_ext */
-  PTR external_opt_end;        /* struct opt_ext */
-  union aux_ext *external_aux_end;
-  char *ss_end;
+  /* These fields are used when linking.  They may disappear at some
+     point.  */
   char *ssext_end;
-  PTR external_fdr_end;        /* struct fdr_ext */
-  PTR external_rfd_end;        /* struct rfd_ext */
-  PTR external_ext_end;        /* struct ext_ext */
+  PTR external_ext_end;
 
-  /* When linking, this field is set to the base FDR index for an
-     input BFD in the output FDR information, and is used when writing
-     out the xternal symbols.  */
-  bfd_size_type ifdbase;
+  /* When linking, this field holds a mapping from the input FDR
+     numbers to the output numbers, and is used when writing out the
+     external symbols.  It is NULL if no mapping is required.  */
+  RFDT *ifdmap;
 
   /* The swapped FDR information.  Currently this is never NULL, but
      code using this structure should probably double-check in case
      this changes in the future.  This is a pointer to an array, not a
      single structure.  */
   FDR *fdr;
+
+  /* When relaxing MIPS embedded PIC code, we may need to adjust
+     symbol values when they are output.  This is a linked list of
+     structures indicating how values should be adjusted.  There is no
+     requirement that the entries be in any order, or that they not
+     overlap.  This field is normally NULL, in which case no
+     adjustments need to be made.  */
+  struct ecoff_value_adjust *adjust;
+};
+
+/* This structure describes how to adjust symbol values when
+   outputting MIPS embedded PIC code.  These adjustments only apply to
+   the internal symbols, as the external symbol values will come from
+   the hash table and have already been adjusted.  */
+
+struct ecoff_value_adjust
+{
+  /* Next entry on adjustment list.  */
+  struct ecoff_value_adjust *next;
+  /* Starting VMA of adjustment.  This is the VMA in the ECOFF file,
+     not the offset from the start of the section.  Thus it should
+     indicate a particular section.  */
+  bfd_vma start;
+  /* Ending VMA of adjustment.  */
+  bfd_vma end;
+  /* Adjustment.  This should be added to the value of the symbol, or
+     FDR.  This is zero for the last entry in the array.  */
+  long adjust;
 };
 
 #endif /* ! defined (ECOFF_H) */