~vcs-imports-ii/libsigsegv/master

« back to all changes in this revision

Viewing changes to m4/fault.m4

  • Committer: Bruno Haible
  • Date: 2023-11-10 01:21:52 UTC
  • Revision ID: git-v1:b3b4eb445bf15b96139c4636ef3c5936ae3b988d
Port to CHERI.

* m4/fault.m4 (SV_TRY_FAULT): Use 'uintptr_t' instead of
'unsigned long'.
* src/signals-bsd.h (SIGSEGV_FOR_ALL_SIGNALS): On CheriBSD, treat
SIGPROT like SIGSEGV and SIGBUS.
* src/fault-freebsd-arm.h (SIGSEGV_FAULT_STACKPOINTER): Define
differently on CheriBSD.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# fault.m4 serial 10 (libsigsegv-2.15)
 
1
# fault.m4 serial 11 (libsigsegv-2.15)
2
2
dnl Copyright (C) 2002-2003, 2011, 2017, 2023 Bruno Haible <bruno@clisp.org>
3
3
dnl This file is free software, distributed under the terms of the GNU
4
4
dnl General Public License.  As a special exception to the GNU General
16
16
  AC_CACHE_CHECK([whether a fault handler according to $1 works], [$2], [
17
17
    AC_RUN_IFELSE([
18
18
      AC_LANG_SOURCE([[
 
19
#include <stdint.h>
19
20
#include <stdlib.h>
20
21
#include <signal.h>
21
22
#if HAVE_SYS_SIGNAL_H
52
53
#else
53
54
# define SIGSEGV_FAULT_ADDRESS_ROUNDOFF_BITS 0UL
54
55
#endif
55
 
unsigned long volatile page;
 
56
uintptr_t volatile page;
56
57
int volatile handler_called = 0;
57
58
void sigsegv_handler ($5)
58
59
{
66
67
  if (mprotect ((void *) page, 0x10000, PROT_READ | PROT_WRITE) < 0)
67
68
    exit (2);
68
69
}
69
 
void crasher (unsigned long p)
 
70
void crasher (uintptr_t p)
70
71
{
71
72
  *(int *) (p + 0x678) = 42;
72
73
}
88
89
#endif
89
90
  if (p == (void *)(-1))
90
91
    exit (2);
91
 
  page = (unsigned long) p;
 
92
  page = (uintptr_t) p;
92
93
  /* Make it read-only.  */
93
94
#if defined __linux__ && defined __sparc__
94
95
  /* On Linux 2.6.26/SPARC64, PROT_READ has the same effect as