Как извлечь enum информацию из эльфа? - PullRequest
0 голосов
/ 01 апреля 2019

хочу получить информацию enum из файла elf.невозможно получить информацию из раздела .rodata, .data или .bss.

1 、 g++ -o t test.cc

2 、 objdump -s -j .rodata t или objdump -s -j .data t ничего не показывает в данных члена enum.

версия 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 Ответ

1 голос
/ 01 апреля 2019

хочу получить информацию enum из файла elf. невозможно получить информацию из раздела .rodata или .data или .bss.

enum - это объявление типа, а не объект. Его нет в памяти.

(То же самое относится к struct или union или к большинству class es.)

Если вы скомпилировали вашу программу с включенными символами отладки (-g), возможно, имеется некоторая отладочная информация, ссылающаяся на enum. Однако эти данные не используются во время выполнения.

...