User Guide

Contents

Analyze Statically Linked Binaries on Linux* Targets

To profile a statically linked binary file, temporary stop stripping the binary file during compilation and make sure the binary file exports the following symbols from system libraries:
  • _init()
    in the main executable: if you profile a tree of processes, consider using the option.
  • libc.so
    :
    • A target exports
      setenv
      ,
      getenv()
      , and
      __errno_location()
      symbols unconditionally.
    • If a target employs
      recv()
      API, it exports
      recv()
      and
      poll()
      .
    • If a target employs
      sleep()
      or
      usleep()
      APIs, it exports
      sleep()
      or
      usleep()
      respectively, and
      nanosleep()
      symbol.
  • libpthread.so
    :
    • If a target employs
      pthread_create()
      API, it exports the following symbols:
      • pthread_create()
      • pthread_key_create()
      • pthread_setspecific()
      • pthread_getspecific()
      • pthread_self()
      • pthread_getattr_np()
      • pthread_attr_destroy()
      • pthread_attr_setstack()
      • pthread_attr_getstack()
      • pthread_attr_getstacksize()
      • pthread_attr_setstacksize()
      • If a target employs
        pthread_cancel()
        API, it exports the following symbols:
        • pthread_cancel()
        • _pthread_cleanup_push()
        • _pthread_cleanup_pop()
      • If a target employs
        _pthread_cleanup_push()
        or
        _pthread_cleanup_pop()
        API, it exports the following symbols:
        • _pthread_cleanup_push()
        • _pthread_cleanup_pop()
      • If a target employs
        pthread_mutex_lock()
        API, it exports
        pthread_mutex_lock()
        and
        pthread_mutex_trylock()
        symbol.
      • If a target employs
        pthread_spin_lock()
        API, it exports
        pthread_spin_lock()
        and
        pthread_spin_trylock()
        symbol.
  • libdl.so
    :
    If a target employs any of
    dlopen()
    ,
    dlsym()
    , or
    dlclose()
    APIs, it exports all three of them simultaneously.
If the binary file does not export some of the symbols above, use the
-u
linker switch (for example, specify
-Wl,-u__errno_location
if you use compiler for linking) to include symbols into the binary file at the linking stage of compilation.

Product and Performance Information

1

Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804