* write.c (adjust_reloc_syms): Never adjust relocs against weak
authorIan Lance Taylor <ian@airs.com>
Fri, 19 Jun 1998 17:58:12 +0000 (17:58 +0000)
committerIan Lance Taylor <ian@airs.com>
Fri, 19 Jun 1998 17:58:12 +0000 (17:58 +0000)
symbols.
* config/tc-mips.c (md_apply_fix): Adjust accordingly.

gas/ChangeLog
gas/config/tc-mips.c

index fbbeb579841f300044ca952b836d6e44dacc953e..9da20dedc0df2683db3da37fb59f1dc18509aa2e 100644 (file)
@@ -1,3 +1,9 @@
+Fri Jun 19 13:57:06 1998  Ian Lance Taylor  <ian@cygnus.com>
+
+       * write.c (adjust_reloc_syms): Never adjust relocs against weak
+       symbols.
+       * config/tc-mips.c (md_apply_fix): Adjust accordingly.
+
 Fri Jun 19 09:50:17 1998  Jeffrey A Law  (law@cygnus.com)
 
 start-sanitize-am33
index d26b4fdf45f22dd3bfa5548a29ab5eed880227c5..cfe6292b2c358d83c88bb93404b780f4911747cf 100644 (file)
@@ -140,7 +140,11 @@ mips_target_format ()
 
 /* This is the set of options which may be modified by the .set
    pseudo-op.  We use a struct so that .set push and .set pop are more
-   reliable.  */
+   reliable.
+
+   FIXME: The CPU specific variables (mips_4010, et. al.) should
+   probably be in here as well, and there should probably be some way
+   to set them.  */
 
 struct mips_set_options
 {
@@ -234,7 +238,17 @@ static int mips_4900 = -1;
 
 /* Whether the processor uses hardware interlocks to protect 
    reads from the HI and LO registers, and thus does not
-   require nops to be inserted.  */
+   require nops to be inserted.
+
+   FIXME: We really should not be checking mips_cpu here.  The -mcpu=
+   option is documented to not do anything special.  In gcc, the
+   -mcpu= option only affects scheduling, and does not affect code
+   generation.  Each test of -mcpu= here should actually be testing a
+   specific variable, such as mips_4010, and each such variable should
+   have a command line option to set it.  The -mcpu= option may be
+   used to set the default value of these options, as is the case for
+   mips_4010.  */
+
 #define hilo_interlocks (mips_4010 ||  mips_3900                    \
                          /* start-sanitize-tx49 */                  \
                          || mips_cpu == 4900 || mips_4900           \
@@ -9911,7 +9925,8 @@ md_apply_fix (fixP, valueP)
 #ifdef OBJ_ELF
   if (fixP->fx_addsy != NULL
       && OUTPUT_FLAVOR == bfd_target_elf_flavour
-      && S_GET_OTHER (fixP->fx_addsy) == STO_MIPS16)
+      && (S_GET_OTHER (fixP->fx_addsy) == STO_MIPS16
+         || S_IS_WEAK (fixP->fx_addsy)))
     {
       value -= S_GET_VALUE (fixP->fx_addsy);
       if (value != 0 && ! fixP->fx_pcrel)