v2.16
Baron-von-Riedesel
released this
14 Nov 08:11
·
56 commits
to master
since this release
14.11.2022, v2.16:
Bugfixes:
- format mz: in the binary map of listings, the RVA of segments belonging
to a group may have been incorrect, since the group's align adjustment
was ignored; see grpalign.asm. - symbol $ is internally marked as assembly-time variable - this caused
fixup problems in OMF format; see fixup6.asm. - invoke directive, 32-bit code, "ADDR": if the address of a symbol
in a 16-bit segment was to be pushed, just a WORD was pushed ( Masm is
buggy, pushes a DWORD, then a WORD ); see invoke41.asm.
In the "reverse" case, that is, if the address of a symbol in a 32-bit
segment was to be pushed as a WORD in a 16-bit code segment, a DWORD
was pushed instead; see invoke43.asm. - invoke directive, 32-bit code, "OFFSET": if the address of a symbol
in a 16-bit segment was to be pushed, just a WORD was pushed ( Masm emits
an error in this case - this is now done as well ); see invoke42.asm.
The "reverse" case ( 16-bit code, address of a symbol in a 32-bit
segment to be pushed ) must also be rejected; see invoke44.asm. - invoke directive, "ADDR", "far ptr" modifier for vararg arguments: the
modifier was ignored, so that no segment part was pushed; see
invoke45.asm & invoke46.asm. - invoke directive, ptr types: invoke might have emitted error "argument
type mismatch" for arguments of type MT_PTR if their distance didn't
match the one from the memory model; see invoke47.asm - invoke52.asm. - externdef directive: if the symbol was already defined but neither
internal nor external, no error was emitted; see extern16.asm. - pointer to data did ignore default distance of memory model; see
dsize.asm. - option -pe: .data and .data? sections weren't merged; see pe11.asm.
- option -pe: if a section with initialized data (.reloc) followed a .data?
section, space for the .data? section was reserved in the binary; see
pe11.asm. - if the difference of 2 labels ( at least one is a forward reference ) is
used as operand for another op ( shift ), error 'constant is expected'
may have occured; see forward9.asm. - option -pe: binary without relocations got too long because the (empty)
.reloc section wasn't removed; see pe12.asm.
Other changes:
- option -pe: allow imports by number; see pe10.asm.
- option -Zg: increased Masm compatible codegen for hll expressions; see
hll4.asm. - warning "Prologue not at PROC start" (level 3) added if the procedure's
prologue isn't generated at the procedure's start address; see
invoke53.asm. - option -pe: default image bases changed to 0x10000000 for PE32 dlls,
0x140000000 for PE64 exes, 0x180000000 for PE64 dlls (MS link compat). - error 2058 ( "magnitude of offset exceeds 16-bit" ) changed to a warning
( level 3 ); see offset15.asm & offset16.asm. - if option -Zg is on, OPATTR is to return language bits for procs/protos
only; see opattr10.asm.