summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Catanzaro <mcatanzaro@posteo.net>2018-11-21 16:48:01 +0000
committerMichael Catanzaro <mcatanzaro@posteo.net>2018-11-21 16:48:01 +0000
commit1fb31a16c306e3101c04074070ae1a154801d260 (patch)
tree27dbd4d2f6cf88dd0f91511c5e5713b7192c8316
parent2d462bf661d768a157eb2f4ac6a28f7ee9e26c89 (diff)
parente1bcd7529e534f4f33b1564243fb5fe56a2ba13c (diff)
downloadgvdb-1fb31a16c306e3101c04074070ae1a154801d260.tar.gz
Merge branch 'wip/lantw/use-weak-symbols-in-gvdb' into 'master'
build: Use weak bindings in gvdb to fix linking with LLD Closes dconf#47 See merge request GNOME/gvdb!2
-rw-r--r--gvdb-reader.h35
1 files changed, 25 insertions, 10 deletions
diff --git a/gvdb-reader.h b/gvdb-reader.h
index 9bf627f..79a97d3 100644
--- a/gvdb-reader.h
+++ b/gvdb-reader.h
@@ -22,40 +22,55 @@
#include <glib.h>
+/* We cannot enable the weak attribute unconditionally here because both
+ * gvdb/gvdb-reader.c and tests/dconf-mock-gvdb.c include this file. The
+ * intention of using weak symbols here is to allow the latter to override
+ * functions defined in the former, so functions in tests/dconf-mock-gvdb.c
+ * must have strong bindings. */
+#ifdef GVDB_USE_WEAK_SYMBOLS
+# ifdef __GNUC__
+# define GVDB_GNUC_WEAK __attribute__((weak))
+# else
+# define GVDB_GNUC_WEAK
+# endif
+#else
+# define GVDB_GNUC_WEAK
+#endif
+
typedef struct _GvdbTable GvdbTable;
G_BEGIN_DECLS
-G_GNUC_INTERNAL
+G_GNUC_INTERNAL GVDB_GNUC_WEAK
GvdbTable * gvdb_table_new_from_bytes (GBytes *bytes,
gboolean trusted,
GError **error);
-G_GNUC_INTERNAL
+G_GNUC_INTERNAL GVDB_GNUC_WEAK
GvdbTable * gvdb_table_new (const gchar *filename,
gboolean trusted,
GError **error);
-G_GNUC_INTERNAL
+G_GNUC_INTERNAL GVDB_GNUC_WEAK
void gvdb_table_free (GvdbTable *table);
-G_GNUC_INTERNAL
+G_GNUC_INTERNAL GVDB_GNUC_WEAK
gchar ** gvdb_table_get_names (GvdbTable *table,
gsize *length);
-G_GNUC_INTERNAL
+G_GNUC_INTERNAL GVDB_GNUC_WEAK
gchar ** gvdb_table_list (GvdbTable *table,
const gchar *key);
-G_GNUC_INTERNAL
+G_GNUC_INTERNAL GVDB_GNUC_WEAK
GvdbTable * gvdb_table_get_table (GvdbTable *table,
const gchar *key);
-G_GNUC_INTERNAL
+G_GNUC_INTERNAL GVDB_GNUC_WEAK
GVariant * gvdb_table_get_raw_value (GvdbTable *table,
const gchar *key);
-G_GNUC_INTERNAL
+G_GNUC_INTERNAL GVDB_GNUC_WEAK
GVariant * gvdb_table_get_value (GvdbTable *table,
const gchar *key);
-G_GNUC_INTERNAL
+G_GNUC_INTERNAL GVDB_GNUC_WEAK
gboolean gvdb_table_has_value (GvdbTable *table,
const gchar *key);
-G_GNUC_INTERNAL
+G_GNUC_INTERNAL GVDB_GNUC_WEAK
gboolean gvdb_table_is_valid (GvdbTable *table);
G_END_DECLS