- Create a dummy .llvmasm section for bitcode
- Add [buildversion] directive for setting minos and sdk versions, e.g. [buildversion minos="10.14" sdk="10.14"]. This defaults to 10.5 on x64 and 10.4 on x86.
* preproc/nasm: Close the input file; addressed a few memory leaks.
* yasm.c: delete include paths before we exit
* cv-dbgfmt.c: Free cv_filename::filename too.
MONITORX has opcode "0F 01 FA".
rAX contains address to be monitored
ECX specifies optional extensions
EDX specifies optional hints
MWAITX has opcode "0F 01 FA".
EAX specifies optional hints
ECX specifies optional extensions
Public documentation: http://support.amd.com/TechDocs/24594.pdf
New CLZERO instruction support (for 32bit/64bit)
* clzero has opcode "0F 01 FC".
* clzero gets enabled with CPUID, 8000_0008, EBX[0] =1.
* clzero instruction zero's out the 64 byte cache line specified in rAX. Bits 5:0 of rAX are ignored
Copyright (c) 2016 Advanced Micro Devices, Inc. All rights reserved.
Redistributed under simplified 2-clause BSD licence
It appears that GNU binutils always interpret PE/COFF object files as if
they were executable files, namely that the paddr field is a rounded-up
section size (aka virtual size). Yasm previously followed the Microsoft
specification which stated that for object files this field should be set
to the "physical address" of the section (e.g. the sum of all previous
section sizes). However, several other sources state this field should be
set to 0 in object files, and it appears that Microsoft tools accept this.
For compatibility with the GNU tools, this commit makes Yasm always set the
paddr/vsize field to 0.
This commit also eliminates the COFF_SET_VMA customization for COFF
files. Previously this was used to set LMA=VMA in COFF, but LMA=0 in PE.
Now that VMA is always 0, this is no longer required (LMA=VMA=0 in both
PE and COFF).
This can be used on global directives (e.g. global _foo:function) to
indicate the global is a function. This is useful for incremental
linking in MSVC.
Changed segment:offset calculations so that vstart = 16*segment +
offset and vseg = segment instead of vstart = offset. Without this the
existing code to infer vstart addresses is not useful.
XAXQUIRE
XRELEASE
XABORT
XBEGIN
XEND
XTEST
Also fixed a bug for CALL instruction (opcode 0xE8) - it allowed 16 bit operand with 0x66 prefix in 64 bit mode,
while 16 bit operand is not allowed at all in 64 bit mode.
Added X86_ACQREL prefix group for XACQUIRE/XRELEASE prefixes, since they need to be orthogonal to LOCKREP
prefixes, because TSX prefixes must come together with F0 (LOCK) prefix.
However this commit does not enforce using TSX hints only with instructions they are allowed to be used.
The reason for this is that lock prefix F0 itself is not enforced to be used only with lockable instructions, this seems to be a decision made by
Yasm developers, that user himself must take care of these situations.
Right now TSX hints can come with F0 prefix, can come with REPNE/REPZE prefixes, but they are used together in assembly, only the leftmost would be
encoded to the binary and warning will be issued. This is the behavior of Yasm for duplicate LOCKREP prefixes.
Due to the svn import structure, a special case is currently implemented
to look for the 1.1.0 branchpoint instead of the most recent tag on the
master branch. This will be removed after the first release is tagged
on the master branch in git.
Specific details:
autogen.sh: More aggressively clean autoconf cache.
This is needed to ensure the version number is actually regenerated.
Don't generate PACKAGE_PATCHLEVEL or PACKAGE_BUILD variables. The
genversion program now parses PACKAGE_VERSION directly.
For Mkfiles builds, YASM-VERSION.h is generated and included by the custom
config.h. This avoids the need to edit config.h for versioning.