about summary refs log tree commit diff
diff options
context:
space:
mode:
authorZack Weinberg <zackw@panix.com>2018-03-09 09:42:04 -0500
committerZack Weinberg <zackw@panix.com>2018-03-10 15:17:18 -0500
commit054b72cc976000424e1d1017b3d51f071e5dd956 (patch)
treed5e748a12cb86dcf877dca72e62c4f92f40432e8
parent6253bacdc00de132dec452ff7c6ce3ba7fa23d81 (diff)
downloadglibc-054b72cc976000424e1d1017b3d51f071e5dd956.tar.gz
glibc-054b72cc976000424e1d1017b3d51f071e5dd956.tar.xz
glibc-054b72cc976000424e1d1017b3d51f071e5dd956.zip
alpha/clone.S: Invoke .set noat/.set at around explicit uses of $at
On Alpha, the register $at is, by default, reserved for use by the
assembler, in the expansion of pseudo-instructions.  It's also used
by the special calling convention for _mcount.  We get warnings from
Alpha clone.S because the code to call _mcount isn't properly marked
up to tell the assembler not to use $at itself.

	* sysdeps/unix/sysv/linux/alpha/clone.s (__clone): Wrap manual
	uses of $at in .set noat / .set at.
-rw-r--r--ChangeLog5
-rw-r--r--sysdeps/unix/sysv/linux/alpha/clone.S2
2 files changed, 7 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 8490083ead..e23ef4c6f4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2018-03-10  Zack Weinberg  <zackw@panix.com>
+
+	* sysdeps/unix/sysv/linux/alpha/clone.S (__clone): Wrap manual
+	uses of $at in .set noat / .set at.
+
 2018-03-10  H.J. Lu  <hongjiu.lu@intel.com>
 
 	* include/setjmp.h (__libc_longjmp): Remove libc_hidden_proto.
diff --git a/sysdeps/unix/sysv/linux/alpha/clone.S b/sysdeps/unix/sysv/linux/alpha/clone.S
index bd85b0b1d3..810a2e5e78 100644
--- a/sysdeps/unix/sysv/linux/alpha/clone.S
+++ b/sysdeps/unix/sysv/linux/alpha/clone.S
@@ -40,9 +40,11 @@
 	cfi_startproc
 __clone:
 #ifdef PROF
+	.set noat
 	ldgp	gp,0(pv)
 	lda	AT, _mcount
 	jsr	AT, (AT), _mcount
+	.set at
 #endif
 
 	/* Sanity check arguments.  */