bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug gas/13046] New: Calling equ'd symbols


From: wayo.cavazos at gmail dot com
Subject: [Bug gas/13046] New: Calling equ'd symbols
Date: Sat, 30 Jul 2011 18:23:43 +0000

http://sourceware.org/bugzilla/show_bug.cgi?id=13046

           Summary: Calling equ'd symbols
           Product: binutils
           Version: 2.21
            Status: NEW
          Severity: normal
          Priority: P2
         Component: gas
        AssignedTo: address@hidden
        ReportedBy: address@hidden


Here's a small NASM program:

            [BITS 64]
            [ORG 0x0000000000200000]

            b_print_newline equ 0x0000000000100040

    start:
            call b_print_newline

            ret

Assemble it:

    $ nasm -f bin pr-nl-a.asm -o pr-nl-a.app

Disassemble it:

    $ objdump -D -b binary -m i386:x86-64 pr-nl-a.app 
    pr-nl-a.app:     file format binary


    Disassembly of section .data:

    0000000000000000 <.data>:
       0:       e8 3b 00 f0 ff          callq  0xfffffffffff00040
       5:       c3                      retq


Here's a GAS version:

            .set b_print_newline , 0x0000000000100040

            .text

            .global _start

    _start:

            call b_print_newline

            ret

Assemble and link it:

    $ as -o pr-nl-b.o pr-nl-b.s
    $ ld -Ttext 200000 --oformat binary -o pr-nl-b.app pr-nl-b.o

Disassemble it:

    $ objdump -D -b binary -m i386:x86-64 pr-nl-b.app 
    pr-nl-b.app:     file format binary


    Disassembly of section .data:

    0000000000000000 <.data>:
       0:       ff 14 25 40 00 10 00    callq  *0x100040
       7:       c3                      retq

As you can see, the disassembled code differs slightly. The code for
`call` in NASM:

    0:  e8 3b 00 f0 ff          callq  0xfffffffffff00040

vs GAS:

    0:  ff 14 25 40 00 10 00    callq  *0x100040


Also, here's the program in FASM:

            b_print_newline equ 0x0000000000100040

            use64
            org 0x0000000000200000

    start:  call b_print_newline
            ret

It does the right thing:

    $ objdump -D -b binary -m i386:x86-64 pr-nl-c.app 

    pr-nl-c.app:     file format binary


    Disassembly of section .data:

    0000000000000000 <.data>:
       0:       e8 3b 00 f0 ff          callq  0xfffffffffff00040
       5:       c3                      retq

I brought this issue up on the binutils list. It was suggested that I open a
bug for this:

http://sourceware.org/ml/binutils/2011-07/msg00277.html

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]