are you on current?

2012/11/29 Francis Dos Santos <[email protected]>:
> ARCH: amd64
>
> I'm trying to learn some asm, but can't get an executable running. To
> start off I'm trying my hand on a hello world program
> http://www.int80h.org/bsdasm/ section 4.5 and chapter 5 with slight
> adaptations.
> Issuing the following commands results in:
>
> $ yasm -f elf64 hello.s
> $ ld -s -o hello hello.o
> ld: hello.o: relocation R_X86_64_32 can not be used when making a shared
> object; recompile with -fPIC
> hello.o: could not read symbols: Bad value
> $ readelf -r hello.o
>
> Relocation section '.rela.text' at offset 0x64 contains 1 entries:
>   Offset          Info           Type           Sym. Value    Sym. Name
>   + Addend
> 000000000006  00030000000a R_X86_64_32       0000000000000000 .data + 0
> $ ld -nopie -static -s -o hello hello.o
> $ hello
> hello: Exec format error. Binary file not executable.
> $ file hello
> hello: ELF 64-bit LSB executable, x86-64, version 1, statically linked,
> stripped
>
> This article
> http://www.tortall.net/projects/yasm/manual/html/objfmt-elf64.html
> mentions something about PIC, but I just can't understand what it's
> saying. I can't even figure out the syntax of wrt. All I found was a 16
> bit nasm example dealing with segment registers.
>
> If someone can give me a nudge in the right direction, it would be
> highly appreciated.
>
> CODE: (copied from include files)
> %define stdin   0
> %define stdout  1
> %define stderr  2
>
> ; syscall: "exit" ret: "void" args: "int"
> %define SYS_exit        1
> ; syscall: "write" ret: "ssize_t" args: "int" "const void *" "size_t"
> %define SYS_write       4
>
> %macro  sys.exit                0
>         system  SYS_exit
> %endmacro
> %macro  sys.write               0
>         system  SYS_write
> %endmacro
>
> section .text
> align 4
> access.bsd.kernel:
>                 int 80h
>                 ret
>
> %macro  system  1
>                 mov             rax,%1
>                 call    access.bsd.kernel
> %endmacro
>
> CODE: (hello.s)
> section .data
> hello   db      "Greetings y'all!",0ah
> hbytes  equ     $-hello
>
> section .text
> global  _start
> _start:
>                 push    dword   hbytes
>                 push    dword   hello
>                 push    dword   stdout
>                 sys.write
>
>                 push    dword   0
>                 sys.exit
>
> --
> http://www.fastmail.fm - A no graphics, no pop-ups email service
>
> _______________________________________________
> Openbsd-newbies mailing list
> [email protected]
> http://mailman.theapt.org/listinfo/openbsd-newbies
_______________________________________________
Openbsd-newbies mailing list
[email protected]
http://mailman.theapt.org/listinfo/openbsd-newbies

Reply via email to