qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 26/51] tests/qtest: libqtest: Move global_qtest definition ba


From: Thomas Huth
Subject: Re: [PATCH 26/51] tests/qtest: libqtest: Move global_qtest definition back to libqtest.c
Date: Thu, 25 Aug 2022 13:59:57 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.12.0

On 24/08/2022 11.40, Bin Meng wrote:
From: Xuzhou Cheng <xuzhou.cheng@windriver.com>

Commit dd2107497275 ("tests/libqtest: Use libqtest-single.h in tests that require 
global_qtest")
moved global_qtest to libqtest-single.h, by declaring global_qtest
attribute to be common and weak.

This trick unfortunately does not work on Windows, and building
qtest test cases results in multiple definition errors of the weak
symbol global_qtest, as Windows PE does not have the concept of
the so-called weak symbol like ELF in the *nix world.

Let's move the definition of global_qtest back to libqtest.c.

Signed-off-by: Xuzhou Cheng <xuzhou.cheng@windriver.com>
Signed-off-by: Bin Meng <bin.meng@windriver.com>
---

  tests/qtest/libqtest-single.h | 2 +-
  tests/qtest/libqtest.c        | 2 ++
  2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/tests/qtest/libqtest-single.h b/tests/qtest/libqtest-single.h
index 4e7d0ae1dc..3294985d7b 100644
--- a/tests/qtest/libqtest-single.h
+++ b/tests/qtest/libqtest-single.h
@@ -13,7 +13,7 @@
#include "libqtest.h" -QTestState *global_qtest __attribute__((common, weak));
+extern QTestState *global_qtest;
/**
   * qtest_start:
diff --git a/tests/qtest/libqtest.c b/tests/qtest/libqtest.c
index 34744ace7c..909583dad3 100644
--- a/tests/qtest/libqtest.c
+++ b/tests/qtest/libqtest.c
@@ -65,6 +65,8 @@ struct QTestState
      GList *pending_events;
  };
+QTestState *global_qtest;
+
  static GHookList abrt_hooks;
  static struct sigaction sigact_old;

I'm a little bit afraid that this could cause people to abuse global_qtest again in code that should be usable by multiple test instances. This was very painful to get rid off in the past...

Could you maybe use some #ifdef WIN32 here to keep the common+weak case on Linux and just declare it in libqtest.c on Windows?

 Thomas




reply via email to

[Prev in Thread] Current Thread [Next in Thread]