aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Apfelbaum <marcel.a@redhat.com>2014-03-24 12:02:33 +0200
committerMichael S. Tsirkin <mst@redhat.com>2014-03-24 12:37:36 +0200
commitdac23a6c05e543590508b48b8ed31d89b0c99c61 (patch)
tree7b1cc88a4b4501c1a209e2e49a2568fa93c42aa6
parentaf67ee9264c135f4b213b4bc1a3871c4e9ec7da3 (diff)
downloadqemu-arm-dac23a6c05e543590508b48b8ed31d89b0c99c61.tar.gz
tests/acpi-test: do not fail if iasl is broken
There is an issue with iasl on big endian machines: It cannot disassemble acpi tables taken from little endian machines, so we cannot check the expected tables. The acpi test will check if the expected aml files can be disassembled, and will issue an warning not failing the test on those machines until this problem is solved by the acpica community. Signed-off-by: Marcel Apfelbaum <marcel.a@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
-rw-r--r--tests/acpi-test.c26
1 files changed, 15 insertions, 11 deletions
diff --git a/tests/acpi-test.c b/tests/acpi-test.c
index 249fe03fd7..76fbccfa4b 100644
--- a/tests/acpi-test.c
+++ b/tests/acpi-test.c
@@ -456,13 +456,12 @@ static bool load_asl(GArray *sdts, AcpiSdtTable *sdt)
/* pass 'out' and 'out_err' in order to be redirected */
ret = g_spawn_command_line_sync(command_line->str, &out, &out_err, NULL, &error);
g_assert_no_error(error);
-
if (ret) {
ret = g_file_get_contents(sdt->asl_file, (gchar **)&sdt->asl,
&sdt->asl_len, &error);
g_assert(ret);
g_assert_no_error(error);
- g_assert(sdt->asl_len);
+ ret = (sdt->asl_len > 0);
}
g_free(out);
@@ -560,15 +559,20 @@ static void test_acpi_asl(test_data *data)
g_assert(!err || exp_err);
if (g_strcmp0(asl->str, exp_asl->str)) {
- uint32_t signature = cpu_to_le32(exp_sdt->header.signature);
- sdt->tmp_files_retain = true;
- exp_sdt->tmp_files_retain = true;
- fprintf(stderr,
- "acpi-test: Warning! %.4s mismatch. "
- "Actual [asl:%s, aml:%s], Expected [asl:%s, aml:%s].\n",
- (gchar *)&signature,
- sdt->asl_file, sdt->aml_file,
- exp_sdt->asl_file, exp_sdt->aml_file);
+ if (exp_err) {
+ fprintf(stderr,
+ "Warning! iasl couldn't parse the expected aml\n");
+ } else {
+ uint32_t signature = cpu_to_le32(exp_sdt->header.signature);
+ sdt->tmp_files_retain = true;
+ exp_sdt->tmp_files_retain = true;
+ fprintf(stderr,
+ "acpi-test: Warning! %.4s mismatch. "
+ "Actual [asl:%s, aml:%s], Expected [asl:%s, aml:%s].\n",
+ (gchar *)&signature,
+ sdt->asl_file, sdt->aml_file,
+ exp_sdt->asl_file, exp_sdt->aml_file);
+ }
}
g_string_free(asl, true);
g_string_free(exp_asl, true);