OSDN Git Service

* testsuite/abi_check.cc: Support older binutils/readelf.
[pf3gnuchains/gcc-fork.git] / libstdc++-v3 / testsuite / abi_check.cc
index 4f0ce32..befac6b 100644 (file)
@@ -236,15 +236,23 @@ int main(int argc, char** argv)
    */
   const char quote = '"';
   const char bslash = '\\';
+
+  // GNU binutils, somewhere after version 2.11.2, requires -W/--wide
+  // to avoid default line truncation.  -W is not supported and
+  // truncation did not occur by default before that point.
+  bool readelf_need_wide =
+    (system("readelf --help | grep -- --wide >/dev/null") == 0);
+
   ostringstream cmd;
-  cmd << "readelf -s -W " << test_lib << " | sed '/" << bslash 
+  cmd << "readelf -s " << (readelf_need_wide ? "-W " : "")
+      << test_lib << " | sed '/" << bslash 
       << ".dynsym/,/^$/p;d' | egrep -v ' (LOCAL|UND) ' | "
       << "awk '{ if ($4 == " << quote << "FUNC" << quote << "|| $4 == " 
       << quote << "NOTYPE" << quote << ") printf " << quote << "%s:%s"
       << bslash << "n" << quote << ", $4, $8; else if ($4 == " 
       << quote << "OBJECT" << quote << ") printf " << quote
       << "%s:%s:%s" << bslash << "n" << quote << ", $4, $3, $8;}' | "
-      << "sort >& " << test_file;
+      << "sort > " << test_file << " 2>&1";
   if (system(cmd.str().c_str()) != 0)
     {
       cerr << "Unable to generate the list of exported symbols." << endl;