Hi I have the following assembly snipset (from get_common_indeces in glibc compiled with gcc 6.3 -march=bdver4)
0x00000040008179b3 <+19>: 89 15 8b c3 20 00 mov %edx,0x20c38b(%rip) # 0x4000a23d44 <_rtld_local_ro+132> 0x00000040008179b9 <+25>: 89 1d 7d c3 20 00 mov %ebx,0x20c37d(%rip) # 0x4000a23d3c <_rtld_local_ro+124> 0x00000040008179bf <+31>: 8f ea 78 10 d0 08 04 00 00 bextr $0x408,%eax,%edx 0x00000040008179c8 <+40>: 89 0d 72 c3 20 00 mov %ecx,0x20c372(%rip) # 0x4000a23d40 <_rtld_local_ro+128> 0x00000040008179ce <+46>: 89 05 64 c3 20 00 mov %eax,0x20c364(%rip) # 0x4000a23d38 <_rtld_local_ro+120> When I run the application using qemu-x86-64, the instruction bextr is not understood by the emulator and results in a SIGSEGV, because it runs: 0x00000040008179b9: mov %ebx,0x20c37d(%rip) # 0x4000a23d3c 0x00000040008179bf: (bad) 0x00000040008179c0: (bad) 0x00000040008179c1: js 0x40008179d3 0x00000040008179c3: rorb (%rax) It seems that, bextr is not supported by the emulator/cpu, althoug I have launched the emualtor with -cpu Haswell, that should support bmi1 (https://en.wikipedia.org/wiki/Bit_Manipulation_Instruction_Sets#BMI1) What am I doing wrong? Thanks! cc: Richard Henderson and Blue Swril, that Implemented BEXTR -- Ricardo Ribalda