libgcc: Declare __dso_handle only if DEFAULT_USE_CXA_ATEXIT is true

2019-12-11  Jozef Lawrynowicz  <jozef.l@mittosystems.com>

	* crtstuff.c: Declare __dso_handle only if DEFAULT_USE_CXA_ATEXIT is
	true.

From-SVN: r279243
This commit is contained in:
Jozef Lawrynowicz 2019-12-11 18:59:38 +00:00 committed by Jozef Lawrynowicz
parent 0230c89710
commit 34a53788fe
2 changed files with 10 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2019-12-11 Jozef Lawrynowicz <jozef.l@mittosystems.com>
* crtstuff.c: Declare __dso_handle only if DEFAULT_USE_CXA_ATEXIT is
true.
2019-12-09 Jozef Lawrynowicz <jozef.l@mittosystems.com> 2019-12-09 Jozef Lawrynowicz <jozef.l@mittosystems.com>
* crtstuff.c (__do_global_dtors_aux): Check if USE_EH_FRAME_REGISTRY is * crtstuff.c (__do_global_dtors_aux): Check if USE_EH_FRAME_REGISTRY is

View File

@ -325,11 +325,14 @@ register_tm_clones (void)
#ifdef OBJECT_FORMAT_ELF #ifdef OBJECT_FORMAT_ELF
#if DEFAULT_USE_CXA_ATEXIT
/* Declare the __dso_handle variable. It should have a unique value /* Declare the __dso_handle variable. It should have a unique value
in every shared-object; in a main program its value is zero. The in every shared-object; in a main program its value is zero. The
object should in any case be protected. This means the instance object should in any case be protected. This means the instance
in one DSO or the main program is not used in another object. The in one DSO or the main program is not used in another object. The
dynamic linker takes care of this. */ dynamic linker takes care of this.
If __cxa_atexit is not being used, __dso_handle will not be used and
doesn't need to be defined. */
#ifdef TARGET_LIBGCC_SDATA_SECTION #ifdef TARGET_LIBGCC_SDATA_SECTION
extern void *__dso_handle __attribute__ ((__section__ (TARGET_LIBGCC_SDATA_SECTION))); extern void *__dso_handle __attribute__ ((__section__ (TARGET_LIBGCC_SDATA_SECTION)));
@ -342,6 +345,7 @@ void *__dso_handle = &__dso_handle;
#else #else
void *__dso_handle = 0; void *__dso_handle = 0;
#endif #endif
#endif /* DEFAULT_USE_CXA_ATEXIT */
/* The __cxa_finalize function may not be available so we use only a /* The __cxa_finalize function may not be available so we use only a
weak declaration. */ weak declaration. */