aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRasmus Villemoes <rv@rasmusvillemoes.dk>2018-08-21 10:52:40 +0200
committerRasmus Villemoes <villemoes@gcc.gnu.org>2018-08-21 08:52:40 +0000
commiteae016fc707fac3bf11d671f7fd40b213ee5141b (patch)
tree6b5dddb202a9fde183c8877500987073ef90b19a /gcc
parentace193dc4773159a2c545ab6ca80842c56019e3a (diff)
downloadgcc-eae016fc707fac3bf11d671f7fd40b213ee5141b.zip
gcc-eae016fc707fac3bf11d671f7fd40b213ee5141b.tar.gz
gcc-eae016fc707fac3bf11d671f7fd40b213ee5141b.tar.bz2
vxworks: don't define vxworks_asm_out_constructor when using .init_array
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/vxworks.c2
-rw-r--r--gcc/config/vxworks.h2
3 files changed, 10 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 609965b..041b4f8 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
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
if HAVE_INITFINI_ARRAY_SUPPORT.
* config/vxworks.h: Set SUPPORTS_INIT_PRIORITY
diff --git a/gcc/config/vxworks.c b/gcc/config/vxworks.c
index 953f74f71..3b6b234 100644
--- a/gcc/config/vxworks.c
+++ b/gcc/config/vxworks.c
@@ -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
diff --git a/gcc/config/vxworks.h b/gcc/config/vxworks.h
index 4c2d983..8677386 100644
--- a/gcc/config/vxworks.h
+++ b/gcc/config/vxworks.h
@@ -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. */