From: Jan Bobek <jan.bobek@gmail.com> To: qemu-devel@nongnu.org Cc: "Jan Bobek" <jan.bobek@gmail.com>, "Richard Henderson" <richard.henderson@linaro.org>, "Alex Bennée" <alex.bennee@linaro.org>, "Peter Maydell" <peter.maydell@linaro.org>, "Stefan Hajnoczi" <stefanha@redhat.com> Subject: [Qemu-devel] [RISU PATCH 0/5] Fix RISU build for i386 Date: Mon, 8 Apr 2019 14:27:43 -0400 [thread overview] Message-ID: <20190408182748.1238-1-jan.bobek@gmail.com> (raw) Hi all, here's a patch series that tries to fix the (currently broken) build of RISU for i386. With the patches applied, I am able to successfully cross-compile and run RISU for i386 on my x86_64 laptop running Debian 10 with: $ CC='cc -m32 -std=c99' LD='ld -m32' AS='nasm -f elf32' ARCH=i386 ./configure $ make $ ./risu --master --trace test_i386.trace test_i386.bin $ ./risu --trace test_i386.trace test_i386.bin There's a couple of points that I'd like to mention/highlight: 1. Most of it is just moving stuff around, however I've implemented reginfo_dump_mismatch (based on reginfo_dump and code in other architectures) and defined EAX as the param register. There is no support for more registers yet, that will need to be added later. 2. Note the '-std=c99' switch in the command-line above; without it, GCC defines the symbol 'i386' to 1 and the preprocessor magic for including arch-specific headers in risu.h breaks. Does anyone have an idea how to fix this in a more robust way? 3. gas (the GNU assembler) chokes on the syntax of test_i386.s; that's why I'm using nasm as the assembler above. Is that intentional? I haven't found the nasm dependency mentioned anywhere. Also, nasm will happily emit the UD1 opcode (0F B9) with no operands (see test_i386.s). That's a bit surprising to me, since Intel's Software Developer's Manual says UD1 has two operands; I'd expect at least a follow-up ModR/M byte. gas refuses to assemble UD1 with no operands, and gdb's disassembler gets confused when I load up the nasm's binary into risu. Is there something obvious that I'm missing? Thanks, -Jan Bobek P.S. This is my first time using git send-email, so please bear with me if something goes wrong and/or let me know how I can improve my future submissions. Thank you! Jan Bobek (5): risu_i386: move reginfo_t and related defines to risu_reginfo_i386.h risu_i386: move reginfo-related code to risu_reginfo_i386.c risu_reginfo_i386: implement arch-specific reginfo interface risu_i386: implement missing CPU-specific functions risu_i386: remove old unused code risu_i386.c | 140 ++++++-------------------------------------- risu_reginfo_i386.c | 104 ++++++++++++++++++++++++++++++++ risu_reginfo_i386.h | 38 ++++++++++++ 3 files changed, 160 insertions(+), 122 deletions(-) create mode 100644 risu_reginfo_i386.c create mode 100644 risu_reginfo_i386.h -- 2.20.1
WARNING: multiple messages have this Message-ID (diff)
From: Jan Bobek <jan.bobek@gmail.com> To: qemu-devel@nongnu.org Cc: "Alex Bennée" <alex.bennee@linaro.org>, "Richard Henderson" <richard.henderson@linaro.org>, "Jan Bobek" <jan.bobek@gmail.com>, "Stefan Hajnoczi" <stefanha@redhat.com>, "Peter Maydell" <peter.maydell@linaro.org> Subject: [Qemu-devel] [RISU PATCH 0/5] Fix RISU build for i386 Date: Mon, 8 Apr 2019 14:27:43 -0400 [thread overview] Message-ID: <20190408182748.1238-1-jan.bobek@gmail.com> (raw) Message-ID: <20190408182743.9a0nKFsZlH2XTAujd11kXL-IkH2aq8SluaoW7kEzOx4@z> (raw) Hi all, here's a patch series that tries to fix the (currently broken) build of RISU for i386. With the patches applied, I am able to successfully cross-compile and run RISU for i386 on my x86_64 laptop running Debian 10 with: $ CC='cc -m32 -std=c99' LD='ld -m32' AS='nasm -f elf32' ARCH=i386 ./configure $ make $ ./risu --master --trace test_i386.trace test_i386.bin $ ./risu --trace test_i386.trace test_i386.bin There's a couple of points that I'd like to mention/highlight: 1. Most of it is just moving stuff around, however I've implemented reginfo_dump_mismatch (based on reginfo_dump and code in other architectures) and defined EAX as the param register. There is no support for more registers yet, that will need to be added later. 2. Note the '-std=c99' switch in the command-line above; without it, GCC defines the symbol 'i386' to 1 and the preprocessor magic for including arch-specific headers in risu.h breaks. Does anyone have an idea how to fix this in a more robust way? 3. gas (the GNU assembler) chokes on the syntax of test_i386.s; that's why I'm using nasm as the assembler above. Is that intentional? I haven't found the nasm dependency mentioned anywhere. Also, nasm will happily emit the UD1 opcode (0F B9) with no operands (see test_i386.s). That's a bit surprising to me, since Intel's Software Developer's Manual says UD1 has two operands; I'd expect at least a follow-up ModR/M byte. gas refuses to assemble UD1 with no operands, and gdb's disassembler gets confused when I load up the nasm's binary into risu. Is there something obvious that I'm missing? Thanks, -Jan Bobek P.S. This is my first time using git send-email, so please bear with me if something goes wrong and/or let me know how I can improve my future submissions. Thank you! Jan Bobek (5): risu_i386: move reginfo_t and related defines to risu_reginfo_i386.h risu_i386: move reginfo-related code to risu_reginfo_i386.c risu_reginfo_i386: implement arch-specific reginfo interface risu_i386: implement missing CPU-specific functions risu_i386: remove old unused code risu_i386.c | 140 ++++++-------------------------------------- risu_reginfo_i386.c | 104 ++++++++++++++++++++++++++++++++ risu_reginfo_i386.h | 38 ++++++++++++ 3 files changed, 160 insertions(+), 122 deletions(-) create mode 100644 risu_reginfo_i386.c create mode 100644 risu_reginfo_i386.h -- 2.20.1
next reply other threads:[~2019-04-08 18:28 UTC|newest] Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-04-08 18:27 Jan Bobek [this message] 2019-04-08 18:27 ` [Qemu-devel] [RISU PATCH 0/5] Fix RISU build for i386 Jan Bobek 2019-04-08 18:27 ` [Qemu-devel] [RISU PATCH 1/5] risu_i386: move reginfo_t and related defines to risu_reginfo_i386.h Jan Bobek 2019-04-08 18:27 ` Jan Bobek 2019-04-25 13:39 ` Alex Bennée 2019-04-25 13:39 ` Alex Bennée 2019-04-08 18:27 ` [Qemu-devel] [RISU PATCH 2/5] risu_i386: move reginfo-related code to risu_reginfo_i386.c Jan Bobek 2019-04-08 18:27 ` Jan Bobek 2019-04-25 13:39 ` Alex Bennée 2019-04-25 13:39 ` Alex Bennée 2019-04-08 18:27 ` [Qemu-devel] [RISU PATCH 3/5] risu_reginfo_i386: implement arch-specific reginfo interface Jan Bobek 2019-04-08 18:27 ` Jan Bobek 2019-04-25 13:42 ` Alex Bennée 2019-04-25 13:42 ` Alex Bennée 2019-04-08 18:27 ` [Qemu-devel] [RISU PATCH 4/5] risu_i386: implement missing CPU-specific functions Jan Bobek 2019-04-08 18:27 ` Jan Bobek 2019-04-08 18:27 ` [Qemu-devel] [RISU PATCH 5/5] risu_i386: remove old unused code Jan Bobek 2019-04-08 18:27 ` Jan Bobek 2019-04-25 13:43 ` Alex Bennée 2019-04-25 13:43 ` Alex Bennée 2019-04-08 22:18 ` [Qemu-devel] [RISU PATCH 0/5] Fix RISU build for i386 Richard Henderson 2019-04-08 22:18 ` Richard Henderson 2019-04-12 1:43 ` Jan Bobek 2019-04-12 1:43 ` Jan Bobek 2019-04-25 13:45 ` Alex Bennée 2019-04-25 13:45 ` Alex Bennée 2019-05-15 14:32 ` Jan Bobek
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20190408182748.1238-1-jan.bobek@gmail.com \ --to=jan.bobek@gmail.com \ --cc=alex.bennee@linaro.org \ --cc=peter.maydell@linaro.org \ --cc=qemu-devel@nongnu.org \ --cc=richard.henderson@linaro.org \ --cc=stefanha@redhat.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).