Message ID | 20220824094029.1634519-27-bmeng.cn@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | tests/qtest: Enable running qtest on Windows | expand |
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
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;