MMAP с фиксированным адресом MMAP CALL SEGFAULT при вызове из MAIN, но работает внутри Custom Malloc переопределение в CC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 MMAP с фиксированным адресом MMAP CALL SEGFAULT при вызове из MAIN, но работает внутри Custom Malloc переопределение в C

Сообщение Anonymous »

У меня есть 3 файла. 1.cpp имеет карту функций , которая использует mmap для некоторого фиксированного отображения памяти. 2.cpp - это перехватчик Malloc, а 3.cpp имеет основную функцию.
Проблема ... в зависимости от того, где Map это называется либо работает, либо Segfaults, даже не выполняя ничего от Main.

Код: Выделить всё

#include 
#include 

#define end 0x10007fff7fff
#define start 0x02008fff7000
#define MAPFLAGS (MAP_PRIVATE | MAP_FIXED | MAP_ANON | MAP_NORESERVE)

extern "C" {
void map()
{

void *ret;
uintptr_t size = end - start + 1;
ret = mmap((void*) start, size, PROT_READ | PROT_WRITE, MAPFLAGS, -1, 0);
}
}
< /code>
2.cpp
#include 

extern "C" void map(void);

extern "C" void* malloc(size_t usize)
{
// map(); // uncommenting this and commenting out in 1.cpp works
void* ptr = (void*) 0x8003fffb000; // test address which falls b/n
*(char*)ptr = 0xab;
return ptr;
}
< /code>
3.cpp
#include 
#include 
#include 
#include 

extern "C" void map(void);

int main()
{
puts("Inside main");
map();
void* ptr = NULL;
ptr = (void*) malloc(6); // returns 0x8003fffb000 address which should be mapped eariler
*(char*) ptr = 0xef;
printf("%x\n", *(char*)ptr);
return 0;
}
< /code>
для создания: < /p>
clang++ -c 1.cpp 2.cpp 3.cpp -g
clang++ 1.o 2.o 3.o -g
Если я прокомментирую карту вызов из 3.cpp и запустить из 2.cpp она работает так же, как и ожидалось. Но другой способ он дает Segfault.
Когда я использую Clang/GCC вместо Clang ++/G ++, он работает в обоих случаях. Я понятия не имею, что происходит. Я пытаюсь внедрить игрушечную версию адреса Адреса, следовательно, перехватываю вызовы Malloc для настройки памяти тени во время выполнения.

Подробнее здесь: https://stackoverflow.com/questions/794 ... ide-custom
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»