Message ID | 1601314138-9930-1-git-send-email-tsimpson@quicinc.com |
---|---|
Headers | show |
Series | Hexagon patch series | expand |
Le 28/09/2020 à 19:28, Taylor Simpson a écrit : > Implementation of Linux user emulation for Hexagon > Some common files modified in addition to new files in linux-user/hexagon > > Signed-off-by: Taylor Simpson <tsimpson@quicinc.com> > Reviewed-by: Richard Henderson <richard.henderson@linaro.org> > --- > linux-user/hexagon/sockbits.h | 18 ++ > linux-user/hexagon/syscall_nr.h | 343 ++++++++++++++++++++++++++++++++++++ > linux-user/hexagon/target_cpu.h | 44 +++++ > linux-user/hexagon/target_elf.h | 40 +++++ > linux-user/hexagon/target_fcntl.h | 18 ++ > linux-user/hexagon/target_signal.h | 34 ++++ > linux-user/hexagon/target_structs.h | 46 +++++ > linux-user/hexagon/target_syscall.h | 36 ++++ > linux-user/hexagon/termbits.h | 18 ++ > linux-user/qemu.h | 2 + > linux-user/syscall_defs.h | 33 ++++ > linux-user/elfload.c | 16 ++ > linux-user/hexagon/cpu_loop.c | 99 +++++++++++ > linux-user/hexagon/signal.c | 276 +++++++++++++++++++++++++++++ > linux-user/hexagon/meson.build | 22 +++ > linux-user/meson.build | 1 + > scripts/gensyscalls.sh | 3 +- > 17 files changed, 1048 insertions(+), 1 deletion(-) > create mode 100644 linux-user/hexagon/sockbits.h > create mode 100644 linux-user/hexagon/syscall_nr.h > create mode 100644 linux-user/hexagon/target_cpu.h > create mode 100644 linux-user/hexagon/target_elf.h > create mode 100644 linux-user/hexagon/target_fcntl.h > create mode 100644 linux-user/hexagon/target_signal.h > create mode 100644 linux-user/hexagon/target_structs.h > create mode 100644 linux-user/hexagon/target_syscall.h > create mode 100644 linux-user/hexagon/termbits.h > create mode 100644 linux-user/hexagon/cpu_loop.c > create mode 100644 linux-user/hexagon/signal.c > create mode 100644 linux-user/hexagon/meson.build > ... > diff --git a/linux-user/hexagon/meson.build b/linux-user/hexagon/meson.build > new file mode 100644 > index 0000000..7158e52 > --- /dev/null > +++ b/linux-user/hexagon/meson.build > @@ -0,0 +1,22 @@ > +## > +## Copyright(c) 2020 Qualcomm Innovation Center, Inc. All Rights Reserved. > +## > +## This program is free software; you can redistribute it and/or modify > +## it under the terms of the GNU General Public License as published by > +## the Free Software Foundation; either version 2 of the License, or > +## (at your option) any later version. > +## > +## This program is distributed in the hope that it will be useful, > +## but WITHOUT ANY WARRANTY; without even the implied warranty of > +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > +## GNU General Public License for more details. > +## > +## You should have received a copy of the GNU General Public License > +## along with this program; if not, see <http://www.gnu.org/licenses/>. > +## > + > +syscall_nr_generators += { > + 'hexagon': generator(sh, > + arguments: [ 'cat', 'syscall_nr.h', '>', '@OUTPUT@' ], > + output: '@BASENAME@_nr.h') Why do we need that? The syscall_nr_generators is used to generate syscall_nr.h from syscall.tbl > +} > diff --git a/linux-user/meson.build b/linux-user/meson.build > index 2b94e4b..8b1dfc8 100644 > --- a/linux-user/meson.build > +++ b/linux-user/meson.build > @@ -22,6 +22,7 @@ syscall_nr_generators = {} > > subdir('alpha') > subdir('arm') > +subdir('hexagon') so you don't need that either > subdir('hppa') > subdir('i386') > subdir('m68k') > diff --git a/scripts/gensyscalls.sh b/scripts/gensyscalls.sh > index b7b8456..e2ee60a 100755 > --- a/scripts/gensyscalls.sh > +++ b/scripts/gensyscalls.sh > @@ -53,7 +53,7 @@ read_includes() > > filter_defines() > { > - grep -e "#define __NR_" -e "#define __NR3264" > + grep -e "#define __NR_" -e "#define __NR3264" | grep -v __NR_syscalls Why do you remove __NR_syscalls? > } > > rename_defines() > @@ -99,4 +99,5 @@ generate_syscall_nr openrisc 32 "$output/linux-user/openrisc/syscall_nr.h" > > generate_syscall_nr riscv 32 "$output/linux-user/riscv/syscall32_nr.h" > generate_syscall_nr riscv 64 "$output/linux-user/riscv/syscall64_nr.h" > +generate_syscall_nr hexagon 32 "$output/linux-user/hexagon/syscall_nr.h" Please, move this line to the previous block (that generates syscall_nr.h and not syscallXX_nr.h) > rm -fr "$TMP" > Thanks, Laurent
Patchew URL: https://patchew.org/QEMU/1601314138-9930-1-git-send-email-tsimpson@quicinc.com/ Hi, This series seems to have some coding style problems. See output below for more information: Type: series Message-id: 1601314138-9930-1-git-send-email-tsimpson@quicinc.com Subject: [RFC PATCH v4 00/29] Hexagon patch series === TEST SCRIPT BEGIN === #!/bin/bash git rev-parse base > /dev/null || exit 0 git config --local diff.renamelimit 0 git config --local diff.renames True git config --local diff.algorithm histogram ./scripts/checkpatch.pl --mailback base.. === TEST SCRIPT END === Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384 Switched to a new branch 'test' 07b7654 Hexagon build infrastructure 010f970 Hexagon (tests/tcg/hexagon) TCG tests 6d5cc34 Hexagon (linux-user/hexagon) Linux user emulation 2cc6884 Hexagon (target/hexagon) translation 78dc364 Hexagon (target/hexagon) TCG for instructions with multiple definitions 7da73c1 Hexagon (target/hexagon) TCG generation 2667588 Hexagon (target/hexagon) instruction classes 6447bfd Hexagon (target/hexagon) macros 09a6ee0 Hexagon (target/hexagon) opcode data structures 0a72ce4 Hexagon (target/hexagon) generater phase 4 - decode tree e10510a Hexagon (target/hexagon) generator phase 3 - C preprocessor for decode tree e13fc67 Hexagon (target/hexagon) generator phase 2 - generate header files c51b8ef Hexagon (target/hexagon) generator phase 1 - C preprocessor for semantics 8e3991c Hexagon (target/hexagon/imported) arch import aaa7fdf Hexagon (target/hexagon) utility functions e10964e Hexagon (target/hexagon) instruction printing 78eb919 Hexagon (target/hexagon) instruction/packet decode 71da9a7 Hexagon (target/hexagon) instruction attributes 14de848 Hexagon (target/hexagon) register fields e51e071 Hexagon (target/hexagon) instruction and packet types 7aa4ff5 Hexagon (target/hexagon) architecture types cd303dc Hexagon (target/hexagon) GDB Stub acb70e2 Hexagon (target/hexagon) scalar core helpers c5c476c Hexagon (target/hexagon) register names dcf7c0c Hexagon (disas) disassembler 6564db7 Hexagon (target/hexagon) scalar core definition a5ea831 Hexagon (include/elf.h) ELF machine definition 73fa471 Hexagon (target/hexagon) README 83d6242 Hexagon Update MAINTAINERS file === OUTPUT BEGIN === 1/29 Checking commit 83d6242ea963 (Hexagon Update MAINTAINERS file) 2/29 Checking commit 73fa4715a018 (Hexagon (target/hexagon) README) WARNING: added, moved or deleted file(s), does MAINTAINERS need updating? #13: new file mode 100644 total: 0 errors, 1 warnings, 236 lines checked Patch 2/29 has style problems, please review. If any of these errors are false positives report them to the maintainer, see CHECKPATCH in MAINTAINERS. 3/29 Checking commit a5ea8316fe44 (Hexagon (include/elf.h) ELF machine definition) 4/29 Checking commit 6564db7eff40 (Hexagon (target/hexagon) scalar core definition) WARNING: added, moved or deleted file(s), does MAINTAINERS need updating? #13: new file mode 100644 total: 0 errors, 1 warnings, 570 lines checked Patch 4/29 has style problems, please review. If any of these errors are false positives report them to the maintainer, see CHECKPATCH in MAINTAINERS. 5/29 Checking commit dcf7c0cbc41a (Hexagon (disas) disassembler) WARNING: added, moved or deleted file(s), does MAINTAINERS need updating? #15: new file mode 100644 total: 0 errors, 1 warnings, 76 lines checked Patch 5/29 has style problems, please review. If any of these errors are false positives report them to the maintainer, see CHECKPATCH in MAINTAINERS. 6/29 Checking commit c5c476c4cb67 (Hexagon (target/hexagon) register names) WARNING: added, moved or deleted file(s), does MAINTAINERS need updating? #12: new file mode 100644 total: 0 errors, 1 warnings, 83 lines checked Patch 6/29 has style problems, please review. If any of these errors are false positives report them to the maintainer, see CHECKPATCH in MAINTAINERS. 7/29 Checking commit acb70e2f6042 (Hexagon (target/hexagon) scalar core helpers) WARNING: added, moved or deleted file(s), does MAINTAINERS need updating? #14: new file mode 100644 total: 0 errors, 1 warnings, 412 lines checked Patch 7/29 has style problems, please review. If any of these errors are false positives report them to the maintainer, see CHECKPATCH in MAINTAINERS. 8/29 Checking commit cd303dc889e2 (Hexagon (target/hexagon) GDB Stub) WARNING: added, moved or deleted file(s), does MAINTAINERS need updating? #27: new file mode 100644 total: 0 errors, 1 warnings, 64 lines checked Patch 8/29 has style problems, please review. If any of these errors are false positives report them to the maintainer, see CHECKPATCH in MAINTAINERS. 9/29 Checking commit 7aa4ff557b75 (Hexagon (target/hexagon) architecture types) WARNING: added, moved or deleted file(s), does MAINTAINERS need updating? #13: new file mode 100644 total: 0 errors, 1 warnings, 43 lines checked Patch 9/29 has style problems, please review. If any of these errors are false positives report them to the maintainer, see CHECKPATCH in MAINTAINERS. 10/29 Checking commit e51e0716fa19 (Hexagon (target/hexagon) instruction and packet types) WARNING: added, moved or deleted file(s), does MAINTAINERS need updating? #14: new file mode 100644 total: 0 errors, 1 warnings, 74 lines checked Patch 10/29 has style problems, please review. If any of these errors are false positives report them to the maintainer, see CHECKPATCH in MAINTAINERS. 11/29 Checking commit 14de84860eaa (Hexagon (target/hexagon) register fields) WARNING: added, moved or deleted file(s), does MAINTAINERS need updating? #13: new file mode 100644 ERROR: Macros with complex values should be enclosed in parenthesis #80: FILE: target/hexagon/reg_fields.h:29: +#define DEF_REG_FIELD(TAG, START, WIDTH) \ + TAG, total: 1 errors, 1 warnings, 105 lines checked Patch 11/29 has style problems, please review. If any of these errors are false positives report them to the maintainer, see CHECKPATCH in MAINTAINERS. 12/29 Checking commit 71da9a7c0527 (Hexagon (target/hexagon) instruction attributes) WARNING: added, moved or deleted file(s), does MAINTAINERS need updating? #11: new file mode 100644 ERROR: Macros with complex values should be enclosed in parenthesis #37: FILE: target/hexagon/attribs.h:22: +#define DEF_ATTRIB(NAME, ...) A_##NAME, total: 1 errors, 1 warnings, 130 lines checked Patch 12/29 has style problems, please review. If any of these errors are false positives report them to the maintainer, see CHECKPATCH in MAINTAINERS. 13/29 Checking commit 78eb9192e26e (Hexagon (target/hexagon) instruction/packet decode) WARNING: added, moved or deleted file(s), does MAINTAINERS need updating? #22: new file mode 100644 ERROR: Macros with complex values should be enclosed in parenthesis #133: FILE: target/hexagon/decode.c:107: +#define DECODE_SEPARATOR_BITS(START, WIDTH) NULL, START, WIDTH ERROR: Macros with multiple statements should be enclosed in a do - while loop #734: FILE: target/hexagon/q6v_decode.c:51: +#define DECODE_OPINFO(TAG, BEH) \ + case TAG: \ + { BEH } \ + break; \ + total: 2 errors, 1 warnings, 1018 lines checked Patch 13/29 has style problems, please review. If any of these errors are false positives report them to the maintainer, see CHECKPATCH in MAINTAINERS. 14/29 Checking commit e10964e7afdd (Hexagon (target/hexagon) instruction printing) WARNING: added, moved or deleted file(s), does MAINTAINERS need updating? #11: new file mode 100644 ERROR: Macros with multiple statements should be enclosed in a do - while loop #58: FILE: target/hexagon/printinsn.c:43: +#define DEF_PRINTINFO(TAG, FMT, ...) \ + case TAG: \ + snprintf(buf, n, FMT, __VA_ARGS__);\ + break; total: 1 errors, 1 warnings, 117 lines checked Patch 14/29 has style problems, please review. If any of these errors are false positives report them to the maintainer, see CHECKPATCH in MAINTAINERS. 15/29 Checking commit aaa7fdf81e1f (Hexagon (target/hexagon) utility functions) WARNING: added, moved or deleted file(s), does MAINTAINERS need updating? #13: new file mode 100644 WARNING: Block comments use a leading /* on a separate line #1325: FILE: target/hexagon/fma_emu.c:469: + /* result zero */ \ WARNING: Block comments use a leading /* on a separate line #1333: FILE: target/hexagon/fma_emu.c:477: + /* Normalize right */ \ WARNING: Block comments use a leading /* on a separate line #1334: FILE: target/hexagon/fma_emu.c:478: + /* We want MANTBITS bits of mantissa plus the leading one. */ \ WARNING: Block comments use a leading /* on a separate line #1335: FILE: target/hexagon/fma_emu.c:479: + /* That means that we want MANTBITS+1 bits, or 0x000000000000FF_FFFF */ \ WARNING: Block comments use a leading /* on a separate line #1336: FILE: target/hexagon/fma_emu.c:480: + /* So we need to normalize right while the high word is non-zero and \ WARNING: Block comments should align the * on each line #1337: FILE: target/hexagon/fma_emu.c:481: + /* So we need to normalize right while the high word is non-zero and \ + * while the low word is nonzero when masked with 0xffe0_0000_0000_0000 */ \ WARNING: Block comments use a leading /* on a separate line #1341: FILE: target/hexagon/fma_emu.c:485: + /* \ WARNING: Block comments use a leading /* on a separate line #1351: FILE: target/hexagon/fma_emu.c:495: + /* \ WARNING: Block comments use a leading /* on a separate line #1358: FILE: target/hexagon/fma_emu.c:502: + /* \ WARNING: Block comments use a leading /* on a separate line #1367: FILE: target/hexagon/fma_emu.c:511: + /* OK, we're relatively canonical... now we need to round */ \ WARNING: Block comments use a leading /* on a separate line #1372: FILE: target/hexagon/fma_emu.c:516: + /* Chop and we're done */ \ WARNING: Block comments use a leading /* on a separate line #1386: FILE: target/hexagon/fma_emu.c:530: + /* round up if guard is 1, down if guard is zero */ \ WARNING: Block comments use a leading /* on a separate line #1389: FILE: target/hexagon/fma_emu.c:533: + /* exactly .5, round up if odd */ \ WARNING: Block comments use a leading /* on a separate line #1395: FILE: target/hexagon/fma_emu.c:539: + /* \ WARNING: Block comments use a leading /* on a separate line #1404: FILE: target/hexagon/fma_emu.c:548: + /* Overflow? */ \ WARNING: Block comments use a leading /* on a separate line #1406: FILE: target/hexagon/fma_emu.c:550: + /* Yep, inf result */ \ WARNING: Block comments use a leading /* on a separate line #1428: FILE: target/hexagon/fma_emu.c:572: + /* Underflow? */ \ WARNING: Block comments use a leading /* on a separate line #1430: FILE: target/hexagon/fma_emu.c:574: + /* Leading one means: No, we're normal. So, we should be done... */ \ total: 0 errors, 19 warnings, 1619 lines checked Patch 15/29 has style problems, please review. If any of these errors are false positives report them to the maintainer, see CHECKPATCH in MAINTAINERS. 16/29 Checking commit 8e3991cea132 (Hexagon (target/hexagon/imported) arch import) WARNING: added, moved or deleted file(s), does MAINTAINERS need updating? #28: new file mode 100644 total: 0 errors, 1 warnings, 9251 lines checked Patch 16/29 has style problems, please review. If any of these errors are false positives report them to the maintainer, see CHECKPATCH in MAINTAINERS. 17/29 Checking commit c51b8efd689a (Hexagon (target/hexagon) generator phase 1 - C preprocessor for semantics) WARNING: added, moved or deleted file(s), does MAINTAINERS need updating? #17: new file mode 100644 ERROR: suspicious ; after while (0) #82: FILE: target/hexagon/gen_semantics.c:61: + } while (0); total: 1 errors, 1 warnings, 88 lines checked Patch 17/29 has style problems, please review. If any of these errors are false positives report them to the maintainer, see CHECKPATCH in MAINTAINERS. 18/29 Checking commit e13fc6785aa7 (Hexagon (target/hexagon) generator phase 2 - generate header files) WARNING: added, moved or deleted file(s), does MAINTAINERS need updating? #32: new file mode 100755 WARNING: line over 80 characters #1051: FILE: target/hexagon/gen_tcg_funcs.py:50: + f.write(" tcg_gen_mov_tl(hex_new_value[%s + 1], hex_gpr[%s + 1]);\n" % \ WARNING: line over 80 characters #1130: FILE: target/hexagon/gen_tcg_funcs.py:129: + f.write(" TCGv %s%sN = hex_new_pred_value[insn->regno[%d]];\n" % \ WARNING: line over 80 characters #1215: FILE: target/hexagon/gen_tcg_funcs.py:214: + f.write(" hex_gpr[%s%sN + 1]);\n" % \ WARNING: line over 80 characters #1236: FILE: target/hexagon/gen_tcg_funcs.py:235: + f.write(" hex_gpr[%s%sN + 1]);\n" % \ WARNING: line over 80 characters #1240: FILE: target/hexagon/gen_tcg_funcs.py:239: + f.write(" tcg_gen_concat_i32_i64(%s%sV, hex_gpr[%s%sN],\n" % \ WARNING: line over 80 characters #1242: FILE: target/hexagon/gen_tcg_funcs.py:241: + f.write(" hex_gpr[%s%sN + 1]);\n" % \ WARNING: line over 80 characters #1251: FILE: target/hexagon/gen_tcg_funcs.py:250: + f.write(" tcg_gen_mov_tl(%s%sV, hex_gpr[%s%sN + HEX_REG_SA0]);\n" % \ WARNING: line over 80 characters #1311: FILE: target/hexagon/gen_tcg_funcs.py:310: + f.write(" gen_log_predicated_reg_write_pair(%s%sN, %s%sV, insn->slot);\n" % \ WARNING: line over 80 characters #1355: FILE: target/hexagon/gen_tcg_funcs.py:354: + f.write(" gen_log_reg_write(%s%sN + HEX_REG_SA0 + 1, val32);\n" % \ WARNING: line over 80 characters #1358: FILE: target/hexagon/gen_tcg_funcs.py:357: + f.write(" ctx_log_reg_write(ctx, %s%sN + HEX_REG_SA0 + 1);\n" % \ WARNING: line over 80 characters #1361: FILE: target/hexagon/gen_tcg_funcs.py:360: + f.write(" gen_log_reg_write_pair(%s%sN + HEX_REG_SA0, %s%sV);\n" % \ WARNING: line over 80 characters #1365: FILE: target/hexagon/gen_tcg_funcs.py:364: + f.write(" ctx_log_reg_write(ctx, %s%sN + HEX_REG_SA0 + 1);\n" % \ WARNING: line over 80 characters #1374: FILE: target/hexagon/gen_tcg_funcs.py:373: + f.write(" gen_log_reg_write(%s%sN + HEX_REG_SA0, %s%sV);\n" % \ total: 0 errors, 14 warnings, 1676 lines checked Patch 18/29 has style problems, please review. If any of these errors are false positives report them to the maintainer, see CHECKPATCH in MAINTAINERS. 19/29 Checking commit e10510a91bcd (Hexagon (target/hexagon) generator phase 3 - C preprocessor for decode tree) WARNING: added, moved or deleted file(s), does MAINTAINERS need updating? #15: new file mode 100644 ERROR: Macros with complex values should be enclosed in parenthesis #76: FILE: target/hexagon/gen_dectree_import.c:57: +#define REGINFO(TAG, REGINFO, RREGS, WREGS) RREGS, ERROR: Macros with complex values should be enclosed in parenthesis #85: FILE: target/hexagon/gen_dectree_import.c:66: +#define REGINFO(TAG, REGINFO, RREGS, WREGS) WREGS, ERROR: suspicious ; after while (0) #182: FILE: target/hexagon/gen_dectree_import.c:163: + } while (0); total: 3 errors, 1 warnings, 191 lines checked Patch 19/29 has style problems, please review. If any of these errors are false positives report them to the maintainer, see CHECKPATCH in MAINTAINERS. 20/29 Checking commit 0a72ce4c7218 (Hexagon (target/hexagon) generater phase 4 - decode tree) WARNING: added, moved or deleted file(s), does MAINTAINERS need updating? #13: new file mode 100755 total: 0 errors, 1 warnings, 352 lines checked Patch 20/29 has style problems, please review. If any of these errors are false positives report them to the maintainer, see CHECKPATCH in MAINTAINERS. 21/29 Checking commit 09a6ee0edd8d (Hexagon (target/hexagon) opcode data structures) WARNING: added, moved or deleted file(s), does MAINTAINERS need updating? #11: new file mode 100644 ERROR: Macros with complex values should be enclosed in parenthesis #56: FILE: target/hexagon/opcodes.c:41: +#define REGINFO(TAG, REGINFO, RREGS, WREGS) REGINFO, ERROR: Macros with complex values should be enclosed in parenthesis #66: FILE: target/hexagon/opcodes.c:51: +#define REGINFO(TAG, REGINFO, RREGS, WREGS) RREGS, ERROR: Macros with complex values should be enclosed in parenthesis #76: FILE: target/hexagon/opcodes.c:61: +#define REGINFO(TAG, REGINFO, RREGS, WREGS) WREGS, ERROR: Macros with complex values should be enclosed in parenthesis #84: FILE: target/hexagon/opcodes.c:69: +#define DEF_SHORTCODE(TAG, SHORTCODE) [TAG] = #SHORTCODE, ERROR: Macros with complex values should be enclosed in parenthesis #180: FILE: target/hexagon/opcodes.c:165: +#define ATTRIBS(...) , ## __VA_ARGS__, 0 total: 5 errors, 1 warnings, 265 lines checked Patch 21/29 has style problems, please review. If any of these errors are false positives report them to the maintainer, see CHECKPATCH in MAINTAINERS. 22/29 Checking commit 6447bfd79ac7 (Hexagon (target/hexagon) macros) WARNING: added, moved or deleted file(s), does MAINTAINERS need updating? #14: new file mode 100644 total: 0 errors, 1 warnings, 654 lines checked Patch 22/29 has style problems, please review. If any of these errors are false positives report them to the maintainer, see CHECKPATCH in MAINTAINERS. 23/29 Checking commit 2667588652d9 (Hexagon (target/hexagon) instruction classes) WARNING: added, moved or deleted file(s), does MAINTAINERS need updating? #13: new file mode 100644 ERROR: Macros with complex values should be enclosed in parenthesis #130: FILE: target/hexagon/iclass.h:27: +#define DEF_PP_ICLASS32(TYPE, SLOTS, UNITS) ICLASS_FROM_TYPE(TYPE), ERROR: Macros with complex values should be enclosed in parenthesis #131: FILE: target/hexagon/iclass.h:28: +#define DEF_EE_ICLASS32(TYPE, SLOTS, UNITS) ICLASS_FROM_TYPE(TYPE), total: 2 errors, 1 warnings, 172 lines checked Patch 23/29 has style problems, please review. If any of these errors are false positives report them to the maintainer, see CHECKPATCH in MAINTAINERS. 24/29 Checking commit 7da73c149bf2 (Hexagon (target/hexagon) TCG generation) WARNING: added, moved or deleted file(s), does MAINTAINERS need updating? #13: new file mode 100644 total: 0 errors, 1 warnings, 259 lines checked Patch 24/29 has style problems, please review. If any of these errors are false positives report them to the maintainer, see CHECKPATCH in MAINTAINERS. 25/29 Checking commit 78dc36465e5d (Hexagon (target/hexagon) TCG for instructions with multiple definitions) WARNING: added, moved or deleted file(s), does MAINTAINERS need updating? #14: new file mode 100644 total: 0 errors, 1 warnings, 198 lines checked Patch 25/29 has style problems, please review. If any of these errors are false positives report them to the maintainer, see CHECKPATCH in MAINTAINERS. 26/29 Checking commit 2cc688488079 (Hexagon (target/hexagon) translation) WARNING: added, moved or deleted file(s), does MAINTAINERS need updating? #17: new file mode 100644 total: 0 errors, 1 warnings, 767 lines checked Patch 26/29 has style problems, please review. If any of these errors are false positives report them to the maintainer, see CHECKPATCH in MAINTAINERS. 27/29 Checking commit 6d5cc34654af (Hexagon (linux-user/hexagon) Linux user emulation) WARNING: added, moved or deleted file(s), does MAINTAINERS need updating? #42: new file mode 100644 total: 0 errors, 1 warnings, 1089 lines checked Patch 27/29 has style problems, please review. If any of these errors are false positives report them to the maintainer, see CHECKPATCH in MAINTAINERS. 28/29 Checking commit 010f970dbd94 (Hexagon (tests/tcg/hexagon) TCG tests) ERROR: line over 90 characters #32: FILE: tests/tcg/configure.sh:99: + alpha|cris|hexagon|hppa|i386|lm32|microblaze|microblazeel|m68k|openrisc|riscv64|s390x|sh4|sparc64) WARNING: added, moved or deleted file(s), does MAINTAINERS need updating? #37: new file mode 100644 total: 1 errors, 1 warnings, 2728 lines checked Patch 28/29 has style problems, please review. If any of these errors are false positives report them to the maintainer, see CHECKPATCH in MAINTAINERS. 29/29 Checking commit 07b76543a655 (Hexagon build infrastructure) WARNING: added, moved or deleted file(s), does MAINTAINERS need updating? #39: new file mode 100644 WARNING: line over 80 characters #74: FILE: scripts/qemu-binfmt-conf.sh:139: +hexagon_magic='\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xa4\x00' ERROR: line over 90 characters #75: FILE: scripts/qemu-binfmt-conf.sh:140: +hexagon_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff' total: 1 errors, 2 warnings, 223 lines checked Patch 29/29 has style problems, please review. If any of these errors are false positives report them to the maintainer, see CHECKPATCH in MAINTAINERS. === OUTPUT END === Test command exited with code: 1 The full log is available at http://patchew.org/logs/1601314138-9930-1-git-send-email-tsimpson@quicinc.com/testing.checkpatch/?type=message. --- Email generated automatically by Patchew [https://patchew.org/]. Please send your feedback to patchew-devel@redhat.com
Patchew URL: https://patchew.org/QEMU/1601314138-9930-1-git-send-email-tsimpson@quicinc.com/ Hi, This series failed the docker-mingw@fedora build test. Please find the testing commands and their output below. If you have Docker installed, you can probably reproduce it locally. === TEST SCRIPT BEGIN === #! /bin/bash export ARCH=x86_64 make docker-image-fedora V=1 NETWORK=1 time make docker-test-mingw@fedora J=14 NETWORK=1 === TEST SCRIPT END === Host machine cpu: x86_64 Target machine cpu family: x86 Target machine cpu: x86_64 ../src/meson.build:10: WARNING: Module unstable-keyval has no backwards or forwards compatibility and might not exist in future releases. Program sh found: YES Program python3 found: YES (/usr/bin/python3) Configuring ninjatool using configuration --- FileNotFoundError: [Errno 2] No such file or directory: '@INPUT@' Compiling C object tests/libtestqapi.a.p/meson-generated_.._test-qapi-introspect.c.obj Compiling C object tests/libtestqapi.a.p/meson-generated_.._test-qapi-types-sub-sub-module.c.obj make: *** [Makefile.ninja:785: target/hexagon/semantics_generated.pyinc.stamp] Error 1 make: *** Waiting for unfinished jobs.... Running Sphinx v2.2.2 Running Sphinx v2.2.2 --- raise CalledProcessError(retcode, cmd) subprocess.CalledProcessError: Command '['sudo', '-n', 'docker', 'run', '--rm', '--label', 'com.qemu.instance.uuid=f3436adee502475b808e3143e318eadc', '-u', '1001', '--security-opt', 'seccomp=unconfined', '-e', 'TARGET_LIST=', '-e', 'EXTRA_CONFIGURE_OPTS=', '-e', 'V=', '-e', 'J=14', '-e', 'DEBUG=', '-e', 'SHOW_ENV=', '-e', 'CCACHE_DIR=/var/tmp/ccache', '-v', '/home/patchew/.cache/qemu-docker-ccache:/var/tmp/ccache:z', '-v', '/var/tmp/patchew-tester-tmp-pqn71064/src/docker-src.2020-09-28-21.13.22.10231:/var/tmp/qemu:z,ro', 'qemu/fedora', '/var/tmp/qemu/run', 'test-mingw']' returned non-zero exit status 2. filter=--filter=label=com.qemu.instance.uuid=f3436adee502475b808e3143e318eadc make[1]: *** [docker-run] Error 1 make[1]: Leaving directory `/var/tmp/patchew-tester-tmp-pqn71064/src' make: *** [docker-run-test-mingw@fedora] Error 2 real 7m38.875s user 0m20.964s The full log is available at http://patchew.org/logs/1601314138-9930-1-git-send-email-tsimpson@quicinc.com/testing.docker-mingw@fedora/?type=message. --- Email generated automatically by Patchew [https://patchew.org/]. Please send your feedback to patchew-devel@redhat.com
Hi Taylor, On 9/28/20 7:28 PM, Taylor Simpson wrote: > This series adds support for the Hexagon processor with Linux user support > > See patch 02/34 Hexagon README for detailed information. > > Once the series is applied, the Hexagon port will pass "make check-tcg". > The series also includes Hexagon-specific tests in tcg/tests/hexagon. > > The series is also available at https://github.com/quic/qemu on branch > small_series_v4. > > We have a parallel effort to make the Hexagon Linux toolchain publically > available. > > *** Known checkpatch issues *** > > The following are known checkpatch errors in the series > target/hexagon/reg_fields.h Complex macro > target/hexagon/attribs.h Complex macro > target/hexagon/decode.c Complex macro > target/hexagon/q6v_decode.c Macro needs do - while > target/hexagon/printinsn.c Macro needs do - while > target/hexagon/gen_semantics.c Suspicious ; after while (0) > target/hexagon/gen_dectree_import.c Complex macro > target/hexagon/gen_dectree_import.c Suspicious ; after while (0) > target/hexagon/opcodes.c Complex macro > target/hexagon/iclass.h Complex macro > configure.sh Line over 90 characters > scripts/qemu-binfmt-conf.sh Line over 90 characters > > The following are known checkpatch warnings in the series > target/hexagon/fma_emu.c Comments inside macro definition > target/hexagon/gen_tcg_funcs.py Line over 80 characters > scripts/qemu-binfmt-conf.sh Line over 80 characters Using '../configure' '--target-list=hexagon-linux-user' '--disable-docs' '--disable-tools' on Fedora 32 I am getting: In file included from target/hexagon/op_helper.c:24: target/hexagon/helper_funcs_generated.h: In function ‘helper_S2_vspliceib’: target/hexagon/helper_funcs_generated.h:9669:50: error: ‘*’ in boolean context, suggest ‘&&’ instead [-Werror=int-in-bool-context] 9669 | { RddV = fASHIFTL(RttV,uiV*8,8_8) | fZXTN(uiV*8,64,RssV); } target/hexagon/macros.h:234:28: note: in definition of macro ‘fZXTN’ 234 | #define fZXTN(N, M, VAL) ((N) ? extract64((VAL), 0, (N)) : 0LL) | ^ target/hexagon/helper_funcs_generated.h: In function ‘helper_S2_vsplicerb’: target/hexagon/helper_funcs_generated.h:9677:58: error: ‘*’ in boolean context, suggest ‘&&’ instead [-Werror=int-in-bool-context] 9677 | { RddV = fASHIFTL(RttV,(PuV&7)*8,8_8) | fZXTN((PuV&7)*8,64,RssV); } target/hexagon/macros.h:234:28: note: in definition of macro ‘fZXTN’ 234 | #define fZXTN(N, M, VAL) ((N) ? extract64((VAL), 0, (N)) : 0LL) | ^ cc1: all warnings being treated as errors make: *** [Makefile.ninja:633: libqemu-hexagon-linux-user.fa.p/target_hexagon_op_helper.c.o] Error 1 target/hexagon/decode.c:45:31: error: ‘DECODE_REGISTER_V__16’ defined but not used [-Werror=unused-const-variable=] 45 | static const unsigned int DECODE_REGISTER_##NAME[ELEMENTS] = \ | ^~~~~~~~~~~~~~~~ target/hexagon/decode.c:55:1: note: in expansion of macro ‘DEF_REGMAP’ 55 | DEF_REGMAP(V__16, 16, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30) | ^~~~~~~~~~ target/hexagon/decode.c:45:31: error: ‘DECODE_REGISTER_V__8’ defined but not used [-Werror=unused-const-variable=] 45 | static const unsigned int DECODE_REGISTER_##NAME[ELEMENTS] = \ | ^~~~~~~~~~~~~~~~ target/hexagon/decode.c:54:1: note: in expansion of macro ‘DEF_REGMAP’ 54 | DEF_REGMAP(V__8, 8, 0, 4, 8, 12, 16, 20, 24, 28) | ^~~~~~~~~~ target/hexagon/decode.c:45:31: error: ‘DECODE_REGISTER_R_8’ defined but not used [-Werror=unused-const-variable=] 45 | static const unsigned int DECODE_REGISTER_##NAME[ELEMENTS] = \ | ^~~~~~~~~~~~~~~~ target/hexagon/decode.c:53:1: note: in expansion of macro ‘DEF_REGMAP’ 53 | DEF_REGMAP(R_8, 8, 0, 1, 2, 3, 4, 5, 6, 7) | ^~~~~~~~~~ target/hexagon/decode.c:45:31: error: ‘DECODE_REGISTER_R_8S’ defined but not used [-Werror=unused-const-variable=] 45 | static const unsigned int DECODE_REGISTER_##NAME[ELEMENTS] = \ | ^~~~~~~~~~~~~~~~ target/hexagon/decode.c:52:1: note: in expansion of macro ‘DEF_REGMAP’ 52 | DEF_REGMAP(R_8S, 8, 0, 1, 2, 3, 16, 17, 18, 19) | ^~~~~~~~~~ target/hexagon/decode.c:45:31: error: ‘DECODE_REGISTER_R_4’ defined but not used [-Werror=unused-const-variable=] 45 | static const unsigned int DECODE_REGISTER_##NAME[ELEMENTS] = \ | ^~~~~~~~~~~~~~~~ target/hexagon/decode.c:51:1: note: in expansion of macro ‘DEF_REGMAP’ 51 | DEF_REGMAP(R_4, 4, 0, 1, 2, 3) | ^~~~~~~~~~ target/hexagon/decode.c:45:31: error: ‘DECODE_REGISTER_R__4’ defined but not used [-Werror=unused-const-variable=] 45 | static const unsigned int DECODE_REGISTER_##NAME[ELEMENTS] = \ | ^~~~~~~~~~~~~~~~ target/hexagon/decode.c:50:1: note: in expansion of macro ‘DEF_REGMAP’ 50 | DEF_REGMAP(R__4, 4, 0, 2, 4, 6) | ^~~~~~~~~~ cc1: all warnings being treated as errors make: *** [Makefile.ninja:638: libqemu-hexagon-linux-user.fa.p/target_hexagon_decode.c.o] Error 1 $ gcc --version gcc (GCC) 10.2.1 20200723 (Red Hat 10.2.1-1) Regards, Phil.
On 9/28/20 7:28 PM, Taylor Simpson wrote: > macros to interface with the generator > macros referenced in instruction semantics > > Signed-off-by: Taylor Simpson <tsimpson@quicinc.com> > --- > target/hexagon/macros.h | 654 ++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 654 insertions(+) > create mode 100644 target/hexagon/macros.h > > diff --git a/target/hexagon/macros.h b/target/hexagon/macros.h > new file mode 100644 > index 0000000..34831d4 > --- /dev/null > +++ b/target/hexagon/macros.h > @@ -0,0 +1,654 @@ > +/* > + * Copyright(c) 2019-2020 Qualcomm Innovation Center, Inc. All Rights Reserved. > + * > + * This program is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License as published by > + * the Free Software Foundation; either version 2 of the License, or > + * (at your option) any later version. > + * > + * This program is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + * GNU General Public License for more details. > + * > + * You should have received a copy of the GNU General Public License > + * along with this program; if not, see <http://www.gnu.org/licenses/>. > + */ > + > +#ifndef HEXAGON_MACROS_H > +#define HEXAGON_MACROS_H > + > +#include "qemu/osdep.h" Please do not include "qemu/osdep.h" in header. > +#include "qemu/host-utils.h" "qemu/host-utils.h" doesn't seem used. > +#include "cpu.h" > +#include "hex_regs.h" > +#include "reg_fields.h" > + [...]
> -----Original Message----- > From: Philippe Mathieu-Daudé <philippe.mathieu.daude@gmail.com> On > Behalf Of Philippe Mathieu-Daudé > Sent: Tuesday, September 29, 2020 6:22 AM > To: Taylor Simpson <tsimpson@quicinc.com>; qemu-devel@nongnu.org > Cc: ale@rev.ng; riku.voipio@iki.fi; richard.henderson@linaro.org; > laurent@vivier.eu; aleksandar.m.mail@gmail.com > Subject: Re: [RFC PATCH v4 00/29] Hexagon patch series > > cc1: all warnings being treated as errors > make: *** [Makefile.ninja:638: > libqemu-hexagon-linux-user.fa.p/target_hexagon_decode.c.o] Error 1 > > $ gcc --version > gcc (GCC) 10.2.1 20200723 (Red Hat 10.2.1-1) > Thanks for all your feedback. I really appreciate it and will make the changes you mentioned. I'm using an older GCC that doesn't have these errors. Is this the version of GCC that is recommended (mandated?) for building qemu? PS You were right about Richard recommending const. It's already on my TODO list from his review 😉 Thanks, Taylor
On 9/29/20 5:53 PM, Taylor Simpson wrote: >> -----Original Message----- >> From: Philippe Mathieu-Daudé <philippe.mathieu.daude@gmail.com> On >> Behalf Of Philippe Mathieu-Daudé >> Sent: Tuesday, September 29, 2020 6:22 AM >> To: Taylor Simpson <tsimpson@quicinc.com>; qemu-devel@nongnu.org >> Cc: ale@rev.ng; riku.voipio@iki.fi; richard.henderson@linaro.org; >> laurent@vivier.eu; aleksandar.m.mail@gmail.com >> Subject: Re: [RFC PATCH v4 00/29] Hexagon patch series >> >> cc1: all warnings being treated as errors >> make: *** [Makefile.ninja:638: >> libqemu-hexagon-linux-user.fa.p/target_hexagon_decode.c.o] Error 1 >> >> $ gcc --version >> gcc (GCC) 10.2.1 20200723 (Red Hat 10.2.1-1) >> > > Thanks for all your feedback. I really appreciate it and will make the changes you mentioned. No problem, I also appreciate the effort you did to address all of the previous issues :) > > I'm using an older GCC that doesn't have these errors. Is this the version of GCC that is recommended (mandated?) for building qemu? QEMU aims to support the 2 latest releases of supported distributions.
> -----Original Message----- > From: Philippe Mathieu-Daudé <philippe.mathieu.daude@gmail.com> On > Behalf Of Philippe Mathieu-Daudé > Sent: Tuesday, September 29, 2020 11:02 AM > To: Taylor Simpson <tsimpson@quicinc.com>; qemu-devel@nongnu.org > Cc: ale@rev.ng; riku.voipio@iki.fi; richard.henderson@linaro.org; > laurent@vivier.eu; aleksandar.m.mail@gmail.com > Subject: Re: [RFC PATCH v4 00/29] Hexagon patch series > > QEMU aims to support the 2 latest releases of supported distributions. > From time to time a brave developer look at the different versions > packaged and make some cleanup in the code base. It used to be tedious, > now that repology.org exists it is a bit easier. > > The last effort is from Thomas, see commit efc6c070aca: > > The supported distributions use the following version > of GCC: > > RHEL-7: 4.8.5 > Debian (Stretch): 6.3.0 > Debian (Jessie): 4.8.4 > OpenBSD (ports): 4.9.4 > FreeBSD (ports): 8.2.0 > OpenSUSE Leap 15: 7.3.1 > Ubuntu (Xenial): 5.3.1 > macOS (Homebrew): 8.2.0 > > So we can safely assume GCC 4.8 these days. > > This is the "mandated" compiler version. Ouch! 4.8 is old enough that it doesn't support C11 _Generic which I am using. That needs at least GCC 4.9. Here are a couple of examples. As you can see, _Generic is used to dispatch to slightly different TCG generation functions depending on the type of the operands. I will scratch my head and figure out a different way to do this. #define MEM_STORE1_FUNC(X) \ _Generic((X), int : gen_store1i, TCGv_i32 : gen_store1) #define MEM_STORE1(VA, DATA, SLOT) \ MEM_STORE1_FUNC(DATA)(cpu_env, VA, DATA, ctx, SLOT) #define GETBYTE_FUNC(X) \ _Generic((X), TCGv_i32 : gen_get_byte, TCGv_i64 : gen_get_byte_i64) #define fGETBYTE(N, SRC) GETBYTE_FUNC(SRC)(BYTE, N, SRC, true) #define fGETUBYTE(N, SRC) GETBYTE_FUNC(SRC)(BYTE, N, SRC, false) FWIW, I have been using 5.5. The errors you saw started around 7.5 and are easy to fix. Taylor
Cc'ing Eric/Thomas... On 9/29/20 10:11 PM, Taylor Simpson wrote: >> -----Original Message----- >> From: Philippe Mathieu-Daudé <philippe.mathieu.daude@gmail.com> On >> Behalf Of Philippe Mathieu-Daudé >> Sent: Tuesday, September 29, 2020 11:02 AM >> To: Taylor Simpson <tsimpson@quicinc.com>; qemu-devel@nongnu.org >> Cc: ale@rev.ng; riku.voipio@iki.fi; richard.henderson@linaro.org; >> laurent@vivier.eu; aleksandar.m.mail@gmail.com >> Subject: Re: [RFC PATCH v4 00/29] Hexagon patch series >> >> QEMU aims to support the 2 latest releases of supported distributions. >> From time to time a brave developer look at the different versions >> packaged and make some cleanup in the code base. It used to be tedious, >> now that repology.org exists it is a bit easier. >> >> The last effort is from Thomas, see commit efc6c070aca: >> >> The supported distributions use the following version >> of GCC: >> >> RHEL-7: 4.8.5 >> Debian (Stretch): 6.3.0 >> Debian (Jessie): 4.8.4 >> OpenBSD (ports): 4.9.4 >> FreeBSD (ports): 8.2.0 >> OpenSUSE Leap 15: 7.3.1 >> Ubuntu (Xenial): 5.3.1 >> macOS (Homebrew): 8.2.0 >> >> So we can safely assume GCC 4.8 these days. >> >> This is the "mandated" compiler version. > > Ouch! 4.8 is old enough that it doesn't support C11 _Generic which I am using. That needs at least GCC 4.9. > > Here are a couple of examples. As you can see, _Generic is used to dispatch to slightly different TCG generation functions depending on the type of the operands. I will scratch my head and figure out a different way to do this. > > #define MEM_STORE1_FUNC(X) \ > _Generic((X), int : gen_store1i, TCGv_i32 : gen_store1) > #define MEM_STORE1(VA, DATA, SLOT) \ > MEM_STORE1_FUNC(DATA)(cpu_env, VA, DATA, ctx, SLOT) > > #define GETBYTE_FUNC(X) \ > _Generic((X), TCGv_i32 : gen_get_byte, TCGv_i64 : gen_get_byte_i64) > #define fGETBYTE(N, SRC) GETBYTE_FUNC(SRC)(BYTE, N, SRC, true) > #define fGETUBYTE(N, SRC) GETBYTE_FUNC(SRC)(BYTE, N, SRC, false) > > > FWIW, I have been using 5.5. > > The errors you saw started around 7.5 and are easy to fix. > > > Taylor >
On 9/29/20 3:11 PM, Taylor Simpson wrote: > Ouch! 4.8 is old enough that it doesn't support C11 _Generic which I am using. That needs at least GCC 4.9. > > Here are a couple of examples. As you can see, _Generic is used to dispatch to slightly different TCG generation functions depending on the type of the operands. I will scratch my head and figure out a different way to do this. > > #define MEM_STORE1_FUNC(X) \ > _Generic((X), int : gen_store1i, TCGv_i32 : gen_store1) > #define MEM_STORE1(VA, DATA, SLOT) \ > MEM_STORE1_FUNC(DATA)(cpu_env, VA, DATA, ctx, SLOT) See if you can use __builtin_choose_expr() instead. Look at include/osdep/atomic.h which defines typeof_strip_qual() without _Generic. linux-user/qemu.h __put_user_e() is also an example of what appears to be a poor-man's replacement to _Generic. -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3226 Virtualization: qemu.org | libvirt.org
> -----Original Message----- > From: Eric Blake <eblake@redhat.com> > Sent: Tuesday, September 29, 2020 3:29 PM > To: Taylor Simpson <tsimpson@quicinc.com>; Philippe Mathieu-Daudé > <f4bug@amsat.org>; qemu-devel@nongnu.org > Cc: ale@rev.ng; riku.voipio@iki.fi; richard.henderson@linaro.org; > laurent@vivier.eu; aleksandar.m.mail@gmail.com > Subject: Re: [RFC PATCH v4 00/29] Hexagon patch series > > On 9/29/20 3:11 PM, Taylor Simpson wrote: > > > Ouch! 4.8 is old enough that it doesn't support C11 _Generic which I am > using. That needs at least GCC 4.9. > > > > Here are a couple of examples. As you can see, _Generic is used to > dispatch to slightly different TCG generation functions depending on the > type of the operands. I will scratch my head and figure out a different way to > do this. > > > > #define MEM_STORE1_FUNC(X) \ > > _Generic((X), int : gen_store1i, TCGv_i32 : gen_store1) > > #define MEM_STORE1(VA, DATA, SLOT) \ > > MEM_STORE1_FUNC(DATA)(cpu_env, VA, DATA, ctx, SLOT) > > See if you can use __builtin_choose_expr() instead. Look at > include/osdep/atomic.h which defines typeof_strip_qual() without > _Generic. linux-user/qemu.h __put_user_e() is also an example of what > appears to be a poor-man's replacement to _Generic. Thanks! It's a pretty straightforward translation for my use cases #define MEM_STORE1_FUNC(X) \ __builtin_choose_expr(__builtin_types_compatible_p(typeof(X), int), \ gen_store1i, \ gen_store1) #define MEM_STORE1(VA, DATA, SLOT) \ MEM_STORE1_FUNC(DATA)(cpu_env, VA, DATA, ctx, SLOT) Taylor
On 9/29/2020 1:01 PM, Philippe Mathieu-Daudé wrote: > On 9/29/20 5:53 PM, Taylor Simpson wrote: >>> -----Original Message----- >>> From: Philippe Mathieu-Daudé <philippe.mathieu.daude@gmail.com> On >>> Behalf Of Philippe Mathieu-Daudé >>> Sent: Tuesday, September 29, 2020 6:22 AM >>> To: Taylor Simpson <tsimpson@quicinc.com>; qemu-devel@nongnu.org >>> Cc: ale@rev.ng; riku.voipio@iki.fi; richard.henderson@linaro.org; >>> laurent@vivier.eu; aleksandar.m.mail@gmail.com >>> Subject: Re: [RFC PATCH v4 00/29] Hexagon patch series >>> >>> cc1: all warnings being treated as errors >>> make: *** [Makefile.ninja:638: >>> libqemu-hexagon-linux-user.fa.p/target_hexagon_decode.c.o] Error 1 >>> >>> $ gcc --version >>> gcc (GCC) 10.2.1 20200723 (Red Hat 10.2.1-1) >>> >> Thanks for all your feedback. I really appreciate it and will make the changes you mentioned. > No problem, I also appreciate the effort you did to address all > of the previous issues :) > >> I'm using an older GCC that doesn't have these errors. Is this the version of GCC that is recommended (mandated?) for building qemu? > QEMU aims to support the 2 latest releases of supported distributions. > From time to time a brave developer look at the different versions > packaged and make some cleanup in the code base. It used to be tedious, > now that repology.org exists it is a bit easier. > > The last effort is from Thomas, see commit efc6c070aca: > > The supported distributions use the following version > of GCC: > > RHEL-7: 4.8.5 > Debian (Stretch): 6.3.0 > Debian (Jessie): 4.8.4 > OpenBSD (ports): 4.9.4 OpenBSD as of 6.6 uses GCC 8.3.0 for our ports-gcc. > FreeBSD (ports): 8.2.0 > OpenSUSE Leap 15: 7.3.1 > Ubuntu (Xenial): 5.3.1 > macOS (Homebrew): 8.2.0 > > So we can safely assume GCC 4.8 these days. FreeBSD and OpenBSD nowadays use Clang for the (system) compiler. > > This is the "mandated" compiler version. > > > QEMU has some CI jobs, see: > https://wiki.qemu.org/Testing/CI > > You can use most of them by opening GitLab and Travis/Cirrus > (for GitHub, which you already use). > > GitLab will become our "gating CI" soon, so your series is > expected to pass all the GitLab jobs. IIRC running the tests > is as easy as register and push your branch to your account. > >> PS You were right about Richard recommending const. It's already on my TODO list from his review 😉 >> > =) > > Regards, > > Phil. > >> Thanks, >> Taylor >>
> -----Original Message----- > From: Laurent Vivier <laurent@vivier.eu> > Sent: Monday, September 28, 2020 3:03 PM > To: Taylor Simpson <tsimpson@quicinc.com>; qemu-devel@nongnu.org > Cc: richard.henderson@linaro.org; philmd@redhat.com; riku.voipio@iki.fi; > aleksandar.m.mail@gmail.com; ale@rev.ng > Subject: Re: [RFC PATCH v4 27/29] Hexagon (linux-user/hexagon) Linux user > emulation > > > + > > +syscall_nr_generators += { > > + 'hexagon': generator(sh, > > + arguments: [ 'cat', 'syscall_nr.h', '>', '@OUTPUT@' ], > > + output: '@BASENAME@_nr.h') > > Why do we need that? > The syscall_nr_generators is used to generate syscall_nr.h from syscall.tbl The other linux-user targets have this in their meson.build files. I'll remove if it's not needed. > > > +} > > diff --git a/linux-user/meson.build b/linux-user/meson.build > > index 2b94e4b..8b1dfc8 100644 > > --- a/linux-user/meson.build > > +++ b/linux-user/meson.build > > @@ -22,6 +22,7 @@ syscall_nr_generators = {} > > > > subdir('alpha') > > subdir('arm') > > +subdir('hexagon') > > so you don't need that either OK > > - grep -e "#define __NR_" -e "#define __NR3264" > > + grep -e "#define __NR_" -e "#define __NR3264" | grep -v > __NR_syscalls > > Why do you remove __NR_syscalls? Older kernels have a bunch of #undef __NR_syscalls #define __NR_syscalls X The script removes all #undef's but leaves the #define's, so we get compile errors. That symbol isn't used by qemu so it's safe to remove.
> -----Original Message----- > From: Philippe Mathieu-Daudé <philippe.mathieu.daude@gmail.com> On > Behalf Of Philippe Mathieu-Daudé > Sent: Tuesday, September 29, 2020 6:34 AM > To: Taylor Simpson <tsimpson@quicinc.com>; qemu-devel@nongnu.org > Cc: richard.henderson@linaro.org; laurent@vivier.eu; riku.voipio@iki.fi; > aleksandar.m.mail@gmail.com; ale@rev.ng > Subject: Re: [RFC PATCH v4 22/29] Hexagon (target/hexagon) macros > > On 9/28/20 7:28 PM, Taylor Simpson wrote: > > macros to interface with the generator > > macros referenced in instruction semantics > > > > +#ifndef HEXAGON_MACROS_H > > +#define HEXAGON_MACROS_H > > + > > +#include "qemu/osdep.h" > > Please do not include "qemu/osdep.h" in header. > > > +#include "qemu/host-utils.h" > > "qemu/host-utils.h" doesn't seem used. > > > +#include "cpu.h" > > +#include "hex_regs.h" > > +#include "reg_fields.h" > > + > [...] To clarify, does the "[...]" mean I should remove all the includes (and include them in the .c files that include this header file)? Thanks, Taylor
Le 30/09/2020 à 22:47, Taylor Simpson a écrit : > > >> -----Original Message----- >> From: Laurent Vivier <laurent@vivier.eu> >> Sent: Monday, September 28, 2020 3:03 PM >> To: Taylor Simpson <tsimpson@quicinc.com>; qemu-devel@nongnu.org >> Cc: richard.henderson@linaro.org; philmd@redhat.com; riku.voipio@iki.fi; >> aleksandar.m.mail@gmail.com; ale@rev.ng >> Subject: Re: [RFC PATCH v4 27/29] Hexagon (linux-user/hexagon) Linux user >> emulation >> >>> + >>> +syscall_nr_generators += { >>> + 'hexagon': generator(sh, >>> + arguments: [ 'cat', 'syscall_nr.h', '>', '@OUTPUT@' ], >>> + output: '@BASENAME@_nr.h') >> >> Why do we need that? >> The syscall_nr_generators is used to generate syscall_nr.h from syscall.tbl > > The other linux-user targets have this in their meson.build files. I'll remove if it's not needed. Not all the targets (only the ones with syscall.tbl) and they call syscallhdr.sh and not cat. So you can remove it. >> >>> +} >>> diff --git a/linux-user/meson.build b/linux-user/meson.build >>> index 2b94e4b..8b1dfc8 100644 >>> --- a/linux-user/meson.build >>> +++ b/linux-user/meson.build >>> @@ -22,6 +22,7 @@ syscall_nr_generators = {} >>> >>> subdir('alpha') >>> subdir('arm') >>> +subdir('hexagon') >> >> so you don't need that either > > OK > >>> - grep -e "#define __NR_" -e "#define __NR3264" >>> + grep -e "#define __NR_" -e "#define __NR3264" | grep -v >> __NR_syscalls >> >> Why do you remove __NR_syscalls? > > Older kernels have a bunch of > #undef __NR_syscalls > #define __NR_syscalls X > > The script removes all #undef's but leaves the #define's, so we get compile errors. That symbol isn't used by qemu so it's safe to remove. > As the syscall_nr.h generated from syscall.tbl don't have this symbol, I think we can remove it. But I'm very surprised it doesn't work with it for you. Could you put this one-line change in a separate patch? The best would be to re-run it once the change is made to update all the generated syscall_nr.h without the __NR_syscalls line. Moreover the syscall_nr.h I generate from linux-5.9 for hexagon is different from the one you put in this series (the 1024 -> 1079 part is missing). Thanks, Laurent
On 9/30/20 11:22 PM, Taylor Simpson wrote: >> -----Original Message----- >> From: Philippe Mathieu-Daudé <philippe.mathieu.daude@gmail.com> On >> Behalf Of Philippe Mathieu-Daudé >> Sent: Tuesday, September 29, 2020 6:34 AM >> To: Taylor Simpson <tsimpson@quicinc.com>; qemu-devel@nongnu.org >> Cc: richard.henderson@linaro.org; laurent@vivier.eu; riku.voipio@iki.fi; >> aleksandar.m.mail@gmail.com; ale@rev.ng >> Subject: Re: [RFC PATCH v4 22/29] Hexagon (target/hexagon) macros >> >> On 9/28/20 7:28 PM, Taylor Simpson wrote: >>> macros to interface with the generator >>> macros referenced in instruction semantics >>> >>> +#ifndef HEXAGON_MACROS_H >>> +#define HEXAGON_MACROS_H >>> + >>> +#include "qemu/osdep.h" >> >> Please do not include "qemu/osdep.h" in header. >> >>> +#include "qemu/host-utils.h" >> >> "qemu/host-utils.h" doesn't seem used. >> >>> +#include "cpu.h" >>> +#include "hex_regs.h" >>> +#include "reg_fields.h" >>> + >> [...] > > To clarify, does the "[...]" mean I should remove all the includes (and include them in the .c files that include this header file)? No! No further comment on the rest of this patch, so to avoid you looking for any comment, I simply stripped the rest. ;) > > Thanks, > Taylor > >
> -----Original Message----- > From: Laurent Vivier <laurent@vivier.eu> > Sent: Thursday, October 1, 2020 1:53 AM > To: Taylor Simpson <tsimpson@quicinc.com>; qemu-devel@nongnu.org > Cc: richard.henderson@linaro.org; philmd@redhat.com; riku.voipio@iki.fi; > aleksandar.m.mail@gmail.com; ale@rev.ng > Subject: Re: [RFC PATCH v4 27/29] Hexagon (linux-user/hexagon) Linux user > emulation > > Le 30/09/2020 à 22:47, Taylor Simpson a écrit : > > > > > >> -----Original Message----- > >> From: Laurent Vivier <laurent@vivier.eu> > >> Sent: Monday, September 28, 2020 3:03 PM > >> To: Taylor Simpson <tsimpson@quicinc.com>; qemu-devel@nongnu.org > >> Cc: richard.henderson@linaro.org; philmd@redhat.com; riku.voipio@iki.fi; > >> aleksandar.m.mail@gmail.com; ale@rev.ng > >> Subject: Re: [RFC PATCH v4 27/29] Hexagon (linux-user/hexagon) Linux > user > >> emulation > >> > >>> + > >>> +syscall_nr_generators += { > >>> + 'hexagon': generator(sh, > >>> + arguments: [ 'cat', 'syscall_nr.h', '>', '@OUTPUT@' ], > >>> + output: '@BASENAME@_nr.h') > >> > >> Why do we need that? > >> The syscall_nr_generators is used to generate syscall_nr.h from syscall.tbl > > > > The other linux-user targets have this in their meson.build files. I'll remove > if it's not needed. > > Not all the targets (only the ones with syscall.tbl) and they call > syscallhdr.sh and not cat. So you can remove it. > > >> > >>> +} > >>> diff --git a/linux-user/meson.build b/linux-user/meson.build > >>> index 2b94e4b..8b1dfc8 100644 > >>> --- a/linux-user/meson.build > >>> +++ b/linux-user/meson.build > >>> @@ -22,6 +22,7 @@ syscall_nr_generators = {} > >>> > >>> subdir('alpha') > >>> subdir('arm') > >>> +subdir('hexagon') > >> > >> so you don't need that either > > > > OK > > > >>> - grep -e "#define __NR_" -e "#define __NR3264" > >>> + grep -e "#define __NR_" -e "#define __NR3264" | grep -v > >> __NR_syscalls > >> > >> Why do you remove __NR_syscalls? > > > > Older kernels have a bunch of > > #undef __NR_syscalls > > #define __NR_syscalls X > > > > The script removes all #undef's but leaves the #define's, so we get compile > errors. That symbol isn't used by qemu so it's safe to remove. > > > > As the syscall_nr.h generated from syscall.tbl don't have this symbol, I > think we can remove it. But I'm very surprised it doesn't work with it > for you. > > Could you put this one-line change in a separate patch? > > The best would be to re-run it once the change is made to update all the > generated syscall_nr.h without the __NR_syscalls line. > > Moreover the syscall_nr.h I generate from linux-5.9 for hexagon is > different from the one you put in this series (the 1024 -> 1079 part is > missing). The syscall_nr.h I submitted is from 4.9, and we are in the process of upgrading the toolchain/kernel/etc. Which versions of the kernel does qemu expect to support? I'll investigate whether those versions have multiple __NR_syscalls. If not, there's no need for that change. Taylor
Le 01/10/2020 à 17:40, Taylor Simpson a écrit : > > >> -----Original Message----- >> From: Laurent Vivier <laurent@vivier.eu> >> Sent: Thursday, October 1, 2020 1:53 AM >> To: Taylor Simpson <tsimpson@quicinc.com>; qemu-devel@nongnu.org >> Cc: richard.henderson@linaro.org; philmd@redhat.com; riku.voipio@iki.fi; >> aleksandar.m.mail@gmail.com; ale@rev.ng >> Subject: Re: [RFC PATCH v4 27/29] Hexagon (linux-user/hexagon) Linux user >> emulation >> >> Le 30/09/2020 à 22:47, Taylor Simpson a écrit : >>> >>> >>>> -----Original Message----- >>>> From: Laurent Vivier <laurent@vivier.eu> >>>> Sent: Monday, September 28, 2020 3:03 PM >>>> To: Taylor Simpson <tsimpson@quicinc.com>; qemu-devel@nongnu.org >>>> Cc: richard.henderson@linaro.org; philmd@redhat.com; riku.voipio@iki.fi; >>>> aleksandar.m.mail@gmail.com; ale@rev.ng >>>> Subject: Re: [RFC PATCH v4 27/29] Hexagon (linux-user/hexagon) Linux >> user >>>> emulation >>>> >>>>> + >>>>> +syscall_nr_generators += { >>>>> + 'hexagon': generator(sh, >>>>> + arguments: [ 'cat', 'syscall_nr.h', '>', '@OUTPUT@' ], >>>>> + output: '@BASENAME@_nr.h') >>>> >>>> Why do we need that? >>>> The syscall_nr_generators is used to generate syscall_nr.h from syscall.tbl >>> >>> The other linux-user targets have this in their meson.build files. I'll remove >> if it's not needed. >> >> Not all the targets (only the ones with syscall.tbl) and they call >> syscallhdr.sh and not cat. So you can remove it. >> >>>> >>>>> +} >>>>> diff --git a/linux-user/meson.build b/linux-user/meson.build >>>>> index 2b94e4b..8b1dfc8 100644 >>>>> --- a/linux-user/meson.build >>>>> +++ b/linux-user/meson.build >>>>> @@ -22,6 +22,7 @@ syscall_nr_generators = {} >>>>> >>>>> subdir('alpha') >>>>> subdir('arm') >>>>> +subdir('hexagon') >>>> >>>> so you don't need that either >>> >>> OK >>> >>>>> - grep -e "#define __NR_" -e "#define __NR3264" >>>>> + grep -e "#define __NR_" -e "#define __NR3264" | grep -v >>>> __NR_syscalls >>>> >>>> Why do you remove __NR_syscalls? >>> >>> Older kernels have a bunch of >>> #undef __NR_syscalls >>> #define __NR_syscalls X >>> >>> The script removes all #undef's but leaves the #define's, so we get compile >> errors. That symbol isn't used by qemu so it's safe to remove. >>> >> >> As the syscall_nr.h generated from syscall.tbl don't have this symbol, I >> think we can remove it. But I'm very surprised it doesn't work with it >> for you. >> >> Could you put this one-line change in a separate patch? >> >> The best would be to re-run it once the change is made to update all the >> generated syscall_nr.h without the __NR_syscalls line. >> >> Moreover the syscall_nr.h I generate from linux-5.9 for hexagon is >> different from the one you put in this series (the 1024 -> 1079 part is >> missing). > > The syscall_nr.h I submitted is from 4.9, and we are in the process of upgrading the toolchain/kernel/etc. Do you know why the syscalls between 1024 and 1079 are in your syscall_nr.h while they are not in linux 4.9? (They are normally enabled by __ARCH_WANT_SYSCALL_DEPRECATED) > > Which versions of the kernel does qemu expect to support? I'll investigate whether those versions have multiple __NR_syscalls. If not, there's no need for that change. For linux-user, we have all the linux-user targets at the same syscall API level, and we update them to have the definitions from the latest kernel. Thanks, Laurent
On 9/29/20 6:37 AM, Philippe Mathieu-Daudé wrote: > On 9/28/20 7:28 PM, Taylor Simpson wrote: >> Run the C preprocessor across the instruction definition and encoding >> files to expand macros and prepare the iset.py file. The resulting >> fill contains python data structures used to build the decode tree. >> >> Signed-off-by: Taylor Simpson <tsimpson@quicinc.com> >> --- >> target/hexagon/gen_dectree_import.c | 191 ++++++++++++++++++++++++++++++++++++ >> 1 file changed, 191 insertions(+) >> create mode 100644 target/hexagon/gen_dectree_import.c >> >> diff --git a/target/hexagon/gen_dectree_import.c b/target/hexagon/gen_dectree_import.c >> new file mode 100644 >> index 0000000..237726e >> --- /dev/null >> +++ b/target/hexagon/gen_dectree_import.c >> @@ -0,0 +1,191 @@ >> +/* >> + * Copyright(c) 2019-2020 Qualcomm Innovation Center, Inc. All Rights Reserved. >> + * >> + * This program is free software; you can redistribute it and/or modify >> + * it under the terms of the GNU General Public License as published by >> + * the Free Software Foundation; either version 2 of the License, or >> + * (at your option) any later version. >> + * >> + * This program is distributed in the hope that it will be useful, >> + * but WITHOUT ANY WARRANTY; without even the implied warranty of >> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >> + * GNU General Public License for more details. >> + * >> + * You should have received a copy of the GNU General Public License >> + * along with this program; if not, see <http://www.gnu.org/licenses/>. >> + */ >> + >> +/* >> + * This program generates the encodings file that is processed by >> + * the dectree.py script to produce the decoding tree. We use the C >> + * preprocessor to manipulate the files imported from the Hexagon >> + * architecture library. >> + */ >> +#include "qemu/osdep.h" >> +#include "opcodes.h" >> + >> +#define STRINGIZE(X) #X >> + >> +const char *opcode_names[] = { > > Richard will probably ask to use "const char *const opcode_names[]". It is good practice, even if this is a generator and so doesn't actually impact the qemu executable itself. ;-) >> +const char *opcode_syntax[XX_LAST_OPCODE]; >> + >> +/* >> + * Process the instruction definitions >> + * Scalar core instructions have the following form >> + * Q6INSN(A2_add,"Rd32=add(Rs32,Rt32)",ATTRIBS(), >> + * "Add 32-bit registers", >> + * { RdV=RsV+RtV;}) >> + */ >> +void opcode_init(void) >> +{ >> +#define Q6INSN(TAG, BEH, ATTRIBS, DESCR, SEM) \ >> + opcode_syntax[TAG] = BEH; >> +#define EXTINSN(TAG, BEH, ATTRIBS, DESCR, SEM) \ >> + opcode_syntax[TAG] = BEH; >> +#include "imported/allidefs.def" >> +#undef Q6INSN >> +#undef EXTINSN >> +} What is it that about this case that can't be initialized at compile time? r~
> -----Original Message----- > From: Richard Henderson <richard.henderson@linaro.org> > Sent: Thursday, October 1, 2020 1:54 PM > To: Philippe Mathieu-Daudé <f4bug@amsat.org>; Taylor Simpson > <tsimpson@quicinc.com>; qemu-devel@nongnu.org > Cc: laurent@vivier.eu; riku.voipio@iki.fi; aleksandar.m.mail@gmail.com; > ale@rev.ng > Subject: Re: [RFC PATCH v4 19/29] Hexagon (target/hexagon) generator > phase 3 - C preprocessor for decode tree > > >> +void opcode_init(void) > >> +{ > >> +#define Q6INSN(TAG, BEH, ATTRIBS, DESCR, SEM) \ > >> + opcode_syntax[TAG] = BEH; > >> +#define EXTINSN(TAG, BEH, ATTRIBS, DESCR, SEM) \ > >> + opcode_syntax[TAG] = BEH; > >> +#include "imported/allidefs.def" > >> +#undef Q6INSN > >> +#undef EXTINSN > >> +} > > What is it that about this case that can't be initialized at compile time? Several of the Q6INSN's in the imported directory have a ; after them - bleh. Here's an example. Q6INSN(L2_loadw_locked,"Rd32=memw_locked(Rs32)", ATTRIBS(A_LOAD,A_RESTRICT_SLOT0ONLY), "Load word with lock", { fEA_REG(RsV); fLOAD_LOCKED(1,4,u,EA,RdV) }); So, if I do this, there are syntax errors. const char * const opcode_syntax[XX_LAST_OPCODE] = { #define Q6INSN(TAG, BEH, ATTRIBS, DESCR, SEM) \ [TAG] = BEH, #define EXTINSN(TAG, BEH, ATTRIBS, DESCR, SEM) \ [TAG] = BEH, #include "imported/allidefs.def" #undef Q6INSN #undef EXTINSN }; I'll remove the extra ;'s from the imported files and make the change in this file. Taylor
On 9/28/20 12:28 PM, Taylor Simpson wrote: > This series adds support for the Hexagon processor with Linux user support > > See patch 02/34 Hexagon README for detailed information. > > Once the series is applied, the Hexagon port will pass "make check-tcg". > The series also includes Hexagon-specific tests in tcg/tests/hexagon. > > The series is also available at https://github.com/quic/qemu on branch > small_series_v4. BTW, some whitespace warnings when applying this series. r~ > Applying: Hexagon Update MAINTAINERS file > Applying: Hexagon (target/hexagon) README > .git/rebase-apply/patch:247: new blank line at EOF. > + > warning: 1 line adds whitespace errors. > Applying: Hexagon (include/elf.h) ELF machine definition > Applying: Hexagon (target/hexagon) scalar core definition > Applying: Hexagon (disas) disassembler > .git/rebase-apply/patch:87: new blank line at EOF. > + > warning: 1 line adds whitespace errors. > Applying: Hexagon (target/hexagon) register names > Applying: Hexagon (target/hexagon) scalar core helpers > .git/rebase-apply/patch:431: new blank line at EOF. > + > warning: 1 line adds whitespace errors. > Applying: Hexagon (target/hexagon) GDB Stub > Applying: Hexagon (target/hexagon) architecture types > Applying: Hexagon (target/hexagon) instruction and packet types > Applying: Hexagon (target/hexagon) register fields > .git/rebase-apply/patch:132: new blank line at EOF. > + > warning: 1 line adds whitespace errors. > Applying: Hexagon (target/hexagon) instruction attributes > .git/rebase-apply/patch:149: new blank line at EOF. > + > warning: 1 line adds whitespace errors. > Applying: Hexagon (target/hexagon) instruction/packet decode > Applying: Hexagon (target/hexagon) instruction printing > .git/rebase-apply/patch:136: new blank line at EOF. > + > warning: 1 line adds whitespace errors. > Applying: Hexagon (target/hexagon) utility functions > .git/rebase-apply/patch:512: new blank line at EOF. > + > .git/rebase-apply/patch:887: new blank line at EOF. > + > .git/rebase-apply/patch:1670: new blank line at EOF. > + > warning: 3 lines add whitespace errors. > Applying: Hexagon (target/hexagon/imported) arch import > .git/rebase-apply/patch:598: space before tab in indent. > fSETBYTE(i,RdV,fSATUB(fGETHALF(i,RssV)+fGETHALF(i,RttV))); > .git/rebase-apply/patch:1329: space before tab in indent. > RdV = RsV; > .git/rebase-apply/patch:6793: space before tab in indent. > sys_icinva(thread, (REG),insn->slot); > .git/rebase-apply/patch:7280: space before tab in indent. > fMPY16SS(fGETBYTE(1,RssV),fGETUBYTE(1,RttV))))); > .git/rebase-apply/patch:7282: space before tab in indent. > fMPY16SS(fGETBYTE(3,RssV),fGETUBYTE(3,RttV))))); > warning: squelched 41 whitespace errors > warning: 46 lines add whitespace errors. > Applying: Hexagon (target/hexagon) generator phase 1 - C preprocessor for semantics > Applying: Hexagon (target/hexagon) generator phase 2 - generate header files > Applying: Hexagon (target/hexagon) generator phase 3 - C preprocessor for decode tree > Applying: Hexagon (target/hexagon) generater phase 4 - decode tree > Applying: Hexagon (target/hexagon) opcode data structures > Applying: Hexagon (target/hexagon) macros > Applying: Hexagon (target/hexagon) instruction classes > .git/rebase-apply/patch:141: new blank line at EOF. > + > .git/rebase-apply/patch:199: new blank line at EOF. > + > warning: 2 lines add whitespace errors. > Applying: Hexagon (target/hexagon) TCG generation > Applying: Hexagon (target/hexagon) TCG for instructions with multiple definitions > Applying: Hexagon (target/hexagon) translation > Applying: Hexagon (linux-user/hexagon) Linux user emulation > .git/rebase-apply/patch:405: new blank line at EOF. > + > warning: 1 line adds whitespace errors. > Applying: Hexagon (tests/tcg/hexagon) TCG tests > .git/rebase-apply/patch:1314: new blank line at EOF. > + > warning: 1 line adds whitespace errors. > Applying: Hexagon build infrastructure