Я пытаюсь отладить ошибку, связанную с доступом к регистру gp
.
Я заметил, что все функции начинаются примерно так:
0x400b7c <main>: lui gp,0xa
0x400b80 <main+4>: addiu gp,gp,31444
0x400b84 <main+8>: addu gp,gp,t9
Как объяснено здесь: https://www.cr0.org/paper/mips.elf.external.resolution.txt, использование t9
, похоже, относится к "классическому GOT / PLT mec [h] anism".
Однако этот документ не очень поучителен, поэтому мой вопрос:
Какова процедура для получения соответствующего значения t9
для использования при вызове функции? (Предположим, генератор кода времени выполнения / JIT-подобный вариант использования.)
Обновление: я нашел более полную документацию: https://gcc.gnu.org/ml/gcc/2008-07/txt00000.txt.