summaryrefslogtreecommitdiff
path: root/src/os-hpux.c
diff options
context:
space:
mode:
authorArun Sharma <arun@sharma-home.net>2010-05-15 12:14:09 -0700
committerArun Sharma <arun@sharma-home.net>2010-05-15 12:14:09 -0700
commit1787a2fd284a786b409af74047a12de02c644cd1 (patch)
tree43f33041d071d2777ddcc77da209e0b91170f29b /src/os-hpux.c
parentb115ab645a44071f0a51742f5804dbceebd3f1ac (diff)
downloadlibunwind-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.c18
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);