GCC создает плоский двоичный файл с правильно связанной секцией данных

Я пытаюсь создать плоский двоичный файл с gcc с помощью objcopy, Мой код C выглядит так:

char* str = "Hello world!";
printString(str,12);

Когда я создаю свой двоичный файл с

C:\MinGW\bin\gcc -c cfile.c -o cfile.o
C:\MinGW\bin\gcc -nodefaultlibs -nostdlib -o comfile.o afile.o cfile.o
C:\MinGW\bin\objcopy -O binary comfile.o kernel.bin

Раздел кода (.text) связан правильно, но раздел данных (.rdata) просто помещен позади моего раздела кода и не связан с моим разделом кода. Если я получу доступ к чему-либо в разделе данных, он загрузит что-то из 0x0x401000 вместо правильного местоположения и вылетит.

Есть ли способ решить это?

PS: рабочий код C:

char* str = "Hello world!"-0x401000;
printString(str,12);

0 ответов

Другие вопросы по тегам