* config/tc-hppa.c (fix_new_hppa): Make sure a sub_symbol
authorJeff Law <law@redhat.com>
Sun, 28 Nov 1993 20:15:21 +0000 (20:15 +0000)
committerJeff Law <law@redhat.com>
Sun, 28 Nov 1993 20:15:21 +0000 (20:15 +0000)
exists before trying to peek at its name.
(pa_space): Do not call pa_align_subseg.  See hppa/unsorted/align3.s
for testcase.
(pa_align_subseg): Delete unused/unwanted function.

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

index a0b99ced46234fa8dd8573c1b3cb4158d1f234f2..79a302b8fa359affd4a604831802118f7e740f5e 100644 (file)
@@ -1,3 +1,11 @@
+Sun Nov 28 12:11:40 1993  Jeffrey A. Law  (law@snake.cs.utah.edu)
+
+       * config/tc-hppa.c (fix_new_hppa): Make sure a sub_symbol
+       exists before trying to peek at its name.
+       (pa_space): Do not call pa_align_subseg.  See hppa/unsorted/align3.s
+       for testcase.
+       (pa_align_subseg): Delete unused/unwanted function.
+
 Sat Nov 27 22:49:07 1993  Jeffrey A. Law  (law@snake.cs.utah.edu)
 
        * read.c (read_a_source_file): Fix test for when to stick a colon
index 97353bb86a95cbd6259ed594da5d656b5306fc98..e588ca89abced5facc978cd96262348a6d2d9e60 100644 (file)
@@ -618,7 +618,6 @@ static int is_same_frag PARAMS ((fragS *, fragS *));
 static void pa_build_unwind_subspace PARAMS ((struct call_info *));
 static void process_exit PARAMS ((void));
 static sd_chain_struct *pa_parse_space_stmt PARAMS ((char *, int));
-static void pa_align_subseg PARAMS ((asection *, subsegT));
 static int log2 PARAMS ((int));
 static int pa_next_subseg PARAMS ((sd_chain_struct *));
 static unsigned int pa_stringer_aux PARAMS ((char *));
@@ -1355,7 +1354,8 @@ fix_new_hppa (frag, where, size, add_symbol, offset, exp, pcrel,
   /* foo-$global$ is used to access non-automatic storage.  $global$
      is really just a marker and has served its purpose, so eliminate
      it now so as not to confuse write.c.  */
-  if (!strcmp (S_GET_NAME (new_fix->fx_subsy), "$global$"))
+  if (new_fix->fx_subsy
+      && !strcmp (S_GET_NAME (new_fix->fx_subsy), "$global$"))
     new_fix->fx_subsy = NULL;
 }
 
@@ -5230,37 +5230,6 @@ pa_parse_space_stmt (space_name, create_flag)
   return space;
 }
 
-/* Adjust the frag's alignment according to the alignment needs
-   of the given subspace/subsegment.  */
-
-static void
-pa_align_subseg (seg, subseg)
-     asection *seg;
-     subsegT subseg;
-{
-  ssd_chain_struct *now_subspace;
-  int alignment;
-  int shift = 0;
-
-  now_subspace = pa_subsegment_to_subspace (seg, subseg);
-  if (now_subspace)
-    {
-      if (SUBSPACE_ALIGN (now_subspace) == 0)
-       alignment = now_subspace->ssd_last_align;
-      else if (now_subspace->ssd_last_align > SUBSPACE_ALIGN (now_subspace))
-       alignment = now_subspace->ssd_last_align;
-      else
-       alignment = SUBSPACE_ALIGN (now_subspace);
-
-      while ((1 << shift) < alignment)
-       shift++;
-    }
-  else
-    shift = bfd_get_section_alignment (stdoutput, seg);
-
-  frag_align (shift, 0);
-}
-
 /* Handle a .SPACE pseudo-op; this switches the current space to the
    given space, creating the new space if necessary.  */
 
@@ -5292,13 +5261,7 @@ pa_space (unused)
            sd_chain = pa_parse_space_stmt ("$TEXT$", 0);
 
          current_space = sd_chain;
-
-         /* No need to align if we are already there.  */
-         if (now_seg != text_section)
-           pa_align_subseg (now_seg, now_subseg);
-
          subseg_set (text_section, sd_chain->sd_last_subseg);
-
          current_subspace
            = pa_subsegment_to_subspace (text_section,
                                         sd_chain->sd_last_subseg);
@@ -5315,11 +5278,6 @@ pa_space (unused)
            sd_chain = pa_parse_space_stmt ("$PRIVATE$", 0);
 
          current_space = sd_chain;
-
-         /* No need to align if we are already there.  */
-         if (now_seg != data_section)
-           pa_align_subseg (now_seg, now_subseg);
-
          subseg_set (data_section, sd_chain->sd_last_subseg);
          current_subspace
            = pa_subsegment_to_subspace (data_section,
@@ -5344,10 +5302,6 @@ pa_space (unused)
            asection *gdb_section
            = bfd_make_section_old_way (stdoutput, GDB_DEBUG_SPACE_NAME);
 
-           /* No need to align if we are already there.  */
-           if (strcmp (segment_name (now_seg), GDB_DEBUG_SPACE_NAME) != 0)
-             pa_align_subseg (now_seg, now_subseg);
-
            subseg_set (gdb_section, sd_chain->sd_last_subseg);
            current_subspace
              = pa_subsegment_to_subspace (gdb_section,
@@ -5366,8 +5320,6 @@ pa_space (unused)
            {
              current_space = sd_chain;
 
-             if (now_seg != sd_chain->sd_seg)
-               pa_align_subseg (now_seg, now_subseg);
              subseg_set (sd_chain->sd_seg, sd_chain->sd_last_subseg);
              current_subspace
                = pa_subsegment_to_subspace (sd_chain->sd_seg,
@@ -5389,8 +5341,6 @@ pa_space (unused)
       sd_chain = pa_parse_space_stmt (space_name, 1);
       current_space = sd_chain;
 
-      if (now_seg != sd_chain->sd_seg)
-       pa_align_subseg (now_seg, now_subseg);
       subseg_set (sd_chain->sd_seg, sd_chain->sd_last_subseg);
       current_subspace = pa_subsegment_to_subspace (sd_chain->sd_seg,
                                                  sd_chain->sd_last_subseg);