diff options
Diffstat (limited to 'qpid/cpp/src/check-abi')
-rwxr-xr-x | qpid/cpp/src/check-abi | 49 |
1 files changed, 3 insertions, 46 deletions
diff --git a/qpid/cpp/src/check-abi b/qpid/cpp/src/check-abi index 3e85dab862..498c6bd322 100755 --- a/qpid/cpp/src/check-abi +++ b/qpid/cpp/src/check-abi @@ -21,36 +21,6 @@ MKTEMP="mktemp /tmp/tmp.XXXXXXXXXX" -# Ask the compiler the implementation specific type for a standard typedeffed type -# (int64_t, size_t etc.). Operates by test compiling and using the demangling ABI call. -# -# This works for gcc and clang on Unix. -full_type_of () { - prog=$($MKTEMP) - trap "rm $prog" EXIT - - ${CXX:-g++} -x c++ -o $prog - <<END-FILE -#include <stdint.h> -#include <stdlib.h> -#include <cxxabi.h> -#include <iostream> -#include <typeinfo> - -int main() { - int status; - char* printable_type = - __cxxabiv1::__cxa_demangle(typeid($1).name(), 0, 0, &status); - if (printable_type) { - std::cout << printable_type; - } else { - std::cout << "$1"; - } - ::free(printable_type); -} -END-FILE -$prog -} - rc=0 syms_desired=$($MKTEMP) syms_library=$($MKTEMP) @@ -59,31 +29,18 @@ syms_extra=$($MKTEMP) trap 'rm $syms_desired $syms_library $syms_missing $syms_extra' EXIT -CXX=$1 -export CXX - LC_ALL=C export LC_ALL # Extract exported symbols from library -nm -DC --defined-only -f s $2 | cut -f1 -d'|' -s | sort -u > $syms_library +nm -DC --defined-only -f s $1 | cut -f1 -d'|' -s | sed -e "$(./cppabi)" | sort -u > $syms_library # Process API syms (substitute in some typedefs etc.) sed -e " - s/uint64_t/$(full_type_of uint64_t)/ - s/uint32_t/unsigned int/ - s/uint16_t/unsigned short/ - s/uint8_t/unsigned char/ - s/size_t/$(full_type_of size_t)/ - s/int64_t/$(full_type_of int64_t)/ - s/int32_t/int/ - s/int16_t/short/ - s/int8_t/signed char/ - s/qpid::types::Variant::Map/std::map<std::string, qpid::types::Variant, std::less<std::string>, std::allocator<std::pair<std::string const, qpid::types::Variant> > >/ - s/qpid::types::Variant::List/std::list<qpid::types::Variant, std::allocator<qpid::types::Variant> >/ + $(./expand_types) /^\$/d /^#.*\$/d -" $3 | sort -u > $syms_desired +" $2 | sort -u > $syms_desired comm -23 $syms_desired $syms_library > $syms_missing comm -13 $syms_desired $syms_library > $syms_extra |