如何从elf中提取枚举信息?

时间:2019-04-01 04:19:42

标签: linux elf

想要从elf文件获取枚举信息。无法从.rodata或.data或.bss部分获取信息。

1,g++ -o t test.cc

2,objdump -s -j .rodata tobjdump -s -j .data t 没有显示有关枚举成员数据的任何信息。

gcc版本:4.7.2和linux centos6

namespace test {
    namespace error {
        enum {
            kUnkown         = -1,
            kSuccess        = 0,
            kInvalidParams  = 1,
            kDBInitFailed = 2,
            kTimeout        = 3,
            kAttributeInitFailed = 4,
            kPageCacheInitFailed = 5,
            kUpdate = 9001,
        };  
    } // namespace error
}   

int main()
{
    return 0;
}   

1 个答案:

答案 0 :(得分:1)

  

想要从elf文件获取枚举信息。无法从.rodata或.data或.bss部分获取信息。

enum是类型声明,而不是对象。内存中没有任何内容。

structunion或大多数class都适用。)

如果在启用调试符号(-g)的情况下编译程序,则可能会有一些引用enum的调试信息。但是,该数据不会在运行时使用。