This introduces the CPU_USE_LIBC_XTORS define for use by CPU ports to determine which global constructor and destructor methods are used instead of placing architecture defines where they shouldn't be.
Close #4018 --- cpukit/libcsupport/src/newlibc_exit.c | 5 +---- cpukit/score/cpu/arm/include/rtems/score/cpu.h | 2 ++ cpukit/score/cpu/or1k/include/rtems/score/cpu.h | 2 ++ cpukit/score/cpu/riscv/include/rtems/score/cpu.h | 2 ++ cpukit/score/src/threadhandler.c | 3 +-- 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/cpukit/libcsupport/src/newlibc_exit.c b/cpukit/libcsupport/src/newlibc_exit.c index 650b692c74..8e009da096 100644 --- a/cpukit/libcsupport/src/newlibc_exit.c +++ b/cpukit/libcsupport/src/newlibc_exit.c @@ -17,11 +17,8 @@ #include <stdio.h> #include <unistd.h> -/* FIXME: These defines are a blatant hack */ - #if defined(__USE_INIT_FINI__) - #if defined(__ARM_EABI__) || defined(__riscv) \ - || defined(__or1k__) || defined(__or1knd__) + #if defined(CPU_USE_LIBC_XTORS) #define FINI_SYMBOL __libc_fini_array #else #define FINI_SYMBOL _fini diff --git a/cpukit/score/cpu/arm/include/rtems/score/cpu.h b/cpukit/score/cpu/arm/include/rtems/score/cpu.h index b7b48a3ac3..634efe64b9 100644 --- a/cpukit/score/cpu/arm/include/rtems/score/cpu.h +++ b/cpukit/score/cpu/arm/include/rtems/score/cpu.h @@ -153,6 +153,8 @@ #define CPU_USE_GENERIC_BITFIELD_CODE TRUE +#define CPU_USE_LIBC_XTORS TRUE + #define CPU_MAXIMUM_PROCESSORS 32 #ifdef ARM_MULTILIB_HAS_THREAD_ID_REGISTER diff --git a/cpukit/score/cpu/or1k/include/rtems/score/cpu.h b/cpukit/score/cpu/or1k/include/rtems/score/cpu.h index 39920bebc3..84f73e06ca 100644 --- a/cpukit/score/cpu/or1k/include/rtems/score/cpu.h +++ b/cpukit/score/cpu/or1k/include/rtems/score/cpu.h @@ -435,6 +435,8 @@ void _CPU_Context_Initialize( #define CPU_USE_GENERIC_BITFIELD_CODE TRUE +#define CPU_USE_LIBC_XTORS TRUE + #endif /* ASM */ #define CPU_SIZEOF_POINTER 4 diff --git a/cpukit/score/cpu/riscv/include/rtems/score/cpu.h b/cpukit/score/cpu/riscv/include/rtems/score/cpu.h index e08307d372..08647e814f 100644 --- a/cpukit/score/cpu/riscv/include/rtems/score/cpu.h +++ b/cpukit/score/cpu/riscv/include/rtems/score/cpu.h @@ -219,6 +219,8 @@ extern void _CPU_Fatal_halt(uint32_t source, uint32_t error) RTEMS_NO_RETURN; #define CPU_USE_GENERIC_BITFIELD_DATA TRUE +#define CPU_USE_LIBC_XTORS TRUE + #define CPU_MAXIMUM_PROCESSORS 32 typedef uint16_t Priority_bit_map_Word; diff --git a/cpukit/score/src/threadhandler.c b/cpukit/score/src/threadhandler.c index acbe186a53..091455b86c 100644 --- a/cpukit/score/src/threadhandler.c +++ b/cpukit/score/src/threadhandler.c @@ -29,8 +29,7 @@ * initialization this target and compiler version uses. */ #if defined(__USE_INIT_FINI__) - #if defined(__ARM_EABI__) || defined(__riscv) \ - || defined(__or1k__) || defined(__or1knd__) + #if defined(CPU_USE_LIBC_XTORS) #define INIT_NAME __libc_init_array #else #define INIT_NAME _init -- 2.20.1 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel