rafaelgmelo
OS Newbie
Karma: 0
Mensagens: 23
|
 |
« : Agosto 01, 2011, 01:02:08 » |
|
Olá de novo!!!
Estou com um problema para compilar um código criado por mim mesmo, baseado no do bkerndev...
Quando é para compilar o source asm, eu faço com que o arquivo seja elf, para não dar problema de compatibilidade.Mas, na hora de linkar, aparece o seguinte erro:
warning: cannot find entry simbol start; defaulting to 00100000
E não 'linka' o arquivo!!!
Para linkar, estou usando o linker presente no tutorial do bkerndev, configurado para gerar elf
Obrigado!!!
|
|
|
|
|
Registrado
|
|
|
|
Windowstec
OS Jr. Member

Karma: 1
Mensagens: 65
Estudante
|
 |
« Responder #1 : Agosto 01, 2011, 06:31:18 » |
|
Estas a falar deste codigo certo? OUTPUT_FORMAT("binary") ENTRY(start) phys = 0x00100000; SECTIONS { .text phys : AT(phys) { code = .; *(.text) *(.rodata) . = ALIGN(4096); } .data : AT(phys + (data - code)) { data = .; *(.data) . = ALIGN(4096); } .bss : AT(phys + (bss - code)) { bss = .; *(.bss) . = ALIGN(4096); } end = .; } Mostra o teu para tentar encontrar o problema.
|
|
|
|
|
Registrado
|
|
|
|
rafaelgmelo
OS Newbie
Karma: 0
Mensagens: 23
|
 |
« Responder #2 : Agosto 02, 2011, 01:29:20 » |
|
Lá vai:
OUTPUT_FORMAT("elf32-i386") ENTRY(start) phys = 0x00100000; SECTIONS { .text phys : AT(phys) { code = .; *(.text) . = ALIGN(4096); }
Obrigado a todos .data : AT(phys + (data - code)) { data = .; *(.data) . = ALIGN(4096); } .bss : AT(phys + (bss - code)) { bss = .; *(.bss) . = ALIGN(4096); } end = .; }
|
|
|
|
|
Registrado
|
|
|
|
Windowstec
OS Jr. Member

Karma: 1
Mensagens: 65
Estudante
|
 |
« Responder #3 : Agosto 02, 2011, 06:45:41 » |
|
É assim pelo que vi o linker não está mal, o que pode estar é o ponto de entrada(" ENTRY(start)"). Pelo que parece, não existe nenhuma função chamada start. Tambem podes acrescentar OUTPUT_ARCH(i386) no inicio do teu linker. Cumprimentos, Gil Mendes (Windowstec)
|
|
|
|
|
Registrado
|
|
|
|
rafaelgmelo
OS Newbie
Karma: 0
Mensagens: 23
|
 |
« Responder #4 : Agosto 03, 2011, 03:32:21 » |
|
O prblema é q existe sim uma função no código asm chamada start!!!!
Obrigado a tds
|
|
|
|
|
Registrado
|
|
|
|
Windowstec
OS Jr. Member

Karma: 1
Mensagens: 65
Estudante
|
 |
« Responder #5 : Agosto 03, 2011, 03:43:34 » |
|
E no código que escreves na consola para linkar, incluis o objecto do ficheiro que contem a função start???
Cumprimentos, Gil Mendes (Windowstec)
|
|
|
|
|
Registrado
|
|
|
|
rafaelgmelo
OS Newbie
Karma: 0
Mensagens: 23
|
 |
« Responder #6 : Agosto 03, 2011, 08:46:41 » |
|
Sim....
Estou ficando sem opções...
|
|
|
|
|
Registrado
|
|
|
|
|
Mounter
|
 |
« Responder #7 : Agosto 05, 2011, 05:22:03 » |
|
Qual o seu assembler? O nasm certo? Então pode ser que falte indicar os seguinte: global start
start: O uso de global serve para "exportar" o simbolo, no caso ele irá aparecer para todos os arquivos objetos, mas alguns compiladores este tipo de comando não precisa ser usado. Verifique também se seu arquivo objeto está sendo lincado corretamente. Qualquer coisa é só falar. Abraço Mounter
|
|
|
|
|
Registrado
|
|
|
|
rafaelgmelo
OS Newbie
Karma: 0
Mensagens: 23
|
 |
« Responder #8 : Agosto 05, 2011, 08:25:42 » |
|
De fato, estava faltando o 'global' no código, porém meu problema não para por aí não: Logo, sem o erro inicial, aparece isso:  Como se o código asm não fosse reconhecido!!!! Ajuda!!!
|
|
|
|
|
Registrado
|
|
|
|
rafaelgmelo
OS Newbie
Karma: 0
Mensagens: 23
|
 |
« Responder #9 : Agosto 07, 2011, 09:50:01 » |
|
Ninguém?!
|
|
|
|
|
Registrado
|
|
|
|
|
Mounter
|
 |
« Responder #10 : Agosto 07, 2011, 09:46:53 » |
|
Ou o arquivo objeto nao foi lincado, ou você está com problemas de underscore, como você está compilando os arquivos?
Abraço Mounter
|
|
|
|
|
Registrado
|
|
|
|
rafaelgmelo
OS Newbie
Karma: 0
Mensagens: 23
|
 |
« Responder #11 : Agosto 08, 2011, 12:30:02 » |
|
Estou usando um arquivo .bat(uso Windows...fazer oq...) Baseado no do SD-BRA:
@echo off
cd bin del *.elf cd ..
echo Compilando:
echo -} dvr
i586-pc-sombra-gcc -Wall -nostdlib -fno-builtin -fno-exceptions -I./inc -c -o video.o drv/video.c i586-pc-sombra-gcc -Wall -nostdlib -fno-builtin -fno-exceptions -I./inc -c -o kb.o drv/keyboard.c
echo -} krn/asm nasm -f elf -I./inc/ -o kstart.o krn/start.asm
echo -} krn i586-pc-sombra-gcc -Wall -nostdlib -fno-builtin -fno-exceptions -I./inc -c -o kmain.o krn/main.c i586-pc-sombra-gcc -Wall -nostdlib -fno-builtin -fno-exceptions -I./inc -c -o isr.o krn/isr.c i586-pc-sombra-gcc -Wall -nostdlib -fno-builtin -fno-exceptions -I./inc -c -o gdt.o krn/gdt.c i586-pc-sombra-gcc -Wall -nostdlib -fno-builtin -fno-exceptions -I./inc -c -o idt.o krn/idt.c i586-pc-sombra-gcc -Wall -nostdlib -fno-builtin -fno-exceptions -I./inc -c -o mem.o krn/mem.c i586-pc-sombra-gcc -Wall -nostdlib -fno-builtin -fno-exceptions -I./inc -c -o strlen.o krn/strlen.c i586-pc-sombra-gcc -Wall -nostdlib -fno-builtin -fno-exceptions -I./inc -c -o timer.o krn/timer.c i586-pc-sombra-ld -r -o krn.o strlen.o mem.o kmain.o gdt.o idt.o isr.o kstart.o
echo -} lincando i586-pc-sombra-ld -T krn\link.ld -o kernel.elf video.o krn.o kb.o
echo -} Enviando kernel para pasta bin move kernel.elf bin\kernel.elf
echo Limpando os codigos objetos del *.o echo Concluido! pause
|
|
|
|
|
Registrado
|
|
|
|
|
Mounter
|
 |
« Responder #12 : Agosto 08, 2011, 01:57:40 » |
|
Está faltando compilar e lincar alguns drivers como o timer.o, deve estar faltando também o que controla os irqs. Melhor verificar com mais atenção e ver se essas funções estão nos arquivos que você está compilando.
|
|
|
|
|
Registrado
|
|
|
|
rafaelgmelo
OS Newbie
Karma: 0
Mensagens: 23
|
 |
« Responder #13 : Agosto 09, 2011, 12:58:45 » |
|
Ajustei o cp.bat, arrumei alguns bugs, porém continuo com a mesma mesagem de erro:  Pelo q pude entender, parece-me q o codigo asm e o codigo C não estão se 'comunicando', ou seja, eu crio uma função no código C e o código ASM não consegue reconhecer, e vice-versa, porém não sei o q fazer para consertar!!Ajuda!!!
|
|
|
|
« Última modificação: Agosto 09, 2011, 01:12:17 por rafaelgmelo »
|
Registrado
|
|
|
|
|
Mounter
|
 |
« Responder #14 : Agosto 09, 2011, 01:49:37 » |
|
Pode ser aquilo que falei, pode ser problemas que o código em ASM está com os símbolos em underscore, ou nas chamadas em assembly os símbolos não estejam sendo informados como externos (extern symbol). Ou é a falta de algum arquivo fonte.
Mas não sei, as imagens estão pequenas e não consigo ver os códigos de erro.
|
|
|
|
|
Registrado
|
|
|
|
|