From 5517168c9e0b01d40d1a758858a32de5ce434a98 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Fri, 25 Mar 1994 22:18:00 +0000 Subject: [PATCH] * ecoff.h (struct ecoff_debug_info): Add adjust field. (struct ecoff_value_adjust): Define. --- include/coff/ChangeLog | 16 +++++-- include/coff/ecoff.h | 99 +++++++++++++++++++++++++----------------- 2 files changed, 73 insertions(+), 42 deletions(-) diff --git a/include/coff/ChangeLog b/include/coff/ChangeLog index 2c9ac2cb8a4..20f6c07b5b5 100644 --- a/include/coff/ChangeLog +++ b/include/coff/ChangeLog @@ -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-.h - - - + +Local Variables: +version-control: never +End: diff --git a/include/coff/ecoff.h b/include/coff/ecoff.h index 6e3d1261bbb..e3b1dd7edf6 100644 --- a/include/coff/ecoff.h +++ b/include/coff/ecoff.h @@ -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) */ -- 2.30.2