Commit 7f37b31d by Jerome Lambourg Committed by Olivier Hainque

Allow target overrides of ctors/dtors support advertisement on VxWorks

2018-11-16  Jerome Lambourg  <lambourg@adacore.com>

        * config/vxworks.h (TARGET_VXWORKS_HAVE_CTORS_DTORS): New macro.
        Default to TARGET_VXWORKS_RTP.
        (SUPPORTS_INIT_PRIORITY): Use TARGET_VXWORKS_HAVE_CTORS_DTORS instead
        of TARGET_VXWORKS_RTP.
        * config/vxworksae.h: Also define TARGET_VXWORKS_HAVE_CTORS_DTORS.
        * config/vxworks.c: Use TARGET_VXWORKS_HAVE_CTORS_DTORS instead
        of TARGET_VXWORKS_RTP to set targetm.have_ctors_dtors.

From-SVN: r266201
parent ff641ae1
2018-11-16 Jerome Lambourg <lambourg@adacore.com>
* config/vxworks.h (TARGET_VXWORKS_HAVE_CTORS_DTORS): New macro.
Default to TARGET_VXWORKS_RTP.
(SUPPORTS_INIT_PRIORITY): Use TARGET_VXWORKS_HAVE_CTORS_DTORS instead
of TARGET_VXWORKS_RTP.
* config/vxworksae.h: Also define TARGET_VXWORKS_HAVE_CTORS_DTORS.
* config/vxworks.c: Use TARGET_VXWORKS_HAVE_CTORS_DTORS instead
of TARGET_VXWORKS_RTP to set targetm.have_ctors_dtors.
2018-11-15 Sandra Loosemore <sandra@codesourcery.com> 2018-11-15 Sandra Loosemore <sandra@codesourcery.com>
PR c++/25759 PR c++/25759
...@@ -145,11 +145,14 @@ vxworks_override_options (void) ...@@ -145,11 +145,14 @@ vxworks_override_options (void)
targetm.emutls.debug_form_tls_address = true; targetm.emutls.debug_form_tls_address = true;
} }
/* We can use .ctors/.dtors sections only in RTP mode. But, if the /* Arrange to use .ctors/.dtors sections if the target VxWorks configuration
compiler was built with --enable-initfini-array, assume the and mode supports it, or the init/fini_array sections if we were
toolchain implements the proper glue to make .init_array and configured with --enable-initfini-array explicitly. In the latter case,
.fini_array work. */ the toolchain user is expected to provide whatever linker level glue is
targetm.have_ctors_dtors = TARGET_VXWORKS_RTP || HAVE_INITFINI_ARRAY_SUPPORT; required to get things to operate properly. */
targetm.have_ctors_dtors =
TARGET_VXWORKS_HAVE_CTORS_DTORS || HAVE_INITFINI_ARRAY_SUPPORT;
/* PIC is only supported for RTPs. */ /* PIC is only supported for RTPs. */
if (flag_pic && !TARGET_VXWORKS_RTP) if (flag_pic && !TARGET_VXWORKS_RTP)
......
...@@ -142,13 +142,18 @@ along with GCC; see the file COPYING3. If not see ...@@ -142,13 +142,18 @@ along with GCC; see the file COPYING3. If not see
#define VXWORKS_OVERRIDE_OPTIONS vxworks_override_options () #define VXWORKS_OVERRIDE_OPTIONS vxworks_override_options ()
extern void vxworks_override_options (void); extern void vxworks_override_options (void);
/* RTPs support prioritized constructors and destructors: the /* Whether the VxWorks variant and mode supports constructors/destructors
implementation relies on numbered .ctors* sections. If the compiler placed in .ctors/.dtors section or if we should generate proxy functions
was built with --enable-initfini-array, we assume the user uses a for them, with special names which munch knows how to collect. On most
linker script that sorts and merges the .init_array.* sections versions of VxWorks, only the RTP loader supports .ctors/.dtors sections,
appropriately. */ not the kernel module loader. */
#define TARGET_VXWORKS_HAVE_CTORS_DTORS TARGET_VXWORKS_RTP
/* Support for prioritized ctors/dtors is in sync with the support for sections
on the VxWorks front, and is assumed to be provided by whatever linker level
glue is required if we were configured with --enable-initfini-array. */
#define SUPPORTS_INIT_PRIORITY \ #define SUPPORTS_INIT_PRIORITY \
(TARGET_VXWORKS_RTP || HAVE_INITFINI_ARRAY_SUPPORT) (TARGET_VXWORKS_HAVE_CTORS_DTORS || HAVE_INITFINI_ARRAY_SUPPORT)
#if !HAVE_INITFINI_ARRAY_SUPPORT #if !HAVE_INITFINI_ARRAY_SUPPORT
/* VxWorks requires special handling of constructors and destructors. /* VxWorks requires special handling of constructors and destructors.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment