ada: Fix build for RTEMS

Commit 621cccba3f broke the Ada build for all
RTEMS targets except aarch64.

gcc/ada/

	* tracebak.c: Add support for ARM RTEMS. Add support for RTEMS to PPC
	ELF.  Add support for RTEMS to SPARC.  Merge aarch64 support of Linux
	and RTEMS.
This commit is contained in:
Sebastian Huber 2022-04-27 13:54:22 +02:00
parent 1b21d79e4e
commit e07ea03fce

View File

@ -316,6 +316,13 @@ __gnat_backtrace (void **array,
#define PC_ADJUST -2 #define PC_ADJUST -2
#define USING_ARM_UNWINDING 1 #define USING_ARM_UNWINDING 1
/*---------------------- ARM RTEMS ------------------------------------ -*/
#elif (defined (__arm__) && defined (__rtems__))
#define USE_GCC_UNWINDER
#define PC_ADJUST -2
#define USING_ARM_UNWINDING 1
/*---------------------- PPC AIX/PPC Lynx 178/Older Darwin --------------*/ /*---------------------- PPC AIX/PPC Lynx 178/Older Darwin --------------*/
#elif ((defined (_POWER) && defined (_AIX)) || \ #elif ((defined (_POWER) && defined (_AIX)) || \
(defined (__powerpc__) && defined (__Lynx__) && !defined(__ELF__)) || \ (defined (__powerpc__) && defined (__Lynx__) && !defined(__ELF__)) || \
@ -370,11 +377,12 @@ extern void __runnit(); /* thread entry point. */
#define BASE_SKIP 1 #define BASE_SKIP 1
/*----------- PPC ELF (GNU/Linux & VxWorks & Lynx178e) -------------------*/ /*----------- PPC ELF (GNU/Linux & VxWorks & Lynx178e & RTEMS ) ----------*/
#elif (defined (_ARCH_PPC) && defined (__vxworks)) || \ #elif (defined (_ARCH_PPC) && defined (__vxworks)) || \
(defined (__powerpc__) && defined (__Lynx__) && defined(__ELF__)) || \ (defined (__powerpc__) && defined (__Lynx__) && defined(__ELF__)) || \
(defined (__linux__) && defined (__powerpc__)) (defined (__linux__) && defined (__powerpc__)) || \
(defined (__powerpc__) && defined (__rtems__))
#if defined (_ARCH_PPC64) && !defined (__USING_SJLJ_EXCEPTIONS__) #if defined (_ARCH_PPC64) && !defined (__USING_SJLJ_EXCEPTIONS__)
#define USE_GCC_UNWINDER #define USE_GCC_UNWINDER
@ -404,9 +412,9 @@ struct layout
#define BASE_SKIP 1 #define BASE_SKIP 1
/*-------------------------- SPARC Solaris -----------------------------*/ /*-------------------------- SPARC Solaris or RTEMS --------------------*/
#elif defined (__sun__) && defined (__sparc__) #elif (defined (__sun__) || defined (__rtems__)) && defined (__sparc__)
#define USE_GENERIC_UNWINDER #define USE_GENERIC_UNWINDER
@ -551,21 +559,9 @@ is_return_from(void *symbol_addr, void *ret_addr)
#error Unhandled QNX architecture. #error Unhandled QNX architecture.
#endif #endif
/*---------------------------- RTEMS ---------------------------------*/ /*------------------- aarch64-linux or aarch64-rtems -----------------*/
#elif defined (__rtems__) #elif (defined (__aarch64__) && (defined (__linux__) || defined (__rtems__)))
#define USE_GCC_UNWINDER
#if defined (__aarch64__)
#define PC_ADJUST -4
#else
#error Unhandled RTEMS architecture.
#endif
/*------------------- aarch64-linux ----------------------------------*/
#elif (defined (__aarch64__) && defined (__linux__))
#define USE_GCC_UNWINDER #define USE_GCC_UNWINDER
#define PC_ADJUST -4 #define PC_ADJUST -4