write.c: Complain about .space or .org moving backwards.
authorKen Raeburn <raeburn@cygnus>
Tue, 11 Apr 1995 06:10:34 +0000 (06:10 +0000)
committerKen Raeburn <raeburn@cygnus>
Tue, 11 Apr 1995 06:10:34 +0000 (06:10 +0000)
Do generic rs_machine_dependent relaxation only if TC_GENERIC_RELAX_TABLE is
defined.  Use its value as the base of the table, so the actual declaration
can be cpu-specific (and const or not as appropriate).  For other cpus where
this isn't done (the majority), delete md_relax_table altogether.

For machines with WORKING_DOT_WORD, delete md_{short,long}_jump_size.

gas/config/tc-a29k.c
gas/config/tc-arc.c
gas/config/tc-h8500.c
gas/config/tc-h8500.h
gas/config/tc-m88k.c
gas/config/tc-ppc.c
gas/config/tc-rce.h
gas/config/tc-tahoe.c
gas/config/tc-tahoe.h
gas/config/tc-w65.c
gas/config/tc-w65.h

index 41d9277e3dd00921cec88d6f47fae3bbbe88fdf1..286b73b60ef788ad0dcd552d42d388c6d7f5d285 100644 (file)
 #define        machine_ip      a29k_ip
 #define        machine_it      a29k_it
 
-const relax_typeS md_relax_table[] =
-{
-  { 0, 0, 0, 0 }
-};
-
 #define        IMMEDIATE_BIT   0x01000000      /* Turns RB into Immediate */
 #define        ABSOLUTE_BIT    0x01000000      /* Turns PC-relative to Absolute */
 #define        CE_BIT          0x00800000      /* Coprocessor enable in LOAD */
index c8f216bb3f2229e74afb367943a5b41a92afc052..1fe8f5c78519b2fac52a436fd08d2e34a05c9abe 100644 (file)
@@ -49,9 +49,6 @@ const pseudo_typeS md_pseudo_table[] =
   { NULL, 0, 0 },
 };
 
-const int md_short_jump_size = 4;
-const int md_long_jump_size = 4;
-
 /* This array holds the chars that always start a comment.  If the
    pre-processor is disabled, these aren't very useful */
 const char comment_chars[] = "#;";
@@ -1009,11 +1006,6 @@ md_estimate_size_before_relax (fragp, seg)
   abort ();
 }
 
-const relax_typeS md_relax_table[] =
-{
-  { 0 }
-};
-
 /* Convert a machine dependent frag.  We never generate these.  */
 
 void
index feb08ad84613add3673225f96bc31a3d18f4f1c7..7b4568073c7efc9814ed9c20cef69c89955814c4 100644 (file)
@@ -87,7 +87,7 @@ const char FLT_CHARS[] = "rRsSfFdDxXpP";
 #define WORD_F 32767
 #define WORD_B 32768
 
-const relax_typeS md_relax_table[C (END, 0)];
+relax_typeS md_relax_table[C (END, 0)];
 
 static struct hash_control *opcode_hash_control;       /* Opcode mnemonics */
 
index ebca8ab5563867e8c53549445704443cc6d9688e..551c9ea33ace6c70bd1de715181378bc352dca1e 100644 (file)
@@ -41,4 +41,7 @@
 
 #define md_operand(x)
 
+extern struct relax_type md_relax_table[];
+#define TC_GENERIC_RELAX_TABLE md_relax_table
+
 /* end of tc-h8500.h */
index abbc11822c883777f3b3b2915a35a3362c538f1e..2ee9c3f0e9c6c0c33dc39832f36fe824092daeef 100644 (file)
@@ -1168,9 +1168,6 @@ md_estimate_size_before_relax (fragP, segment_type)
   return (-1);
 }
 
-const relax_typeS md_relax_table[] =
-{0};
-
 #if 0
 
 /* As far as I can tell, this routine is never called.  What is it
index f21096d4829a67f7929c8322fede63a546672cb4..09c997bd10e67e76f55cc27c3ab972efa7f9449e 100644 (file)
@@ -252,6 +252,7 @@ md_parse_option (c, arg)
          Motorola PowerPC 603/604.  */
       else if (strcmp (arg, "ppc") == 0
               || strcmp (arg, "ppc32") == 0
+              || strcmp (arg, "403") == 0
               || strcmp (arg, "603") == 0
               || strcmp (arg, "604") == 0)
        ppc_cpu = PPC_OPCODE_PPC;
@@ -306,7 +307,7 @@ PowerPC options:\n\
 -mpwrx                 generate code for IBM POWER/2 (RIOS2)\n\
 -mpwr                  generate code for IBM POWER (RIOS1)\n\
 -m601                  generate code for Motorola PowerPC 601\n\
--mppc, -mppc32, -m603, -m604\n\
+-mppc, -mppc32, -m403, -m603, -m604\n\
                        generate code for Motorola PowerPC 603/604\n\
 -many                  generate code for any architecture (PWR/PWRX/PPC)\n");
 #ifdef OBJ_ELF
@@ -592,6 +593,8 @@ ppc_elf_validate_fix (fixS *fixp, segT seg)
       && !fixp->fx_pcrel
       && fixp->fx_r_type <= BFD_RELOC_UNUSED
       && strcmp (segment_name (seg), ".got2") != 0
+      && strcmp (segment_name (seg), ".dtors") != 0
+      && strcmp (segment_name (seg), ".ctors") != 0
       && strcmp (segment_name (seg), ".stab") != 0)
     {
       as_warn_where (fixp->fx_file, fixp->fx_line,
@@ -2371,11 +2374,6 @@ md_estimate_size_before_relax (fragp, seg)
   abort ();
 }
 
-const relax_typeS md_relax_table[] =
-{
-  { 0 }
-};
-
 /* Convert a machine dependent frag.  We never generate these.  */
 
 void
index da367378b5244376b779d5fae173a2b3d7bd6c5b..0b90c13923d3d8c1016eb2a12b2e2458cd8a3be2 100644 (file)
@@ -53,4 +53,7 @@
 
 #define md_operand(x)
 
+extern const struct relax_type md_relax_table[];
+#define TC_GENERIC_RELAX_TABLE md_relax_table
+
 #endif
index 1e2006d1f819f7f75b186e5c29421f01b4b627da..b9be45ade23a383061fdf97f1d87edc57dbb04cd 100644 (file)
@@ -247,8 +247,7 @@ pc_rel_disp? That sort of thing.) */
 /* This is the table used by gas to figure out relaxing modes. The fields are
    forward_branch reach, backward_branch reach, number of bytes it would take,
    where the next biggest branch is. */
-const relax_typeS
-  md_relax_table[] =
+const relax_typeS md_relax_table[] =
 {
   {
     1, 1, 0, 0
index b355772c13658674ca5a6c222d688831f7feadfb..9e95986565b3d79fc1ef5a44ede5c67fa5fc2528 100644 (file)
@@ -28,6 +28,9 @@
 
 #define md_operand(x)
 
+extern const struct relax_type md_relax_table[];
+#define TC_GENERIC_RELAX_TABLE md_relax_table
+
 /*
  * Local Variables:
  * comment-column: 0
index c98d92fef6ad72de51d72d6cdf989db5202566e5..bd802e5e4938b6b606678178e2709987326de6a0 100644 (file)
@@ -108,7 +108,7 @@ int X;                              /* X flag */
 #define WORD_F 32767
 #define WORD_B 32768
 
-const relax_typeS md_relax_table[C (END, 0)];
+relax_typeS md_relax_table[C (END, 0)];
 
 /*
    This function is called once, at assembler startup time.  This should
index 7622326871463cb2055b28447328144354e1aa1f..969fa095feee153599fa114827ff5b3d2db66f9a 100644 (file)
@@ -46,4 +46,7 @@ int tc_cons_reloc;
 
 #define md_operand(x)
 
+extern struct relax_type md_relax_table[];
+#define TC_GENERIC_RELAX_TABLE md_relax_table
+
 /* end of tc-w65.h */