[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug binutils/16893] New: libopcodes decodes some x86 prefixes incorrect
From: |
rsc at swtch dot com |
Subject: |
[Bug binutils/16893] New: libopcodes decodes some x86 prefixes incorrectly |
Date: |
Thu, 01 May 2014 19:35:57 +0000 |
https://sourceware.org/bugzilla/show_bug.cgi?id=16893
Bug ID: 16893
Summary: libopcodes decodes some x86 prefixes incorrectly
Product: binutils
Version: 2.24
Status: NEW
Severity: normal
Priority: P2
Component: binutils
Assignee: unassigned at sourceware dot org
Reporter: rsc at swtch dot com
Created attachment 7574
--> https://sourceware.org/bugzilla/attachment.cgi?id=7574&action=edit
32-bit x86 elf executable containing test sequences
[Related to PR binutils/16891 but not the same.]
The attached test.elf contains a torture test every 32 bytes. libopcodes gets
the wrong answer for all of them. (I removed the ones it gets correct.)
g% x86_64-linux-elf-objdump -d -z test.elf | grep '[89][0-9a-f][02468ace]0:' |
sed 's/.*://' | sort | uniq -c
2 66 addr16
2 66 ds
1 66 lock
5 66 ss
20 f2 addr16
22 f2 data16
8 f2 ds
10 f2 lock
3 f2 ss
27 f3 addr16
22 f3 data16
6 f3 ds
25 f3 lock
16 f3 repnz
4 f3 ss
g%
(66 is data16, f2 is repnz, f3 is repz).
Here are the first few. I am attaching the full objdump output as objdump.out.
8000: f2 data16
8001: 66 0f 11 22 movupd %xmm4,(%edx)
8005: 33 44 55 66 xor 0x66(%ebp,%edx,2),%eax
8009: 77 88 ja 0x7f93
800b: 5f pop %edi
8020: f2 data16
8021: 66 90 xchg %ax,%ax
8023: 11 22 adc %esp,(%edx)
8025: 33 44 55 66 xor 0x66(%ebp,%edx,2),%eax
8029: 77 88 ja 0x7fb3
802b: 5f pop %edi
8040: f2 addr16
8041: 67 66 0f 11 22 movupd %xmm4,(%bp,%si)
8046: 33 44 55 66 xor 0x66(%ebp,%edx,2),%eax
804a: 77 88 ja 0x7fd4
804c: 5f pop %edi
--
You are receiving this mail because:
You are on the CC list for the bug.
- [Bug binutils/16893] New: libopcodes decodes some x86 prefixes incorrectly,
rsc at swtch dot com <=