forked from AuroraMiddleware/gtk
0742ff3ae3
Mon Aug 9 15:41:17 2004 Matthias Clasen <maclas@gmx.de> Add hidden aliases for exported symbols which are used internally in order to get rid of many PLT entries. (#145519, Arjan van de Ven) * gdk/Makefile.am: Add rules to generate gdk.def and gdkalias.h from gdk.symbols, and make make check check the abi with abicheck.sh. * gdk/gdk.symbols: New file. Definition of the GDK ABI. The file can be processed by cpp to filter out certain subsets of symbols. * gdk/abicheck.sh: New file. Script to check the actually symbols exported from libgdk-x11.2.0.so against the symbols found in gdk.symbols. * gdk/makegdkalias.pl: New file. Perl script to generate the header containing the alias definitions for internally used exported symbols from a list of symbols. * gdk/*.c, gdk/x11/*.c: Include gdkalias.h
80 lines
1.3 KiB
Perl
Executable File
80 lines
1.3 KiB
Perl
Executable File
#!/usr/bin/perl -w
|
|
|
|
my $preamble = <<EOF;
|
|
/* Generated by makegdkalias.pl */
|
|
|
|
#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
|
|
|
|
#ifdef GDK_ENABLE_BROKEN
|
|
#define WAS_BROKEN
|
|
#endif
|
|
#define GDK_ENABLE_BROKEN
|
|
|
|
#ifdef GDK_MULTIHEAD_SAFE
|
|
#define WAS_MULTIHEAD
|
|
#endif
|
|
#undef GDK_MULTIHEAD_SAVE
|
|
|
|
#ifdef GDK_DISABLE_DEPRECATED
|
|
#define WAS_NO_DEPR
|
|
#endif
|
|
#undef GDK_DISABLE_DEPRECATED
|
|
|
|
#ifdef G_DISABLE_DEPRECATED
|
|
#define WAS_NO_G_DEPR
|
|
#endif
|
|
#undef G_DISABLE_DEPRECATED
|
|
|
|
#include "gdk.h"
|
|
|
|
#include "x11/gdkx.h"
|
|
|
|
EOF
|
|
|
|
my $postamble = <<EOF;
|
|
|
|
#ifndef WAS_BROKEN
|
|
#undef GDK_ENABLE_BROKEN
|
|
#else
|
|
#undef WAS_BROKEN
|
|
#endif
|
|
|
|
#ifdef WAS_MULTIHEAD
|
|
#define GDK_MULTIHEAD_SAFE
|
|
#undef WAS_MULTIHEAD
|
|
#endif
|
|
|
|
#ifdef WAS_NO_DEPR
|
|
#define GDK_DISABLE_DEPRECATED
|
|
#undef WAS_NO_DEPR
|
|
#endif
|
|
|
|
#ifdef WAS_NO_G_DEPR
|
|
#define G_DISABLE_DEPRECATED
|
|
#undef WAS_NO_G_DEPR
|
|
#endif
|
|
|
|
#endif /* __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) */
|
|
EOF
|
|
|
|
print $preamble;
|
|
while (<>) {
|
|
my $str = $_;
|
|
chomp($str);
|
|
|
|
# ignore empty lines
|
|
if ("$str" eq "") {
|
|
next;
|
|
}
|
|
|
|
my $alias = $str."__internal_alias";
|
|
|
|
print "extern __typeof ($str) $alias __attribute((visibility(\"hidden\"))); \n";
|
|
print "extern __typeof ($str) $str __attribute((alias(\"$alias\"), visibility(\"default\"))); \n";
|
|
print "#define $str $alias \n";
|
|
print "\n";
|
|
}
|
|
|
|
print $postamble;
|
|
|