This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Supposed-to-be indirect branches didn't come out as such in a few cases in Intel Syntax. Built and tested on i686-pc-linux-gnu and x86_64-unknown-linux-gnu. Jan gas/ 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. --- /home/jbeulich/src/binutils/mainline/2005-08-23/gas/config/tc-i386.c 2005-08-22 14:30:46.000000000 +0200 +++ 2005-08-23/gas/config/tc-i386.c 2005-08-23 16:13:12.000000000 +0200 @@ -6159,7 +6192,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 +6244,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 +6333,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 +6440,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 $ --- /home/jbeulich/src/binutils/mainline/2005-08-23/gas/testsuite/gas/i386/intel.s 2004-07-22 11:48:34.000000000 +0200 +++ 2005-08-23/gas/testsuite/gas/i386/intel.s 2005-08-24 08:57:12.000000000 +0200 @@ -520,7 +520,7 @@ foo: rcl word ptr 0x90909090[eax], cl in ax, 0x90 out 0x90, ax - call word ptr .+3+0x9090 + callw .+3+0x9090 jmpw 0x9090,0x9090 in ax, dx out dx, ax --- /home/jbeulich/src/binutils/mainline/2005-08-23/gas/testsuite/gas/i386/intelok.d 2005-05-24 10:55:14.000000000 +0200 +++ 2005-08-23/gas/testsuite/gas/i386/intelok.d 2005-08-24 08:57:12.000000000 +0200 @@ -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 --- /home/jbeulich/src/binutils/mainline/2005-08-23/gas/testsuite/gas/i386/intelok.s 2005-03-14 11:22:05.000000000 +0100 +++ 2005-08-23/gas/testsuite/gas/i386/intelok.s 2005-08-24 08:57:12.000000000 +0200 @@ -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
Attachment:
binutils-mainline-x86-intel-jump-abs.patch
Description: Binary data
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |