diff options
author | Vineet Gupta <vgupta@synopsys.com> | 2015-12-21 03:10:05 -0500 |
---|---|---|
committer | Vineet Gupta <vgupta@synopsys.com> | 2015-12-21 03:31:25 -0500 |
commit | 6d0d506012c93d3393b8d3d0cac62e46e541c5b6 (patch) | |
tree | 2731ac132e4506d3cd63e80554ded66038ceba6e | |
parent | 2d64affc92d6281d2eca4faad326b981773bf040 (diff) |
ARC: dw2 unwind: Don't bail for CIE.version != 1
The rudimentary CIE.version == 3 handling is already present in code
(for return address register specification)
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
-rw-r--r-- | arch/arc/kernel/unwind.c | 7 |
1 files changed, 1 insertions, 6 deletions
diff --git a/arch/arc/kernel/unwind.c b/arch/arc/kernel/unwind.c index 9f9ecc15556e..f34599abe182 100644 --- a/arch/arc/kernel/unwind.c +++ b/arch/arc/kernel/unwind.c | |||
@@ -600,9 +600,6 @@ static signed fde_pointer_type(const u32 *cie) | |||
600 | const u8 *ptr = (const u8 *)(cie + 2); | 600 | const u8 *ptr = (const u8 *)(cie + 2); |
601 | unsigned version = *ptr; | 601 | unsigned version = *ptr; |
602 | 602 | ||
603 | if (version != 1) | ||
604 | return -1; /* unsupported */ | ||
605 | |||
606 | if (*++ptr) { | 603 | if (*++ptr) { |
607 | const char *aug; | 604 | const char *aug; |
608 | const u8 *end = (const u8 *)(cie + 1) + *cie; | 605 | const u8 *end = (const u8 *)(cie + 1) + *cie; |
@@ -1014,9 +1011,7 @@ int arc_unwind(struct unwind_frame_info *frame) | |||
1014 | ptr = (const u8 *)(cie + 2); | 1011 | ptr = (const u8 *)(cie + 2); |
1015 | end = (const u8 *)(cie + 1) + *cie; | 1012 | end = (const u8 *)(cie + 1) + *cie; |
1016 | frame->call_frame = 1; | 1013 | frame->call_frame = 1; |
1017 | if ((state.version = *ptr) != 1) | 1014 | if (*++ptr) { |
1018 | cie = NULL; /* unsupported version */ | ||
1019 | else if (*++ptr) { | ||
1020 | /* check if augmentation size is first (thus present) */ | 1015 | /* check if augmentation size is first (thus present) */ |
1021 | if (*ptr == 'z') { | 1016 | if (*ptr == 'z') { |
1022 | while (++ptr < end && *ptr) { | 1017 | while (++ptr < end && *ptr) { |