summaryrefslogtreecommitdiff
path: root/src/x86
diff options
context:
space:
mode:
authorKonstantin Belousov <kostik@pooma.home>2010-05-02 16:29:02 +0300
committerKonstantin Belousov <kostik@pooma.home>2010-05-02 16:29:02 +0300
commitb73c618a3135e2e98a279c957240d6d00a192166 (patch)
tree92eeecbc084ac95d0ba62a41b1affed7c1185a20 /src/x86
parent58f290e1ce5950beac3767acbde08fcb0e1ca03f (diff)
parent0176c4f723f1ea90eb20018091ca58eedf28a4a8 (diff)
downloadlibunwind-b73c618a3135e2e98a279c957240d6d00a192166.tar.gz
Merge branch 'master' into freebsd
Diffstat (limited to 'src/x86')
-rw-r--r--src/x86/Ginit_local.c2
-rw-r--r--src/x86/Ginit_remote.c2
-rw-r--r--src/x86/getcontext-freebsd.S2
-rw-r--r--src/x86/getcontext-linux.S2
-rw-r--r--src/x86/init.h3
5 files changed, 8 insertions, 3 deletions
diff --git a/src/x86/Ginit_local.c b/src/x86/Ginit_local.c
index 55ab7490..5e8b6972 100644
--- a/src/x86/Ginit_local.c
+++ b/src/x86/Ginit_local.c
@@ -50,7 +50,7 @@ unw_init_local (unw_cursor_t *cursor, ucontext_t *uc)
c->dwarf.as_arg = c;
c->uc = uc;
c->validate = 0;
- return common_init (c);
+ return common_init (c, 1);
}
#endif /* !UNW_REMOTE_ONLY */
diff --git a/src/x86/Ginit_remote.c b/src/x86/Ginit_remote.c
index 6949a73e..aa924052 100644
--- a/src/x86/Ginit_remote.c
+++ b/src/x86/Ginit_remote.c
@@ -51,6 +51,6 @@ unw_init_remote (unw_cursor_t *cursor, unw_addr_space_t as, void *as_arg)
c->dwarf.as_arg = as_arg;
c->uc = 0;
}
- return common_init (c);
+ return common_init (c, 0);
#endif /* !UNW_LOCAL_ONLY */
}
diff --git a/src/x86/getcontext-freebsd.S b/src/x86/getcontext-freebsd.S
index 17adade8..dfeb4328 100644
--- a/src/x86/getcontext-freebsd.S
+++ b/src/x86/getcontext-freebsd.S
@@ -27,6 +27,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
.global _Ux86_getcontext
.type _Ux86_getcontext, @function
_Ux86_getcontext:
+ .cfi_startproc
pushl %eax
mov 8(%esp),%eax /* ucontext_t* */
popl FREEBSD_UC_MCONTEXT_EAX_OFF(%eax)
@@ -97,6 +98,7 @@ _Ux86_getcontext:
xorl %eax, %eax
ret
+ .cfi_endproc
.size _Ux86_getcontext, . - _Ux86_getcontext
/* We do not need executable stack. */
diff --git a/src/x86/getcontext-linux.S b/src/x86/getcontext-linux.S
index a0714cd1..c469dadb 100644
--- a/src/x86/getcontext-linux.S
+++ b/src/x86/getcontext-linux.S
@@ -36,6 +36,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
.global _Ux86_getcontext
.type _Ux86_getcontext, @function
_Ux86_getcontext:
+ .cfi_startproc
mov 4(%esp),%eax /* ucontext_t* */
/* EAX is not preserved. */
@@ -66,6 +67,7 @@ _Ux86_getcontext:
xor %eax, %eax
ret
+ .cfi_endproc
.size _Ux86_getcontext, . - _Ux86_getcontext
/* We do not need executable stack. */
diff --git a/src/x86/init.h b/src/x86/init.h
index 675b77e5..b59ad842 100644
--- a/src/x86/init.h
+++ b/src/x86/init.h
@@ -26,7 +26,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
#include "unwind_i.h"
static inline int
-common_init (struct cursor *c)
+common_init (struct cursor *c, unsigned use_prev_instr)
{
int ret, i;
@@ -59,6 +59,7 @@ common_init (struct cursor *c)
c->dwarf.args_size = 0;
c->dwarf.ret_addr_column = 0;
+ c->dwarf.use_prev_instr = use_prev_instr;
c->dwarf.pi_valid = 0;
c->dwarf.pi_is_dynamic = 0;
c->dwarf.hint = 0;