浏览代码

* print an "invalid segment override expression" error message in case a segment
override uses an invalid (non-segment) register in the x86 inline asm reader
(both for intel and att syntax)

git-svn-id: trunk@38391 -

nickysn 7 年之前
父节点
当前提交
df6a870873
共有 2 个文件被更改,包括 4 次插入0 次删除
  1. 2 0
      compiler/x86/rax86att.pas
  2. 2 0
      compiler/x86/rax86int.pas

+ 2 - 0
compiler/x86/rax86att.pas

@@ -745,6 +745,8 @@ Implementation
                Begin
                  Consume(AS_COLON);
                  oper.InitRef;
+                 if not is_segment_reg(tempreg) then
+                   Message(asmr_e_invalid_seg_override);
                  oper.opr.ref.segment:=tempreg;
                  { This must absolutely be followed by a reference }
                  if not MaybeBuildReference then

+ 2 - 0
compiler/x86/rax86int.pas

@@ -860,6 +860,8 @@ Unit Rax86int;
       begin
         if oper.opr.typ<>OPR_REFERENCE then
           internalerror(2018022801);
+        if not is_segment_reg(seg) then
+          Message(asmr_e_invalid_seg_override);
         if oper.opr.ref.segment<>NR_NO then
           begin
             if m_tp7 in current_settings.modeswitches then