From 554fd8c5195424bdbcabf5de30fdc183aba391bd Mon Sep 17 00:00:00 2001 From: upstream source tree Date: Sun, 15 Mar 2015 20:14:05 -0400 Subject: obtained gcc-4.6.4.tar.bz2 from upstream website; verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository. --- libstdc++-v3/testsuite/util/testsuite_abi.h | 99 +++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 libstdc++-v3/testsuite/util/testsuite_abi.h (limited to 'libstdc++-v3/testsuite/util/testsuite_abi.h') diff --git a/libstdc++-v3/testsuite/util/testsuite_abi.h b/libstdc++-v3/testsuite/util/testsuite_abi.h new file mode 100644 index 000000000..bff39903e --- /dev/null +++ b/libstdc++-v3/testsuite/util/testsuite_abi.h @@ -0,0 +1,99 @@ +// -*- C++ -*- + +// Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 +// Free Software Foundation, Inc. + +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License as +// published by the Free Software Foundation; either version 3, or (at +// your option) any later version. + +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this library; see the file COPYING3. If not see +// . + +// Benjamin Kosnik + +#include +#include +#include +#include +#include +#include + +// Encapsulates symbol characteristics. +struct symbol +{ + enum category { function, object, tls, uncategorized }; + enum designation { existing, added, subtracted, undesignated }; + enum version { none, compatible, incompatible, unversioned }; + enum compatibility + { + compat_type = 1, + compat_name = 2, + compat_size = 4, + compat_version = 8 + }; + + category type; + std::string name; + std::string raw_name; // Name with versioning info still attached. + std::string demangled_name; + int size; + std::string version_name; + version version_status; + designation status; + + symbol() + : type(uncategorized), size(0), version_status(unversioned), + status(undesignated) { } + + symbol(const symbol& other) + : type(other.type), name(other.name), demangled_name(other.demangled_name), + size(other.size), version_name(other.version_name), + version_status(other.version_status), status(other.status) { } + + void + print() const; + + void + init(std::string& data); +}; + +// Map type between symbol names and full symbol info. +typedef std::tr1::unordered_map symbols; + + +// Check. +bool +check_version(symbol& test, bool added = false); + +bool +check_compatible(symbol& lhs, symbol& rhs, bool verbose = false); + + +// Examine. +bool +has_symbol(const std::string& mangled, const symbols& list) throw(); + +const symbol& +get_symbol(const std::string& mangled, const symbols& list); + +extern "C" void +examine_symbol(const char* name, const char* file); + +extern "C" int +compare_symbols(const char* baseline_file, const char* test_file, bool verb); + + +// Util. +symbols +create_symbols(const char* file); + +const char* +demangle(const std::string& mangled); -- cgit v1.2.3