Implement the same PLT reduction technique used in GTK+:
authorMatthias Clasen <maclas@gmx.de>
Thu, 16 Sep 2004 06:05:53 +0000 (06:05 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Thu, 16 Sep 2004 06:05:53 +0000 (06:05 +0000)
Thu Sep 16 02:03:15 2004  Matthias Clasen  <maclas@gmx.de>

Implement the same PLT reduction technique used in GTK+:

60 files changed:
ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-12
ChangeLog.pre-2-6
ChangeLog.pre-2-8
configure.in
glib/Makefile.am
glib/abicheck.sh [new file with mode: 0755]
glib/garray.c
glib/gasyncqueue.c
glib/gatomic.c
glib/gbacktrace.c
glib/gcache.c
glib/gcompletion.c
glib/gconvert.c
glib/gdataset.c
glib/gdate.c
glib/gdir.c
glib/gerror.c
glib/gfileutils.c
glib/ghash.c
glib/ghook.c
glib/giochannel.c
glib/giounix.c
glib/giowin32.c
glib/glib.def [deleted file]
glib/glib.symbols [new file with mode: 0644]
glib/glist.c
glib/gmain.c
glib/gmarkup.c
glib/gmem.c
glib/gmessages.c
glib/gnode.c
glib/goption.c
glib/gpattern.c
glib/gprimes.c
glib/gprintf.c
glib/gqsort.c
glib/gqueue.c
glib/grand.c
glib/grel.c
glib/gscanner.c
glib/gshell.c
glib/gslist.c
glib/gspawn-win32.c
glib/gspawn.c
glib/gstrfuncs.c
glib/gstring.c
glib/gthread.c
glib/gthreadpool.c
glib/gtimer.c
glib/gtree.c
glib/gunibreak.c
glib/gunicollate.c
glib/gunidecomp.c
glib/guniprop.c
glib/gutf8.c
glib/gutils.c
glib/gwin32.c
glib/makegalias.pl [new file with mode: 0755]

index 5bd3ead..ae92a37 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,24 @@
+Thu Sep 16 02:03:15 2004  Matthias Clasen  <maclas@gmx.de>
+
+       Implement the same PLT reduction technique used in GTK+:
+       
+       * glib/glib.symbols: Master list of symbols
+
+       * glib/makegalias.pl: Perl script which creates galias.h
+
+       * glib/abicheck.sh: Compares actual exports against glib.symbols 
+
+       * glib/glib.def: Removed. This file is now generated from
+       glib.symbols
+       
+       * glib/Makefile.am: Add rules to generate galias.h and glib.def,
+       and add abicheck.sh to TESTS. Don't export _-prefixed symbols.
+       
+       * configure.in: Add --disable-visibility to suppress the 
+       use of ELF visibility attributes.
+
+       * glib/*.c: Include galias.h
+
 2004-09-15  Tor Lillqvist  <tml@iki.fi>
 
        * glib/gwin32.c (g_win32_error_message): Convert message to
index 5bd3ead..ae92a37 100644 (file)
@@ -1,3 +1,24 @@
+Thu Sep 16 02:03:15 2004  Matthias Clasen  <maclas@gmx.de>
+
+       Implement the same PLT reduction technique used in GTK+:
+       
+       * glib/glib.symbols: Master list of symbols
+
+       * glib/makegalias.pl: Perl script which creates galias.h
+
+       * glib/abicheck.sh: Compares actual exports against glib.symbols 
+
+       * glib/glib.def: Removed. This file is now generated from
+       glib.symbols
+       
+       * glib/Makefile.am: Add rules to generate galias.h and glib.def,
+       and add abicheck.sh to TESTS. Don't export _-prefixed symbols.
+       
+       * configure.in: Add --disable-visibility to suppress the 
+       use of ELF visibility attributes.
+
+       * glib/*.c: Include galias.h
+
 2004-09-15  Tor Lillqvist  <tml@iki.fi>
 
        * glib/gwin32.c (g_win32_error_message): Convert message to
index 5bd3ead..ae92a37 100644 (file)
@@ -1,3 +1,24 @@
+Thu Sep 16 02:03:15 2004  Matthias Clasen  <maclas@gmx.de>
+
+       Implement the same PLT reduction technique used in GTK+:
+       
+       * glib/glib.symbols: Master list of symbols
+
+       * glib/makegalias.pl: Perl script which creates galias.h
+
+       * glib/abicheck.sh: Compares actual exports against glib.symbols 
+
+       * glib/glib.def: Removed. This file is now generated from
+       glib.symbols
+       
+       * glib/Makefile.am: Add rules to generate galias.h and glib.def,
+       and add abicheck.sh to TESTS. Don't export _-prefixed symbols.
+       
+       * configure.in: Add --disable-visibility to suppress the 
+       use of ELF visibility attributes.
+
+       * glib/*.c: Include galias.h
+
 2004-09-15  Tor Lillqvist  <tml@iki.fi>
 
        * glib/gwin32.c (g_win32_error_message): Convert message to
index 5bd3ead..ae92a37 100644 (file)
@@ -1,3 +1,24 @@
+Thu Sep 16 02:03:15 2004  Matthias Clasen  <maclas@gmx.de>
+
+       Implement the same PLT reduction technique used in GTK+:
+       
+       * glib/glib.symbols: Master list of symbols
+
+       * glib/makegalias.pl: Perl script which creates galias.h
+
+       * glib/abicheck.sh: Compares actual exports against glib.symbols 
+
+       * glib/glib.def: Removed. This file is now generated from
+       glib.symbols
+       
+       * glib/Makefile.am: Add rules to generate galias.h and glib.def,
+       and add abicheck.sh to TESTS. Don't export _-prefixed symbols.
+       
+       * configure.in: Add --disable-visibility to suppress the 
+       use of ELF visibility attributes.
+
+       * glib/*.c: Include galias.h
+
 2004-09-15  Tor Lillqvist  <tml@iki.fi>
 
        * glib/gwin32.c (g_win32_error_message): Convert message to
index 5bd3ead..ae92a37 100644 (file)
@@ -1,3 +1,24 @@
+Thu Sep 16 02:03:15 2004  Matthias Clasen  <maclas@gmx.de>
+
+       Implement the same PLT reduction technique used in GTK+:
+       
+       * glib/glib.symbols: Master list of symbols
+
+       * glib/makegalias.pl: Perl script which creates galias.h
+
+       * glib/abicheck.sh: Compares actual exports against glib.symbols 
+
+       * glib/glib.def: Removed. This file is now generated from
+       glib.symbols
+       
+       * glib/Makefile.am: Add rules to generate galias.h and glib.def,
+       and add abicheck.sh to TESTS. Don't export _-prefixed symbols.
+       
+       * configure.in: Add --disable-visibility to suppress the 
+       use of ELF visibility attributes.
+
+       * glib/*.c: Include galias.h
+
 2004-09-15  Tor Lillqvist  <tml@iki.fi>
 
        * glib/gwin32.c (g_win32_error_message): Convert message to
index 0457368..7a492ad 100644 (file)
@@ -149,6 +149,7 @@ case "$host" in
 esac
 AC_MSG_RESULT([$glib_native_win32])
 AM_CONDITIONAL(OS_WIN32, [test "$glib_native_win32" = "yes"])
+AM_CONDITIONAL(OS_UNIX, [test "$glib_native_win32" != "yes"])
 AC_SUBST(G_LIB_WIN32_RESOURCE)
 AC_SUBST(G_MODULE_WIN32_RESOURCE)
 AC_SUBST(G_OBJECT_WIN32_RESOURCE)
@@ -164,6 +165,16 @@ if test "$glib_native_win32" = "yes"; then
 fi
 AM_CONDITIONAL(MS_LIB_AVAILABLE, [test x$ms_librarian = xyes])
 
+if test "$glib_native_win32" != yes; then
+    # libtool option to control which symbols are exported
+    # right now, symbols starting with _ are not exported
+    LIBTOOL_EXPORT_OPTIONS='-export-symbols-regex "^[[^_]].*"'
+else
+    # We currently use .def files on Windows
+    LIBTOOL_EXPORT_OPTIONS=
+fi
+AC_SUBST(LIBTOOL_EXPORT_OPTIONS)
+
 dnl declare --enable-* args and collect ac_help strings
 AC_ARG_ENABLE(debug,
               AC_HELP_STRING([--enable-debug=@<:@no/minimum/yes@:>@],
@@ -191,6 +202,10 @@ AC_ARG_ENABLE(rebuilds,
               [AC_HELP_STRING([--disable-rebuilds],
                               [disable all source autogeneration rules])],,
               [enable_rebuilds=yes])
+AC_ARG_ENABLE(visibility,
+              [AC_HELP_STRING([--disable-visibility],
+                              [don't use ELF visibility attributes])],,
+              [enable_visibility=yes])
 
 if test "x$enable_threads" != "xyes"; then
   enable_threads=no
@@ -275,6 +290,10 @@ else
   fi
 fi
 
+if test "x$enable_visibility" = "xno"; then
+  GLIB_DEBUG_FLAGS="$GLIB_DEBUG_FLAGS -DDISABLE_VISIBILITY"
+fi
+
 # Ensure MSVC-compatible struct packing convention is used when
 # compiling for Win32 with gcc.
 # What flag to depends on gcc version: gcc3 uses "-mms-bitfields", while
index 827a1f3..5364648 100644 (file)
@@ -13,16 +13,31 @@ DIST_SUBDIRS = libcharset gnulib
 INCLUDES = -I$(top_srcdir) -DG_LOG_DOMAIN=\"GLib\" \
        $(GLIB_DEBUG_FLAGS) -DG_DISABLE_DEPRECATED -DGLIB_COMPILATION 
 
+glib.def: glib.symbols
+       (echo -e EXPORTS; cpp -P -DINCLUDE_VARIABLES -DINCLUDE_INTERNAL_SYMBOLS -DG_OS_WIN32 $(srcdir)/glib.symbols | sed -e '/^$$/d' -e 's/^/\t/') > glib.def
+
+galias.h: glib.symbols
+         ./makegalias.pl < $(srcdir)/glib.symbols > galias.h
+
+if OS_UNIX
+TESTS = abicheck.sh
+endif
+
+BUILT_SOURCES = galias.h
+
 EXTRA_DIST =                   \
        makefile.msc.in         \
        glib.rc.in              \
        gen-unicode-tables.pl   \
-       glib.def
+       makegalias.pl           \
+       glib.symbols
 
 # These may be in the builddir too
 BUILT_EXTRA_DIST =             \
        makefile.msc            \
-       glib.rc
+       glib.rc                 \
+       glib.def                \
+       galias.h
 
 lib_LTLIBRARIES = libglib-2.0.la
 
@@ -184,6 +199,8 @@ uninstall-libtool-import-lib:
 else
 install-libtool-import-lib:
 uninstall-libtool-import-lib:
+
+export_symbols = $(LIBTOOL_EXPORT_OPTIONS)
 endif
 
 libglib_2_0_la_LIBADD = libcharset/libcharset.la $(printf_la) @GIO@ @GSPAWN@ @PLATFORMDEP@ @G_LIB_WIN32_RESOURCE@ @ICONV_LIBS@ @G_LIBS_EXTRA@ 
diff --git a/glib/abicheck.sh b/glib/abicheck.sh
new file mode 100755 (executable)
index 0000000..77c721c
--- /dev/null
@@ -0,0 +1,5 @@
+#! /bin/sh
+
+cpp -P -DG_OS_UNIX -DINCLUDE_INTERNAL_SYMBOLS ${srcdir:-.}/glib.symbols | sed -e '/^$/d' | sort > expected-abi
+nm -D .libs/libglib-2.0.so | grep " T " | cut -c12- | sort > actual-abi
+diff -u expected-abi actual-abi && rm expected-abi actual-abi
index 8869236..70a836a 100644 (file)
@@ -32,6 +32,7 @@
 
 #include <string.h>
 #include <stdlib.h>
+#include "galias.h"
 #include "glib.h"
 
 
index 9e9f9a6..75baaa3 100644 (file)
@@ -26,6 +26,7 @@
 
 #include "config.h"
 
+#include "galias.h"
 #include "glib.h"
 
 
index d9bb2d7..2cb9378 100644 (file)
@@ -22,6 +22,7 @@
  
 #include "config.h"
 
+#include "galias.h"
 #include "glib.h"
 #include "gthreadinit.h"
 
index e4b3fdb..004a6aa 100644 (file)
@@ -35,6 +35,7 @@
 #include <stdarg.h>
 #include <stdio.h>
 #include <stdlib.h>
+#include "galias.h"
 #include "glib.h"
 #include "gprintfint.h"
 
index a462b02..6d506d8 100644 (file)
@@ -30,6 +30,7 @@
 
 #include "config.h"
 
+#include "galias.h"
 #include "glib.h"
 
 
index e8fc0ca..5bd8007 100644 (file)
@@ -32,6 +32,7 @@
 
 #include <string.h>
 
+#include "galias.h"
 #include "glib.h"
 
 
index dd811e5..c7d8880 100644 (file)
@@ -28,6 +28,7 @@
 #include <string.h>
 #include <stdlib.h>
 
+#include "galias.h"
 #include "glib.h"
 #include "gprintfint.h"
 #include "gthreadinit.h"
index fc0a92b..9aed3a6 100644 (file)
@@ -34,7 +34,7 @@
 #include "config.h"
 
 #include <string.h>
-
+#include "galias.h"
 #include "glib.h"
 
 
index 8e12a8d..8d2bb24 100644 (file)
@@ -35,6 +35,7 @@
 /* #define DEBUG_MSG(args)     g_message args ; */
 #endif
 
+#include "galias.h"
 #include "glib.h"
 
 #include <time.h>
index c9e011e..ba51995 100644 (file)
@@ -31,6 +31,7 @@
 #include <dirent.h>
 #endif
 
+#include "galias.h"
 #include "glib.h"
 #include "gdir.h"
 
index 9a0729f..412e5a4 100644 (file)
@@ -26,6 +26,7 @@
 
 #include "config.h"
 
+#include "galias.h"
 #include "glib.h"
 
 
index 061b321..cfe1a09 100644 (file)
@@ -20,6 +20,7 @@
 
 #include "config.h"
 
+#include "galias.h"
 #include "glib.h"
 
 #include <sys/stat.h>
index 829a24c..a979329 100644 (file)
@@ -30,6 +30,7 @@
 
 #include "config.h"
 
+#include "galias.h"
 #include "glib.h"
 
 
index b1545a0..70d3e36 100644 (file)
@@ -33,6 +33,7 @@
 
 #include "config.h"
 
+#include "galias.h"
 #include "glib.h"
 
 
index 48b6b66..8a3c2da 100644 (file)
@@ -42,6 +42,7 @@
 
 #undef G_DISABLE_DEPRECATED
 
+#include "galias.h"
 #include "glib.h"
 
 #include "giochannel.h"
index ecd32ec..44e0294 100644 (file)
@@ -43,6 +43,7 @@
 #include <string.h>
 #include <fcntl.h>
 
+#include "galias.h"
 #include "glib.h"
 
 /*
index 8d43553..8fcb827 100644 (file)
@@ -34,6 +34,7 @@
 
 #include "config.h"
 
+#include "galias.h"
 #include "glib.h"
 
 #include <stdlib.h>
diff --git a/glib/glib.def b/glib/glib.def
deleted file mode 100644 (file)
index 6c9abce..0000000
+++ /dev/null
@@ -1,836 +0,0 @@
-EXPORTS
-       g_allocator_free
-       g_allocator_new
-       g_array_append_vals
-       g_array_free
-       g_array_insert_vals
-       g_array_new
-       g_array_prepend_vals
-       g_array_remove_index
-       g_array_remove_index_fast
-       g_array_remove_range
-       g_array_set_size
-       g_array_sized_new
-       g_array_sort
-       g_array_sort_with_data
-       g_ascii_digit_value
-       g_ascii_dtostr
-       g_ascii_formatd
-       g_ascii_strcasecmp
-       g_ascii_strdown
-       g_ascii_strncasecmp
-       g_ascii_strtod
-       g_ascii_strtoull
-       g_ascii_strup
-       g_ascii_table
-       g_ascii_tolower
-       g_ascii_toupper
-       g_ascii_xdigit_value
-       g_async_queue_length
-       g_async_queue_length_unlocked
-       g_async_queue_lock
-       g_async_queue_new
-       g_async_queue_pop
-       g_async_queue_pop_unlocked
-       g_async_queue_push
-       g_async_queue_push_unlocked
-       g_async_queue_ref
-       g_async_queue_ref_unlocked
-       g_async_queue_timed_pop
-       g_async_queue_timed_pop_unlocked
-       g_async_queue_try_pop
-       g_async_queue_try_pop_unlocked
-       g_async_queue_unlock
-       g_async_queue_unref
-       g_async_queue_unref_and_unlock
-       g_atexit
-       g_atomic_int_add
-       g_atomic_int_compare_and_exchange
-       g_atomic_int_exchange_and_add
-;      g_atomic_int_get
-       g_atomic_pointer_compare_and_exchange
-;      g_atomic_pointer_get
-       g_basename
-       g_bit_nth_lsf
-       g_bit_nth_msf
-       g_bit_storage
-       g_blow_chunks
-       g_build_filename
-       g_build_path
-       g_byte_array_append
-       g_byte_array_free
-       g_byte_array_new
-       g_byte_array_prepend
-       g_byte_array_remove_index
-       g_byte_array_remove_index_fast
-       g_byte_array_remove_range
-       g_byte_array_set_size
-       g_byte_array_sized_new
-       g_byte_array_sort
-       g_byte_array_sort_with_data
-       g_cache_destroy
-       g_cache_insert
-       g_cache_key_foreach
-       g_cache_new
-       g_cache_remove
-       g_cache_value_foreach
-       g_child_watch_add
-       g_child_watch_add_full
-       g_child_watch_source_new
-       g_clear_error
-       g_completion_add_items
-       g_completion_clear_items
-       g_completion_complete
-       g_completion_complete_utf8
-       g_completion_free
-       g_completion_new
-       g_completion_remove_items
-       g_completion_set_compare
-       g_convert
-       g_convert_error_quark
-       g_convert_with_fallback
-       g_convert_with_iconv
-       g_datalist_clear
-       g_datalist_foreach
-       g_datalist_id_get_data
-       g_datalist_id_remove_no_notify
-       g_datalist_id_set_data_full
-       g_datalist_init
-       g_dataset_destroy
-       g_dataset_foreach
-       g_dataset_id_get_data
-       g_dataset_id_remove_no_notify
-       g_dataset_id_set_data_full
-       g_date_add_days
-       g_date_add_months
-       g_date_add_years
-       g_date_clamp
-       g_date_clear
-       g_date_compare
-       g_date_days_between
-       g_date_free
-       g_date_get_day
-       g_date_get_day_of_year
-       g_date_get_days_in_month
-       g_date_get_iso8601_week_of_year
-       g_date_get_julian
-       g_date_get_monday_week_of_year
-       g_date_get_monday_weeks_in_year
-       g_date_get_month
-       g_date_get_sunday_week_of_year
-       g_date_get_sunday_weeks_in_year
-       g_date_get_weekday
-       g_date_get_year
-       g_date_is_first_of_month
-       g_date_is_last_of_month
-       g_date_is_leap_year
-       g_date_new
-       g_date_new_dmy
-       g_date_new_julian
-       g_date_order
-       g_date_set_day
-       g_date_set_dmy
-       g_date_set_julian
-       g_date_set_month
-       g_date_set_parse
-       g_date_set_time
-       g_date_set_year
-       g_date_strftime
-       g_date_subtract_days
-       g_date_subtract_months
-       g_date_subtract_years
-       g_date_to_struct_tm
-       g_date_valid
-       g_date_valid_day
-       g_date_valid_dmy
-       g_date_valid_julian
-       g_date_valid_month
-       g_date_valid_weekday
-       g_date_valid_year
-       g_dir_close
-       g_dir_open
-       g_dir_read_name
-       g_dir_rewind
-       g_direct_equal
-       g_direct_hash
-       g_error_copy
-       g_error_free
-       g_error_matches
-       g_error_new
-       g_error_new_literal
-       g_file_error_from_errno
-       g_file_error_quark
-       g_file_get_contents
-       g_file_open_tmp
-       g_file_read_link
-       g_file_test
-       g_filename_from_uri
-       g_filename_from_utf8
-       g_filename_to_uri
-       g_filename_to_utf8
-       g_find_program_in_path
-       g_fprintf
-       g_free
-       g_get_application_name
-       g_get_charset
-       g_get_codeset
-       g_get_current_dir
-       g_get_current_time
-       g_get_home_dir
-       g_get_language_names
-       g_get_prgname
-       g_get_real_name
-       g_get_system_config_dirs
-       g_get_system_data_dirs
-       g_get_tmp_dir
-       g_get_user_cache_dir
-       g_get_user_config_dir
-       g_get_user_data_dir
-       g_get_user_name
-       g_getenv
-       g_hash_table_destroy
-       g_hash_table_find
-       g_hash_table_foreach
-       g_hash_table_foreach_remove
-       g_hash_table_foreach_steal
-       g_hash_table_insert
-       g_hash_table_lookup
-       g_hash_table_lookup_extended
-       g_hash_table_new
-       g_hash_table_new_full
-       g_hash_table_remove
-       g_hash_table_replace
-       g_hash_table_size
-       g_hash_table_steal
-       g_hook_alloc
-       g_hook_compare_ids
-       g_hook_destroy
-       g_hook_destroy_link
-       g_hook_find
-       g_hook_find_data
-       g_hook_find_func
-       g_hook_find_func_data
-       g_hook_first_valid
-       g_hook_free
-       g_hook_get
-       g_hook_insert_before
-       g_hook_insert_sorted
-       g_hook_list_clear
-       g_hook_list_init
-       g_hook_list_invoke
-       g_hook_list_invoke_check
-       g_hook_list_marshal
-       g_hook_list_marshal_check
-       g_hook_next_valid
-       g_hook_prepend
-       g_hook_ref
-       g_hook_unref
-       g_iconv
-       g_iconv_close
-       g_iconv_open
-       g_idle_add
-       g_idle_add_full
-       g_idle_funcs
-       g_idle_remove_by_data
-       g_idle_source_new
-       g_int_equal
-       g_int_hash
-       g_io_add_watch
-       g_io_add_watch_full
-       g_io_channel_close
-       g_io_channel_error_from_errno
-       g_io_channel_error_quark
-       g_io_channel_flush
-       g_io_channel_get_buffer_condition
-       g_io_channel_get_buffer_size
-       g_io_channel_get_buffered
-       g_io_channel_get_close_on_unref
-       g_io_channel_get_encoding
-       g_io_channel_get_flags
-       g_io_channel_get_line_term
-       g_io_channel_init
-       g_io_channel_new_file
-       g_io_channel_read
-       g_io_channel_read_chars
-       g_io_channel_read_line
-       g_io_channel_read_line_string
-       g_io_channel_read_to_end
-       g_io_channel_read_unichar
-       g_io_channel_ref
-       g_io_channel_seek
-       g_io_channel_seek_position
-       g_io_channel_set_buffer_size
-       g_io_channel_set_buffered
-       g_io_channel_set_close_on_unref
-       g_io_channel_set_encoding
-       g_io_channel_set_flags
-       g_io_channel_set_line_term
-       g_io_channel_shutdown
-       g_io_channel_unix_get_fd
-       g_io_channel_unix_new
-       g_io_channel_unref
-       g_io_channel_win32_get_fd
-       g_io_channel_win32_make_pollfd
-       g_io_channel_win32_new_fd
-       g_io_channel_win32_new_messages
-       g_io_channel_win32_new_socket
-       g_io_channel_win32_new_stream_socket
-       g_io_channel_win32_poll
-       g_io_channel_win32_set_debug
-       g_io_channel_write
-       g_io_channel_write_chars
-       g_io_channel_write_unichar
-       g_io_create_watch
-       g_io_watch_funcs
-       g_list_alloc
-       g_list_append
-       g_list_concat
-       g_list_copy
-       g_list_delete_link
-       g_list_find
-       g_list_find_custom
-       g_list_first
-       g_list_foreach
-       g_list_free
-       g_list_free_1
-       g_list_index
-       g_list_insert
-       g_list_insert_before
-       g_list_insert_sorted
-       g_list_last
-       g_list_length
-       g_list_nth
-       g_list_nth_data
-       g_list_nth_prev
-       g_list_pop_allocator
-       g_list_position
-       g_list_prepend
-       g_list_push_allocator
-       g_list_remove
-       g_list_remove_all
-       g_list_remove_link
-       g_list_reverse
-       g_list_sort
-       g_list_sort_with_data
-       g_locale_from_utf8
-       g_locale_to_utf8
-       g_log
-       g_log_default_handler
-       g_log_remove_handler
-       g_log_set_always_fatal
-       g_log_set_default_handler
-       g_log_set_fatal_mask
-       g_log_set_handler
-       g_logv
-       g_main_context_acquire
-       g_main_context_add_poll
-       g_main_context_check
-       g_main_context_default
-       g_main_context_dispatch
-       g_main_context_find_source_by_funcs_user_data
-       g_main_context_find_source_by_id
-       g_main_context_find_source_by_user_data
-       g_main_context_get_poll_func
-       g_main_context_iteration
-       g_main_context_new
-       g_main_context_pending
-       g_main_context_prepare
-       g_main_context_query
-       g_main_context_ref
-       g_main_context_release
-       g_main_context_remove_poll
-       g_main_context_set_poll_func
-       g_main_context_unref
-       g_main_context_wait
-       g_main_context_wakeup
-       g_main_depth
-       g_main_loop_get_context
-       g_main_loop_is_running
-       g_main_loop_new
-       g_main_loop_quit
-       g_main_loop_ref
-       g_main_loop_run
-       g_main_loop_unref
-       g_malloc
-       g_malloc0
-       g_markup_error_quark
-       g_markup_escape_text
-       g_markup_parse_context_end_parse
-       g_markup_parse_context_free
-       g_markup_parse_context_get_element
-       g_markup_parse_context_get_position
-       g_markup_parse_context_new
-       g_markup_parse_context_parse
-       g_markup_printf_escaped
-       g_markup_vprintf_escaped
-       g_mem_chunk_alloc
-       g_mem_chunk_alloc0
-       g_mem_chunk_clean
-       g_mem_chunk_destroy
-       g_mem_chunk_free
-       g_mem_chunk_info
-       g_mem_chunk_new
-       g_mem_chunk_print
-       g_mem_chunk_reset
-       g_mem_is_system_malloc
-       g_mem_profile
-       g_mem_set_vtable
-       g_memdup
-       g_mkstemp
-       g_node_child_index
-       g_node_child_position
-       g_node_children_foreach
-       g_node_copy
-       g_node_copy_deep
-       g_node_depth
-       g_node_destroy
-       g_node_find
-       g_node_find_child
-       g_node_first_sibling
-       g_node_get_root
-       g_node_insert
-       g_node_insert_after
-       g_node_insert_before
-       g_node_is_ancestor
-       g_node_last_child
-       g_node_last_sibling
-       g_node_max_height
-       g_node_n_children
-       g_node_n_nodes
-       g_node_new
-       g_node_nth_child
-       g_node_pop_allocator
-       g_node_prepend
-       g_node_push_allocator
-       g_node_reverse_children
-       g_node_traverse
-       g_node_unlink
-       g_nullify_pointer
-       g_on_error_query
-       g_on_error_stack_trace
-       g_once_impl
-       g_option_context_add_group
-       g_option_context_add_main_entries
-       g_option_context_error_quark
-       g_option_context_free
-       g_option_context_get_help_enabled
-       g_option_context_get_ignore_unknown_options
-       g_option_context_get_main_group
-       g_option_context_new
-       g_option_context_parse
-       g_option_context_set_help_enabled
-       g_option_context_set_ignore_unknown_options
-       g_option_context_set_main_group
-       g_option_group_add_entries
-       g_option_group_free
-       g_option_group_new
-       g_option_group_set_error_hook
-       g_option_group_set_parse_hooks
-       g_option_group_set_translate_func
-       g_option_group_set_translation_domain
-       g_parse_debug_string
-       g_path_get_basename
-       g_path_get_dirname
-       g_path_is_absolute
-       g_path_skip_root
-       g_pattern_match
-       g_pattern_match_simple
-       g_pattern_match_string
-       g_pattern_spec_equal
-       g_pattern_spec_free
-       g_pattern_spec_new
-       g_print
-       g_printerr
-       g_printf
-       g_printf_string_upper_bound
-       g_propagate_error
-       g_ptr_array_add
-       g_ptr_array_foreach
-       g_ptr_array_free
-       g_ptr_array_new
-       g_ptr_array_remove
-       g_ptr_array_remove_fast
-       g_ptr_array_remove_index
-       g_ptr_array_remove_index_fast
-       g_ptr_array_remove_range
-       g_ptr_array_set_size
-       g_ptr_array_sized_new
-       g_ptr_array_sort
-       g_ptr_array_sort_with_data
-       g_qsort_with_data
-       g_quark_from_static_string
-       g_quark_from_string
-       g_quark_to_string
-       g_quark_try_string
-       g_queue_copy
-       g_queue_delete_link
-       g_queue_find
-       g_queue_find_custom
-       g_queue_foreach
-       g_queue_free
-       g_queue_get_length
-       g_queue_index
-       g_queue_insert_after
-       g_queue_insert_before
-       g_queue_insert_sorted
-       g_queue_is_empty
-       g_queue_link_index
-       g_queue_new
-       g_queue_peek_head
-       g_queue_peek_head_link
-       g_queue_peek_nth
-       g_queue_peek_nth_link
-       g_queue_peek_tail
-       g_queue_peek_tail_link
-       g_queue_pop_head
-       g_queue_pop_head_link
-       g_queue_pop_nth
-       g_queue_pop_nth_link
-       g_queue_pop_tail
-       g_queue_pop_tail_link
-       g_queue_push_head
-       g_queue_push_head_link
-       g_queue_push_nth
-       g_queue_push_nth_link
-       g_queue_push_tail
-       g_queue_push_tail_link
-       g_queue_remove
-       g_queue_remove_all
-       g_queue_reverse
-       g_queue_sort
-       g_queue_unlink
-       g_rand_copy
-       g_rand_double
-       g_rand_double_range
-       g_rand_free
-       g_rand_int
-       g_rand_int_range
-       g_rand_new
-       g_rand_new_with_seed
-       g_rand_new_with_seed_array
-       g_rand_set_seed
-       g_rand_set_seed_array
-       g_random_double
-       g_random_double_range
-       g_random_int
-       g_random_int_range
-       g_random_set_seed
-       g_realloc
-       g_relation_count
-       g_relation_delete
-       g_relation_destroy
-       g_relation_exists
-       g_relation_index
-       g_relation_insert
-       g_relation_new
-       g_relation_print
-       g_relation_select
-       g_scanner_cur_line
-       g_scanner_cur_position
-       g_scanner_cur_token
-       g_scanner_cur_value
-       g_scanner_destroy
-       g_scanner_eof
-       g_scanner_error
-       g_scanner_get_next_token
-       g_scanner_input_file
-       g_scanner_input_text
-       g_scanner_lookup_symbol
-       g_scanner_new
-       g_scanner_peek_next_token
-       g_scanner_scope_add_symbol
-       g_scanner_scope_foreach_symbol
-       g_scanner_scope_lookup_symbol
-       g_scanner_scope_remove_symbol
-       g_scanner_set_scope
-       g_scanner_sync_file_offset
-       g_scanner_unexp_token
-       g_scanner_warn
-       g_set_application_name
-       g_set_error
-       g_set_prgname
-       g_set_print_handler
-       g_set_printerr_handler
-       g_setenv
-       g_shell_error_quark
-       g_shell_parse_argv
-       g_shell_quote
-       g_shell_unquote
-       g_slist_alloc
-       g_slist_append
-       g_slist_concat
-       g_slist_copy
-       g_slist_delete_link
-       g_slist_find
-       g_slist_find_custom
-       g_slist_foreach
-       g_slist_free
-       g_slist_free_1
-       g_slist_index
-       g_slist_insert
-       g_slist_insert_before
-       g_slist_insert_sorted
-       g_slist_last
-       g_slist_length
-       g_slist_nth
-       g_slist_nth_data
-       g_slist_pop_allocator
-       g_slist_position
-       g_slist_prepend
-       g_slist_push_allocator
-       g_slist_remove
-       g_slist_remove_all
-       g_slist_remove_link
-       g_slist_reverse
-       g_slist_sort
-       g_slist_sort_with_data
-       g_snprintf
-       g_source_add_poll
-       g_source_attach
-       g_source_destroy
-       g_source_get_can_recurse
-       g_source_get_context
-       g_source_get_current_time
-       g_source_get_id
-       g_source_get_priority
-       g_source_new
-       g_source_ref
-       g_source_remove
-       g_source_remove_by_funcs_user_data
-       g_source_remove_by_user_data
-       g_source_remove_poll
-       g_source_set_callback
-       g_source_set_callback_indirect
-       g_source_set_can_recurse
-       g_source_set_priority
-       g_source_unref
-       g_spaced_primes_closest
-       g_spawn_async
-       g_spawn_async_with_pipes
-       g_spawn_close_pid
-       g_spawn_command_line_async
-       g_spawn_command_line_sync
-       g_spawn_error_quark
-       g_spawn_sync
-       g_sprintf
-       g_static_mutex_free
-       g_static_mutex_get_mutex_impl
-       g_static_mutex_init
-       g_static_private_free
-       g_static_private_get
-       g_static_private_init
-       g_static_private_set
-       g_static_rec_mutex_free
-       g_static_rec_mutex_init
-       g_static_rec_mutex_lock
-       g_static_rec_mutex_lock_full
-       g_static_rec_mutex_trylock
-       g_static_rec_mutex_unlock
-       g_static_rec_mutex_unlock_full
-       g_static_rw_lock_free
-       g_static_rw_lock_init
-       g_static_rw_lock_reader_lock
-       g_static_rw_lock_reader_trylock
-       g_static_rw_lock_reader_unlock
-       g_static_rw_lock_writer_lock
-       g_static_rw_lock_writer_trylock
-       g_static_rw_lock_writer_unlock
-       g_stpcpy
-       g_str_equal
-       g_str_has_prefix
-       g_str_has_suffix
-       g_str_hash
-       g_strcanon
-       g_strcasecmp
-       g_strchomp
-       g_strchug
-       g_strcompress
-       g_strconcat
-       g_strdelimit
-       g_strdown
-       g_strdup
-       g_strdup_printf
-       g_strdup_vprintf
-       g_strdupv
-       g_strerror
-       g_strescape
-       g_strfreev
-       g_string_append
-       g_string_append_c
-       g_string_append_len
-       g_string_append_printf
-       g_string_append_unichar
-       g_string_ascii_down
-       g_string_ascii_up
-       g_string_assign
-       g_string_chunk_free
-       g_string_chunk_insert
-       g_string_chunk_insert_const
-       g_string_chunk_insert_len
-       g_string_chunk_new
-       g_string_down
-       g_string_equal
-       g_string_erase
-       g_string_free
-       g_string_hash
-       g_string_insert
-       g_string_insert_c
-       g_string_insert_len
-       g_string_insert_unichar
-       g_string_new
-       g_string_new_len
-       g_string_prepend
-       g_string_prepend_c
-       g_string_prepend_len
-       g_string_prepend_unichar
-       g_string_printf
-       g_string_set_size
-       g_string_sized_new
-       g_string_truncate
-       g_string_up
-       g_strip_context
-       g_strjoin
-       g_strjoinv
-       g_strlcat
-       g_strlcpy
-       g_strncasecmp
-       g_strndup
-       g_strnfill
-       g_strreverse
-       g_strrstr
-       g_strrstr_len
-       g_strsignal
-       g_strsplit
-       g_strsplit_set
-       g_strstr_len
-       g_strtod
-       g_strup
-       g_thread_create_full
-       g_thread_error_quark
-       g_thread_exit
-       g_thread_functions_for_glib_use
-       g_thread_init_glib
-       g_thread_join
-       g_thread_pool_free
-       g_thread_pool_get_max_threads
-       g_thread_pool_get_max_unused_threads
-       g_thread_pool_get_num_threads
-       g_thread_pool_get_num_unused_threads
-       g_thread_pool_new
-       g_thread_pool_push
-       g_thread_pool_set_max_threads
-       g_thread_pool_set_max_unused_threads
-       g_thread_pool_stop_unused_threads
-       g_thread_pool_unprocessed
-       g_thread_self
-       g_thread_set_priority
-       g_thread_use_default_impl
-       g_threads_got_initialized
-       g_time_val_add
-       g_timeout_add
-       g_timeout_add_full
-       g_timeout_funcs
-       g_timeout_source_new
-       g_timer_continue
-       g_timer_destroy
-       g_timer_elapsed
-       g_timer_new
-       g_timer_reset
-       g_timer_start
-       g_timer_stop
-       g_trash_stack_height
-       g_trash_stack_peek
-       g_trash_stack_pop
-       g_trash_stack_push
-       g_tree_destroy
-       g_tree_foreach
-       g_tree_height
-       g_tree_insert
-       g_tree_lookup
-       g_tree_lookup_extended
-       g_tree_new
-       g_tree_new_full
-       g_tree_new_with_data
-       g_tree_nnodes
-       g_tree_remove
-       g_tree_replace
-       g_tree_search
-       g_tree_steal
-       g_tree_traverse
-       g_try_malloc
-       g_try_realloc
-       g_tuples_destroy
-       g_tuples_index
-       g_ucs4_to_utf16
-       g_ucs4_to_utf8
-       g_unichar_break_type
-       g_unichar_digit_value
-       g_unichar_get_mirror_char
-       g_unichar_isalnum
-       g_unichar_isalpha
-       g_unichar_iscntrl
-       g_unichar_isdefined
-       g_unichar_isdigit
-       g_unichar_isgraph
-       g_unichar_islower
-       g_unichar_isprint
-       g_unichar_ispunct
-       g_unichar_isspace
-       g_unichar_istitle
-       g_unichar_isupper
-       g_unichar_iswide
-       g_unichar_isxdigit
-       g_unichar_to_utf8
-       g_unichar_tolower
-       g_unichar_totitle
-       g_unichar_toupper
-       g_unichar_type
-       g_unichar_validate
-       g_unichar_xdigit_value
-       g_unicode_canonical_decomposition
-       g_unicode_canonical_ordering
-       g_unsetenv
-       g_usleep
-       g_utf16_to_ucs4
-       g_utf16_to_utf8
-       g_utf8_casefold
-       g_utf8_collate
-       g_utf8_collate_key
-       g_utf8_find_next_char
-       g_utf8_find_prev_char
-       g_utf8_get_char
-       g_utf8_get_char_validated
-       g_utf8_normalize
-       g_utf8_offset_to_pointer
-       g_utf8_pointer_to_offset
-       g_utf8_prev_char
-       g_utf8_skip
-       g_utf8_strchr
-       g_utf8_strdown
-       g_utf8_strlen
-       g_utf8_strncpy
-       g_utf8_strrchr
-       g_utf8_strreverse
-       g_utf8_strup
-       g_utf8_to_ucs4
-       g_utf8_to_ucs4_fast
-       g_utf8_to_utf16
-       g_utf8_validate
-       g_vasprintf
-       g_vfprintf
-       g_vprintf
-       g_vsnprintf
-       g_vsprintf
-       g_win32_error_message
-       g_win32_ftruncate
-       g_win32_get_package_installation_directory
-       g_win32_get_package_installation_subdirectory
-       g_win32_get_windows_version
-       g_win32_getlocale
-       glib_binary_age
-       glib_check_version
-       glib_interface_age
-       glib_major_version
-       glib_mem_profiler_table
-       glib_micro_version
-       glib_minor_version
diff --git a/glib/glib.symbols b/glib/glib.symbols
new file mode 100644 (file)
index 0000000..216c817
--- /dev/null
@@ -0,0 +1,849 @@
+g_allocator_free
+g_allocator_new
+g_array_append_vals
+g_array_free
+g_array_insert_vals
+g_array_new
+g_array_prepend_vals
+g_array_remove_index
+g_array_remove_index_fast
+g_array_remove_range
+g_array_set_size
+g_array_sized_new
+g_array_sort
+g_array_sort_with_data
+g_ascii_digit_value
+g_ascii_dtostr
+g_ascii_formatd
+g_ascii_strcasecmp
+g_ascii_strdown
+g_ascii_strncasecmp
+g_ascii_strtod
+g_ascii_strtoull
+g_ascii_strup
+g_ascii_tolower
+g_ascii_toupper
+g_ascii_xdigit_value
+g_async_queue_length
+g_async_queue_length_unlocked
+g_async_queue_lock
+g_async_queue_new
+g_async_queue_pop
+g_async_queue_pop_unlocked
+g_async_queue_push
+g_async_queue_push_unlocked
+g_async_queue_ref
+g_async_queue_ref_unlocked
+g_async_queue_timed_pop
+g_async_queue_timed_pop_unlocked
+g_async_queue_try_pop
+g_async_queue_try_pop_unlocked
+g_async_queue_unlock
+g_async_queue_unref
+g_async_queue_unref_and_unlock
+g_atexit
+g_atomic_int_add
+g_atomic_int_compare_and_exchange
+g_atomic_int_exchange_and_add
+g_atomic_pointer_compare_and_exchange
+#ifdef G_ATOMIC_OP_MEMORY_BARRIER_NEEDED
+g_atomic_int_get
+g_atomic_pointer_get
+#endif
+g_basename
+g_blow_chunks
+g_build_filename
+g_build_path
+g_byte_array_append
+g_byte_array_free
+g_byte_array_new
+g_byte_array_prepend
+g_byte_array_remove_index
+g_byte_array_remove_index_fast
+g_byte_array_remove_range
+g_byte_array_set_size
+g_byte_array_sized_new
+g_byte_array_sort
+g_byte_array_sort_with_data
+g_cache_destroy
+g_cache_insert
+g_cache_key_foreach
+g_cache_new
+g_cache_remove
+g_cache_value_foreach
+g_child_watch_add
+g_child_watch_add_full
+g_child_watch_source_new
+g_clear_error
+g_completion_add_items
+g_completion_clear_items
+g_completion_complete
+g_completion_complete_utf8
+g_completion_free
+g_completion_new
+g_completion_remove_items
+g_completion_set_compare
+g_convert
+g_convert_error_quark
+g_convert_with_fallback
+g_convert_with_iconv
+g_datalist_clear
+g_datalist_foreach
+g_datalist_id_get_data
+g_datalist_id_remove_no_notify
+g_datalist_id_set_data_full
+g_datalist_init
+g_dataset_destroy
+g_dataset_foreach
+g_dataset_id_get_data
+g_dataset_id_remove_no_notify
+g_dataset_id_set_data_full
+g_date_add_days
+g_date_add_months
+g_date_add_years
+g_date_clamp
+g_date_clear
+g_date_compare
+g_date_days_between
+g_date_free
+g_date_get_day
+g_date_get_day_of_year
+g_date_get_days_in_month
+g_date_get_iso8601_week_of_year
+g_date_get_julian
+g_date_get_monday_week_of_year
+g_date_get_monday_weeks_in_year
+g_date_get_month
+g_date_get_sunday_week_of_year
+g_date_get_sunday_weeks_in_year
+g_date_get_weekday
+g_date_get_year
+g_date_is_first_of_month
+g_date_is_last_of_month
+g_date_is_leap_year
+g_date_new
+g_date_new_dmy
+g_date_new_julian
+g_date_order
+g_date_set_day
+g_date_set_dmy
+g_date_set_julian
+g_date_set_month
+g_date_set_parse
+g_date_set_time
+g_date_set_year
+g_date_strftime
+g_date_subtract_days
+g_date_subtract_months
+g_date_subtract_years
+g_date_to_struct_tm
+g_date_valid
+g_date_valid_day
+g_date_valid_dmy
+g_date_valid_julian
+g_date_valid_month
+g_date_valid_weekday
+g_date_valid_year
+g_dir_close
+g_direct_equal
+g_direct_hash
+g_dir_open
+g_dir_read_name
+g_dir_rewind
+g_error_copy
+g_error_free
+g_error_matches
+g_error_new
+g_error_new_literal
+g_file_error_from_errno
+g_file_error_quark
+g_file_get_contents
+g_filename_from_uri
+g_filename_from_utf8
+g_filename_to_uri
+g_filename_to_utf8
+g_file_open_tmp
+g_file_read_link
+g_file_test
+g_find_program_in_path
+g_fprintf
+g_free
+g_get_application_name
+g_get_charset
+g_get_current_dir
+g_get_current_time
+g_getenv
+g_get_home_dir
+g_get_language_names
+g_get_prgname
+g_get_real_name
+g_get_system_config_dirs
+g_get_system_data_dirs
+g_get_tmp_dir
+g_get_user_cache_dir
+g_get_user_config_dir
+g_get_user_data_dir
+g_get_user_name
+g_hash_table_destroy
+g_hash_table_find
+g_hash_table_foreach
+g_hash_table_foreach_remove
+g_hash_table_foreach_steal
+g_hash_table_insert
+g_hash_table_lookup
+g_hash_table_lookup_extended
+g_hash_table_new
+g_hash_table_new_full
+g_hash_table_remove
+g_hash_table_replace
+g_hash_table_size
+g_hash_table_steal
+g_hook_alloc
+g_hook_compare_ids
+g_hook_destroy
+g_hook_destroy_link
+g_hook_find
+g_hook_find_data
+g_hook_find_func
+g_hook_find_func_data
+g_hook_first_valid
+g_hook_free
+g_hook_get
+g_hook_insert_before
+g_hook_insert_sorted
+g_hook_list_clear
+g_hook_list_init
+g_hook_list_invoke
+g_hook_list_invoke_check
+g_hook_list_marshal
+g_hook_list_marshal_check
+g_hook_next_valid
+g_hook_prepend
+g_hook_ref
+g_hook_unref
+g_iconv
+g_iconv_close
+g_iconv_open
+g_idle_add
+g_idle_add_full
+g_idle_remove_by_data
+g_idle_source_new
+g_int_equal
+g_int_hash
+g_io_add_watch
+g_io_add_watch_full
+g_io_channel_close
+g_io_channel_error_from_errno
+g_io_channel_error_quark
+g_io_channel_flush
+g_io_channel_get_buffer_condition
+g_io_channel_get_buffered
+g_io_channel_get_buffer_size
+g_io_channel_get_close_on_unref
+g_io_channel_get_encoding
+g_io_channel_get_flags
+g_io_channel_get_line_term
+g_io_channel_init
+g_io_channel_new_file
+g_io_channel_read
+g_io_channel_read_chars
+g_io_channel_read_line
+g_io_channel_read_line_string
+g_io_channel_read_to_end
+g_io_channel_read_unichar
+g_io_channel_ref
+g_io_channel_seek
+g_io_channel_seek_position
+g_io_channel_set_buffered
+g_io_channel_set_buffer_size
+g_io_channel_set_close_on_unref
+g_io_channel_set_encoding
+g_io_channel_set_flags
+g_io_channel_set_line_term
+g_io_channel_shutdown
+g_io_channel_unix_get_fd
+g_io_channel_unix_new
+g_io_channel_unref
+#ifdef G_OS_WIN32
+g_io_channel_win32_get_fd
+g_io_channel_win32_make_pollfd
+g_io_channel_win32_new_fd
+g_io_channel_win32_new_messages
+g_io_channel_win32_new_socket
+g_io_channel_win32_new_stream_socket
+g_io_channel_win32_poll
+g_io_channel_win32_set_debug
+#endif
+g_io_channel_write
+g_io_channel_write_chars
+g_io_channel_write_unichar
+g_io_create_watch
+glib_check_version
+g_list_alloc
+g_list_append
+g_list_concat
+g_list_copy
+g_list_delete_link
+g_list_find
+g_list_find_custom
+g_list_first
+g_list_foreach
+g_list_free
+g_list_free_1
+g_list_index
+g_list_insert
+g_list_insert_before
+g_list_insert_sorted
+g_list_last
+g_list_length
+g_list_nth
+g_list_nth_data
+g_list_nth_prev
+g_list_pop_allocator
+g_list_position
+g_list_prepend
+g_list_push_allocator
+g_list_remove
+g_list_remove_all
+g_list_remove_link
+g_list_reverse
+g_list_sort
+g_list_sort_with_data
+g_locale_from_utf8
+g_locale_to_utf8
+g_log
+g_log_default_handler
+g_log_remove_handler
+g_log_set_always_fatal
+g_log_set_default_handler
+g_log_set_fatal_mask
+g_log_set_handler
+g_logv
+g_main_context_acquire
+g_main_context_add_poll
+g_main_context_check
+g_main_context_default
+g_main_context_dispatch
+g_main_context_find_source_by_funcs_user_data
+g_main_context_find_source_by_id
+g_main_context_find_source_by_user_data
+g_main_context_get_poll_func
+g_main_context_iteration
+g_main_context_new
+g_main_context_pending
+g_main_context_prepare
+g_main_context_query
+g_main_context_ref
+g_main_context_release
+g_main_context_remove_poll
+g_main_context_set_poll_func
+g_main_context_unref
+g_main_context_wait
+g_main_context_wakeup
+g_main_depth
+g_main_loop_get_context
+g_main_loop_is_running
+g_main_loop_new
+g_main_loop_quit
+g_main_loop_ref
+g_main_loop_run
+g_main_loop_unref
+g_malloc
+g_malloc0
+g_markup_error_quark
+g_markup_escape_text
+g_markup_parse_context_end_parse
+g_markup_parse_context_free
+g_markup_parse_context_get_element
+g_markup_parse_context_get_position
+g_markup_parse_context_new
+g_markup_parse_context_parse
+g_markup_printf_escaped
+g_markup_vprintf_escaped
+g_mem_chunk_alloc
+g_mem_chunk_alloc0
+g_mem_chunk_clean
+g_mem_chunk_destroy
+g_mem_chunk_free
+g_mem_chunk_info
+g_mem_chunk_new
+g_mem_chunk_print
+g_mem_chunk_reset
+g_memdup
+g_mem_is_system_malloc
+g_mem_profile
+g_mem_set_vtable
+g_mkstemp
+g_node_child_index
+g_node_child_position
+g_node_children_foreach
+g_node_copy
+g_node_copy_deep
+g_node_depth
+g_node_destroy
+g_node_find
+g_node_find_child
+g_node_first_sibling
+g_node_get_root
+g_node_insert
+g_node_insert_after
+g_node_insert_before
+g_node_is_ancestor
+g_node_last_child
+g_node_last_sibling
+g_node_max_height
+g_node_n_children
+g_node_new
+g_node_n_nodes
+g_node_nth_child
+g_node_pop_allocator
+g_node_prepend
+g_node_push_allocator
+g_node_reverse_children
+g_node_traverse
+g_node_unlink
+g_nullify_pointer
+g_once_impl
+g_on_error_query
+g_on_error_stack_trace
+g_option_context_add_group
+g_option_context_add_main_entries
+g_option_context_error_quark
+g_option_context_free
+g_option_context_get_help_enabled
+g_option_context_get_ignore_unknown_options
+g_option_context_get_main_group
+g_option_context_new
+g_option_context_parse
+g_option_context_set_help_enabled
+g_option_context_set_ignore_unknown_options
+g_option_context_set_main_group
+g_option_group_add_entries
+g_option_group_free
+g_option_group_new
+g_option_group_set_error_hook
+g_option_group_set_parse_hooks
+g_option_group_set_translate_func
+g_option_group_set_translation_domain
+g_parse_debug_string
+g_path_get_basename
+g_path_get_dirname
+g_path_is_absolute
+g_path_skip_root
+g_pattern_match
+g_pattern_match_simple
+g_pattern_match_string
+g_pattern_spec_equal
+g_pattern_spec_free
+g_pattern_spec_new
+g_print
+g_printerr
+g_printf
+g_printf_string_upper_bound
+g_propagate_error
+g_ptr_array_add
+g_ptr_array_foreach
+g_ptr_array_free
+g_ptr_array_new
+g_ptr_array_remove
+g_ptr_array_remove_fast
+g_ptr_array_remove_index
+g_ptr_array_remove_index_fast
+g_ptr_array_remove_range
+g_ptr_array_set_size
+g_ptr_array_sized_new
+g_ptr_array_sort
+g_ptr_array_sort_with_data
+g_qsort_with_data
+g_quark_from_static_string
+g_quark_from_string
+g_quark_to_string
+g_quark_try_string
+g_queue_copy
+g_queue_delete_link
+g_queue_find
+g_queue_find_custom
+g_queue_foreach
+g_queue_free
+g_queue_get_length
+g_queue_index
+g_queue_insert_after
+g_queue_insert_before
+g_queue_insert_sorted
+g_queue_is_empty
+g_queue_link_index
+g_queue_new
+g_queue_peek_head
+g_queue_peek_head_link
+g_queue_peek_nth
+g_queue_peek_nth_link
+g_queue_peek_tail
+g_queue_peek_tail_link
+g_queue_pop_head
+g_queue_pop_head_link
+g_queue_pop_nth
+g_queue_pop_nth_link
+g_queue_pop_tail
+g_queue_pop_tail_link
+g_queue_push_head
+g_queue_push_head_link
+g_queue_push_nth
+g_queue_push_nth_link
+g_queue_push_tail
+g_queue_push_tail_link
+g_queue_remove
+g_queue_remove_all
+g_queue_reverse
+g_queue_sort
+g_queue_unlink
+g_rand_copy
+g_rand_double
+g_rand_double_range
+g_rand_free
+g_rand_int
+g_rand_int_range
+g_rand_new
+g_rand_new_with_seed
+g_rand_new_with_seed_array
+g_random_double
+g_random_double_range
+g_random_int
+g_random_int_range
+g_random_set_seed
+g_rand_set_seed
+g_rand_set_seed_array
+g_realloc
+g_relation_count
+g_relation_delete
+g_relation_destroy
+g_relation_exists
+g_relation_index
+g_relation_insert
+g_relation_new
+g_relation_print
+g_relation_select
+g_return_if_fail_warning
+g_scanner_cur_line
+g_scanner_cur_position
+g_scanner_cur_token
+g_scanner_cur_value
+g_scanner_destroy
+g_scanner_eof
+g_scanner_error
+g_scanner_get_next_token
+g_scanner_input_file
+g_scanner_input_text
+g_scanner_lookup_symbol
+g_scanner_new
+g_scanner_peek_next_token
+g_scanner_scope_add_symbol
+g_scanner_scope_foreach_symbol
+g_scanner_scope_lookup_symbol
+g_scanner_scope_remove_symbol
+g_scanner_set_scope
+g_scanner_sync_file_offset
+g_scanner_unexp_token
+g_scanner_warn
+g_set_application_name
+g_setenv
+g_set_error
+g_set_prgname
+g_set_printerr_handler
+g_set_print_handler
+g_shell_error_quark
+g_shell_parse_argv
+g_shell_quote
+g_shell_unquote
+g_slist_alloc
+g_slist_append
+g_slist_concat
+g_slist_copy
+g_slist_delete_link
+g_slist_find
+g_slist_find_custom
+g_slist_foreach
+g_slist_free
+g_slist_free_1
+g_slist_index
+g_slist_insert
+g_slist_insert_before
+g_slist_insert_sorted
+g_slist_last
+g_slist_length
+g_slist_nth
+g_slist_nth_data
+g_slist_pop_allocator
+g_slist_position
+g_slist_prepend
+g_slist_push_allocator
+g_slist_remove
+g_slist_remove_all
+g_slist_remove_link
+g_slist_reverse
+g_slist_sort
+g_slist_sort_with_data
+g_snprintf
+g_source_add_poll
+g_source_attach
+g_source_destroy
+g_source_get_can_recurse
+g_source_get_context
+g_source_get_current_time
+g_source_get_id
+g_source_get_priority
+g_source_new
+g_source_ref
+g_source_remove
+g_source_remove_by_funcs_user_data
+g_source_remove_by_user_data
+g_source_remove_poll
+g_source_set_callback
+g_source_set_callback_indirect
+g_source_set_can_recurse
+g_source_set_priority
+g_source_unref
+g_spaced_primes_closest
+g_spawn_async
+g_spawn_async_with_pipes
+g_spawn_close_pid
+g_spawn_command_line_async
+g_spawn_command_line_sync
+g_spawn_error_quark
+g_spawn_sync
+g_sprintf
+g_static_mutex_free
+g_static_mutex_get_mutex_impl
+g_static_mutex_init
+g_static_private_free
+g_static_private_get
+g_static_private_init
+g_static_private_set
+g_static_rec_mutex_free
+g_static_rec_mutex_init
+g_static_rec_mutex_lock
+g_static_rec_mutex_lock_full
+g_static_rec_mutex_trylock
+g_static_rec_mutex_unlock
+g_static_rec_mutex_unlock_full
+g_static_rw_lock_free
+g_static_rw_lock_init
+g_static_rw_lock_reader_lock
+g_static_rw_lock_reader_trylock
+g_static_rw_lock_reader_unlock
+g_static_rw_lock_writer_lock
+g_static_rw_lock_writer_trylock
+g_static_rw_lock_writer_unlock
+g_stpcpy
+g_strcanon
+g_strcasecmp
+g_strchomp
+g_strchug
+g_strcompress
+g_strconcat
+g_strdelimit
+g_strdown
+g_strdup
+g_strdup_printf
+g_strdupv
+g_strdup_vprintf
+g_str_equal
+g_strerror
+g_strescape
+g_strfreev
+g_str_hash
+g_str_has_prefix
+g_str_has_suffix
+g_string_append
+g_string_append_len
+g_string_append_printf
+g_string_append_unichar
+g_string_ascii_down
+g_string_ascii_up
+g_string_assign
+g_string_chunk_free
+g_string_chunk_insert
+g_string_chunk_insert_const
+g_string_chunk_insert_len
+g_string_chunk_new
+g_string_down
+g_string_equal
+g_string_erase
+g_string_free
+g_string_hash
+g_string_insert
+g_string_insert_c
+g_string_insert_len
+g_string_insert_unichar
+g_string_new
+g_string_new_len
+g_string_prepend
+g_string_prepend_c
+g_string_prepend_len
+g_string_prepend_unichar
+g_string_printf
+g_string_set_size
+g_string_sized_new
+g_string_truncate
+g_string_up
+g_strip_context
+g_strjoin
+g_strjoinv
+g_strlcat
+g_strlcpy
+g_strncasecmp
+g_strndup
+g_strnfill
+g_strreverse
+g_strrstr
+g_strrstr_len
+g_strsignal
+g_strsplit
+g_strsplit_set
+g_strstr_len
+g_strtod
+g_strup
+g_strv_length
+g_thread_create_full
+g_thread_error_quark
+g_thread_exit
+g_thread_join
+g_thread_pool_free
+g_thread_pool_get_max_threads
+g_thread_pool_get_max_unused_threads
+g_thread_pool_get_num_threads
+g_thread_pool_get_num_unused_threads
+g_thread_pool_new
+g_thread_pool_push
+g_thread_pool_set_max_threads
+g_thread_pool_set_max_unused_threads
+g_thread_pool_stop_unused_threads
+g_thread_pool_unprocessed
+g_thread_self
+g_thread_set_priority
+g_timeout_add
+g_timeout_add_full
+g_timeout_source_new
+g_timer_continue
+g_timer_destroy
+g_timer_elapsed
+g_timer_new
+g_timer_reset
+g_timer_start
+g_timer_stop
+g_time_val_add
+g_tree_destroy
+g_tree_foreach
+g_tree_height
+g_tree_insert
+g_tree_lookup
+g_tree_lookup_extended
+g_tree_new
+g_tree_new_full
+g_tree_new_with_data
+g_tree_nnodes
+g_tree_remove
+g_tree_replace
+g_tree_search
+g_tree_steal
+g_tree_traverse
+g_try_malloc
+g_try_realloc
+g_tuples_destroy
+g_tuples_index
+g_ucs4_to_utf16
+g_ucs4_to_utf8
+g_unichar_break_type
+g_unichar_digit_value
+g_unichar_get_mirror_char
+g_unichar_isalnum
+g_unichar_isalpha
+g_unichar_iscntrl
+g_unichar_isdefined
+g_unichar_isdigit
+g_unichar_isgraph
+g_unichar_islower
+g_unichar_isprint
+g_unichar_ispunct
+g_unichar_isspace
+g_unichar_istitle
+g_unichar_isupper
+g_unichar_iswide
+g_unichar_isxdigit
+g_unichar_tolower
+g_unichar_totitle
+g_unichar_toupper
+g_unichar_to_utf8
+g_unichar_type
+g_unichar_validate
+g_unichar_xdigit_value
+g_unicode_canonical_decomposition
+g_unicode_canonical_ordering
+g_unsetenv
+g_usleep
+g_utf16_to_ucs4
+g_utf16_to_utf8
+g_utf8_casefold
+g_utf8_collate
+g_utf8_collate_key
+g_utf8_find_next_char
+g_utf8_find_prev_char
+g_utf8_get_char
+g_utf8_get_char_validated
+g_utf8_normalize
+g_utf8_offset_to_pointer
+g_utf8_pointer_to_offset
+g_utf8_prev_char
+g_utf8_strchr
+g_utf8_strdown
+g_utf8_strlen
+g_utf8_strncpy
+g_utf8_strrchr
+g_utf8_strreverse
+g_utf8_strup
+g_utf8_to_ucs4
+g_utf8_to_ucs4_fast
+g_utf8_to_utf16
+g_utf8_validate
+g_vasprintf
+g_vfprintf
+g_vprintf
+g_vsnprintf
+g_vsprintf
+#ifdef G_OS_WIN32
+g_win32_error_message
+g_win32_ftruncate
+g_win32_get_package_installation_directory
+g_win32_get_package_installation_subdirectory
+g_win32_get_windows_version
+g_win32_getlocale
+#endif
+#ifdef INCLUDE_VARIABLES
+g_ascii_table
+g_utf8_skip
+g_idle_funcs
+g_timeout_funcs
+g_io_watch_funcs
+g_child_watch_funcs
+g_thread_functions_for_glib_use
+g_thread_use_default_impl
+g_threads_got_initialized
+glib_binary_age
+glib_interface_age
+glib_major_version
+glib_mem_profiler_table
+glib_micro_version
+glib_minor_version
+#endif
+#ifdef INCLUDE_INTERNAL_SYMBOLS
+/* internal or inline symbols */
+g_get_codeset
+g_string_append_c
+g_thread_init_glib
+g_trash_stack_height
+g_trash_stack_peek
+g_trash_stack_pop
+g_trash_stack_push
+g_bit_nth_lsf
+g_bit_nth_msf
+g_bit_storage
+#endif
index 842167b..2a4f74d 100644 (file)
@@ -30,6 +30,7 @@
 
 #include "config.h"
 
+#include "galias.h"
 #include "glib.h"
 
 
index e33067f..55fb9a7 100644 (file)
@@ -36,6 +36,7 @@
 /* uncomment the next line to get poll() debugging info */
 /* #define G_MAIN_POLL_DEBUG */
 
+#include "galias.h"
 #include "glib.h"
 #include "gthreadinit.h"
 #include <signal.h>
index 9503a53..31411a9 100644 (file)
@@ -26,6 +26,7 @@
 #include <stdlib.h>
 #include <errno.h>
 
+#include "galias.h"
 #include "glib.h"
 
 #include "glibintl.h"
index d930485..d114927 100644 (file)
@@ -34,6 +34,7 @@
 #include <string.h>
 #include <signal.h>
 
+#include "galias.h"
 #include "glib.h"
 #include "gthreadinit.h"
 
index 8e33e08..0aac036 100644 (file)
@@ -41,6 +41,7 @@
 #include <locale.h>
 #include <errno.h>
 
+#include "galias.h"
 #include "glib.h"
 #include "gdebug.h"
 #include "gprintfint.h"
index b5bce67..90dde6f 100644 (file)
@@ -33,6 +33,7 @@
 
 #include "config.h"
 
+#include "galias.h"
 #include "glib.h"
 
 #ifndef DISABLE_MEM_POOLS
index 507a84a..ea9ce08 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "goption.h"
 
+#include "galias.h"
 #include "glib.h"
 #include "gi18n.h"
 
index 68bafe8..b619501 100644 (file)
@@ -21,6 +21,7 @@
 
 #include <string.h>
 
+#include "galias.h"
 #include "gpattern.h"
 
 #include "gmacros.h"
index 439c1c8..013ace3 100644 (file)
@@ -30,6 +30,7 @@
 
 #include "config.h"
 
+#include "galias.h"
 #include "glib.h"
 
 
index 522a7f6..a6a1e22 100644 (file)
@@ -27,6 +27,7 @@
 #include <stdlib.h>
 #include <stdio.h>
 
+#include "galias.h"
 #include "glib.h"
 #include "gprintf.h"
 #include "gprintfint.h"
index b44785b..ac45e8b 100644 (file)
@@ -36,6 +36,7 @@
 
 #include <string.h>
 
+#include "galias.h"
 #include "glib.h"
 
 
index b811670..0d57b48 100644 (file)
@@ -26,6 +26,7 @@
 
 #include "config.h"
 
+#include "galias.h"
 #include "glib.h"
 
 
index d2a00f5..7650836 100644 (file)
@@ -47,6 +47,7 @@
 #include <unistd.h>
 #endif
 
+#include "galias.h"
 #include "glib.h"
 #include "gthreadinit.h"
 
index d45deb6..54fab40 100644 (file)
@@ -32,6 +32,7 @@
 #include <stdarg.h>
 #include <string.h>
 
+#include "galias.h"
 #include "glib.h"
 
 
index d9c7309..c54b3ac 100644 (file)
@@ -42,6 +42,7 @@
 #include       <unistd.h>
 #endif
 
+#include        "galias.h"
 #include       "glib.h"
 #include       "gprintfint.h"
 
index 849e015..679ebf2 100644 (file)
@@ -24,6 +24,7 @@
 
 #include <string.h>
 
+#include "galias.h"
 #include "glib.h"
 
 #ifdef _
index 4cac78f..2fca5e0 100644 (file)
@@ -30,6 +30,7 @@
 
 #include "config.h"
 
+#include "galias.h"
 #include "glib.h"
 
 
index 3c2a944..70eaaa8 100644 (file)
@@ -44,6 +44,7 @@
 
 #include <config.h>
 
+#include "galias.h"
 #include "glib.h"
 #include "gprintfint.h"
 
index 2fd31b8..b683cdf 100644 (file)
@@ -35,6 +35,7 @@
 #include <sys/select.h>
 #endif /* HAVE_SYS_SELECT_H */
 
+#include "galias.h"
 #include "glib.h"
 
 #include "glibintl.h"
index f551145..d3d4c48 100644 (file)
@@ -43,6 +43,7 @@
 #include <signal.h>
 #endif
 
+#include "galias.h"
 #include "glib.h"
 #include "gprintf.h"
 #include "gprintfint.h"
index 6a4a9db..9b6aaff 100644 (file)
@@ -39,6 +39,7 @@
 #include <string.h>
 #include <ctype.h>
 
+#include "galias.h"
 #include "glib.h"
 #include "gprintf.h"
 
index 5d50744..9505b15 100644 (file)
@@ -40,6 +40,7 @@
 
 #include <string.h>
 
+#include "galias.h"
 #include "glib.h"
 #include "gthreadinit.h"
 
index 39cdd0f..101e5e3 100644 (file)
@@ -26,6 +26,7 @@
 
 #include "config.h"
 
+#include "galias.h"
 #include "glib.h"
 
 
index b2f516b..6a05198 100644 (file)
@@ -29,6 +29,7 @@
  */
 
 #include "config.h"
+#include "galias.h"
 #include "glibconfig.h"
 
 #ifdef HAVE_UNISTD_H
index 6d4f108..bbdc7d5 100644 (file)
@@ -30,6 +30,7 @@
 
 #include "config.h"
 
+#include "galias.h"
 #include "glib.h"
 
 
index 2087d1e..1d4c20e 100644 (file)
@@ -22,6 +22,7 @@
 
 #include <stdlib.h>
 
+#include "galias.h"
 #include "glib.h"
 #include "gunibreak.h"
 
index ff7ad3d..22e8025 100644 (file)
@@ -26,6 +26,7 @@
 #include <wchar.h>
 #endif
 
+#include "galias.h"
 #include "glib.h"
 #include "gunicodeprivate.h"
 
index 8c32b10..d4cf0ec 100644 (file)
@@ -23,6 +23,7 @@
 
 #include <stdlib.h>
 
+#include "galias.h"
 #include "glib.h"
 #include "gunidecomp.h"
 #include "gunicomp.h"
index bd5fc4e..1c3fb9f 100644 (file)
@@ -25,6 +25,7 @@
 #include <string.h>
 #include <locale.h>
 
+#include "galias.h"
 #include "glib.h"
 #include "gunichartables.h"
 #include "gunicodeprivate.h"
index 88627a2..b958a45 100644 (file)
@@ -27,6 +27,7 @@
 #endif
 #include <string.h>
 
+#include "galias.h"
 #include "glib.h"
 
 #ifdef G_PLATFORM_WIN32
index fe7d44a..83a753c 100644 (file)
@@ -53,6 +53,7 @@
  */
 #define        G_IMPLEMENT_INLINES 1
 #define        __G_UTILS_C__
+#include "galias.h"
 #include "glib.h"
 #include "gprintfint.h"
 
index 14509e4..05d49b3 100644 (file)
@@ -31,6 +31,7 @@
 
 #include "config.h"
 
+#include "galias.h"
 #include "glibconfig.h"
 
 #include <stdlib.h>
diff --git a/glib/makegalias.pl b/glib/makegalias.pl
new file mode 100755 (executable)
index 0000000..d3d1a45
--- /dev/null
@@ -0,0 +1,105 @@
+#!/usr/bin/perl -w
+
+print <<EOF;
+/* Generated by makegalias.pl */
+
+#ifndef DISABLE_VISIBILITY
+
+#include "glibconfig.h"
+
+#ifdef G_HAVE_GNUC_VISIBILITY
+
+#ifdef  G_DISABLE_DEPRECATED
+#define WAS_NO_G_DEPR
+#endif
+#undef  G_DISABLE_DEPRECATED
+
+#include "glib.h"
+
+#include "gprintf.h"
+#ifdef G_OS_WIN32
+#include "gwin32.h"
+#endif
+
+EOF
+
+my $in_comment = 0;
+my $in_skipped_section = 0;
+
+while (<>) {
+
+  # ignore empty lines
+  next if /^\s*$/;
+
+  # skip comments
+  if ($_ =~ /^\s*\/\*/)
+  {
+      $in_comment = 1;
+  }
+  
+  if ($in_comment)
+  {
+      if ($_ =~  /\*\/\s$/)
+      {
+         $in_comment = 0;
+      }
+      
+      next;
+  }
+
+  # handle ifdefs
+  if ($_ =~ /^\#endif/)
+  {
+      if (!$in_skipped_section)
+      {
+         print $_;
+      }
+
+      $in_skipped_section = 0;
+
+      next;
+  }
+
+  if ($_ =~ /^\#ifdef\s+(INCLUDE_VARIABLES|INCLUDE_INTERNAL_SYMBOLS)/)
+  {
+      $in_skipped_section = 1;
+  }
+
+  if ($in_skipped_section)
+  {
+      next;
+  }
+
+  if ($_ =~ /^\#ifdef\s+G/)
+  {
+      print $_;
+      
+      next;
+  }
+
+  my $str = $_;
+  chomp($str);
+  my $alias = "IA__".$str;
+  
+  print <<EOF
+extern __typeof ($str) $alias __attribute((visibility("hidden")));
+extern __typeof ($str) $str __attribute((alias("$alias"), visibility("default")));
+\#define $str $alias
+
+EOF
+}
+
+print <<EOF;
+
+#ifdef  WAS_NO_G_DEPR
+#define G_DISABLE_DEPRECATED
+#undef  WAS_NO_G_DEPR
+#endif
+
+#endif /* G_HAVE_GNUC_VISIBILITY */
+
+#endif /* DISABLE_VISIBILITY */
+EOF
+
+