lkml.org 
[lkml]   [2005]   [Mar]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: Strange Linking Problem
    On Sat, 12 Mar 2005, Matthias-Christian Ott wrote:

    > Hi!
    > I hope I'm right here. I've the following assembler code:
    >
    > SECTION .DATA
    > hello: db 'Hello world!',10
    > helloLen: equ $-hello
    >
    > SECTION .TEXT
    > GLOBAL main
    >
    > main:
    >
    >
    >
    > ; Write 'Hello world!' to the screen
    > mov eax,4 ; 'write' system call
    > mov ebx,1 ; file descriptor 1 = screen
    > mov ecx,hello ; string to write
    > mov edx,helloLen ; length of string to write
    > int 80h ; call the kernel
    >
    > ; Terminate program
    > mov eax,1 ; 'exit' system call
    > mov ebx,0 ; exit with error code 0
    > int 80h ; call the kernel
    >
    >
    > Then I run:
    >
    > nasm -f elf hello.asm
    >
    >
    > I link it with ld and run it:
    >
    > ld -s -o hello hello.o
    > ./hello
    > segmentation fault
    >
    >
    > I link it with the gcc and run it:
    >
    > gcc hello.o -o hello
    > ./hello
    > Hello world!
    >
    >
    > What's wrong with the ld?
    >

    Nothing at all. Where is _start: ?

    Remove the 'main' label and substitute _start:

    It is 'C' convention that programs start with main(). They
    really don't. With the Linux API, they start at _start: and
    do some housekeeping before calling main. That's what the
    crt.o file that the 'C' tool-chain uses, does.


    Cheers,
    Dick Johnson
    Penguin : Linux version 2.6.11 on an i686 machine (5537.79 BogoMips).
    Notice : All mail here is now cached for review by Dictator Bush.
    98.36% of all statistics are fiction.
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-03-22 14:11    [W:0.024 / U:147.972 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site