summaryrefslogtreecommitdiff
path: root/gobject
diff options
context:
space:
mode:
authorMatthias Clasen <matthiasc@src.gnome.org>2006-09-30 13:59:01 +0000
committerMatthias Clasen <matthiasc@src.gnome.org>2006-09-30 13:59:01 +0000
commit20b39ffafad66ba1746de6954aa85653d135a5b8 (patch)
tree205ef8445cf96574a21a87a505e8d5ba9602b5d5 /gobject
parentb6a3cd8039125e04d6f72d37c2bbf46610c9959c (diff)
Fix some issues with PLT entries.
Diffstat (limited to 'gobject')
-rw-r--r--gobject/ChangeLog12
-rw-r--r--gobject/Makefile.am6
-rw-r--r--gobject/gobject.c7
-rw-r--r--gobject/gsignal.c4
-rw-r--r--gobject/gtype.c2
-rw-r--r--gobject/gvaluetypes.c12
-rwxr-xr-xgobject/pltcheck.sh17
7 files changed, 49 insertions, 11 deletions
diff --git a/gobject/ChangeLog b/gobject/ChangeLog
index f2f268aa3..281183073 100644
--- a/gobject/ChangeLog
+++ b/gobject/ChangeLog
@@ -1,3 +1,15 @@
+Sat Sep 30 2006 Matthias Clasen <mclasen@redhat.com>
+
+ * pltcheck.sh: Script to check PLT entries.
+
+ * Makefile.am (TESTS): Run pltcheck.sh
+
+ * gtype.c:
+ * gsignal.c:
+ * gobject.c:
+ * gvaluetypes.c: Move all includes before gobjectalias.h.
+ (#3545422, Behdad Esfahbod)
+
Fri Sep 22 13:41:02 2006 Tim Janik <timj@imendio.com>
* gtype.h: applied patch from Behdad with slight optimization,
diff --git a/gobject/Makefile.am b/gobject/Makefile.am
index 09d732b41..f192ee09f 100644
--- a/gobject/Makefile.am
+++ b/gobject/Makefile.am
@@ -154,6 +154,12 @@ EXTRA_DIST = \
gen_sources = xgen-gmh xgen-gmc xgen-gms
CLEANFILES = $(gen_sources)
+if OS_LINUX
+if HAVE_GNUC_VISIBILITY
+TESTS = pltcheck.sh
+endif
+endif
+
# normal autogeneration rules
# all autogenerated files need to be generated in the srcdir,
# so old versions get remade and are not confused with newer
diff --git a/gobject/gobject.c b/gobject/gobject.c
index d5290a108..7514c9a3d 100644
--- a/gobject/gobject.c
+++ b/gobject/gobject.c
@@ -17,7 +17,6 @@
* Boston, MA 02111-1307, USA.
*/
#include "gobject.h"
-#include "gobjectalias.h"
#include <glib/gdatasetprivate.h>
/*
@@ -28,10 +27,14 @@
#include "gsignal.h"
#include "gparamspecs.h"
#include "gvaluetypes.h"
-#include "gobjectnotifyqueue.c"
#include <string.h>
#include <signal.h>
+#include "gobjectalias.h"
+
+/* This should be included after gobjectalias.h (or pltcheck.sh will fail) */
+#include "gobjectnotifyqueue.c"
+
#define PREALLOC_CPARAMS (8)
diff --git a/gobject/gsignal.c b/gobject/gsignal.c
index 8bd147849..c65565ae2 100644
--- a/gobject/gsignal.c
+++ b/gobject/gsignal.c
@@ -32,6 +32,8 @@
#include "gvaluecollector.h"
#include "gvaluetypes.h"
#include "gboxed.h"
+#include "gobject.h"
+#include "genums.h"
#include "gobjectalias.h"
@@ -2605,8 +2607,6 @@ g_signal_accumulator_true_handled (GSignalInvocationHint *ihint,
}
/* --- compile standard marshallers --- */
-#include "gobject.h"
-#include "genums.h"
#include "gmarshal.c"
#define __G_SIGNAL_C__
diff --git a/gobject/gtype.c b/gobject/gtype.c
index 04bcc7e10..12ce66fe8 100644
--- a/gobject/gtype.c
+++ b/gobject/gtype.c
@@ -18,7 +18,6 @@
*/
#include <config.h>
#include "gtype.h"
-#include "gobjectalias.h"
/*
* MT safe
@@ -29,6 +28,7 @@
#include "gbsearcharray.h"
#include <string.h>
+#include "gobjectalias.h"
/* NOTE: some functions (some internal variants and exported ones)
* invalidate data portions of the TypeNodes. if external functions/callbacks
diff --git a/gobject/gvaluetypes.c b/gobject/gvaluetypes.c
index 7bfc9f6c9..a479a5807 100644
--- a/gobject/gvaluetypes.c
+++ b/gobject/gvaluetypes.c
@@ -24,6 +24,12 @@
#include "gvaluetypes.h"
#include "gvaluecollector.h"
+
+#include "gobject.h"
+#include "gparam.h"
+#include "gboxed.h"
+#include "genums.h"
+
#include "gobjectalias.h"
#include <string.h>
#include <stdlib.h> /* qsort() */
@@ -847,12 +853,6 @@ g_value_get_gtype (const GValue *value)
}
-/* need extra includes for g_strdup_value_contents() ;( */
-#include "gobject.h"
-#include "gparam.h"
-#include "gboxed.h"
-#include "genums.h"
-
gchar*
g_strdup_value_contents (const GValue *value)
{
diff --git a/gobject/pltcheck.sh b/gobject/pltcheck.sh
new file mode 100755
index 000000000..19edfac02
--- /dev/null
+++ b/gobject/pltcheck.sh
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+LANG=C
+
+status=0
+
+if ! which readelf 2>/dev/null >/dev/null; then
+ echo "'readelf' not found; skipping test"
+ exit 0
+fi
+
+for so in .libs/lib*.so; do
+ echo Checking $so for local PLT entries
+ readelf -r $so | grep 'JU\?MP_SLOT' | grep '\<g_type_\|\<g_boxed_\|\<g_value_\|\<g_cclosure_\|\<g_closure_\|\<g_signal\|\<g_enum_\|\<g_flags_\|\<g_io_\|\<g_object_\|\<g_param_' && status=1
+done
+
+exit $status