Various arious PA changes from Utah.
authorKen Raeburn <raeburn@cygnus>
Thu, 21 Oct 1993 20:03:19 +0000 (20:03 +0000)
committerKen Raeburn <raeburn@cygnus>
Thu, 21 Oct 1993 20:03:19 +0000 (20:03 +0000)
V9 bugfix.
See changelog...

gas/ChangeLog
gas/ChangeLog.v9
gas/write.c

index 0b1caff4d0ab35d907fe09585ed321b90b0dc846..863b15c3199244875271ad9898c8baacab666985 100644 (file)
@@ -1,3 +1,86 @@
+Thu Oct 21 12:52:01 1993  Ken Raeburn  (raeburn@cygnus.com)
+
+       * config/tc-m68k.h: Don't define REGISTER_PREFIX or
+       OPTIONAL_REGISTER_PREFIX if either is already defined.
+
+       * config/tc-m68k.c (m68k_ip): Delete some code in "#if 0".
+
+       * configure.in: Set bfd_gas for all sparc targets.  Added facility
+       for keeping or rejecting configurations still under development;
+       default is to assume production environment, and reject configs
+       still being worked on.  Mark Elf configurations (except sparc and
+       i386) as developmental.  Deleted cases matching some generic names
+       in favor of more specific names.  (E.g., when we get Alpha
+       support, we'll still only support VMS for Vax.)
+
+       * config/tc-sparc.h (md_end): New macro.
+       * config/tc-sparc.c (md_end): Function deleted.
+       (BFD_RELOC_*): Delete macros that used to help keep the non-bfd
+       version compiling.  All sparc targets will use bfd now.
+       * tc.h (md_end): Don't declare if it's defined as a macro.
+
+       Changes from Jeff Law and Peter Hoogenboom:
+
+       * read.c (next_char_of_string): Limit octal character constants to
+       three digits.
+
+       * config/tc-hppa.h: Major cleanup.  Use GNU-style comments.  Warn
+       against placing additional object-file dependent code here.  Warn
+       against contaminating all of GAS with the internals of tc-hppa.c
+       through inclusion of tc-hppa.h.  Delete all forward declarations
+       for functions only used within tc-hppa.c, likewise for structures,
+       variables, and #defines.  Try to group OBJ_ELF and OBJ_SOM
+       conditional code in a few small places.
+
+       * config/tc-hppa.c: Major cleanup.  Use GNU-style comments.  Group
+       structures, global variables, forward declarations together.
+       Reduce (or in some cases eliminate) OBJ_ELF and OBJ_SOM
+       conditional code -- try to group conditional code together
+       into a few places.   Make all functions and variables which
+       are only used within tc-hppa.c static.  PARAMize all functions.
+       Add comments to functions.  Delete unused functions, variables,
+       #defines, etc.  Delete unused members within structures.  Delete
+       ldil;ble hacks -- it is believed they were installed to work
+       around old gas bugs.   Avoid using mixed case for local
+       functions, variables, and structures.  Fix formatting problems
+       not found by GNU-indent.  Add FIXME notices for things which
+       should be worked on the near future.  Delete lots of old
+       useless (1.36 PA-SOM) code.  
+
+       * config/tc-hppa.c: (fix_new_hppa): Initialize the fx_r_type
+       field of the fixS structure.  Needed to build unwind
+       descriptors correctly.
+
+       * write.c: (fixup_segment): Allow expressions such as
+       sym1-sym2+const as long as sym2 is $global$.
+
+       * write.c (adjust_reloc_syms): Provide a hook so that a target
+       cpu configuration can reject certain relocation reductions.
+       * tc-hppa.h (tc_fix_adjustable): New macro.  Only accept relocations
+       which do not involve function symbols.
+
+       * config/tc-hppa.h: Reindent with GNU-indent.  Delete references
+       to OBJ_OSFROSE.  Fix typos (OBJ_SOME -> OBJ_SOM).  Delete unused
+       STAB_FIXUP macro.
+       * config/tc-hppa.c: Likewise.
+
+       * config/tc-hppa.c (md_apply_fix_1): Use elf_symbol_type, instead
+       of elf32_symbol_type.
+       (pa_export_args): Likewise.
+       (elf_hppa_final_processing): Likewise.
+       (pa_desc): Do not call obj_elf_desc.  (Is pa_desc even needed
+       anymore?)
+       (hppa_tc_make_sections): Do not declare elf_get_symtab_map any
+       ore.
+
+       * config/tc-hppa.c: (md_section_align): Align all sections to
+       a multiple of the section alignment rather than always a
+       multiple of 8.
+
+       * config/tc-hppa.c (hppa_tc_symbol): If the argument relocation
+       bits are zero (eg they specify no relocations), then do not even
+       bother adding their entries to thesymextn section.
+
 Thu Oct 21 15:44:55 1993  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)
 
        * config/tc-sparc.c (md_parse_option): Accept and ignore -sparc
index 7b1a32335eb1a3b1d0e733e84b6a41281ed3dfb9..8686be76c199af57fdc4967b3b990e537ce37e93 100644 (file)
@@ -1,3 +1,9 @@
+Wed Oct 20 12:26:33 1993  Ken Raeburn  (raeburn@rover.cygnus.com)
+
+       * config/tc-sparc.c (sparc_ip, label "immediate"): Convert relocs
+       operating on upper 32 bits of immediate constants to lower-half
+       relocs with adjusted constants.
+
 Fri Sep  3 18:17:32 1993  Ken Raeburn  (raeburn@cambridge.cygnus.com)
 
        * config/obj-elf.h (elf_symbol): No longer special-cased on
index 38771b460f53a10ddfcf58167dbed6ad5fdf3c7f..2b8aec97c871de5b41c93b138c01347f06c0af23 100644 (file)
@@ -544,6 +544,15 @@ adjust_reloc_syms (abfd, sec, xxx)
            continue;
          }
 #endif
+
+       /* Is there some other (target cpu dependent) reason we can't adjust
+          this one?  (E.g. relocations involving function addresses on 
+          the PA.  */
+#ifdef tc_fix_adjustable
+       if (! tc_fix_adjustable (fixp))
+         continue;
+#endif
+
        /* If the section symbol isn't going to be output, the relocs
           at least should still work.  If not, figure out what to do
           when we run into that case.  */
@@ -858,6 +867,7 @@ relax_and_size_all_segments ()
   bss_address_frag.fr_address = (H_GET_TEXT_SIZE (&headers) +
                                 H_GET_DATA_SIZE (&headers));
 
+#endif /* ! OBJ_BOUT */
 
   /* Slide all the frags */
   if (bss_frag_root)
@@ -870,8 +880,6 @@ relax_and_size_all_segments ()
        }                       /* for each bss frag */
     }
 
-#endif /* ! OBJ_BOUT */
-
   if (bss_last_frag)
     H_SET_BSS_SIZE (&headers,
                    bss_last_frag->fr_address - bss_frag_root->fr_address);
@@ -1865,6 +1873,7 @@ fixup_segment (fixP, this_segment_type)
                add_symbolP = NULL;
                fixP->fx_addsy = NULL;
              }
+#if !defined(SEG_DIFF_ALLOWED) && !defined (GLOBAL_DIFF_ALLOWED)
            else
              {
                /* Different segments in subtraction. */
@@ -1896,6 +1905,14 @@ fixup_segment (fixP, this_segment_type)
                            segment_name (S_GET_SEGMENT (sub_symbolP)),
                            S_GET_NAME (sub_symbolP), buf);
                  }
+#else
+                else
+                  {
+                    seg_reloc_count++;
+                   fixP->fx_addnumber = add_number;    /* Remember value for emit_reloc */
+                    continue;
+                  }            /* if absolute */
+#endif
              }
          }
 
@@ -1920,7 +1937,9 @@ fixup_segment (fixP, this_segment_type)
                add_number += S_GET_VALUE (add_symbolP);
                add_number -= md_pcrel_from (fixP);
                pcrel = 0;      /* Lie. Don't want further pcrel processing. */
+#ifndef TC_HPPA
                fixP->fx_addsy = NULL;  /* No relocations please. */
+#endif
              }
            else
              {
@@ -1994,10 +2013,14 @@ fixup_segment (fixP, this_segment_type)
            if ((add_number & mask) != 0
                && (add_number & mask) != mask)
              {
-               char buf[50];
+               char buf[50], buf2[50];
                sprint_value (buf, fragP->fr_address + where);
-               as_bad ("Value of %ld too large for field of %d bytes at %s",
-                       (long) add_number, size, buf);
+               if (add_number > 1000)
+                 sprint_value (buf2, add_number);
+               else
+                 sprintf (buf2, "%d", (long) add_number);
+               as_bad ("Value of %s too large for field of %d bytes at %s",
+                       buf2, size, buf);
              }                 /* generic error checking */
 #ifdef WARN_SIGNED_OVERFLOW_WORD
            /* Warn if a .word value is too large when treated as a signed