From 3b548344d0c68e3c66965f10a882112cd6b3bc3c Mon Sep 17 00:00:00 2001 From: Steve Chamberlain Date: Sat, 22 Feb 1992 17:30:50 +0000 Subject: [PATCH] Made less things defined by default, now builds on sun3 and sun4. --- gas/config/a.out.gnu.h | 79 +++++++++++++++++++++++++++--------------- 1 file changed, 52 insertions(+), 27 deletions(-) diff --git a/gas/config/a.out.gnu.h b/gas/config/a.out.gnu.h index 29edcdb0b1f..5f3927525ec 100755 --- a/gas/config/a.out.gnu.h +++ b/gas/config/a.out.gnu.h @@ -21,6 +21,18 @@ #ifndef __A_OUT_GNU_H__ #define __A_OUT_GNU_H__ +/* There are two main flavours of a.out, one which uses the standard + relocations, and one which uses extended relocations. + + Today, the extended reloc uses are + TC_SPARC, TC_A29K + + each must define the enum reloc_type + +*/ + +#define USE_EXTENDED_RELOC (defined(TC_SPARC) || defined(TC_A29K)) + #if defined(TC_SPARC) || defined(TC_A29K) enum reloc_type { RELOC_8, RELOC_16, RELOC_32, /* simple relocations */ @@ -49,17 +61,6 @@ enum reloc_type { }; #endif /* TC_SPARC or TC_A29K */ -#ifdef TC_I860 -/* NOTE: three bits max, see struct reloc_info_i860.r_type */ -enum i860_reloc_type { - NO_RELOC = 0, BRADDR, LOW0, LOW1, LOW2, LOW3, LOW4, SPLIT0, SPLIT1, SPLIT2, RELOC_32, -}; - - /* NOTE: two bits max, see reloc_info_i860.r_type */ -enum highlow_type { - NO_SPEC = 0, PAIR, HIGH, HIGHADJ, -}; -#endif /* TC_I860 */ #define __GNU_EXEC_MACROS__ @@ -286,6 +287,7 @@ struct nlist { reloc_ext_bytes is how it looks on disk. reloc_info_extended is how we might process it on a native host. */ +#if USE_EXTENDED_RELOC struct reloc_ext_bytes { unsigned char r_address[4]; @@ -294,22 +296,6 @@ struct reloc_ext_bytes { unsigned char r_addend[4]; }; -struct reloc_info_i860 -{ - unsigned long r_address; - /* - * Using bit fields here is a bad idea because the order is not portable. :-( - */ - unsigned int r_symbolnum: 24; - unsigned int r_pcrel : 1; - unsigned int r_extern : 1; - /* combining the two field simplifies the argument passing in "new_fix()" */ - /* and is compatible with the existing Sparc #ifdef's */ - /* r_type: highlow_type - bits 5,4; reloc_type - bits 3-0 */ - unsigned int r_type : 6; - long r_addend; -}; - #define RELOC_EXT_BITS_EXTERN_BIG 0x80 #define RELOC_EXT_BITS_EXTERN_LITTLE 0x01 @@ -334,8 +320,45 @@ struct reloc_info_extended long int r_addend; }; +#else + /* The standard, old-fashioned, Berkeley compatible relocation struct */ + + +#ifdef TC_I860 +/* NOTE: three bits max, see struct reloc_info_i860.r_type */ +enum i860_reloc_type { + NO_RELOC = 0, BRADDR, LOW0, LOW1, LOW2, LOW3, LOW4, SPLIT0, SPLIT1, SPLIT2, RELOC_32, +}; + +typedef enum i860_reloc_type reloc_type; + + /* NOTE: two bits max, see reloc_info_i860.r_type */ +enum highlow_type { + NO_SPEC = 0, PAIR, HIGH, HIGHADJ, +}; + + +struct reloc_info_i860 +{ + unsigned long r_address; + /* + * Using bit fields here is a bad idea because the order is not portable. :-( + */ + unsigned int r_symbolnum: 24; + unsigned int r_pcrel : 1; + unsigned int r_extern : 1; + /* combining the two field simplifies the argument passing in "new_fix()" */ + /* and is compatible with the existing Sparc #ifdef's */ + /* r_type: highlow_type - bits 5,4; reloc_type - bits 3-0 */ + unsigned int r_type : 6; + long r_addend; +}; + +#endif /* TC_I860 */ + + struct reloc_std_bytes { unsigned char r_address[4]; unsigned char r_index[3]; @@ -364,6 +387,8 @@ struct reloc_std_bytes { #define RELOC_STD_SIZE 8 /* Bytes per relocation entry */ +#endif /* USE_EXTENDED_RELOC */ + #ifndef CUSTOM_RELOC_FORMAT struct relocation_info { -- 2.30.2