summaryrefslogtreecommitdiff
path: root/qpid/cpp/src/check-abi
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/cpp/src/check-abi')
-rwxr-xr-xqpid/cpp/src/check-abi49
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