gplugin/gplugin

Parents 36017e212411
Children 722f46189c29
Update the native test plugins to use the GPLUGIN_NATIVE_PLUGIN_DECLARE macro

Testing Done:
Ran the unit tests.

Reviewed at https://reviews.imfreedom.org/r/670/
  • +11 -9
    gplugin/tests/bad-plugins/query-error.c
  • +11 -9
    gplugin/tests/bind-global/bind-global.c
  • +12 -8
    gplugin/tests/dynamic-type/dynamic-type-provider.c
  • +9 -7
    gplugin/tests/dynamic-type/dynamic-type-user.c
  • +11 -9
    gplugin/tests/id-collision/id-collision1.c
  • +11 -9
    gplugin/tests/id-collision/id-collision2.c
  • +10 -8
    gplugin/tests/load-on-query-fail/load-on-query-fail.c
  • +11 -9
    gplugin/tests/load-on-query-pass/load-on-query-pass.c
  • +11 -9
    gplugin/tests/newest-version/multiple-semantic-1.0.0.c
  • +11 -9
    gplugin/tests/newest-version/multiple-semantic-1.1.0.c
  • +11 -9
    gplugin/tests/newest-version/no-version-and-semantic-no-version.c
  • +11 -9
    gplugin/tests/newest-version/no-version-and-semantic-semantic.c
  • +11 -9
    gplugin/tests/newest-version/non-semantic-and-semantic-non-semantic.c
  • +11 -9
    gplugin/tests/newest-version/non-semantic-and-semantic-semantic.c
  • +11 -9
    gplugin/tests/newest-version/solo-no-version.c
  • +11 -9
    gplugin/tests/newest-version/solo-non-semantic.c
  • +11 -9
    gplugin/tests/plugins/basic-plugin.c
  • +11 -9
    gplugin/tests/plugins/broken-dependent-plugin.c
  • +11 -9
    gplugin/tests/plugins/dependent-plugin.c
  • +11 -9
    gplugin/tests/plugins/load-exception.c
  • +10 -8
    gplugin/tests/plugins/load-failed.c
  • +10 -8
    gplugin/tests/plugins/unload-failed.c
  • +11 -9
    gplugin/tests/unresolved-symbol/unresolved-symbol.c
  • +9 -11
    gplugin/tests/versioned-dependencies/bar.c
  • +9 -11
    gplugin/tests/versioned-dependencies/baz.c
  • +9 -11
    gplugin/tests/versioned-dependencies/exact1.c
  • +9 -11
    gplugin/tests/versioned-dependencies/exact2.c
  • +9 -11
    gplugin/tests/versioned-dependencies/fez.c
  • +11 -9
    gplugin/tests/versioned-dependencies/greater-equal.c
  • +13 -13
    gplugin/tests/versioned-dependencies/greater.c
  • +11 -9
    gplugin/tests/versioned-dependencies/less-equal.c
  • +9 -11
    gplugin/tests/versioned-dependencies/less.c
  • +11 -9
    gplugin/tests/versioned-dependencies/no-version.c
  • +11 -9
    gplugin/tests/versioned-dependencies/super-dependent.c
  • --- a/gplugin/tests/bad-plugins/query-error.c Tue May 04 22:00:16 2021 -0500
    +++ b/gplugin/tests/bad-plugins/query-error.c Wed May 26 03:52:38 2021 -0500
    @@ -1,5 +1,5 @@
    /*
    - * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com>
    + * Copyright (C) 2011-2021 Gary Kramlich <grim@reaperworld.com>
    *
    * This library is free software; you can redistribute it and/or
    * modify it under the terms of the GNU Lesser General Public
    @@ -18,26 +18,28 @@
    #include <gplugin.h>
    #include <gplugin-native.h>
    -G_MODULE_EXPORT GPluginPluginInfo *
    -gplugin_query(G_GNUC_UNUSED GError **error)
    +static GPluginPluginInfo *
    +query_error_query(G_GNUC_UNUSED GError **error)
    {
    g_set_error(error, GPLUGIN_DOMAIN, 0, "expected error");
    return NULL;
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_load(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +query_error_load(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_unload(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +query_error_unload(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    +
    +GPLUGIN_NATIVE_PLUGIN_DECLARE(query_error)
    --- a/gplugin/tests/bind-global/bind-global.c Tue May 04 22:00:16 2021 -0500
    +++ b/gplugin/tests/bind-global/bind-global.c Wed May 26 03:52:38 2021 -0500
    @@ -1,5 +1,5 @@
    /*
    - * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com>
    + * Copyright (C) 2011-2021 Gary Kramlich <grim@reaperworld.com>
    *
    * This library is free software; you can redistribute it and/or
    * modify it under the terms of the GNU Lesser General Public
    @@ -18,8 +18,8 @@
    #include <gplugin.h>
    #include <gplugin-native.h>
    -G_MODULE_EXPORT GPluginPluginInfo *
    -gplugin_query(G_GNUC_UNUSED GError **error)
    +static GPluginPluginInfo *
    +bind_global_query(G_GNUC_UNUSED GError **error)
    {
    /* clang-format off */
    return gplugin_plugin_info_new(
    @@ -30,18 +30,20 @@
    /* clang-format on */
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_load(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +bind_global_load(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_unload(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +bind_global_unload(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    +
    +GPLUGIN_NATIVE_PLUGIN_DECLARE(bind_global)
    --- a/gplugin/tests/dynamic-type/dynamic-type-provider.c Tue May 04 22:00:16 2021 -0500
    +++ b/gplugin/tests/dynamic-type/dynamic-type-provider.c Wed May 26 03:52:38 2021 -0500
    @@ -1,5 +1,5 @@
    /*
    - * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com>
    + * Copyright (C) 2011-2021 Gary Kramlich <grim@reaperworld.com>
    * Copyright (C) 2013 Ankit Vani <a@nevitus.org>
    *
    * This library is free software; you can redistribute it and/or
    @@ -38,8 +38,8 @@
    {
    }
    -G_MODULE_EXPORT GPluginPluginInfo *
    -gplugin_query(G_GNUC_UNUSED GError **error)
    +static GPluginPluginInfo *
    +dynamic_provider_query(G_GNUC_UNUSED GError **error)
    {
    return gplugin_plugin_info_new(
    "gplugin/dynamic-type-provider",
    @@ -49,18 +49,22 @@
    NULL);
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_load(GPluginNativePlugin *plugin, G_GNUC_UNUSED GError **error)
    +static gboolean
    +dynamic_provider_load(
    + GPluginPlugin *plugin,
    + G_GNUC_UNUSED GError **error)
    {
    dynamic_test_register_type(G_TYPE_MODULE(plugin));
    return TRUE;
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_unload(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +dynamic_provider_unload(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    +
    +GPLUGIN_NATIVE_PLUGIN_DECLARE(dynamic_provider)
    --- a/gplugin/tests/dynamic-type/dynamic-type-user.c Tue May 04 22:00:16 2021 -0500
    +++ b/gplugin/tests/dynamic-type/dynamic-type-user.c Wed May 26 03:52:38 2021 -0500
    @@ -1,5 +1,5 @@
    /*
    - * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com>
    + * Copyright (C) 2011-2021 Gary Kramlich <grim@reaperworld.com>
    * Copyright (C) 2013 Ankit Vani <a@nevitus.org>
    *
    * This library is free software; you can redistribute it and/or
    @@ -23,8 +23,8 @@
    static DynamicTest *test_object = NULL;
    -G_MODULE_EXPORT GPluginPluginInfo *
    -gplugin_query(G_GNUC_UNUSED GError **error)
    +static GPluginPluginInfo *
    +dynamic_user_query(G_GNUC_UNUSED GError **error)
    {
    const gchar *const dependencies[] = {"gplugin/dynamic-type-provider", NULL};
    @@ -37,8 +37,8 @@
    /* clang-format on */
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_load(G_GNUC_UNUSED GPluginNativePlugin *plugin, GError **error)
    +static gboolean
    +dynamic_user_load(G_GNUC_UNUSED GPluginPlugin *plugin, GError **error)
    {
    test_object = g_object_new(DYNAMIC_TYPE_TEST, NULL);
    @@ -54,8 +54,8 @@
    return TRUE;
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_unload(G_GNUC_UNUSED GPluginNativePlugin *plugin, GError **error)
    +static gboolean
    +dynamic_user_unload(G_GNUC_UNUSED GPluginPlugin *plugin, GError **error)
    {
    gpointer weak_test_object = test_object;
    g_object_add_weak_pointer(G_OBJECT(test_object), &weak_test_object);
    @@ -69,3 +69,5 @@
    return TRUE;
    }
    +
    +GPLUGIN_NATIVE_PLUGIN_DECLARE(dynamic_user)
    --- a/gplugin/tests/id-collision/id-collision1.c Tue May 04 22:00:16 2021 -0500
    +++ b/gplugin/tests/id-collision/id-collision1.c Wed May 26 03:52:38 2021 -0500
    @@ -1,5 +1,5 @@
    /*
    - * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com>
    + * Copyright (C) 2011-2021 Gary Kramlich <grim@reaperworld.com>
    *
    * This library is free software; you can redistribute it and/or
    * modify it under the terms of the GNU Lesser General Public
    @@ -18,8 +18,8 @@
    #include <gplugin.h>
    #include <gplugin-native.h>
    -G_MODULE_EXPORT GPluginPluginInfo *
    -gplugin_query(G_GNUC_UNUSED GError **error)
    +static GPluginPluginInfo *
    +id_collision1_query(G_GNUC_UNUSED GError **error)
    {
    /* clang-format off */
    return gplugin_plugin_info_new(
    @@ -30,18 +30,20 @@
    /* clang-format on */
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_load(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +id_collision1_load(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_unload(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +id_collision1_unload(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    +
    +GPLUGIN_NATIVE_PLUGIN_DECLARE(id_collision1)
    --- a/gplugin/tests/id-collision/id-collision2.c Tue May 04 22:00:16 2021 -0500
    +++ b/gplugin/tests/id-collision/id-collision2.c Wed May 26 03:52:38 2021 -0500
    @@ -1,5 +1,5 @@
    /*
    - * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com>
    + * Copyright (C) 2011-2021 Gary Kramlich <grim@reaperworld.com>
    *
    * This library is free software; you can redistribute it and/or
    * modify it under the terms of the GNU Lesser General Public
    @@ -18,8 +18,8 @@
    #include <gplugin.h>
    #include <gplugin-native.h>
    -G_MODULE_EXPORT GPluginPluginInfo *
    -gplugin_query(G_GNUC_UNUSED GError **error)
    +static GPluginPluginInfo *
    +id_collision2_query(G_GNUC_UNUSED GError **error)
    {
    /* clang-format off */
    return gplugin_plugin_info_new(
    @@ -30,18 +30,20 @@
    /* clang-format on */
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_load(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +id_collision2_load(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_unload(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +id_collision2_unload(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    +
    +GPLUGIN_NATIVE_PLUGIN_DECLARE(id_collision2)
    --- a/gplugin/tests/load-on-query-fail/load-on-query-fail.c Tue May 04 22:00:16 2021 -0500
    +++ b/gplugin/tests/load-on-query-fail/load-on-query-fail.c Wed May 26 03:52:38 2021 -0500
    @@ -1,5 +1,5 @@
    /*
    - * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com>
    + * Copyright (C) 2011-2021 Gary Kramlich <grim@reaperworld.com>
    *
    * This library is free software; you can redistribute it and/or
    * modify it under the terms of the GNU Lesser General Public
    @@ -18,8 +18,8 @@
    #include <gplugin.h>
    #include <gplugin-native.h>
    -G_MODULE_EXPORT GPluginPluginInfo *
    -gplugin_query(G_GNUC_UNUSED GError **error)
    +static GPluginPluginInfo *
    +loq_fail_query(G_GNUC_UNUSED GError **error)
    {
    /* clang-format off */
    return gplugin_plugin_info_new(
    @@ -30,8 +30,8 @@
    /* clang-format on */
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_load(G_GNUC_UNUSED GPluginNativePlugin *plugin, GError **error)
    +static gboolean
    +loq_fail_load(G_GNUC_UNUSED GPluginPlugin *plugin, GError **error)
    {
    static int count = 1;
    @@ -40,10 +40,12 @@
    return FALSE;
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_unload(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +loq_fail_unload(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    +
    +GPLUGIN_NATIVE_PLUGIN_DECLARE(loq_fail)
    --- a/gplugin/tests/load-on-query-pass/load-on-query-pass.c Tue May 04 22:00:16 2021 -0500
    +++ b/gplugin/tests/load-on-query-pass/load-on-query-pass.c Wed May 26 03:52:38 2021 -0500
    @@ -1,5 +1,5 @@
    /*
    - * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com>
    + * Copyright (C) 2011-2021 Gary Kramlich <grim@reaperworld.com>
    *
    * This library is free software; you can redistribute it and/or
    * modify it under the terms of the GNU Lesser General Public
    @@ -18,8 +18,8 @@
    #include <gplugin.h>
    #include <gplugin-native.h>
    -G_MODULE_EXPORT GPluginPluginInfo *
    -gplugin_query(G_GNUC_UNUSED GError **error)
    +static GPluginPluginInfo *
    +loq_pass_query(G_GNUC_UNUSED GError **error)
    {
    /* clang-format off */
    return gplugin_plugin_info_new(
    @@ -30,18 +30,20 @@
    /* clang-format on */
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_load(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +loq_pass_load(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_unload(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +loq_pass_unload(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    +
    +GPLUGIN_NATIVE_PLUGIN_DECLARE(loq_pass)
    --- a/gplugin/tests/newest-version/multiple-semantic-1.0.0.c Tue May 04 22:00:16 2021 -0500
    +++ b/gplugin/tests/newest-version/multiple-semantic-1.0.0.c Wed May 26 03:52:38 2021 -0500
    @@ -1,5 +1,5 @@
    /*
    - * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com>
    + * Copyright (C) 2011-2021 Gary Kramlich <grim@reaperworld.com>
    *
    * This library is free software; you can redistribute it and/or
    * modify it under the terms of the GNU Lesser General Public
    @@ -18,8 +18,8 @@
    #include <gplugin.h>
    #include <gplugin-native.h>
    -G_MODULE_EXPORT GPluginPluginInfo *
    -gplugin_query(G_GNUC_UNUSED GError **error)
    +static GPluginPluginInfo *
    +multiple_semantic_1_0_0_query(G_GNUC_UNUSED GError **error)
    {
    /* clang-format off */
    return gplugin_plugin_info_new(
    @@ -30,18 +30,20 @@
    /* clang-format on */
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_load(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +multiple_semantic_1_0_0_load(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_unload(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +multiple_semantic_1_0_0_unload(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    +
    +GPLUGIN_NATIVE_PLUGIN_DECLARE(multiple_semantic_1_0_0)
    --- a/gplugin/tests/newest-version/multiple-semantic-1.1.0.c Tue May 04 22:00:16 2021 -0500
    +++ b/gplugin/tests/newest-version/multiple-semantic-1.1.0.c Wed May 26 03:52:38 2021 -0500
    @@ -1,5 +1,5 @@
    /*
    - * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com>
    + * Copyright (C) 2011-2021 Gary Kramlich <grim@reaperworld.com>
    *
    * This library is free software; you can redistribute it and/or
    * modify it under the terms of the GNU Lesser General Public
    @@ -18,8 +18,8 @@
    #include <gplugin.h>
    #include <gplugin-native.h>
    -G_MODULE_EXPORT GPluginPluginInfo *
    -gplugin_query(G_GNUC_UNUSED GError **error)
    +static GPluginPluginInfo *
    +multiple_semantic_1_1_0_query(G_GNUC_UNUSED GError **error)
    {
    /* clang-format off */
    return gplugin_plugin_info_new(
    @@ -30,18 +30,20 @@
    /* clang-format on */
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_load(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +multiple_semantic_1_1_0_load(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_unload(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +multiple_semantic_1_1_0_unload(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    +
    +GPLUGIN_NATIVE_PLUGIN_DECLARE(multiple_semantic_1_1_0)
    --- a/gplugin/tests/newest-version/no-version-and-semantic-no-version.c Tue May 04 22:00:16 2021 -0500
    +++ b/gplugin/tests/newest-version/no-version-and-semantic-no-version.c Wed May 26 03:52:38 2021 -0500
    @@ -1,5 +1,5 @@
    /*
    - * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com>
    + * Copyright (C) 2011-2021 Gary Kramlich <grim@reaperworld.com>
    *
    * This library is free software; you can redistribute it and/or
    * modify it under the terms of the GNU Lesser General Public
    @@ -18,8 +18,8 @@
    #include <gplugin.h>
    #include <gplugin-native.h>
    -G_MODULE_EXPORT GPluginPluginInfo *
    -gplugin_query(G_GNUC_UNUSED GError **error)
    +static GPluginPluginInfo *
    +no_version_and_semantic_no_version_query(G_GNUC_UNUSED GError **error)
    {
    /* clang-format off */
    return gplugin_plugin_info_new(
    @@ -29,18 +29,20 @@
    /* clang-format on */
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_load(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +no_version_and_semantic_no_version_load(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_unload(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +no_version_and_semantic_no_version_unload(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    +
    +GPLUGIN_NATIVE_PLUGIN_DECLARE(no_version_and_semantic_no_version)
    --- a/gplugin/tests/newest-version/no-version-and-semantic-semantic.c Tue May 04 22:00:16 2021 -0500
    +++ b/gplugin/tests/newest-version/no-version-and-semantic-semantic.c Wed May 26 03:52:38 2021 -0500
    @@ -1,5 +1,5 @@
    /*
    - * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com>
    + * Copyright (C) 2011-2021 Gary Kramlich <grim@reaperworld.com>
    *
    * This library is free software; you can redistribute it and/or
    * modify it under the terms of the GNU Lesser General Public
    @@ -18,8 +18,8 @@
    #include <gplugin.h>
    #include <gplugin-native.h>
    -G_MODULE_EXPORT GPluginPluginInfo *
    -gplugin_query(G_GNUC_UNUSED GError **error)
    +static GPluginPluginInfo *
    +no_version_an_semantic_semantic_query(G_GNUC_UNUSED GError **error)
    {
    /* clang-format off */
    return gplugin_plugin_info_new(
    @@ -30,18 +30,20 @@
    /* clang-format on */
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_load(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +no_version_an_semantic_semantic_load(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_unload(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +no_version_an_semantic_semantic_unload(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    +
    +GPLUGIN_NATIVE_PLUGIN_DECLARE(no_version_an_semantic_semantic)
    --- a/gplugin/tests/newest-version/non-semantic-and-semantic-non-semantic.c Tue May 04 22:00:16 2021 -0500
    +++ b/gplugin/tests/newest-version/non-semantic-and-semantic-non-semantic.c Wed May 26 03:52:38 2021 -0500
    @@ -1,5 +1,5 @@
    /*
    - * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com>
    + * Copyright (C) 2011-2021 Gary Kramlich <grim@reaperworld.com>
    *
    * This library is free software; you can redistribute it and/or
    * modify it under the terms of the GNU Lesser General Public
    @@ -18,8 +18,8 @@
    #include <gplugin.h>
    #include <gplugin-native.h>
    -G_MODULE_EXPORT GPluginPluginInfo *
    -gplugin_query(G_GNUC_UNUSED GError **error)
    +static GPluginPluginInfo *
    +non_semantic_and_semantic_non_semantic_query(G_GNUC_UNUSED GError **error)
    {
    /* clang-format off */
    return gplugin_plugin_info_new(
    @@ -30,18 +30,20 @@
    /* clang-format on */
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_load(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +non_semantic_and_semantic_non_semantic_load(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_unload(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +non_semantic_and_semantic_non_semantic_unload(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    +
    +GPLUGIN_NATIVE_PLUGIN_DECLARE(non_semantic_and_semantic_non_semantic)
    --- a/gplugin/tests/newest-version/non-semantic-and-semantic-semantic.c Tue May 04 22:00:16 2021 -0500
    +++ b/gplugin/tests/newest-version/non-semantic-and-semantic-semantic.c Wed May 26 03:52:38 2021 -0500
    @@ -1,5 +1,5 @@
    /*
    - * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com>
    + * Copyright (C) 2011-2021 Gary Kramlich <grim@reaperworld.com>
    *
    * This library is free software; you can redistribute it and/or
    * modify it under the terms of the GNU Lesser General Public
    @@ -18,8 +18,8 @@
    #include <gplugin.h>
    #include <gplugin-native.h>
    -G_MODULE_EXPORT GPluginPluginInfo *
    -gplugin_query(G_GNUC_UNUSED GError **error)
    +static GPluginPluginInfo *
    +non_semantic_and_semantic_semantic_query(G_GNUC_UNUSED GError **error)
    {
    /* clang-format off */
    return gplugin_plugin_info_new(
    @@ -30,18 +30,20 @@
    /* clang-format on */
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_load(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +non_semantic_and_semantic_semantic_load(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_unload(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +non_semantic_and_semantic_semantic_unload(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    +
    +GPLUGIN_NATIVE_PLUGIN_DECLARE(non_semantic_and_semantic_semantic)
    --- a/gplugin/tests/newest-version/solo-no-version.c Tue May 04 22:00:16 2021 -0500
    +++ b/gplugin/tests/newest-version/solo-no-version.c Wed May 26 03:52:38 2021 -0500
    @@ -1,5 +1,5 @@
    /*
    - * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com>
    + * Copyright (C) 2011-2021 Gary Kramlich <grim@reaperworld.com>
    *
    * This library is free software; you can redistribute it and/or
    * modify it under the terms of the GNU Lesser General Public
    @@ -18,8 +18,8 @@
    #include <gplugin.h>
    #include <gplugin-native.h>
    -G_MODULE_EXPORT GPluginPluginInfo *
    -gplugin_query(G_GNUC_UNUSED GError **error)
    +static GPluginPluginInfo *
    +solo_no_version_query(G_GNUC_UNUSED GError **error)
    {
    /* clang-format off */
    return gplugin_plugin_info_new(
    @@ -29,18 +29,20 @@
    /* clang-format on */
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_load(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +solo_no_version_load(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_unload(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +solo_no_version_unload(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    +
    +GPLUGIN_NATIVE_PLUGIN_DECLARE(solo_no_version)
    --- a/gplugin/tests/newest-version/solo-non-semantic.c Tue May 04 22:00:16 2021 -0500
    +++ b/gplugin/tests/newest-version/solo-non-semantic.c Wed May 26 03:52:38 2021 -0500
    @@ -1,5 +1,5 @@
    /*
    - * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com>
    + * Copyright (C) 2011-2021 Gary Kramlich <grim@reaperworld.com>
    *
    * This library is free software; you can redistribute it and/or
    * modify it under the terms of the GNU Lesser General Public
    @@ -18,8 +18,8 @@
    #include <gplugin.h>
    #include <gplugin-native.h>
    -G_MODULE_EXPORT GPluginPluginInfo *
    -gplugin_query(G_GNUC_UNUSED GError **error)
    +static GPluginPluginInfo *
    +solo_non_semantic_query(G_GNUC_UNUSED GError **error)
    {
    /* clang-format off */
    return gplugin_plugin_info_new(
    @@ -30,18 +30,20 @@
    /* clang-format on */
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_load(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +solo_non_semantic_load(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_unload(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +solo_non_semantic_unload(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    +
    +GPLUGIN_NATIVE_PLUGIN_DECLARE(solo_non_semantic)
    --- a/gplugin/tests/plugins/basic-plugin.c Tue May 04 22:00:16 2021 -0500
    +++ b/gplugin/tests/plugins/basic-plugin.c Wed May 26 03:52:38 2021 -0500
    @@ -1,5 +1,5 @@
    /*
    - * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com>
    + * Copyright (C) 2011-2021 Gary Kramlich <grim@reaperworld.com>
    *
    * This library is free software; you can redistribute it and/or
    * modify it under the terms of the GNU Lesser General Public
    @@ -18,8 +18,8 @@
    #include <gplugin.h>
    #include <gplugin-native.h>
    -G_MODULE_EXPORT GPluginPluginInfo *
    -gplugin_query(G_GNUC_UNUSED GError **error)
    +static GPluginPluginInfo *
    +basic_query(G_GNUC_UNUSED GError **error)
    {
    const gchar *const authors[] = {"author1", NULL};
    @@ -39,18 +39,20 @@
    /* clang-format on */
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_load(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +basic_load(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_unload(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +basic_unload(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    +
    +GPLUGIN_NATIVE_PLUGIN_DECLARE(basic)
    --- a/gplugin/tests/plugins/broken-dependent-plugin.c Tue May 04 22:00:16 2021 -0500
    +++ b/gplugin/tests/plugins/broken-dependent-plugin.c Wed May 26 03:52:38 2021 -0500
    @@ -1,5 +1,5 @@
    /*
    - * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com>
    + * Copyright (C) 2011-2021 Gary Kramlich <grim@reaperworld.com>
    *
    * This library is free software; you can redistribute it and/or
    * modify it under the terms of the GNU Lesser General Public
    @@ -18,8 +18,8 @@
    #include <gplugin.h>
    #include <gplugin-native.h>
    -G_MODULE_EXPORT GPluginPluginInfo *
    -gplugin_query(G_GNUC_UNUSED GError **error)
    +static GPluginPluginInfo *
    +broken_dependent_query(G_GNUC_UNUSED GError **error)
    {
    const gchar *const dependencies[] = {"gplugin/does-not-exist", NULL};
    @@ -32,18 +32,20 @@
    /* clang-format on */
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_load(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +gboolean
    +broken_dependent_load(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_unload(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +broken_dependent_unload(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    +
    +GPLUGIN_NATIVE_PLUGIN_DECLARE(broken_dependent)
    --- a/gplugin/tests/plugins/dependent-plugin.c Tue May 04 22:00:16 2021 -0500
    +++ b/gplugin/tests/plugins/dependent-plugin.c Wed May 26 03:52:38 2021 -0500
    @@ -1,5 +1,5 @@
    /*
    - * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com>
    + * Copyright (C) 2011-2021 Gary Kramlich <grim@reaperworld.com>
    *
    * This library is free software; you can redistribute it and/or
    * modify it under the terms of the GNU Lesser General Public
    @@ -18,8 +18,8 @@
    #include <gplugin.h>
    #include <gplugin-native.h>
    -G_MODULE_EXPORT GPluginPluginInfo *
    -gplugin_query(G_GNUC_UNUSED GError **error)
    +static GPluginPluginInfo *
    +dependent_query(G_GNUC_UNUSED GError **error)
    {
    const gchar *const dependencies[] = {"dependency1", "dependency2", NULL};
    @@ -32,18 +32,20 @@
    /* clang-format on */
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_load(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +dependent_load(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_unload(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +dependent_unload(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    +
    +GPLUGIN_NATIVE_PLUGIN_DECLARE(dependent)
    --- a/gplugin/tests/plugins/load-exception.c Tue May 04 22:00:16 2021 -0500
    +++ b/gplugin/tests/plugins/load-exception.c Wed May 26 03:52:38 2021 -0500
    @@ -1,5 +1,5 @@
    /*
    - * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com>
    + * Copyright (C) 2011-2021 Gary Kramlich <grim@reaperworld.com>
    *
    * This library is free software; you can redistribute it and/or
    * modify it under the terms of the GNU Lesser General Public
    @@ -18,8 +18,8 @@
    #include <gplugin.h>
    #include <gplugin-native.h>
    -G_MODULE_EXPORT GPluginPluginInfo *
    -gplugin_query(G_GNUC_UNUSED GError **error)
    +static GPluginPluginInfo *
    +load_exception_query(G_GNUC_UNUSED GError **error)
    {
    return gplugin_plugin_info_new(
    "gplugin/native-load-exception",
    @@ -27,18 +27,20 @@
    NULL);
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_load(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +load_exception_load(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return FALSE;
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_unload(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +load_exception_unload(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    +
    +GPLUGIN_NATIVE_PLUGIN_DECLARE(load_exception)
    --- a/gplugin/tests/plugins/load-failed.c Tue May 04 22:00:16 2021 -0500
    +++ b/gplugin/tests/plugins/load-failed.c Wed May 26 03:52:38 2021 -0500
    @@ -1,5 +1,5 @@
    /*
    - * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com>
    + * Copyright (C) 2011-2021 Gary Kramlich <grim@reaperworld.com>
    *
    * This library is free software; you can redistribute it and/or
    * modify it under the terms of the GNU Lesser General Public
    @@ -18,8 +18,8 @@
    #include <gplugin.h>
    #include <gplugin-native.h>
    -G_MODULE_EXPORT GPluginPluginInfo *
    -gplugin_query(G_GNUC_UNUSED GError **error)
    +static GPluginPluginInfo *
    +load_failed_query(G_GNUC_UNUSED GError **error)
    {
    return gplugin_plugin_info_new(
    "gplugin/native-load-failed",
    @@ -27,18 +27,20 @@
    NULL);
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_load(G_GNUC_UNUSED GPluginNativePlugin *plugin, GError **error)
    +static gboolean
    +load_failed_load(G_GNUC_UNUSED GPluginPlugin *plugin, GError **error)
    {
    g_set_error(error, GPLUGIN_DOMAIN, 0, "expected error");
    return FALSE;
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_unload(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +load_failed_unload(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    +
    +GPLUGIN_NATIVE_PLUGIN_DECLARE(load_failed)
    --- a/gplugin/tests/plugins/unload-failed.c Tue May 04 22:00:16 2021 -0500
    +++ b/gplugin/tests/plugins/unload-failed.c Wed May 26 03:52:38 2021 -0500
    @@ -1,5 +1,5 @@
    /*
    - * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com>
    + * Copyright (C) 2011-2021 Gary Kramlich <grim@reaperworld.com>
    *
    * This library is free software; you can redistribute it and/or
    * modify it under the terms of the GNU Lesser General Public
    @@ -18,8 +18,8 @@
    #include <gplugin.h>
    #include <gplugin-native.h>
    -G_MODULE_EXPORT GPluginPluginInfo *
    -gplugin_query(G_GNUC_UNUSED GError **error)
    +static GPluginPluginInfo *
    +unload_failed_query(G_GNUC_UNUSED GError **error)
    {
    return gplugin_plugin_info_new(
    "gplugin/native-unload-failed",
    @@ -27,18 +27,20 @@
    NULL);
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_load(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +unload_failed_load(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_unload(G_GNUC_UNUSED GPluginNativePlugin *plugin, GError **error)
    +static gboolean
    +unload_failed_unload(G_GNUC_UNUSED GPluginPlugin *plugin, GError **error)
    {
    g_set_error(error, GPLUGIN_DOMAIN, 0, "expected error");
    return FALSE;
    }
    +
    +GPLUGIN_NATIVE_PLUGIN_DECLARE(unload_failed)
    --- a/gplugin/tests/unresolved-symbol/unresolved-symbol.c Tue May 04 22:00:16 2021 -0500
    +++ b/gplugin/tests/unresolved-symbol/unresolved-symbol.c Wed May 26 03:52:38 2021 -0500
    @@ -1,5 +1,5 @@
    /*
    - * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com>
    + * Copyright (C) 2011-2021 Gary Kramlich <grim@reaperworld.com>
    *
    * This library is free software; you can redistribute it and/or
    * modify it under the terms of the GNU Lesser General Public
    @@ -20,26 +20,28 @@
    void some_unresolved_symbol(void);
    -G_MODULE_EXPORT GPluginPluginInfo *
    -gplugin_query(G_GNUC_UNUSED GError **error)
    +static GPluginPluginInfo *
    +unresolved_symbol_query(G_GNUC_UNUSED GError **error)
    {
    some_unresolved_symbol();
    return NULL;
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_load(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +unresolved_symbol_load(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_unload(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +unresolved_symbol_unload(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    +
    +GPLUGIN_NATIVE_PLUGIN_DECLARE(unresolved_symbol)
    --- a/gplugin/tests/versioned-dependencies/bar.c Tue May 04 22:00:16 2021 -0500
    +++ b/gplugin/tests/versioned-dependencies/bar.c Wed May 26 03:52:38 2021 -0500
    @@ -1,5 +1,5 @@
    /*
    - * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com>
    + * Copyright (C) 2011-2021 Gary Kramlich <grim@reaperworld.com>
    *
    * This library is free software; you can redistribute it and/or
    * modify it under the terms of the GNU Lesser General Public
    @@ -18,8 +18,8 @@
    #include <gplugin.h>
    #include <gplugin-native.h>
    -G_MODULE_EXPORT GPluginPluginInfo *
    -gplugin_query(G_GNUC_UNUSED GError **error)
    +static GPluginPluginInfo *
    +bar_query(G_GNUC_UNUSED GError **error)
    {
    /* clang-format off */
    return gplugin_plugin_info_new(
    @@ -30,18 +30,16 @@
    /* clang-format on */
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_load(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    - G_GNUC_UNUSED GError **error)
    +static gboolean
    +bar_load(G_GNUC_UNUSED GPluginPlugin *plugin, G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_unload(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    - G_GNUC_UNUSED GError **error)
    +static gboolean
    +bar_unload(G_GNUC_UNUSED GPluginPlugin *plugin, G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    +
    +GPLUGIN_NATIVE_PLUGIN_DECLARE(bar)
    --- a/gplugin/tests/versioned-dependencies/baz.c Tue May 04 22:00:16 2021 -0500
    +++ b/gplugin/tests/versioned-dependencies/baz.c Wed May 26 03:52:38 2021 -0500
    @@ -1,5 +1,5 @@
    /*
    - * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com>
    + * Copyright (C) 2011-2021 Gary Kramlich <grim@reaperworld.com>
    *
    * This library is free software; you can redistribute it and/or
    * modify it under the terms of the GNU Lesser General Public
    @@ -18,8 +18,8 @@
    #include <gplugin.h>
    #include <gplugin-native.h>
    -G_MODULE_EXPORT GPluginPluginInfo *
    -gplugin_query(G_GNUC_UNUSED GError **error)
    +static GPluginPluginInfo *
    +baz_query(G_GNUC_UNUSED GError **error)
    {
    /* clang-format off */
    return gplugin_plugin_info_new(
    @@ -30,18 +30,16 @@
    /* clang-format on */
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_load(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    - G_GNUC_UNUSED GError **error)
    +static gboolean
    +baz_load(G_GNUC_UNUSED GPluginPlugin *plugin, G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_unload(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    - G_GNUC_UNUSED GError **error)
    +static gboolean
    +baz_unload(G_GNUC_UNUSED GPluginPlugin *plugin, G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    +
    +GPLUGIN_NATIVE_PLUGIN_DECLARE(baz)
    --- a/gplugin/tests/versioned-dependencies/exact1.c Tue May 04 22:00:16 2021 -0500
    +++ b/gplugin/tests/versioned-dependencies/exact1.c Wed May 26 03:52:38 2021 -0500
    @@ -1,5 +1,5 @@
    /*
    - * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com>
    + * Copyright (C) 2011-2021 Gary Kramlich <grim@reaperworld.com>
    *
    * This library is free software; you can redistribute it and/or
    * modify it under the terms of the GNU Lesser General Public
    @@ -18,8 +18,8 @@
    #include <gplugin.h>
    #include <gplugin-native.h>
    -G_MODULE_EXPORT GPluginPluginInfo *
    -gplugin_query(G_GNUC_UNUSED GError **error)
    +static GPluginPluginInfo *
    +exact1_query(G_GNUC_UNUSED GError **error)
    {
    /* clang-format off */
    return gplugin_plugin_info_new(
    @@ -30,18 +30,16 @@
    /* clang-format on */
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_load(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    - G_GNUC_UNUSED GError **error)
    +static gboolean
    +exact1_load(G_GNUC_UNUSED GPluginPlugin *plugin, G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_unload(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    - G_GNUC_UNUSED GError **error)
    +static gboolean
    +exact1_unload(G_GNUC_UNUSED GPluginPlugin *plugin, G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    +
    +GPLUGIN_NATIVE_PLUGIN_DECLARE(exact1)
    --- a/gplugin/tests/versioned-dependencies/exact2.c Tue May 04 22:00:16 2021 -0500
    +++ b/gplugin/tests/versioned-dependencies/exact2.c Wed May 26 03:52:38 2021 -0500
    @@ -1,5 +1,5 @@
    /*
    - * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com>
    + * Copyright (C) 2011-2021 Gary Kramlich <grim@reaperworld.com>
    *
    * This library is free software; you can redistribute it and/or
    * modify it under the terms of the GNU Lesser General Public
    @@ -18,8 +18,8 @@
    #include <gplugin.h>
    #include <gplugin-native.h>
    -G_MODULE_EXPORT GPluginPluginInfo *
    -gplugin_query(G_GNUC_UNUSED GError **error)
    +static GPluginPluginInfo *
    +exact2_query(G_GNUC_UNUSED GError **error)
    {
    /* clang-format off */
    return gplugin_plugin_info_new(
    @@ -30,18 +30,16 @@
    /* clang-format on */
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_load(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    - G_GNUC_UNUSED GError **error)
    +static gboolean
    +exact2_load(G_GNUC_UNUSED GPluginPlugin *plugin, G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_unload(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    - G_GNUC_UNUSED GError **error)
    +static gboolean
    +exact2_unload(G_GNUC_UNUSED GPluginPlugin *plugin, G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    +
    +GPLUGIN_NATIVE_PLUGIN_DECLARE(exact2)
    --- a/gplugin/tests/versioned-dependencies/fez.c Tue May 04 22:00:16 2021 -0500
    +++ b/gplugin/tests/versioned-dependencies/fez.c Wed May 26 03:52:38 2021 -0500
    @@ -1,5 +1,5 @@
    /*
    - * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com>
    + * Copyright (C) 2011-2021 Gary Kramlich <grim@reaperworld.com>
    *
    * This library is free software; you can redistribute it and/or
    * modify it under the terms of the GNU Lesser General Public
    @@ -18,8 +18,8 @@
    #include <gplugin.h>
    #include <gplugin-native.h>
    -G_MODULE_EXPORT GPluginPluginInfo *
    -gplugin_query(G_GNUC_UNUSED GError **error)
    +static GPluginPluginInfo *
    +fez_query(G_GNUC_UNUSED GError **error)
    {
    /* clang-format off */
    return gplugin_plugin_info_new(
    @@ -30,18 +30,16 @@
    /* clang-format on */
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_load(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    - G_GNUC_UNUSED GError **error)
    +static gboolean
    +fez_load(G_GNUC_UNUSED GPluginPlugin *plugin, G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_unload(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    - G_GNUC_UNUSED GError **error)
    +static gboolean
    +fez_unload(G_GNUC_UNUSED GPluginPlugin *plugin, G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    +
    +GPLUGIN_NATIVE_PLUGIN_DECLARE(fez)
    --- a/gplugin/tests/versioned-dependencies/greater-equal.c Tue May 04 22:00:16 2021 -0500
    +++ b/gplugin/tests/versioned-dependencies/greater-equal.c Wed May 26 03:52:38 2021 -0500
    @@ -1,5 +1,5 @@
    /*
    - * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com>
    + * Copyright (C) 2011-2021 Gary Kramlich <grim@reaperworld.com>
    *
    * This library is free software; you can redistribute it and/or
    * modify it under the terms of the GNU Lesser General Public
    @@ -18,8 +18,8 @@
    #include <gplugin.h>
    #include <gplugin-native.h>
    -G_MODULE_EXPORT GPluginPluginInfo *
    -gplugin_query(G_GNUC_UNUSED GError **error)
    +static GPluginPluginInfo *
    +greater_equal_query(G_GNUC_UNUSED GError **error)
    {
    /* clang-format off */
    return gplugin_plugin_info_new(
    @@ -30,18 +30,20 @@
    /* clang-format on */
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_load(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +greater_equal_load(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_unload(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +greater_equal_unload(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    +
    +GPLUGIN_NATIVE_PLUGIN_DECLARE(greater_equal)
    --- a/gplugin/tests/versioned-dependencies/greater.c Tue May 04 22:00:16 2021 -0500
    +++ b/gplugin/tests/versioned-dependencies/greater.c Wed May 26 03:52:38 2021 -0500
    @@ -1,5 +1,5 @@
    /*
    - * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com>
    + * Copyright (C) 2011-2021 Gary Kramlich <grim@reaperworld.com>
    *
    * This library is free software; you can redistribute it and/or
    * modify it under the terms of the GNU Lesser General Public
    @@ -18,8 +18,8 @@
    #include <gplugin.h>
    #include <gplugin-native.h>
    -G_MODULE_EXPORT GPluginPluginInfo *
    -gplugin_query(G_GNUC_UNUSED GError **error)
    +static GPluginPluginInfo *
    +greater_query(G_GNUC_UNUSED GError **error)
    {
    /* clang-format off */
    return gplugin_plugin_info_new(
    @@ -30,18 +30,18 @@
    /* clang-format on */
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_load(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +greater_load(G_GNUC_UNUSED GPluginPlugin *plugin, G_GNUC_UNUSED GError **error)
    +{
    + return TRUE;
    +}
    +
    +static gboolean
    +greater_unload(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_unload(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    - G_GNUC_UNUSED GError **error)
    -{
    - return TRUE;
    -}
    +GPLUGIN_NATIVE_PLUGIN_DECLARE(greater)
    --- a/gplugin/tests/versioned-dependencies/less-equal.c Tue May 04 22:00:16 2021 -0500
    +++ b/gplugin/tests/versioned-dependencies/less-equal.c Wed May 26 03:52:38 2021 -0500
    @@ -1,5 +1,5 @@
    /*
    - * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com>
    + * Copyright (C) 2011-2021 Gary Kramlich <grim@reaperworld.com>
    *
    * This library is free software; you can redistribute it and/or
    * modify it under the terms of the GNU Lesser General Public
    @@ -18,8 +18,8 @@
    #include <gplugin.h>
    #include <gplugin-native.h>
    -G_MODULE_EXPORT GPluginPluginInfo *
    -gplugin_query(G_GNUC_UNUSED GError **error)
    +static GPluginPluginInfo *
    +less_equal_query(G_GNUC_UNUSED GError **error)
    {
    /* clang-format off */
    return gplugin_plugin_info_new(
    @@ -30,18 +30,20 @@
    /* clang-format on */
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_load(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +less_equal_load(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_unload(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +less_equal_unload(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    +
    +GPLUGIN_NATIVE_PLUGIN_DECLARE(less_equal)
    --- a/gplugin/tests/versioned-dependencies/less.c Tue May 04 22:00:16 2021 -0500
    +++ b/gplugin/tests/versioned-dependencies/less.c Wed May 26 03:52:38 2021 -0500
    @@ -1,5 +1,5 @@
    /*
    - * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com>
    + * Copyright (C) 2011-2021 Gary Kramlich <grim@reaperworld.com>
    *
    * This library is free software; you can redistribute it and/or
    * modify it under the terms of the GNU Lesser General Public
    @@ -18,8 +18,8 @@
    #include <gplugin.h>
    #include <gplugin-native.h>
    -G_MODULE_EXPORT GPluginPluginInfo *
    -gplugin_query(G_GNUC_UNUSED GError **error)
    +static GPluginPluginInfo *
    +less_query(G_GNUC_UNUSED GError **error)
    {
    /* clang-format off */
    return gplugin_plugin_info_new(
    @@ -30,18 +30,16 @@
    /* clang-format on */
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_load(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    - G_GNUC_UNUSED GError **error)
    +static gboolean
    +less_load(G_GNUC_UNUSED GPluginPlugin *plugin, G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_unload(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    - G_GNUC_UNUSED GError **error)
    +static gboolean
    +less_unload(G_GNUC_UNUSED GPluginPlugin *plugin, G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    +
    +GPLUGIN_NATIVE_PLUGIN_DECLARE(less)
    --- a/gplugin/tests/versioned-dependencies/no-version.c Tue May 04 22:00:16 2021 -0500
    +++ b/gplugin/tests/versioned-dependencies/no-version.c Wed May 26 03:52:38 2021 -0500
    @@ -1,5 +1,5 @@
    /*
    - * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com>
    + * Copyright (C) 2011-2021 Gary Kramlich <grim@reaperworld.com>
    *
    * This library is free software; you can redistribute it and/or
    * modify it under the terms of the GNU Lesser General Public
    @@ -18,24 +18,26 @@
    #include <gplugin.h>
    #include <gplugin-native.h>
    -G_MODULE_EXPORT GPluginPluginInfo *
    -gplugin_query(G_GNUC_UNUSED GError **error)
    +static GPluginPluginInfo *
    +no_version_query(G_GNUC_UNUSED GError **error)
    {
    return gplugin_plugin_info_new("gplugin/test-no-version", 0x04030201, NULL);
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_load(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +no_version_load(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_unload(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +no_version_unload(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    +
    +GPLUGIN_NATIVE_PLUGIN_DECLARE(no_version)
    --- a/gplugin/tests/versioned-dependencies/super-dependent.c Tue May 04 22:00:16 2021 -0500
    +++ b/gplugin/tests/versioned-dependencies/super-dependent.c Wed May 26 03:52:38 2021 -0500
    @@ -1,5 +1,5 @@
    /*
    - * Copyright (C) 2011-2020 Gary Kramlich <grim@reaperworld.com>
    + * Copyright (C) 2011-2021 Gary Kramlich <grim@reaperworld.com>
    *
    * This library is free software; you can redistribute it and/or
    * modify it under the terms of the GNU Lesser General Public
    @@ -18,8 +18,8 @@
    #include <gplugin.h>
    #include <gplugin-native.h>
    -G_MODULE_EXPORT GPluginPluginInfo *
    -gplugin_query(G_GNUC_UNUSED GError **error)
    +static GPluginPluginInfo *
    +super_dependent_query(G_GNUC_UNUSED GError **error)
    {
    /* clang-format-11 formats this correctly, so this can be removed then. */
    /* clang-format off */
    @@ -47,18 +47,20 @@
    /* clang-format on */
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_load(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +super_dependent_load(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    -G_MODULE_EXPORT gboolean
    -gplugin_unload(
    - G_GNUC_UNUSED GPluginNativePlugin *plugin,
    +static gboolean
    +super_dependent_unload(
    + G_GNUC_UNUSED GPluginPlugin *plugin,
    G_GNUC_UNUSED GError **error)
    {
    return TRUE;
    }
    +
    +GPLUGIN_NATIVE_PLUGIN_DECLARE(super_dependent)