[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: [PATCH v7 34/35] Hexagon build infrastructure
From: |
Taylor Simpson |
Subject: |
RE: [PATCH v7 34/35] Hexagon build infrastructure |
Date: |
Wed, 27 Jan 2021 19:16:57 +0000 |
> -----Original Message-----
> From: Philippe Mathieu-Daudé <philippe.mathieu.daude@gmail.com> On
> Behalf Of Philippe Mathieu-Daudé
> Sent: Friday, January 22, 2021 4:42 PM
> To: Taylor Simpson <tsimpson@quicinc.com>; qemu-devel@nongnu.org;
> Paolo Bonzini <pbonzini@redhat.com>
> Cc: ale@rev.ng; alex.bennee@linaro.org; richard.henderson@linaro.org;
> laurent@vivier.eu; Brian Cain <bcain@quicinc.com>
> Subject: Re: [PATCH v7 34/35] Hexagon build infrastructure
>
> On 1/22/21 11:34 PM, Philippe Mathieu-Daudé wrote:
> > On 1/20/21 4:29 AM, Taylor Simpson wrote:
> >> Add file to default-configs
> >> Add hexagon to meson.build
> >> Add hexagon to target/meson.build
> >> Add target/hexagon/meson.build
> >> Change scripts/qemu-binfmt-conf.sh
> >>
> >> We can build a hexagon-linux-user target and run programs on the
> Hexagon
> >> scalar core. With hexagon-linux-clang installed, "make check-tcg" will
> >> pass.
> >>
> >> Signed-off-by: Taylor Simpson <tsimpson@quicinc.com>
> >> ---
> >> default-configs/targets/hexagon-linux-user.mak | 1 +
> >> meson.build | 1 +
> >> scripts/qemu-binfmt-conf.sh | 6 +-
> >> target/hexagon/meson.build | 187
> +++++++++++++++++++++++++
> >> target/meson.build | 1 +
> >> 5 files changed, 195 insertions(+), 1 deletion(-)
> >> create mode 100644 default-configs/targets/hexagon-linux-user.mak
> >> create mode 100644 target/hexagon/meson.build
> > ...
> >
> >> +++ b/target/hexagon/meson.build
> >> +hexagon_ss = ss.source_set()
> >> +
> >> +prog_python = import('python').find_installation('python3')
> >> +
> >> +hex_common_py = 'hex_common.py'
> >> +attribs_def_h = meson.current_source_dir() / 'attribs_def.h'
> >> +gen_tcg_h = meson.current_source_dir() / 'gen_tcg.h'
> >> +
> >> +#
> >> +# Step 1
> >> +# We use a C program to create semantics_generated.pyinc
> >> +#
> >> +gen_semantics = executable('gen_semantics', 'gen_semantics.c')
> >> +
> >> +semantics = custom_target(
> >> + 'semantics_generated.pyinc',
> >> + output: 'semantics_generated.pyinc',
> >> + input: gen_semantics,
> >> + command: ['@INPUT@', '@OUTPUT@'],
> >> +)
> >> +hexagon_ss.add(semantics)
> >
> > Is something missing here?
> >
> > $ make -j8
> > [316/1048] Generating semantics_generated.pyinc with a custom
> command
> > FAILED: target/hexagon/semantics_generated.pyinc
> > target/hexagon/gen_semantics
> target/hexagon/semantics_generated.pyinc
> > /bin/sh: 1: target/hexagon/gen_semantics: not found
> > ninja: build stopped: subcommand failed.
> >
> > $ make target/hexagon/semantics_generated.pyinc V=1
> > /usr/bin/ninja -v -j1 target/hexagon/semantics_generated.pyinc | cat
> > [1/1] target/hexagon/gen_semantics
> target/hexagon/semantics_generated.pyinc
> > FAILED: target/hexagon/semantics_generated.pyinc
> > target/hexagon/gen_semantics
> target/hexagon/semantics_generated.pyinc
> > /bin/sh: 1: target/hexagon/gen_semantics: not found
> > ninja: build stopped: subcommand failed.
> > make: *** [Makefile:172: run-ninja] Error 1
> >
> > OK, I'm cross-compiling, target/hexagon/gen_semantics has been
> generated
> > but with as target, and we want it linked for the host...
>
> So I compiled it manually using:
>
> $ gcc -o target/hexagon/gen_semantics
> ~/source/qemu/target/hexagon/gen_semantics.c
>
> Then same story:
>
> [14/68] Generating iset.py with a custom command
> FAILED: target/hexagon/iset.py
> target/hexagon/gen_dectree_import target/hexagon/iset.py
> /bin/sh: 1: target/hexagon/gen_dectree_import: not found
> ninja: build stopped: subcommand failed.
>
> $ gcc -o target/hexagon/gen_dectree_import
> ~/source/qemu/target/hexagon/gen_dectree_import.c
> target/hexagon/gen_dectree_import.c:24:10: fatal error: qemu/osdep.h: No
> such file or directory
> #include "qemu/osdep.h"
> ^~~~~~~~~~~~~~
I'm able to reproduce and fix these problems by building with
debian-armel-cross. The solution is
- Add "native: true" to the executable functions
- Don't include "qemu/osdep.h", use the std header files instead.
I also see the 32-bit printf formatting errors you mentioned in this build.
These fixes will be included in the next iteration of the series.
> BTW you should test your branch on gitlab-ci, I'm pretty sure
> various jobs fail.
I'll look into that as well.
Thanks,
Taylor
[PATCH v7 05/35] Hexagon (disas) disassembler, Taylor Simpson, 2021/01/19
[PATCH v7 35/35] Add Dockerfile for hexagon, Taylor Simpson, 2021/01/19
[PATCH v7 08/35] Hexagon (target/hexagon) GDB Stub, Taylor Simpson, 2021/01/19
[PATCH v7 14/35] Hexagon (target/hexagon) instruction printing, Taylor Simpson, 2021/01/19
[PATCH v7 15/35] Hexagon (target/hexagon/arch.[ch]) utility functions, Taylor Simpson, 2021/01/19