mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-19 06:20:27 +08:00
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
This commit is contained in:
parent
ff641ae112
commit
7f37b31d73
@ -1,3 +1,13 @@
|
||||
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>
|
||||
|
||||
PR c++/25759
|
||||
|
@ -145,11 +145,14 @@ vxworks_override_options (void)
|
||||
targetm.emutls.debug_form_tls_address = true;
|
||||
}
|
||||
|
||||
/* We can use .ctors/.dtors sections only in RTP mode. But, if the
|
||||
compiler was built with --enable-initfini-array, assume the
|
||||
toolchain implements the proper glue to make .init_array and
|
||||
.fini_array work. */
|
||||
targetm.have_ctors_dtors = TARGET_VXWORKS_RTP || HAVE_INITFINI_ARRAY_SUPPORT;
|
||||
/* Arrange to use .ctors/.dtors sections if the target VxWorks configuration
|
||||
and mode supports it, or the init/fini_array sections if we were
|
||||
configured with --enable-initfini-array explicitly. In the latter case,
|
||||
the toolchain user is expected to provide whatever linker level glue is
|
||||
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. */
|
||||
if (flag_pic && !TARGET_VXWORKS_RTP)
|
||||
|
@ -142,13 +142,18 @@ along with GCC; see the file COPYING3. If not see
|
||||
#define VXWORKS_OVERRIDE_OPTIONS vxworks_override_options ()
|
||||
extern void vxworks_override_options (void);
|
||||
|
||||
/* RTPs support prioritized constructors and destructors: the
|
||||
implementation relies on numbered .ctors* sections. If the compiler
|
||||
was built with --enable-initfini-array, we assume the user uses a
|
||||
linker script that sorts and merges the .init_array.* sections
|
||||
appropriately. */
|
||||
/* Whether the VxWorks variant and mode supports constructors/destructors
|
||||
placed in .ctors/.dtors section or if we should generate proxy functions
|
||||
for them, with special names which munch knows how to collect. On most
|
||||
versions of VxWorks, only the RTP loader supports .ctors/.dtors sections,
|
||||
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 \
|
||||
(TARGET_VXWORKS_RTP || HAVE_INITFINI_ARRAY_SUPPORT)
|
||||
(TARGET_VXWORKS_HAVE_CTORS_DTORS || HAVE_INITFINI_ARRAY_SUPPORT)
|
||||
|
||||
#if !HAVE_INITFINI_ARRAY_SUPPORT
|
||||
/* VxWorks requires special handling of constructors and destructors.
|
||||
|
Loading…
x
Reference in New Issue
Block a user