scripts/decodetree.py | 1026 +++++++++++++++++++++++++++++++++++++++++ tests/Makefile.include | 9 +- tests/decode/check.sh | 16 + tests/decode/err_argset1.def | 1 + tests/decode/err_argset2.def | 1 + tests/decode/err_field1.def | 1 + tests/decode/err_field2.def | 1 + tests/decode/err_field3.def | 1 + tests/decode/err_field4.def | 2 + tests/decode/err_field5.def | 1 + tests/decode/err_init1.def | 2 + tests/decode/err_init2.def | 2 + tests/decode/err_init3.def | 3 + tests/decode/err_init4.def | 3 + tests/decode/err_overlap1.def | 2 + tests/decode/err_overlap2.def | 2 + tests/decode/err_overlap3.def | 2 + tests/decode/err_overlap4.def | 2 + tests/decode/err_overlap5.def | 1 + tests/decode/err_overlap6.def | 2 + tests/decode/err_overlap7.def | 2 + 21 files changed, 1081 insertions(+), 1 deletion(-) create mode 100755 scripts/decodetree.py create mode 100755 tests/decode/check.sh create mode 100644 tests/decode/err_argset1.def create mode 100644 tests/decode/err_argset2.def create mode 100644 tests/decode/err_field1.def create mode 100644 tests/decode/err_field2.def create mode 100644 tests/decode/err_field3.def create mode 100644 tests/decode/err_field4.def create mode 100644 tests/decode/err_field5.def create mode 100644 tests/decode/err_init1.def create mode 100644 tests/decode/err_init2.def create mode 100644 tests/decode/err_init3.def create mode 100644 tests/decode/err_init4.def create mode 100644 tests/decode/err_overlap1.def create mode 100644 tests/decode/err_overlap2.def create mode 100644 tests/decode/err_overlap3.def create mode 100644 tests/decode/err_overlap4.def create mode 100644 tests/decode/err_overlap5.def create mode 100644 tests/decode/err_overlap6.def create mode 100644 tests/decode/err_overlap7.def
To be used to decode ARM SVE, but could be used for any fixed-width ISA.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
Changes since v1:
* Pass pycodestyle-{2,3}.
* Support 16-bit and 32-bit insns (I have a def file for thumb1).
* Testsuite (only negative tests so far).
* Called translate functions default to static.
* Notice duplicate assignments and missing assignments to fields.
* Use '-' to indicate a non-decoded bit, as opposed to '.' which
must be filled in elsewhere by a format or a field.
---
scripts/decodetree.py | 1026 +++++++++++++++++++++++++++++++++++++++++
tests/Makefile.include | 9 +-
tests/decode/check.sh | 16 +
tests/decode/err_argset1.def | 1 +
tests/decode/err_argset2.def | 1 +
tests/decode/err_field1.def | 1 +
tests/decode/err_field2.def | 1 +
tests/decode/err_field3.def | 1 +
tests/decode/err_field4.def | 2 +
tests/decode/err_field5.def | 1 +
tests/decode/err_init1.def | 2 +
tests/decode/err_init2.def | 2 +
tests/decode/err_init3.def | 3 +
tests/decode/err_init4.def | 3 +
tests/decode/err_overlap1.def | 2 +
tests/decode/err_overlap2.def | 2 +
tests/decode/err_overlap3.def | 2 +
tests/decode/err_overlap4.def | 2 +
tests/decode/err_overlap5.def | 1 +
tests/decode/err_overlap6.def | 2 +
tests/decode/err_overlap7.def | 2 +
21 files changed, 1081 insertions(+), 1 deletion(-)
create mode 100755 scripts/decodetree.py
create mode 100755 tests/decode/check.sh
create mode 100644 tests/decode/err_argset1.def
create mode 100644 tests/decode/err_argset2.def
create mode 100644 tests/decode/err_field1.def
create mode 100644 tests/decode/err_field2.def
create mode 100644 tests/decode/err_field3.def
create mode 100644 tests/decode/err_field4.def
create mode 100644 tests/decode/err_field5.def
create mode 100644 tests/decode/err_init1.def
create mode 100644 tests/decode/err_init2.def
create mode 100644 tests/decode/err_init3.def
create mode 100644 tests/decode/err_init4.def
create mode 100644 tests/decode/err_overlap1.def
create mode 100644 tests/decode/err_overlap2.def
create mode 100644 tests/decode/err_overlap3.def
create mode 100644 tests/decode/err_overlap4.def
create mode 100644 tests/decode/err_overlap5.def
create mode 100644 tests/decode/err_overlap6.def
create mode 100644 tests/decode/err_overlap7.def
diff --git a/scripts/decodetree.py b/scripts/decodetree.py
new file mode 100755
index 0000000000..3c20acf700
--- /dev/null
+++ b/scripts/decodetree.py
@@ -0,0 +1,1026 @@
+#!/usr/bin/env python
+#
+# Generate a decoding tree from a specification file.
+#
+# The tree is built from instruction "patterns". A pattern may represent
+# a single architectural instruction or a group of same, depending on what
+# is convenient for further processing.
+#
+# Each pattern has "fixedbits" & "fixedmask", the combination of which
+# describes the condition under which the pattern is matched:
+#
+# (insn & fixedmask) == fixedbits
+#
+# Each pattern may have "fields", which are extracted from the insn and
+# passed along to the translator. Examples of such are registers,
+# immediates, and sub-opcodes.
+#
+# In support of patterns, one may declare fields, argument sets, and
+# formats, each of which may be re-used to simplify further definitions.
+#
+# *** Field syntax:
+#
+# field_def := '%' identifier ( unnamed_field )+ ( !function=identifier )?
+# unnamed_field := number ':' ( 's' ) number
+#
+# For unnamed_field, the first number is the least-significant bit position of
+# the field and the second number is the length of the field. If the 's' is
+# present, the field is considered signed. If multiple unnamed_fields are
+# present, they are concatenated. In this way one can define disjoint fields.
+#
+# If !function is specified, the concatenated result is passed through the
+# named function, taking and returning an integral value.
+#
+# FIXME: the fields of the structure into which this result will be stored
+# is restricted to "int". Which means that we cannot expand 64-bit items.
+#
+# Field examples:
+#
+# %disp 0:s16 -- sextract(i, 0, 16)
+# %imm9 16:6 10:3 -- extract(i, 16, 6) << 3 | extract(i, 10, 3)
+# %disp12 0:s1 1:1 2:10 -- sextract(i, 0, 1) << 11
+# | extract(i, 1, 1) << 10
+# | extract(i, 2, 10)
+# %shimm8 5:s8 13:1 !function=expand_shimm8
+# -- expand_shimm8(sextract(i, 5, 8) << 1
+# | extract(i, 13, 1))
+#
+# *** Argument set syntax:
+#
+# args_def := '&' identifier ( args_elt )+
+# args_elt := identifier
+#
+# Each args_elt defines an argument within the argument set.
+# Each argument set will be rendered as a C structure "arg_$name"
+# with each of the fields being one of the member arguments.
+#
+# Argument set examples:
+#
+# ®3 ra rb rc
+# &loadstore reg base offset
+#
+# *** Format syntax:
+#
+# fmt_def := '@' identifier ( fmt_elt )+
+# fmt_elt := fixedbit_elt | field_elt | field_ref | args_ref
+# fixedbit_elt := [01.-]+
+# field_elt := identifier ':' 's'? number
+# field_ref := '%' identifier | identifier '=' '%' identifier
+# args_ref := '&' identifier
+#
+# Defining a format is a handy way to avoid replicating groups of fields
+# across many instruction patterns.
+#
+# A fixedbit_elt describes a contiguous sequence of bits that must
+# be 1, 0, [.-] for don't care. The difference between '.' and '-'
+# is that '.' means that the bit will be covered with a field and
+# '-' means that the bit is really ignored by the cpu and will not
+# be covered by a field.
+#
+# A field_elt describes a simple field only given a width; the position of
+# the field is implied by its position with respect to other fixedbit_elt
+# and field_elt.
+#
+# If any fixedbit_elt or field_elt appear then all bits must be defined.
+# Padding with a fixedbit_elt of all '.' is an easy way to accomplish that.
+#
+# A field_ref incorporates a field by reference. This is the only way to
+# add a complex field to a format. A field may be renamed in the process
+# via assignment to another identifier. This is intended to allow the
+# same argument set be used with disjoint named fields.
+#
+# A single args_ref may specify an argument set to use for the format.
+# The set of fields in the format must be a subset of the arguments in
+# the argument set. If an argument set is not specified, one will be
+# inferred from the set of fields.
+#
+# It is recommended, but not required, that all field_ref and args_ref
+# appear at the end of the line, not interleaving with fixedbit_elf or
+# field_elt.
+#
+# Format examples:
+#
+# @opr ...... ra:5 rb:5 ... 0 ....... rc:5
+# @opi ...... ra:5 lit:8 1 ....... rc:5
+#
+# *** Pattern syntax:
+#
+# pat_def := identifier ( pat_elt )+
+# pat_elt := fixedbit_elt | field_elt | field_ref
+# | args_ref | fmt_ref | const_elt
+# fmt_ref := '@' identifier
+# const_elt := identifier '=' number
+#
+# The fixedbit_elt and field_elt specifiers are unchanged from formats.
+# A pattern that does not specify a named format will have one inferred
+# from a referenced argument set (if present) and the set of fields.
+#
+# A const_elt allows a argument to be set to a constant value. This may
+# come in handy when fields overlap between patterns and one has to
+# include the values in the fixedbit_elt instead.
+#
+# The decoder will call a translator function for each pattern matched.
+#
+# Pattern examples:
+#
+# addl_r 010000 ..... ..... .... 0000000 ..... @opr
+# addl_i 010000 ..... ..... .... 0000000 ..... @opi
+#
+# which will, in part, invoke
+#
+# trans_addl_r(ctx, &arg_opr, insn)
+# and
+# trans_addl_i(ctx, &arg_opi, insn)
+#
+
+import io
+import re
+import sys
+import getopt
+import pdb
+
+insnwidth = 32
+fields = {}
+arguments = {}
+formats = {}
+patterns = []
+
+translate_prefix = 'trans'
+translate_scope = 'static '
+output_file = sys.stdout
+input_file = ''
+insntype = 'uint32_t'
+
+re_ident = '[a-zA-Z][a-zA-Z0-9_]*'
+
+
+def error(lineno, *args):
+ """Print an error message from file:line and args and exit."""
+ if lineno:
+ r = '{0}:{1}: error:'.format(input_file, lineno)
+ elif input_file:
+ r = '{0}: error:'.format(input_file)
+ else:
+ r = 'error:'
+ for a in args:
+ r += ' ' + str(a)
+ r += '\n'
+ sys.stderr.write(r)
+ exit(1)
+
+
+def output(*args):
+ global output_file
+ for a in args:
+ output_file.write(a)
+
+
+if sys.version_info >= (3, 0):
+ re_fullmatch = re.fullmatch
+else:
+ def re_fullmatch(pat, str):
+ return re.match('^' + pat + '$', str)
+
+
+def output_autogen():
+ output('/* This file is autogenerated by scripts/decodetree.py. */\n\n')
+
+
+def str_indent(c):
+ """Return a string with C spaces"""
+ return ' ' * c
+
+
+def str_fields(fields):
+ """Return a string uniquely identifing FIELDS"""
+ r = ''
+ for n in sorted(fields.keys()):
+ r += '_' + n
+ return r[1:]
+
+
+def str_match_bits(bits, mask):
+ """Return a string pretty-printing BITS/MASK"""
+ global insnwidth
+
+ i = 1 << (insnwidth - 1)
+ space = 0x01010100
+ r = ''
+ while i != 0:
+ if i & mask:
+ if i & bits:
+ r += '1'
+ else:
+ r += '0'
+ else:
+ r += '.'
+ if i & space:
+ r += ' '
+ i >>= 1
+ return r
+
+
+def is_pow2(x):
+ """Return true iff X is equal to a power of 2."""
+ return (x & (x - 1)) == 0
+
+
+def ctz(x):
+ """Return the number of times 2 factors into X."""
+ r = 0
+ while ((x >> r) & 1) == 0:
+ r += 1
+ return r
+
+
+def is_contiguous(bits):
+ shift = ctz(bits)
+ if is_pow2((bits >> shift) + 1):
+ return shift
+ else:
+ return -1
+
+
+def eq_fields_for_args(flds_a, flds_b):
+ if len(flds_a) != len(flds_b):
+ return False
+ for k, a in flds_a.items():
+ if k not in flds_b:
+ return False
+ return True
+
+
+def eq_fields_for_fmts(flds_a, flds_b):
+ if len(flds_a) != len(flds_b):
+ return False
+ for k, a in flds_a.items():
+ if k not in flds_b:
+ return False
+ b = flds_b[k]
+ if a.__class__ != b.__class__ or a != b:
+ return False
+ return True
+
+
+class Field:
+ """Class representing a simple instruction field"""
+ def __init__(self, sign, pos, len):
+ self.sign = sign
+ self.pos = pos
+ self.len = len
+ self.mask = ((1 << len) - 1) << pos
+
+ def __str__(self):
+ if self.sign:
+ s = 's'
+ else:
+ s = ''
+ return str(pos) + ':' + s + str(len)
+
+ def str_extract(self):
+ if self.sign:
+ extr = 'sextract32'
+ else:
+ extr = 'extract32'
+ return '{0}(insn, {1}, {2})'.format(extr, self.pos, self.len)
+
+ def __eq__(self, other):
+ return self.sign == other.sign and self.sign == other.sign
+
+ def __ne__(self, other):
+ return not self.__eq__(other)
+# end Field
+
+
+class MultiField:
+ """Class representing a compound instruction field"""
+ def __init__(self, subs, mask):
+ self.subs = subs
+ self.sign = subs[0].sign
+ self.mask = mask
+
+ def __str__(self):
+ return str(self.subs)
+
+ def str_extract(self):
+ ret = '0'
+ pos = 0
+ for f in reversed(self.subs):
+ if pos == 0:
+ ret = f.str_extract()
+ else:
+ ret = 'deposit32({0}, {1}, {2}, {3})' \
+ .format(ret, pos, 32 - pos, f.str_extract())
+ pos += f.len
+ return ret
+
+ def __ne__(self, other):
+ if len(self.subs) != len(other.subs):
+ return True
+ for a, b in zip(self.subs, other.subs):
+ if a.__class__ != b.__class__ or a != b:
+ return True
+ return False
+
+ def __eq__(self, other):
+ return not self.__ne__(other)
+# end MultiField
+
+
+class ConstField:
+ """Class representing an argument field with constant value"""
+ def __init__(self, value):
+ self.value = value
+ self.mask = 0
+ self.sign = value < 0
+
+ def __str__(self):
+ return str(self.value)
+
+ def str_extract(self):
+ return str(self.value)
+
+ def __cmp__(self, other):
+ return self.value - other.value
+# end ConstField
+
+
+class FunctionField:
+ """Class representing a field passed through an expander"""
+ def __init__(self, func, base):
+ self.mask = base.mask
+ self.sign = base.sign
+ self.base = base
+ self.func = func
+
+ def __str__(self):
+ return self.func + '(' + str(self.base) + ')'
+
+ def str_extract(self):
+ return self.func + '(' + self.base.str_extract() + ')'
+
+ def __eq__(self, other):
+ return self.func == other.func and self.base == other.base
+
+ def __ne__(self, other):
+ return not self.__eq__(other)
+# end FunctionField
+
+
+class Arguments:
+ """Class representing the extracted fields of a format"""
+ def __init__(self, nm, flds):
+ self.name = nm
+ self.fields = sorted(flds)
+
+ def __str__(self):
+ return self.name + ' ' + str(self.fields)
+
+ def struct_name(self):
+ return 'arg_' + self.name
+
+ def output_def(self):
+ output('typedef struct {\n')
+ for n in self.fields:
+ output(' int ', n, ';\n')
+ output('} ', self.struct_name(), ';\n\n')
+# end Arguments
+
+
+class General:
+ """Common code between instruction formats and instruction patterns"""
+ def __init__(self, name, lineno, base, fixb, fixm, udfm, fldm, flds):
+ self.name = name
+ self.lineno = lineno
+ self.base = base
+ self.fixedbits = fixb
+ self.fixedmask = fixm
+ self.undefmask = udfm
+ self.fieldmask = fldm
+ self.fields = flds
+
+ def __str__(self):
+ r = self.name
+ if self.base:
+ r = r + ' ' + self.base.name
+ else:
+ r = r + ' ' + str(self.fields)
+ r = r + ' ' + str_match_bits(self.fixedbits, self.fixedmask)
+ return r
+
+ def str1(self, i):
+ return str_indent(i) + self.__str__()
+# end General
+
+
+class Format(General):
+ """Class representing an instruction format"""
+
+ def extract_name(self):
+ return 'extract_' + self.name
+
+ def output_extract(self):
+ output('static void ', self.extract_name(), '(',
+ self.base.struct_name(), ' *a, ', insntype, ' insn)\n{\n')
+ for n, f in self.fields.items():
+ output(' a->', n, ' = ', f.str_extract(), ';\n')
+ output('}\n\n')
+# end Format
+
+
+class Pattern(General):
+ """Class representing an instruction pattern"""
+
+ def output_decl(self):
+ global translate_scope
+ global translate_prefix
+ output('typedef ', self.base.base.struct_name(),
+ ' arg_', self.name, ';\n')
+ output(translate_scope, 'void ', translate_prefix, '_', self.name,
+ '(DisasContext *ctx, arg_', self.name,
+ ' *a, ', insntype, ' insn);\n')
+
+ def output_code(self, i, extracted, outerbits, outermask):
+ global translate_prefix
+ ind = str_indent(i)
+ arg = self.base.base.name
+ output(ind, '/* line ', str(self.lineno), ' */\n')
+ if not extracted:
+ output(ind, self.base.extract_name(), '(&u.f_', arg, ', insn);\n')
+ for n, f in self.fields.items():
+ output(ind, 'u.f_', arg, '.', n, ' = ', f.str_extract(), ';\n')
+ output(ind, translate_prefix, '_', self.name,
+ '(ctx, &u.f_', arg, ', insn);\n')
+ output(ind, 'return true;\n')
+# end Pattern
+
+
+def parse_field(lineno, name, toks):
+ """Parse one instruction field from TOKS at LINENO"""
+ global fields
+ global re_ident
+ global insnwidth
+
+ # A "simple" field will have only one entry;
+ # a "multifield" will have several.
+ subs = []
+ width = 0
+ func = None
+ for t in toks:
+ if re_fullmatch('!function=' + re_ident, t):
+ if func:
+ error(lineno, 'duplicate function')
+ func = t.split('=')
+ func = func[1]
+ continue
+
+ if re_fullmatch('[0-9]+:s[0-9]+', t):
+ # Signed field extract
+ subtoks = t.split(':s')
+ sign = True
+ elif re_fullmatch('[0-9]+:[0-9]+', t):
+ # Unsigned field extract
+ subtoks = t.split(':')
+ sign = False
+ else:
+ error(lineno, 'invalid field token "{0}"'.format(t))
+ po = int(subtoks[0])
+ le = int(subtoks[1])
+ if po + le > insnwidth:
+ error(lineno, 'field {0} too large'.format(t))
+ f = Field(sign, po, le)
+ subs.append(f)
+ width += le
+
+ if width > insnwidth:
+ error(lineno, 'field too large')
+ if len(subs) == 1:
+ f = subs[0]
+ else:
+ mask = 0
+ for s in subs:
+ if mask & s.mask:
+ error(lineno, 'field components overlap')
+ mask |= s.mask
+ f = MultiField(subs, mask)
+ if func:
+ f = FunctionField(func, f)
+
+ if name in fields:
+ error(lineno, 'duplicate field', name)
+ fields[name] = f
+# end parse_field
+
+
+def parse_arguments(lineno, name, toks):
+ """Parse one argument set from TOKS at LINENO"""
+ global arguments
+ global re_ident
+
+ flds = []
+ for t in toks:
+ if not re_fullmatch(re_ident, t):
+ error(lineno, 'invalid argument set token "{0}"'.format(t))
+ if t in flds:
+ error(lineno, 'duplicate argument "{0}"'.format(t))
+ flds.append(t)
+
+ if name in arguments:
+ error(lineno, 'duplicate argument set', name)
+ arguments[name] = Arguments(name, flds)
+# end parse_arguments
+
+
+def lookup_field(lineno, name):
+ global fields
+ if name in fields:
+ return fields[name]
+ error(lineno, 'undefined field', name)
+
+
+def add_field(lineno, flds, new_name, f):
+ if new_name in flds:
+ error(lineno, 'duplicate field', new_name)
+ flds[new_name] = f
+ return flds
+
+
+def add_field_byname(lineno, flds, new_name, old_name):
+ return add_field(lineno, flds, new_name, lookup_field(lineno, old_name))
+
+
+def infer_argument_set(flds):
+ global arguments
+
+ for arg in arguments.values():
+ if eq_fields_for_args(flds, arg.fields):
+ return arg
+
+ name = str(len(arguments))
+ arg = Arguments(name, flds.keys())
+ arguments[name] = arg
+ return arg
+
+
+def infer_format(arg, fieldmask, flds):
+ global arguments
+ global formats
+
+ const_flds = {}
+ var_flds = {}
+ for n, c in flds.items():
+ if c is ConstField:
+ const_flds[n] = c
+ else:
+ var_flds[n] = c
+
+ # Look for an existing format with the same argument set and fields
+ for fmt in formats.values():
+ if arg and fmt.base != arg:
+ continue
+ if fieldmask != fmt.fieldmask:
+ continue
+ if not eq_fields_for_fmts(flds, fmt.fields):
+ continue
+ return (fmt, const_flds)
+
+ name = 'Fmt_' + str(len(formats))
+ if not arg:
+ arg = infer_argument_set(flds)
+
+ fmt = Format(name, 0, arg, 0, 0, 0, fieldmask, var_flds)
+ formats[name] = fmt
+
+ return (fmt, const_flds)
+# end infer_format
+
+
+def parse_generic(lineno, is_format, name, toks):
+ """Parse one instruction format from TOKS at LINENO"""
+ global fields
+ global arguments
+ global formats
+ global patterns
+ global re_ident
+ global insnwidth
+
+ fixedmask = 0
+ fixedbits = 0
+ undefmask = 0
+ width = 0
+ flds = {}
+ arg = None
+ fmt = None
+ for t in toks:
+ # '&Foo' gives a format an explcit argument set.
+ if t[0] == '&':
+ tt = t[1:]
+ if arg:
+ error(lineno, 'multiple argument sets')
+ if tt in arguments:
+ arg = arguments[tt]
+ else:
+ error(lineno, 'undefined argument set', t)
+ continue
+
+ # '@Foo' gives a pattern an explicit format.
+ if t[0] == '@':
+ tt = t[1:]
+ if fmt:
+ error(lineno, 'multiple formats')
+ if tt in formats:
+ fmt = formats[tt]
+ else:
+ error(lineno, 'undefined format', t)
+ continue
+
+ # '%Foo' imports a field.
+ if t[0] == '%':
+ tt = t[1:]
+ flds = add_field_byname(lineno, flds, tt, tt)
+ continue
+
+ # 'Foo=%Bar' imports a field with a different name.
+ if re_fullmatch(re_ident + '=%' + re_ident, t):
+ (fname, iname) = t.split('=%')
+ flds = add_field_byname(lineno, flds, fname, iname)
+ continue
+
+ # 'Foo=number' sets an argument field to a constant value
+ if re_fullmatch(re_ident + '=[0-9]+', t):
+ (fname, value) = t.split('=')
+ value = int(value)
+ flds = add_field(lineno, flds, fname, ConstField(value))
+ continue
+
+ # Pattern of 0s, 1s, dots and dashes indicate required zeros,
+ # required ones, or dont-cares.
+ if re_fullmatch('[01.-]+', t):
+ shift = len(t)
+ fms = t.replace('0', '1')
+ fms = fms.replace('.', '0')
+ fms = fms.replace('-', '0')
+ fbs = t.replace('.', '0')
+ fbs = fbs.replace('-', '0')
+ ubm = t.replace('1', '0')
+ ubm = ubm.replace('.', '0')
+ ubm = ubm.replace('-', '1')
+ fms = int(fms, 2)
+ fbs = int(fbs, 2)
+ ubm = int(ubm, 2)
+ fixedbits = (fixedbits << shift) | fbs
+ fixedmask = (fixedmask << shift) | fms
+ undefmask = (undefmask << shift) | ubm
+ # Otherwise, fieldname:fieldwidth
+ elif re_fullmatch(re_ident + ':s?[0-9]+', t):
+ (fname, flen) = t.split(':')
+ sign = False
+ if flen[0] == 's':
+ sign = True
+ flen = flen[1:]
+ shift = int(flen, 10)
+ f = Field(sign, insnwidth - width - shift, shift)
+ flds = add_field(lineno, flds, fname, f)
+ fixedbits <<= shift
+ fixedmask <<= shift
+ undefmask <<= shift
+ else:
+ error(lineno, 'invalid token "{0}"'.format(t))
+ width += shift
+
+ # We should have filled in all of the bits of the instruction.
+ if not (is_format and width == 0) and width != insnwidth:
+ error(lineno, 'definition has {0} bits'.format(width))
+
+ # Do not check for fields overlaping fields; one valid usage
+ # is to be able to duplicate fields via import.
+ fieldmask = 0
+ for f in flds.values():
+ fieldmask |= f.mask
+
+ # Fix up what we've parsed to match either a format or a pattern.
+ if is_format:
+ # Formats cannot reference formats.
+ if fmt:
+ error(lineno, 'format referencing format')
+ # If an argument set is given, then there should be no fields
+ # without a place to store it.
+ if arg:
+ for f in flds.keys():
+ if f not in arg.fields:
+ error(lineno, 'field {0} not in argument set {1}'
+ .format(f, arg.name))
+ else:
+ arg = infer_argument_set(flds)
+ if name in formats:
+ error(lineno, 'duplicate format name', name)
+ fmt = Format(name, lineno, arg, fixedbits, fixedmask,
+ undefmask, fieldmask, flds)
+ formats[name] = fmt
+ else:
+ # Patterns can reference a format ...
+ if fmt:
+ # ... but not an argument simultaneously
+ if arg:
+ error(lineno, 'pattern specifies both format and argument set')
+ if fixedmask & fmt.fixedmask:
+ error(lineno, 'pattern fixed bits overlap format fixed bits')
+ fieldmask |= fmt.fieldmask
+ fixedbits |= fmt.fixedbits
+ fixedmask |= fmt.fixedmask
+ undefmask |= fmt.undefmask
+ else:
+ (fmt, flds) = infer_format(arg, fieldmask, flds)
+ arg = fmt.base
+ for f in flds.keys():
+ if f not in arg.fields:
+ error(lineno, 'field {0} not in argument set {1}'
+ .format(f, arg.name))
+ for f in arg.fields:
+ if f not in flds.keys() and f not in fmt.fields.keys():
+ error(lineno, 'field {0} not initialized'.format(f))
+ pat = Pattern(name, lineno, fmt, fixedbits, fixedmask,
+ undefmask, fieldmask, flds)
+ patterns.append(pat)
+
+ # Validate the masks that we have assembled.
+ if fieldmask & fixedmask:
+ error(lineno, 'fieldmask overlaps fixedmask (0x{0:08x} & 0x{1:08x})'
+ .format(fieldmask, fixedmask))
+ if fieldmask & undefmask:
+ error(lineno, 'fieldmask overlaps undefmask (0x{0:08x} & 0x{1:08x})'
+ .format(fieldmask, undefmask))
+ if fixedmask & undefmask:
+ error(lineno, 'fixedmask overlaps undefmask (0x{0:08x} & 0x{1:08x})'
+ .format(fixedmask, undefmask))
+# end parse_general
+
+
+def parse_file(f):
+ """Parse all of the patterns within a file"""
+
+ # Read all of the lines of the file. Concatenate lines
+ # ending in backslash; discard empty lines and comments.
+ toks = []
+ lineno = 0
+ for line in f:
+ lineno += 1
+
+ # Discard comments
+ end = line.find('#')
+ if end >= 0:
+ line = line[:end]
+
+ t = line.split()
+ if len(toks) != 0:
+ # Next line after continuation
+ toks.extend(t)
+ elif len(t) == 0:
+ # Empty line
+ continue
+ else:
+ toks = t
+
+ # Continuation?
+ if toks[-1] == '\\':
+ toks.pop()
+ continue
+
+ if len(toks) < 2:
+ error(lineno, 'short line')
+
+ name = toks[0]
+ del toks[0]
+
+ # Determine the type of object needing to be parsed.
+ if name[0] == '%':
+ parse_field(lineno, name[1:], toks)
+ elif name[0] == '&':
+ parse_arguments(lineno, name[1:], toks)
+ elif name[0] == '@':
+ parse_generic(lineno, True, name[1:], toks)
+ else:
+ parse_generic(lineno, False, name, toks)
+ toks = []
+# end parse_file
+
+
+class Tree:
+ """Class representing a node in a decode tree"""
+
+ def __init__(self, fm, tm):
+ self.fixedmask = fm
+ self.thismask = tm
+ self.subs = []
+ self.base = None
+
+ def str1(self, i):
+ ind = str_indent(i)
+ r = '{0}{1:08x}'.format(ind, self.fixedmask)
+ if self.format:
+ r += ' ' + self.format.name
+ r += ' [\n'
+ for (b, s) in self.subs:
+ r += '{0} {1:08x}:\n'.format(ind, b)
+ r += s.str1(i + 4) + '\n'
+ r += ind + ']'
+ return r
+
+ def __str__(self):
+ return self.str1(0)
+
+ def output_code(self, i, extracted, outerbits, outermask):
+ ind = str_indent(i)
+
+ # If we identified all nodes below have the same format,
+ # extract the fields now.
+ if not extracted and self.base:
+ output(ind, self.base.extract_name(),
+ '(&u.f_', self.base.base.name, ', insn);\n')
+ extracted = True
+
+ # Attempt to aid the compiler in producing compact switch statements.
+ # If the bits in the mask are contiguous, extract them.
+ sh = is_contiguous(self.thismask)
+ if sh > 0:
+ # Propagate SH down into the local functions.
+ def str_switch(b, sh=sh):
+ return '(insn >> {0}) & 0x{1:x}'.format(sh, b >> sh)
+
+ def str_case(b, sh=sh):
+ return '0x{0:x}'.format(b >> sh)
+ else:
+ def str_switch(b):
+ return 'insn & 0x{0:08x}'.format(b)
+
+ def str_case(b):
+ return '0x{0:08x}'.format(b)
+
+ output(ind, 'switch (', str_switch(self.thismask), ') {\n')
+ for b, s in sorted(self.subs):
+ assert (self.thismask & ~s.fixedmask) == 0
+ innermask = outermask | self.thismask
+ innerbits = outerbits | b
+ output(ind, 'case ', str_case(b), ':\n')
+ output(ind, ' /* ',
+ str_match_bits(innerbits, innermask), ' */\n')
+ s.output_code(i + 4, extracted, innerbits, innermask)
+ output(ind, '}\n')
+ output(ind, 'return false;\n')
+# end Tree
+
+
+def build_tree(pats, outerbits, outermask):
+ # Find the intersection of all remaining fixedmask.
+ innermask = ~outermask
+ for i in pats:
+ innermask &= i.fixedmask
+
+ if innermask == 0:
+ pnames = []
+ for p in pats:
+ pnames.append(p.name + ':' + str(p.lineno))
+ error(pats[0].lineno, 'overlapping patterns:', pnames)
+
+ fullmask = outermask | innermask
+
+ # Sort each element of pats into the bin selected by the mask.
+ bins = {}
+ for i in pats:
+ fb = i.fixedbits & innermask
+ if fb in bins:
+ bins[fb].append(i)
+ else:
+ bins[fb] = [i]
+
+ # We must recurse if any bin has more than one element or if
+ # the single element in the bin has not been fully matched.
+ t = Tree(fullmask, innermask)
+
+ for b, l in bins.items():
+ s = l[0]
+ if len(l) > 1 or s.fixedmask & ~fullmask != 0:
+ s = build_tree(l, b | outerbits, fullmask)
+ t.subs.append((b, s))
+
+ return t
+# end build_tree
+
+
+def prop_format(tree):
+ """Propagate Format objects into the decode tree"""
+
+ # Depth first search.
+ for (b, s) in tree.subs:
+ if isinstance(s, Tree):
+ prop_format(s)
+
+ # If all entries in SUBS have the same format, then
+ # propagate that into the tree.
+ f = None
+ for (b, s) in tree.subs:
+ if f is None:
+ f = s.base
+ if f is None:
+ return
+ if f is not s.base:
+ return
+ tree.base = f
+# end prop_format
+
+
+def main():
+ global arguments
+ global formats
+ global patterns
+ global translate_scope
+ global translate_prefix
+ global output_file
+ global input_file
+ global insnwidth
+ global insntype
+
+ c_file = None
+ decode_function = 'decode'
+
+ long_opts = ['decode=', 'translate=', 'output=', 'insnwidth=']
+ try:
+ (opts, args) = getopt.getopt(sys.argv[1:], 'o:w:', long_opts)
+ except getopt.GetoptError as err:
+ error(0, err)
+ for o, a in opts:
+ if o in ('-o', '--output'):
+ c_file = a
+ elif o == '--decode':
+ decode_function = a
+ elif o == '--translate':
+ translate_prefix = a
+ translate_scope = ''
+ elif o in ('-w', '--insnwidth'):
+ insnwidth = int(a)
+ if insnwidth == 16:
+ insntype = 'uint16_t'
+ elif insnwidth != 32:
+ error(0, 'cannot handle insns of width', insnwidth)
+ else:
+ assert False, 'unhandled option'
+
+ if len(args) < 1:
+ error(0, 'missing input file')
+ input_file = args[0]
+ f = open(input_file, 'r')
+ parse_file(f)
+ f.close()
+
+ t = build_tree(patterns, 0, 0)
+ prop_format(t)
+
+ if c_file:
+ output_file = open(c_file, 'w')
+ else:
+ output_file = sys.stdout
+
+ output_autogen()
+ for n in sorted(arguments.keys()):
+ f = arguments[n]
+ f.output_def()
+
+ # A single translate function can be invoked for different patterns.
+ # Make sure that the argument sets are the same, and declare the
+ # function only once.
+ out_pats = {}
+ for i in patterns:
+ if i.name in out_pats:
+ p = out_pats[i.name]
+ if i.base.base != p.base.base:
+ error(0, i.name, ' has conflicting argument sets')
+ else:
+ i.output_decl()
+ out_pats[i.name] = i
+ output('\n')
+
+ for n in sorted(formats.keys()):
+ f = formats[n]
+ f.output_extract()
+
+ output('bool ', decode_function,
+ '(DisasContext *ctx, ', insntype, ' insn)\n{\n')
+
+ i4 = str_indent(4)
+ output(i4, 'union {\n')
+ for n in sorted(arguments.keys()):
+ f = arguments[n]
+ output(i4, i4, f.struct_name(), ' f_', f.name, ';\n')
+ output(i4, '} u;\n\n')
+
+ t.output_code(4, False, 0, 0)
+
+ output('}\n')
+
+ if c_file:
+ output_file.close()
+# end main
+
+
+if __name__ == '__main__':
+ main()
diff --git a/tests/Makefile.include b/tests/Makefile.include
index f41da235ae..8cc7d56e97 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -928,6 +928,13 @@ $(patsubst %, check-%, $(check-qapi-schema-y)): check-%.json: $(SRC_PATH)/%.json
check-tests/qapi-schema/doc-good.texi: tests/qapi-schema/doc-good.test.texi
@diff -q $(SRC_PATH)/tests/qapi-schema/doc-good.texi $<
+.PHONY: check-decodetree
+check-decodetree:
+ $(call quiet-command, \
+ cd $(SRC_PATH)/tests/decode && \
+ ./check.sh "$(PYTHON)" "$(SRC_PATH)/scripts/decodetree.py", \
+ TEST, decodetree.py)
+
# Consolidated targets
.PHONY: check-qapi-schema check-qtest check-unit check check-clean
@@ -936,7 +943,7 @@ check-qtest: $(patsubst %,check-qtest-%, $(QTEST_TARGETS))
check-unit: $(patsubst %,check-%, $(check-unit-y))
check-speed: $(patsubst %,check-%, $(check-speed-y))
check-block: $(patsubst %,check-%, $(check-block-y))
-check: check-qapi-schema check-unit check-qtest
+check: check-qapi-schema check-unit check-qtest check-decodetree
check-clean:
$(MAKE) -C tests/tcg clean
rm -rf $(check-unit-y) tests/*.o $(QEMU_IOTESTS_HELPERS-y)
diff --git a/tests/decode/check.sh b/tests/decode/check.sh
new file mode 100755
index 0000000000..6eb1392593
--- /dev/null
+++ b/tests/decode/check.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+PYTHON=$1
+DECODETREE=$2
+E=0
+
+# All of these tests should produce errors
+for i in err_*.def; do
+ if $PYTHON $DECODETREE $i > /dev/null 2> /dev/null; then
+ # Pass, aka failed to fail.
+ echo FAIL: $i 1>&2
+ E=1
+ fi
+done
+
+exit $E
diff --git a/tests/decode/err_argset1.def b/tests/decode/err_argset1.def
new file mode 100644
index 0000000000..65d089d582
--- /dev/null
+++ b/tests/decode/err_argset1.def
@@ -0,0 +1 @@
+&args a a
diff --git a/tests/decode/err_argset2.def b/tests/decode/err_argset2.def
new file mode 100644
index 0000000000..16a812cf0d
--- /dev/null
+++ b/tests/decode/err_argset2.def
@@ -0,0 +1 @@
+&args a b c d0 0e
diff --git a/tests/decode/err_field1.def b/tests/decode/err_field1.def
new file mode 100644
index 0000000000..075404ced1
--- /dev/null
+++ b/tests/decode/err_field1.def
@@ -0,0 +1 @@
+%field asdf
diff --git a/tests/decode/err_field2.def b/tests/decode/err_field2.def
new file mode 100644
index 0000000000..08933bf8c9
--- /dev/null
+++ b/tests/decode/err_field2.def
@@ -0,0 +1 @@
+%field 0:33
diff --git a/tests/decode/err_field3.def b/tests/decode/err_field3.def
new file mode 100644
index 0000000000..ecb6427a40
--- /dev/null
+++ b/tests/decode/err_field3.def
@@ -0,0 +1 @@
+%field 31:2
diff --git a/tests/decode/err_field4.def b/tests/decode/err_field4.def
new file mode 100644
index 0000000000..2844afc24a
--- /dev/null
+++ b/tests/decode/err_field4.def
@@ -0,0 +1,2 @@
+%field 0:1
+%field 0:1
diff --git a/tests/decode/err_field5.def b/tests/decode/err_field5.def
new file mode 100644
index 0000000000..cc3ea844ae
--- /dev/null
+++ b/tests/decode/err_field5.def
@@ -0,0 +1 @@
+%field 0:1 !function=a !function=a
diff --git a/tests/decode/err_init1.def b/tests/decode/err_init1.def
new file mode 100644
index 0000000000..2c986cf627
--- /dev/null
+++ b/tests/decode/err_init1.def
@@ -0,0 +1,2 @@
+&args a b
+insn 00000000 00000000 00000000 b:8 &args
diff --git a/tests/decode/err_init2.def b/tests/decode/err_init2.def
new file mode 100644
index 0000000000..7c80854ea5
--- /dev/null
+++ b/tests/decode/err_init2.def
@@ -0,0 +1,2 @@
+&args a b
+insn 00000000 00000000 a:8 b:8 &args a=1
diff --git a/tests/decode/err_init3.def b/tests/decode/err_init3.def
new file mode 100644
index 0000000000..15a3060c61
--- /dev/null
+++ b/tests/decode/err_init3.def
@@ -0,0 +1,3 @@
+&args a
+@format ........ ........ a:16 &args
+insn 00000000 00000000 a:16 @format
diff --git a/tests/decode/err_init4.def b/tests/decode/err_init4.def
new file mode 100644
index 0000000000..b84d968acd
--- /dev/null
+++ b/tests/decode/err_init4.def
@@ -0,0 +1,3 @@
+&args a b
+@format ........ ........ a:16 &args
+insn 00000000 00000000 ........ ........ @format
diff --git a/tests/decode/err_overlap1.def b/tests/decode/err_overlap1.def
new file mode 100644
index 0000000000..5d39c2ddad
--- /dev/null
+++ b/tests/decode/err_overlap1.def
@@ -0,0 +1,2 @@
+%field 0:1
+insn 00000000 00000000 00000000 00000000 %field
diff --git a/tests/decode/err_overlap2.def b/tests/decode/err_overlap2.def
new file mode 100644
index 0000000000..38e4f8ae31
--- /dev/null
+++ b/tests/decode/err_overlap2.def
@@ -0,0 +1,2 @@
+@format ........ ........ ........ ....... fld:1
+insn 00000000 00000000 00000000 00000000 @format
diff --git a/tests/decode/err_overlap3.def b/tests/decode/err_overlap3.def
new file mode 100644
index 0000000000..90c73f4f30
--- /dev/null
+++ b/tests/decode/err_overlap3.def
@@ -0,0 +1,2 @@
+%field 0:1
+insn 00000000 00000000 00000000 -------- %field
diff --git a/tests/decode/err_overlap4.def b/tests/decode/err_overlap4.def
new file mode 100644
index 0000000000..d83f8e3153
--- /dev/null
+++ b/tests/decode/err_overlap4.def
@@ -0,0 +1,2 @@
+@format ........ ........ ........ .......-
+insn 00000000 00000000 00000000 00000000 @format
diff --git a/tests/decode/err_overlap5.def b/tests/decode/err_overlap5.def
new file mode 100644
index 0000000000..2f4359bb9b
--- /dev/null
+++ b/tests/decode/err_overlap5.def
@@ -0,0 +1 @@
+%field 3:5 0:5
diff --git a/tests/decode/err_overlap6.def b/tests/decode/err_overlap6.def
new file mode 100644
index 0000000000..bf446a3092
--- /dev/null
+++ b/tests/decode/err_overlap6.def
@@ -0,0 +1,2 @@
+@format ........ ........ ........ .......1
+insn 00000000 00000000 00000000 00000000 @format
diff --git a/tests/decode/err_overlap7.def b/tests/decode/err_overlap7.def
new file mode 100644
index 0000000000..44d914163b
--- /dev/null
+++ b/tests/decode/err_overlap7.def
@@ -0,0 +1,2 @@
+insn1 00000000 00000000 00000000 00000000
+insn2 00000000 00000000 00000000 00000000
--
2.14.3
> Changes since v1:
> * Pass pycodestyle-{2,3}.
> * Support 16-bit and 32-bit insns (I have a def file for thumb1).
For the record, here's the thumb1 definition.
./scripts/decodetree.py -w16 thumb1.def
r~
%reg_0_7 7:1 0:3
@rd_rs ...... .... rs:3 rd:3
@rt_rn_rm .... ... rm:3 rn:3 rt:3
@rd_rn_rm .... ... rm:3 rn:3 rd:3
@rd_rn_i3 .... ... imm:3 rn:3 rd:3
@rt_rn_i5 ..... imm:5 rn:3 rt:3
@rd_i8 ..... rd:3 imm:8
@rn_reglist ..... rn:3 reglist:8
#### Data Processing (two low registers)
AND 010000 0000 ... ... @rd_rs
EOR 010000 0001 ... ... @rd_rs
MOV_lsl 010000 0010 ... ... @rd_rs
MOV_lsr 010000 0011 ... ... @rd_rs
MOV_asr 010000 0100 ... ... @rd_rs
ADC 010000 0101 ... ... @rd_rs
SBC 010000 0110 ... ... @rd_rs
MOV_ror 010000 0111 ... ... @rd_rs
TST 010000 1000 ... ... @rd_rs
RSB 010000 1001 ... ... @rd_rs
CMP_rr 010000 1010 ... ... @rd_rs
CMN 010000 1011 ... ... @rd_rs
ORR 010000 1100 ... ... @rd_rs
MUL 010000 1101 ... ... @rd_rs
BIC 010000 1110 ... ... @rd_rs
MVN 010000 1111 ... ... @rd_rs
#### Load/store (register offset)
STR_rr 0101 000 ... ... ... @rt_rn_rm
STRH_rr 0101 001 ... ... ... @rt_rn_rm
STRB_rr 0101 010 ... ... ... @rt_rn_rm
LDRSB_rr 0101 011 ... ... ... @rt_rn_rm
LDR_rr 0101 100 ... ... ... @rt_rn_rm
LDRH_rr 0101 101 ... ... ... @rt_rn_rm
LDRB_rr 0101 110 ... ... ... @rt_rn_rm
LDRSH_rr 0101 111 ... ... ... @rt_rn_rm
#### Load/store word/byte (immediate offset)
STR_ri 01100 ..... ... ... @rt_rn_i5
LDR_ri 01101 ..... ... ... @rt_rn_i5
STRB_ri 01110 ..... ... ... @rt_rn_i5
LDRB_ri 01111 ..... ... ... @rt_rn_i5
#### Load/store halfword (immediate offset)
STRH_ri 10000 ..... ... ... @rt_rn_i5
LDRH_ri 10001 ..... ... ... @rt_rn_i5
#### Add PC/SP (immediate)
ADR 10100 ... ........ @rd_i8
ADD_sp 10101 ... ........ @rd_i8
#### Load/store multiple
STM 11000 ... ........ @rn_reglist
LDM 11001 ... ........ @rn_reglist
#### Add/subtract (three low registers)
ADD_rrr 0001100 ... ... ... @rd_rn_rm
SUB_rrr 0001101 ... ... ... @rd_rn_rm
#### Add/subtract (two low registers and immediate)
ADD_rri 0001 110 ... ... ... @rd_rn_i3
SUB_rri 0001 111 ... ... ... @rd_rn_i3
#### Add, subtract, compare, move (one low register and immediate)
MOV_ri 00100 ... ........ @rd_i8
CMP_ri 00101 ... ........ @rd_i8
ADD_ri 00110 ... ........ @rd_i8
SUB_ri 00111 ... ........ @rd_i8
#### Branch and exchange
BX 0100 0111 0 rm:4 000
BLX 0100 0111 1 rm:4 000
#### Add, subtract, compare, move (two high registers)
ADD_rrr 0100 0100 . rm:4 ... rd=%reg_0_7 rn=%reg_0_7
CMP_rr 0100 0101 . rs:4 ... rd=%reg_0_7
MOV_rr 0100 0110 . rs:4 ... rd=%reg_0_7
#### Adjust SP (immediate)
ADD_rri 1011 0000 0 imm:7 rd=13 rn=13
SUB_rri 1011 0000 1 imm:7 rd=13 rn=13
#### Extend
SXTH 1011 0010 00 ... ... @rd_rs
SXTB 1011 0010 01 ... ... @rd_rs
UXTH 1011 0010 10 ... ... @rd_rs
UXTB 1011 0010 11 ... ... @rd_rs
#### Change processor state
SETEND 1011 0110 010 flags:5
CPS 1011 0110 011 flags:5
#### Reverse bytes
REV 1011 1010 00 ... ... @rd_rs
REV16 1011 1010 01 ... ... @rd_rs
REVSH 1011 1010 11 ... ... @rd_rs
#### Hints
NOP 1011 1111 0000 0000
YIELD 1011 1111 0001 0000
WFE 1011 1111 0010 0000
WFI 1011 1111 0011 0000
SEV 1011 1111 0100 0000
SEVL 1011 1111 0101 0000
NOP 1011 1111 011- 0000 # Reserved hint
NOP 1011 1111 1--- 0000 # Reserved hint
#### Push and Pop
PUSH 1011 010 reglist:9
POP 1011 110 reglist:9
#### Conditional branches
Bcond 1101 0 cond:3 imm:8
Bcond 1101 1000 imm:8 cond=8
Bcond 1101 1001 imm:8 cond=9
Bcond 1101 1010 imm:8 cond=10
Bcond 1101 1011 imm:8 cond=11
Bcond 1101 1100 imm:8 cond=12
Bcond 1101 1101 imm:8 cond=13
#### Exception generation
UDF 1101 1110 imm:8
SVC 1101 1111 imm:8
Hi,
This series failed docker-quick@centos6 build test. Please find the testing commands and
their output below. If you have Docker installed, you can probably reproduce it
locally.
Type: series
Message-id: 20180211224656.12767-1-richard.henderson@linaro.org
Subject: [Qemu-devel] [PATCH v2] scripts: Add decodetree.py
=== TEST SCRIPT BEGIN ===
#!/bin/bash
set -e
git submodule update --init dtc
# Let docker tests dump environment info
export SHOW_ENV=1
export J=8
time make docker-test-quick@centos6
=== TEST SCRIPT END ===
Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
Switched to a new branch 'test'
1d531c8d23 scripts: Add decodetree.py
=== OUTPUT BEGIN ===
Submodule 'dtc' (git://git.qemu-project.org/dtc.git) registered for path 'dtc'
Cloning into '/var/tmp/patchew-tester-tmp-_dti_j7r/src/dtc'...
Submodule path 'dtc': checked out 'e54388015af1fb4bf04d0bca99caba1074d9cc42'
BUILD centos6
GEN /var/tmp/patchew-tester-tmp-_dti_j7r/src/docker-src.2018-02-11-17.56.03.1101/qemu.tar
Cloning into '/var/tmp/patchew-tester-tmp-_dti_j7r/src/docker-src.2018-02-11-17.56.03.1101/qemu.tar.vroot'...
done.
Checking out files: 50% (2923/5827)
Checking out files: 51% (2972/5827)
Checking out files: 52% (3031/5827)
Checking out files: 53% (3089/5827)
Checking out files: 54% (3147/5827)
Checking out files: 55% (3205/5827)
Checking out files: 56% (3264/5827)
Checking out files: 57% (3322/5827)
Checking out files: 58% (3380/5827)
Checking out files: 59% (3438/5827)
Checking out files: 60% (3497/5827)
Checking out files: 61% (3555/5827)
Checking out files: 62% (3613/5827)
Checking out files: 63% (3672/5827)
Checking out files: 64% (3730/5827)
Checking out files: 65% (3788/5827)
Checking out files: 66% (3846/5827)
Checking out files: 67% (3905/5827)
Checking out files: 68% (3963/5827)
Checking out files: 69% (4021/5827)
Checking out files: 70% (4079/5827)
Checking out files: 71% (4138/5827)
Checking out files: 72% (4196/5827)
Checking out files: 73% (4254/5827)
Checking out files: 74% (4312/5827)
Checking out files: 75% (4371/5827)
Checking out files: 76% (4429/5827)
Checking out files: 77% (4487/5827)
Checking out files: 78% (4546/5827)
Checking out files: 79% (4604/5827)
Checking out files: 80% (4662/5827)
Checking out files: 81% (4720/5827)
Checking out files: 82% (4779/5827)
Checking out files: 83% (4837/5827)
Checking out files: 84% (4895/5827)
Checking out files: 85% (4953/5827)
Checking out files: 86% (5012/5827)
Checking out files: 87% (5070/5827)
Checking out files: 88% (5128/5827)
Checking out files: 89% (5187/5827)
Checking out files: 90% (5245/5827)
Checking out files: 91% (5303/5827)
Checking out files: 92% (5361/5827)
Checking out files: 93% (5420/5827)
Checking out files: 94% (5478/5827)
Checking out files: 95% (5536/5827)
Checking out files: 96% (5594/5827)
Checking out files: 97% (5653/5827)
Checking out files: 97% (5659/5827)
Checking out files: 98% (5711/5827)
Checking out files: 99% (5769/5827)
Checking out files: 100% (5827/5827)
Checking out files: 100% (5827/5827), done.
Your branch is up-to-date with 'origin/test'.
Submodule 'dtc' (git://git.qemu-project.org/dtc.git) registered for path 'dtc'
Cloning into '/var/tmp/patchew-tester-tmp-_dti_j7r/src/docker-src.2018-02-11-17.56.03.1101/qemu.tar.vroot/dtc'...
Submodule path 'dtc': checked out 'e54388015af1fb4bf04d0bca99caba1074d9cc42'
Submodule 'ui/keycodemapdb' (git://git.qemu.org/keycodemapdb.git) registered for path 'ui/keycodemapdb'
Cloning into '/var/tmp/patchew-tester-tmp-_dti_j7r/src/docker-src.2018-02-11-17.56.03.1101/qemu.tar.vroot/ui/keycodemapdb'...
Submodule path 'ui/keycodemapdb': checked out '6b3d716e2b6472eb7189d3220552280ef3d832ce'
COPY RUNNER
RUN test-quick in qemu:centos6
Packages installed:
SDL-devel-1.2.14-7.el6_7.1.x86_64
bison-2.4.1-5.el6.x86_64
bzip2-devel-1.0.5-7.el6_0.x86_64
ccache-3.1.6-2.el6.x86_64
csnappy-devel-0-6.20150729gitd7bc683.el6.x86_64
flex-2.5.35-9.el6.x86_64
gcc-4.4.7-18.el6.x86_64
gettext-0.17-18.el6.x86_64
git-1.7.1-9.el6_9.x86_64
glib2-devel-2.28.8-9.el6.x86_64
libepoxy-devel-1.2-3.el6.x86_64
libfdt-devel-1.4.0-1.el6.x86_64
librdmacm-devel-1.0.21-0.el6.x86_64
lzo-devel-2.03-3.1.el6_5.1.x86_64
make-3.81-23.el6.x86_64
mesa-libEGL-devel-11.0.7-4.el6.x86_64
mesa-libgbm-devel-11.0.7-4.el6.x86_64
package g++ is not installed
pixman-devel-0.32.8-1.el6.x86_64
spice-glib-devel-0.26-8.el6.x86_64
spice-server-devel-0.12.4-16.el6.x86_64
tar-1.23-15.el6_8.x86_64
vte-devel-0.25.1-9.el6.x86_64
xen-devel-4.6.6-2.el6.x86_64
zlib-devel-1.2.3-29.el6.x86_64
Environment variables:
PACKAGES=bison bzip2-devel ccache csnappy-devel flex g++ gcc gettext git glib2-devel libepoxy-devel libfdt-devel librdmacm-devel lzo-devel make mesa-libEGL-devel mesa-libgbm-devel pixman-devel SDL-devel spice-glib-devel spice-server-devel tar vte-devel xen-devel zlib-devel
HOSTNAME=b14b5c7336ee
MAKEFLAGS= -j8
J=8
CCACHE_DIR=/var/tmp/ccache
EXTRA_CONFIGURE_OPTS=
V=
SHOW_ENV=1
PATH=/usr/lib/ccache:/usr/lib64/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
TARGET_LIST=
SHLVL=1
HOME=/root
TEST_DIR=/tmp/qemu-test
FEATURES= dtc
DEBUG=
_=/usr/bin/env
Configure options:
--enable-werror --target-list=x86_64-softmmu,aarch64-softmmu --prefix=/tmp/qemu-test/install
No C++ compiler available; disabling C++ specific optional code
Install prefix /tmp/qemu-test/install
BIOS directory /tmp/qemu-test/install/share/qemu
firmware path /tmp/qemu-test/install/share/qemu-firmware
binary directory /tmp/qemu-test/install/bin
library directory /tmp/qemu-test/install/lib
module directory /tmp/qemu-test/install/lib/qemu
libexec directory /tmp/qemu-test/install/libexec
include directory /tmp/qemu-test/install/include
config directory /tmp/qemu-test/install/etc
local state directory /tmp/qemu-test/install/var
Manual directory /tmp/qemu-test/install/share/man
ELF interp prefix /usr/gnemul/qemu-%M
Source path /tmp/qemu-test/src
GIT binary git
GIT submodules
C compiler cc
Host C compiler cc
C++ compiler
Objective-C compiler cc
ARFLAGS rv
CFLAGS -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -g
QEMU_CFLAGS -I/usr/include/pixman-1 -I$(SRC_PATH)/dtc/libfdt -pthread -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -DNCURSES_WIDECHAR -fPIE -DPIE -m64 -mcx16 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common -fwrapv -Wendif-labels -Wno-missing-include-dirs -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-declaration -Wold-style-definition -Wtype-limits -fstack-protector-all -Wno-missing-braces -I/usr/include/libpng12 -I/usr/include/libdrm -I/usr/include/spice-server -I/usr/include/cacard -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/nss3 -I/usr/include/nspr4 -I/usr/include/spice-1
LDFLAGS -Wl,--warn-common -Wl,-z,relro -Wl,-z,now -pie -m64 -g
make make
install install
python python -B
smbd /usr/sbin/smbd
module support no
host CPU x86_64
host big endian no
target list x86_64-softmmu aarch64-softmmu
gprof enabled no
sparse enabled no
strip binaries yes
profiler no
static build no
SDL support yes (1.2.14)
GTK support yes (2.24.23)
GTK GL support no
VTE support yes (0.25.1)
TLS priority NORMAL
GNUTLS support no
GNUTLS rnd no
libgcrypt no
libgcrypt kdf no
nettle no
nettle kdf no
libtasn1 no
curses support yes
virgl support no
curl support no
mingw32 support no
Audio drivers oss
Block whitelist (rw)
Block whitelist (ro)
VirtFS support no
Multipath support no
VNC support yes
VNC SASL support no
VNC JPEG support yes
VNC PNG support yes
xen support yes
xen ctrl version 40600
pv dom build no
brlapi support no
bluez support no
Documentation no
PIE yes
vde support no
netmap support no
Linux AIO support no
ATTR/XATTR support yes
Install blobs yes
KVM support yes
HAX support no
HVF support no
WHPX support no
TCG support yes
TCG debug enabled no
TCG interpreter no
malloc trim support yes
RDMA support yes
fdt support yes
preadv support yes
fdatasync yes
madvise yes
posix_madvise yes
libcap-ng support no
vhost-net support yes
vhost-scsi support yes
vhost-vsock support yes
vhost-user support yes
Trace backends log
spice support yes (0.12.6/0.12.4)
rbd support no
xfsctl support no
smartcard support yes
libusb no
usb net redir no
OpenGL support yes
OpenGL dmabufs no
libiscsi support no
libnfs support no
build guest agent yes
QGA VSS support no
QGA w32 disk info no
QGA MSI support no
seccomp support no
coroutine backend ucontext
coroutine pool yes
debug stack usage no
crypto afalg no
GlusterFS support no
gcov gcov
gcov enabled no
TPM support yes
libssh2 support no
TPM passthrough yes
TPM emulator yes
QOM debugging yes
Live block migration yes
lzo support yes
snappy support no
bzip2 support yes
NUMA host support no
libxml2 no
tcmalloc support no
jemalloc support no
avx2 optimization no
replication support yes
VxHS block device no
capstone no
WARNING: Use of GTK 2.0 is deprecated and will be removed in
WARNING: future releases. Please switch to using GTK 3.0
WARNING: Use of SDL 1.2 is deprecated and will be removed in
WARNING: future releases. Please switch to using SDL 2.0
GEN x86_64-softmmu/config-devices.mak.tmp
GEN aarch64-softmmu/config-devices.mak.tmp
GEN config-host.h
GEN qemu-options.def
GEN qmp-commands.h
GEN qapi-types.h
GEN qapi-visit.h
GEN qapi-event.h
GEN x86_64-softmmu/config-devices.mak
GEN qmp-marshal.c
GEN qapi-types.c
GEN aarch64-softmmu/config-devices.mak
GEN qapi-visit.c
GEN qapi-event.c
GEN qmp-introspect.h
GEN qmp-introspect.c
GEN trace/generated-tcg-tracers.h
GEN trace/generated-helpers-wrappers.h
GEN trace/generated-helpers.h
GEN trace/generated-helpers.c
GEN module_block.h
GEN ui/input-keymap-atset1-to-qcode.c
GEN ui/input-keymap-linux-to-qcode.c
GEN ui/input-keymap-qcode-to-atset1.c
GEN ui/input-keymap-qcode-to-atset2.c
GEN ui/input-keymap-qcode-to-atset3.c
GEN ui/input-keymap-qcode-to-linux.c
GEN ui/input-keymap-qcode-to-qnum.c
GEN ui/input-keymap-qcode-to-sun.c
GEN ui/input-keymap-qnum-to-qcode.c
GEN ui/input-keymap-usb-to-qcode.c
GEN ui/input-keymap-win32-to-qcode.c
GEN ui/input-keymap-x11-to-qcode.c
GEN ui/input-keymap-xorgevdev-to-qcode.c
GEN ui/input-keymap-xorgkbd-to-qcode.c
GEN ui/input-keymap-xorgxquartz-to-qcode.c
GEN ui/input-keymap-xorgxwin-to-qcode.c
GEN tests/test-qapi-types.h
GEN tests/test-qapi-visit.h
GEN tests/test-qmp-commands.h
GEN tests/test-qapi-event.h
GEN tests/test-qmp-introspect.h
GEN trace-root.h
GEN util/trace.h
GEN crypto/trace.h
GEN io/trace.h
GEN migration/trace.h
GEN block/trace.h
GEN chardev/trace.h
GEN hw/block/trace.h
GEN hw/block/dataplane/trace.h
GEN hw/char/trace.h
GEN hw/intc/trace.h
GEN hw/net/trace.h
GEN hw/virtio/trace.h
GEN hw/audio/trace.h
GEN hw/misc/trace.h
GEN hw/usb/trace.h
GEN hw/scsi/trace.h
GEN hw/nvram/trace.h
GEN hw/display/trace.h
GEN hw/input/trace.h
GEN hw/timer/trace.h
GEN hw/dma/trace.h
GEN hw/sparc/trace.h
GEN hw/sparc64/trace.h
GEN hw/sd/trace.h
GEN hw/isa/trace.h
GEN hw/mem/trace.h
GEN hw/i386/trace.h
GEN hw/i386/xen/trace.h
GEN hw/9pfs/trace.h
GEN hw/ppc/trace.h
GEN hw/pci/trace.h
GEN hw/pci-host/trace.h
GEN hw/s390x/trace.h
GEN hw/vfio/trace.h
GEN hw/acpi/trace.h
GEN hw/arm/trace.h
GEN hw/alpha/trace.h
GEN hw/hppa/trace.h
GEN hw/xen/trace.h
GEN hw/ide/trace.h
GEN ui/trace.h
GEN audio/trace.h
GEN net/trace.h
GEN target/arm/trace.h
GEN target/i386/trace.h
GEN target/mips/trace.h
GEN target/sparc/trace.h
GEN target/s390x/trace.h
GEN target/ppc/trace.h
GEN qom/trace.h
GEN linux-user/trace.h
GEN qapi/trace.h
GEN accel/tcg/trace.h
GEN accel/kvm/trace.h
GEN nbd/trace.h
GEN scsi/trace.h
GEN trace-root.c
GEN util/trace.c
GEN crypto/trace.c
GEN io/trace.c
GEN migration/trace.c
GEN block/trace.c
GEN chardev/trace.c
GEN hw/block/trace.c
GEN hw/block/dataplane/trace.c
GEN hw/char/trace.c
GEN hw/intc/trace.c
GEN hw/net/trace.c
GEN hw/virtio/trace.c
GEN hw/audio/trace.c
GEN hw/misc/trace.c
GEN hw/usb/trace.c
GEN hw/scsi/trace.c
GEN hw/nvram/trace.c
GEN hw/display/trace.c
GEN hw/input/trace.c
GEN hw/timer/trace.c
GEN hw/dma/trace.c
GEN hw/sparc/trace.c
GEN hw/sparc64/trace.c
GEN hw/sd/trace.c
GEN hw/isa/trace.c
GEN hw/mem/trace.c
GEN hw/i386/trace.c
GEN hw/i386/xen/trace.c
GEN hw/9pfs/trace.c
GEN hw/ppc/trace.c
GEN hw/pci/trace.c
GEN hw/pci-host/trace.c
GEN hw/s390x/trace.c
GEN hw/vfio/trace.c
GEN hw/acpi/trace.c
GEN hw/arm/trace.c
GEN hw/alpha/trace.c
GEN hw/hppa/trace.c
GEN hw/xen/trace.c
GEN hw/ide/trace.c
GEN ui/trace.c
GEN audio/trace.c
GEN net/trace.c
GEN target/arm/trace.c
GEN target/i386/trace.c
GEN target/mips/trace.c
GEN target/sparc/trace.c
GEN target/s390x/trace.c
GEN target/ppc/trace.c
GEN qom/trace.c
GEN linux-user/trace.c
GEN qapi/trace.c
GEN accel/tcg/trace.c
GEN accel/kvm/trace.c
GEN nbd/trace.c
GEN scsi/trace.c
GEN config-all-devices.mak
DEP /tmp/qemu-test/src/dtc/tests/dumptrees.c
DEP /tmp/qemu-test/src/dtc/tests/testutils.c
DEP /tmp/qemu-test/src/dtc/tests/trees.S
DEP /tmp/qemu-test/src/dtc/tests/value-labels.c
DEP /tmp/qemu-test/src/dtc/tests/asm_tree_dump.c
DEP /tmp/qemu-test/src/dtc/tests/check_path.c
DEP /tmp/qemu-test/src/dtc/tests/overlay_bad_fixup.c
DEP /tmp/qemu-test/src/dtc/tests/truncated_property.c
DEP /tmp/qemu-test/src/dtc/tests/overlay.c
DEP /tmp/qemu-test/src/dtc/tests/subnode_iterate.c
DEP /tmp/qemu-test/src/dtc/tests/property_iterate.c
DEP /tmp/qemu-test/src/dtc/tests/integer-expressions.c
DEP /tmp/qemu-test/src/dtc/tests/utilfdt_test.c
DEP /tmp/qemu-test/src/dtc/tests/path_offset_aliases.c
DEP /tmp/qemu-test/src/dtc/tests/add_subnode_with_nops.c
DEP /tmp/qemu-test/src/dtc/tests/dtbs_equal_unordered.c
DEP /tmp/qemu-test/src/dtc/tests/dtb_reverse.c
DEP /tmp/qemu-test/src/dtc/tests/dtbs_equal_ordered.c
DEP /tmp/qemu-test/src/dtc/tests/extra-terminating-null.c
DEP /tmp/qemu-test/src/dtc/tests/incbin.c
DEP /tmp/qemu-test/src/dtc/tests/boot-cpuid.c
DEP /tmp/qemu-test/src/dtc/tests/phandle_format.c
DEP /tmp/qemu-test/src/dtc/tests/path-references.c
DEP /tmp/qemu-test/src/dtc/tests/references.c
DEP /tmp/qemu-test/src/dtc/tests/string_escapes.c
DEP /tmp/qemu-test/src/dtc/tests/propname_escapes.c
DEP /tmp/qemu-test/src/dtc/tests/appendprop2.c
DEP /tmp/qemu-test/src/dtc/tests/appendprop1.c
DEP /tmp/qemu-test/src/dtc/tests/del_node.c
DEP /tmp/qemu-test/src/dtc/tests/del_property.c
DEP /tmp/qemu-test/src/dtc/tests/setprop.c
DEP /tmp/qemu-test/src/dtc/tests/set_name.c
DEP /tmp/qemu-test/src/dtc/tests/rw_tree1.c
DEP /tmp/qemu-test/src/dtc/tests/open_pack.c
DEP /tmp/qemu-test/src/dtc/tests/nopulate.c
DEP /tmp/qemu-test/src/dtc/tests/mangle-layout.c
DEP /tmp/qemu-test/src/dtc/tests/move_and_save.c
DEP /tmp/qemu-test/src/dtc/tests/sw_tree1.c
DEP /tmp/qemu-test/src/dtc/tests/nop_node.c
DEP /tmp/qemu-test/src/dtc/tests/nop_property.c
DEP /tmp/qemu-test/src/dtc/tests/setprop_inplace.c
DEP /tmp/qemu-test/src/dtc/tests/stringlist.c
DEP /tmp/qemu-test/src/dtc/tests/notfound.c
DEP /tmp/qemu-test/src/dtc/tests/addr_size_cells.c
DEP /tmp/qemu-test/src/dtc/tests/sized_cells.c
DEP /tmp/qemu-test/src/dtc/tests/char_literal.c
DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_compatible.c
DEP /tmp/qemu-test/src/dtc/tests/get_alias.c
DEP /tmp/qemu-test/src/dtc/tests/node_check_compatible.c
DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_phandle.c
DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_prop_value.c
DEP /tmp/qemu-test/src/dtc/tests/supernode_atdepth_offset.c
DEP /tmp/qemu-test/src/dtc/tests/parent_offset.c
DEP /tmp/qemu-test/src/dtc/tests/get_path.c
DEP /tmp/qemu-test/src/dtc/tests/get_phandle.c
DEP /tmp/qemu-test/src/dtc/tests/getprop.c
DEP /tmp/qemu-test/src/dtc/tests/get_name.c
DEP /tmp/qemu-test/src/dtc/tests/path_offset.c
DEP /tmp/qemu-test/src/dtc/tests/subnode_offset.c
DEP /tmp/qemu-test/src/dtc/tests/find_property.c
DEP /tmp/qemu-test/src/dtc/tests/root_node.c
DEP /tmp/qemu-test/src/dtc/tests/get_mem_rsv.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_overlay.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_addresses.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_empty_tree.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_strerror.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_rw.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_sw.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_wip.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_ro.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt.c
DEP /tmp/qemu-test/src/dtc/util.c
DEP /tmp/qemu-test/src/dtc/fdtoverlay.c
DEP /tmp/qemu-test/src/dtc/fdtput.c
DEP /tmp/qemu-test/src/dtc/fdtget.c
DEP /tmp/qemu-test/src/dtc/fdtdump.c
LEX convert-dtsv0-lexer.lex.c
DEP /tmp/qemu-test/src/dtc/srcpos.c
BISON dtc-parser.tab.c
LEX dtc-lexer.lex.c
DEP /tmp/qemu-test/src/dtc/treesource.c
DEP /tmp/qemu-test/src/dtc/livetree.c
DEP /tmp/qemu-test/src/dtc/fstree.c
DEP /tmp/qemu-test/src/dtc/flattree.c
DEP /tmp/qemu-test/src/dtc/dtc.c
DEP /tmp/qemu-test/src/dtc/data.c
DEP /tmp/qemu-test/src/dtc/checks.c
DEP convert-dtsv0-lexer.lex.c
DEP dtc-parser.tab.c
DEP dtc-lexer.lex.c
CHK version_gen.h
UPD version_gen.h
DEP /tmp/qemu-test/src/dtc/util.c
CC libfdt/fdt.o
CC libfdt/fdt_ro.o
CC libfdt/fdt_sw.o
CC libfdt/fdt_wip.o
CC libfdt/fdt_strerror.o
CC libfdt/fdt_rw.o
CC libfdt/fdt_addresses.o
CC libfdt/fdt_empty_tree.o
CC libfdt/fdt_overlay.o
AR libfdt/libfdt.a
ar: creating libfdt/libfdt.a
a - libfdt/fdt.o
a - libfdt/fdt_ro.o
a - libfdt/fdt_wip.o
a - libfdt/fdt_sw.o
a - libfdt/fdt_rw.o
a - libfdt/fdt_strerror.o
a - libfdt/fdt_empty_tree.o
a - libfdt/fdt_addresses.o
a - libfdt/fdt_overlay.o
CC tests/qemu-iotests/socket_scm_helper.o
GEN qga/qapi-generated/qga-qapi-types.h
GEN qga/qapi-generated/qga-qmp-commands.h
GEN qga/qapi-generated/qga-qapi-types.c
GEN qga/qapi-generated/qga-qapi-visit.h
GEN qga/qapi-generated/qga-qmp-marshal.c
GEN qga/qapi-generated/qga-qapi-visit.c
CC qmp-introspect.o
CC qapi-types.o
CC qapi-visit.o
CC qapi-event.o
CC qapi/qapi-dealloc-visitor.o
CC qapi/qapi-visit-core.o
CC qapi/qobject-input-visitor.o
CC qapi/qobject-output-visitor.o
CC qapi/qmp-registry.o
CC qapi/qmp-dispatch.o
CC qapi/string-input-visitor.o
CC qapi/string-output-visitor.o
CC qapi/opts-visitor.o
CC qapi/qapi-clone-visitor.o
CC qapi/qmp-event.o
CC qapi/qapi-util.o
CC qobject/qnull.o
CC qobject/qnum.o
CC qobject/qstring.o
CC qobject/qdict.o
CC qobject/qlist.o
CC qobject/qbool.o
CC qobject/qlit.o
CC qobject/qjson.o
CC qobject/qobject.o
CC qobject/json-lexer.o
CC qobject/json-streamer.o
CC qobject/json-parser.o
CC trace/control.o
CC trace/qmp.o
CC util/osdep.o
CC util/cutils.o
CC util/unicode.o
CC util/bufferiszero.o
CC util/qemu-timer-common.o
CC util/lockcnt.o
CC util/aiocb.o
CC util/async.o
CC util/thread-pool.o
CC util/qemu-timer.o
CC util/main-loop.o
CC util/iohandler.o
CC util/aio-posix.o
CC util/compatfd.o
CC util/event_notifier-posix.o
CC util/mmap-alloc.o
CC util/oslib-posix.o
CC util/qemu-openpty.o
CC util/qemu-thread-posix.o
CC util/memfd.o
CC util/envlist.o
CC util/path.o
CC util/module.o
CC util/host-utils.o
CC util/bitmap.o
CC util/bitops.o
CC util/hbitmap.o
CC util/fifo8.o
CC util/acl.o
CC util/cacheinfo.o
CC util/error.o
CC util/qemu-error.o
CC util/id.o
CC util/iov.o
CC util/qemu-config.o
CC util/qemu-sockets.o
CC util/uri.o
CC util/notify.o
CC util/qemu-option.o
CC util/qemu-progress.o
CC util/keyval.o
CC util/hexdump.o
CC util/crc32c.o
CC util/uuid.o
CC util/throttle.o
CC util/getauxval.o
CC util/readline.o
CC util/rcu.o
CC util/qemu-coroutine.o
CC util/qemu-coroutine-lock.o
CC util/qemu-coroutine-io.o
CC util/qemu-coroutine-sleep.o
CC util/coroutine-ucontext.o
CC util/buffer.o
CC util/timed-average.o
CC util/base64.o
CC util/log.o
CC util/pagesize.o
CC util/qdist.o
CC util/range.o
CC util/qht.o
CC util/stats64.o
CC util/systemd.o
CC util/vfio-helpers.o
CC trace-root.o
CC util/trace.o
CC crypto/trace.o
CC io/trace.o
CC migration/trace.o
CC block/trace.o
CC chardev/trace.o
CC hw/block/trace.o
CC hw/block/dataplane/trace.o
CC hw/char/trace.o
CC hw/intc/trace.o
CC hw/net/trace.o
CC hw/virtio/trace.o
CC hw/audio/trace.o
CC hw/misc/trace.o
CC hw/usb/trace.o
CC hw/scsi/trace.o
CC hw/nvram/trace.o
CC hw/display/trace.o
CC hw/input/trace.o
CC hw/timer/trace.o
CC hw/dma/trace.o
CC hw/sparc/trace.o
CC hw/sparc64/trace.o
CC hw/sd/trace.o
CC hw/isa/trace.o
CC hw/mem/trace.o
CC hw/i386/trace.o
CC hw/i386/xen/trace.o
CC hw/9pfs/trace.o
CC hw/ppc/trace.o
CC hw/pci/trace.o
CC hw/pci-host/trace.o
CC hw/s390x/trace.o
CC hw/vfio/trace.o
CC hw/acpi/trace.o
CC hw/arm/trace.o
CC hw/alpha/trace.o
CC hw/hppa/trace.o
CC hw/xen/trace.o
CC hw/ide/trace.o
CC ui/trace.o
CC audio/trace.o
CC net/trace.o
CC target/arm/trace.o
CC target/i386/trace.o
CC target/mips/trace.o
CC target/sparc/trace.o
CC target/s390x/trace.o
CC target/ppc/trace.o
CC qom/trace.o
CC linux-user/trace.o
CC qapi/trace.o
CC accel/tcg/trace.o
CC accel/kvm/trace.o
CC nbd/trace.o
CC scsi/trace.o
CC crypto/pbkdf-stub.o
CC stubs/arch-query-cpu-def.o
CC stubs/arch-query-cpu-model-expansion.o
CC stubs/arch-query-cpu-model-comparison.o
CC stubs/arch-query-cpu-model-baseline.o
CC stubs/bdrv-next-monitor-owned.o
CC stubs/blk-commit-all.o
CC stubs/blockdev-close-all-bdrv-states.o
CC stubs/clock-warp.o
CC stubs/cpu-get-clock.o
CC stubs/cpu-get-icount.o
CC stubs/dump.o
CC stubs/error-printf.o
CC stubs/fdset.o
CC stubs/gdbstub.o
CC stubs/get-vm-name.o
CC stubs/iothread.o
CC stubs/iothread-lock.o
CC stubs/is-daemonized.o
CC stubs/machine-init-done.o
CC stubs/migr-blocker.o
CC stubs/change-state-handler.o
CC stubs/monitor.o
CC stubs/notify-event.o
CC stubs/qtest.o
CC stubs/replay.o
CC stubs/runstate-check.o
CC stubs/set-fd-handler.o
CC stubs/slirp.o
CC stubs/sysbus.o
CC stubs/tpm.o
CC stubs/trace-control.o
CC stubs/uuid.o
CC stubs/vm-stop.o
CC stubs/vmstate.o
CC stubs/qmp_pc_dimm.o
CC stubs/target-monitor-defs.o
CC stubs/target-get-monitor-def.o
CC stubs/pc_madt_cpu_entry.o
CC stubs/vmgenid.o
CC stubs/xen-common.o
CC stubs/xen-hvm.o
CC stubs/pci-host-piix.o
CC stubs/ram-block.o
CC contrib/ivshmem-client/ivshmem-client.o
CC contrib/ivshmem-client/main.o
CC contrib/ivshmem-server/ivshmem-server.o
CC contrib/ivshmem-server/main.o
CC qemu-nbd.o
CC block.o
CC blockjob.o
CC qemu-io-cmds.o
CC replication.o
CC block/raw-format.o
CC block/qcow.o
CC block/vdi.o
CC block/vmdk.o
CC block/cloop.o
CC block/bochs.o
CC block/vpc.o
CC block/vvfat.o
CC block/dmg.o
CC block/qcow2.o
CC block/qcow2-refcount.o
CC block/qcow2-cluster.o
CC block/qcow2-snapshot.o
CC block/qcow2-cache.o
CC block/qcow2-bitmap.o
CC block/qed.o
CC block/qed-l2-cache.o
CC block/qed-table.o
CC block/qed-cluster.o
CC block/qed-check.o
CC block/vhdx.o
CC block/vhdx-endian.o
CC block/vhdx-log.o
CC block/quorum.o
CC block/parallels.o
CC block/blkdebug.o
CC block/blkverify.o
CC block/blkreplay.o
CC block/block-backend.o
CC block/snapshot.o
CC block/qapi.o
CC block/file-posix.o
CC block/null.o
CC block/mirror.o
CC block/commit.o
CC block/io.o
CC block/throttle-groups.o
CC block/nvme.o
CC block/nbd.o
CC block/sheepdog.o
CC block/nbd-client.o
CC block/accounting.o
CC block/dirty-bitmap.o
CC block/write-threshold.o
CC block/backup.o
CC block/replication.o
CC block/throttle.o
CC block/crypto.o
CC nbd/server.o
CC nbd/common.o
CC nbd/client.o
CC scsi/utils.o
CC scsi/pr-manager.o
CC scsi/pr-manager-helper.o
CC block/dmg-bz2.o
CC crypto/init.o
CC crypto/hash.o
CC crypto/hash-glib.o
CC crypto/hmac.o
CC crypto/hmac-glib.o
CC crypto/aes.o
CC crypto/desrfb.o
CC crypto/cipher.o
CC crypto/tlscreds.o
CC crypto/tlscredsanon.o
CC crypto/tlscredsx509.o
CC crypto/tlssession.o
CC crypto/secret.o
CC crypto/random-platform.o
CC crypto/pbkdf.o
CC crypto/ivgen.o
CC crypto/ivgen-essiv.o
CC crypto/ivgen-plain.o
CC crypto/ivgen-plain64.o
CC crypto/afsplit.o
CC crypto/xts.o
CC crypto/block.o
CC crypto/block-qcow.o
CC crypto/block-luks.o
CC io/channel.o
CC io/channel-buffer.o
CC io/channel-command.o
CC io/channel-file.o
CC io/channel-socket.o
CC io/channel-tls.o
CC io/channel-watch.o
CC io/channel-websock.o
CC io/channel-util.o
CC io/dns-resolver.o
CC io/net-listener.o
CC io/task.o
CC qom/object.o
CC qom/container.o
CC qom/qom-qobject.o
CC qom/object_interfaces.o
GEN qemu-img-cmds.h
CC qemu-io.o
CC scsi/qemu-pr-helper.o
CC qemu-bridge-helper.o
CC blockdev.o
CC blockdev-nbd.o
CC bootdevice.o
CC iothread.o
CC qdev-monitor.o
CC device-hotplug.o
CC os-posix.o
CC bt-host.o
CC bt-vhci.o
CC dma-helpers.o
CC vl.o
CC tpm.o
CC device_tree.o
CC qmp-marshal.o
CC qmp.o
CC hmp.o
CC cpus-common.o
CC audio/audio.o
CC audio/noaudio.o
CC audio/wavaudio.o
CC audio/mixeng.o
CC audio/sdlaudio.o
CC audio/ossaudio.o
CC audio/spiceaudio.o
CC audio/wavcapture.o
CC backends/rng.o
CC backends/rng-egd.o
CC backends/rng-random.o
CC backends/tpm.o
CC backends/hostmem.o
CC backends/hostmem-ram.o
CC backends/hostmem-file.o
CC backends/cryptodev.o
CC backends/cryptodev-builtin.o
CC backends/hostmem-memfd.o
CC block/stream.o
CC chardev/msmouse.o
CC chardev/wctablet.o
CC chardev/testdev.o
CC chardev/spice.o
CC disas/arm.o
CC disas/i386.o
CC fsdev/qemu-fsdev-dummy.o
CC fsdev/qemu-fsdev-opts.o
CC fsdev/qemu-fsdev-throttle.o
CC hw/acpi/core.o
CC hw/acpi/piix4.o
CC hw/acpi/pcihp.o
CC hw/acpi/ich9.o
CC hw/acpi/tco.o
CC hw/acpi/cpu_hotplug.o
CC hw/acpi/memory_hotplug.o
CC hw/acpi/cpu.o
CC hw/acpi/nvdimm.o
CC hw/acpi/vmgenid.o
CC hw/acpi/acpi_interface.o
CC hw/acpi/bios-linker-loader.o
CC hw/acpi/aml-build.o
CC hw/acpi/ipmi.o
CC hw/acpi/acpi-stub.o
CC hw/acpi/ipmi-stub.o
CC hw/audio/sb16.o
CC hw/audio/es1370.o
CC hw/audio/ac97.o
CC hw/audio/fmopl.o
CC hw/audio/adlib.o
CC hw/audio/gus.o
CC hw/audio/gusemu_mixer.o
CC hw/audio/gusemu_hal.o
CC hw/audio/cs4231a.o
CC hw/audio/intel-hda.o
CC hw/audio/hda-codec.o
CC hw/audio/pcspk.o
CC hw/audio/wm8750.o
CC hw/audio/pl041.o
CC hw/audio/lm4549.o
CC hw/audio/marvell_88w8618.o
CC hw/audio/soundhw.o
CC hw/block/block.o
CC hw/block/cdrom.o
CC hw/block/hd-geometry.o
CC hw/block/m25p80.o
CC hw/block/fdc.o
CC hw/block/nand.o
CC hw/block/pflash_cfi01.o
CC hw/block/pflash_cfi02.o
CC hw/block/xen_disk.o
CC hw/block/ecc.o
CC hw/block/onenand.o
CC hw/block/nvme.o
CC hw/bt/core.o
CC hw/bt/l2cap.o
CC hw/bt/sdp.o
CC hw/bt/hci.o
CC hw/bt/hid.o
CC hw/bt/hci-csr.o
CC hw/char/ipoctal232.o
CC hw/char/parallel.o
CC hw/char/pl011.o
CC hw/char/serial.o
CC hw/char/serial-isa.o
CC hw/char/serial-pci.o
CC hw/char/virtio-console.o
CC hw/char/xen_console.o
CC hw/char/cadence_uart.o
CC hw/char/cmsdk-apb-uart.o
CC hw/char/debugcon.o
CC hw/char/imx_serial.o
CC hw/core/qdev.o
CC hw/core/qdev-properties.o
CC hw/core/bus.o
CC hw/core/reset.o
CC hw/core/qdev-fw.o
CC hw/core/fw-path-provider.o
CC hw/core/irq.o
CC hw/core/hotplug.o
CC hw/core/nmi.o
CC hw/core/stream.o
CC hw/core/ptimer.o
CC hw/core/sysbus.o
CC hw/core/machine.o
CC hw/core/loader.o
CC hw/core/qdev-properties-system.o
CC hw/core/register.o
CC hw/core/or-irq.o
CC hw/core/platform-bus.o
CC hw/cpu/core.o
CC hw/display/ads7846.o
CC hw/display/cirrus_vga.o
CC hw/display/pl110.o
CC hw/display/ssd0303.o
CC hw/display/ssd0323.o
CC hw/display/xenfb.o
CC hw/display/vga-pci.o
CC hw/display/vga-isa.o
CC hw/display/vmware_vga.o
CC hw/display/blizzard.o
CC hw/display/exynos4210_fimd.o
CC hw/display/framebuffer.o
CC hw/display/tc6393xb.o
CC hw/display/qxl.o
CC hw/display/qxl-logger.o
CC hw/display/qxl-render.o
CC hw/dma/pl080.o
CC hw/dma/pl330.o
CC hw/dma/i8257.o
CC hw/dma/xilinx_axidma.o
CC hw/dma/xlnx-zynq-devcfg.o
CC hw/gpio/max7310.o
CC hw/gpio/pl061.o
CC hw/gpio/zaurus.o
CC hw/gpio/gpio_key.o
CC hw/i2c/core.o
CC hw/i2c/smbus.o
CC hw/i2c/smbus_eeprom.o
CC hw/i2c/i2c-ddc.o
CC hw/i2c/versatile_i2c.o
CC hw/i2c/smbus_ich9.o
CC hw/i2c/pm_smbus.o
CC hw/i2c/bitbang_i2c.o
CC hw/i2c/exynos4210_i2c.o
CC hw/i2c/imx_i2c.o
CC hw/i2c/aspeed_i2c.o
CC hw/ide/core.o
CC hw/ide/atapi.o
CC hw/ide/qdev.o
CC hw/ide/pci.o
CC hw/ide/isa.o
CC hw/ide/piix.o
CC hw/ide/microdrive.o
CC hw/ide/ahci.o
CC hw/ide/ich.o
CC hw/ide/ahci-allwinner.o
CC hw/input/hid.o
CC hw/input/lm832x.o
CC hw/input/pckbd.o
CC hw/input/pl050.o
CC hw/input/ps2.o
CC hw/input/stellaris_input.o
CC hw/input/tsc2005.o
CC hw/input/virtio-input.o
CC hw/input/virtio-input-hid.o
CC hw/input/virtio-input-host.o
CC hw/intc/i8259_common.o
CC hw/intc/i8259.o
CC hw/intc/pl190.o
CC hw/intc/xlnx-pmu-iomod-intc.o
CC hw/intc/xlnx-zynqmp-ipi.o
CC hw/intc/imx_avic.o
CC hw/intc/imx_gpcv2.o
CC hw/intc/realview_gic.o
CC hw/intc/ioapic_common.o
CC hw/intc/arm_gic_common.o
CC hw/intc/arm_gic.o
CC hw/intc/arm_gicv2m.o
CC hw/intc/arm_gicv3_common.o
CC hw/intc/arm_gicv3.o
CC hw/intc/arm_gicv3_dist.o
CC hw/intc/arm_gicv3_redist.o
CC hw/intc/arm_gicv3_its_common.o
CC hw/intc/intc.o
CC hw/ipack/ipack.o
CC hw/ipack/tpci200.o
CC hw/ipmi/ipmi.o
CC hw/ipmi/ipmi_bmc_extern.o
CC hw/ipmi/ipmi_bmc_sim.o
CC hw/ipmi/isa_ipmi_kcs.o
CC hw/ipmi/isa_ipmi_bt.o
CC hw/isa/isa-bus.o
CC hw/isa/apm.o
CC hw/mem/pc-dimm.o
CC hw/mem/nvdimm.o
CC hw/misc/applesmc.o
CC hw/misc/max111x.o
CC hw/misc/tmp105.o
CC hw/misc/tmp421.o
CC hw/misc/debugexit.o
CC hw/misc/sga.o
CC hw/misc/pc-testdev.o
CC hw/misc/pci-testdev.o
CC hw/misc/edu.o
CC hw/misc/unimp.o
CC hw/misc/vmcoreinfo.o
CC hw/misc/arm_l2x0.o
CC hw/misc/arm_integrator_debug.o
CC hw/misc/a9scu.o
CC hw/misc/arm11scu.o
CC hw/net/xen_nic.o
CC hw/net/ne2000.o
CC hw/net/eepro100.o
CC hw/net/pcnet-pci.o
CC hw/net/pcnet.o
CC hw/net/e1000.o
CC hw/net/e1000x_common.o
CC hw/net/net_tx_pkt.o
CC hw/net/net_rx_pkt.o
CC hw/net/e1000e.o
CC hw/net/e1000e_core.o
CC hw/net/rtl8139.o
CC hw/net/vmxnet3.o
CC hw/net/smc91c111.o
CC hw/net/lan9118.o
CC hw/net/ne2000-isa.o
CC hw/net/xgmac.o
CC hw/net/xilinx_axienet.o
CC hw/net/allwinner_emac.o
CC hw/net/imx_fec.o
CC hw/net/cadence_gem.o
CC hw/net/stellaris_enet.o
CC hw/net/ftgmac100.o
CC hw/net/rocker/rocker.o
CC hw/net/rocker/rocker_fp.o
CC hw/net/rocker/rocker_desc.o
CC hw/net/rocker/rocker_world.o
CC hw/net/rocker/rocker_of_dpa.o
CC hw/nvram/eeprom93xx.o
CC hw/nvram/eeprom_at24c.o
CC hw/nvram/fw_cfg.o
CC hw/nvram/chrp_nvram.o
CC hw/pci-bridge/pci_bridge_dev.o
CC hw/pci-bridge/pcie_root_port.o
CC hw/pci-bridge/gen_pcie_root_port.o
CC hw/pci-bridge/pcie_pci_bridge.o
CC hw/pci-bridge/pci_expander_bridge.o
CC hw/pci-bridge/xio3130_upstream.o
CC hw/pci-bridge/xio3130_downstream.o
CC hw/pci-bridge/ioh3420.o
CC hw/pci-bridge/i82801b11.o
CC hw/pci-host/pam.o
CC hw/pci-host/versatile.o
CC hw/pci-host/piix.o
CC hw/pci-host/q35.o
CC hw/pci-host/gpex.o
CC hw/pci/pci.o
CC hw/pci/pci_bridge.o
CC hw/pci/msix.o
CC hw/pci/msi.o
CC hw/pci/shpc.o
CC hw/pci/slotid_cap.o
CC hw/pci/pci_host.o
CC hw/pci/pcie_host.o
CC hw/pci/pcie.o
CC hw/pci/pcie_aer.o
CC hw/pci/pcie_port.o
CC hw/pci/pci-stub.o
CC hw/pcmcia/pcmcia.o
CC hw/scsi/scsi-disk.o
CC hw/scsi/scsi-generic.o
CC hw/scsi/scsi-bus.o
CC hw/scsi/lsi53c895a.o
CC hw/scsi/mptsas.o
CC hw/scsi/mptconfig.o
CC hw/scsi/mptendian.o
CC hw/scsi/megasas.o
CC hw/scsi/vmw_pvscsi.o
CC hw/scsi/esp.o
CC hw/scsi/esp-pci.o
CC hw/sd/pl181.o
CC hw/sd/ssi-sd.o
CC hw/sd/sd.o
CC hw/sd/core.o
CC hw/sd/sdhci.o
CC hw/smbios/smbios.o
CC hw/smbios/smbios_type_38.o
CC hw/smbios/smbios-stub.o
CC hw/smbios/smbios_type_38-stub.o
CC hw/ssi/pl022.o
CC hw/ssi/ssi.o
CC hw/ssi/xilinx_spips.o
CC hw/ssi/aspeed_smc.o
CC hw/ssi/stm32f2xx_spi.o
CC hw/ssi/mss-spi.o
CC hw/timer/arm_timer.o
CC hw/timer/arm_mptimer.o
CC hw/timer/armv7m_systick.o
CC hw/timer/a9gtimer.o
CC hw/timer/cadence_ttc.o
CC hw/timer/ds1338.o
CC hw/timer/hpet.o
CC hw/timer/i8254_common.o
CC hw/timer/i8254.o
CC hw/timer/pl031.o
CC hw/timer/twl92230.o
CC hw/timer/imx_epit.o
CC hw/timer/imx_gpt.o
CC hw/timer/stm32f2xx_timer.o
CC hw/timer/aspeed_timer.o
CC hw/timer/cmsdk-apb-timer.o
CC hw/timer/mss-timer.o
CC hw/tpm/tpm_util.o
CC hw/tpm/tpm_tis.o
CC hw/tpm/tpm_passthrough.o
CC hw/tpm/tpm_crb.o
CC hw/tpm/tpm_emulator.o
CC hw/usb/core.o
CC hw/usb/combined-packet.o
CC hw/usb/bus.o
CC hw/usb/libhw.o
CC hw/usb/desc.o
CC hw/usb/desc-msos.o
CC hw/usb/hcd-uhci.o
CC hw/usb/hcd-ohci.o
CC hw/usb/hcd-ehci.o
CC hw/usb/hcd-ehci-pci.o
CC hw/usb/hcd-ehci-sysbus.o
CC hw/usb/hcd-xhci.o
CC hw/usb/hcd-xhci-nec.o
CC hw/usb/hcd-musb.o
CC hw/usb/dev-hub.o
CC hw/usb/dev-hid.o
CC hw/usb/dev-wacom.o
CC hw/usb/dev-storage.o
CC hw/usb/dev-audio.o
CC hw/usb/dev-uas.o
CC hw/usb/dev-serial.o
CC hw/usb/dev-network.o
CC hw/usb/dev-bluetooth.o
CC hw/usb/dev-smartcard-reader.o
CC hw/usb/ccid-card-passthru.o
CC hw/usb/ccid-card-emulated.o
CC hw/usb/dev-mtp.o
CC hw/usb/host-stub.o
CC hw/virtio/virtio-rng.o
CC hw/virtio/virtio-pci.o
CC hw/virtio/virtio-bus.o
CC hw/virtio/virtio-mmio.o
CC hw/virtio/vhost-stub.o
CC hw/watchdog/watchdog.o
CC hw/watchdog/wdt_i6300esb.o
CC hw/watchdog/wdt_ib700.o
CC hw/watchdog/wdt_aspeed.o
CC hw/xen/xen_backend.o
CC hw/xen/xen_devconfig.o
CC hw/xen/xen_pvdev.o
CC hw/xen/xen-common.o
CC migration/migration.o
CC migration/socket.o
CC migration/fd.o
CC migration/exec.o
CC migration/tls.o
CC migration/channel.o
CC migration/savevm.o
CC migration/colo-comm.o
CC migration/colo.o
CC migration/colo-failover.o
CC migration/vmstate.o
CC migration/vmstate-types.o
CC migration/page_cache.o
CC migration/qemu-file.o
CC migration/global_state.o
CC migration/qemu-file-channel.o
CC migration/xbzrle.o
CC migration/postcopy-ram.o
CC migration/qjson.o
CC migration/rdma.o
CC migration/block.o
CC net/net.o
CC net/queue.o
CC net/checksum.o
CC net/util.o
CC net/hub.o
CC net/socket.o
CC net/dump.o
CC net/eth.o
CC net/l2tpv3.o
CC net/vhost-user.o
CC net/slirp.o
CC net/filter.o
CC net/filter-buffer.o
CC net/filter-mirror.o
CC net/colo-compare.o
CC net/colo.o
CC net/filter-rewriter.o
CC net/filter-replay.o
CC net/tap.o
CC net/tap-linux.o
CC qom/cpu.o
CC replay/replay.o
CC replay/replay-internal.o
CC replay/replay-events.o
CC replay/replay-time.o
CC replay/replay-input.o
CC replay/replay-char.o
CC replay/replay-snapshot.o
CC replay/replay-net.o
CC replay/replay-audio.o
CC slirp/cksum.o
/tmp/qemu-test/src/replay/replay-internal.c: In function 'replay_put_array':
/tmp/qemu-test/src/replay/replay-internal.c:65: warning: ignoring return value of 'fwrite', declared with attribute warn_unused_result
CC slirp/if.o
CC slirp/ip_icmp.o
CC slirp/ip6_icmp.o
CC slirp/ip6_input.o
CC slirp/ip6_output.o
CC slirp/ip_input.o
CC slirp/ip_output.o
CC slirp/dnssearch.o
CC slirp/dhcpv6.o
CC slirp/slirp.o
CC slirp/mbuf.o
CC slirp/misc.o
CC slirp/sbuf.o
CC slirp/socket.o
CC slirp/tcp_input.o
CC slirp/tcp_output.o
CC slirp/tcp_subr.o
CC slirp/tcp_timer.o
CC slirp/udp.o
CC slirp/udp6.o
CC slirp/bootp.o
CC slirp/tftp.o
CC slirp/arp_table.o
CC slirp/ndp_table.o
/tmp/qemu-test/src/slirp/tcp_input.c: In function 'tcp_input':
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: 'save_ip.ip_p' may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: 'save_ip.ip_len' may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: 'save_ip.ip_tos' may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: 'save_ip.ip_id' may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: 'save_ip.ip_off' may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: 'save_ip.ip_ttl' may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: 'save_ip.ip_sum' may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: 'save_ip.ip_src.s_addr' may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: 'save_ip.ip_dst.s_addr' may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:220: warning: 'save_ip6.ip_nh' may be used uninitialized in this function
CC slirp/ncsi.o
CC ui/keymaps.o
CC ui/console.o
CC ui/cursor.o
CC ui/qemu-pixman.o
CC ui/input.o
CC ui/input-keymap.o
CC ui/input-legacy.o
CC ui/input-linux.o
CC ui/spice-core.o
CC ui/spice-input.o
CC ui/spice-display.o
CC ui/sdl.o
CC ui/sdl_zoom.o
CC ui/curses.o
CC ui/vnc.o
CC ui/vnc-enc-zlib.o
CC ui/vnc-enc-hextile.o
CC ui/vnc-enc-tight.o
CC ui/vnc-palette.o
CC ui/vnc-enc-zrle.o
CC ui/vnc-ws.o
CC ui/vnc-auth-vencrypt.o
CC ui/vnc-jobs.o
CC ui/gtk.o
CC ui/x_keymap.o
VERT ui/shader/texture-blit-vert.h
VERT ui/shader/texture-blit-flip-vert.h
CC ui/console-gl.o
FRAG ui/shader/texture-blit-frag.h
CC ui/egl-helpers.o
CC ui/egl-context.o
CC ui/gtk-egl.o
CC chardev/char.o
CC chardev/char-fd.o
CC chardev/char-fe.o
CC chardev/char-file.o
CC chardev/char-io.o
CC chardev/char-mux.o
CC chardev/char-null.o
CC chardev/char-parallel.o
CC chardev/char-pipe.o
CC chardev/char-pty.o
CC chardev/char-ringbuf.o
CC chardev/char-serial.o
CC chardev/char-socket.o
CC chardev/char-stdio.o
CC chardev/char-udp.o
LINK tests/qemu-iotests/socket_scm_helper
CC qga/commands.o
CC qga/guest-agent-command-state.o
CC qga/main.o
CC qga/commands-posix.o
CC qga/channel-posix.o
CC qga/qapi-generated/qga-qapi-types.o
CC qga/qapi-generated/qga-qapi-visit.o
CC qga/qapi-generated/qga-qmp-marshal.o
AR libqemuutil.a
CC qemu-img.o
AS optionrom/multiboot.o
CC ui/shader.o
AS optionrom/linuxboot.o
CC optionrom/linuxboot_dma.o
cc: unrecognized option '-no-integrated-as'
cc: unrecognized option '-no-integrated-as'
AS optionrom/kvmvapic.o
BUILD optionrom/multiboot.img
BUILD optionrom/linuxboot.img
BUILD optionrom/linuxboot_dma.img
BUILD optionrom/multiboot.raw
BUILD optionrom/linuxboot.raw
BUILD optionrom/kvmvapic.img
SIGN optionrom/multiboot.bin
SIGN optionrom/linuxboot.bin
BUILD optionrom/kvmvapic.raw
BUILD optionrom/linuxboot_dma.raw
SIGN optionrom/kvmvapic.bin
SIGN optionrom/linuxboot_dma.bin
LINK qemu-ga
LINK ivshmem-client
LINK ivshmem-server
In file included from /usr/include/gtk-2.0/gtk/gtk.h:235,
from /tmp/qemu-test/src/include/ui/gtk.h:10,
from /tmp/qemu-test/src/ui/gtk-egl.c:21:
/usr/include/gtk-2.0/gtk/gtkitemfactory.h:47: warning: function declaration isn't a prototype
In file included from /usr/include/gtk-2.0/gtk/gtk.h:235,
from /tmp/qemu-test/src/include/ui/gtk.h:10,
from /tmp/qemu-test/src/ui/gtk.c:44:
/usr/include/gtk-2.0/gtk/gtkitemfactory.h:47: warning: function declaration isn't a prototype
LINK qemu-nbd
LINK qemu-img
LINK qemu-io
LINK scsi/qemu-pr-helper
LINK qemu-bridge-helper
GEN x86_64-softmmu/hmp-commands.h
GEN x86_64-softmmu/hmp-commands-info.h
GEN x86_64-softmmu/config-target.h
CC x86_64-softmmu/exec.o
CC x86_64-softmmu/tcg/tcg.o
CC x86_64-softmmu/tcg/tcg-op-gvec.o
CC x86_64-softmmu/tcg/tcg-op.o
CC x86_64-softmmu/tcg/tcg-common.o
CC x86_64-softmmu/tcg/optimize.o
CC x86_64-softmmu/tcg/tcg-op-vec.o
GEN aarch64-softmmu/hmp-commands.h
CC x86_64-softmmu/fpu/softfloat.o
CC x86_64-softmmu/disas.o
GEN x86_64-softmmu/gdbstub-xml.c
GEN aarch64-softmmu/hmp-commands-info.h
CC x86_64-softmmu/arch_init.o
CC x86_64-softmmu/cpus.o
GEN aarch64-softmmu/config-target.h
CC x86_64-softmmu/monitor.o
CC aarch64-softmmu/exec.o
CC x86_64-softmmu/gdbstub.o
CC x86_64-softmmu/balloon.o
CC x86_64-softmmu/ioport.o
CC x86_64-softmmu/numa.o
CC x86_64-softmmu/qtest.o
CC x86_64-softmmu/memory.o
CC x86_64-softmmu/memory_mapping.o
CC x86_64-softmmu/dump.o
CC x86_64-softmmu/migration/ram.o
CC aarch64-softmmu/tcg/tcg.o
CC x86_64-softmmu/accel/accel.o
CC aarch64-softmmu/tcg/tcg-op.o
CC x86_64-softmmu/accel/kvm/kvm-all.o
CC x86_64-softmmu/accel/stubs/hax-stub.o
CC x86_64-softmmu/accel/stubs/hvf-stub.o
CC x86_64-softmmu/accel/stubs/whpx-stub.o
CC aarch64-softmmu/tcg/tcg-op-vec.o
CC x86_64-softmmu/accel/tcg/tcg-all.o
CC x86_64-softmmu/accel/tcg/cputlb.o
CC x86_64-softmmu/accel/tcg/tcg-runtime.o
CC x86_64-softmmu/accel/tcg/tcg-runtime-gvec.o
CC aarch64-softmmu/tcg/tcg-op-gvec.o
CC x86_64-softmmu/accel/tcg/cpu-exec.o
CC x86_64-softmmu/accel/tcg/cpu-exec-common.o
CC aarch64-softmmu/tcg/tcg-common.o
CC x86_64-softmmu/accel/tcg/translate-all.o
CC aarch64-softmmu/tcg/optimize.o
CC x86_64-softmmu/accel/tcg/translator.o
CC x86_64-softmmu/hw/block/virtio-blk.o
CC x86_64-softmmu/hw/block/vhost-user-blk.o
CC x86_64-softmmu/hw/block/dataplane/virtio-blk.o
CC x86_64-softmmu/hw/char/virtio-serial-bus.o
CC aarch64-softmmu/fpu/softfloat.o
CC x86_64-softmmu/hw/core/generic-loader.o
CC x86_64-softmmu/hw/core/null-machine.o
CC x86_64-softmmu/hw/display/vga.o
CC x86_64-softmmu/hw/display/virtio-gpu.o
CC x86_64-softmmu/hw/display/virtio-gpu-3d.o
CC x86_64-softmmu/hw/display/virtio-gpu-pci.o
CC x86_64-softmmu/hw/display/virtio-vga.o
CC aarch64-softmmu/disas.o
CC x86_64-softmmu/hw/intc/apic.o
CC x86_64-softmmu/hw/intc/apic_common.o
CC x86_64-softmmu/hw/intc/ioapic.o
CC x86_64-softmmu/hw/isa/lpc_ich9.o
CC x86_64-softmmu/hw/misc/ivshmem.o
CC x86_64-softmmu/hw/misc/pvpanic.o
CC x86_64-softmmu/hw/misc/hyperv_testdev.o
CC x86_64-softmmu/hw/misc/mmio_interface.o
CC x86_64-softmmu/hw/net/virtio-net.o
CC x86_64-softmmu/hw/net/vhost_net.o
CC x86_64-softmmu/hw/scsi/virtio-scsi.o
GEN aarch64-softmmu/gdbstub-xml.c
CC aarch64-softmmu/arch_init.o
CC aarch64-softmmu/cpus.o
CC x86_64-softmmu/hw/scsi/virtio-scsi-dataplane.o
CC x86_64-softmmu/hw/scsi/vhost-scsi-common.o
CC x86_64-softmmu/hw/scsi/vhost-scsi.o
CC aarch64-softmmu/monitor.o
CC x86_64-softmmu/hw/scsi/vhost-user-scsi.o
CC aarch64-softmmu/gdbstub.o
CC aarch64-softmmu/balloon.o
CC aarch64-softmmu/ioport.o
CC aarch64-softmmu/numa.o
CC x86_64-softmmu/hw/timer/mc146818rtc.o
CC x86_64-softmmu/hw/vfio/common.o
CC aarch64-softmmu/qtest.o
CC aarch64-softmmu/memory.o
CC aarch64-softmmu/memory_mapping.o
CC aarch64-softmmu/migration/ram.o
CC aarch64-softmmu/accel/accel.o
CC aarch64-softmmu/dump.o
CC x86_64-softmmu/hw/vfio/pci.o
CC x86_64-softmmu/hw/vfio/pci-quirks.o
CC aarch64-softmmu/accel/stubs/hax-stub.o
CC aarch64-softmmu/accel/stubs/hvf-stub.o
CC aarch64-softmmu/accel/stubs/whpx-stub.o
CC aarch64-softmmu/accel/stubs/kvm-stub.o
CC aarch64-softmmu/accel/tcg/tcg-all.o
CC aarch64-softmmu/accel/tcg/cputlb.o
CC x86_64-softmmu/hw/vfio/platform.o
CC aarch64-softmmu/accel/tcg/tcg-runtime.o
CC aarch64-softmmu/accel/tcg/tcg-runtime-gvec.o
CC x86_64-softmmu/hw/vfio/spapr.o
CC x86_64-softmmu/hw/virtio/virtio.o
CC aarch64-softmmu/accel/tcg/cpu-exec.o
CC aarch64-softmmu/accel/tcg/cpu-exec-common.o
CC x86_64-softmmu/hw/virtio/virtio-balloon.o
CC aarch64-softmmu/accel/tcg/translate-all.o
CC x86_64-softmmu/hw/virtio/vhost.o
CC x86_64-softmmu/hw/virtio/vhost-backend.o
CC x86_64-softmmu/hw/virtio/vhost-user.o
CC aarch64-softmmu/accel/tcg/translator.o
CC x86_64-softmmu/hw/virtio/vhost-vsock.o
CC x86_64-softmmu/hw/virtio/virtio-crypto.o
CC x86_64-softmmu/hw/virtio/virtio-crypto-pci.o
CC x86_64-softmmu/hw/xen/xen-host-pci-device.o
CC x86_64-softmmu/hw/xen/xen_pt.o
CC aarch64-softmmu/hw/adc/stm32f2xx_adc.o
CC aarch64-softmmu/hw/block/virtio-blk.o
CC x86_64-softmmu/hw/xen/xen_pt_config_init.o
CC x86_64-softmmu/hw/xen/xen_pt_graphics.o
CC aarch64-softmmu/hw/block/vhost-user-blk.o
CC x86_64-softmmu/hw/xen/xen_pt_msi.o
CC aarch64-softmmu/hw/block/dataplane/virtio-blk.o
CC x86_64-softmmu/hw/xen/xen_pt_load_rom.o
CC x86_64-softmmu/hw/i386/multiboot.o
CC aarch64-softmmu/hw/char/exynos4210_uart.o
CC x86_64-softmmu/hw/i386/pc.o
CC x86_64-softmmu/hw/i386/pc_piix.o
CC aarch64-softmmu/hw/char/omap_uart.o
CC x86_64-softmmu/hw/i386/pc_q35.o
CC x86_64-softmmu/hw/i386/pc_sysfw.o
CC x86_64-softmmu/hw/i386/x86-iommu.o
CC aarch64-softmmu/hw/char/digic-uart.o
/tmp/qemu-test/src/hw/i386/pc_piix.c: In function 'igd_passthrough_isa_bridge_create':
/tmp/qemu-test/src/hw/i386/pc_piix.c:1079: warning: 'pch_rev_id' may be used uninitialized in this function
CC x86_64-softmmu/hw/i386/intel_iommu.o
CC aarch64-softmmu/hw/char/stm32f2xx_usart.o
CC aarch64-softmmu/hw/char/bcm2835_aux.o
CC x86_64-softmmu/hw/i386/amd_iommu.o
CC x86_64-softmmu/hw/i386/vmport.o
CC x86_64-softmmu/hw/i386/vmmouse.o
CC aarch64-softmmu/hw/char/virtio-serial-bus.o
CC aarch64-softmmu/hw/core/generic-loader.o
CC aarch64-softmmu/hw/core/null-machine.o
CC aarch64-softmmu/hw/cpu/arm11mpcore.o
CC aarch64-softmmu/hw/cpu/realview_mpcore.o
CC aarch64-softmmu/hw/cpu/a9mpcore.o
CC aarch64-softmmu/hw/cpu/a15mpcore.o
CC aarch64-softmmu/hw/display/omap_dss.o
CC aarch64-softmmu/hw/display/omap_lcdc.o
CC x86_64-softmmu/hw/i386/kvmvapic.o
CC aarch64-softmmu/hw/display/pxa2xx_lcd.o
CC x86_64-softmmu/hw/i386/acpi-build.o
CC aarch64-softmmu/hw/display/bcm2835_fb.o
CC x86_64-softmmu/hw/i386/../xenpv/xen_machine_pv.o
CC x86_64-softmmu/hw/i386/kvm/clock.o
CC aarch64-softmmu/hw/display/vga.o
CC aarch64-softmmu/hw/display/virtio-gpu.o
CC aarch64-softmmu/hw/display/virtio-gpu-3d.o
CC aarch64-softmmu/hw/display/virtio-gpu-pci.o
CC x86_64-softmmu/hw/i386/kvm/apic.o
CC aarch64-softmmu/hw/display/dpcd.o
CC x86_64-softmmu/hw/i386/kvm/i8259.o
CC x86_64-softmmu/hw/i386/kvm/ioapic.o
CC aarch64-softmmu/hw/display/xlnx_dp.o
CC aarch64-softmmu/hw/dma/xlnx_dpdma.o
CC aarch64-softmmu/hw/dma/omap_dma.o
/tmp/qemu-test/src/hw/i386/acpi-build.c: In function 'build_append_pci_bus_devices':
/tmp/qemu-test/src/hw/i386/acpi-build.c:510: warning: 'notify_method' may be used uninitialized in this function
CC x86_64-softmmu/hw/i386/kvm/i8254.o
CC x86_64-softmmu/hw/i386/xen/xen_platform.o
CC x86_64-softmmu/hw/i386/xen/xen_apic.o
CC x86_64-softmmu/hw/i386/xen/xen_pvdevice.o
CC aarch64-softmmu/hw/dma/soc_dma.o
CC aarch64-softmmu/hw/dma/pxa2xx_dma.o
CC aarch64-softmmu/hw/dma/bcm2835_dma.o
CC aarch64-softmmu/hw/gpio/omap_gpio.o
CC aarch64-softmmu/hw/gpio/bcm2835_gpio.o
CC aarch64-softmmu/hw/gpio/imx_gpio.o
CC aarch64-softmmu/hw/i2c/omap_i2c.o
CC aarch64-softmmu/hw/input/pxa2xx_keypad.o
CC x86_64-softmmu/hw/i386/xen/xen-hvm.o
CC aarch64-softmmu/hw/input/tsc210x.o
CC x86_64-softmmu/hw/i386/xen/xen-mapcache.o
CC aarch64-softmmu/hw/intc/armv7m_nvic.o
CC aarch64-softmmu/hw/intc/exynos4210_gic.o
CC aarch64-softmmu/hw/intc/exynos4210_combiner.o
CC x86_64-softmmu/target/i386/helper.o
CC x86_64-softmmu/target/i386/cpu.o
CC aarch64-softmmu/hw/intc/omap_intc.o
CC x86_64-softmmu/target/i386/gdbstub.o
CC aarch64-softmmu/hw/intc/bcm2835_ic.o
CC x86_64-softmmu/target/i386/xsave_helper.o
CC aarch64-softmmu/hw/intc/bcm2836_control.o
CC x86_64-softmmu/target/i386/translate.o
CC x86_64-softmmu/target/i386/bpt_helper.o
CC aarch64-softmmu/hw/intc/allwinner-a10-pic.o
CC x86_64-softmmu/target/i386/cc_helper.o
CC x86_64-softmmu/target/i386/excp_helper.o
CC x86_64-softmmu/target/i386/fpu_helper.o
CC x86_64-softmmu/target/i386/int_helper.o
CC x86_64-softmmu/target/i386/mem_helper.o
CC x86_64-softmmu/target/i386/misc_helper.o
CC x86_64-softmmu/target/i386/mpx_helper.o
CC aarch64-softmmu/hw/intc/aspeed_vic.o
CC x86_64-softmmu/target/i386/seg_helper.o
CC x86_64-softmmu/target/i386/smm_helper.o
CC x86_64-softmmu/target/i386/svm_helper.o
CC aarch64-softmmu/hw/intc/arm_gicv3_cpuif.o
CC x86_64-softmmu/target/i386/machine.o
CC x86_64-softmmu/target/i386/arch_memory_mapping.o
CC aarch64-softmmu/hw/misc/ivshmem.o
CC x86_64-softmmu/target/i386/arch_dump.o
CC aarch64-softmmu/hw/misc/arm_sysctl.o
CC x86_64-softmmu/target/i386/monitor.o
CC x86_64-softmmu/target/i386/kvm.o
CC x86_64-softmmu/target/i386/hyperv.o
CC aarch64-softmmu/hw/misc/cbus.o
CC aarch64-softmmu/hw/misc/exynos4210_pmu.o
CC aarch64-softmmu/hw/misc/exynos4210_clk.o
CC aarch64-softmmu/hw/misc/exynos4210_rng.o
GEN trace/generated-helpers.c
CC x86_64-softmmu/trace/control-target.o
CC aarch64-softmmu/hw/misc/imx_ccm.o
CC aarch64-softmmu/hw/misc/imx31_ccm.o
CC x86_64-softmmu/gdbstub-xml.o
CC aarch64-softmmu/hw/misc/imx25_ccm.o
CC aarch64-softmmu/hw/misc/imx6_ccm.o
CC aarch64-softmmu/hw/misc/imx6_src.o
CC aarch64-softmmu/hw/misc/imx7_ccm.o
CC x86_64-softmmu/trace/generated-helpers.o
CC aarch64-softmmu/hw/misc/imx2_wdt.o
CC aarch64-softmmu/hw/misc/imx7_snvs.o
CC aarch64-softmmu/hw/misc/imx7_gpr.o
CC aarch64-softmmu/hw/misc/mst_fpga.o
CC aarch64-softmmu/hw/misc/omap_clk.o
CC aarch64-softmmu/hw/misc/omap_gpmc.o
CC aarch64-softmmu/hw/misc/omap_l4.o
CC aarch64-softmmu/hw/misc/omap_sdrc.o
CC aarch64-softmmu/hw/misc/omap_tap.o
CC aarch64-softmmu/hw/misc/bcm2835_mbox.o
CC aarch64-softmmu/hw/misc/bcm2835_property.o
CC aarch64-softmmu/hw/misc/bcm2835_rng.o
CC aarch64-softmmu/hw/misc/zynq_slcr.o
CC aarch64-softmmu/hw/misc/zynq-xadc.o
CC aarch64-softmmu/hw/misc/stm32f2xx_syscfg.o
CC aarch64-softmmu/hw/misc/mps2-scc.o
CC aarch64-softmmu/hw/misc/auxbus.o
CC aarch64-softmmu/hw/misc/aspeed_scu.o
LINK x86_64-softmmu/qemu-system-x86_64
CC aarch64-softmmu/hw/misc/aspeed_sdmc.o
CC aarch64-softmmu/hw/misc/msf2-sysreg.o
CC aarch64-softmmu/hw/misc/mmio_interface.o
CC aarch64-softmmu/hw/net/virtio-net.o
CC aarch64-softmmu/hw/net/vhost_net.o
CC aarch64-softmmu/hw/pcmcia/pxa2xx.o
CC aarch64-softmmu/hw/scsi/virtio-scsi.o
CC aarch64-softmmu/hw/scsi/virtio-scsi-dataplane.o
CC aarch64-softmmu/hw/scsi/vhost-scsi-common.o
CC aarch64-softmmu/hw/scsi/vhost-scsi.o
CC aarch64-softmmu/hw/scsi/vhost-user-scsi.o
CC aarch64-softmmu/hw/sd/omap_mmc.o
CC aarch64-softmmu/hw/sd/pxa2xx_mmci.o
CC aarch64-softmmu/hw/sd/bcm2835_sdhost.o
CC aarch64-softmmu/hw/ssi/omap_spi.o
CC aarch64-softmmu/hw/ssi/imx_spi.o
CC aarch64-softmmu/hw/timer/exynos4210_mct.o
CC aarch64-softmmu/hw/timer/exynos4210_pwm.o
CC aarch64-softmmu/hw/timer/exynos4210_rtc.o
CC aarch64-softmmu/hw/timer/omap_gptimer.o
CC aarch64-softmmu/hw/timer/omap_synctimer.o
CC aarch64-softmmu/hw/timer/pxa2xx_timer.o
CC aarch64-softmmu/hw/timer/digic-timer.o
CC aarch64-softmmu/hw/timer/allwinner-a10-pit.o
CC aarch64-softmmu/hw/usb/tusb6010.o
CC aarch64-softmmu/hw/usb/chipidea.o
CC aarch64-softmmu/hw/vfio/common.o
CC aarch64-softmmu/hw/vfio/pci.o
CC aarch64-softmmu/hw/vfio/pci-quirks.o
CC aarch64-softmmu/hw/vfio/platform.o
CC aarch64-softmmu/hw/vfio/calxeda-xgmac.o
CC aarch64-softmmu/hw/vfio/amd-xgbe.o
CC aarch64-softmmu/hw/vfio/spapr.o
CC aarch64-softmmu/hw/virtio/virtio.o
CC aarch64-softmmu/hw/virtio/virtio-balloon.o
CC aarch64-softmmu/hw/virtio/vhost.o
CC aarch64-softmmu/hw/virtio/vhost-user.o
CC aarch64-softmmu/hw/virtio/vhost-vsock.o
CC aarch64-softmmu/hw/virtio/vhost-backend.o
CC aarch64-softmmu/hw/virtio/virtio-crypto.o
CC aarch64-softmmu/hw/virtio/virtio-crypto-pci.o
CC aarch64-softmmu/hw/arm/boot.o
CC aarch64-softmmu/hw/arm/collie.o
CC aarch64-softmmu/hw/arm/exynos4_boards.o
CC aarch64-softmmu/hw/arm/gumstix.o
CC aarch64-softmmu/hw/arm/highbank.o
CC aarch64-softmmu/hw/arm/digic_boards.o
CC aarch64-softmmu/hw/arm/integratorcp.o
CC aarch64-softmmu/hw/arm/mainstone.o
CC aarch64-softmmu/hw/arm/musicpal.o
CC aarch64-softmmu/hw/arm/nseries.o
CC aarch64-softmmu/hw/arm/omap_sx1.o
CC aarch64-softmmu/hw/arm/palm.o
CC aarch64-softmmu/hw/arm/realview.o
CC aarch64-softmmu/hw/arm/spitz.o
CC aarch64-softmmu/hw/arm/stellaris.o
CC aarch64-softmmu/hw/arm/tosa.o
CC aarch64-softmmu/hw/arm/versatilepb.o
CC aarch64-softmmu/hw/arm/vexpress.o
CC aarch64-softmmu/hw/arm/virt.o
CC aarch64-softmmu/hw/arm/xilinx_zynq.o
CC aarch64-softmmu/hw/arm/z2.o
CC aarch64-softmmu/hw/arm/netduino2.o
CC aarch64-softmmu/hw/arm/virt-acpi-build.o
CC aarch64-softmmu/hw/arm/sysbus-fdt.o
CC aarch64-softmmu/hw/arm/exynos4210.o
CC aarch64-softmmu/hw/arm/pxa2xx.o
CC aarch64-softmmu/hw/arm/armv7m.o
CC aarch64-softmmu/hw/arm/pxa2xx_gpio.o
CC aarch64-softmmu/hw/arm/pxa2xx_pic.o
CC aarch64-softmmu/hw/arm/digic.o
CC aarch64-softmmu/hw/arm/omap1.o
CC aarch64-softmmu/hw/arm/omap2.o
CC aarch64-softmmu/hw/arm/strongarm.o
CC aarch64-softmmu/hw/arm/allwinner-a10.o
CC aarch64-softmmu/hw/arm/cubieboard.o
CC aarch64-softmmu/hw/arm/bcm2835_peripherals.o
CC aarch64-softmmu/hw/arm/bcm2836.o
CC aarch64-softmmu/hw/arm/raspi.o
CC aarch64-softmmu/hw/arm/stm32f205_soc.o
CC aarch64-softmmu/hw/arm/xlnx-zynqmp.o
CC aarch64-softmmu/hw/arm/xlnx-zcu102.o
CC aarch64-softmmu/hw/arm/fsl-imx25.o
CC aarch64-softmmu/hw/arm/imx25_pdk.o
CC aarch64-softmmu/hw/arm/fsl-imx31.o
CC aarch64-softmmu/hw/arm/kzm.o
CC aarch64-softmmu/hw/arm/fsl-imx6.o
CC aarch64-softmmu/hw/arm/sabrelite.o
CC aarch64-softmmu/hw/arm/aspeed_soc.o
CC aarch64-softmmu/hw/arm/aspeed.o
CC aarch64-softmmu/hw/arm/mps2.o
CC aarch64-softmmu/hw/arm/msf2-soc.o
CC aarch64-softmmu/hw/arm/msf2-som.o
CC aarch64-softmmu/target/arm/arm-semi.o
CC aarch64-softmmu/target/arm/machine.o
CC aarch64-softmmu/target/arm/psci.o
CC aarch64-softmmu/target/arm/arch_dump.o
CC aarch64-softmmu/target/arm/monitor.o
CC aarch64-softmmu/target/arm/kvm-stub.o
CC aarch64-softmmu/target/arm/translate.o
CC aarch64-softmmu/target/arm/op_helper.o
CC aarch64-softmmu/target/arm/helper.o
CC aarch64-softmmu/target/arm/cpu.o
CC aarch64-softmmu/target/arm/neon_helper.o
CC aarch64-softmmu/target/arm/iwmmxt_helper.o
CC aarch64-softmmu/target/arm/gdbstub.o
CC aarch64-softmmu/target/arm/cpu64.o
CC aarch64-softmmu/target/arm/translate-a64.o
CC aarch64-softmmu/target/arm/helper-a64.o
CC aarch64-softmmu/target/arm/gdbstub64.o
CC aarch64-softmmu/target/arm/crypto_helper.o
CC aarch64-softmmu/target/arm/arm-powerctl.o
GEN trace/generated-helpers.c
CC aarch64-softmmu/trace/control-target.o
/tmp/qemu-test/src/target/arm/translate-a64.c: In function 'handle_shri_with_rndacc':
/tmp/qemu-test/src/target/arm/translate-a64.c:6444: warning: 'tcg_src_hi' may be used uninitialized in this function
/tmp/qemu-test/src/target/arm/translate-a64.c: In function 'disas_simd_scalar_two_reg_misc':
/tmp/qemu-test/src/target/arm/translate-a64.c:8175: warning: 'rmode' may be used uninitialized in this function
CC aarch64-softmmu/gdbstub-xml.o
CC aarch64-softmmu/trace/generated-helpers.o
LINK aarch64-softmmu/qemu-system-aarch64
TEST tests/qapi-schema/alternate-any.out
TEST tests/qapi-schema/alternate-array.out
TEST tests/qapi-schema/alternate-base.out
TEST tests/qapi-schema/alternate-clash.out
TEST tests/qapi-schema/alternate-conflict-enum-bool.out
TEST tests/qapi-schema/alternate-conflict-dict.out
TEST tests/qapi-schema/alternate-conflict-string.out
TEST tests/qapi-schema/alternate-conflict-enum-int.out
TEST tests/qapi-schema/alternate-conflict-bool-string.out
TEST tests/qapi-schema/alternate-conflict-num-string.out
TEST tests/qapi-schema/alternate-empty.out
TEST tests/qapi-schema/alternate-nested.out
TEST tests/qapi-schema/alternate-unknown.out
TEST tests/qapi-schema/args-alternate.out
TEST tests/qapi-schema/args-any.out
TEST tests/qapi-schema/args-array-empty.out
TEST tests/qapi-schema/args-array-unknown.out
TEST tests/qapi-schema/args-bad-boxed.out
TEST tests/qapi-schema/args-boxed-anon.out
TEST tests/qapi-schema/args-boxed-empty.out
TEST tests/qapi-schema/args-boxed-string.out
TEST tests/qapi-schema/args-int.out
TEST tests/qapi-schema/args-invalid.out
TEST tests/qapi-schema/args-member-array-bad.out
TEST tests/qapi-schema/args-member-case.out
TEST tests/qapi-schema/args-member-unknown.out
TEST tests/qapi-schema/args-name-clash.out
TEST tests/qapi-schema/args-union.out
TEST tests/qapi-schema/args-unknown.out
TEST tests/qapi-schema/bad-base.out
TEST tests/qapi-schema/bad-data.out
TEST tests/qapi-schema/bad-ident.out
TEST tests/qapi-schema/bad-type-bool.out
TEST tests/qapi-schema/bad-type-dict.out
TEST tests/qapi-schema/bad-type-int.out
TEST tests/qapi-schema/base-cycle-direct.out
TEST tests/qapi-schema/base-cycle-indirect.out
TEST tests/qapi-schema/command-int.out
TEST tests/qapi-schema/comments.out
TEST tests/qapi-schema/doc-bad-alternate-member.out
TEST tests/qapi-schema/doc-bad-command-arg.out
TEST tests/qapi-schema/doc-bad-section.out
TEST tests/qapi-schema/doc-bad-symbol.out
TEST tests/qapi-schema/doc-bad-union-member.out
TEST tests/qapi-schema/doc-before-include.out
TEST tests/qapi-schema/doc-before-pragma.out
TEST tests/qapi-schema/doc-duplicated-arg.out
TEST tests/qapi-schema/doc-duplicated-return.out
TEST tests/qapi-schema/doc-duplicated-since.out
TEST tests/qapi-schema/doc-empty-section.out
TEST tests/qapi-schema/doc-empty-symbol.out
TEST tests/qapi-schema/doc-empty-arg.out
TEST tests/qapi-schema/doc-good.out
TEST tests/qapi-schema/doc-invalid-end.out
TEST tests/qapi-schema/doc-interleaved-section.out
TEST tests/qapi-schema/doc-invalid-end2.out
TEST tests/qapi-schema/doc-invalid-return.out
TEST tests/qapi-schema/doc-invalid-section.out
TEST tests/qapi-schema/doc-invalid-start.out
TEST tests/qapi-schema/doc-missing-colon.out
TEST tests/qapi-schema/doc-missing-expr.out
TEST tests/qapi-schema/doc-missing-space.out
TEST tests/qapi-schema/doc-missing.out
TEST tests/qapi-schema/doc-no-symbol.out
TEST tests/qapi-schema/double-data.out
TEST tests/qapi-schema/double-type.out
TEST tests/qapi-schema/duplicate-key.out
TEST tests/qapi-schema/empty.out
TEST tests/qapi-schema/enum-bad-name.out
TEST tests/qapi-schema/enum-bad-prefix.out
TEST tests/qapi-schema/enum-clash-member.out
TEST tests/qapi-schema/enum-dict-member.out
TEST tests/qapi-schema/enum-int-member.out
TEST tests/qapi-schema/enum-member-case.out
TEST tests/qapi-schema/enum-missing-data.out
TEST tests/qapi-schema/enum-wrong-data.out
TEST tests/qapi-schema/escape-outside-string.out
TEST tests/qapi-schema/escape-too-big.out
TEST tests/qapi-schema/escape-too-short.out
TEST tests/qapi-schema/event-boxed-empty.out
TEST tests/qapi-schema/event-case.out
TEST tests/qapi-schema/event-nest-struct.out
TEST tests/qapi-schema/flat-union-array-branch.out
TEST tests/qapi-schema/flat-union-bad-base.out
TEST tests/qapi-schema/flat-union-bad-discriminator.out
TEST tests/qapi-schema/flat-union-base-any.out
TEST tests/qapi-schema/flat-union-base-union.out
TEST tests/qapi-schema/flat-union-clash-member.out
TEST tests/qapi-schema/flat-union-empty.out
TEST tests/qapi-schema/flat-union-incomplete-branch.out
TEST tests/qapi-schema/flat-union-inline.out
TEST tests/qapi-schema/flat-union-int-branch.out
TEST tests/qapi-schema/flat-union-invalid-branch-key.out
TEST tests/qapi-schema/flat-union-invalid-discriminator.out
TEST tests/qapi-schema/flat-union-no-base.out
TEST tests/qapi-schema/flat-union-optional-discriminator.out
TEST tests/qapi-schema/flat-union-string-discriminator.out
TEST tests/qapi-schema/funny-char.out
TEST tests/qapi-schema/ident-with-escape.out
TEST tests/qapi-schema/include-before-err.out
TEST tests/qapi-schema/include-cycle.out
TEST tests/qapi-schema/include-extra-junk.out
TEST tests/qapi-schema/include-format-err.out
TEST tests/qapi-schema/include-nested-err.out
TEST tests/qapi-schema/include-no-file.out
TEST tests/qapi-schema/include-non-file.out
TEST tests/qapi-schema/include-relpath.out
TEST tests/qapi-schema/include-repetition.out
TEST tests/qapi-schema/include-self-cycle.out
TEST tests/qapi-schema/include-simple.out
TEST tests/qapi-schema/indented-expr.out
TEST tests/qapi-schema/leading-comma-list.out
TEST tests/qapi-schema/leading-comma-object.out
TEST tests/qapi-schema/missing-colon.out
TEST tests/qapi-schema/missing-comma-list.out
TEST tests/qapi-schema/missing-comma-object.out
TEST tests/qapi-schema/missing-type.out
TEST tests/qapi-schema/nested-struct-data.out
TEST tests/qapi-schema/non-objects.out
TEST tests/qapi-schema/pragma-doc-required-crap.out
TEST tests/qapi-schema/pragma-extra-junk.out
TEST tests/qapi-schema/pragma-name-case-whitelist-crap.out
TEST tests/qapi-schema/pragma-non-dict.out
TEST tests/qapi-schema/pragma-returns-whitelist-crap.out
TEST tests/qapi-schema/qapi-schema-test.out
TEST tests/qapi-schema/quoted-structural-chars.out
TEST tests/qapi-schema/redefined-builtin.out
TEST tests/qapi-schema/redefined-command.out
TEST tests/qapi-schema/redefined-event.out
TEST tests/qapi-schema/redefined-type.out
TEST tests/qapi-schema/reserved-command-q.out
TEST tests/qapi-schema/reserved-enum-q.out
TEST tests/qapi-schema/reserved-member-has.out
TEST tests/qapi-schema/reserved-member-q.out
TEST tests/qapi-schema/reserved-member-u.out
TEST tests/qapi-schema/reserved-member-underscore.out
TEST tests/qapi-schema/reserved-type-kind.out
TEST tests/qapi-schema/reserved-type-list.out
TEST tests/qapi-schema/returns-alternate.out
TEST tests/qapi-schema/returns-array-bad.out
TEST tests/qapi-schema/returns-dict.out
TEST tests/qapi-schema/returns-unknown.out
TEST tests/qapi-schema/returns-whitelist.out
TEST tests/qapi-schema/struct-base-clash-deep.out
TEST tests/qapi-schema/struct-base-clash.out
TEST tests/qapi-schema/struct-data-invalid.out
TEST tests/qapi-schema/struct-member-invalid.out
TEST tests/qapi-schema/trailing-comma-list.out
TEST tests/qapi-schema/trailing-comma-object.out
TEST tests/qapi-schema/type-bypass-bad-gen.out
TEST tests/qapi-schema/unclosed-list.out
TEST tests/qapi-schema/unclosed-object.out
TEST tests/qapi-schema/unclosed-string.out
TEST tests/qapi-schema/unicode-str.out
TEST tests/qapi-schema/union-base-empty.out
TEST tests/qapi-schema/union-base-no-discriminator.out
TEST tests/qapi-schema/union-branch-case.out
TEST tests/qapi-schema/union-clash-branches.out
TEST tests/qapi-schema/union-empty.out
TEST tests/qapi-schema/union-invalid-base.out
TEST tests/qapi-schema/union-optional-branch.out
TEST tests/qapi-schema/union-unknown.out
TEST tests/qapi-schema/unknown-escape.out
TEST tests/qapi-schema/unknown-expr-key.out
GEN tests/qapi-schema/doc-good.test.texi
CC tests/check-qdict.o
CC tests/test-char.o
CC tests/check-qnum.o
CC tests/check-qstring.o
CC tests/check-qlist.o
CC tests/check-qnull.o
CC tests/check-qobject.o
CC tests/check-qjson.o
CC tests/check-qlit.o
CC tests/test-qobject-output-visitor.o
GEN tests/test-qapi-visit.c
GEN tests/test-qapi-types.c
GEN tests/test-qapi-event.c
GEN tests/test-qmp-introspect.c
CC tests/test-clone-visitor.o
CC tests/test-qobject-input-visitor.o
CC tests/test-qmp-commands.o
GEN tests/test-qmp-marshal.c
CC tests/test-string-input-visitor.o
CC tests/test-string-output-visitor.o
CC tests/test-qmp-event.o
CC tests/test-opts-visitor.o
CC tests/test-coroutine.o
CC tests/iothread.o
CC tests/test-visitor-serialization.o
CC tests/test-iov.o
CC tests/test-aio.o
CC tests/test-aio-multithread.o
CC tests/test-thread-pool.o
CC tests/test-throttle.o
CC tests/test-hbitmap.o
CC tests/test-bdrv-drain.o
CC tests/test-blockjob.o
CC tests/test-blockjob-txn.o
CC tests/test-x86-cpuid.o
CC tests/test-xbzrle.o
CC tests/test-vmstate.o
CC tests/test-cutils.o
CC tests/test-shift128.o
CC tests/test-mul64.o
CC tests/test-int128.o
CC tests/rcutorture.o
CC tests/test-rcu-list.o
CC tests/test-qdist.o
CC tests/test-qht.o
CC tests/test-qht-par.o
CC tests/qht-bench.o
CC tests/test-bitops.o
CC tests/test-bitcnt.o
/tmp/qemu-test/src/tests/test-int128.c:180: warning: '__noclone__' attribute directive ignored
CC tests/check-qom-interface.o
CC tests/check-qom-proplist.o
CC tests/test-qemu-opts.o
CC tests/test-keyval.o
CC tests/test-write-threshold.o
CC tests/test-crypto-hash.o
CC tests/test-crypto-hmac.o
CC tests/test-crypto-cipher.o
CC tests/test-crypto-secret.o
CC tests/test-qga.o
CC tests/libqtest.o
CC tests/test-timed-average.o
CC tests/test-io-task.o
CC tests/test-io-channel-socket.o
CC tests/io-channel-helpers.o
CC tests/test-io-channel-file.o
CC tests/test-io-channel-command.o
CC tests/test-io-channel-buffer.o
CC tests/test-base64.o
CC tests/test-crypto-ivgen.o
CC tests/test-crypto-afsplit.o
CC tests/test-crypto-xts.o
CC tests/test-crypto-block.o
CC tests/test-logging.o
CC tests/test-replication.o
CC tests/test-bufferiszero.o
CC tests/test-uuid.o
CC tests/ptimer-test.o
CC tests/ptimer-test-stubs.o
CC tests/test-qapi-util.o
CC tests/vhost-user-test.o
CC tests/libqos/pci.o
CC tests/libqos/fw_cfg.o
CC tests/libqos/malloc.o
CC tests/libqos/libqos.o
CC tests/libqos/i2c.o
CC tests/libqos/malloc-spapr.o
CC tests/libqos/libqos-spapr.o
CC tests/libqos/rtas.o
CC tests/libqos/pci-spapr.o
CC tests/libqos/pci-pc.o
CC tests/libqos/malloc-pc.o
CC tests/libqos/libqos-pc.o
CC tests/libqos/ahci.o
CC tests/libqos/virtio.o
CC tests/libqos/virtio-pci.o
CC tests/endianness-test.o
CC tests/libqos/malloc-generic.o
CC tests/libqos/virtio-mmio.o
CC tests/fdc-test.o
CC tests/ide-test.o
CC tests/ahci-test.o
CC tests/hd-geo-test.o
CC tests/boot-order-test.o
CC tests/bios-tables-test.o
CC tests/boot-sector.o
CC tests/acpi-utils.o
CC tests/boot-serial-test.o
CC tests/pxe-test.o
CC tests/rtc-test.o
CC tests/ipmi-kcs-test.o
CC tests/ipmi-bt-test.o
CC tests/i440fx-test.o
CC tests/fw_cfg-test.o
CC tests/drive_del-test.o
CC tests/wdt_ib700-test.o
CC tests/tco-test.o
CC tests/e1000-test.o
CC tests/e1000e-test.o
CC tests/rtl8139-test.o
CC tests/pcnet-test.o
CC tests/eepro100-test.o
CC tests/ne2000-test.o
CC tests/nvme-test.o
CC tests/ac97-test.o
CC tests/es1370-test.o
CC tests/virtio-net-test.o
CC tests/virtio-balloon-test.o
CC tests/virtio-blk-test.o
CC tests/virtio-rng-test.o
CC tests/virtio-scsi-test.o
CC tests/virtio-serial-test.o
CC tests/virtio-console-test.o
CC tests/tpci200-test.o
CC tests/ipoctal232-test.o
CC tests/display-vga-test.o
CC tests/intel-hda-test.o
CC tests/ivshmem-test.o
CC tests/megasas-test.o
CC tests/vmxnet3-test.o
CC tests/pvpanic-test.o
CC tests/i82801b11-test.o
CC tests/ioh3420-test.o
CC tests/usb-hcd-ohci-test.o
CC tests/libqos/usb.o
CC tests/usb-hcd-uhci-test.o
CC tests/usb-hcd-ehci-test.o
CC tests/usb-hcd-xhci-test.o
CC tests/cpu-plug-test.o
CC tests/q35-test.o
CC tests/vmgenid-test.o
CC tests/tpm-crb-test.o
CC tests/test-netfilter.o
CC tests/test-filter-redirector.o
CC tests/test-filter-mirror.o
CC tests/migration-test.o
CC tests/test-x86-cpuid-compat.o
CC tests/numa-test.o
CC tests/qmp-test.o
CC tests/device-introspect-test.o
CC tests/qom-test.o
CC tests/test-hmp.o
TEST decodetree.py
LINK tests/check-qdict
LINK tests/test-char
LINK tests/check-qnum
LINK tests/check-qstring
LINK tests/check-qlist
LINK tests/check-qnull
LINK tests/check-qobject
LINK tests/check-qjson
LINK tests/check-qlit
CC tests/test-qapi-types.o
CC tests/test-qapi-visit.o
CC tests/test-qapi-event.o
CC tests/test-qmp-introspect.o
CC tests/test-qmp-marshal.o
LINK tests/test-coroutine
LINK tests/test-iov
LINK tests/test-aio
LINK tests/test-aio-multithread
FAIL: err_init3.def
LINK tests/test-throttle
LINK tests/test-thread-pool
LINK tests/test-hbitmap
LINK tests/test-bdrv-drain
LINK tests/test-blockjob
make: *** [check-decodetree] Error 1
make: *** Waiting for unfinished jobs....
Traceback (most recent call last):
File "./tests/docker/docker.py", line 407, in <module>
sys.exit(main())
File "./tests/docker/docker.py", line 404, in main
return args.cmdobj.run(args, argv)
File "./tests/docker/docker.py", line 261, in run
return Docker().run(argv, args.keep, quiet=args.quiet)
File "./tests/docker/docker.py", line 229, in run
quiet=quiet)
File "./tests/docker/docker.py", line 147, in _do_check
return subprocess.check_call(self._command + cmd, **kwargs)
File "/usr/lib64/python2.7/subprocess.py", line 186, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['docker', 'run', '--label', 'com.qemu.instance.uuid=c7be33880f7e11e8aab852540069c830', '-u', '0', '--security-opt', 'seccomp=unconfined', '--rm', '--net=none', '-e', 'TARGET_LIST=', '-e', 'EXTRA_CONFIGURE_OPTS=', '-e', 'V=', '-e', 'J=8', '-e', 'DEBUG=', '-e', 'SHOW_ENV=1', '-e', 'CCACHE_DIR=/var/tmp/ccache', '-v', '/root/.cache/qemu-docker-ccache:/var/tmp/ccache:z', '-v', '/var/tmp/patchew-tester-tmp-_dti_j7r/src/docker-src.2018-02-11-17.56.03.1101:/var/tmp/qemu:z,ro', 'qemu:centos6', '/var/tmp/qemu/run', 'test-quick']' returned non-zero exit status 2
make[1]: *** [tests/docker/Makefile.include:129: docker-run] Error 1
make: *** [tests/docker/Makefile.include:163: docker-run-test-quick@centos6] Error 2
real 2m6.875s
user 0m4.773s
sys 0m3.514s
=== OUTPUT END ===
Test command exited with code: 2
---
Email generated automatically by Patchew [http://patchew.org/].
Please send your feedback to patchew-devel@freelists.org
© 2016 - 2026 Red Hat, Inc.