]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
c-pragma.h (add_weak): Move prototype from here...
authorEric Christopher <echristo@redhat.com>
Tue, 28 Aug 2001 23:03:52 +0000 (23:03 +0000)
committerEric Christopher <echristo@gcc.gnu.org>
Tue, 28 Aug 2001 23:03:52 +0000 (23:03 +0000)
2001-08-28  Eric Christopher <echristo@redhat.com>
    Richard Henderson <rth@redhat.com>

* c-pragma.h (add_weak): Move prototype from here...
* output.h (add_weak): ... to here.
* varasm.c (add_weak): Fix typo.
* config/mips/crti.asm: New file.
* config/mips/crtn.asm: Ditto.
* config/mips/elf.h (SBSS_SECTION_ASM_OP) Add #undef.
(CTOR_LISTS_DEFINED_EXTERNALLY): Remove.
(INVOKE__main): Ditto.
(INIT_SECTION_ASM_OP): New.
(FINI_SECTION_ASM_OP): Ditto.
(STARTFILE_SPEC): Add crti.
(ENDFILE_SPEC): Add crtn.
* config/mips/elf64.h: Same.
* config/mips/rtems64.h (INVOKE__main, NAME__MAIN, SYMBOL__MAIN):
Remove.
* config/mips/vxworks.h: Ditto.
* config/mips/t-elf: Support crti and crtn.

Co-Authored-By: Richard Henderson <rth@redhat.com>
From-SVN: r45243

gcc/ChangeLog
gcc/c-pragma.h
gcc/config/mips/crti.asm [new file with mode: 0644]
gcc/config/mips/crtn.asm [new file with mode: 0644]
gcc/config/mips/elf.h
gcc/config/mips/elf64.h
gcc/config/mips/rtems64.h
gcc/config/mips/t-elf
gcc/config/mips/vxworks.h
gcc/output.h
gcc/varasm.c

index a01c992d2af12442c826e4559916f13b935df334..87a5aae7ccbb57440487365c8990a88f22e076eb 100644 (file)
@@ -1,3 +1,24 @@
+2001-08-28  Eric Christopher <echristo@redhat.com>
+           Richard Henderson <rth@redhat.com>
+
+       * c-pragma.h (add_weak): Move prototype from here...
+       * output.h (add_weak): ... to here.
+       * varasm.c (add_weak): Fix typo.
+       * config/mips/crti.asm: New file.
+       * config/mips/crtn.asm: Ditto.
+       * config/mips/elf.h (SBSS_SECTION_ASM_OP) Add #undef.
+       (CTOR_LISTS_DEFINED_EXTERNALLY): Remove.
+       (INVOKE__main): Ditto.
+       (INIT_SECTION_ASM_OP): New.
+       (FINI_SECTION_ASM_OP): Ditto.
+       (STARTFILE_SPEC): Add crti.
+       (ENDFILE_SPEC): Add crtn.
+       * config/mips/elf64.h: Same.
+       * config/mips/rtems64.h (INVOKE__main, NAME__MAIN, SYMBOL__MAIN):
+       Remove.
+       * config/mips/vxworks.h: Ditto.
+       * config/mips/t-elf: Support crti and crtn.
+
 2001-08-28  Alexandre Oliva  <aoliva@redhat.com>
 
        * jump.c (mark_jump_label): Fix typo: REG_LABEL is EXPR_LIST, not
@@ -47,7 +68,7 @@
        bordered, bunordered, buneq, bunge, bungt, bunle, bunlt, bltgt,
        bordered_rev, bunordered_rev, buneq_rev, bunge_rev, bungt_rev,
        bunle_rev, bunlt_rev, bltgt_rev): New patterns.
-       
+
 2001-08-27  Roman Zippel  <zippel@linux-m68k.org>
 
        * config/m68k/m68k.md (subreghi1ashrdi_const32, bsetmemqi,
        PRESENCE_SET, ABSENCE_SET, DEFINE_BYPASS, DEFINE_AUTOMATON,
        AUTOMATA_OPTION, DEFINE_RESERVATION, DEFINE_INSN_RESERVATION): New
        RTL constructions.
-       
+
        * genattr.c (main): New variable num_insn_reservations.  Increase
        it if there is DEFINE_INSN_RESERVATION.  Output automaton based
        pipeline hazard recognizer interface.
 
        * genattrtab.h: New file.
-       
+
        * genattrtab.c: Include genattrtab.h.
        (attr_printf, check_attr_test, make_internal_attr,
        make_numeric_value): Move protypes into genattrtab.h.  Define them
        * genautomata.c: New file.
 
        * rtl.h (LINK_COST_ZERO, LINK_COST_FREE): Remove them.
-       
+
        * sched-int.h: (curr_state): Add the external definition for
        automaton pipeline interface.
        (haifa_insn_data): Add comments for members blockage and units.
-       
+
        * target-def.h (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE,
        TARGET_SCHED_INIT_DFA_PRE_CYCLE_INSN,
        TARGET_SCHED_DFA_PRE_CYCLE_INSN,
        dfa_pre_cycle_insn, init_dfa_post_cycle_insn, dfa_post_cycle_insn,
        first_cycle_multipass_dfa_lookahead, init_dfa_bubbles,
        dfa_bubble): New members in gcc_target.sched.
-       
+
        * haifa-sched.c (insert_schedule_bubbles_p): New variable.
        (MAX_INSN_QUEUE_INDEX): New macro for automaton interface.
        (insn_queue): Redefine it as pointer to array.
        Initiate insn cost by -1.
        (sched_finish): Free the current automaton state and finalize
        automaton pipeline interface.
-       
+
        * sched-rgn.c: Include target.h.
        (init_ready_list, new_ready, debug_dependencies): Add new code for
        automaton pipeline interface.
        * sched-vis.c: Include target.h.
        (get_visual_tbl_length): Add code for automaton interface.
        (target_units, print_block_visualization):  Add comments.
-       
+
        * Makefile.in (GETRUNTIME, HASHTAB, HOST_GETRUNTIME, HOST_HASHTAB,
        USE_HOST_GETRUNTIME, USE_HOST_HASHTAB, HOST_VARRAY): New variables.
        (sched-rgn.o, sched-vis.o): Add new dependency file target.h.
        (getruntime.o, hashtab.o): New entries for canadian cross.
 
        * doc/md.texi: Description of automaton based model.
-       
+
        * doc/tm.texi (TARGET_SCHED_ISSUE_RATE, TARGET_SCHED_ADJUST_COST):
        Add comments.
        (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE,
        hook descriptions.
        (TRADITIONAL_PIPELINE_INTERFACE, DFA_PIPELINE_INTERFACE,
        MAX_DFA_ISSUE_RATE): New macro descriptions.
-       
+
        * doc/contrib.texi: Add dfa based scheduler contribution.
 
        * doc/gcc.texi: Add more information about genattrtab.
        * c-tree.h: Add prototyp for c_sizeof_nowarn.
 
 2001-08-25 Dan Nicolaescu  <dann@ics.uci.edu>
-  
+
        * ssa-ccp.c (ssa_const_prop): Free ssa_edges.
 
 2001-08-27  Alan Modra  <amodra@bigpond.net.au>
index f60a5662bd4a3d827b4e4856819616d9daaf236b..6f0d6ea15a0bd178806096f6df13f4ab9bf29ad3 100644 (file)
@@ -41,11 +41,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 #define HANDLE_PRAGMA_PACK 1
 #endif /* HANDLE_PRAGMA_PACK_PUSH_POP */
 
-
-#ifdef HANDLE_PRAGMA_WEAK
-extern int add_weak PARAMS ((const char *, const char *));
-#endif /* HANDLE_PRAGMA_WEAK */
-
 extern void init_pragma PARAMS ((void));
 
 /* Duplicate prototypes for the register_pragma stuff and the typedef for
diff --git a/gcc/config/mips/crti.asm b/gcc/config/mips/crti.asm
new file mode 100644 (file)
index 0000000..0b08529
--- /dev/null
@@ -0,0 +1,26 @@
+/* 4 slots for argument spill area.  1 for cpreturn, 1 for stack.
+   Return spill offset of 40 and 20.  */
+
+       .section .init,"ax",@progbits
+       .globl  _init
+       .type   _init,@function
+_init:
+#ifdef __mips64
+       dsubu   $sp,$sp,48
+       sd      $31,40($sp)
+#else
+       subu    $sp,$sp,32
+       sw      $31,20($sp)
+#endif
+
+       .section .fini,"ax",@progbits
+       .globl  _fini
+       .type   _fini,@function
+_fini:
+#ifdef __mips64
+       dsubu   $sp,$sp,48
+       sd      $31,40($sp)
+#else
+       subu    $sp,$sp,32
+       sw      $31,20($sp)
+#endif
diff --git a/gcc/config/mips/crtn.asm b/gcc/config/mips/crtn.asm
new file mode 100644 (file)
index 0000000..be38a86
--- /dev/null
@@ -0,0 +1,22 @@
+/* 4 slots for argument spill area.  1 for cpreturn, 1 for stack.
+   Return spill offset of 40 and 20.  */
+
+       .section .init,"ax",@progbits
+#ifdef __mips64
+       ld      $31,40($sp)
+       daddu   $sp,$sp,48
+#else
+       lw      $31,20($sp)
+       addu    $sp,$sp,32
+#endif
+       j       $31
+
+       .section .fini,"ax",@progbits
+#ifdef __mips64
+       ld      $31,40($sp)
+       daddu   $sp,$sp,48
+#else
+       lw      $31,20($sp)
+       addu    $sp,$sp,32
+#endif
+       j       $31
index 4b2e605d8edbe560a1803f8b06106b991022d520..c7e68f1687f3e807f447c880e79beb45e6e158d2 100644 (file)
@@ -99,10 +99,12 @@ do {                                                \
    uninitialized global data will be output in the data section if
    `-fno-common' is passed, otherwise `ASM_OUTPUT_COMMON' will be
    used.  */
+
 #ifndef BSS_SECTION_ASM_OP
 #define BSS_SECTION_ASM_OP     "\t.section\t.bss"
 #endif
 
+#undef  SBSS_SECTION_ASM_OP
 #define SBSS_SECTION_ASM_OP    "\t.section .sbss"
 
 /* Like `ASM_OUTPUT_BSS' except takes the required alignment as a
@@ -213,17 +215,10 @@ do {                                                                       \
 #define UNIQUE_SECTION(DECL,RELOC) \
   mips_unique_section ((DECL), (RELOC))
 
-/* There's no point providing a default definition of __CTOR_LIST__
-   since people are expected either to use crtbegin.o, or an equivalent,
-   or provide their own definition.  */
-#define CTOR_LISTS_DEFINED_EXTERNALLY
-
 /* A list of other sections which the compiler might be "in" at any
    given time.  */
 #undef EXTRA_SECTIONS
 #define EXTRA_SECTIONS in_sdata, in_sbss, in_rdata
-#define INVOKE__main
 
 #undef EXTRA_SECTION_FUNCTIONS
 #define EXTRA_SECTION_FUNCTIONS                                         \
@@ -241,12 +236,23 @@ void FN ()                                                            \
     }                                                                 \
 }
 
+/* On elf, we *do* have support for the .init and .fini sections, and we
+   can put stuff in there to be executed before and after `main'.  We let
+   crtstuff.c and other files know this by defining the following symbols.
+   The definitions say how to change sections to the .init and .fini
+   sections.  This is the same for all known elf assemblers.  */
+
+#undef  INIT_SECTION_ASM_OP
+#define INIT_SECTION_ASM_OP     "\t.section\t.init"
+#undef  FINI_SECTION_ASM_OP
+#define FINI_SECTION_ASM_OP     "\t.section\t.fini"
+
 /* Don't set the target flags, this is done by the linker script */
 #undef LIB_SPEC
 #define LIB_SPEC ""
 
 #undef  STARTFILE_SPEC
-#define STARTFILE_SPEC "crtbegin%O%s %{!mno-crt0:crt0%O%s}"
+#define STARTFILE_SPEC "crti%O%s crtbegin%O%s %{!mno-crt0:crt0%O%s}"
 
 #undef  ENDFILE_SPEC
-#define ENDFILE_SPEC "crtend%O%s"
+#define ENDFILE_SPEC "crtend%O%s crtn%O%s"
index 570e01f515f157e2a67fe530895274f3e1e2ffdb..894ea51194115fd4d6d04dcfbfe864b70ea5e86a 100644 (file)
@@ -256,17 +256,10 @@ do {                                                                         \
   DECL_SECTION_NAME (DECL) = build_string (len, string);                  \
 } while (0)
 
-/* There's no point providing a default definition of __CTOR_LIST__
-   since people are expected either to use crtbegin.o, or an equivalent,
-   or provide their own definition.  */
-#define CTOR_LISTS_DEFINED_EXTERNALLY
-
 /* A list of other sections which the compiler might be "in" at any
    given time.  */
 #undef EXTRA_SECTIONS
 #define EXTRA_SECTIONS in_sdata, in_rdata
-#define INVOKE__main
 
 #undef EXTRA_SECTION_FUNCTIONS
 #define EXTRA_SECTION_FUNCTIONS                                         \
@@ -282,12 +275,24 @@ void FN ()                                                            \
       in_section = ENUM;                                              \
     }                                                                 \
 }
+
+/* On elf, we *do* have support for the .init and .fini sections, and we
+   can put stuff in there to be executed before and after `main'.  We let
+   crtstuff.c and other files know this by defining the following symbols.
+   The definitions say how to change sections to the .init and .fini
+   sections.  This is the same for all known elf assemblers.  */
+
+#undef  INIT_SECTION_ASM_OP
+#define INIT_SECTION_ASM_OP     "\t.section\t.init"
+#undef  FINI_SECTION_ASM_OP
+#define FINI_SECTION_ASM_OP     "\t.section\t.fini"
+
 /* Don't set the target flags, this is done by the linker script */
 #undef LIB_SPEC
 #define LIB_SPEC ""
 
 #undef  STARTFILE_SPEC
-#define STARTFILE_SPEC "crtbegin%O%s %{!mno-crt0:crt0%O%s}"
+#define STARTFILE_SPEC "crti%O%s crtbegin%O%s %{!mno-crt0:crt0%O%s}"
 
 #undef  ENDFILE_SPEC
-#define ENDFILE_SPEC "crtend%O%s"
+#define ENDFILE_SPEC "crtend%O%s crtn%O%s"
index 7a455e514fa68d52451f46a6a38bc4164d3c67bd..aedb02a87b598d6b57a4aa332e0bee92f8635aac 100644 (file)
@@ -33,10 +33,6 @@ Boston, MA 02111-1307, USA.  */
 #undef EXTRA_SECTIONS
 #define EXTRA_SECTIONS in_sdata, in_rdata
 
-#undef INVOKE__main
-#undef NAME__MAIN
-#undef SYMBOL__MAIN
-
 #undef EXTRA_SECTION_FUNCTIONS
 #define EXTRA_SECTION_FUNCTIONS                                         \
   SECTION_FUNCTION_TEMPLATE(sdata_section, in_sdata, SDATA_SECTION_ASM_OP) \
index 43df4932993c0c7a4dbd0a70faa464c28b49c99a..955edf982bd014f8a9cbf2c1ad87b3e9afea5cca 100644 (file)
@@ -1,9 +1,17 @@
 CONFIG2_H      = $(srcdir)/config/mips/ecoff.h
 
-EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o
 # Don't let CTOR_LIST end up in sdata section.
 CRTSTUFF_T_CFLAGS = -G 0
 
+# Assemble startup files.
+$(T)crti.o: $(srcdir)/config/mips/crti.asm $(GCC_PASSES)
+       $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
+       -c -o crti.o -x assembler-with-cpp $(srcdir)/config/mips/crti.asm
+
+$(T)crtn.o: $(srcdir)/config/mips/crtn.asm $(GCC_PASSES)
+       $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
+       -c -o crtn.o -x assembler-with-cpp $(srcdir)/config/mips/crtn.asm
+
 LIB1ASMSRC = mips/mips16.S
 LIB1ASMFUNCS = _m16addsf3 _m16subsf3 _m16mulsf3 _m16divsf3 \
        _m16eqsf2 _m16nesf2 _m16gtsf2 _m16gesf2 _m16lesf2 _m16ltsf2 \
@@ -48,6 +56,7 @@ fp-bit.c: $(srcdir)/config/fp-bit.c
 MULTILIB_OPTIONS = msoft-float/msingle-float EL/EB mips1/mips3
 MULTILIB_DIRNAMES = soft-float single el eb mips1 mips3
 MULTILIB_MATCHES = msingle-float=m4650
+EXTRA_PARTS = crtbegin.o crtend.o crti.o crtn.o
 
 LIBGCC = stmp-multilib
 INSTALL_LIBGCC = install-multilib
index ec6e13bcebc0f832a7741fd7e156e08578d43b87..9eca3b71c6a1bca0b5c04c905a51cc8a76d03bb9 100644 (file)
@@ -20,10 +20,6 @@ Boston, MA 02111-1307, USA.  */
 #undef EXTRA_SECTIONS
 #define EXTRA_SECTIONS in_sdata, in_rdata, in_sbss
 
-#undef INVOKE__main
-#undef NAME__MAIN
-#undef SYMBOL__MAIN
-
 #undef EXTRA_SECTION_FUNCTIONS
 #define EXTRA_SECTION_FUNCTIONS                                         \
   SECTION_FUNCTION_TEMPLATE(sdata_section, in_sdata, SDATA_SECTION_ASM_OP) \
index 0e05799198ee8e2be37cff8a7829f0ceb5e78a82..370589ad3ac153a2dabbc2d483ba8d8eed1c35ba 100644 (file)
@@ -135,6 +135,10 @@ extern void leaf_renumber_regs_insn PARAMS ((rtx));
 /* Locate the proper template for the given insn-code.  */
 extern const char *get_insn_template PARAMS ((int, rtx));
 
+/* Add function NAME to the weak symbols list.  VALUE is a weak alias
+   associated with NAME.  */
+extern int add_weak PARAMS ((const char *, const char *));
+
 /* Functions in flow.c */
 extern void allocate_for_life_analysis PARAMS ((void));
 extern int regno_uninitialized         PARAMS ((int));
index 7113d8aa8fe9a0220230ad278104e3d5165b939e..a95994ca237dd4a28fcddaaa2fcfc7335ccdebac 100644 (file)
@@ -206,7 +206,7 @@ static enum in_section { no_section, in_text, in_data, in_named
   ((TREE_CODE (DECL) == FUNCTION_DECL || TREE_CODE (DECL) == VAR_DECL) \
    && DECL_SECTION_NAME (DECL) != NULL_TREE)
 #endif
-     
+
 /* Text of section name when in_section == in_named.  */
 static const char *in_named_name;
 
@@ -621,7 +621,7 @@ decode_reg_name (asmspec)
 
       /* Get rid of confusing prefixes.  */
       asmspec = strip_reg_name (asmspec);
-       
+
       /* Allow a decimal number as a "register name".  */
       for (i = strlen (asmspec) - 1; i >= 0; i--)
        if (! (asmspec[i] >= '0' && asmspec[i] <= '9'))
@@ -697,7 +697,7 @@ make_decl_rtl (decl, asmspec)
          && !DECL_REGISTER (decl)))
     abort ();
   /* And that we were not given a type or a label.  */
-  else if (TREE_CODE (decl) == TYPE_DECL 
+  else if (TREE_CODE (decl) == TYPE_DECL
           || TREE_CODE (decl) == LABEL_DECL)
     abort ();
 
@@ -772,7 +772,7 @@ make_decl_rtl (decl, asmspec)
             kludge to avoid setting DECL_RTL to frame_pointer_rtx.  */
 
          SET_DECL_RTL (decl,
-                       gen_rtx_REG (DECL_MODE (decl), 
+                       gen_rtx_REG (DECL_MODE (decl),
                                     FIRST_PSEUDO_REGISTER));
          REGNO (DECL_RTL (decl)) = reg_number;
          REG_USERVAR_P (DECL_RTL (decl)) = 1;
@@ -1082,7 +1082,7 @@ assemble_start_function (decl, fnname)
   if (align_functions_log > align)
     {
 #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN
-      ASM_OUTPUT_MAX_SKIP_ALIGN (asm_out_file, 
+      ASM_OUTPUT_MAX_SKIP_ALIGN (asm_out_file,
                                 align_functions_log, align_functions-1);
 #else
       ASM_OUTPUT_ALIGN (asm_out_file, align_functions_log);
@@ -1271,14 +1271,14 @@ asm_emit_uninitialised (decl, name, size, rounded)
     asm_dest_local
   }
   destination = asm_dest_local;
-  
+
   if (TREE_PUBLIC (decl))
     {
 #if defined ASM_EMIT_BSS
       if (! DECL_COMMON (decl))
        destination = asm_dest_bss;
       else
-#endif      
+#endif
        destination = asm_dest_common;
     }
 
@@ -1401,7 +1401,7 @@ assemble_variable (decl, top_level, at_end, dont_output_data)
 
   /* Make sure ENCODE_SECTION_INFO is invoked before we set ASM_WRITTEN.  */
   decl_rtl = DECL_RTL (decl);
+
   TREE_ASM_WRITTEN (decl) = 1;
 
   /* Do no output if -fsyntax-only.  */
@@ -1498,14 +1498,14 @@ assemble_variable (decl, top_level, at_end, dont_output_data)
       rounded += (BIGGEST_ALIGNMENT / BITS_PER_UNIT) - 1;
       rounded = (rounded / (BIGGEST_ALIGNMENT / BITS_PER_UNIT)
                 * (BIGGEST_ALIGNMENT / BITS_PER_UNIT));
-      
+
 /* Don't continue this line--convex cc version 4.1 would lose.  */
 #if !defined(ASM_OUTPUT_ALIGNED_COMMON) && !defined(ASM_OUTPUT_ALIGNED_DECL_COMMON) && !defined(ASM_OUTPUT_ALIGNED_BSS)
       if ((unsigned HOST_WIDE_INT) DECL_ALIGN (decl) / BITS_PER_UNIT > rounded)
-         warning_with_decl 
+         warning_with_decl
            (decl, "requested alignment for %s is greater than implemented alignment of %d.",rounded);
 #endif
-       
+
       asm_emit_uninitialised (decl, name, size, rounded);
 
       return;
@@ -1519,7 +1519,7 @@ assemble_variable (decl, top_level, at_end, dont_output_data)
   if (TREE_PUBLIC (decl) && DECL_NAME (decl))
     {
 #ifdef ASM_WEAKEN_LABEL
-      if (DECL_WEAK (decl)) 
+      if (DECL_WEAK (decl))
        {
          ASM_WEAKEN_LABEL (asm_out_file, name);
           /* Remove this variable from the pending weak list so that
@@ -1690,7 +1690,7 @@ assemble_name (file, name)
   tree id;
 
   STRIP_NAME_ENCODING (real_name, name);
-  if (flag_prefix_function_name 
+  if (flag_prefix_function_name
       && ! memcmp (real_name, CHKR_PREFIX, CHKR_PREFIX_SIZE))
     real_name = real_name + CHKR_PREFIX_SIZE;
 
@@ -1916,7 +1916,7 @@ assemble_integer (x, size, align, force)
     {
       enum machine_mode omode, imode;
       unsigned int i;
+
       omode = mode_for_size (BITS_PER_UNIT, MODE_INT, 0);
       imode = mode_for_size (size * BITS_PER_UNIT, MODE_INT, 0);
 
@@ -2333,7 +2333,7 @@ struct constant_descriptor
   const char *label;
   rtx rtl;
   /* Make sure the data is reasonably aligned.  */
-  union 
+  union
   {
     unsigned char contents[1];
 #ifdef HAVE_LONG_DOUBLE
@@ -2361,7 +2361,7 @@ static htab_t const_str_htab;
 
 /* Mark a const_hash_table descriptor for GC.  */
 
-static void 
+static void
 mark_const_hash_entry (ptr)
      void *ptr;
 {
@@ -2376,7 +2376,7 @@ mark_const_hash_entry (ptr)
 
 /* Mark the hash-table element X (which is really a pointer to an
    struct deferred_string *).  */
-   
+
 static int
 mark_const_str_htab_1 (x, data)
      void **x;
@@ -2388,7 +2388,7 @@ mark_const_str_htab_1 (x, data)
 
 /* Mark a const_str_htab for GC.  */
 
-static void 
+static void
 mark_const_str_htab (htab)
      void *htab;
 {
@@ -2529,7 +2529,7 @@ const_hash (exp)
     case CONVERT_EXPR:
     case NON_LVALUE_EXPR:
       return const_hash (TREE_OPERAND (exp, 0)) * 7 + 2;
-      
+
     default:
       /* A language specific constant. Just hash the code.  */
       return (int) code % MAX_HASH_TABLE;
@@ -2655,7 +2655,7 @@ compare_constant_1 (exp, p)
          p += sizeof length;
 
          /* For record constructors, insist that the types match.
-            For arrays, just verify both constructors are for arrays. 
+            For arrays, just verify both constructors are for arrays.
             Then insist that either both or none have any TREE_PURPOSE
             values.  */
          if (TREE_CODE (TREE_TYPE (exp)) == RECORD_TYPE)
@@ -2898,7 +2898,7 @@ record_constant_1 (exp)
          obstack_grow (&permanent_obstack, (char *) &type, sizeof type);
          if (TREE_CODE (TREE_TYPE (exp)) == ARRAY_TYPE)
            obstack_grow (&permanent_obstack, &mode, sizeof mode);
-                         
+
          obstack_grow (&permanent_obstack, (char *) &have_purpose,
                        sizeof have_purpose);
 
@@ -3166,18 +3166,18 @@ output_constant_def (exp, defer)
      the label number already assigned.  */
 
   hash = const_hash (exp) % MAX_HASH_TABLE;
-      
+
   for (desc = const_hash_table[hash]; desc; desc = desc->next)
     if (compare_constant (exp, desc))
       break;
-      
+
   if (desc == 0)
     {
       /* No constant equal to EXP is known to have been output.
         Make a constant descriptor to enter EXP in the hash table.
         Assign the label number and record it in the descriptor for
         future calls to this function to find.  */
-         
+
       /* Create a string containing the label name, in LABEL.  */
       labelno = const_labelno++;
       ASM_GENERATE_INTERNAL_LABEL (label, "LC", labelno);
@@ -3186,7 +3186,7 @@ output_constant_def (exp, defer)
       desc->next = const_hash_table[hash];
       desc->label = ggc_strdup (label);
       const_hash_table[hash] = desc;
-  
+
       /* We have a symbol name; construct the SYMBOL_REF and the MEM.  */
       desc->rtl
        = gen_rtx_MEM (TYPE_MODE (TREE_TYPE (exp)),
@@ -3390,7 +3390,7 @@ init_varasm_status (f)
 
 /* Mark PC for GC.  */
 
-static void 
+static void
 mark_pool_constant (pc)
      struct pool_constant *pc;
 {
@@ -3526,7 +3526,7 @@ decode_rtx_const (mode, x, value)
       case LABEL_REF:
        /* For a LABEL_REF, compare labels.  */
        value->un.addr.base = XEXP (value->un.addr.base, 0);
-       
+
       default:
        break;
       }
@@ -3608,7 +3608,7 @@ record_constant_rtx (mode, x)
 {
   struct constant_descriptor *ptr;
 
-  ptr = ((struct constant_descriptor *) 
+  ptr = ((struct constant_descriptor *)
         xcalloc (1, (offsetof (struct constant_descriptor, u)
                      + sizeof (struct rtx_const))));
   decode_rtx_const (mode, x, (struct rtx_const *) ptr->u.contents);
@@ -3870,7 +3870,7 @@ output_constant_pool (fnname, fndecl)
              x = const0_rtx;
            }
          break;
-         
+
        default:
          break;
        }
@@ -4162,7 +4162,7 @@ initializer_constant_valid_p (value, endtype)
        return
          initializer_constant_valid_p (TREE_VALUE (CONSTRUCTOR_ELTS (value)),
                                        endtype);
-       
+
       return TREE_STATIC (value) ? null_pointer_node : 0;
 
     case INTEGER_CST:
@@ -4345,7 +4345,7 @@ output_constant (exp, size, align)
      That way we get the constant (we hope) inside it.  Also, strip off any
      NOP_EXPR that converts between two record, union, array, or set types
      or a CONVERT_EXPR that converts to a union TYPE.  */
-  while ((TREE_CODE (exp) == NOP_EXPR 
+  while ((TREE_CODE (exp) == NOP_EXPR
          && (TREE_TYPE (exp) == TREE_TYPE (TREE_OPERAND (exp, 0))
              || AGGREGATE_TYPE_P (TREE_TYPE (exp))))
         || (TREE_CODE (exp) == CONVERT_EXPR
@@ -4482,7 +4482,7 @@ array_size_for_constructor (val)
     return 0;
 
   /* Compute the total number of array elements.  */
-  i = size_binop (MINUS_EXPR, convert (sizetype, max_index), 
+  i = size_binop (MINUS_EXPR, convert (sizetype, max_index),
                  convert (sizetype,
                           TYPE_MIN_VALUE (TYPE_DOMAIN (TREE_TYPE (val)))));
   i = size_binop (PLUS_EXPR, i, convert (sizetype, integer_one_node));
@@ -4607,7 +4607,7 @@ output_constructor (exp, size, align)
 
          /* Find the alignment of this element.  */
          align2 = min_align (align, BITS_PER_UNIT * pos);
-         
+
          /* Determine size this element should occupy.  */
          if (field)
            {
@@ -4799,9 +4799,9 @@ output_constructor (exp, size, align)
     assemble_zeros (size - total_bytes);
 }
 
-/* This structure contains any weak symbol declarations waiting to be
-   emitted.  */
 
+/* This structure contains any weak symbol declarations waiting
+   to be emitted.  */
 struct weak_syms
 {
   struct weak_syms * next;
@@ -4812,8 +4812,8 @@ struct weak_syms
 static struct weak_syms * weak_decls;
 
 /* Add function NAME to the weak symbols list.  VALUE is a weak alias
-   associatd with NAME.  */
-   
+   associated with NAME.  */
+
 int
 add_weak (name, value)
      const char *name;
@@ -4878,7 +4878,6 @@ weak_finish ()
 /* Remove NAME from the pending list of weak symbols.  This prevents
    the compiler from emitting multiple .weak directives which confuses
    some assemblers.  */
-
 static void
 remove_from_pending_weak_list (name)
      const char *name;
@@ -4890,12 +4889,12 @@ remove_from_pending_weak_list (name)
     {
       t = *p;
       if (strcmp (name, t->name) == 0)
-       {
-         *p = t->next;
-         free (t);
-       }
+        {
+          *p = t->next;
+          free (t);
+        }
       else
-       p = &(t->next);
+        p = &(t->next);
     }
 }