rebased to master after sw 3rd party completed
[dyninst.git] / dyninstAPI_RT / src / RTsigill-x86.S
1 /*
2  * See the dyninst/COPYRIGHT file for copyright information.
3  * 
4  * We provide the Paradyn Tools (below described as "Paradyn")
5  * on an AS IS basis, and do not warrant its validity or performance.
6  * We reserve the right to update, modify, or discontinue this
7  * software at any time.  We shall have no obligation to supply such
8  * updates or modifications or any other form of support to you.
9  * 
10  * By your use of Paradyn, you understand and agree that we (or any
11  * other person or entity with proprietary rights in Paradyn) are
12  * under no obligation to provide either maintenance services,
13  * update services, notices of latent defects, or correction of
14  * defects for Paradyn.
15  * 
16  * This library is free software; you can redistribute it and/or
17  * modify it under the terms of the GNU Lesser General Public
18  * License as published by the Free Software Foundation; either
19  * version 2.1 of the License, or (at your option) any later version.
20  * 
21  * This library is distributed in the hope that it will be useful,
22  * but WITHOUT ANY WARRANTY; without even the implied warranty of
23  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
24  * Lesser General Public License for more details.
25  * 
26  * You should have received a copy of the GNU Lesser General Public
27  * License along with this library; if not, write to the Free Software
28  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
29  */
30
31 /*
32    DYNINSTsigill:
33         
34    DYNINSTsigill executes an illegal instruction, causing SIGILL to be
35    sent to the calling process.  It is only needed for
36    detach-on-the-fly, where detached mutatees stop to wait for the
37    mutator or paradynd to reattach by sending themselves SIGILL.
38
39    A detached mutatee that stops itself with SIGSTOP will not be
40    noticed by the mutator or paradynd.  It must send SIGILL to be
41    noticed.
42     
43    There are two ways to send SIGILL to yourself: call kill() or
44    execute an illegal instruction.
45
46    We chose to use illegal instructions. The SIGILL handler has a
47    simpler implementation if SIGILL is caused by an illegal
48    instruction.  We do not use kill() to send SIGILL.
49
50    The test suite calls this function through the dynamic loader to
51    avoid duplication of code in the test suite and additional makefile
52    complexity.
53     
54    3000 bytes of source code for 3 bytes of object code.
55 */
56
57     .text
58     .globl DYNINSTsigill
59
60 DYNINSTsigill:
61     ud2
62     ret
63
64 .section .note.GNU-stack,"",@progbits