Improve comments and INITFINI macro use in vxcrtsutff.c

This change augments the comment attached to the use of auto-host.h
in vxcrtstuff.c to better describe the reason for including it and
for the associated series of #undef directives.

It also augments the comment on dso_handle and removes a redundant
guard on HAVE_INITFINI_ARRAY_SUPPORT for the shared version of the
objects, nested within a section guarded on USE_INITFINI_ARRAY.

2022-09-29  Olivier Hainque  <hainque@adacore.com>

libgcc/
	* config/vxcrtstuff.c: Improve the comment attached to the use
	of auto-host.h and of __dso_handle.  Remove redundant guard on
	HAVE_INITFINI_ARRAY_SUPPORT within a USE_INITFINI_ARRAY section.
This commit is contained in:
Olivier Hainque 2022-03-07 11:50:27 +00:00
parent 73d9b0e594
commit 61762797ba

View file

@ -26,15 +26,21 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#define IN_LIBGCC2
/* FIXME: Including auto-host is incorrect, but until we have
identified the set of defines that need to go into auto-target.h,
this will have to do. */
/* FIXME: Including auto-host is incorrect here (target library implementation
file), but we still need it for DEFAULT_USE_CXA_ATEXIT and most importantly
USE_INITFINI_ARRAY, guarded by HAVE_INITFINI_ARRAY_SUPPORT, not yet handled
by auto-target.h. Proceed as crtstuff.c, with the inclusion followed by a
few #undefs preventing build failures in configurations setup for Windows
hosts, including canadian builds. #define USED_FOR_TARGET would circumvent
this but would unfortunately also inhibit some of the definitions we
need. */
#include "auto-host.h"
#undef caddr_t
#undef pid_t
#undef rlim_t
#undef ssize_t
#undef vfork
#include "tconfig.h"
#include "tsystem.h"
#include "coretypes.h"
@ -58,17 +64,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#ifdef CRT_BEGIN
/* Provide __dso_handle in RTP objects, which might be included in contexts
involving shared objects. This mimics the crtstuff.c behavior: dso_handle
should be NULL for the main program (in vx_crtbegin.o) and a unique value
for the shared libraries (in vx_crtbeginS.o). */
#if DEFAULT_USE_CXA_ATEXIT && defined(__RTP__)
/* This mimics the crtstuff.c behavior. dso_handle should be NULL for the
main program (in vx_crtbegin.o) and a unique value for the shared libraries
(in vx_crtbeginS.o). */
extern void *__dso_handle __attribute__ ((__visibility__ ("hidden")));
#ifdef CRTSTUFFS_O
void *__dso_handle = &__dso_handle;
#else
void *__dso_handle = 0;
#endif
#endif /* DEFAULT_USE_CXA_ATEXIT */
#endif
/* Determine what names to use for the constructor/destructor functions. */
@ -103,7 +111,7 @@ void *__dso_handle = 0;
where we don't want to drag libc_internal contents blindly and which
provides functions with a slightly different name anyway. */
#if HAVE_INITFINI_ARRAY_SUPPORT && defined(CRTSTUFFS_O)
#if defined(CRTSTUFFS_O)
/* Run through the .init_array, .fini_array sections. The linker script
*must* provide __init_array_start, __init_array_end, __fini_array_start,