commit ff0a538d8b08700df2b46f9aafc9fb2765071f0a
tree 7dc675a48c55763f80413182f8e6a364b03d6ab0
parent a3550a9c543556cf7764be81aeb17c6dab440753
author Jan Beulich <[EMAIL PROTECTED]> 1164741179 +0100
committer Andi Kleen <[EMAIL PROTECTED]> 1164741179 +0100

[PATCH] x86-64: work around gcc4 issue with -Os in Dwarf2 stack unwind

This fixes a problem with gcc4 mis-compiling the stack unwind code under
-Os, which resulted in 'stuck' messages whenever an assembly routine was
encountered.

(The second hunk is trivial cleanup.)

Signed-off-by: Jan Beulich <[EMAIL PROTECTED]>

 kernel/unwind.c |    9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/kernel/unwind.c b/kernel/unwind.c
index f7e50d1..ed0a21d 100644
--- a/kernel/unwind.c
+++ b/kernel/unwind.c
@@ -938,8 +938,11 @@ int unwind(struct unwind_frame_info *fra
                else {
                        retAddrReg = state.version <= 1 ? *ptr++ : 
get_uleb128(&ptr, end);
                        /* skip augmentation */
-                       if (((const char *)(cie + 2))[1] == 'z')
-                               ptr += get_uleb128(&ptr, end);
+                       if (((const char *)(cie + 2))[1] == 'z') {
+                               uleb128_t augSize = get_uleb128(&ptr, end);
+
+                               ptr += augSize;
+                       }
                        if (ptr > end
                           || retAddrReg >= ARRAY_SIZE(reg_info)
                           || REG_INVALID(retAddrReg)
@@ -963,9 +966,7 @@ int unwind(struct unwind_frame_info *fra
        if (cie == NULL || fde == NULL) {
 #ifdef CONFIG_FRAME_POINTER
                unsigned long top, bottom;
-#endif
 
-#ifdef CONFIG_FRAME_POINTER
                top = STACK_TOP(frame->task);
                bottom = STACK_BOTTOM(frame->task);
 # if FRAME_RETADDR_OFFSET < 0
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to