Вопросы по теме 'position-independent-code'

nasm: получить смещение перемещенного двоичного файла во время выполнения из rip (указатель инструкции)
У меня есть файл ELF, совместимый с multiboot2, для x86_64, где начальный символ определен в start.asm , файле сборки NASM. Заголовок multiboot2 содержит тег relocatable . Поскольку GRUB не поддерживает мультизагрузку2 + перемещаемый ELF (по...
49 просмотров

Какова семантика инструкций ADRP и ADRL в сборке ARM?
ADRP Адрес страницы размером 4 КБ со смещением относительно ПК. ADRL Загрузите относительный адрес ПК в регистр. Это похоже на инструкцию ADR. ADRL может загружать более широкий диапазон адресов, чем ADR, поскольку он...
15029 просмотров

Почему сборка 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 просмотров

Адрес точки входа программы 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 просмотров

Абсолютные адреса в позиционно-независимом коде (PIC)
Я пытаюсь создать и связать один образ для загрузки в качестве ядра ОС (т.е. в QEMU), ориентируясь на aarch64-unknown-none-softfloat. Я использую собственный файл linker.ld, который устанавливает точку входа для ядра ENTRY(_reset) и позиционирует...
414 просмотров

Почему динамическая загрузка PIE больше не работает в glibc?
Примечание. Предполагаемый обман никоим образом НЕ отвечает на этот вопрос; в частности, локальный пример потока можно легко исправить, скомпилировав его с помощью -fPIC , точно так же, как уже упомянутый ниже пример bugzilla. А в остальном...
120 просмотров

Непредставимый раздел на выходе при компиляции GCC
Я пытаюсь скомпилировать GCC из исходного кода с поддержкой модуля-TS, и я клонировал ветку devel (как указано здесь ): git clone --branch devel/c++-modules git://gcc.gnu.org/git/gcc.git SRCDIR Вот мои параметры конфигурации:...
1209 просмотров

Проблема с привязкой объектного файла к стандартной библиотеке
Ну, я использую nasm для создания test.o из моего test.s . Когда я затем запускаю gcc test.o , это дает мне сообщение об ошибке /usr/bin/ld: test.o: перемещение R_X86_64_PC32 вместо символа `puts@@GLIBC_2.2.5' нельзя использовать при создании...
342 просмотров

Как определяется адрес текстовой части исполняемого файла 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 просмотров

Позиционно-независимый двоичный файл для Atmel SAM Cortex-M0 +
Я пытаюсь создать независимый от позиции двоичный файл для Cortex-M0 +, используя набор инструментов ARM GNU, включенный в Atmel Studio 7 (arm-none-eabi?). Я просмотрел много мест для получения информации о том, как это сделать, но безуспешно. Это...
222 просмотров
schedule 28.06.2023