diff options
author | Arun Sharma <arun@sharma-home.net> | 2010-05-15 12:14:09 -0700 |
---|---|---|
committer | Arun Sharma <arun@sharma-home.net> | 2010-05-15 12:14:09 -0700 |
commit | 1787a2fd284a786b409af74047a12de02c644cd1 (patch) | |
tree | 43f33041d071d2777ddcc77da209e0b91170f29b /src/os-hpux.c | |
parent | b115ab645a44071f0a51742f5804dbceebd3f1ac (diff) | |
download | libunwind-1787a2fd284a786b409af74047a12de02c644cd1.tar.gz |
Add path and pathlen arguments to tdep_get_elf_image()
Signed-off-by: Andris Zeila <andris.zeila@accenture.com>
Diffstat (limited to 'src/os-hpux.c')
-rw-r--r-- | src/os-hpux.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/os-hpux.c b/src/os-hpux.c index 586ace2e..09100d0f 100644 --- a/src/os-hpux.c +++ b/src/os-hpux.c @@ -26,6 +26,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef UNW_REMOTE_ONLY #include <dlfcn.h> +#include <string.h> #include <unistd.h> #include "libunwind_i.h" @@ -34,10 +35,11 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ HIDDEN int tdep_get_elf_image (struct elf_image *ei, pid_t pid, unw_word_t ip, - unsigned long *segbase, unsigned long *mapoff) + unsigned long *segbase, unsigned long *mapoff, + char *path, size_t pathlen); { struct load_module_desc lmd; - const char *path; + const char *path2; if (pid != getpid ()) { @@ -51,10 +53,16 @@ tdep_get_elf_image (struct elf_image *ei, pid_t pid, unw_word_t ip, *segbase = lmd.text_base; *mapoff = 0; /* XXX fix me? */ - path = dlgetname (&lmd, sizeof (lmd), NULL, 0, 0); - if (!path) + path2 = dlgetname (&lmd, sizeof (lmd), NULL, 0, 0); + if (!path2) return -UNW_ENOINFO; - + if (path) + { + strncpy(path, path2, pathlen); + path[pathlen - 1] = '\0'; + if (strcmp(path, path2) != 0) + Debug(1, "buffer size (%d) not big enough to hold path\n", pathlen); + } Debug(1, "segbase=%lx, mapoff=%lx, path=%s\n", *segbase, *mapoff, path); return elf_map_image (ei, path); |