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);