Недавно я работал над заданием, которое требовало от меня получения адреса определенной инструкции в сегменте кода ядра Linux. Я пытался сделать это с помощью меток как значений, предоставленных gcc. вот так:
Код: Выделить всё
u64 address;
noinline void foo()
{
address = (u64) && label;
// some code
label: // the virtual address I want
// some code
}
Но значение адреса неверно, оно задано как &foo. Я предполагаю, что причина ошибки в том, что адрес не является статической константой (это глобальное значение), и это процедура присваивания, а не процедура инициализации.
Хотелось бы знать есть ли способ «получить виртуальный адрес любой инструкции и сохранить его в переменной» в ядре Linux.
Подробнее здесь:
https://stackoverflow.com/questions/784 ... nux-kernel