C — Поиск таблицы системных вызовов в 64-битном ядре Linux методом полного перебора


person SalmaFG    schedule 23.03.2015    source источник


Ответы (1)


Что тут такого запутанного? В предупреждении очень четко указывается проблема: вы приводите 64-битный указатель к 32-битному unsigned.
Вы можете:
Вместо этого привести к unsigned long long, что избавит от непосредственной проблемы, или:

Поступайте правильно и используйте спецификатор %p в printk() (я полагаю, printk() понимает %p?) и приведите указатель к void*.

person EOF    schedule 23.03.2015
comment
Я пробовал оба способа, первый не сработал и выдал формат «%x» ожидает аргумент типа «unsigned int», но аргумент 2 имеет тип «long long unsigned int», но второй решил проблему. Спасибо! - person SalmaFG; 23.03.2015
comment
@SalmaFG: Для полноты: если вы выполняете приведение к unsigned long long, вам также необходимо изменить спецификатор printk() на %llx. - person EOF; 23.03.2015