如何从精灵中提取枚举信息?
How extract enum info from elf?
想从 elf 文件中获取枚举信息。无法从 .rodata 或 .data 或 .bss 部分获取信息。
1、 g++ -o t test.cc
2、objdump -s -j .rodata t
或 objdump -s -j .data t
不显示枚举成员数据。
gcc 版本:4.7.2 和 linuxcentos6
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;
}
want to get enum info from elf file. cannot get info from .rodata or .data or .bss section.
enum
是类型声明,不是对象。它在内存中没有任何存在。
(同样适用于 struct
或 union
,或大多数 class
。)
如果您在启用调试符号 (-g
) 的情况下编译程序,可能会有一些调试信息引用 enum
。但是,该数据不会在运行时使用。
想从 elf 文件中获取枚举信息。无法从 .rodata 或 .data 或 .bss 部分获取信息。
1、 g++ -o t test.cc
2、objdump -s -j .rodata t
或 objdump -s -j .data t
不显示枚举成员数据。
gcc 版本:4.7.2 和 linuxcentos6
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;
}
want to get enum info from elf file. cannot get info from .rodata or .data or .bss section.
enum
是类型声明,不是对象。它在内存中没有任何存在。
(同样适用于 struct
或 union
,或大多数 class
。)
如果您在启用调试符号 (-g
) 的情况下编译程序,可能会有一些调试信息引用 enum
。但是,该数据不会在运行时使用。