From 0c096dcf14df1ed6ce869015ca623d8fabf1f0ef Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Tue, 13 Nov 2018 01:55:15 +0000 Subject: Fix mips build with GCC 9. This patch fixes the build for MIPS (o32) with GCC 9 by stopping MIPS __longjmp from using strong_alias, instead defining the alias manually, so that the intended effect of not copying the nomips16 attribute is achieved, as explained in the included comment. Tested with build-many-glibcs.py compilers build for mips64-linux-gnu (which includes glibc builds for all three ABIs). * sysdeps/mips/__longjmp.c (__longjmp): Define alias manually with alias attribute, not with strong_alias. --- sysdeps/mips/__longjmp.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'sysdeps/mips') diff --git a/sysdeps/mips/__longjmp.c b/sysdeps/mips/__longjmp.c index 56bb73f1bc..7c95bc4030 100644 --- a/sysdeps/mips/__longjmp.c +++ b/sysdeps/mips/__longjmp.c @@ -81,4 +81,9 @@ ____longjmp (__jmp_buf env_arg, int val_arg) for (;;); } -strong_alias (____longjmp, __longjmp); +/* Not using strong_alias because the nomips16 attribute cannot be + copied from ____longjmp to __longjmp, because of the + architecture-independent declaration of __longjmp without the + attribute and compiler errors for such attributes not being the + same on all declarations. */ +extern __typeof (____longjmp) __longjmp __attribute__ ((alias ("____longjmp"))); -- cgit 1.4.1