Как я узнаю материал (что он делает и как) о скомпилированном исполняемом 64-разрядном исполняемом файле LSB ELF, который не может быть запущен (неверный указатель)? - PullRequest
1 голос
/ 08 марта 2019

Когда я запускаю команду file (my-file), я получаю

my-file: исполняемый ELF 64-битный LSB, ARM aarch64, версия 1 (SYSV), динамически связанный, интерпретатор /lib/ld-linux-aarch64.so.1, для GNU / Linux 3.7.0, BuildID [ sha1] = d0fa19146049b8f8b97701a7fc91284f157403ef, без очистки

Когда я пытаюсь запустить ./my-file: * Ошибка в `./lano-campipe ': realloc (): неверный указатель: 0x0000000000406dc8 * Прервано (ядро сброшено)

1 Ответ

0 голосов
/ 08 марта 2019

Существует порт aarch64 valgrind . Если вы запустите свою программу под этим, она, скорее всего, точно скажет вам, что не так и где происходит ошибка.

Я полагаю, основываясь на адресе, что вы передаете адреса (массива или строки?) В realloc, которые расположены в разделе .data (или .rodata), а не в куча. Если вы запускаете программу под GDB и вводите эту команду

info symbol 0x0000000000406dc8

он, скорее всего, напечатает информацию символа для адреса. Для исправления этой ошибки, вероятно, необходимо вызвать malloc и скопировать данные в кучу.

...