We only emit that on linux target before, that not problem before, however Qemu has fix a bug to make qemu user mode honor PT_GNU_STACK[1], that will cause problem when we test baremetal with qemu.
So the straightforward is enable that as well for non-linux toolchian, the price is that will increase few bytes for each binary. [1] https://github.com/qemu/qemu/commit/872f3d046f2381e3f416519e82df96bd60818311 gcc/ChangeLog: * config/riscv/linux.h (TARGET_ASM_FILE_END): Move ... * config/riscv/riscv.cc (TARGET_ASM_FILE_END): to here. --- gcc/config/riscv/linux.h | 2 -- gcc/config/riscv/riscv.cc | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gcc/config/riscv/linux.h b/gcc/config/riscv/linux.h index 3e625e0f867..7323ff30f70 100644 --- a/gcc/config/riscv/linux.h +++ b/gcc/config/riscv/linux.h @@ -59,8 +59,6 @@ along with GCC; see the file COPYING3. If not see -dynamic-linker " GNU_USER_DYNAMIC_LINKER "} \ %{static:-static}}" -#define TARGET_ASM_FILE_END file_end_indicate_exec_stack - #define STARTFILE_PREFIX_SPEC \ "/lib" XLEN_SPEC "/" ABI_SPEC "/ " \ "/usr/lib" XLEN_SPEC "/" ABI_SPEC "/ " \ diff --git a/gcc/config/riscv/riscv.cc b/gcc/config/riscv/riscv.cc index 5dc303f89c7..2b3ab862816 100644 --- a/gcc/config/riscv/riscv.cc +++ b/gcc/config/riscv/riscv.cc @@ -9098,6 +9098,8 @@ riscv_frame_pointer_required (void) #define TARGET_ASM_FILE_START riscv_file_start #undef TARGET_ASM_FILE_START_FILE_DIRECTIVE #define TARGET_ASM_FILE_START_FILE_DIRECTIVE true +#undef TARGET_ASM_FILE_END +#define TARGET_ASM_FILE_END file_end_indicate_exec_stack #undef TARGET_EXPAND_BUILTIN_VA_START #define TARGET_EXPAND_BUILTIN_VA_START riscv_va_start -- 2.40.1