MIPS GDB не загружает общую информацию о библиотеке автоматически

Я видел gdb чтение и загрузка символов автоматически. (например, чтение кода ниже ld-linux-x86-64.so.2)

----------

gdb 86exec 86core
...
Reading symbols from 86exec...done.

Illegal process-id: 86core.

[New Thread 14983]

[New Thread 14978]

[New Thread 14980]

[New Thread 14981]

[New Thread 14982]
Reading symbols from /lib64/ld-linux-x86-64.so.2...(no debugging symbols found)...done.

Loaded symbols for /lib64/ld-linux-x86-64.so.2

Core was generated by `./86exec'.

Program terminated with signal 11, Segmentation fault.


----------

Но по моему mips Платформа Я не получаю это автоматическое чтение сделано.

---------


Reading symbols from /mipsexec...done.

[New LWP 1333]

[New LWP 1328]

[New LWP 1330]

[New LWP 1331]

[New LWP 1332]

Core was generated by `./mipsexec'.

Program terminated with signal 11, Segmentation fault.


----------

Я хотел знать, откуда эта информация.

Если это из основного файла, как я могу проанализировать, является ли мой mipscore имеет конкретную информацию.

1 ответ

Я сомневаюсь, что MIPS GDB не поддерживает PIE хорошо. Как я знаю, в PIC, MIPS использовать rld_map но нет DE_DEBUG для динамической информации, но в режиме PIE, MIPS любит другие архитектуры, используя DT_DEBUG,

В динамическом компоновщике есть такие выражения:

#if !defined __mips__
        /* we disable for mips because normally this page is readonly
         * and modifying the value here needlessly dirties a page.
         * see this post for more info:
         * http://uclibc.org/lists/uclibc/2006-April/015224.html */
        if (dpnt->d_tag == DT_DEBUG)
            dpnt->d_un.d_val = (unsigned long)debug_addr;
#endif

это утверждение в PIC в порядке, но не работает в PIE. Если вы удалите это #ifdef, вы получите ошибку сегмента, потому что .dynamic раздел в мипс только для чтения. .dynamic раздел в arm и x86 и т.д. доступен для записи.

если вы измените .dynamic раздел MIPS для записи и открытия DT_DEBUG обработка в динамическом компоновщике, он работает, но все еще имеет некоторые проблемы. Например, только для чтения VMA доступен для записи, и ему нужно больше копий страниц, когда выполняется подпроцесс.

Я столкнулся с проблемой несколько недель назад, и я не знаю, хорошо ли работает mips gdb в Android 4.2 или нет. В Android 4.2 все файлы c/ C++ создаются с помощью PIE.

Другие вопросы по тегам