about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--sysdeps/mips/__longjmp.c7
2 files changed, 9 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index c7ddb7f33c..01d9c7226e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2018-11-13  Joseph Myers  <joseph@codesourcery.com>
 
+	* sysdeps/mips/__longjmp.c (__longjmp): Define alias manually with
+	alias attribute, not with strong_alias.
+
 	* include/libc-symbols.h [SHARED && !NO_HIDDEN && !__ASSEMBLER__]
 	(__hidden_ver2): New macro.  Use old definition of __hidden_ver1
 	with additional parameter thread.
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")));