[AARCH64] - Add signal handler definitions for profiling.

Message ID CAJK_mQ2w-ZRGEoUA0wS305BJpOZ6R8eWkb_ZkDEX+=CptARojw@mail.gmail.com
State New
Headers show

Commit Message

Venkataramanan Kumar Sept. 23, 2013, 5:44 a.m.
Hi Marcus,

As per your comments in
https://sourceware.org/ml/libc-ports/2013-09/msg00114.html, I have
separated the patch that adds signal handler definitions for
profiling.

Cross tested with glibc testsuites on ARM V8 foundation model, with no
regressions.

Also please let me know,  "_mcount" patch in
https://sourceware.org/ml/libc-ports/2013-09/msg00090.html is good to
go.

Changelog:

2013-09-23 Venkataramanan Kumar  <venkataramanan.kumar@linaro.org>
        * sysdeps/unix/sysv/linux/sigcontextinfo.h: New file

if they are OK, can someone please commit it on my behalf.

regards,
Venkat.

Comments

Marcus Shawcroft Sept. 24, 2013, 12:21 p.m. | #1
On 23 September 2013 06:44, Venkataramanan Kumar
<venkataramanan.kumar@linaro.org> wrote:
> Hi Marcus,
>
> As per your comments in
> https://sourceware.org/ml/libc-ports/2013-09/msg00114.html, I have
> separated the patch that adds signal handler definitions for
> profiling.
>
> Cross tested with glibc testsuites on ARM V8 foundation model, with no
> regressions.
>
> Also please let me know,  "_mcount" patch in
> https://sourceware.org/ml/libc-ports/2013-09/msg00090.html is good to
> go.
>
> Changelog:
>
> 2013-09-23 Venkataramanan Kumar  <venkataramanan.kumar@linaro.org>
>         * sysdeps/unix/sysv/linux/sigcontextinfo.h: New file
>

Venkat, I've committed this patch with a corrected path in the ChangeLog.
Thanks
/Marcus

Patch hide | download patch | download mbox

diff --git a/ports/sysdeps/unix/sysv/linux/aarch64/sigcontextinfo.h b/ports/sysdeps/unix/sysv/linux/aarch64/sigcontextinfo.h
new file mode 100644
index 0000000..f660d1e
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/aarch64/sigcontextinfo.h
@@ -0,0 +1,36 @@ 
+/* AArch64 definitions for signal handling calling conventions.
+   Copyright (C) 1996-2013 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <sys/ucontext.h>
+#include "kernel-features.h"
+
+#define SIGCONTEXT siginfo_t *_si, struct ucontext *
+#define GET_PC(ctx)	((void *) (ctx)->uc_mcontext.pc)
+
+/* There is no reliable way to get the sigcontext unless we use a
+   three-argument signal handler.  */
+#define __sigaction(sig, act, oact) ({ \
+  (act)->sa_flags |= SA_SIGINFO; \
+  (__sigaction) (sig, act, oact); \
+})
+
+#define sigaction(sig, act, oact) ({ \
+  (act)->sa_flags |= SA_SIGINFO; \
+  (sigaction) (sig, act, oact); \
+})
+