#include "stdio.h"
#include "elf.h"
void main()
{
Elf32_Ehdr elf_header;
unsigned char magic[] =
{0x7f,0x45,0x4c,0x46,0x01,0x01,0x01,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
int vma_addr = 0xA4000000;
FILE *output = NULL;
memcpy(elf_header.e_ident, magic, sizeof(magic));
elf_header.e_type = ET_EXEC;
elf_header.e_machine = EM_SH;
elf_header.e_version = EV_CURRENT;
elf_header.e_entry = vma_addr;
elf_header.e_phoff = 0;
elf_header.e_shoff = 0;
elf_header.e_flags = EM_SH;
elf_header.e_ehsize = sizeof(elf_header);
elf_header.e_phentsize = 0;
elf_header.e_phnum = 0;
elf_header.e_shentsize = 0;
elf_header.e_shnum = 0;
elf_header.e_shstrndx = 0;
output = fopen("elfheader.bin","wb");
fwrite(&elf_header, sizeof(Elf32_Ehdr), 1, output);
fclose(output);
}
혹시나 해서 꼼지락 대면서 gdb load 명령을 이용하여 프로그램 업로드 하기 위해
꽁수를 부려 봤는데.. 이정도 ELF 정도로는 속아주질 않는다 ㄱ-
아이디어 : load 시에 not an object file: File format not recognized 메시지는
즉, ELF 포맷에 맞추어 제대로 된 헤더만 맞추어 주면
원하는 메모리 번지로 임의의 파일을 올릴 수 있지 않을까?
결과 : 니미 ㄱ-
2009/02/16 - [회사일] - sh4-linux-gdb 의 load 명령어