* config/obj-coffbfd.c (do_relocs_for): Remove a29k special case.
authorIan Lance Taylor <ian@airs.com>
Thu, 25 Mar 1993 22:09:27 +0000 (22:09 +0000)
committerIan Lance Taylor <ian@airs.com>
Thu, 25 Mar 1993 22:09:27 +0000 (22:09 +0000)
(fixup_segment): Add a29k special case; the linker is not prepared
to see a segment offset here.

gas/ChangeLog
gas/config/obj-coffbfd.c

index 3e2fb11fac7bdec19e045da721236174821c7287..0c075883ef373de026e3d528580c02c39b8c5c5d 100644 (file)
@@ -1,5 +1,9 @@
 Thu Mar 25 08:59:14 1993  Ian Lance Taylor  (ian@cygnus.com)
 
+       * config/obj-coffbfd.c (do_relocs_for): Remove a29k special case.
+       (fixup_segment): Add a29k special case; the linker is not prepared
+       to see a segment offset here.
+
        * app.c (do_scrub_next_char): Added new state, 10, modifying state
        9 to only keep a space in between identifier characters.
 
index 2cce1aebd88c7b503becae55765369225c1d64cf..2ab28a6a86adabddc6a79ef2d7a5942f96780a0f 100644 (file)
@@ -434,14 +434,6 @@ DEFUN (do_relocs_for, (abfd, h, file_cursor),
                          /* now emit the second bit */
                          intr.r_type = R_IHCONST;
                          intr.r_symndx = fix_ptr->fx_addnumber;
-
-                         /* The offset to the segment holding the symbol
-                            has already been counted in the R_IHIHALF.
-                            We don't want to add it in again for the
-                            R_IHCONST.  */
-                         if (symbol_ptr)
-                           intr.r_symndx -=
-                             segment_info[S_GET_SEGMENT (symbol_ptr)].scnhdr.s_paddr;
                          (void) bfd_coff_swap_reloc_out (abfd, &intr, ext_ptr);
                          ext_ptr++;
                        }
@@ -2513,8 +2505,14 @@ DEFUN (fixup_segment, (segP, this_segment_type),
                  break;
                default:
 
+#ifdef TC_A29K
+                 /* This really should be handled in the linker, but
+                    backward compatibility forbids.  */
+                 add_number += S_GET_VALUE (add_symbolP);
+#else
                  add_number += S_GET_VALUE (add_symbolP) +
                    segment_info[S_GET_SEGMENT (add_symbolP)].scnhdr.s_paddr;
+#endif
                  break;
 
                case SEG_UNKNOWN: