[Nasm-bugs] [Bug 3392408] New: Self-relative expressions on macho64
no-reply at bugzilla-nasm.gorcunov.org
no-reply at bugzilla-nasm.gorcunov.org
Tue May 23 10:01:56 PDT 2017
https://bugzilla.nasm.us/show_bug.cgi?id=3392408
Bug ID: 3392408
Summary: Self-relative expressions on macho64
Product: NASM
Version: 2.13.xx
Hardware: All
OS: Mac OS
Status: OPEN
Severity: severe
Priority: Medium
Component: Assembler
Assignee: nobody at nasm.us
Reporter: henrik at gramner.com
CC: gorcunov at gmail.com, hpa at zytor.com, nasm-bugs at nasm.us
Obtained from: Built from git using configure
Self-relative expressions in the form of [foo-$$] appears to be working
incorrectly on 64-bit Mach-O systems.
I compared the output of the following snippet to yasm as a quick test. 'foo'
which is declared in the same file produces different output, 'bar' which is
extern seems to be handled the same as yasm.
section .rodata
foo: dd 0x12345678
extern bar
section .text
lea eax, [rax+foo-$$]
lea ebx, [rax+bar-$$]
mov ecx, foo-$$
mov edx, bar-$$
We use similar expressions in x264 and it works fine on elf64 and win64 systems
but not on macho64.
I don't have an OSX machine so I'm unable to test things myself, but checking
out commit f1ac712 from https://git.videolan.org/git/x264.git and running
"./configure && make checkasm && ./checkasm" results in errors and/or crashes
on macho64 systems. When we disabled all functions using those expressions on
macho64 as a temporary workaround in a more recent commit the problem
disappeared.
We don't use such expressions on 32-bit platforms so I don't know if macho32 is
affected.
The same code worked correctly on macho64 when using yasm before we switched to
nasm.
--
You are receiving this mail because:
You are on the CC list for the bug.
You are watching all bug changes.
More information about the Nasm-bugs
mailing list