[cairo-commit] 5 commits - boilerplate/cairo-boilerplate-quartz.c boilerplate/meson.build meson.build src/cairo.c src/cairo-compiler-private.h src/cairo-device.c src/cairo-device-private.h src/cairo-font-face.c src/cairo-font-options.c src/cairo.h src/cairo-image-surface.c src/cairoint.h src/cairo-matrix.c src/cairo-misc.c src/cairo-path.c src/cairo-pattern.c src/cairo-png.c src/cairo-recording-surface.c src/cairo-recording-surface-private.h src/cairo-region.c src/cairo-scaled-font.c src/cairo-script-private.h src/cairo-script-surface.c src/cairo-surface.c src/cairo-tee-surface.c src/cairo-toy-font-face.c src/cairo-user-font.c src/cairo-version.c src/cairo-xcb-connection.c src/cairo-xcb-private.h src/cairo-xcb-surface.c src/check-has-hidden-symbols.c src/check-plt.sh src/make-cairo-def.sh src/meson.build src/meson-check-def.sh util/cairo-fdr util/cairo-gobject util/cairo-script util/cairo-sphinx util/cairo-trace

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Aug 17 16:23:30 UTC 2023


 boilerplate/cairo-boilerplate-quartz.c       |   80 ++++++++++
 boilerplate/meson.build                      |    1 
 meson.build                                  |    4 
 src/cairo-compiler-private.h                 |   54 -------
 src/cairo-device-private.h                   |    7 
 src/cairo-device.c                           |    6 
 src/cairo-font-face.c                        |    4 
 src/cairo-font-options.c                     |    9 -
 src/cairo-image-surface.c                    |   20 --
 src/cairo-matrix.c                           |   12 -
 src/cairo-misc.c                             |    6 
 src/cairo-path.c                             |    1 
 src/cairo-pattern.c                          |   25 ---
 src/cairo-png.c                              |    2 
 src/cairo-recording-surface-private.h        |    2 
 src/cairo-recording-surface.c                |    2 
 src/cairo-region.c                           |   23 ---
 src/cairo-scaled-font.c                      |   14 -
 src/cairo-script-private.h                   |    2 
 src/cairo-script-surface.c                   |    1 
 src/cairo-surface.c                          |   20 --
 src/cairo-tee-surface.c                      |    5 
 src/cairo-toy-font-face.c                    |    3 
 src/cairo-user-font.c                        |    5 
 src/cairo-version.c                          |    1 
 src/cairo-xcb-connection.c                   |    9 -
 src/cairo-xcb-private.h                      |   10 -
 src/cairo-xcb-surface.c                      |   21 --
 src/cairo.c                                  |   65 --------
 src/cairo.h                                  |   23 ++-
 src/cairoint.h                               |  207 ---------------------------
 src/check-has-hidden-symbols.c               |    3 
 src/check-plt.sh                             |   30 ---
 src/make-cairo-def.sh                        |   27 ---
 src/meson-check-def.sh                       |   38 ----
 src/meson.build                              |   30 ---
 util/cairo-fdr/meson.build                   |    4 
 util/cairo-gobject/meson.build               |    3 
 util/cairo-script/cairo-script-interpreter.c |    5 
 util/cairo-script/cairo-script-private.h     |   26 ---
 util/cairo-script/meson.build                |    2 
 util/cairo-sphinx/meson.build                |    3 
 util/cairo-trace/meson.build                 |    5 
 43 files changed, 125 insertions(+), 695 deletions(-)

New commits:
commit 1d3d24a48eefc9dfb88551a81ca286e07ef61d04
Merge: eaffbc19d 31fc7233a
Author: Emmanuele Bassi <ebassi at gmail.com>
Date:   Thu Aug 17 16:23:27 2023 +0000

    Merge branch 'no-slim-symbols' into 'master'
    
    Drop "slim" symbols
    
    Closes #582
    
    See merge request cairo/cairo!343

commit 31fc7233a4b9af6dd7193df8025bbb6e289f64fb
Author: Emmanuele Bassi <ebassi at gnome.org>
Date:   Wed Aug 16 16:30:31 2023 +0100

    build: Remove unused files
    
    We do not use slim symbols, and all the symbols are hidden by default;
    this means we don't need to test those things any more.

diff --git a/src/check-has-hidden-symbols.c b/src/check-has-hidden-symbols.c
deleted file mode 100644
index 120412776..000000000
--- a/src/check-has-hidden-symbols.c
+++ /dev/null
@@ -1,3 +0,0 @@
-#include "cairoint.h"
-
-CAIRO_HAS_HIDDEN_SYMBOLS
diff --git a/src/check-plt.sh b/src/check-plt.sh
deleted file mode 100755
index 6f3d07401..000000000
--- a/src/check-plt.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/sh
-
-LC_ALL=C
-export LC_ALL
-
-if which readelf 2>/dev/null >/dev/null; then
-	:
-else
-	echo "'readelf' not found; skipping test"
-	exit 0
-fi
-
-test -z "$srcdir" && srcdir=.
-test -z "$MAKE" && MAKE=make
-stat=0
-
-if [ "x$CAIRO_HAS_HIDDEN_SYMBOLS" = x ]; then
-	$MAKE check-has-hidden-symbols.i > /dev/null || exit 1
-	if tail -1 check-has-hidden-symbols.i | grep CAIRO_HAS_HIDDEN_SYMBOLS >/dev/null; then
-		echo "Compiler doesn't support symbol visibility; skipping test"
-		exit 0
-	fi
-fi
-
-for so in .libs/lib*.so "$@"; do
-	echo Checking "$so" for local PLT entries
-	readelf -W -r "$so" | grep 'JU\?MP_SLO' | grep 'cairo' >&2 && stat=1
-done
-
-exit $stat
diff --git a/src/make-cairo-def.sh b/src/make-cairo-def.sh
deleted file mode 100644
index 1a1f366e8..000000000
--- a/src/make-cairo-def.sh
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/sh
-
-LC_ALL=C
-export LC_ALL
-
-if [ $# -lt 3 ];
-then
-    echo "Generate cairo def file"
-    echo "Usage: $0 <def-filename> <cairo-features-file> <cairo-headers>..."
-    exit 1
-fi
-
-def_file="$1"
-cairo_features_h="$2"
-shift 2
-
-#echo Generating $def_file
-
-(echo EXPORTS; \
- (cat $* || echo 'cairo_ERROR ()' ) | \
-     egrep -v '^# *include' | \
-     ( cat "$cairo_features_h" - | egrep -v '^#pragma' | cpp -D__cplusplus - || echo 'cairo_ERROR ()' ) | \
-     egrep '^cairo_.* \(' | \
-     sed -e 's/[ 	].*//' | \
-     sort; \
- ) > "$def_file"
-grep -q -v cairo_ERROR "$def_file" || (rm "$def_file"; false)
diff --git a/src/meson-check-def.sh b/src/meson-check-def.sh
deleted file mode 100644
index 7c0e3e0e0..000000000
--- a/src/meson-check-def.sh
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/bin/sh
-
-LC_ALL=C
-export LC_ALL
-
-if [ $# -lt 2 ];
-then
-    echo "Check that cairo library has same exported symbols as cairo.def"
-    echo "Usage: $0 <def-filename> <cairo-library>"
-    exit 1
-fi
-
-def="$1"
-so="$2"
-
-if which nm 2>/dev/null >/dev/null; then
-    :
-else
-    echo "'nm' not found; skipping test"
-    exit 0
-fi
-
-stat=0
-
-if [ "`uname -s`" = "Linux" ]; then
-	get_cairo_syms='( objdump -t "$so" | grep "^[^ ]* [^l.*]*[.]"; objdump -t "$so" | grep "[.]hidden.*\\<cairo"; ) | sed "s/.* //"'
-else
-	get_cairo_syms='nm "$so" | grep " [BCDGINRSTVW] " | cut -d" " -f3'
-fi
-
-echo Checking that $so has the same symbol list as $def
-
-{
-    echo EXPORTS
-    eval $get_cairo_syms | c++filt --no-params | grep -v '^_cairo_test_\|^_fini\|^_init\|^_save[fg]pr\|^_rest[fg]pr\|^_Z\|^__gnu\|^_bss_end\|^__bss\|^_edata\|^_end\|^__end\|^_fbss\|^_fdata\|^_ftext' | sort -u
-} | diff "$def" - >&2 || stat=1
-
-exit $stat
commit ba4d5fbd5dad46c84e38ffbb032799a7a9380f42
Author: Emmanuele Bassi <ebassi at gnome.org>
Date:   Tue Jan 31 01:07:14 2023 +0000

    Build with hidden symbols by default
    
    We should default on every platform we care about to hidden symbols, to
    avoid leaking private symbols.
    
    On Windows this is the default state of affairs with the MSVC toolchain;
    with GCC and GCC-compatible toolchains, we need to opt into this
    behaviour. Luckily for us, Cairo already has an annotation for public
    symbols, so we can easily tweak it to include the visibility attribute.
    
    When building ancillary libraries as part of the Cairo compilation on
    Windows, we use a pre-processor symbol to ensure that we keep the
    dllexport annotation. This avoids including the cairoint.h header file.
    
    Fixes: #582

diff --git a/boilerplate/meson.build b/boilerplate/meson.build
index 450eabf3e..544bfcc09 100644
--- a/boilerplate/meson.build
+++ b/boilerplate/meson.build
@@ -28,6 +28,7 @@ cairo_boilerplate_constructors = custom_target('cairo-boilerplate-constructors.c
 libcairoboilerplate = static_library('cairoboilerplate', cairo_boilerplate_sources + [cairo_boilerplate_constructors],
   include_directories: [incbase],
   dependencies: deps + [libcairo_dep],
+  c_args: ['-DCAIRO_COMPILATION'],
   install: false,
   build_by_default: false,
 )
diff --git a/src/cairo.h b/src/cairo.h
index a2c955281..f6028a243 100644
--- a/src/cairo.h
+++ b/src/cairo.h
@@ -50,14 +50,25 @@
 # define CAIRO_END_DECLS
 #endif
 
-#ifndef cairo_public
-# if defined (_MSC_VER) && ! defined (CAIRO_WIN32_STATIC_BUILD)
-#  define cairo_public __declspec(dllimport)
-# else
-#  define cairo_public
-# endif
+#if (defined(_WIN32) || defined(__CYGWIN__)) && !defined(CAIRO_WIN32_STATIC_BUILD)
+# define _cairo_export __declspec(dllexport)
+# define _cairo_import __declspec(dllimport)
+#elif defined(__GNUC__) && (__GNUC__ >= 4)
+# define _cairo_export __attribute__((__visibility__("default")))
+# define _cairo_import
+#else
+# define _cairo_export
+# define _cairo_import
 #endif
 
+#ifdef CAIRO_COMPILATION
+# define _cairo_api _cairo_export
+#else
+# define _cairo_api _cairo_import
+#endif
+
+#define cairo_public _cairo_api extern
+
 CAIRO_BEGIN_DECLS
 
 #define CAIRO_VERSION_ENCODE(major, minor, micro) (	\
diff --git a/src/cairoint.h b/src/cairoint.h
index c94ed9b8c..c906c25c1 100644
--- a/src/cairoint.h
+++ b/src/cairoint.h
@@ -49,10 +49,6 @@
 
 #include "config.h"
 
-#ifdef _MSC_VER
-#define cairo_public __declspec(dllexport)
-#endif
-
 #include <assert.h>
 #include <stdlib.h>
 #include <string.h>
diff --git a/src/meson.build b/src/meson.build
index f777fcd1c..ac06ac61a 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -242,9 +242,10 @@ endif
 
 libcairo = library('cairo', cairo_sources,
   dependencies: deps,
-  c_args: cairo_no_warn_c_args + pthread_c_args,
-  cpp_args: cairo_no_warn_c_args + pthread_c_args,
+  c_args: cairo_no_warn_c_args + pthread_c_args + ['-DCAIRO_COMPILATION'],
+  cpp_args: cairo_no_warn_c_args + pthread_c_args + ['-DCAIRO_COMPILATION'],
   link_args: extra_link_args,
+  gnu_symbol_visibility: 'hidden',
   soversion: cairo_version_sonum,
   version: cairo_libversion,
   install: true,
@@ -283,29 +284,4 @@ if shell.found()
       suite: ['fast', 'lint'],
       workdir: meson.current_source_dir())
   endforeach
-
-  env = environment()
-  env.set('CAIRO_HAS_HIDDEN_SYMBOLS', '1')
-
-  cairo_def = custom_target('make-cairo-def',
-                            input : cairo_headers,
-                            output : 'cairo.def',
-                            command : [ shell,
-                                        meson.current_source_dir()/'make-cairo-def.sh',
-                                        '@OUTPUT@',
-                                        cairo_features_file,
-                                        '@INPUT@'
-                                      ])
-
-  test('check-def', shell,
-       args: ['meson-check-def.sh', cairo_def, libcairo ],
-       env: env,
-       workdir: meson.current_source_dir())
-
-  test('check-plt.sh', shell,
-    args: ['check-plt.sh', libcairo ],
-    env: env,
-    suite: ['fast', 'plt'],
-    workdir: meson.current_source_dir())
-
 endif
diff --git a/util/cairo-fdr/meson.build b/util/cairo-fdr/meson.build
index 001af27bc..0d00e43f7 100644
--- a/util/cairo-fdr/meson.build
+++ b/util/cairo-fdr/meson.build
@@ -5,6 +5,8 @@ cairo_fdr_sources = [
 libcairofdr = library('cairo-fdr', cairo_fdr_sources,
   include_directories: [incbase, incsrc],
   dependencies: deps,
+  gnu_symbol_visibility: 'hidden',
+  link_args: extra_link_args,
   install: true,
-  install_dir: join_paths(get_option('prefix'), get_option('libdir'), 'cairo'),
+  install_dir: get_option('libdir') / 'cairo',
 )
diff --git a/util/cairo-gobject/meson.build b/util/cairo-gobject/meson.build
index 0a525b6fa..660088771 100644
--- a/util/cairo-gobject/meson.build
+++ b/util/cairo-gobject/meson.build
@@ -12,6 +12,9 @@ libcairogobject = library('cairo-gobject', cairo_gobject_sources,
   dependencies: [glib_dep, gobject_dep, libcairo_dep],
   soversion: cairo_version_sonum,
   version: cairo_libversion,
+  gnu_symbol_visibility: 'hidden',
+  c_args: ['-DCAIRO_COMPILATION'],
+  link_args: extra_link_args,
   install: true,
 )
 
diff --git a/util/cairo-script/cairo-script-interpreter.c b/util/cairo-script/cairo-script-interpreter.c
index 04f12e8f9..e3aa3bae8 100644
--- a/util/cairo-script/cairo-script-interpreter.c
+++ b/util/cairo-script/cairo-script-interpreter.c
@@ -34,9 +34,10 @@
 
 #include "config.h"
 
-#include "cairo-script-private.h"
 #include "cairo.h"
 
+#include "cairo-script-private.h"
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
diff --git a/util/cairo-script/meson.build b/util/cairo-script/meson.build
index 51e0ce7cd..60cec2b6e 100644
--- a/util/cairo-script/meson.build
+++ b/util/cairo-script/meson.build
@@ -30,6 +30,8 @@ libcairoscript = library('cairo-script-interpreter',
   dependencies: deps + [libcairo_dep, lzo_dep],
   soversion: cairo_version_sonum,
   version: cairo_libversion,
+  c_args: ['-DCAIRO_COMPILATION'],
+  link_args: extra_link_args,
   install: true,
 )
 
diff --git a/util/cairo-sphinx/meson.build b/util/cairo-sphinx/meson.build
index 20ea04d7f..467ad3b75 100644
--- a/util/cairo-sphinx/meson.build
+++ b/util/cairo-sphinx/meson.build
@@ -10,7 +10,7 @@ libcairosphinx = library('cairo-sphinx', libcairo_sphinx_sources,
   include_directories: [incbase, incsrc],
   dependencies: deps,
   install: true,
-  install_dir: join_paths(get_option('prefix'), get_option('libdir'), 'cairo'),
+  install_dir: get_option('libdir') / 'cairo',
 )
 
 libdir = join_paths(get_option('prefix'), get_option('libdir'))
@@ -21,5 +21,6 @@ cairosphinx_exe = executable('cairo-sphinx', cairo_sphinx_sources,
   dependencies: deps + [glib_dep, rt_dep, libcairo_dep, cairoboilerplate_dep, libcairoscript_dep],
   link_with: [libcairosphinx],
   link_args: extra_link_args,
+  gnu_symbol_visibility: 'hidden',
   install: true,
 )
diff --git a/util/cairo-trace/meson.build b/util/cairo-trace/meson.build
index c4a504759..8d4ac131b 100644
--- a/util/cairo-trace/meson.build
+++ b/util/cairo-trace/meson.build
@@ -11,10 +11,11 @@ shared_lib_ext = libcairo.full_path().split('.')[-1]
 libcairotrace = library('cairo-trace', cairo_trace_sources,
   include_directories: [incbase, incsrc],
   dependencies: deps,
-  link_args: extra_link_args,
   c_args: ['-DSHARED_LIB_EXT="@0@"'.format(shared_lib_ext),] + pthread_c_args,
+  link_args: extra_link_args,
+  gnu_symbol_visibility: 'hidden',
   install: true,
-  install_dir: join_paths(get_option('prefix'), get_option('libdir'), 'cairo'),
+  install_dir: get_option('libdir') / 'cairo',
 )
 
 trace_conf = configuration_data()
commit ff02c2c2684d9eecb2f5fefe689fe60ff8e98280
Author: Emmanuele Bassi <ebassi at gnome.org>
Date:   Sun Aug 13 15:47:20 2023 +0100

    Add surface-to-png in the quartz boilerplate
    
    The cairo-boilerplate static library cannot use private API defined in
    the main Cairo shared library, because it has no access to those
    symbols.
    
    Since the code is small, we can just dump it into the boilerplate
    library.

diff --git a/boilerplate/cairo-boilerplate-quartz.c b/boilerplate/cairo-boilerplate-quartz.c
index 1a1417c75..dd2452c0a 100644
--- a/boilerplate/cairo-boilerplate-quartz.c
+++ b/boilerplate/cairo-boilerplate-quartz.c
@@ -28,6 +28,40 @@
 
 #include <cairo-quartz-private.h>
 
+#include <dlfcn.h>
+
+#ifndef RTLD_DEFAULT
+#define RTLD_DEFAULT ((void *) 0)
+#endif
+
+/*
+ * macOS Private functions
+ */
+typedef enum {
+    kCGContextTypeUnknown,
+    kCGContextTypePDF,
+    kCGContextTypePostScript,
+    kCGContextTypeWindow,
+    kCGContextTypeBitmap,
+    kCGContextTypeGL,
+    kCGContextTypeDisplayList,
+    kCGContextTypeKSeparation,
+    kCGContextTypeIOSurface,
+    kCGContextTypeCount
+} CGContextType;
+
+
+static unsigned int (*CGContextGetTypePtr) (CGContextRef) = NULL;
+static void
+quartz_ensure_symbols (void)
+{
+    static cairo_bool_t symbol_lookup_done = FALSE;
+    if (!symbol_lookup_done) {
+	CGContextGetTypePtr = dlsym (RTLD_DEFAULT, "CGContextGetType");
+	symbol_lookup_done = TRUE;
+    }
+}
+
 static cairo_surface_t *
 _cairo_boilerplate_quartz_create_surface (const char		    *name,
 					  cairo_content_t	     content,
@@ -47,6 +81,48 @@ _cairo_boilerplate_quartz_create_surface (const char		    *name,
     return cairo_quartz_surface_create (format, width, height);
 }
 
+static bool
+cg_context_is_bitmap (CGContextRef context)
+{
+    quartz_ensure_symbols ();
+
+    if (likely (CGContextGetTypePtr)) {
+	return CGContextGetTypePtr (context) == kCGContextTypeBitmap;
+    }
+
+    return CGBitmapContextGetBitsPerPixel (context) != 0;
+}
+
+static cairo_status_t
+_cairo_boilerplate_quartz_surface_to_png (cairo_surface_t *surface,
+                                          const char      *dest)
+{
+    CGContextRef context = cairo_quartz_surface_get_cg_context (surface);
+    if (!context || !cg_context_is_bitmap (context)) {
+        return CAIRO_STATUS_SURFACE_TYPE_MISMATCH;
+    }
+
+    CGImageRef image = CGBitmapContextCreateImage (context);
+    CFStringRef png_utti = CFSTR("public.png");
+    CFStringRef path;
+    CFURLRef url;
+
+    CGImageDestinationRef image_dest;
+
+    path = CFStringCreateWithCString (NULL, dest, kCFStringEncodingUTF8);
+    url = CFURLCreateWithFileSystemPath (NULL, path, kCFURLPOSIXPathStyle, FALSE);
+    image_dest = CGImageDestinationCreateWithURL (url, png_utti, 1, NULL);
+
+    CGImageDestinationAddImage (image_dest, image, NULL);
+    CGImageDestinationFinalize (image_dest);
+
+    CFRelease (url);
+    CFRelease (path);
+
+    CGImageRelease (image);
+    return CAIRO_STATUS_SUCCESS;
+}
+
 static const cairo_boilerplate_target_t targets[] = {
     {
 	"quartz", "quartz", NULL, NULL,
@@ -56,7 +132,7 @@ static const cairo_boilerplate_target_t targets[] = {
 	cairo_surface_create_similar,
 	NULL, NULL,
 	_cairo_boilerplate_get_image_surface,
-	_cairo_quartz_surface_to_png,
+	_cairo_boilerplate_quartz_surface_to_png,
 	NULL, NULL, NULL,
 	TRUE, FALSE, FALSE
     },
@@ -68,7 +144,7 @@ static const cairo_boilerplate_target_t targets[] = {
 	cairo_surface_create_similar,
 	NULL, NULL,
 	_cairo_boilerplate_get_image_surface,
-	_cairo_quartz_surface_to_png,
+	_cairo_boilerplate_quartz_surface_to_png,
 	NULL, NULL, NULL,
         FALSE, FALSE, FALSE
     },
commit 77c2820840a8fc0fd5417e1b85f0fb3c153141d1
Author: Emmanuele Bassi <ebassi at gnome.org>
Date:   Mon Sep 6 16:44:15 2021 +0100

    Drop "slim" symbols
    
    The original "slim" symbol rewriting was added without any shred of a
    set of performance evaluation, and mostly copy-pasted from a very early
    version of pixman. Pixman itself never used them, and most C
    libraries—like GLib and GTK—have dropped similar mechanisms over the
    past 15 years, as linkers have improved considerably in the meantime.
    
    Modern linkers provide functionality to avoid intra-library PLT jump
    through flags like `-Bsymbolic-functions`; we should use that, instead,
    and keep the code base more maintainable and debuggable.

diff --git a/meson.build b/meson.build
index 0f34ae9db..9100152ee 100644
--- a/meson.build
+++ b/meson.build
@@ -175,6 +175,10 @@ test_deps = []
 internal_deps = []
 extra_link_args = []
 
+extra_link_args += cc.get_supported_link_arguments([
+  '-Wl,-Bsymbolic-functions',
+])
+
 if host_machine.endian() == 'big'
   conf.set('WORDS_BIGENDIAN', 1)
 endif
diff --git a/src/cairo-compiler-private.h b/src/cairo-compiler-private.h
index 103b7a859..28455f99d 100644
--- a/src/cairo-compiler-private.h
+++ b/src/cairo-compiler-private.h
@@ -54,58 +54,6 @@
 
 #define CAIRO_STACK_ARRAY_LENGTH(T) (CAIRO_STACK_BUFFER_SIZE / sizeof(T))
 
-/*
- * The goal of this block is to define the following macros for
- * providing faster linkage to functions in the public API for calls
- * from within cairo.
- *
- * slim_hidden_proto(f)
- * slim_hidden_proto_no_warn(f)
- *
- *   Declares `f' as a library internal function and hides the
- *   function from the global symbol table.  This macro must be
- *   expanded after `f' has been declared with a prototype but before
- *   any calls to the function are seen by the compiler.  The no_warn
- *   variant inhibits warnings about the return value being unused at
- *   call sites.  The macro works by renaming `f' to an internal name
- *   in the symbol table and hiding that.  As far as cairo internal
- *   calls are concerned they're calling a library internal function
- *   and thus don't need to bounce via the procedure linkage table (PLT).
- *
- * slim_hidden_def(f)
- *
- *   Exports `f' back to the global symbol table.  This macro must be
- *   expanded right after the function definition and only for symbols
- *   hidden previously with slim_hidden_proto().  The macro works by
- *   adding a global entry to the symbol table which points at the
- *   internal name of `f' created by slim_hidden_proto().
- *
- * Functions in the public API which aren't called by the library
- * don't need to be hidden and re-exported using the slim hidden
- * macros.
- */
-#if __GNUC__ >= 3 && defined(__ELF__) && !defined(__sun)
-# define slim_hidden_proto(name)		slim_hidden_proto1(name, slim_hidden_int_name(name)) cairo_private
-# define slim_hidden_proto_no_warn(name)	slim_hidden_proto1(name, slim_hidden_int_name(name)) cairo_private_no_warn
-# define slim_hidden_def(name)			slim_hidden_def1(name, slim_hidden_int_name(name))
-# define slim_hidden_int_name(name) INT_##name
-# define slim_hidden_proto1(name, internal)				\
-  extern __typeof (name) name						\
-	__asm__ (slim_hidden_asmname (internal))
-# define slim_hidden_def1(name, internal)				\
-  extern __typeof (name) EXT_##name __asm__(slim_hidden_asmname(name))	\
-	__attribute__((__alias__(slim_hidden_asmname(internal))))
-# define slim_hidden_ulp		slim_hidden_ulp1(__USER_LABEL_PREFIX__)
-# define slim_hidden_ulp1(x)		slim_hidden_ulp2(x)
-# define slim_hidden_ulp2(x)		#x
-# define slim_hidden_asmname(name)	slim_hidden_asmname1(name)
-# define slim_hidden_asmname1(name)	slim_hidden_ulp #name
-#else
-# define slim_hidden_proto(name)		int _cairo_dummy_prototype(void)
-# define slim_hidden_proto_no_warn(name)	int _cairo_dummy_prototype(void)
-# define slim_hidden_def(name)			int _cairo_dummy_prototype(void)
-#endif
-
 #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)
 #ifdef __MINGW32__
 #define CAIRO_PRINTF_FORMAT(fmt_index, va_index)                        \
@@ -118,7 +66,6 @@
 #define CAIRO_PRINTF_FORMAT(fmt_index, va_index)
 #endif
 
-/* slim_internal.h */
 #define CAIRO_HAS_HIDDEN_SYMBOLS 1
 #if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)) && \
     (defined(__ELF__) || defined(__APPLE__)) &&			\
@@ -134,6 +81,7 @@
 #ifndef WARN_UNUSED_RESULT
 #define WARN_UNUSED_RESULT
 #endif
+
 /* Add attribute(warn_unused_result) if supported */
 #define cairo_warn	    WARN_UNUSED_RESULT
 #define cairo_private	    cairo_private_no_warn cairo_warn
diff --git a/src/cairo-device-private.h b/src/cairo-device-private.h
index 6eb44f3b6..02bf73d02 100644
--- a/src/cairo-device-private.h
+++ b/src/cairo-device-private.h
@@ -76,11 +76,4 @@ cairo_private cairo_status_t
 _cairo_device_set_error (cairo_device_t *device,
 		         cairo_status_t error);
 
-slim_hidden_proto_no_warn (cairo_device_reference);
-slim_hidden_proto (cairo_device_acquire);
-slim_hidden_proto (cairo_device_release);
-slim_hidden_proto (cairo_device_flush);
-slim_hidden_proto (cairo_device_finish);
-slim_hidden_proto (cairo_device_destroy);
-
 #endif /* _CAIRO_DEVICE_PRIVATE_H_ */
diff --git a/src/cairo-device.c b/src/cairo-device.c
index 57b63a778..1790df3ff 100644
--- a/src/cairo-device.c
+++ b/src/cairo-device.c
@@ -217,7 +217,6 @@ cairo_device_reference (cairo_device_t *device)
 
     return device;
 }
-slim_hidden_def (cairo_device_reference);
 
 /**
  * cairo_device_status:
@@ -272,7 +271,6 @@ cairo_device_flush (cairo_device_t *device)
 	    status = _cairo_device_set_error (device, status);
     }
 }
-slim_hidden_def (cairo_device_flush);
 
 /**
  * cairo_device_finish:
@@ -316,7 +314,6 @@ cairo_device_finish (cairo_device_t *device)
      */
     device->finished = TRUE;
 }
-slim_hidden_def (cairo_device_finish);
 
 /**
  * cairo_device_destroy:
@@ -357,7 +354,6 @@ cairo_device_destroy (cairo_device_t *device)
     _cairo_user_data_array_fini (&user_data);
 
 }
-slim_hidden_def (cairo_device_destroy);
 
 /**
  * cairo_device_get_type:
@@ -432,7 +428,6 @@ cairo_device_acquire (cairo_device_t *device)
 
     return CAIRO_STATUS_SUCCESS;
 }
-slim_hidden_def (cairo_device_acquire);
 
 /**
  * cairo_device_release:
@@ -458,7 +453,6 @@ cairo_device_release (cairo_device_t *device)
 
     CAIRO_MUTEX_UNLOCK (device->mutex);
 }
-slim_hidden_def (cairo_device_release);
 
 cairo_status_t
 _cairo_device_set_error (cairo_device_t *device,
diff --git a/src/cairo-font-face.c b/src/cairo-font-face.c
index e10a6eac2..c5569eb2e 100644
--- a/src/cairo-font-face.c
+++ b/src/cairo-font-face.c
@@ -133,7 +133,6 @@ cairo_font_face_reference (cairo_font_face_t *font_face)
 
     return font_face;
 }
-slim_hidden_def (cairo_font_face_reference);
 
 static inline cairo_bool_t
 __put(cairo_reference_count_t *v)
@@ -190,7 +189,6 @@ cairo_font_face_destroy (cairo_font_face_t *font_face)
 
     free (font_face);
 }
-slim_hidden_def (cairo_font_face_destroy);
 
 /**
  * cairo_font_face_get_type:
@@ -272,7 +270,6 @@ cairo_font_face_get_user_data (cairo_font_face_t	   *font_face,
     return _cairo_user_data_array_get_data (&font_face->user_data,
 					    key);
 }
-slim_hidden_def (cairo_font_face_get_user_data);
 
 /**
  * cairo_font_face_set_user_data:
@@ -304,7 +301,6 @@ cairo_font_face_set_user_data (cairo_font_face_t	   *font_face,
     return _cairo_user_data_array_set_data (&font_face->user_data,
 					    key, user_data, destroy);
 }
-slim_hidden_def (cairo_font_face_set_user_data);
 
 void
 _cairo_unscaled_font_init (cairo_unscaled_font_t               *unscaled_font,
diff --git a/src/cairo-font-options.c b/src/cairo-font-options.c
index 33ee617b8..16acf92cf 100644
--- a/src/cairo-font-options.c
+++ b/src/cairo-font-options.c
@@ -252,7 +252,6 @@ cairo_font_options_status (cairo_font_options_t *options)
     else
 	return CAIRO_STATUS_SUCCESS;
 }
-slim_hidden_def (cairo_font_options_status);
 
 /**
  * cairo_font_options_merge:
@@ -318,7 +317,6 @@ cairo_font_options_merge (cairo_font_options_t       *options,
         memcpy (options->custom_palette, other->custom_palette, sizeof (cairo_palette_color_t) * options->custom_palette_size);
     }
 }
-slim_hidden_def (cairo_font_options_merge);
 
 /**
  * cairo_font_options_equal:
@@ -362,7 +360,6 @@ cairo_font_options_equal (const cairo_font_options_t *options,
               memcmp (options->custom_palette, other->custom_palette,
                       sizeof (cairo_palette_color_t) * options->custom_palette_size) == 0)));
 }
-slim_hidden_def (cairo_font_options_equal);
 
 /**
  * cairo_font_options_hash:
@@ -398,7 +395,6 @@ cairo_font_options_hash (const cairo_font_options_t *options)
 	    (options->hint_metrics << 16) |
             (options->color_mode << 20)) ^ hash;
 }
-slim_hidden_def (cairo_font_options_hash);
 
 /**
  * cairo_font_options_set_antialias:
@@ -419,7 +415,6 @@ cairo_font_options_set_antialias (cairo_font_options_t *options,
 
     options->antialias = antialias;
 }
-slim_hidden_def (cairo_font_options_set_antialias);
 
 /**
  * cairo_font_options_get_antialias:
@@ -462,7 +457,6 @@ cairo_font_options_set_subpixel_order (cairo_font_options_t   *options,
 
     options->subpixel_order = subpixel_order;
 }
-slim_hidden_def (cairo_font_options_set_subpixel_order);
 
 /**
  * cairo_font_options_get_subpixel_order:
@@ -578,7 +572,6 @@ cairo_font_options_set_hint_style (cairo_font_options_t *options,
 
     options->hint_style = hint_style;
 }
-slim_hidden_def (cairo_font_options_set_hint_style);
 
 /**
  * cairo_font_options_get_hint_style:
@@ -621,7 +614,6 @@ cairo_font_options_set_hint_metrics (cairo_font_options_t *options,
 
     options->hint_metrics = hint_metrics;
 }
-slim_hidden_def (cairo_font_options_set_hint_metrics);
 
 /**
  * cairo_font_options_get_hint_metrics:
@@ -877,4 +869,3 @@ cairo_font_options_get_custom_palette_color (cairo_font_options_t *options,
 
     return CAIRO_STATUS_INVALID_INDEX;
 }
-slim_hidden_def (cairo_font_options_get_custom_palette_color);
diff --git a/src/cairo-image-surface.c b/src/cairo-image-surface.c
index 3b11eb981..553e32605 100644
--- a/src/cairo-image-surface.c
+++ b/src/cairo-image-surface.c
@@ -411,9 +411,8 @@ cairo_image_surface_create (cairo_format_t	format,
     return _cairo_image_surface_create_with_pixman_format (NULL, pixman_format,
 							   width, height, -1);
 }
-slim_hidden_def (cairo_image_surface_create);
 
-    cairo_surface_t *
+cairo_surface_t *
 _cairo_image_surface_create_with_content (cairo_content_t	content,
 					  int			width,
 					  int			height)
@@ -449,7 +448,7 @@ _cairo_image_surface_create_with_content (cairo_content_t	content,
  *
  * Since: 1.6
  **/
-    int
+int
 cairo_format_stride_for_width (cairo_format_t	format,
 			       int		width)
 {
@@ -466,7 +465,6 @@ cairo_format_stride_for_width (cairo_format_t	format,
 
     return CAIRO_STRIDE_FOR_WIDTH_BPP (width, bpp);
 }
-slim_hidden_def (cairo_format_stride_for_width);
 
 /**
  * cairo_image_surface_create_for_data:
@@ -513,7 +511,7 @@ slim_hidden_def (cairo_format_stride_for_width);
  *
  * Since: 1.0
  **/
-    cairo_surface_t *
+cairo_surface_t *
 cairo_image_surface_create_for_data (unsigned char     *data,
 				     cairo_format_t	format,
 				     int		width,
@@ -549,7 +547,6 @@ cairo_image_surface_create_for_data (unsigned char     *data,
 							   width, height,
 							   stride);
 }
-slim_hidden_def (cairo_image_surface_create_for_data);
 
 /**
  * cairo_image_surface_get_data:
@@ -581,7 +578,6 @@ cairo_image_surface_get_data (cairo_surface_t *surface)
 
     return image_surface->data;
 }
-slim_hidden_def (cairo_image_surface_get_data);
 
 /**
  * cairo_image_surface_get_format:
@@ -605,7 +601,6 @@ cairo_image_surface_get_format (cairo_surface_t *surface)
 
     return image_surface->format;
 }
-slim_hidden_def (cairo_image_surface_get_format);
 
 /**
  * cairo_image_surface_get_width:
@@ -629,7 +624,6 @@ cairo_image_surface_get_width (cairo_surface_t *surface)
 
     return image_surface->width;
 }
-slim_hidden_def (cairo_image_surface_get_width);
 
 /**
  * cairo_image_surface_get_height:
@@ -653,7 +647,6 @@ cairo_image_surface_get_height (cairo_surface_t *surface)
 
     return image_surface->height;
 }
-slim_hidden_def (cairo_image_surface_get_height);
 
 /**
  * cairo_image_surface_get_stride:
@@ -681,9 +674,8 @@ cairo_image_surface_get_stride (cairo_surface_t *surface)
 
     return image_surface->stride;
 }
-slim_hidden_def (cairo_image_surface_get_stride);
 
-    cairo_format_t
+cairo_format_t
 _cairo_format_from_content (cairo_content_t content)
 {
     switch (content) {
@@ -699,7 +691,7 @@ _cairo_format_from_content (cairo_content_t content)
     return CAIRO_FORMAT_INVALID;
 }
 
-    cairo_content_t
+cairo_content_t
 _cairo_content_from_format (cairo_format_t format)
 {
     switch (format) {
@@ -724,7 +716,7 @@ _cairo_content_from_format (cairo_format_t format)
     return CAIRO_CONTENT_COLOR_ALPHA;
 }
 
-    int
+int
 _cairo_format_bits_per_pixel (cairo_format_t format)
 {
     switch (format) {
diff --git a/src/cairo-matrix.c b/src/cairo-matrix.c
index e8fd097ae..f2be48b74 100644
--- a/src/cairo-matrix.c
+++ b/src/cairo-matrix.c
@@ -85,7 +85,6 @@ cairo_matrix_init_identity (cairo_matrix_t *matrix)
 		       0, 1,
 		       0, 0);
 }
-slim_hidden_def(cairo_matrix_init_identity);
 
 /**
  * cairo_matrix_init:
@@ -118,7 +117,6 @@ cairo_matrix_init (cairo_matrix_t *matrix,
     matrix->xy = xy; matrix->yy = yy;
     matrix->x0 = x0; matrix->y0 = y0;
 }
-slim_hidden_def(cairo_matrix_init);
 
 /**
  * _cairo_matrix_get_affine:
@@ -178,7 +176,6 @@ cairo_matrix_init_translate (cairo_matrix_t *matrix,
 		       0, 1,
 		       tx, ty);
 }
-slim_hidden_def(cairo_matrix_init_translate);
 
 /**
  * cairo_matrix_translate:
@@ -202,7 +199,6 @@ cairo_matrix_translate (cairo_matrix_t *matrix, double tx, double ty)
 
     cairo_matrix_multiply (matrix, &tmp, matrix);
 }
-slim_hidden_def (cairo_matrix_translate);
 
 /**
  * cairo_matrix_init_scale:
@@ -224,7 +220,6 @@ cairo_matrix_init_scale (cairo_matrix_t *matrix,
 		       0, sy,
 		       0, 0);
 }
-slim_hidden_def(cairo_matrix_init_scale);
 
 /**
  * cairo_matrix_scale:
@@ -247,7 +242,6 @@ cairo_matrix_scale (cairo_matrix_t *matrix, double sx, double sy)
 
     cairo_matrix_multiply (matrix, &tmp, matrix);
 }
-slim_hidden_def(cairo_matrix_scale);
 
 /**
  * cairo_matrix_init_rotate:
@@ -277,7 +271,6 @@ cairo_matrix_init_rotate (cairo_matrix_t *matrix,
 		       -s, c,
 		       0, 0);
 }
-slim_hidden_def(cairo_matrix_init_rotate);
 
 /**
  * cairo_matrix_rotate:
@@ -304,7 +297,6 @@ cairo_matrix_rotate (cairo_matrix_t *matrix, double radians)
 
     cairo_matrix_multiply (matrix, &tmp, matrix);
 }
-slim_hidden_def (cairo_matrix_rotate);
 
 /**
  * cairo_matrix_multiply:
@@ -344,7 +336,6 @@ cairo_matrix_multiply (cairo_matrix_t *result, const cairo_matrix_t *a, const ca
 
     *result = r;
 }
-slim_hidden_def(cairo_matrix_multiply);
 
 void
 _cairo_matrix_multiply (cairo_matrix_t *r,
@@ -390,7 +381,6 @@ cairo_matrix_transform_distance (const cairo_matrix_t *matrix, double *dx, doubl
     *dx = new_x;
     *dy = new_y;
 }
-slim_hidden_def(cairo_matrix_transform_distance);
 
 /**
  * cairo_matrix_transform_point:
@@ -410,7 +400,6 @@ cairo_matrix_transform_point (const cairo_matrix_t *matrix, double *x, double *y
     *x += matrix->x0;
     *y += matrix->y0;
 }
-slim_hidden_def(cairo_matrix_transform_point);
 
 void
 _cairo_matrix_transform_bounding_box (const cairo_matrix_t *matrix,
@@ -621,7 +610,6 @@ cairo_matrix_invert (cairo_matrix_t *matrix)
 
     return CAIRO_STATUS_SUCCESS;
 }
-slim_hidden_def(cairo_matrix_invert);
 
 cairo_bool_t
 _cairo_matrix_is_invertible (const cairo_matrix_t *matrix)
diff --git a/src/cairo-misc.c b/src/cairo-misc.c
index 6f6f9937e..6e3189740 100644
--- a/src/cairo-misc.c
+++ b/src/cairo-misc.c
@@ -184,7 +184,6 @@ cairo_status_to_string (cairo_status_t status)
     }
 }
 
-
 /**
  * cairo_glyph_allocate:
  * @num_glyphs: number of glyphs to allocate
@@ -213,7 +212,6 @@ cairo_glyph_allocate (int num_glyphs)
 
     return _cairo_malloc_ab (num_glyphs, sizeof (cairo_glyph_t));
 }
-slim_hidden_def (cairo_glyph_allocate);
 
 /**
  * cairo_glyph_free:
@@ -233,7 +231,6 @@ cairo_glyph_free (cairo_glyph_t *glyphs)
 {
     free (glyphs);
 }
-slim_hidden_def (cairo_glyph_free);
 
 /**
  * cairo_text_cluster_allocate:
@@ -263,7 +260,6 @@ cairo_text_cluster_allocate (int num_clusters)
 
     return _cairo_malloc_ab (num_clusters, sizeof (cairo_text_cluster_t));
 }
-slim_hidden_def (cairo_text_cluster_allocate);
 
 /**
  * cairo_text_cluster_free:
@@ -283,8 +279,6 @@ cairo_text_cluster_free (cairo_text_cluster_t *clusters)
 {
     free (clusters);
 }
-slim_hidden_def (cairo_text_cluster_free);
-
 
 /* Private stuff */
 
diff --git a/src/cairo-path.c b/src/cairo-path.c
index 566e86f5a..efd84901e 100644
--- a/src/cairo-path.c
+++ b/src/cairo-path.c
@@ -372,7 +372,6 @@ cairo_path_destroy (cairo_path_t *path)
 
     free (path);
 }
-slim_hidden_def (cairo_path_destroy);
 
 /**
  * _cairo_path_create:
diff --git a/src/cairo-pattern.c b/src/cairo-pattern.c
index 2c0ba31f8..1933fb80a 100644
--- a/src/cairo-pattern.c
+++ b/src/cairo-pattern.c
@@ -676,7 +676,6 @@ cairo_pattern_create_rgb (double red, double green, double blue)
 {
     return cairo_pattern_create_rgba (red, green, blue, 1.0);
 }
-slim_hidden_def (cairo_pattern_create_rgb);
 
 /**
  * cairo_pattern_create_rgba:
@@ -720,7 +719,6 @@ cairo_pattern_create_rgba (double red, double green, double blue,
 
     return _cairo_pattern_create_solid (&color);
 }
-slim_hidden_def (cairo_pattern_create_rgba);
 
 /**
  * cairo_pattern_create_for_surface:
@@ -769,7 +767,6 @@ cairo_pattern_create_for_surface (cairo_surface_t *surface)
 
     return &pattern->base;
 }
-slim_hidden_def (cairo_pattern_create_for_surface);
 
 /**
  * cairo_pattern_create_linear:
@@ -821,7 +818,6 @@ cairo_pattern_create_linear (double x0, double y0, double x1, double y1)
 
     return &pattern->base.base;
 }
-slim_hidden_def (cairo_pattern_create_linear);
 
 /**
  * cairo_pattern_create_radial:
@@ -876,7 +872,6 @@ cairo_pattern_create_radial (double cx0, double cy0, double radius0,
 
     return &pattern->base.base;
 }
-slim_hidden_def (cairo_pattern_create_radial);
 
 /* This order is specified in the diagram in the documentation for
  * cairo_pattern_create_mesh() */
@@ -1057,7 +1052,6 @@ cairo_pattern_create_mesh (void)
 
     return &pattern->base;
 }
-slim_hidden_def (cairo_pattern_create_mesh);
 
 /**
  * cairo_pattern_reference:
@@ -1087,7 +1081,6 @@ cairo_pattern_reference (cairo_pattern_t *pattern)
 
     return pattern;
 }
-slim_hidden_def (cairo_pattern_reference);
 
 /**
  * cairo_pattern_get_type:
@@ -1105,7 +1098,6 @@ cairo_pattern_get_type (cairo_pattern_t *pattern)
 {
     return pattern->type;
 }
-slim_hidden_def (cairo_pattern_get_type);
 
 /**
  * cairo_pattern_status:
@@ -1159,7 +1151,6 @@ cairo_pattern_destroy (cairo_pattern_t *pattern)
     else
 	free (pattern);
 }
-slim_hidden_def (cairo_pattern_destroy);
 
 /**
  * cairo_pattern_get_reference_count:
@@ -1293,7 +1284,6 @@ cairo_mesh_pattern_begin_patch (cairo_pattern_t *pattern)
     for (i = 0; i < 4; i++)
 	mesh->has_color[i] = FALSE;
 }
-slim_hidden_def (cairo_mesh_pattern_begin_patch);
 
 static void
 _calc_control_point (cairo_mesh_patch_t *patch, int control_point)
@@ -1410,7 +1400,6 @@ cairo_mesh_pattern_end_patch (cairo_pattern_t *pattern)
 
     mesh->current_patch = NULL;
 }
-slim_hidden_def (cairo_mesh_pattern_end_patch);
 
 /**
  * cairo_mesh_pattern_curve_to:
@@ -1500,7 +1489,6 @@ cairo_mesh_pattern_curve_to (cairo_pattern_t *pattern,
 	mesh->current_patch->points[i][j].y = y3;
     }
 }
-slim_hidden_def (cairo_mesh_pattern_curve_to);
 
 /**
  * cairo_mesh_pattern_line_to:
@@ -1571,7 +1559,6 @@ cairo_mesh_pattern_line_to (cairo_pattern_t *pattern,
 				 (last_point.y + 2 * y) * (1. / 3),
 				 x, y);
 }
-slim_hidden_def (cairo_mesh_pattern_line_to);
 
 /**
  * cairo_mesh_pattern_move_to:
@@ -1621,7 +1608,6 @@ cairo_mesh_pattern_move_to (cairo_pattern_t *pattern,
     mesh->current_patch->points[0][0].x = x;
     mesh->current_patch->points[0][0].y = y;
 }
-slim_hidden_def (cairo_mesh_pattern_move_to);
 
 /**
  * cairo_mesh_pattern_set_control_point:
@@ -1840,7 +1826,6 @@ cairo_mesh_pattern_set_corner_color_rgba (cairo_pattern_t *pattern,
 
     _cairo_mesh_pattern_set_corner_color (mesh, corner_num, red, green, blue, alpha);
 }
-slim_hidden_def (cairo_mesh_pattern_set_corner_color_rgba);
 
 static void
 _cairo_pattern_add_color_stop (cairo_gradient_pattern_t	*pattern,
@@ -1984,7 +1969,6 @@ cairo_pattern_add_color_stop_rgba (cairo_pattern_t *pattern,
     _cairo_pattern_add_color_stop ((cairo_gradient_pattern_t *) pattern,
 				   offset, red, green, blue, alpha);
 }
-slim_hidden_def (cairo_pattern_add_color_stop_rgba);
 
 /**
  * cairo_pattern_set_matrix:
@@ -2041,7 +2025,6 @@ cairo_pattern_set_matrix (cairo_pattern_t      *pattern,
     if (unlikely (status))
 	status = _cairo_pattern_set_error (pattern, status);
 }
-slim_hidden_def (cairo_pattern_set_matrix);
 
 /**
  * cairo_pattern_get_matrix:
@@ -2131,7 +2114,6 @@ cairo_pattern_set_extend (cairo_pattern_t *pattern, cairo_extend_t extend)
     pattern->extend = extend;
     _cairo_pattern_notify_observers (pattern, CAIRO_PATTERN_NOTIFY_EXTEND);
 }
-slim_hidden_def (cairo_pattern_set_extend);
 
 /**
  * cairo_pattern_get_extend:
@@ -2150,7 +2132,6 @@ cairo_pattern_get_extend (cairo_pattern_t *pattern)
 {
     return pattern->extend;
 }
-slim_hidden_def (cairo_pattern_get_extend);
 
 void
 _cairo_pattern_pretransform (cairo_pattern_t	*pattern,
@@ -2714,7 +2695,6 @@ _cairo_gradient_pattern_interpolate (const cairo_gradient_pattern_t *gradient,
 #undef lerp
 }
 
-
 /**
  * _cairo_gradient_pattern_fit_to_range:
  *
@@ -4213,7 +4193,6 @@ cairo_pattern_get_rgba (cairo_pattern_t *pattern,
 
     return CAIRO_STATUS_SUCCESS;
 }
-slim_hidden_def (cairo_pattern_get_rgba);
 
 /**
  * cairo_pattern_get_surface:
@@ -4463,7 +4442,6 @@ cairo_mesh_pattern_get_patch_count (cairo_pattern_t *pattern,
 
     return CAIRO_STATUS_SUCCESS;
 }
-slim_hidden_def (cairo_mesh_pattern_get_patch_count);
 
 /**
  * cairo_mesh_pattern_get_path:
@@ -4551,7 +4529,6 @@ cairo_mesh_pattern_get_path (cairo_pattern_t *pattern,
 
     return path;
 }
-slim_hidden_def (cairo_mesh_pattern_get_path);
 
 /**
  * cairo_mesh_pattern_get_corner_color_rgba:
@@ -4621,7 +4598,6 @@ cairo_mesh_pattern_get_corner_color_rgba (cairo_pattern_t *pattern,
 
     return CAIRO_STATUS_SUCCESS;
 }
-slim_hidden_def (cairo_mesh_pattern_get_corner_color_rgba);
 
 /**
  * cairo_mesh_pattern_get_control_point:
@@ -4686,7 +4662,6 @@ cairo_mesh_pattern_get_control_point (cairo_pattern_t *pattern,
 
     return CAIRO_STATUS_SUCCESS;
 }
-slim_hidden_def (cairo_mesh_pattern_get_control_point);
 
 void
 _cairo_pattern_reset_static_data (void)
diff --git a/src/cairo-png.c b/src/cairo-png.c
index 5b9c58447..63e3c4cdb 100644
--- a/src/cairo-png.c
+++ b/src/cairo-png.c
@@ -569,7 +569,6 @@ cairo_surface_write_to_png_stream (cairo_surface_t	*surface,
 
     return write_png (surface, stream_write_func, &png_closure);
 }
-slim_hidden_def (cairo_surface_write_to_png_stream);
 
 static inline int
 multiply_alpha (int alpha, int color)
@@ -987,4 +986,3 @@ cairo_image_surface_create_from_png_stream (cairo_read_func_t	read_func,
 
     return read_png (&png_closure);
 }
-slim_hidden_def (cairo_image_surface_create_from_png_stream);
diff --git a/src/cairo-recording-surface-private.h b/src/cairo-recording-surface-private.h
index acace4ec8..2ee414e7d 100644
--- a/src/cairo-recording-surface-private.h
+++ b/src/cairo-recording-surface-private.h
@@ -183,8 +183,6 @@ typedef struct _cairo_recording_region_array {
     cairo_list_t link;
 } cairo_recording_regions_array_t;
 
-slim_hidden_proto (cairo_recording_surface_create);
-
 cairo_private cairo_int_status_t
 _cairo_recording_surface_get_path (cairo_surface_t	 *surface,
 				   cairo_path_fixed_t *path);
diff --git a/src/cairo-recording-surface.c b/src/cairo-recording-surface.c
index 5735c7ca3..23e98c6db 100644
--- a/src/cairo-recording-surface.c
+++ b/src/cairo-recording-surface.c
@@ -445,7 +445,6 @@ cairo_recording_surface_create (cairo_content_t		 content,
 
     return &surface->base;
 }
-slim_hidden_def (cairo_recording_surface_create);
 
 static cairo_surface_t *
 _cairo_recording_surface_create_similar (void		       *abstract_surface,
@@ -2673,7 +2672,6 @@ DONE:
     if (height)
 	*height = _cairo_fixed_to_double (bbox.p2.y - bbox.p1.y);
 }
-slim_hidden_def (cairo_recording_surface_ink_extents);
 
 cairo_status_t
 _cairo_recording_surface_get_bbox (cairo_recording_surface_t *surface,
diff --git a/src/cairo-region.c b/src/cairo-region.c
index d38f50d92..320a23fa9 100644
--- a/src/cairo-region.c
+++ b/src/cairo-region.c
@@ -213,7 +213,6 @@ cairo_region_create (void)
 
     return region;
 }
-slim_hidden_def (cairo_region_create);
 
 /**
  * cairo_region_create_rectangles:
@@ -281,7 +280,6 @@ cairo_region_create_rectangles (const cairo_rectangle_int_t *rects,
 
     return region;
 }
-slim_hidden_def (cairo_region_create_rectangles);
 
 cairo_region_t *
 _cairo_region_create_from_boxes (const cairo_box_t *boxes, int count)
@@ -347,7 +345,6 @@ cairo_region_create_rectangle (const cairo_rectangle_int_t *rectangle)
 
     return region;
 }
-slim_hidden_def (cairo_region_create_rectangle);
 
 /**
  * cairo_region_copy:
@@ -384,7 +381,6 @@ cairo_region_copy (const cairo_region_t *original)
 
     return copy;
 }
-slim_hidden_def (cairo_region_copy);
 
 /**
  * cairo_region_reference:
@@ -409,7 +405,6 @@ cairo_region_reference (cairo_region_t *region)
     _cairo_reference_count_inc (&region->ref_count);
     return region;
 }
-slim_hidden_def (cairo_region_reference);
 
 /**
  * cairo_region_destroy:
@@ -435,7 +430,6 @@ cairo_region_destroy (cairo_region_t *region)
     _cairo_region_fini (region);
     free (region);
 }
-slim_hidden_def (cairo_region_destroy);
 
 /**
  * cairo_region_num_rectangles:
@@ -455,7 +449,6 @@ cairo_region_num_rectangles (const cairo_region_t *region)
 
     return pixman_region32_n_rects (CONST_CAST &region->rgn);
 }
-slim_hidden_def (cairo_region_num_rectangles);
 
 /**
  * cairo_region_get_rectangle:
@@ -487,7 +480,6 @@ cairo_region_get_rectangle (const cairo_region_t *region,
     rectangle->width = pbox->x2 - pbox->x1;
     rectangle->height = pbox->y2 - pbox->y1;
 }
-slim_hidden_def (cairo_region_get_rectangle);
 
 /**
  * cairo_region_get_extents:
@@ -517,7 +509,6 @@ cairo_region_get_extents (const cairo_region_t *region,
     extents->width = pextents->x2 - pextents->x1;
     extents->height = pextents->y2 - pextents->y1;
 }
-slim_hidden_def (cairo_region_get_extents);
 
 /**
  * cairo_region_status:
@@ -535,7 +526,6 @@ cairo_region_status (const cairo_region_t *region)
 {
     return region->status;
 }
-slim_hidden_def (cairo_region_status);
 
 /**
  * cairo_region_subtract:
@@ -566,7 +556,6 @@ cairo_region_subtract (cairo_region_t *dst, const cairo_region_t *other)
 
     return CAIRO_STATUS_SUCCESS;
 }
-slim_hidden_def (cairo_region_subtract);
 
 /**
  * cairo_region_subtract_rectangle:
@@ -600,7 +589,6 @@ cairo_region_subtract_rectangle (cairo_region_t *dst,
 
     return status;
 }
-slim_hidden_def (cairo_region_subtract_rectangle);
 
 /**
  * cairo_region_intersect:
@@ -627,7 +615,6 @@ cairo_region_intersect (cairo_region_t *dst, const cairo_region_t *other)
 
     return CAIRO_STATUS_SUCCESS;
 }
-slim_hidden_def (cairo_region_intersect);
 
 /**
  * cairo_region_intersect_rectangle:
@@ -662,7 +649,6 @@ cairo_region_intersect_rectangle (cairo_region_t *dst,
 
     return status;
 }
-slim_hidden_def (cairo_region_intersect_rectangle);
 
 /**
  * cairo_region_union:
@@ -690,7 +676,6 @@ cairo_region_union (cairo_region_t *dst,
 
     return CAIRO_STATUS_SUCCESS;
 }
-slim_hidden_def (cairo_region_union);
 
 /**
  * cairo_region_union_rectangle:
@@ -724,7 +709,6 @@ cairo_region_union_rectangle (cairo_region_t *dst,
 
     return status;
 }
-slim_hidden_def (cairo_region_union_rectangle);
 
 /**
  * cairo_region_xor:
@@ -763,7 +747,6 @@ cairo_region_xor (cairo_region_t *dst, const cairo_region_t *other)
 
     return status;
 }
-slim_hidden_def (cairo_region_xor);
 
 /**
  * cairo_region_xor_rectangle:
@@ -804,7 +787,6 @@ cairo_region_xor_rectangle (cairo_region_t *dst,
 
     return status;
 }
-slim_hidden_def (cairo_region_xor_rectangle);
 
 /**
  * cairo_region_is_empty:
@@ -824,7 +806,6 @@ cairo_region_is_empty (const cairo_region_t *region)
 
     return ! pixman_region32_not_empty (CONST_CAST &region->rgn);
 }
-slim_hidden_def (cairo_region_is_empty);
 
 /**
  * cairo_region_translate:
@@ -845,7 +826,6 @@ cairo_region_translate (cairo_region_t *region,
 
     pixman_region32_translate (&region->rgn, dx, dy);
 }
-slim_hidden_def (cairo_region_translate);
 
 /**
  * cairo_region_contains_rectangle:
@@ -886,7 +866,6 @@ cairo_region_contains_rectangle (const cairo_region_t *region,
     case PIXMAN_REGION_PART: return CAIRO_REGION_OVERLAP_PART;
     }
 }
-slim_hidden_def (cairo_region_contains_rectangle);
 
 /**
  * cairo_region_contains_point:
@@ -911,7 +890,6 @@ cairo_region_contains_point (const cairo_region_t *region,
 
     return pixman_region32_contains_point (CONST_CAST &region->rgn, x, y, &box);
 }
-slim_hidden_def (cairo_region_contains_point);
 
 /**
  * cairo_region_equal:
@@ -942,4 +920,3 @@ cairo_region_equal (const cairo_region_t *a,
 
     return pixman_region32_equal (CONST_CAST &a->rgn, CONST_CAST &b->rgn);
 }
-slim_hidden_def (cairo_region_equal);
diff --git a/src/cairo-scaled-font.c b/src/cairo-scaled-font.c
index 75640f723..58919e215 100755
--- a/src/cairo-scaled-font.c
+++ b/src/cairo-scaled-font.c
@@ -336,7 +336,6 @@ cairo_scaled_font_status (cairo_scaled_font_t *scaled_font)
 {
     return scaled_font->status;
 }
-slim_hidden_def (cairo_scaled_font_status);
 
 /* Here we keep a unique mapping from
  * font_face/matrix/ctm/font_options => #cairo_scaled_font_t.
@@ -1239,7 +1238,6 @@ cairo_scaled_font_create (cairo_font_face_t          *font_face,
 
     return scaled_font;
 }
-slim_hidden_def (cairo_scaled_font_create);
 
 static cairo_scaled_font_t *_cairo_scaled_font_nil_objects[CAIRO_STATUS_LAST_STATUS + 1];
 
@@ -1325,7 +1323,6 @@ cairo_scaled_font_reference (cairo_scaled_font_t *scaled_font)
 
     return scaled_font;
 }
-slim_hidden_def (cairo_scaled_font_reference);
 
 /**
  * cairo_scaled_font_destroy:
@@ -1409,7 +1406,6 @@ cairo_scaled_font_destroy (cairo_scaled_font_t *scaled_font)
 	free (lru);
     }
 }
-slim_hidden_def (cairo_scaled_font_destroy);
 
 /**
  * cairo_scaled_font_get_reference_count:
@@ -1453,7 +1449,6 @@ cairo_scaled_font_get_user_data (cairo_scaled_font_t	     *scaled_font,
     return _cairo_user_data_array_get_data (&scaled_font->user_data,
 					    key);
 }
-slim_hidden_def (cairo_scaled_font_get_user_data);
 
 /**
  * cairo_scaled_font_set_user_data:
@@ -1485,7 +1480,6 @@ cairo_scaled_font_set_user_data (cairo_scaled_font_t	     *scaled_font,
     return _cairo_user_data_array_set_data (&scaled_font->user_data,
 					    key, user_data, destroy);
 }
-slim_hidden_def (cairo_scaled_font_set_user_data);
 
 /* Public font API follows. */
 
@@ -1513,7 +1507,6 @@ cairo_scaled_font_extents (cairo_scaled_font_t  *scaled_font,
 
     *extents = scaled_font->extents;
 }
-slim_hidden_def (cairo_scaled_font_extents);
 
 /**
  * cairo_scaled_font_text_extents:
@@ -1713,7 +1706,6 @@ ZERO_EXTENTS:
     extents->x_advance = 0.0;
     extents->y_advance = 0.0;
 }
-slim_hidden_def (cairo_scaled_font_glyph_extents);
 
 #define GLYPH_LUT_SIZE 64
 static cairo_status_t
@@ -2180,7 +2172,6 @@ cairo_scaled_font_text_to_glyphs (cairo_scaled_font_t   *scaled_font,
 
     return status;
 }
-slim_hidden_def (cairo_scaled_font_text_to_glyphs);
 
 static inline cairo_bool_t
 _range_contains_glyph (const cairo_box_t *extents,
@@ -2991,7 +2982,6 @@ _cairo_scaled_font_get_max_scale (cairo_scaled_font_t *scaled_font)
     return scaled_font->max_scale;
 }
 
-
 /**
  * cairo_scaled_font_get_font_face:
  * @scaled_font: a #cairo_scaled_font_t
@@ -3017,7 +3007,6 @@ cairo_scaled_font_get_font_face (cairo_scaled_font_t *scaled_font)
 
     return scaled_font->font_face;
 }
-slim_hidden_def (cairo_scaled_font_get_font_face);
 
 /**
  * cairo_scaled_font_get_font_matrix:
@@ -3040,7 +3029,6 @@ cairo_scaled_font_get_font_matrix (cairo_scaled_font_t	*scaled_font,
 
     *font_matrix = scaled_font->font_matrix;
 }
-slim_hidden_def (cairo_scaled_font_get_font_matrix);
 
 /**
  * cairo_scaled_font_get_ctm:
@@ -3065,7 +3053,6 @@ cairo_scaled_font_get_ctm (cairo_scaled_font_t	*scaled_font,
 
     *ctm = scaled_font->ctm;
 }
-slim_hidden_def (cairo_scaled_font_get_ctm);
 
 /**
  * cairo_scaled_font_get_scale_matrix:
@@ -3116,7 +3103,6 @@ cairo_scaled_font_get_font_options (cairo_scaled_font_t		*scaled_font,
     _cairo_font_options_fini (options);
     _cairo_font_options_init_copy (options, &scaled_font->options);
 }
-slim_hidden_def (cairo_scaled_font_get_font_options);
 
 cairo_bool_t
 _cairo_scaled_font_has_color_glyphs (cairo_scaled_font_t *scaled_font)
diff --git a/src/cairo-script-private.h b/src/cairo-script-private.h
index 5b506f500..989401244 100644
--- a/src/cairo-script-private.h
+++ b/src/cairo-script-private.h
@@ -52,8 +52,6 @@ cairo_private void
 _cairo_script_context_attach_snapshots (cairo_device_t *device,
 					cairo_bool_t enable);
 
-slim_hidden_proto (cairo_script_surface_create);
-
 CAIRO_END_DECLS
 
 #endif /* CAIRO_SCRIPT_PRIVATE_H */
diff --git a/src/cairo-script-surface.c b/src/cairo-script-surface.c
index c3f1b05bb..1175bd8f3 100644
--- a/src/cairo-script-surface.c
+++ b/src/cairo-script-surface.c
@@ -3963,7 +3963,6 @@ cairo_script_surface_create (cairo_device_t *script,
 						   content, extents,
 						   NULL)->base;
 }
-slim_hidden_def (cairo_script_surface_create);
 
 /**
  * cairo_script_surface_create_for_target:
diff --git a/src/cairo-surface.c b/src/cairo-surface.c
index f1292e0bb..9110edb1a 100644
--- a/src/cairo-surface.c
+++ b/src/cairo-surface.c
@@ -260,7 +260,6 @@ cairo_surface_status (cairo_surface_t *surface)
 {
     return surface->status;
 }
-slim_hidden_def (cairo_surface_status);
 
 static unsigned int
 _cairo_surface_allocate_unique_id (void)
@@ -605,7 +604,6 @@ cairo_surface_create_similar_image (cairo_surface_t  *other,
 
     return image;
 }
-slim_hidden_def (cairo_surface_create_similar_image);
 
 /**
  * _cairo_surface_map_to_image:
@@ -937,7 +935,6 @@ cairo_surface_reference (cairo_surface_t *surface)
 
     return surface;
 }
-slim_hidden_def (cairo_surface_reference);
 
 /**
  * cairo_surface_destroy:
@@ -993,7 +990,6 @@ cairo_surface_destroy (cairo_surface_t *surface)
 
     free (surface);
 }
-slim_hidden_def(cairo_surface_destroy);
 
 /**
  * cairo_surface_get_reference_count:
@@ -1087,7 +1083,6 @@ cairo_surface_finish (cairo_surface_t *surface)
 
     cairo_surface_destroy (surface);
 }
-slim_hidden_def (cairo_surface_finish);
 
 /**
  * _cairo_surface_release_device_reference:
@@ -1215,7 +1210,6 @@ cairo_surface_get_mime_data (cairo_surface_t		*surface,
 	}
     }
 }
-slim_hidden_def (cairo_surface_get_mime_data);
 
 static void
 _cairo_mime_data_destroy (void *ptr)
@@ -1472,7 +1466,6 @@ cairo_surface_set_mime_data (cairo_surface_t		*surface,
 
     return CAIRO_STATUS_SUCCESS;
 }
-slim_hidden_def (cairo_surface_set_mime_data);
 
 /**
  * cairo_surface_supports_mime_type:
@@ -1512,7 +1505,6 @@ cairo_surface_supports_mime_type (cairo_surface_t		*surface,
 
     return FALSE;
 }
-slim_hidden_def (cairo_surface_supports_mime_type);
 
 static void
 _cairo_mime_data_reference (const void *key, void *elt, void *closure)
@@ -1624,7 +1616,6 @@ cairo_surface_get_font_options (cairo_surface_t       *surface,
 
     _cairo_font_options_init_copy (options, &surface->font_options);
 }
-slim_hidden_def (cairo_surface_get_font_options);
 
 cairo_status_t
 _cairo_surface_flush (cairo_surface_t *surface, unsigned flags)
@@ -1666,7 +1657,6 @@ cairo_surface_flush (cairo_surface_t *surface)
     if (unlikely (status))
 	_cairo_surface_set_error (surface, status);
 }
-slim_hidden_def (cairo_surface_flush);
 
 /**
  * cairo_surface_mark_dirty:
@@ -1695,7 +1685,6 @@ cairo_surface_mark_dirty (cairo_surface_t *surface)
 					extents.x, extents.y,
 					extents.width, extents.height);
 }
-slim_hidden_def (cairo_surface_mark_dirty);
 
 /**
  * cairo_surface_mark_dirty_rectangle:
@@ -1769,7 +1758,6 @@ cairo_surface_mark_dirty_rectangle (cairo_surface_t *surface,
 	    _cairo_surface_set_error (surface, status);
     }
 }
-slim_hidden_def (cairo_surface_mark_dirty_rectangle);
 
 /**
  * cairo_surface_set_device_scale:
@@ -1825,7 +1813,6 @@ cairo_surface_set_device_scale (cairo_surface_t *surface,
 
     _cairo_observers_notify (&surface->device_transform_observers, surface);
 }
-slim_hidden_def (cairo_surface_set_device_scale);
 
 /**
  * cairo_surface_get_device_scale:
@@ -1848,7 +1835,6 @@ cairo_surface_get_device_scale (cairo_surface_t *surface,
     if (y_scale)
 	*y_scale = surface->device_transform.yy;
 }
-slim_hidden_def (cairo_surface_get_device_scale);
 
 /**
  * cairo_surface_set_device_offset:
@@ -1903,7 +1889,6 @@ cairo_surface_set_device_offset (cairo_surface_t *surface,
 
     _cairo_observers_notify (&surface->device_transform_observers, surface);
 }
-slim_hidden_def (cairo_surface_set_device_offset);
 
 /**
  * cairo_surface_get_device_offset:
@@ -1926,7 +1911,6 @@ cairo_surface_get_device_offset (cairo_surface_t *surface,
     if (y_offset)
 	*y_offset = surface->device_transform.y0;
 }
-slim_hidden_def (cairo_surface_get_device_offset);
 
 /**
  * cairo_surface_set_fallback_resolution:
@@ -1995,7 +1979,6 @@ cairo_surface_set_fallback_resolution (cairo_surface_t	*surface,
     surface->x_fallback_resolution = x_pixels_per_inch;
     surface->y_fallback_resolution = y_pixels_per_inch;
 }
-slim_hidden_def (cairo_surface_set_fallback_resolution);
 
 /**
  * cairo_surface_get_fallback_resolution:
@@ -2503,7 +2486,6 @@ cairo_surface_copy_page (cairo_surface_t *surface)
 
     _cairo_surface_set_error (surface, surface->backend->copy_page (surface));
 }
-slim_hidden_def (cairo_surface_copy_page);
 
 /**
  * cairo_surface_show_page:
@@ -2542,7 +2524,6 @@ cairo_surface_show_page (cairo_surface_t *surface)
 
     _cairo_surface_set_error (surface, surface->backend->show_page (surface));
 }
-slim_hidden_def (cairo_surface_show_page);
 
 /**
  * _cairo_surface_get_extents:
@@ -2633,7 +2614,6 @@ cairo_surface_has_show_text_glyphs (cairo_surface_t	    *surface)
     else
 	return surface->backend->show_text_glyphs != NULL;
 }
-slim_hidden_def (cairo_surface_has_show_text_glyphs);
 
 #define GLYPH_CACHE_SIZE 64
 
diff --git a/src/cairo-tee-surface.c b/src/cairo-tee-surface.c
index 1d075a29c..f15483c26 100644
--- a/src/cairo-tee-surface.c
+++ b/src/cairo-tee-surface.c
@@ -56,9 +56,6 @@ typedef struct _cairo_tee_surface {
     cairo_array_t slaves;
 } cairo_tee_surface_t;
 
-slim_hidden_proto (cairo_tee_surface_create);
-slim_hidden_proto (cairo_tee_surface_add);
-
 static cairo_surface_t *
 _cairo_tee_surface_create_similar (void			*abstract_surface,
 				   cairo_content_t	 content,
@@ -447,7 +444,6 @@ cairo_tee_surface_create (cairo_surface_t *master)
 
     return &surface->base;
 }
-slim_hidden_def (cairo_tee_surface_create);
 
 void
 cairo_tee_surface_add (cairo_surface_t *abstract_surface,
@@ -485,7 +481,6 @@ cairo_tee_surface_add (cairo_surface_t *abstract_surface,
 	status = _cairo_surface_set_error (&surface->base, status);
     }
 }
-slim_hidden_def (cairo_tee_surface_add);
 
 void
 cairo_tee_surface_remove (cairo_surface_t *abstract_surface,
diff --git a/src/cairo-toy-font-face.c b/src/cairo-toy-font-face.c
index c27eebefc..24cd1c4d7 100644
--- a/src/cairo-toy-font-face.c
+++ b/src/cairo-toy-font-face.c
@@ -340,7 +340,6 @@ cairo_toy_font_face_create (const char          *family,
  UNWIND:
     return (cairo_font_face_t*) &_cairo_font_face_nil;
 }
-slim_hidden_def (cairo_toy_font_face_create);
 
 static cairo_bool_t
 _cairo_toy_font_face_destroy (void *abstract_face)
@@ -469,7 +468,6 @@ cairo_toy_font_face_get_slant (cairo_font_face_t *font_face)
     }
     return toy_font_face->slant;
 }
-slim_hidden_def (cairo_toy_font_face_get_slant);
 
 /**
  * cairo_toy_font_face_get_weight:
@@ -496,7 +494,6 @@ cairo_toy_font_face_get_weight (cairo_font_face_t *font_face)
     }
     return toy_font_face->weight;
 }
-slim_hidden_def (cairo_toy_font_face_get_weight);
 
 static const cairo_font_face_backend_t _cairo_toy_font_face_backend = {
     CAIRO_FONT_TYPE_TOY,
diff --git a/src/cairo-user-font.c b/src/cairo-user-font.c
index ee11d864c..37642cd1c 100644
--- a/src/cairo-user-font.c
+++ b/src/cairo-user-font.c
@@ -734,7 +734,6 @@ cairo_user_font_face_create (void)
 
     return &font_face->base;
 }
-slim_hidden_def(cairo_user_font_face_create);
 
 /* User-font method setters */
 
@@ -775,7 +774,6 @@ cairo_user_font_face_set_init_func (cairo_font_face_t                  *font_fac
     }
     user_font_face->scaled_font_methods.init = init_func;
 }
-slim_hidden_def(cairo_user_font_face_set_init_func);
 
 /**
  * cairo_user_font_face_set_render_color_glyph_func:
@@ -826,7 +824,6 @@ cairo_user_font_face_set_render_color_glyph_func (cairo_font_face_t
     user_font_face->scaled_font_methods.render_color_glyph = render_glyph_func;
     user_font_face->has_color = render_glyph_func ? TRUE : FALSE;
 }
-slim_hidden_def(cairo_user_font_face_set_render_color_glyph_func);
 
 /**
  * cairo_user_font_face_set_render_glyph_func:
@@ -876,7 +873,6 @@ cairo_user_font_face_set_render_glyph_func (cairo_font_face_t
     }
     user_font_face->scaled_font_methods.render_glyph = render_glyph_func;
 }
-slim_hidden_def(cairo_user_font_face_set_render_glyph_func);
 
 /**
  * cairo_user_font_face_set_text_to_glyphs_func:
@@ -950,7 +946,6 @@ cairo_user_font_face_set_unicode_to_glyph_func (cairo_font_face_t
     }
     user_font_face->scaled_font_methods.unicode_to_glyph = unicode_to_glyph_func;
 }
-slim_hidden_def(cairo_user_font_face_set_unicode_to_glyph_func);
 
 /* User-font method getters */
 
diff --git a/src/cairo-version.c b/src/cairo-version.c
index 943e1cde0..0b0d2123c 100644
--- a/src/cairo-version.c
+++ b/src/cairo-version.c
@@ -252,4 +252,3 @@ cairo_version_string (void)
 {
     return CAIRO_VERSION_STRING;
 }
-slim_hidden_def (cairo_version_string);
diff --git a/src/cairo-xcb-connection.c b/src/cairo-xcb-connection.c
index 2c58cca70..daa7d4f65 100644
--- a/src/cairo-xcb-connection.c
+++ b/src/cairo-xcb-connection.c
@@ -896,9 +896,6 @@ cairo_xcb_device_debug_cap_xrender_version (cairo_device_t *device,
 	    connection->flags &= ~CAIRO_XCB_RENDER_HAS_GRADIENTS;
     }
 }
-#if CAIRO_HAS_XLIB_XCB_FUNCTIONS
-slim_hidden_def (cairo_xcb_device_debug_cap_xrender_version);
-#endif
 
 /**
  * cairo_xcb_device_debug_set_precision:
@@ -926,9 +923,6 @@ cairo_xcb_device_debug_set_precision (cairo_device_t *device,
 
     ((cairo_xcb_connection_t *) device)->force_precision = precision;
 }
-#if CAIRO_HAS_XLIB_XCB_FUNCTIONS
-slim_hidden_def (cairo_xcb_device_debug_set_precision);
-#endif
 
 /**
  * cairo_xcb_device_debug_get_precision:
@@ -955,6 +949,3 @@ cairo_xcb_device_debug_get_precision (cairo_device_t *device)
 
     return ((cairo_xcb_connection_t *) device)->force_precision;
 }
-#if CAIRO_HAS_XLIB_XCB_FUNCTIONS
-slim_hidden_def (cairo_xcb_device_debug_get_precision);
-#endif
diff --git a/src/cairo-xcb-private.h b/src/cairo-xcb-private.h
index 009f0820a..95805f8a9 100644
--- a/src/cairo-xcb-private.h
+++ b/src/cairo-xcb-private.h
@@ -765,16 +765,6 @@ _cairo_xcb_connection_render_create_conical_gradient (cairo_xcb_connection_t
 						      uint32_t                  num_stops,
 						      xcb_render_fixed_t *stops,
 						      xcb_render_color_t *colors);
-#if CAIRO_HAS_XLIB_XCB_FUNCTIONS
-slim_hidden_proto (cairo_xcb_surface_create);
-slim_hidden_proto (cairo_xcb_surface_create_for_bitmap);
-slim_hidden_proto (cairo_xcb_surface_create_with_xrender_format);
-slim_hidden_proto (cairo_xcb_surface_set_size);
-slim_hidden_proto (cairo_xcb_surface_set_drawable);
-slim_hidden_proto (cairo_xcb_device_debug_get_precision);
-slim_hidden_proto_no_warn (cairo_xcb_device_debug_set_precision);
-slim_hidden_proto_no_warn (cairo_xcb_device_debug_cap_xrender_version);
-#endif
 
 cairo_private void
 _cairo_xcb_resources_get (cairo_xcb_screen_t *screen,
diff --git a/src/cairo-xcb-surface.c b/src/cairo-xcb-surface.c
index de020d8a0..5e7ebef9e 100644
--- a/src/cairo-xcb-surface.c
+++ b/src/cairo-xcb-surface.c
@@ -50,12 +50,6 @@
 #include "cairo-surface-backend-private.h"
 #include "cairo-compositor-private.h"
 
-#if CAIRO_HAS_XLIB_XCB_FUNCTIONS
-slim_hidden_proto (cairo_xcb_surface_create);
-slim_hidden_proto (cairo_xcb_surface_create_for_bitmap);
-slim_hidden_proto (cairo_xcb_surface_create_with_xrender_format);
-#endif
-
 /**
  * SECTION:cairo-xcb
  * @Title: XCB Surfaces
@@ -1236,9 +1230,6 @@ cairo_xcb_surface_create (xcb_connection_t  *connection,
 					       xrender_format,
 					       width, height);
 }
-#if CAIRO_HAS_XLIB_XCB_FUNCTIONS
-slim_hidden_def (cairo_xcb_surface_create);
-#endif
 
 /**
  * cairo_xcb_surface_create_for_bitmap:
@@ -1287,9 +1278,6 @@ cairo_xcb_surface_create_for_bitmap (xcb_connection_t	*connection,
 					       cairo_xcb_screen->connection->standard_formats[CAIRO_FORMAT_A1],
 					       width, height);
 }
-#if CAIRO_HAS_XLIB_XCB_FUNCTIONS
-slim_hidden_def (cairo_xcb_surface_create_for_bitmap);
-#endif
 
 /**
  * cairo_xcb_surface_create_with_xrender_format:
@@ -1379,9 +1367,6 @@ cairo_xcb_surface_create_with_xrender_format (xcb_connection_t	    *connection,
 					       format->id,
 					       width, height);
 }
-#if CAIRO_HAS_XLIB_XCB_FUNCTIONS
-slim_hidden_def (cairo_xcb_surface_create_with_xrender_format);
-#endif
 
 /* This does the necessary fixup when a surface's drawable or size changed. */
 static void
@@ -1451,9 +1436,6 @@ cairo_xcb_surface_set_size (cairo_surface_t *abstract_surface,
     surface->width  = width;
     surface->height = height;
 }
-#if CAIRO_HAS_XLIB_XCB_FUNCTIONS
-slim_hidden_def (cairo_xcb_surface_set_size);
-#endif
 
 /**
  * cairo_xcb_surface_set_drawable:
@@ -1526,6 +1508,3 @@ cairo_xcb_surface_set_drawable (cairo_surface_t *abstract_surface,
     surface->width  = width;
     surface->height = height;
 }
-#if CAIRO_HAS_XLIB_XCB_FUNCTIONS
-slim_hidden_def (cairo_xcb_surface_set_drawable);
-#endif
diff --git a/src/cairo.c b/src/cairo.c
index 3d4fea601..12dbfb642 100644
--- a/src/cairo.c
+++ b/src/cairo.c
@@ -458,7 +458,6 @@ cairo_create (cairo_surface_t *target)
     return target->backend->create_context (target);
 
 }
-slim_hidden_def (cairo_create);
 
 void
 _cairo_init (cairo_t *cr,
@@ -528,7 +527,6 @@ cairo_destroy (cairo_t *cr)
 
     cr->backend->destroy (cr);
 }
-slim_hidden_def (cairo_destroy);
 
 /**
  * cairo_get_user_data:
@@ -632,7 +630,6 @@ cairo_save (cairo_t *cr)
     if (unlikely (status))
 	_cairo_set_error (cr, status);
 }
-slim_hidden_def(cairo_save);
 
 /**
  * cairo_restore:
@@ -656,7 +653,6 @@ cairo_restore (cairo_t *cr)
     if (unlikely (status))
 	_cairo_set_error (cr, status);
 }
-slim_hidden_def(cairo_restore);
 
 /**
  * cairo_push_group:
@@ -707,7 +703,6 @@ cairo_push_group (cairo_t *cr)
 {
     cairo_push_group_with_content (cr, CAIRO_CONTENT_COLOR_ALPHA);
 }
-slim_hidden_def (cairo_push_group);
 
 /**
  * cairo_push_group_with_content:
@@ -740,7 +735,6 @@ cairo_push_group_with_content (cairo_t *cr, cairo_content_t content)
     if (unlikely (status))
 	_cairo_set_error (cr, status);
 }
-slim_hidden_def(cairo_push_group_with_content);
 
 /**
  * cairo_pop_group:
@@ -777,7 +771,6 @@ cairo_pop_group (cairo_t *cr)
 
     return group_pattern;
 }
-slim_hidden_def(cairo_pop_group);
 
 /**
  * cairo_pop_group_to_source:
@@ -815,7 +808,6 @@ cairo_pop_group_to_source (cairo_t *cr)
     cairo_set_source (cr, group_pattern);
     cairo_pattern_destroy (group_pattern);
 }
-slim_hidden_def (cairo_pop_group_to_source);
 
 /**
  * cairo_set_operator:
@@ -842,7 +834,6 @@ cairo_set_operator (cairo_t *cr, cairo_operator_t op)
     if (unlikely (status))
 	_cairo_set_error (cr, status);
 }
-slim_hidden_def (cairo_set_operator);
 
 
 #if 0
@@ -903,7 +894,6 @@ cairo_set_source_rgb (cairo_t *cr, double red, double green, double blue)
     if (unlikely (status))
 	_cairo_set_error (cr, status);
 }
-slim_hidden_def (cairo_set_source_rgb);
 
 /**
  * cairo_set_source_rgba:
@@ -942,7 +932,6 @@ cairo_set_source_rgba (cairo_t *cr,
     if (unlikely (status))
 	_cairo_set_error (cr, status);
 }
-slim_hidden_def (cairo_set_source_rgba);
 
 /**
  * cairo_set_source_surface:
@@ -989,7 +978,6 @@ cairo_set_source_surface (cairo_t	  *cr,
     if (unlikely (status))
 	_cairo_set_error (cr, status);
 }
-slim_hidden_def (cairo_set_source_surface);
 
 /**
  * cairo_set_source:
@@ -1034,7 +1022,6 @@ cairo_set_source (cairo_t *cr, cairo_pattern_t *source)
     if (unlikely (status))
 	_cairo_set_error (cr, status);
 }
-slim_hidden_def (cairo_set_source);
 
 /**
  * cairo_get_source:
@@ -1056,7 +1043,6 @@ cairo_get_source (cairo_t *cr)
 
     return cr->backend->get_source (cr);
 }
-slim_hidden_def (cairo_get_source);
 
 /**
  * cairo_set_tolerance:
@@ -1088,7 +1074,6 @@ cairo_set_tolerance (cairo_t *cr, double tolerance)
     if (unlikely (status))
 	_cairo_set_error (cr, status);
 }
-slim_hidden_def (cairo_set_tolerance);
 
 /**
  * cairo_set_antialias:
@@ -1188,7 +1173,6 @@ cairo_set_line_width (cairo_t *cr, double width)
     if (unlikely (status))
 	_cairo_set_error (cr, status);
 }
-slim_hidden_def (cairo_set_line_width);
 
 /**
  * cairo_set_hairline:
@@ -1229,7 +1213,6 @@ cairo_set_hairline (cairo_t *cr, cairo_bool_t set_hairline)
     if (unlikely (status))
 	_cairo_set_error (cr, status);
 }
-slim_hidden_def (cairo_set_hairline);
 
 /**
  * cairo_set_line_cap:
@@ -1260,7 +1243,6 @@ cairo_set_line_cap (cairo_t *cr, cairo_line_cap_t line_cap)
     if (unlikely (status))
 	_cairo_set_error (cr, status);
 }
-slim_hidden_def (cairo_set_line_cap);
 
 /**
  * cairo_set_line_join:
@@ -1291,7 +1273,6 @@ cairo_set_line_join (cairo_t *cr, cairo_line_join_t line_join)
     if (unlikely (status))
 	_cairo_set_error (cr, status);
 }
-slim_hidden_def (cairo_set_line_join);
 
 /**
  * cairo_set_dash:
@@ -1342,7 +1323,6 @@ cairo_set_dash (cairo_t	     *cr,
     if (unlikely (status))
 	_cairo_set_error (cr, status);
 }
-slim_hidden_def (cairo_set_dash);
 
 /**
  * cairo_get_dash_count:
@@ -1461,7 +1441,6 @@ cairo_translate (cairo_t *cr, double tx, double ty)
     if (unlikely (status))
 	_cairo_set_error (cr, status);
 }
-slim_hidden_def (cairo_translate);
 
 /**
  * cairo_scale:
@@ -1488,7 +1467,6 @@ cairo_scale (cairo_t *cr, double sx, double sy)
     if (unlikely (status))
 	_cairo_set_error (cr, status);
 }
-slim_hidden_def (cairo_scale);
 
 /**
  * cairo_rotate:
@@ -1516,7 +1494,6 @@ cairo_rotate (cairo_t *cr, double angle)
     if (unlikely (status))
 	_cairo_set_error (cr, status);
 }
-slim_hidden_def (cairo_rotate);
 
 /**
  * cairo_transform:
@@ -1542,7 +1519,6 @@ cairo_transform (cairo_t	      *cr,
     if (unlikely (status))
 	_cairo_set_error (cr, status);
 }
-slim_hidden_def (cairo_transform);
 
 /**
  * cairo_set_matrix:
@@ -1567,7 +1543,6 @@ cairo_set_matrix (cairo_t	       *cr,
     if (unlikely (status))
 	_cairo_set_error (cr, status);
 }
-slim_hidden_def (cairo_set_matrix);
 
 /**
  * cairo_identity_matrix:
@@ -1592,7 +1567,6 @@ cairo_identity_matrix (cairo_t *cr)
     if (unlikely (status))
 	_cairo_set_error (cr, status);
 }
-slim_hidden_def (cairo_identity_matrix);
 
 /**
  * cairo_user_to_device:
@@ -1614,7 +1588,6 @@ cairo_user_to_device (cairo_t *cr, double *x, double *y)
 
     cr->backend->user_to_device (cr, x, y);
 }
-slim_hidden_def (cairo_user_to_device);
 
 /**
  * cairo_user_to_device_distance:
@@ -1637,7 +1610,6 @@ cairo_user_to_device_distance (cairo_t *cr, double *dx, double *dy)
 
     cr->backend->user_to_device_distance (cr, dx, dy);
 }
-slim_hidden_def (cairo_user_to_device_distance);
 
 /**
  * cairo_device_to_user:
@@ -1659,7 +1631,6 @@ cairo_device_to_user (cairo_t *cr, double *x, double *y)
 
     cr->backend->device_to_user (cr, x, y);
 }
-slim_hidden_def (cairo_device_to_user);
 
 /**
  * cairo_device_to_user_distance:
@@ -1704,7 +1675,6 @@ cairo_new_path (cairo_t *cr)
     if (unlikely (status))
 	_cairo_set_error (cr, status);
 }
-slim_hidden_def(cairo_new_path);
 
 /**
  * cairo_new_sub_path:
@@ -1760,8 +1730,6 @@ cairo_move_to (cairo_t *cr, double x, double y)
     if (unlikely (status))
 	_cairo_set_error (cr, status);
 }
-slim_hidden_def(cairo_move_to);
-
 
 /**
  * cairo_line_to:
@@ -1790,7 +1758,6 @@ cairo_line_to (cairo_t *cr, double x, double y)
     if (unlikely (status))
 	_cairo_set_error (cr, status);
 }
-slim_hidden_def (cairo_line_to);
 
 /**
  * cairo_curve_to:
@@ -1831,7 +1798,6 @@ cairo_curve_to (cairo_t *cr,
     if (unlikely (status))
 	_cairo_set_error (cr, status);
 }
-slim_hidden_def (cairo_curve_to);
 
 /**
  * cairo_arc:
@@ -1907,7 +1873,6 @@ cairo_arc (cairo_t *cr,
     if (unlikely (status))
 	_cairo_set_error (cr, status);
 }
-slim_hidden_def (cairo_arc);
 
 /**
  * cairo_arc_negative:
@@ -1953,7 +1918,6 @@ cairo_arc_negative (cairo_t *cr,
     if (unlikely (status))
 	_cairo_set_error (cr, status);
 }
-slim_hidden_def (cairo_arc_negative);
 
 /* XXX: NYI
 void
@@ -2052,7 +2016,6 @@ cairo_rel_line_to (cairo_t *cr, double dx, double dy)
     if (unlikely (status))
 	_cairo_set_error (cr, status);
 }
-slim_hidden_def(cairo_rel_line_to);
 
 /**
  * cairo_rel_curve_to:
@@ -2136,7 +2099,6 @@ cairo_rectangle (cairo_t *cr,
     if (unlikely (status))
 	_cairo_set_error (cr, status);
 }
-slim_hidden_def (cairo_rectangle);
 
 #if 0
 /* XXX: NYI */
@@ -2196,7 +2158,6 @@ cairo_close_path (cairo_t *cr)
     if (unlikely (status))
 	_cairo_set_error (cr, status);
 }
-slim_hidden_def(cairo_close_path);
 
 /**
  * cairo_path_extents:
@@ -2270,7 +2231,6 @@ cairo_paint (cairo_t *cr)
     if (unlikely (status))
 	_cairo_set_error (cr, status);
 }
-slim_hidden_def (cairo_paint);
 
 /**
  * cairo_paint_with_alpha:
@@ -2297,7 +2257,6 @@ cairo_paint_with_alpha (cairo_t *cr,
     if (unlikely (status))
 	_cairo_set_error (cr, status);
 }
-slim_hidden_def (cairo_paint_with_alpha);
 
 /**
  * cairo_mask:
@@ -2334,7 +2293,6 @@ cairo_mask (cairo_t         *cr,
     if (unlikely (status))
 	_cairo_set_error (cr, status);
 }
-slim_hidden_def (cairo_mask);
 
 /**
  * cairo_mask_surface:
@@ -2418,7 +2376,6 @@ cairo_stroke (cairo_t *cr)
     if (unlikely (status))
 	_cairo_set_error (cr, status);
 }
-slim_hidden_def(cairo_stroke);
 
 /**
  * cairo_stroke_preserve:
@@ -2447,7 +2404,6 @@ cairo_stroke_preserve (cairo_t *cr)
     if (unlikely (status))
 	_cairo_set_error (cr, status);
 }
-slim_hidden_def(cairo_stroke_preserve);
 
 /**
  * cairo_fill:
@@ -2473,7 +2429,6 @@ cairo_fill (cairo_t *cr)
     if (unlikely (status))
 	_cairo_set_error (cr, status);
 }
-slim_hidden_def (cairo_fill);
 
 /**
  * cairo_fill_preserve:
@@ -2500,7 +2455,6 @@ cairo_fill_preserve (cairo_t *cr)
     if (unlikely (status))
 	_cairo_set_error (cr, status);
 }
-slim_hidden_def(cairo_fill_preserve);
 
 /**
  * cairo_copy_page:
@@ -2765,7 +2719,6 @@ cairo_clip (cairo_t *cr)
     if (unlikely (status))
 	_cairo_set_error (cr, status);
 }
-slim_hidden_def (cairo_clip);
 
 /**
  * cairo_clip_preserve:
@@ -2803,7 +2756,6 @@ cairo_clip_preserve (cairo_t *cr)
     if (unlikely (status))
 	_cairo_set_error (cr, status);
 }
-slim_hidden_def(cairo_clip_preserve);
 
 /**
  * cairo_reset_clip:
@@ -2872,7 +2824,6 @@ cairo_clip_extents (cairo_t *cr,
     if (unlikely (status))
 	_cairo_set_error (cr, status);
 }
-slim_hidden_def (cairo_clip_extents);
 
 /**
  * cairo_in_clip:
@@ -3218,7 +3169,6 @@ cairo_set_font_size (cairo_t *cr, double size)
     if (unlikely (status))
 	_cairo_set_error (cr, status);
 }
-slim_hidden_def (cairo_set_font_size);
 
 /**
  * cairo_set_font_matrix:
@@ -3248,7 +3198,6 @@ cairo_set_font_matrix (cairo_t		    *cr,
     if (unlikely (status))
 	_cairo_set_error (cr, status);
 }
-slim_hidden_def (cairo_set_font_matrix);
 
 /**
  * cairo_get_font_matrix:
@@ -3303,7 +3252,6 @@ cairo_set_font_options (cairo_t                    *cr,
     if (unlikely (status))
 	_cairo_set_error (cr, status);
 }
-slim_hidden_def (cairo_set_font_options);
 
 /**
  * cairo_get_font_options:
@@ -3400,7 +3348,6 @@ cairo_get_scaled_font (cairo_t *cr)
 
     return cr->backend->get_scaled_font (cr);
 }
-slim_hidden_def (cairo_get_scaled_font);
 
 /**
  * cairo_text_extents:
@@ -3976,7 +3923,6 @@ cairo_get_tolerance (cairo_t *cr)
 
     return cr->backend->get_tolerance (cr);
 }
-slim_hidden_def (cairo_get_tolerance);
 
 /**
  * cairo_get_antialias:
@@ -4017,7 +3963,6 @@ cairo_has_current_point (cairo_t *cr)
 
     return cr->backend->has_current_point (cr);
 }
-slim_hidden_def (cairo_has_current_point);
 
 /**
  * cairo_get_current_point:
@@ -4068,7 +4013,6 @@ cairo_get_current_point (cairo_t *cr, double *x_ret, double *y_ret)
     if (y_ret)
 	*y_ret = y;
 }
-slim_hidden_def(cairo_get_current_point);
 
 /**
  * cairo_get_fill_rule:
@@ -4088,7 +4032,6 @@ cairo_get_fill_rule (cairo_t *cr)
 
     return cr->backend->get_fill_rule (cr);
 }
-slim_hidden_def (cairo_set_fill_rule);
 
 /**
  * cairo_get_line_width:
@@ -4111,7 +4054,6 @@ cairo_get_line_width (cairo_t *cr)
 
     return cr->backend->get_line_width (cr);
 }
-slim_hidden_def (cairo_get_line_width);
 
 /**
  * cairo_get_hairline:
@@ -4131,7 +4073,6 @@ cairo_get_hairline (cairo_t *cr)
 
     return cr->backend->get_hairline (cr);
 }
-slim_hidden_def (cairo_get_hairline);
 
 /**
  * cairo_get_line_cap:
@@ -4189,7 +4130,6 @@ cairo_get_miter_limit (cairo_t *cr)
 
     return cr->backend->get_miter_limit (cr);
 }
-slim_hidden_def (cairo_set_miter_limit);
 
 /**
  * cairo_get_matrix:
@@ -4210,7 +4150,6 @@ cairo_get_matrix (cairo_t *cr, cairo_matrix_t *matrix)
 
     cr->backend->get_matrix (cr, matrix);
 }
-slim_hidden_def (cairo_get_matrix);
 
 /**
  * cairo_get_target:
@@ -4238,7 +4177,6 @@ cairo_get_target (cairo_t *cr)
 
     return cr->backend->get_original_target (cr);
 }
-slim_hidden_def (cairo_get_target);
 
 /**
  * cairo_get_group_target:
@@ -4305,7 +4243,6 @@ cairo_copy_path (cairo_t *cr)
 
     return cr->backend->copy_path (cr);
 }
-slim_hidden_def (cairo_copy_path);
 
 /**
  * cairo_copy_path_flat:
@@ -4400,7 +4337,6 @@ cairo_append_path (cairo_t		*cr,
     if (unlikely (status))
 	_cairo_set_error (cr, status);
 }
-slim_hidden_def (cairo_append_path);
 
 /**
  * cairo_status:
@@ -4417,4 +4353,3 @@ cairo_status (cairo_t *cr)
 {
     return cr->status;
 }
-slim_hidden_def (cairo_status);
diff --git a/src/cairoint.h b/src/cairoint.h
index ddbbe7baa..c94ed9b8c 100644
--- a/src/cairoint.h
+++ b/src/cairoint.h
@@ -1965,209 +1965,6 @@ _cairo_observers_notify (cairo_list_t *observers, void *arg);
 cairo_private cairo_status_t
 _cairo_fopen (const char *filename, const char *mode, FILE **file_out);
 
-/* Avoid unnecessary PLT entries.  */
-slim_hidden_proto (cairo_append_path);
-slim_hidden_proto (cairo_arc);
-slim_hidden_proto (cairo_arc_negative);
-slim_hidden_proto (cairo_clip);
-slim_hidden_proto (cairo_clip_extents);
-slim_hidden_proto (cairo_clip_preserve);
-slim_hidden_proto (cairo_close_path);
-slim_hidden_proto (cairo_copy_path);
-slim_hidden_proto (cairo_create);
-slim_hidden_proto (cairo_curve_to);
-slim_hidden_proto (cairo_destroy);
-slim_hidden_proto (cairo_device_to_user);
-slim_hidden_proto (cairo_fill);
-slim_hidden_proto (cairo_fill_preserve);
-slim_hidden_proto (cairo_font_face_destroy);
-slim_hidden_proto (cairo_font_face_get_user_data);
-slim_hidden_proto_no_warn (cairo_font_face_reference);
-slim_hidden_proto (cairo_font_face_set_user_data);
-slim_hidden_proto (cairo_font_options_equal);
-slim_hidden_proto (cairo_font_options_get_custom_palette_color);
-slim_hidden_proto (cairo_font_options_hash);
-slim_hidden_proto (cairo_font_options_merge);
-slim_hidden_proto (cairo_font_options_set_antialias);
-slim_hidden_proto (cairo_font_options_set_hint_metrics);
-slim_hidden_proto (cairo_font_options_set_hint_style);
-slim_hidden_proto (cairo_font_options_set_subpixel_order);
-slim_hidden_proto (cairo_font_options_status);
-slim_hidden_proto (cairo_format_stride_for_width);
-slim_hidden_proto (cairo_get_current_point);
-slim_hidden_proto (cairo_get_hairline);
-slim_hidden_proto (cairo_get_line_width);
-slim_hidden_proto (cairo_get_matrix);
-slim_hidden_proto (cairo_get_scaled_font);
-slim_hidden_proto (cairo_get_source);
-slim_hidden_proto (cairo_get_target);
-slim_hidden_proto (cairo_get_tolerance);
-slim_hidden_proto (cairo_glyph_allocate);
-slim_hidden_proto (cairo_glyph_free);
-slim_hidden_proto (cairo_has_current_point);
-slim_hidden_proto (cairo_identity_matrix);
-slim_hidden_proto (cairo_image_surface_create);
-slim_hidden_proto (cairo_image_surface_create_for_data);
-slim_hidden_proto (cairo_image_surface_get_data);
-slim_hidden_proto (cairo_image_surface_get_format);
-slim_hidden_proto (cairo_image_surface_get_height);
-slim_hidden_proto (cairo_image_surface_get_stride);
-slim_hidden_proto (cairo_image_surface_get_width);
-slim_hidden_proto (cairo_line_to);
-slim_hidden_proto (cairo_mask);
-slim_hidden_proto (cairo_matrix_init);
-slim_hidden_proto (cairo_matrix_init_identity);
-slim_hidden_proto (cairo_matrix_init_rotate);
-slim_hidden_proto (cairo_matrix_init_scale);
-slim_hidden_proto (cairo_matrix_init_translate);
-slim_hidden_proto (cairo_matrix_invert);
-slim_hidden_proto (cairo_matrix_multiply);
-slim_hidden_proto (cairo_matrix_rotate);
-slim_hidden_proto (cairo_matrix_scale);
-slim_hidden_proto (cairo_matrix_transform_distance);
-slim_hidden_proto (cairo_matrix_transform_point);
-slim_hidden_proto (cairo_matrix_translate);
-slim_hidden_proto (cairo_mesh_pattern_begin_patch);
-slim_hidden_proto (cairo_mesh_pattern_curve_to);
-slim_hidden_proto (cairo_mesh_pattern_end_patch);
-slim_hidden_proto (cairo_mesh_pattern_get_control_point);
-slim_hidden_proto (cairo_mesh_pattern_get_corner_color_rgba);
-slim_hidden_proto (cairo_mesh_pattern_get_patch_count);
-slim_hidden_proto (cairo_mesh_pattern_get_path);
-slim_hidden_proto (cairo_mesh_pattern_line_to);
-slim_hidden_proto (cairo_mesh_pattern_move_to);
-slim_hidden_proto (cairo_mesh_pattern_set_corner_color_rgba);
-slim_hidden_proto (cairo_move_to);
-slim_hidden_proto (cairo_new_path);
-slim_hidden_proto (cairo_paint);
-slim_hidden_proto (cairo_paint_with_alpha);
-slim_hidden_proto_no_warn (cairo_path_destroy);
-slim_hidden_proto (cairo_pattern_add_color_stop_rgba);
-slim_hidden_proto (cairo_pattern_create_for_surface);
-slim_hidden_proto (cairo_pattern_create_linear);
-slim_hidden_proto (cairo_pattern_create_mesh);
-slim_hidden_proto (cairo_pattern_create_radial);
-slim_hidden_proto (cairo_pattern_create_rgb);
-slim_hidden_proto (cairo_pattern_create_rgba);
-slim_hidden_proto (cairo_pattern_destroy);
-slim_hidden_proto (cairo_pattern_get_extend);
-slim_hidden_proto (cairo_pattern_get_rgba);
-slim_hidden_proto (cairo_pattern_get_type);
-slim_hidden_proto_no_warn (cairo_pattern_reference);
-slim_hidden_proto (cairo_pattern_set_extend);
-slim_hidden_proto (cairo_pattern_set_matrix);
-slim_hidden_proto (cairo_pop_group);
-slim_hidden_proto (cairo_pop_group_to_source);
-slim_hidden_proto (cairo_push_group);
-slim_hidden_proto (cairo_push_group_with_content);
-slim_hidden_proto (cairo_recording_surface_create);
-slim_hidden_proto (cairo_recording_surface_ink_extents);
-slim_hidden_proto (cairo_rectangle);
-slim_hidden_proto (cairo_region_contains_point);
-slim_hidden_proto (cairo_region_contains_rectangle);
-slim_hidden_proto (cairo_region_copy);
-slim_hidden_proto (cairo_region_create);
-slim_hidden_proto (cairo_region_create_rectangle);
-slim_hidden_proto (cairo_region_create_rectangles);
-slim_hidden_proto (cairo_region_destroy);
-slim_hidden_proto (cairo_region_equal);
-slim_hidden_proto (cairo_region_get_extents);
-slim_hidden_proto (cairo_region_get_rectangle);
-slim_hidden_proto (cairo_region_intersect);
-slim_hidden_proto (cairo_region_intersect_rectangle);
-slim_hidden_proto (cairo_region_is_empty);
-slim_hidden_proto (cairo_region_num_rectangles);
-slim_hidden_proto (cairo_region_reference);
-slim_hidden_proto (cairo_region_status);
-slim_hidden_proto (cairo_region_subtract);
-slim_hidden_proto (cairo_region_subtract_rectangle);
-slim_hidden_proto (cairo_region_translate);
-slim_hidden_proto (cairo_region_union);
-slim_hidden_proto (cairo_region_union_rectangle);
-slim_hidden_proto (cairo_region_xor);
-slim_hidden_proto (cairo_region_xor_rectangle);
-slim_hidden_proto (cairo_rel_line_to);
-slim_hidden_proto (cairo_restore);
-slim_hidden_proto (cairo_rotate);
-slim_hidden_proto (cairo_save);
-slim_hidden_proto (cairo_scale);
-slim_hidden_proto (cairo_scaled_font_create);
-slim_hidden_proto (cairo_scaled_font_destroy);
-slim_hidden_proto (cairo_scaled_font_extents);
-slim_hidden_proto (cairo_scaled_font_get_ctm);
-slim_hidden_proto (cairo_scaled_font_get_font_face);
-slim_hidden_proto (cairo_scaled_font_get_font_matrix);
-slim_hidden_proto (cairo_scaled_font_get_font_options);
-slim_hidden_proto (cairo_scaled_font_get_user_data);
-slim_hidden_proto (cairo_scaled_font_glyph_extents);
-slim_hidden_proto_no_warn (cairo_scaled_font_reference);
-slim_hidden_proto (cairo_scaled_font_set_user_data);
-slim_hidden_proto (cairo_scaled_font_status);
-slim_hidden_proto (cairo_scaled_font_text_to_glyphs);
-slim_hidden_proto (cairo_set_dash);
-slim_hidden_proto (cairo_set_fill_rule);
-slim_hidden_proto (cairo_set_font_matrix);
-slim_hidden_proto (cairo_set_font_options);
-slim_hidden_proto (cairo_set_font_size);
-slim_hidden_proto (cairo_set_hairline);
-slim_hidden_proto (cairo_set_line_cap);
-slim_hidden_proto (cairo_set_line_join);
-slim_hidden_proto (cairo_set_line_width);
-slim_hidden_proto (cairo_set_matrix);
-slim_hidden_proto (cairo_set_miter_limit);
-slim_hidden_proto (cairo_set_operator);
-slim_hidden_proto (cairo_set_source);
-slim_hidden_proto (cairo_set_source_rgb);
-slim_hidden_proto (cairo_set_source_rgba);
-slim_hidden_proto (cairo_set_source_surface);
-slim_hidden_proto (cairo_set_tolerance);
-slim_hidden_proto (cairo_status);
-slim_hidden_proto (cairo_stroke);
-slim_hidden_proto (cairo_stroke_preserve);
-slim_hidden_proto (cairo_surface_copy_page);
-slim_hidden_proto (cairo_surface_create_similar_image);
-slim_hidden_proto (cairo_surface_destroy);
-slim_hidden_proto (cairo_surface_finish);
-slim_hidden_proto (cairo_surface_flush);
-slim_hidden_proto (cairo_surface_get_device_offset);
-slim_hidden_proto (cairo_surface_get_device_scale);
-slim_hidden_proto (cairo_surface_get_font_options);
-slim_hidden_proto (cairo_surface_get_mime_data);
-slim_hidden_proto (cairo_surface_has_show_text_glyphs);
-slim_hidden_proto (cairo_surface_mark_dirty);
-slim_hidden_proto (cairo_surface_mark_dirty_rectangle);
-slim_hidden_proto_no_warn (cairo_surface_reference);
-slim_hidden_proto (cairo_surface_set_device_offset);
-slim_hidden_proto (cairo_surface_set_device_scale);
-slim_hidden_proto (cairo_surface_set_fallback_resolution);
-slim_hidden_proto (cairo_surface_set_mime_data);
-slim_hidden_proto (cairo_surface_show_page);
-slim_hidden_proto (cairo_surface_status);
-slim_hidden_proto (cairo_surface_supports_mime_type);
-slim_hidden_proto (cairo_text_cluster_allocate);
-slim_hidden_proto (cairo_text_cluster_free);
-slim_hidden_proto (cairo_toy_font_face_create);
-slim_hidden_proto (cairo_toy_font_face_get_slant);
-slim_hidden_proto (cairo_toy_font_face_get_weight);
-slim_hidden_proto (cairo_transform);
-slim_hidden_proto (cairo_translate);
-slim_hidden_proto (cairo_user_font_face_create);
-slim_hidden_proto (cairo_user_font_face_set_init_func);
-slim_hidden_proto (cairo_user_font_face_set_render_color_glyph_func);
-slim_hidden_proto (cairo_user_font_face_set_render_glyph_func);
-slim_hidden_proto (cairo_user_font_face_set_unicode_to_glyph_func);
-slim_hidden_proto (cairo_user_to_device);
-slim_hidden_proto (cairo_user_to_device_distance);
-slim_hidden_proto (cairo_version_string);
-
-#if CAIRO_HAS_PNG_FUNCTIONS
-
-slim_hidden_proto (cairo_image_surface_create_from_png_stream);
-slim_hidden_proto (cairo_surface_write_to_png_stream);
-
-#endif
-
-
 #include "cairo-mutex-private.h"
 #include "cairo-fixed-private.h"
 #include "cairo-wideint-private.h"
diff --git a/util/cairo-script/cairo-script-interpreter.c b/util/cairo-script/cairo-script-interpreter.c
index a578ec43a..04f12e8f9 100644
--- a/util/cairo-script/cairo-script-interpreter.c
+++ b/util/cairo-script/cairo-script-interpreter.c
@@ -635,7 +635,6 @@ cairo_script_interpreter_reference (csi_t *ctx)
     ctx->ref_count++;
     return ctx;
 }
-slim_hidden_def (cairo_script_interpreter_reference);
 
 cairo_status_t
 cairo_script_interpreter_finish (csi_t *ctx)
@@ -684,7 +683,6 @@ cairo_script_interpreter_destroy (csi_t *ctx)
 
     return status;
 }
-slim_hidden_def (cairo_script_interpreter_destroy);
 
 cairo_status_t
 cairo_script_interpreter_translate_stream (FILE *stream,
diff --git a/util/cairo-script/cairo-script-private.h b/util/cairo-script/cairo-script-private.h
index c60b4185c..a4cd1712f 100644
--- a/util/cairo-script/cairo-script-private.h
+++ b/util/cairo-script/cairo-script-private.h
@@ -97,28 +97,6 @@
 #endif
 
 
-#if __GNUC__ >= 3 && defined(__ELF__) && !defined(__sun)
-# define slim_hidden_proto(name)		slim_hidden_proto1(name, slim_hidden_int_name(name)) csi_private
-# define slim_hidden_proto_no_warn(name)	slim_hidden_proto1(name, slim_hidden_int_name(name)) csi_private_no_warn
-# define slim_hidden_def(name)			slim_hidden_def1(name, slim_hidden_int_name(name))
-# define slim_hidden_int_name(name) INT_##name
-# define slim_hidden_proto1(name, internal)				\
-  extern __typeof (name) name						\
-	__asm__ (slim_hidden_asmname (internal))
-# define slim_hidden_def1(name, internal)				\
-  extern __typeof (name) EXT_##name __asm__(slim_hidden_asmname(name))	\
-	__attribute__((__alias__(slim_hidden_asmname(internal))))
-# define slim_hidden_ulp		slim_hidden_ulp1(__USER_LABEL_PREFIX__)
-# define slim_hidden_ulp1(x)		slim_hidden_ulp2(x)
-# define slim_hidden_ulp2(x)		#x
-# define slim_hidden_asmname(name)	slim_hidden_asmname1(name)
-# define slim_hidden_asmname1(name)	slim_hidden_ulp #name
-#else
-# define slim_hidden_proto(name)		int _csi_dummy_prototype(void)
-# define slim_hidden_proto_no_warn(name)	int _csi_dummy_prototype(void)
-# define slim_hidden_def(name)			int _csi_dummy_prototype(void)
-#endif
-
 #if __GNUC__ >= 3
 #define csi_pure __attribute__((pure))
 #define csi_const __attribute__((const))
@@ -158,7 +136,6 @@
     (type *)((char *) (ptr) - (char *) &((type *)0)->member)
 #endif
 
-/* slim_internal.h */
 #if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)) && defined(__ELF__) && !defined(__sun)
 #define csi_private_no_warn	__attribute__((__visibility__("hidden")))
 #elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550)
@@ -989,7 +966,4 @@ _csi_push_ostack_real (csi_t *ctx, csi_real_t v)
     return _csi_stack_push (ctx, &ctx->ostack, &obj);
 }
 
-slim_hidden_proto_no_warn (cairo_script_interpreter_destroy);
-slim_hidden_proto_no_warn (cairo_script_interpreter_reference);
-
 #endif /* CAIRO_SCRIPT_PRIVATE_H */


More information about the cairo-commit mailing list