[RFC PATCH 6/6] vxworks: don't define vxworks_asm_out_constructor when using .init_array
Rasmus Villemoes
rasmus.villemoes@prevas.dk
Mon Jun 4 14:46:00 GMT 2018
The definitions of TARGET_ASM_CONSTRUTOR in vxworks.h get undone in
initfini-array.h anyway when HAVE_INITFINI_ARRAY_SUPPORT, so we might as
well not define the functions.
2018-06-01 Rasmus Villemoes <rasmus.villemoes@prevas.dk>
gcc/
* config/vxworks.h: Guard vxworks_asm_out_constructor and
vxworks_asm_out_destructor by !HAVE_INITFINI_ARRAY_SUPPORT
* config/vxworks.c: Likewise.
---
gcc/config/vxworks.c | 2 ++
gcc/config/vxworks.h | 2 ++
2 files changed, 4 insertions(+)
diff --git a/gcc/config/vxworks.c b/gcc/config/vxworks.c
index 953f74f71af..3b6b2343859 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 58b89fbd5d2..cbb7d065ef0 100644
--- a/gcc/config/vxworks.h
+++ b/gcc/config/vxworks.h
@@ -149,6 +149,7 @@ extern void vxworks_override_options (void);
appropriately. */
#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
@@ -157,6 +158,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. */
--
2.15.1
More information about the Gcc-patches
mailing list