Hi!

Sorry, i apply additional information to previous bug report. Bug is the
same.

I took "Hello World!" assembler example from here:
http://cs.lmu.edu/~ray/notes/gasexamples/

I try to assemble it, but i receive error.

"gcc -c hello.s" works successful. "ld hello.o" gives error:

ld: hello.o: relocation R_X86_64_32S against `a local symbol' can not be
used when making a shared object; recompile with -fPIC
hello.o: could not read symbols: Bad value

I attached "hello.s" file to e-mail. OpenBSD version: 6.3 amd64.
"gcc -c -fPIC hello.s" does not help. "dmesg.boot"'s are attached.
# 
----------------------------------------------------------------------------------------
# Writes "Hello, World" to the console using only system calls. Runs on 64-bit 
Linux only.
# To assemble and run:
#
#     gcc -c hello.s && ld hello.o && ./a.out
#
# or
#
#     gcc -nostdlib hello.s && ./a.out  
# 
----------------------------------------------------------------------------------------

        .global _start1

.section .text

_start1:
        # write(1, message, 13)
        mov     $1, %rax                # system call 1 is write
        mov     $1, %rdi                # file handle 1 is stdout
        mov     $message, %rsi          # address of string to output
        mov     $13, %rdx               # number of bytes
        syscall                         # invoke operating system to do the 
write

        # exit(0)
        mov     $60, %rax               # system call 60 is exit
        xor     %rdi, %rdi              # we want return code 0
        syscall                         # invoke operating system to exit
message:
        .ascii  "Hello, world\n"

Attachment: dmesg.boot
Description: Binary data

Attachment: dmesg
Description: Binary data

Reply via email to