# This script processes the output of 'readelf -W -s' on the libpthread.so
# we've just built.  It checks for all the symbols used in td_symbol_list.

BEGIN {
%define DB_RTLD_VARIABLE(name) /* Nothing. */
%define DB_MAIN_VARIABLE(name) /* Nothing. */
%define DB_LOOKUP_NAME(idx, name)		required[STRINGIFY (name)] = 1;
%define DB_LOOKUP_NAME_TH_UNIQUE(idx, name)	th_unique[STRINGIFY (name)] = 1;
%include "db-symbols.h"

   in_symtab = 0;
}

/Symbol table '.symtab'/ { in_symtab=1; next }
NF == 0 { in_symtab=0; next }

!in_symtab { next }

NF >= 8 && $7 != "UND" { seen[$NF] = 1 }

END {
  status = 0;

  for (s in required) {
    if (s in seen) print s, "ok";
    else {
      status = 1;
      print s, "***MISSING***";
    }
  }

  any = "";
  for (s in th_unique) {
    if (s in seen) {
      any = s;
      break;
    }
  }
  if (any)
    print "th_unique:", any;
  else {
    status = 1;
    print "th_unique:", "***MISSING***";
  }

  exit(status);
}
