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.
This commit is contained in:
Joseph Myers 2018-11-13 01:55:15 +00:00
parent 9c4b457e1b
commit 0c096dcf14
2 changed files with 9 additions and 1 deletions

View File

@ -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.

View File

@ -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")));