summaryrefslogtreecommitdiffstats
path: root/testsuite/systemtap.context/usymbols.c
blob: 7c590724eb853e56b1654443b189fe605ee1226d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
/* usymbol test case
 * Copyright (C) 2008, Red Hat Inc.
 *                                                          
 * This file is part of systemtap, and is free software.  You can
 * redistribute it and/or modify it under the terms of the GNU General
 * Public License (GPL); either version 2, or (at your option) any
 * later version.
 *
 * Uses signal to tranfer user space addresses into the kernel where a
 * probe on sigaction will extract them and produce the symbols.  To
 * poke into the executable we get the sa_handler from the main executable,
 * and then the library through calling signal.
 *
 * FIXME. We call into the library to get the right symbol. If we
 * register the handler from the main executable. We need to handle
 * @plt symbols (setting a handler in the main executable that is in a
 * shared library will have the @plt address, not the address inside
 * the shared library).
 */

#include <signal.h>
typedef void (*sighandler_t)(int);

// function from our library
int lib_main (void);

void
main_handler (int signum)
{
  /* dummy handler, just used for the address... */
}

int
main (int argc, char *argv[], char *envp[])
{
  // Use SIGFPE since we never expect that to be triggered.
  signal(SIGFPE, main_handler);
  lib_main();
}