[AArch64] Fix libc internal asm profiling code
commitefbe665c3a2d344b0d64456cf29499ba53c2965a
authorSzabolcs Nagy <szabolcs.nagy@arm.com>
Mon, 11 Jul 2016 08:46:08 +0000 (11 09:46 +0100)
committerSzabolcs Nagy <szabolcs.nagy@arm.com>
Mon, 11 Jul 2016 08:50:41 +0000 (11 09:50 +0100)
tree2b4f2072c5b1c0ad5c30af13cd8c927a574ddd9b
parent468700675f7f36d55758c36b1ed902250470e8ec
[AArch64] Fix libc internal asm profiling code

When glibc is built with --enable-profile, the ENTRY of
asm functions includes CALL_MCOUNT for profiling.
(matters for binaries static linked against libc_p.a.)

CALL_MCOUNT did not save/restore argument registers
around the _mcount call so it clobbered them.
(it is enough to only save/restore the arguments passed
to a given asm function, but that would be too many asm
changes so it is simpler to always save all argument
registers in this macro.)

float args are not saved: mcount does not clobber the
float regs and currently no asm function takes float
arguments anyway.

[BZ #18707]
* sysdeps/aarch64/Makefile (CFLAGS-mcount.c): Add -mgeneral-regs-only.
* sysdeps/aarch64/sysdep.h (CALL_MCOUNT): Save argument registers.
ChangeLog
sysdeps/aarch64/Makefile
sysdeps/aarch64/sysdep.h