Is it possible to determine if a binary  (static or shared and not stripped) is compiled with Linuxthreads or NPTL implementation ? 
How to determine which thread implementation binary compiled with
linux;elf;libraries
There are many ways, but I'll cite two. Usually, a binary file, if not stripped,  contains symbols (function names, variable names, ...). These symbols are usually used to ease debugging and are stored using a certain format, DWARF for example.The first method is to disassemble the binary and look for specific threading libraries related symbols. For example :     objdump -D ./YOUR_PROGRAM | grep -i thread The second one is to hijack the threading library function calls using your own library and LD_PRELOAD. The concept is fairly simple, you write a library (.so) in which you implement the functions which you want to check for, let's say pthread_create or pthread_join, and reimplement it this way :    int pthread_create(pthread_t *thread,                        const pthread_attr_t *attr,                       void *(*start_routine) (void *),                        void *arg)    {          int ret;          static void *(*ext_pthread_create)(pthread *,                                              const pthread_attr_t *,                                             void *,                                             void *);          ext_pthread_create = dlsym(RTLD_NEXT, pthread_create);          ret = ext_pthread_create(thread, attr, start_routine, arg);          printf(pthread_create called !\n);          return ret;     }All you have to do after compiling and testing your library is call yor program this way :    LD_PRELOAD=hooklib.so ./YOUR_PROGRAM PARAMSIf the function is called, you'll see the printf message on the standard output.  