diff options
author | John Sonnenschein <johns@joyent.com> | 2012-11-07 22:04:45 +0000 |
---|---|---|
committer | John Sonnenschein <johns@joyent.com> | 2012-11-07 22:04:45 +0000 |
commit | ad2a40e16d2bee59cfe84f89db3ce92b9f15adff (patch) | |
tree | bc8e23c4588b29e4602a54b72dbe2f1d8786468d /usr/src/cmd/sgs/libld/common/unwind.c | |
parent | b5f683274309a9c6f46eea8ce5d0cca514d977a8 (diff) | |
parent | 7c45eec5760d4195b6b85770e7ac51c380adfb8a (diff) | |
download | illumos-joyent-ad2a40e16d2bee59cfe84f89db3ce92b9f15adff.tar.gz |
Illumos sync
Diffstat (limited to 'usr/src/cmd/sgs/libld/common/unwind.c')
-rw-r--r-- | usr/src/cmd/sgs/libld/common/unwind.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/usr/src/cmd/sgs/libld/common/unwind.c b/usr/src/cmd/sgs/libld/common/unwind.c index 20d7051a4f..1e10b4664d 100644 --- a/usr/src/cmd/sgs/libld/common/unwind.c +++ b/usr/src/cmd/sgs/libld/common/unwind.c @@ -639,8 +639,8 @@ ld_unwind_populate_hdr(Ofl_desc *ofl) (void) dwarf_ehe_extract( &data[off + ndx], &ndx, ciePflag, - ofl->ofl_dehdr->e_ident, - shdr->sh_addr, off + ndx); + ofl->ofl_dehdr->e_ident, B_FALSE, + shdr->sh_addr, off + ndx, 0); break; case 'R': /* code encoding */ @@ -658,10 +658,17 @@ ld_unwind_populate_hdr(Ofl_desc *ofl) uint_t bintabndx; uint64_t initloc; uint64_t fdeaddr; + uint64_t gotaddr = 0; + + if (ofl->ofl_osgot != NULL) + gotaddr = + ofl->ofl_osgot->os_shdr->sh_addr; initloc = dwarf_ehe_extract(&data[off], &ndx, cieRflag, ofl->ofl_dehdr->e_ident, - shdr->sh_addr, off + ndx); + B_FALSE, + shdr->sh_addr, off + ndx, + gotaddr); /* * Ignore FDEs with initloc set to 0. |