Как переменная стека overflow _включается в entry.S в архитектуре arm64?

Для систем без machinectl shell(, напр. systemd v219 в CentOS 7 Atomic )или в ситуациях, когда machinectl loginне работает по какой-либо причине, вы можете получить оболочку или запустить команды напрямую, используяnsenter:

Пример:

$ nsenter \
     --target=$(machinectl show --property Leader ipsec-libreswan | sed "s/^Leader=//") \
     --mount --uts --ipc --net --pid
3
05.09.2020, 21:30
1 ответ

Нет, другого пути нет; overflow_stackне объявлен и не определен ни в одном из заголовков, включенных в entry.S. Но это не ошибка для ассемблера ; overflow_stackне имеет локального префикса, поэтому он становится неопределенным символом в arch/arm64/kernel/entry.o, который разрешается при линковке ядра.

Выполнить

make arch/arm64/kernel/entry.o

(или make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 arch/arm64/kernel/entry.oна архитектуре, отличной отarm64); тогда

objdump -t arch/arm64/kernel/entry.o

покажет (среди прочих)

0000000000000000         *UND*  0000000000000000 overflow_stack

Таблицы перемещений включают ряд записей дляoverflow_stack+0x0000000000001000(overflow_stack + OVERFLOW_STACK_SIZE); запустите objdump -r arch/arm64/kernel/entry.o, чтобы увидеть их.

2
18.03.2021, 23:06

Теги

Похожие вопросы