svn commit: r1634 - in trunk/yasm: libyasm modules/arch/x86 modules/objfmts/bin/tests modules/objfmts/elf modules/objfmts/elf/tests

peter at tortall.net peter at tortall.net
Fri Sep 29 00:18:48 PDT 2006


Author: peter
Date: Fri Sep 29 00:18:45 2006
New Revision: 1634

Added:
   trunk/yasm/modules/objfmts/bin/tests/bin-farabs.asm
   trunk/yasm/modules/objfmts/bin/tests/bin-farabs.hex
   trunk/yasm/modules/objfmts/elf/tests/elfequabs.asm
   trunk/yasm/modules/objfmts/elf/tests/elfequabs.hex
Modified:
   trunk/yasm/libyasm/expr-int.h
   trunk/yasm/libyasm/expr.c
   trunk/yasm/libyasm/expr.h
   trunk/yasm/libyasm/symrec.c
   trunk/yasm/libyasm/symrec.h
   trunk/yasm/libyasm/value.c
   trunk/yasm/libyasm/value.h
   trunk/yasm/modules/arch/x86/x86arch.h
   trunk/yasm/modules/arch/x86/x86bc.c
   trunk/yasm/modules/arch/x86/x86expr.c
   trunk/yasm/modules/arch/x86/x86id.c
   trunk/yasm/modules/objfmts/bin/bin-objfmt.c
   trunk/yasm/modules/objfmts/bin/tests/Makefile.inc
   trunk/yasm/modules/objfmts/elf/elf-objfmt.c
   trunk/yasm/modules/objfmts/elf/elf.c
   trunk/yasm/modules/objfmts/elf/tests/Makefile.inc
   trunk/yasm/modules/objfmts/elf/tests/elfabssect.asm
   trunk/yasm/modules/objfmts/elf/tests/elfabssect.hex
   trunk/yasm/modules/objfmts/elf/tests/elfmanysym.hex
Changeset:
   http://www.tortall.net/projects/yasm/changeset/1634

Log:
- Fix much brokenness in absolute value handling, particularly in regards to
  PC-relative relocations (jumps and calls).
- Allow SEG:OFF to be used as just an offset portion (like NASM does).
- Labels in absolute sections that are declared global are given the correct
  absolute value in the symbol table.

One difference from NASM:
  label equ 0040h:001eh
  jmp label
in NASM means the same as:
  jmp 001eh  (a near jump)
but yasm will treat this the same as:
  jmp 0040h:001eh  (a far jump)

I'm still not completely happy with this implementation, but it's workable
and fixes all the bugs I've found so far in absolute handling.



More information about the yasm-cvs mailing list