Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenoit Perrin2014-09-24 11:05:24 +0000
committerBenoit Perrin2014-09-25 10:28:56 +0000
commit2f747a3902e54cd22b6b7c623096c5fa3b515c83 (patch)
tree443e4c9fb689009e15f079536a5e4f9899d95f5f
parent34779116bc63ba176230ee2127eb4fbefbba4872 (diff)
downloadorg.eclipse.tcf.agent-2f747a3902e54cd22b6b7c623096c5fa3b515c83.tar.gz
org.eclipse.tcf.agent-2f747a3902e54cd22b6b7c623096c5fa3b515c83.tar.xz
org.eclipse.tcf.agent-2f747a3902e54cd22b6b7c623096c5fa3b515c83.zip
Bug 444930 - Error reading of the .eh_frame section for .o modules
In the case the 'P' augmentation address cannot be read/relocated, the error is catched to be able to continue the processing of the eh_frame section. Signed-off-by: Benoit Perrin <benoit.perrin@windriver.com> Change-Id: I270b9abadd0a0493de345ebf56aea5d33c5bf9c0
-rw-r--r--agent/tcf/services/dwarfframe.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/agent/tcf/services/dwarfframe.c b/agent/tcf/services/dwarfframe.c
index 804968ba..de377694 100644
--- a/agent/tcf/services/dwarfframe.c
+++ b/agent/tcf/services/dwarfframe.c
@@ -1016,8 +1016,19 @@ static void read_frame_cie(U8_T fde_pos, U8_T pos) {
rules.lsda_encoding = dio_ReadU1();
break;
case 'P':
- rules.prh_encoding = dio_ReadU1();
- read_frame_data_pointer(rules.prh_encoding, NULL, 0);
+ {
+ Trap trap;
+ U8_T addr_pos;
+ rules.prh_encoding = dio_ReadU1();
+ addr_pos = dio_GetPos();
+ if (set_trap(&trap)) {
+ read_frame_data_pointer(rules.prh_encoding, NULL, 0);
+ clear_trap(&trap);
+ }
+ else {
+ dio_SetPos(addr_pos + rules.address_size);
+ }
+ }
break;
case 'R':
rules.addr_encoding = dio_ReadU1();

Back to the top