gas/
authorJan Beulich <jbeulich@novell.com>
Fri, 26 Aug 2005 15:51:15 +0000 (15:51 +0000)
committerJan Beulich <jbeulich@novell.com>
Fri, 26 Aug 2005 15:51:15 +0000 (15:51 +0000)
2005-08-26  Jan Beulich  <jbeulich@novell.com>

* config/tc-i386.c (intel_e09): Set JumpAbsolute when seeing a PTR-
qualified operand of a branch.
(intel_bracket_expr): Set JumpAbsolute here...
(intel_e11): ... rather than here.

gas/testsuite/
2005-08-26  Jan Beulich  <jbeulich@novell.com>

* gas/i386/intel.s: Adjust.
* gas/i386/intelok.s: Add two more insns.
* gas/i386/intelok.d: Adjust.

gas/ChangeLog
gas/config/tc-i386.c
gas/testsuite/ChangeLog
gas/testsuite/gas/i386/intel.s
gas/testsuite/gas/i386/intelok.d
gas/testsuite/gas/i386/intelok.s

index 255a7b35334c2f8c8ab6337b6170067dad4f596a..41ae66c7045208391e7b872d45ce1f7e6157be0c 100644 (file)
@@ -1,3 +1,10 @@
+2005-08-26  Jan Beulich  <jbeulich@novell.com>
+
+       * config/tc-i386.c (intel_e09): Set JumpAbsolute when seeing a PTR-
+       qualified operand of a branch.
+       (intel_bracket_expr): Set JumpAbsolute here...
+       (intel_e11): ... rather than here.
+
 2005-08-26  Christian Groessler  <chris@groessler.org>
 
        * configure.tgt: Set bfd_gas also for z8k cpu.
index acba3e1f152f8c0c6f4814530515fae43db56f7c..6542e5487f61063b4166f311fb7d890071958db3 100644 (file)
@@ -6159,7 +6159,7 @@ intel_e09 ()
                suffix = WORD_MNEM_SUFFIX;
              else if (flag_code == CODE_16BIT
                       && (current_templates->start->opcode_modifier
-                          & (Jump|JumpDword|JumpInterSegment)))
+                          & (Jump | JumpDword)))
                suffix = LONG_DOUBLE_MNEM_SUFFIX;
              else if (intel_parser.got_a_float == 1)   /* "f..." */
                suffix = SHORT_MNEM_SUFFIX;
@@ -6211,6 +6211,11 @@ intel_e09 ()
              return 0;
            }
 
+         /* Operands for jump/call using 'ptr' notation denote absolute
+            addresses.  */
+         if (current_templates->start->opcode_modifier & (Jump | JumpDword))
+           i.types[this_operand] |= JumpAbsolute;
+
          if (current_templates->start->base_opcode == 0x8d /* lea */)
            ;
          else if (!i.suffix)
@@ -6295,6 +6300,11 @@ intel_bracket_expr ()
   if (!intel_parser.in_offset)
     {
       ++intel_parser.in_bracket;
+
+      /* Operands for jump/call inside brackets denote absolute addresses.  */
+      if (current_templates->start->opcode_modifier & (Jump | JumpDword))
+       i.types[this_operand] |= JumpAbsolute;
+
       /* Unfortunately gas always diverged from MASM in a respect that can't
         be easily fixed without risking to break code sequences likely to be
         encountered (the testsuite even check for this): MASM doesn't consider
@@ -6397,13 +6407,6 @@ intel_e11 ()
 
     /* e11  [ expr ] */
     case '[':
-      /* Operands for jump/call inside brackets denote absolute addresses.
-        XXX This shouldn't be needed anymore (or if it should rather live
-        in intel_bracket_expr).  */
-      if (current_templates->start->opcode_modifier
-         & (Jump|JumpDword|JumpByte|JumpInterSegment))
-       i.types[this_operand] |= JumpAbsolute;
-
       return intel_bracket_expr ();
 
     /* e11  $
index 3d0ffb2c435d08f71a66c78f3f0443bd960657f8..2bddc360f5ffce533e4fc1ce2de9ec2fd29e907d 100644 (file)
@@ -1,3 +1,9 @@
+2005-08-26  Jan Beulich  <jbeulich@novell.com>
+
+       * gas/i386/intel.s: Adjust.
+       * gas/i386/intelok.s: Add two more insns.
+       * gas/i386/intelok.d: Adjust.
+
 2005-08-26  Jan Beulich  <jbeulich@novell.com>
 
        * gas/i386/intelok.d: Adjust.
index b713369266fa55ef388c844b20a17bd711633f8c..a262cacb6d5ca8b62d438bdcb8f6cdb22f25fb80 100644 (file)
@@ -520,7 +520,7 @@ foo:
  rcl    word ptr 0x90909090[eax], cl
  in     ax, 0x90
  out    0x90, ax
- call   word ptr .+3+0x9090
+ call .+3+0x9090
  jmpw   0x9090,0x9090
  in     ax, dx
  out    dx, ax
index 21c2bfac44c3412caeec87ee95b9e6337688276b..af71b8988e1ae99672e0f3069950797210a2b35a 100644 (file)
@@ -171,4 +171,6 @@ Disassembly of section .text:
 [      ]*[0-9a-f]+:    a1 08 00 00 00[         ]+mov[  ]+eax,ds:0x8
 [      ]*[0-9a-f]+:    9a 05 00 00 00 03 00[   ]+l?call[       ]+0x3[,:]0x5
 [      ]*[0-9a-f]+:    ea 03 00 00 00 05 00[   ]+l?jmp[        ]+0x5[,:]0x3
+[      ]*[0-9a-f]+:    ff 15 00 00 00 00[      ]+call[         ]+(DWORD PTR )?(ds:)?0x0
+[      ]*[0-9a-f]+:    66 ff 25 00 00 00 00[   ]+jmp[  ]+(WORD PTR )?(ds:)?0x0
 #pass
index a35b38ca39a29b5ffab8f0477ed624b37ca37368..c46a17874856481cdb4774153fa2832b050cc9b5 100644 (file)
@@ -187,6 +187,8 @@ start:
        # other operands
        call    3:5
        jmp     5:3
+       call    dword ptr xtrn
+       jmp     word ptr xtrn
 
        # Force a good alignment.
        .p2align        4,0