vxworks: don't define vxworks_asm_out_constructor when using .init_array
authorRasmus Villemoes <rv@rasmusvillemoes.dk>
Tue, 21 Aug 2018 08:52:40 +0000 (10:52 +0200)
committerRasmus Villemoes <villemoes@gcc.gnu.org>
Tue, 21 Aug 2018 08:52:40 +0000 (08:52 +0000)
When the compiler is configured with --enable-initfini-array,
config/initfini-array.h gets included after config/vxworks.h by tm.h, so
the definitions of TARGET_ASM_CONSTRUTOR/TARGET_ASM_DESTRUCTOR in
vxworks.h get undone in initfini-array.h. Hence, we might as well not
define the vxworks_asm_out_* functions.

From-SVN: r263692

gcc/ChangeLog
gcc/config/vxworks.c
gcc/config/vxworks.h

index 609965bab9a2f57fea95646ddffae4d81f88bfc9..041b4f85a26646f975f315395b53598bb2f75c41 100644 (file)
@@ -1,3 +1,9 @@
+2018-08-21  Rasmus Villemoes  <rv@rasmusvillemoes.dk>
+
+       * config/vxworks.h: Guard vxworks_asm_out_constructor and
+       vxworks_asm_out_destructor by !HAVE_INITFINI_ARRAY_SUPPORT
+       * config/vxworks.c: Likewise.
+
 2018-08-21  Rasmus Villemoes  <rv@rasmusvillemoes.dk>
 
        * config/vxworks.c: Set targetm.have_ctors_dtors
index 953f74f71af8618ef38726a61273abd2ddc338ea..3b6b2343859d1276f908c94b6d2159bdae4164ea 100644 (file)
@@ -28,6 +28,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "output.h"
 #include "fold-const.h"
 
+#if !HAVE_INITFINI_ARRAY_SUPPORT
 /* Like default_named_section_asm_out_constructor, except that even
    constructors with DEFAULT_INIT_PRIORITY must go in a numbered
    section on VxWorks.  The VxWorks runtime uses a clever trick to get
@@ -56,6 +57,7 @@ vxworks_asm_out_destructor (rtx symbol, int priority)
                                    /*constructor_p=*/false);
   assemble_addr_to_section (symbol, sec);
 }
+#endif
 
 /* Return the list of FIELD_DECLs that make up an emulated TLS
    variable's control object.  TYPE is the structure these are fields
index 4c2d98381f66dee8144aed0d8603c56d848878a6..86773868ec23f5b76d5b21d003ccbeda4575a51b 100644 (file)
@@ -150,6 +150,7 @@ extern void vxworks_override_options (void);
 #define SUPPORTS_INIT_PRIORITY \
   (TARGET_VXWORKS_RTP || HAVE_INITFINI_ARRAY_SUPPORT)
 
+#if !HAVE_INITFINI_ARRAY_SUPPORT
 /* VxWorks requires special handling of constructors and destructors.
    All VxWorks configurations must use these functions.  */
 #undef TARGET_ASM_CONSTRUCTOR
@@ -158,6 +159,7 @@ extern void vxworks_override_options (void);
 #define TARGET_ASM_DESTRUCTOR vxworks_asm_out_destructor
 extern void vxworks_asm_out_constructor (rtx symbol, int priority);
 extern void vxworks_asm_out_destructor (rtx symbol, int priority);
+#endif
 
 /* Override the vxworks-dummy.h definitions.  TARGET_VXWORKS_RTP
    is defined by vxworks.opt.  */