Есть функция sum:
int sum(int x, int y)
{
return x + y;
}
Есть виртуальная память со страницами.
Хочу чтобы скомпилированая в машинный код функция лежала в своей отдельной сранице и кроме неё там были бы только нули.
Копировать байты в рантайме - не понятно сколько.
Вроде есть какая-то конфигурационная магия для gcc с запихиванием функции в отдельную секцию в elf и присваеванием секции адреса, но я пока не осилил и боюсь сломать хотелку #1.
Платформа - линукс, amd64. Портабельность не обязательна.
Хотелки:
- не сломать ASLR, в новом процессе у функции должен быть новый адрес
- разобраться с обоими вариантами: копировать с memcpy и заставить ld.so сразу грузить куда надо