https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91306
--- Comment #3 from Jozef Lawrynowicz <jozefl.gcc at gmail dot com> ---
(In reply to Andrew Pinski from comment #2)
> If that is true, then maybe alignof should be used instead of sizeof.
> Can you try alignof (__alignof__)?
Thanks, __alignof__ works for me. Below change fixed the issue for
msp430-elf/-mlarge:
> diff --git a/libgcc/crtstuff.c b/libgcc/crtstuff.c
> index 4927a9f8977..bd5c93c194e 100644
> --- a/libgcc/crtstuff.c
> +++ b/libgcc/crtstuff.c
> @@ -474,7 +474,7 @@ frame_dummy (void)
> CRT_CALL_STATIC_FUNCTION (__LIBGCC_INIT_SECTION_ASM_OP__, frame_dummy)
> #else /* defined(__LIBGCC_INIT_SECTION_ASM_OP__) */
> static func_ptr __frame_dummy_init_array_entry[]
> - __attribute__ ((__used__, section(".init_array"),
> aligned(sizeof(func_ptr))))
> + __attribute__ ((__used__, section(".init_array"),
> aligned(__alignof__(func_ptr))))
> = { frame_dummy };
> #endif /* !defined(__LIBGCC_INIT_SECTION_ASM_OP__) */
> #endif /* USE_EH_FRAME_REGISTRY || USE_TM_CLONE_REGISTRY */
The other structures using "aligned(sizeof(func_ptr))" are unused for msp430,
so they aren't causing problems, but alignof does seem like a better keyword to
use for those if it works for the other targets as well.