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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263692
138bc75d-0d04-0410-961f-
82ee72b054a4
+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
#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
/*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
#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
#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. */