1999-08-06 Jakub Jelinek <jj@ultra.linux.cz>
authorIan Lance Taylor <ian@airs.com>
Fri, 6 Aug 1999 14:02:34 +0000 (14:02 +0000)
committerIan Lance Taylor <ian@airs.com>
Fri, 6 Aug 1999 14:02:34 +0000 (14:02 +0000)
* config/tc-sparc.h (tc_fix_adjustable): Fix check for PIC local
non-adjustable symbols.

gas/ChangeLog
gas/config/tc-sparc.h

index ecdcd7d..a7af645 100644 (file)
@@ -1,3 +1,8 @@
+1999-08-06  Jakub Jelinek  <jj@ultra.linux.cz>
+
+       * config/tc-sparc.h (tc_fix_adjustable): Fix check for PIC local
+       non-adjustable symbols.
+
 Thu Aug  5 16:52:51 1999  Jerry Quinn <jquinn@nortelnetworks.com>
 
        * config/tc-hppa.c (pa_ip): Change condition args to have '?' prefix.
index bf7b6f9..2435d72 100644 (file)
@@ -127,18 +127,22 @@ extern int elf32_sparc_force_relocation PARAMS ((struct fix *));
 #define tc_fix_adjustable(FIX)                                         \
   (! S_IS_EXTERNAL ((FIX)->fx_addsy)                                   \
    && ! S_IS_WEAK ((FIX)->fx_addsy)                                    \
-   && (FIX)->fx_r_type != BFD_RELOC_SPARC_GOT10                                \
-   && (FIX)->fx_r_type != BFD_RELOC_SPARC_GOT13                                \
-   && (FIX)->fx_r_type != BFD_RELOC_SPARC_GOT22                                \
-   && (FIX)->fx_r_type != BFD_RELOC_SPARC_WPLT30                       \
    && (FIX)->fx_r_type != BFD_RELOC_VTABLE_INHERIT                     \
    && (FIX)->fx_r_type != BFD_RELOC_VTABLE_ENTRY                       \
    && (! sparc_pic_code                                                        \
-       || (FIX)->fx_pcrel                                              \
-       || ((FIX)->fx_subsy != NULL                                     \
-          && (S_GET_SEGMENT ((FIX)->fx_subsy)                          \
-              == S_GET_SEGMENT ((FIX)->fx_addsy)))                     \
-       || S_IS_LOCAL ((FIX)->fx_addsy)))
+       || ((FIX)->fx_r_type != BFD_RELOC_HI22                          \
+          && (FIX)->fx_r_type != BFD_RELOC_LO10                        \
+          && (FIX)->fx_r_type != BFD_RELOC_SPARC13                     \
+          && ((FIX)->fx_r_type != BFD_RELOC_32_PCREL_S2                \
+              || (S_IS_DEFINED ((FIX)->fx_addsy)                       \
+                  && ! S_IS_COMMON ((FIX)->fx_addsy)                   \
+                  && ! S_IS_EXTERNAL ((FIX)->fx_addsy)                 \
+                  && ! S_IS_WEAK ((FIX)->fx_addsy)))                   \
+          && ((FIX)->fx_pcrel                                          \
+              || ((FIX)->fx_subsy != NULL                              \
+                  && (S_GET_SEGMENT ((FIX)->fx_subsy)                  \
+                      == S_GET_SEGMENT ((FIX)->fx_addsy)))             \
+              || S_IS_LOCAL ((FIX)->fx_addsy)))))
 
 /* Finish up the entire symtab.  */
 #define tc_adjust_symtab() sparc_adjust_symtab ()