Add a G_GNUC_INTERNAL macro to mark function declarations as internal and
authorMatthias Clasen <mclasen@redhat.com>
Mon, 2 Aug 2004 15:34:30 +0000 (15:34 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Mon, 2 Aug 2004 15:34:30 +0000 (15:34 +0000)
2004-08-02  Matthias Clasen  <mclasen@redhat.com>

* glib/gmacros.h: Add a G_GNUC_INTERNAL macro to mark function
declarations as internal and avoid PLT indirections for
them.  (#145465, Arjan van de Ven)

* glib/gunicodeprivate.h:
* glib/gthreadinit.h:
* glib/gmessages.h:
* glib/gdebug.h:
* glib/gconvert.c: Use G_GNUC_INTERNAL for _g_charset_get_aliases(),
_g_debug_init(), _g_log_fallback_handler(), _g_mem_thread_init(),
_g_messages_thread_init(), _g_convert_thread_init(),
_g_rand_thread_init(), _g_main_thread_init(), _g_atomic_thread_init(),
_g_mem_thread_private_init(), _g_messages_thread_private_init(),
_g_utf8_normalize_wc() and _g_unichar_combining_class().

* glib/gatomic.c: Include gthreadinit.h here to see the declaration
for _g_atomic_thread_init().

14 files changed:
ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-12
ChangeLog.pre-2-6
ChangeLog.pre-2-8
docs/reference/ChangeLog
docs/reference/glib/glib-sections.txt
docs/reference/glib/tmpl/macros_misc.sgml
glib/gconvert.c
glib/gdebug.h
glib/gmacros.h
glib/gmessages.h
glib/gthreadinit.h
glib/gunicodeprivate.h

index afad395..c3d7d2a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,20 @@
 2004-08-02  Matthias Clasen  <mclasen@redhat.com>
 
+       * glib/gmacros.h: Add a G_GNUC_INTERNAL macro to mark function
+       declarations as internal and avoid PLT indirections for 
+       them.  (#145465, Arjan van de Ven)
+
+       * glib/gunicodeprivate.h: 
+       * glib/gthreadinit.h: 
+       * glib/gmessages.h: 
+       * glib/gdebug.h: 
+       * glib/gconvert.c: Use G_GNUC_INTERNAL for _g_charset_get_aliases(),
+       _g_debug_init(), _g_log_fallback_handler(), _g_mem_thread_init(),
+       _g_messages_thread_init(), _g_convert_thread_init(), 
+       _g_rand_thread_init(), _g_main_thread_init(), _g_atomic_thread_init(),
+       _g_mem_thread_private_init(), _g_messages_thread_private_init(),
+       _g_utf8_normalize_wc() and _g_unichar_combining_class().
+
        * glib/gatomic.c: Include gthreadinit.h here to see the declaration
        for _g_atomic_thread_init().
 
index afad395..c3d7d2a 100644 (file)
@@ -1,5 +1,20 @@
 2004-08-02  Matthias Clasen  <mclasen@redhat.com>
 
+       * glib/gmacros.h: Add a G_GNUC_INTERNAL macro to mark function
+       declarations as internal and avoid PLT indirections for 
+       them.  (#145465, Arjan van de Ven)
+
+       * glib/gunicodeprivate.h: 
+       * glib/gthreadinit.h: 
+       * glib/gmessages.h: 
+       * glib/gdebug.h: 
+       * glib/gconvert.c: Use G_GNUC_INTERNAL for _g_charset_get_aliases(),
+       _g_debug_init(), _g_log_fallback_handler(), _g_mem_thread_init(),
+       _g_messages_thread_init(), _g_convert_thread_init(), 
+       _g_rand_thread_init(), _g_main_thread_init(), _g_atomic_thread_init(),
+       _g_mem_thread_private_init(), _g_messages_thread_private_init(),
+       _g_utf8_normalize_wc() and _g_unichar_combining_class().
+
        * glib/gatomic.c: Include gthreadinit.h here to see the declaration
        for _g_atomic_thread_init().
 
index afad395..c3d7d2a 100644 (file)
@@ -1,5 +1,20 @@
 2004-08-02  Matthias Clasen  <mclasen@redhat.com>
 
+       * glib/gmacros.h: Add a G_GNUC_INTERNAL macro to mark function
+       declarations as internal and avoid PLT indirections for 
+       them.  (#145465, Arjan van de Ven)
+
+       * glib/gunicodeprivate.h: 
+       * glib/gthreadinit.h: 
+       * glib/gmessages.h: 
+       * glib/gdebug.h: 
+       * glib/gconvert.c: Use G_GNUC_INTERNAL for _g_charset_get_aliases(),
+       _g_debug_init(), _g_log_fallback_handler(), _g_mem_thread_init(),
+       _g_messages_thread_init(), _g_convert_thread_init(), 
+       _g_rand_thread_init(), _g_main_thread_init(), _g_atomic_thread_init(),
+       _g_mem_thread_private_init(), _g_messages_thread_private_init(),
+       _g_utf8_normalize_wc() and _g_unichar_combining_class().
+
        * glib/gatomic.c: Include gthreadinit.h here to see the declaration
        for _g_atomic_thread_init().
 
index afad395..c3d7d2a 100644 (file)
@@ -1,5 +1,20 @@
 2004-08-02  Matthias Clasen  <mclasen@redhat.com>
 
+       * glib/gmacros.h: Add a G_GNUC_INTERNAL macro to mark function
+       declarations as internal and avoid PLT indirections for 
+       them.  (#145465, Arjan van de Ven)
+
+       * glib/gunicodeprivate.h: 
+       * glib/gthreadinit.h: 
+       * glib/gmessages.h: 
+       * glib/gdebug.h: 
+       * glib/gconvert.c: Use G_GNUC_INTERNAL for _g_charset_get_aliases(),
+       _g_debug_init(), _g_log_fallback_handler(), _g_mem_thread_init(),
+       _g_messages_thread_init(), _g_convert_thread_init(), 
+       _g_rand_thread_init(), _g_main_thread_init(), _g_atomic_thread_init(),
+       _g_mem_thread_private_init(), _g_messages_thread_private_init(),
+       _g_utf8_normalize_wc() and _g_unichar_combining_class().
+
        * glib/gatomic.c: Include gthreadinit.h here to see the declaration
        for _g_atomic_thread_init().
 
index afad395..c3d7d2a 100644 (file)
@@ -1,5 +1,20 @@
 2004-08-02  Matthias Clasen  <mclasen@redhat.com>
 
+       * glib/gmacros.h: Add a G_GNUC_INTERNAL macro to mark function
+       declarations as internal and avoid PLT indirections for 
+       them.  (#145465, Arjan van de Ven)
+
+       * glib/gunicodeprivate.h: 
+       * glib/gthreadinit.h: 
+       * glib/gmessages.h: 
+       * glib/gdebug.h: 
+       * glib/gconvert.c: Use G_GNUC_INTERNAL for _g_charset_get_aliases(),
+       _g_debug_init(), _g_log_fallback_handler(), _g_mem_thread_init(),
+       _g_messages_thread_init(), _g_convert_thread_init(), 
+       _g_rand_thread_init(), _g_main_thread_init(), _g_atomic_thread_init(),
+       _g_mem_thread_private_init(), _g_messages_thread_private_init(),
+       _g_utf8_normalize_wc() and _g_unichar_combining_class().
+
        * glib/gatomic.c: Include gthreadinit.h here to see the declaration
        for _g_atomic_thread_init().
 
index 24bfccd..a6bf71f 100644 (file)
@@ -1,7 +1,12 @@
+2004-08-02  Matthias Clasen  <mclasen@redhat.com>
+
+       * glib/glib-sections.txt: 
+       * glib/tmpl/macros_misc.sgml: Document G_GNUC_INTERNAL.
+
 2004-08-01 Matthias Clasen  <mclasen@redhat.com>
-                                                                                
+                                                                               
         * === Released 2.5.1 ===
-                                                                                
+
 2004-07-28  Matthias Clasen  <mclasen@redhat.com>
 
        * glib/tmpl/misc_utils.sgml: Clarify docs for 
index 30046a9..371f6ee 100644 (file)
@@ -319,6 +319,7 @@ G_GNUC_FORMAT
 G_GNUC_FUNCTION
 G_GNUC_PRETTY_FUNCTION
 G_GNUC_NO_INSTRUMENT
+G_GNUC_INTERNAL
 
 <SUBSECTION>
 G_LIKELY
index 16f1a94..cde36bc 100644 (file)
@@ -250,6 +250,16 @@ See the GNU C documentation for details.
 </para>
 
 
+<!-- ##### MACRO G_GNUC_INTERNAL ##### -->
+<para>
+Expands to the GNU C <literal>visibility(hidden)</literal> attribute if the 
+compiler is <command>gcc</command>. This attribute can be used for marking 
+library functions as being used internally to the lib only, to not create 
+inefficient PLT entries. Note that static functions do not need to be marked 
+as internal in this way. See the GNU C documentation for details. 
+</para>
+
+Since: 2.6
 
 <!-- ##### MACRO G_LIKELY ##### -->
 <para>
index 4dc1483..dd811e5 100644 (file)
@@ -90,7 +90,7 @@ try_to_aliases (const char **to_aliases,
   return FALSE;
 }
 
-extern const char **_g_charset_get_aliases (const char *canonical_name);
+extern const char **_g_charset_get_aliases (const char *canonical_name) G_GNUC_INTERNAL;
 
 /**
  * g_iconv_open:
index d06b8b1..dda0213 100644 (file)
@@ -53,7 +53,7 @@ typedef enum {
 GLIB_VAR gboolean _g_debug_initialized;
 GLIB_VAR guint _g_debug_flags;
 
-void _g_debug_init ();
+void _g_debug_init () G_GNUC_INTERNAL;
 
 #ifdef __cplusplus
 }
index d205053..788b307 100644 (file)
 #define G_GNUC_PURE
 #endif
 
+/*
+ * Provide G_GNUC_INTERNAL that is used for marking library 
+ * functions as being used internally to the lib only, to not 
+ * create inefficient PLT entries.
+ */
+#if defined (__GNUC__) 
+#define G_GNUC_INTERNAL __attribute__((visibility("hidden")))
+#else
+#define G_GNUC_INTERNAL
+#endif
+
 #if     __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)
 #define G_GNUC_PRINTF( format_idx, arg_idx )    \
   __attribute__((__format__ (__printf__, format_idx, arg_idx)))
index d47fdcf..c360629 100644 (file)
@@ -104,7 +104,7 @@ GLogLevelFlags  g_log_set_always_fatal  (GLogLevelFlags  fatal_mask);
 void   _g_log_fallback_handler (const gchar   *log_domain,
                                 GLogLevelFlags log_level,
                                 const gchar   *message,
-                                gpointer       unused_data);
+                                gpointer       unused_data) G_GNUC_INTERNAL;
 
 
 #ifndef G_LOG_DOMAIN
index 663c422..a7242d2 100644 (file)
@@ -27,16 +27,16 @@ G_BEGIN_DECLS
 void g_thread_init_glib (void);
 
 /* Are called from glib/gthread.c. May not contain g_private_new calls */
-void _g_mem_thread_init (void);
-void _g_messages_thread_init (void);
-void _g_convert_thread_init (void);
-void _g_rand_thread_init (void);
-void _g_main_thread_init (void);
-void _g_atomic_thread_init (void);
+void _g_mem_thread_init (void) G_GNUC_INTERNAL;
+void _g_messages_thread_init (void) G_GNUC_INTERNAL;
+void _g_convert_thread_init (void) G_GNUC_INTERNAL;
+void _g_rand_thread_init (void) G_GNUC_INTERNAL;
+void _g_main_thread_init (void) G_GNUC_INTERNAL;
+void _g_atomic_thread_init (void) G_GNUC_INTERNAL;
 
 /* Are called from glib/gthread.c. Must only contain g_private_new calls */
-void _g_mem_thread_private_init (void);
-void _g_messages_thread_private_init (void);
+void _g_mem_thread_private_init (void) G_GNUC_INTERNAL;
+void _g_messages_thread_private_init (void) G_GNUC_INTERNAL;
 
 G_END_DECLS
  
index 84ebad3..3cf2bb6 100644 (file)
@@ -27,8 +27,8 @@ G_BEGIN_DECLS
 
 gunichar *_g_utf8_normalize_wc       (const gchar    *str,
                                       gssize          max_len,
-                                      GNormalizeMode  mode);
-gint      _g_unichar_combining_class (gunichar uc);
+                                      GNormalizeMode  mode) G_GNUC_INTERNAL;
+gint      _g_unichar_combining_class (gunichar uc) G_GNUC_INTERNAL;
 
 G_END_DECLS