如何从.gcc_except_table和.eh_handle部分恢复异常信息?

时间:2014-09-25 01:00:41

标签: c++ exception assembly x86 elf

对于定义了C++ try的{​​{1}}程序,使用catch将其编译为汇编代码(测试在x86 32位Linux上,g++ 4.6 0.3)

g++

如下所示生成名为g++ -S cppexcept.cc 的指定部分:

.gcc_except_table

在使用 .section .gcc_except_table .align 4 .LLSDA980: .byte 0xff .byte 0 .uleb128 .LLSDATT980-.LLSDATTD980 .LLSDATTD980: .byte 0x1 .uleb128 .LLSDACSE980-.LLSDACSB980 .LLSDACSB980: .uleb128 .LEHB3-.LFB980 .uleb128 .LEHE3-.LEHB3 .uleb128 0 .uleb128 0 .uleb128 .LEHB4-.LFB980 .uleb128 .LEHE4-.LEHB4 .uleb128 .L19-.LFB980 .uleb128 0x3 .uleb128 .LEHB5-.LFB980 .uleb128 .LEHE5-.LEHB5 .uleb128 0 .uleb128 0 .uleb128 .LEHB6-.LFB980 .uleb128 .LEHE6-.LEHB6 .uleb128 .L20-.LFB980 .uleb128 0 .uleb128 .LEHB7-.LFB980 .uleb128 .LEHE7-.LEHB7 .uleb128 .L21-.LFB980 .uleb128 0 格式汇编成exe file之后,似乎有两个与异常处理相关的部分,即ELF.gcc_except_table

但是,我使用以下命令转储这两部分的内容,比较标签'内存地址使用.eh_frame中定义的内容,但对我来说似乎太模糊了......

.gcc_except_table

所以我的问题是:

有没有办法从objdump -s -j .gcc_except_table cppexcept objdump -s -j .eh_frame cppexcept 文件的.gcc_except_tableELF表中恢复.gcc_except_table(如上所示)中定义的信息?< / p>

0 个答案:

没有答案