Made less things defined by default, now builds on sun3 and sun4.
authorSteve Chamberlain <sac@cygnus>
Sat, 22 Feb 1992 17:30:50 +0000 (17:30 +0000)
committerSteve Chamberlain <sac@cygnus>
Sat, 22 Feb 1992 17:30:50 +0000 (17:30 +0000)
gas/config/a.out.gnu.h

index 29edcdb0b1f43550c53bf79e2e31ee8b74b973a5..5f3927525ecf00584068ea7656b88a5e4bcb14ff 100755 (executable)
 #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
 {