Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 17 Jan 2007 21:56:17 -0500
From:      "Siavosh Benabbas" <sbenabas@gmail.com>
To:        freebsd-arch@freebsd.org
Subject:   siginfo_t.si_code macro constants
Message-ID:  <32d8477c0701171856i6f7c4cdy384ad2e10086a65f@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
Hi,
I am trying to compile parted on freebsd and I came across this. It seems
that many macro constants of POSIX that one should be able to check the
value of siginfo_t.si_code in a 3 parameter signal handler (set by
sigaction) are missing. These in particular include SEGV_MAPPER,
SEGV_ACCERR, and many ILL_* constants the man page of sigaction mentions:

     "The code argument of the BSD-style handler and the si_code member of
the
     info argument to a SA_SIGINFO handler contain a numeric code explaining
     the cause of the signal, usually one of the SI_... values from
     <sys/signal.h> or codes specific to a signal, i.e., one of the FPE_...
     values for SIGFPE."

But it doesn't specifically list the macro's available. According to the
POSIX standard there should be some SEGV_* and ILL_* constants too. I
searched in the archives and it seems that this was pointed out around a
year ago. The mail in the archive also mentioned that siginfo_t.si_code
actually gets populated but there is no constant to check this against. The
following is from (a distribution of) linux's man page for sigaction
describing some of the constants available on Linux:

       +-------------------------------------+
       |               SIGILL                |
       +-----------+-------------------------+
       |ILL_ILLOPC | illegal opcode          |
       +-----------+-------------------------+
       |ILL_ILLOPN | illegal operand         |
       +-----------+-------------------------+
       |ILL_ILLADR | illegal addressing mode |
       +-----------+-------------------------+
       |ILL_ILLTRP | illegal trap            |
       +-----------+-------------------------+
       |ILL_PRVOPC | privileged opcode       |
       +-----------+-------------------------+
       |ILL_PRVREG | privileged register     |
       +-----------+-------------------------+
       |ILL_COPROC | coprocessor error       |
       +-----------+-------------------------+
       |ILL_BADSTK | internal stack error    |
       +-----------+-------------------------+
....
       +----------------------------------------------------+
       |                      SIGSEGV                       |
       +------------+---------------------------------------+
       |SEGV_MAPERR | address not mapped to object          |
       +------------+---------------------------------------+
       |SEGV_ACCERR | invalid permissions for mapped object |
       +------------+---------------------------------------+
....

Unfortunately I lack the expertise to implement any of these but I wanted to
ask if anybody has a similar problem and/or is working on this.

Thanks,
Siavosh Benabbas



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?32d8477c0701171856i6f7c4cdy384ad2e10086a65f>