Вопросы по теме 'position-independent-code'
nasm: получить смещение перемещенного двоичного файла во время выполнения из rip (указатель инструкции)
У меня есть файл ELF, совместимый с multiboot2, для x86_64, где начальный символ определен в start.asm , файле сборки NASM. Заголовок multiboot2 содержит тег relocatable .
Поскольку GRUB не поддерживает мультизагрузку2 + перемещаемый ELF (по...
49 просмотров
schedule
06.10.2021
Какова семантика инструкций ADRP и ADRL в сборке ARM?
ADRP
Адрес страницы размером 4 КБ со смещением относительно ПК.
ADRL
Загрузите относительный адрес ПК в регистр. Это похоже на инструкцию ADR. ADRL может загружать более широкий диапазон адресов, чем ADR, поскольку он...
15029 просмотров
schedule
19.02.2022
Почему сборка nasm с неквалифицированными ссылками на _GLOBAL_OFFSET_TABLE_, очевидно, может быть собрана и связана как PIC?
Почему я могу собрать и связать get_got.asm как независимый от позиции код, если он содержит ссылку на абсолютный адрес своего GOT?
get_got.asm
extern _GLOBAL_OFFSET_TABLE_
section .text
global get_got
get_got:
mov rax,...
418 просмотров
schedule
08.04.2022
Адрес точки входа программы PIE
Как узнать фактический адрес точки входа программы PIE в Linux/Android?
Я могу прочитать адрес точки входа, используя readelf -l , но для эльфа, скомпилированного и связанного с -pie или -fPIE , фактический адрес точки входа будет отличаться от...
279 просмотров
schedule
21.06.2022
как компилятор выбирает, какую функцию get_pc_thunk получить текущий адрес?
Двоичный файл PIE использует функцию __x86.get_pc_thunk для получения адреса, динамически определяемого во время загрузки.
i) Иногда он вызывает __x86.get_pc_thunk.ax .
5ff: e8 24 00 00 00 call 628...
461 просмотров
schedule
07.07.2022
Абсолютные адреса в позиционно-независимом коде (PIC)
Я пытаюсь создать и связать один образ для загрузки в качестве ядра ОС (т.е. в QEMU), ориентируясь на aarch64-unknown-none-softfloat. Я использую собственный файл linker.ld, который устанавливает точку входа для ядра ENTRY(_reset) и позиционирует...
414 просмотров
schedule
09.07.2022
Почему динамическая загрузка PIE больше не работает в glibc?
Примечание. Предполагаемый обман никоим образом НЕ отвечает на этот вопрос; в частности, локальный пример потока можно легко исправить, скомпилировав его с помощью -fPIC , точно так же, как уже упомянутый ниже пример bugzilla. А в остальном...
120 просмотров
schedule
03.08.2022
Непредставимый раздел на выходе при компиляции GCC
Я пытаюсь скомпилировать GCC из исходного кода с поддержкой модуля-TS, и я клонировал ветку devel (как указано здесь ):
git clone --branch devel/c++-modules git://gcc.gnu.org/git/gcc.git SRCDIR
Вот мои параметры конфигурации:...
1209 просмотров
schedule
21.08.2022
Проблема с привязкой объектного файла к стандартной библиотеке
Ну, я использую nasm для создания test.o из моего test.s . Когда я затем запускаю gcc test.o , это дает мне сообщение об ошибке
/usr/bin/ld: test.o: перемещение R_X86_64_PC32 вместо символа `puts@@GLIBC_2.2.5' нельзя использовать при создании...
342 просмотров
schedule
31.08.2022
Как определяется адрес текстовой части исполняемого файла PIE в Linux?
Сначала я попытался немного перепроектировать его:
printf '
#include <stdio.h>
int main() {
puts("hello world");
}
' > main.c
gcc -std=c99 -pie -fpie -ggdb3 -o pie main.c
echo 2 | sudo tee /proc/sys/kernel/randomize_va_space
readelf...
1394 просмотров
schedule
13.10.2022
Позиционно-независимый двоичный файл для Atmel SAM Cortex-M0 +
Я пытаюсь создать независимый от позиции двоичный файл для Cortex-M0 +, используя набор инструментов ARM GNU, включенный в Atmel Studio 7 (arm-none-eabi?). Я просмотрел много мест для получения информации о том, как это сделать, но безуспешно. Это...
222 просмотров
schedule
28.06.2023