Index: gobject/Makefile.am
===================================================================
RCS file: /cvs/gnome/glib/gobject/Makefile.am,v
retrieving revision 1.78
diff -u -p -d -r1.78 Makefile.am
--- gobject/Makefile.am	8 Jul 2005 23:04:05 -0000	1.78
+++ gobject/Makefile.am	11 Sep 2006 02:23:19 -0000
@@ -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
Index: gobject/gobject.c
===================================================================
RCS file: /cvs/gnome/glib/gobject/gobject.c,v
retrieving revision 1.81
diff -u -p -d -r1.81 gobject.c
--- gobject/gobject.c	29 Aug 2006 11:29:24 -0000	1.81
+++ gobject/gobject.c	11 Sep 2006 02:23:20 -0000
@@ -17,7 +17,6 @@
  * Boston, MA 02111-1307, USA.
  */
 #include	"gobject.h"
-#include	"gobjectalias.h"
 #include        <glib/gdatasetprivate.h>
 
 /*
@@ -28,9 +27,13 @@
 #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)
Index: gobject/gsignal.c
===================================================================
RCS file: /cvs/gnome/glib/gobject/gsignal.c,v
retrieving revision 1.66
diff -u -p -d -r1.66 gsignal.c
--- gobject/gsignal.c	31 Dec 2005 02:44:53 -0000	1.66
+++ gobject/gsignal.c	11 Sep 2006 02:23:20 -0000
@@ -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 (GSign
 }
 
 /* --- compile standard marshallers --- */
-#include	"gobject.h"
-#include	"genums.h"
 #include        "gmarshal.c"
 
 #define __G_SIGNAL_C__
Index: gobject/gtype.c
===================================================================
RCS file: /cvs/gnome/glib/gobject/gtype.c,v
retrieving revision 1.88
diff -u -p -d -r1.88 gtype.c
--- gobject/gtype.c	15 Jun 2006 19:18:51 -0000	1.88
+++ gobject/gtype.c	11 Sep 2006 02:23:20 -0000
@@ -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
Index: gobject/gtype.h
===================================================================
RCS file: /cvs/gnome/glib/gobject/gtype.h,v
retrieving revision 1.67
diff -u -p -d -r1.67 gtype.h
--- gobject/gtype.h	16 May 2006 12:02:29 -0000	1.67
+++ gobject/gtype.h	11 Sep 2006 02:23:21 -0000
@@ -348,7 +348,7 @@ gpointer g_type_instance_get_private    
  *                                                 gtk_tree_store_tree_model_init));
  */
 #define G_IMPLEMENT_INTERFACE(TYPE_IFACE, iface_init)       { \
-  static const GInterfaceInfo g_implement_interface_info = { \
+  const GInterfaceInfo g_implement_interface_info = { \
     (GInterfaceInitFunc) iface_init, NULL, NULL \
   }; \
   g_type_add_interface_static (g_define_type_id, TYPE_IFACE, &g_implement_interface_info); \
Index: gobject/gvaluetypes.c
===================================================================
RCS file: /cvs/gnome/glib/gobject/gvaluetypes.c,v
retrieving revision 1.21
diff -u -p -d -r1.21 gvaluetypes.c
--- gobject/gvaluetypes.c	22 Dec 2005 15:07:03 -0000	1.21
+++ gobject/gvaluetypes.c	11 Sep 2006 02:23:21 -0000
@@ -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() */
@@ -846,12 +852,6 @@ g_value_get_gtype (const GValue *value)
   return value->data[0].v_long;
 }
 
-
-/* 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)
Index: gobject/pltcheck.sh
===================================================================
RCS file: gobject/pltcheck.sh
diff -N gobject/pltcheck.sh
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gobject/pltcheck.sh	11 Sep 2006 02:23:21 -0000
@@ -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
Index: glib/Makefile.am
===================================================================
RCS file: /cvs/gnome/glib/glib/Makefile.am,v
retrieving revision 1.142
diff -u -p -d -r1.142 Makefile.am
--- glib/Makefile.am	10 May 2006 00:44:49 -0000	1.142
+++ glib/Makefile.am	11 Sep 2006 02:23:21 -0000
@@ -24,7 +24,7 @@ galiasdef.c: glib.symbols
 
 if OS_LINUX
 if HAVE_GNUC_VISIBILITY
-TESTS = abicheck.sh
+TESTS = abicheck.sh pltcheck.sh
 endif
 endif
 
Index: glib/abicheck.sh
===================================================================
RCS file: /cvs/gnome/glib/glib/abicheck.sh,v
retrieving revision 1.11
diff -u -p -d -r1.11 abicheck.sh
--- glib/abicheck.sh	15 Aug 2005 05:00:56 -0000	1.11
+++ glib/abicheck.sh	11 Sep 2006 02:23:21 -0000
@@ -6,8 +6,8 @@ INCLUDES="-include ${top_builddir:-..}/c
 INCLUDES="$INCLUDES -include glibconfig.cpp"
 
 cpp -P -DINCLUDE_INTERNAL_SYMBOLS -DINCLUDE_VARIABLES -DG_STDIO_NO_WRAP_ON_UNIX -DALL_FILES $INCLUDES "${srcdir:-.}/glib.symbols" | sed -e '/^$/d' -e 's/ G_GNUC.*$//' -e 's/ PRIVATE$//' | sort > expected-abi
-rm glibconfig.cpp
+rm -f glibconfig.cpp
 
 nm -D -g --defined-only .libs/libglib-2.0.so | cut -d ' ' -f 3 | sort > actual-abi
 
-diff -u expected-abi actual-abi && rm expected-abi actual-abi
+diff -u expected-abi actual-abi && rm -f expected-abi actual-abi
Index: glib/gdataset.c
===================================================================
RCS file: /cvs/gnome/glib/glib/gdataset.c,v
retrieving revision 1.32
diff -u -p -d -r1.32 gdataset.c
--- glib/gdataset.c	19 Apr 2006 14:51:48 -0000	1.32
+++ glib/gdataset.c	11 Sep 2006 02:23:21 -0000
@@ -35,8 +35,8 @@
 #include <string.h>
 
 #include "glib.h"
-#include "galias.h"
 #include "gdatasetprivate.h"
+#include "galias.h"
 
 
 /* --- defines --- */
Index: glib/glib.symbols
===================================================================
RCS file: /cvs/gnome/glib/glib/glib.symbols,v
retrieving revision 1.68
diff -u -p -d -r1.68 glib.symbols
--- glib/glib.symbols	10 Sep 2006 05:44:22 -0000	1.68
+++ glib/glib.symbols	11 Sep 2006 02:23:21 -0000
@@ -1105,6 +1105,7 @@ g_string_down
 g_string_up
 #endif
 #ifdef INCLUDE_INTERNAL_SYMBOLS
+ /* these are not internal, but we don't want to alias them */
 g_string_append_c
 #endif
 g_str_equal
Index: glib/gmarkup.c
===================================================================
RCS file: /cvs/gnome/glib/glib/gmarkup.c,v
retrieving revision 1.43
diff -u -p -d -r1.43 gmarkup.c
--- glib/gmarkup.c	30 Aug 2006 19:07:54 -0000	1.43
+++ glib/gmarkup.c	11 Sep 2006 02:23:28 -0000
@@ -27,9 +27,8 @@
 #include <errno.h>
 
 #include "glib.h"
-#include "galias.h"
-
 #include "glibintl.h"
+#include "galias.h"
 
 GQuark
 g_markup_error_quark (void)
Index: glib/gshell.c
===================================================================
RCS file: /cvs/gnome/glib/glib/gshell.c,v
retrieving revision 1.16
diff -u -p -d -r1.16 gshell.c
--- glib/gshell.c	4 Apr 2006 04:37:39 -0000	1.16
+++ glib/gshell.c	11 Sep 2006 02:23:28 -0000
@@ -25,13 +25,13 @@
 #include <string.h>
 
 #include "glib.h"
-#include "galias.h"
 
 #ifdef _
 #warning "FIXME remove gettext hack"
 #endif
 
 #include "glibintl.h"
+#include "galias.h"
 
 GQuark
 g_shell_error_quark (void)
Index: glib/gslice.c
===================================================================
RCS file: /cvs/gnome/glib/glib/gslice.c,v
retrieving revision 1.19
diff -u -p -d -r1.19 gslice.c
--- glib/gslice.c	10 May 2006 00:44:49 -0000	1.19
+++ glib/gslice.c	11 Sep 2006 02:23:28 -0000
@@ -32,8 +32,8 @@
 #include <errno.h>
 #include "gmem.h"               /* gslice.h */
 #include "gthreadprivate.h"
-#include "galias.h"
 #include "glib.h"
+#include "galias.h"
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>             /* sysconf() */
 #endif
Index: glib/gspawn-win32.c
===================================================================
RCS file: /cvs/gnome/glib/glib/gspawn-win32.c,v
retrieving revision 1.37
diff -u -p -d -r1.37 gspawn-win32.c
--- glib/gspawn-win32.c	29 Aug 2006 22:44:45 -0000	1.37
+++ glib/gspawn-win32.c	11 Sep 2006 02:23:28 -0000
@@ -46,6 +46,7 @@
 
 #include "glib.h"
 #include "gprintfint.h"
+#include "glibintl.h"
 #include "galias.h"
 
 #include <string.h>
@@ -66,8 +67,6 @@ int _wspawnvp (int, const wchar_t *, con
 int _wspawnve (int, const wchar_t *, const wchar_t **, const wchar_t **);
 int _wspawnv (int, const wchar_t *, const wchar_t **);
 #endif
-
-#include "glibintl.h"
 
 #ifdef G_SPAWN_WIN32_DEBUG
   static int debug = 1;
Index: glib/gspawn.c
===================================================================
RCS file: /cvs/gnome/glib/glib/gspawn.c,v
retrieving revision 1.35
diff -u -p -d -r1.35 gspawn.c
--- glib/gspawn.c	4 Apr 2006 04:37:39 -0000	1.35
+++ glib/gspawn.c	11 Sep 2006 02:23:28 -0000
@@ -36,9 +36,8 @@
 #endif /* HAVE_SYS_SELECT_H */
 
 #include "glib.h"
-#include "galias.h"
-
 #include "glibintl.h"
+#include "galias.h"
 
 static gint g_execute (const gchar  *file,
                        gchar **argv,
Index: glib/gutf8.c
===================================================================
RCS file: /cvs/gnome/glib/glib/gutf8.c,v
retrieving revision 1.54
diff -u -p -d -r1.54 gutf8.c
--- glib/gutf8.c	26 Aug 2006 03:44:45 -0000	1.54
+++ glib/gutf8.c	11 Sep 2006 02:23:28 -0000
@@ -28,7 +28,6 @@
 #include <string.h>
 
 #include "glib.h"
-#include "galias.h"
 
 #ifdef G_PLATFORM_WIN32
 #include <stdio.h>
@@ -40,6 +39,7 @@
 #include "libcharset/libcharset.h"
 
 #include "glibintl.h"
+#include "galias.h"
 
 #define UTF8_COMPUTE(Char, Mask, Len)					      \
   if (Char < 128)							      \
Index: glib/pltcheck.sh
===================================================================
RCS file: glib/pltcheck.sh
diff -N glib/pltcheck.sh
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ glib/pltcheck.sh	11 Sep 2006 02:23:28 -0000
@@ -0,0 +1,19 @@
+#!/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
+	# g_string_insert_c is used in g_string_append_c_inline
+	# unaliased.  Couldn't find a way to fix it.
+	readelf -r $so | grep 'JU\?MP_SLOT' | grep -v '\<g_string_insert_c\>' | grep '\<g_' && status=1
+done
+
+exit $status
Index: glib/gnulib/g-gnulib.h
===================================================================
RCS file: /cvs/gnome/glib/glib/gnulib/g-gnulib.h,v
retrieving revision 1.3
diff -u -p -d -r1.3 g-gnulib.h
--- glib/gnulib/g-gnulib.h	24 Oct 2004 01:15:08 -0000	1.3
+++ glib/gnulib/g-gnulib.h	11 Sep 2006 02:23:28 -0000
@@ -21,6 +21,7 @@
 #include <config.h>
 #include <stdlib.h>
 #include "glib/glib.h"
+#include "glib/galias.h"
 
 /* Private namespace for gnulib functions */
 #define asnprintf        _g_gnulib_asnprintf
