diff options
author | Roland McGrath <roland@redhat.com> | 2009-04-01 18:12:10 -0700 |
---|---|---|
committer | Roland McGrath <roland@redhat.com> | 2009-04-01 18:12:10 -0700 |
commit | 976c562d2da11592305260c6ed06d098b81dd491 (patch) | |
tree | 6180b861705834af410e414fca01215df9fba382 /testsuite/systemtap.context/usymbols.c | |
parent | 3c960a7cfa61cbde19c0ad88045c8c1f6405ed87 (diff) | |
parent | 83ff01c2f669c66100a5cf7531dda9410a8ff6ce (diff) | |
download | systemtap-steved-976c562d2da11592305260c6ed06d098b81dd491.tar.gz systemtap-steved-976c562d2da11592305260c6ed06d098b81dd491.tar.xz systemtap-steved-976c562d2da11592305260c6ed06d098b81dd491.zip |
Merge branch 'master' of ssh://sources.redhat.com/git/systemtap
Diffstat (limited to 'testsuite/systemtap.context/usymbols.c')
-rw-r--r-- | testsuite/systemtap.context/usymbols.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/testsuite/systemtap.context/usymbols.c b/testsuite/systemtap.context/usymbols.c new file mode 100644 index 00000000..7c590724 --- /dev/null +++ b/testsuite/systemtap.context/usymbols.c @@ -0,0 +1,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(); +} |