Re: [BLFS Trac] #23527: nasm-3.02

BLFS Trac ([email protected] via blfs-book Mailing List) <[email protected]>
Newsgroups gmane.linux.lfs.beyond.book
Message-ID <[email protected]>
#23527: nasm-3.02
-------------------------+--------------------------
 Reporter:  Bruce Dubbs  |       Owner:  Bruce Dubbs
     Type:  enhancement  |      Status:  assigned
 Priority:  normal       |   Milestone:  13.1
Component:  BOOK         |     Version:  git
 Severity:  normal       |  Resolution:
 Keywords:               |
-------------------------+--------------------------
Comment (by Bruce Dubbs):

 Version 3.02

 - Fix build problems on C23 compilers using a pre-C23 version of
   <stdbool.h> which defines bool as a macro in violation of the
   C23 specification.

 - The immediate form of the JMPE instruction (opcode 0F B8)
   has been changed to an absolute address, as in
   the Itanium Architecture Software Developer's Manual, version 2.3,
   Volume 4, page 4:249. Hopefully this won't break whatever virtual
   environments use JMPE, but it is the closest thing there is to
   an official specification for this opcode.
   * Being an absolute address, treat it equivalent to a FAR
     jump and do not default to 64 bits in 64-bit mode.
   * That JMPE has apparently been wrong all these years is probably
     as good of a hint as any how much it has been actually used, but it
     does have the possibility of breaking virtual environments. In
     that case, please file a bug report to
     https://bugs.nasm.us/ with details about the
     virtual environment, and we will figure out a suitable solution.

 Various build fixes.

    Fix the documentation not building on MacOS
    because of the cp utility lacking -u there. Also fix not
    building generally due to wrong link formatting. Another fix was a
    typo in compiler.h related to a C++ check.

 Corrections to assembling encodings:
    - Fix CMP allowing LOCK which is illegal.
    - Correct multiple AVX512 instructions such as VCVTSD2SI,
      VCVTSD2USI, VCVTSS2SI, VCVTSS2USI, VCVTTSD2SI,
      VCVTTSD2USI, VCVTTSS2SI, VCVTTSS2USI, VGETEXPSH,
      VGETMANTSH, MOVDDUP, VMOVDDUP.
    - Fixed other encodings or instruction formats for instructions UWRMSR,
      CMPSD, VCMPSS, V4FMADDSS, V4FNMADDSS, VCVTDQ2PH,
      VCVTPD2PH, VCVTPH2UDQ, VCVTQQ2PH, VCVTUDQ2PH, VCVTUQQ2PH,
      VGETEXPSH, VGETMANTSH, VRCPPH, VRSQRTPH, VCVTPH2BF8,
      VCVTPH2BF8S, VCVTPH2HF8, VCVTPH2HF8S.
    - Fixed typos in VP4DPWSSD mnemonic.
    - Fixed BYTE and WORD operands getting the same encoding on
      arithmetic instructions such as CMP.
    - Fixed PUSH not assembling when used with a DWORD in 64-bit
      mode. This is not a recommended syntax as the operand size is still
      64 bits, but was permitted by earlier versions of NASM.
    - Fix parsing of $-escaped symbols in directives (GLOBAL,
      STATIC, EXTERN, REQUIRED, COMMON).

 Corrections to disassembling:

    - Shift instructions with the unity operand were getting disassembled
 to a zero
      operand instead of one.

    - JMP, CALL and JMPE disassembled incorrectly with the
      register operands.

 Whole bunch of minor fixes to operand sizes, operand size prefixes.
 Changes
 mostly return the behavior known from 2.16.03.

    - MOV [mem], label would be accepted without size specifiers
      which could cause unintended consequences. Raise an error if no
      size was specified and one of the operands is a memory reference
      and another operands is a label.

    - JMP NEAR is now the same as JMP STRICT NEAR as the
      STRICT is redundant here. JMP WORD on the other hand is
      up for optimization as NEAR and WORD relate to different
      things - jump lengths and operation sizes respectively.

    - Using redundant (or not) but valid operands size prefixes was fixed
 on
      instructions such as IRET, PUSHF, POPF, PUSH and POP.

    - Using an operand size prefix on a JMP or CALL instruction
      could generate an invalid instruction. This appears to have been a
      long-standing bug. Specifying the operand size by specifying the
      size of the immediate explicitly (e.g. JMP DWORD label) has
      always worked correctly, however.

 Add support for C2y-style \\o escape sequences, braced escape
 sequences, and as NASM extensions, decimal escape sequences
 (\d) and control-character escape sequences (\^). See
 strings.

 Fix generation of the short opcodes for ADD, OR, ADC,
 SBB, AND, SUB, XOR, and CMP AL,imm8.

 Fix truncation of the generated constant to 63 bits when invoking a
 single-line macro when an argument is defined as =/b or
 =/ub.

 Add an %env() preprocessor function as a more robust and
 flexible alternative to the %! construct. See \k{f_env.

 The maximum number of multi-line macro parameters is now a
 configurable limit. See opt-limit.

 The --limit- options and %pragma limit now accept the
 keywords default, maximum, and reset. See opt-limit.

 Fix parsing of seg:offs-style FAR pointers in EQU.

 Fix the %clear preprocessor directive hanging when given parameters.

 The never properly implemented (or documented) preprocessor
 directives %rmacro and %irmacro are now properly disabled; to
 avoid breaking existing code, they fall back to %macro and
 %imacro with a suitable warning.

   - Programmers should not rely on this behavior: in the future,
     these directives might actually be (properly) implemented.

 Fix a crash when -M directives were used in response files.

 New listing option -Lc to include the contents of INCBIN
 files, see opt-L.

 New listing option -Lt to include the output from every
 iteration of TIMES and ALIGN directives, see opt-L.

 The %pragma list options directive now support resetting
 options to their command-line default, see opt-L.

 New predefined macros __?LIST_OPTIONS?!__ and
 !__?LIST_OPTIONS_DEFAULT?!__ to query the active and command-line
 default listing options. See opt-L.
-- 
Ticket URL: <https://wiki.linuxfromscratch.org/blfs/ticket/23527#comment:2>
BLFS Trac <https://wiki.linuxfromscratch.org/blfs/>
Beyond Linux From Scratch

-- 
http://lists.linuxfromscratch.org/sympa/info/blfs-book
Unsubscribe: See the above information page
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.