Comunidade OSDevBrasil.net
Maio 20, 2012, 03:26:22 *
Bem-vindo, Visitante. Por favor faça o Login ou Registro.

Login com nome de usuário, senha e duração da sessão
Notícias: Anuncie a nossa comunidade a amigos, fóruns...
 
   Home   Ajuda Pesquisa Login Registrar  
Páginas: [1] 2
  Imprimir  
Autor Tópico: Compilando código ELF - Erro  (Lida 906 vezes)
rafaelgmelo
OS Newbie
*

Karma: 0
Mensagens: 23


Ver Perfil Email
« : 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

gilmendes_999@hotmail.com
Ver Perfil WWW Email
« Responder #1 : Agosto 01, 2011, 06:31:18 »

Estas a falar deste codigo certo?
Código:
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

Windowstec OS - O link no google Code foi cancelado brevemente em domínio próprio.
Windowstec - www.windowstec.netne.net
rafaelgmelo
OS Newbie
*

Karma: 0
Mensagens: 23


Ver Perfil Email
« 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

gilmendes_999@hotmail.com
Ver Perfil WWW Email
« 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
Código:
OUTPUT_ARCH(i386)
no inicio do teu linker.

Cumprimentos,
Gil Mendes (Windowstec)
Registrado

Windowstec OS - O link no google Code foi cancelado brevemente em domínio próprio.
Windowstec - www.windowstec.netne.net
rafaelgmelo
OS Newbie
*

Karma: 0
Mensagens: 23


Ver Perfil Email
« 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

gilmendes_999@hotmail.com
Ver Perfil WWW Email
« 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

Windowstec OS - O link no google Code foi cancelado brevemente em domínio próprio.
Windowstec - www.windowstec.netne.net
rafaelgmelo
OS Newbie
*

Karma: 0
Mensagens: 23


Ver Perfil Email
« Responder #6 : Agosto 03, 2011, 08:46:41 »

Sim....

Estou ficando sem opções...
Registrado
Mounter
Administrador
OS Sr. Member
*****

Karma: 12
Mensagens: 432


mrjostz@hotmail.com
Ver Perfil WWW Email
« Responder #7 : Agosto 05, 2011, 05:22:03 »

Qual o seu assembler? O nasm certo? Então pode ser que falte indicar os seguinte:

Código:
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

╔╗╔╦══╦╗╔╦══╦╗
║╚╝║╔╗║╚╝║╔╗║║
║╔╗║╠╣║╔╗║╠╣╠╣
╚╝╚╩╝╚╩╝╚╩╝╚╩╝

Projeto SOmBRA - http://code.google.com/p/projeto-sombra

S.O.: Ubuntu 10.04
Browser: Google Chrome 10

rafaelgmelo
OS Newbie
*

Karma: 0
Mensagens: 23


Ver Perfil Email
« 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


Ver Perfil Email
« Responder #9 : Agosto 07, 2011, 09:50:01 »

Ninguém?!
Registrado
Mounter
Administrador
OS Sr. Member
*****

Karma: 12
Mensagens: 432


mrjostz@hotmail.com
Ver Perfil WWW Email
« 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

╔╗╔╦══╦╗╔╦══╦╗
║╚╝║╔╗║╚╝║╔╗║║
║╔╗║╠╣║╔╗║╠╣╠╣
╚╝╚╩╝╚╩╝╚╩╝╚╩╝

Projeto SOmBRA - http://code.google.com/p/projeto-sombra

S.O.: Ubuntu 10.04
Browser: Google Chrome 10

rafaelgmelo
OS Newbie
*

Karma: 0
Mensagens: 23


Ver Perfil Email
« 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
Administrador
OS Sr. Member
*****

Karma: 12
Mensagens: 432


mrjostz@hotmail.com
Ver Perfil WWW Email
« 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

╔╗╔╦══╦╗╔╦══╦╗
║╚╝║╔╗║╚╝║╔╗║║
║╔╗║╠╣║╔╗║╠╣╠╣
╚╝╚╩╝╚╩╝╚╩╝╚╩╝

Projeto SOmBRA - http://code.google.com/p/projeto-sombra

S.O.: Ubuntu 10.04
Browser: Google Chrome 10

rafaelgmelo
OS Newbie
*

Karma: 0
Mensagens: 23


Ver Perfil Email
« 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
Administrador
OS Sr. Member
*****

Karma: 12
Mensagens: 432


mrjostz@hotmail.com
Ver Perfil WWW Email
« 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

╔╗╔╦══╦╗╔╦══╦╗
║╚╝║╔╗║╚╝║╔╗║║
║╔╗║╠╣║╔╗║╠╣╠╣
╚╝╚╩╝╚╩╝╚╩╝╚╩╝

Projeto SOmBRA - http://code.google.com/p/projeto-sombra

S.O.: Ubuntu 10.04
Browser: Google Chrome 10

Páginas: [1] 2
  Imprimir  
 
Ir para:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.16 | SMF © 2006-2009, Simple Machines XHTML 1.0 Válido! CSS Válido!