diff options
author | Benoit Perrin | 2014-09-24 11:05:24 +0000 |
---|---|---|
committer | Benoit Perrin | 2014-09-25 10:28:56 +0000 |
commit | 2f747a3902e54cd22b6b7c623096c5fa3b515c83 (patch) | |
tree | 443e4c9fb689009e15f079536a5e4f9899d95f5f | |
parent | 34779116bc63ba176230ee2127eb4fbefbba4872 (diff) | |
download | org.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.c | 15 |
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(); |