diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..14580b6 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "scarab"] + path = scarab + url = https://github.com/hpsresearchgroup/scarab.git diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..3c313ec --- /dev/null +++ b/Dockerfile @@ -0,0 +1,41 @@ +FROM ubuntu:18.04@sha256:0779371f96205678dbcaa3ef499be2e5f262c8b09aadc11754bf3daf9f35e03e + +ENV WORKDIR /scarab-dev +WORKDIR ${WORKDIR} +COPY ./scarab/bin/requirements.txt ./requirements.txt + +RUN apt-get update \ + && apt-get install -y \ + autoconf \ + build-essential \ + clang \ + git \ + gnupg \ + libconfig++-dev \ + libsnappy-dev \ + libtool \ + lsb-release \ + python3 \ + python3-pip \ + software-properties-common \ + unzip \ + vim \ + wget \ + zlib1g-dev \ + && rm -rf /var/lib/apt/lists/* \ + && pip3 install --no-cache-dir -U pip setuptools \ + && python3 -m pip install --no-cache-dir -r ./requirements.txt + +ENV CMAKE_VERSION=3.25.3 +RUN wget https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-x86_64.sh \ + && chmod +x cmake-${CMAKE_VERSION}-linux-x86_64.sh \ + && ./cmake-${CMAKE_VERSION}-linux-x86_64.sh --skip-license --prefix /usr/ \ + && rm cmake-${CMAKE_VERSION}-linux-x86_64.sh + +ADD ./scarab/ ./scarab/ +ENV PIN_ROOT=${WORKDIR}/pinplay-3.5/ +ADD ./pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/ ${PIN_ROOT} +ENV SCARAB_ENABLE_MEMTRACE=1 +RUN cd scarab/src \ + && make clean \ + && make diff --git a/current_image.txt b/current_image.txt new file mode 100644 index 0000000..92129b3 --- /dev/null +++ b/current_image.txt @@ -0,0 +1 @@ +ghcr.io/akarbas/ucsc-s23-cse220/scarab:0.1 diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/LICENSE b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/LICENSE new file mode 100644 index 0000000..d1b8ee6 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/LICENSE @@ -0,0 +1,140 @@ +IMPORTANT - READ BEFORE COPYING, INSTALLING OR USING. + +Do not copy, install, or use the "Materials" provided under this +license agreement ("Agreement"), until you have carefully read the +following terms and conditions. By copying, installing, or otherwise +using the Materials, you agree to be bound by the terms of this +Agreement. If you do not agree to the terms of this Agreement, do not +copy, install, or use the Materials. + +Pre-Release License Agreement for Pre-Release Software + +1. PRE-RELEASE: The Materials are pre-release code, which may not be +fully functional and which Intel may substantially modify in producing +any final version. Intel can provide no assurance that it will ever +produce or make generally available a final version. + +2. LICENSE DEFINITIONS: + +A. "Materials" are defined as the software, documentation, license key +codes and other materials, including any updates and upgrade thereto, +for the applicable pre-release software (which may be found at +http://www.pintool.org/), that are provided to you under this +Agreement. + +3. LICENSE GRANT: + +A. Subject to all of the terms and conditions of this Agreement, Intel +Corporation ("Intel") grants to you a non-exclusive, non-assignable +copyright license to make only the minimum number of copies of the +Materials reasonably necessary for your internal testing and +development of your products. + +B. Subject to all of the terms and conditions of this Agreement, Intel +grants to you a non-exclusive, non-assignable copyright license to +modify the Materials that are provided in source code (human readable) +form. + +C. If the Materials include the file named “redist.txt”, then subject to +all of the terms and conditions of this Agreement and any specific +restrictions which may appear in the “redist.txt” file, Intel grants to +you a non-exclusive, non-assignable copyright license to redistribute +the files (unmodified or modified by you) listed in the “redist.txt” +file only as part of the application you develop with the Materials. + +4. LICENSE RESTRICTIONS: + +A. You may not reverse-assemble, reverse-compile, or otherwise reverse-engineer any software provided solely in binary form. + +B. You may not distribute any portion of Materials, whether in source or binary form, to any third party, except as specified in this Agreement. + +5. COPYRIGHT: Title to the Materials and all copies thereof remain +with Intel or its suppliers. The Materials are copyrighted and are +protected by United States copyright laws and international treaty +provisions. You will not remove any copyright notice from the +Materials. You agree to prevent any unauthorized copying of the +Materials. Except as expressly provided herein, Intel does not grant +any express or implied right to you under Intel patents, copyrights, +trademarks, or trade secret information. Subject to Intel’s ownership +of the Materials, all right, title and interest in and to your +modifications shall belong to you. + +6. REPLACEMENTS: The Materials are provided "AS IS" without warranty +of any kind. If the media on which the Materials are furnished are +found to be defective in material or workmanship under normal use for +a period of ninety (90) days from the date of receipt, Intel's entire +liability and your exclusive remedy shall be the replacement of the +media. This offer is void if the media defect results from accident, +abuse, or misapplication. + +7. LIMITATION OF LIABILITY: THE ABOVE REPLACEMENT PROVISION IS THE +ONLY WARRANTY OF ANY KIND. INTEL OFFERS NO OTHER WARRANTY EITHER +EXPRESS OR IMPLIED INCLUDING THOSE OF MERCHANTABILITY, NONINFRINGEMENT +OF THIRD- PARTY INTELLECTUAL PROPERTY OR FITNESS FOR A PARTICULAR +PURPOSE. NEITHER INTEL NOR ITS SUPPLIERS SHALL BE LIABLE FOR ANY +DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF +BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, +OR OTHER LOSS) ARISING OUT OF THE USE OF OR INABILITY TO USE THE +SOFTWARE, EVEN IF INTEL HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. BECAUSE SOME JURISDICTIONS PROHIBIT THE EXCLUSION OR +LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES, THE +ABOVE LIMITATION MAY NOT APPLY TO YOU. + +8. UNAUTHORIZED USE: THE MATERIALS ARE NOT DESIGNED, INTENDED, OR +AUTHORIZED FOR USE IN ANY TYPE OF SYSTEM OR APPLICATION IN WHICH THE +FAILURE OF THE MATERIALS COULD CREATE A SITUATION WHERE PERSONAL +INJURY OR DEATH MAY OCCUR (E.G MEDICAL SYSTEMS, LIFE SUSTAINING OR +LIFE SAVING SYSTEMS). Should the buyer purchase or use the Materials +for any such unintended or unauthorized use, the buyer shall indemnify +and hold Intel and its officers, subsidiaries and affiliates harmless +against all claims, costs, damages, and expenses, and reasonable +attorney fees arising out of, directly or indirectly, any claim of +product liability, personal injury or death associated with such +unintended or unauthorized use, even if such claim alleges that Intel +was negligent regarding the design or manufacture of the part. + +9. USER SUBMISSIONS: You agree that any material, information or other +communication, including all data, images, sounds, text, and other +things embodied therein, you transmit or post to an Intel website or +provide to Intel under this Agreement will be considered +non-confidential ("Communications"). Intel will have no +confidentiality obligations with respect to the Communications. You +agree that Intel and its designees will be free to copy, modify, +create derivative works, publicly display, disclose, distribute, +license and sublicense through multiple tiers of distribution and +licensees, incorporate and otherwise use the Communications, including +derivative works thereto, for any and all commercial or non-commercial +purposes. + +10. TERMINATION OF THIS LICENSE: The term of this Agreement will +commence on the date this Agreement is accepted by You and will +continue until terminated. This Agreement will terminate without +notice on the last day of the pre-release period, which is specified +elsewhere in the Materials, or upon the commercial release of the +Materials. Intel may terminate this Agreement at any time, with or +without cause, with written notice to you. Upon termination, you will +immediately destroy the Materials or return all copies of the +Materials to Intel along with any copies you have made. + +11. U.S. GOVERNMENT RESTRICTED RIGHTS: The Materials are provided with +"RESTRICTED RIGHTS". Use, duplication or disclosure by the Government +is subject to restrictions set forth in FAR52.227-14 and +DFAR252.227-7013 et seq. or its successor. Use of the Materials by +the Government constitutes acknowledgment of Intel's rights in them. + +12. EXPORT RESTRICTED RIGHTS: This software is subject to the U.S. +Export Administration Regulations and other U.S. law, and may not be +exported or re-exported to certain countries (Burma, Cuba, Iran, North +Korea, Sudan, and Syria) or to persons or entities prohibited from +receiving U.S. exports (including Denied Parties, Specially Designated +Nationals, and entities on the Bureau of Export Administration Entity +List or involved with missile technology or nuclear, chemical or +biological weapons). + +13. APPLICABLE LAWS: Any claim arising under or relating to this +Agreement shall be governed by the internal substantive laws of the +State of Delaware or federal courts located in Delaware, without +regard to principles of conflict of laws. You may not export the +Materials in violation of applicable export laws. + +* Other names and brands may be claimed as the property of others diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/README b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/README new file mode 100644 index 0000000..90649a8 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/README @@ -0,0 +1,708 @@ +Pin 3.5 Release Notes +===================== + +Pin is a tool for the instrumentation of programs. It supports the Linux*, OS X* +and Windows* operating systems and executables for the IA-32 and Intel(R) 64 +architectures. + +For license information, see the LICENSE file and the extlicense directory. + +For information on how to use Pin, read the manual in doc/html/index.html. + +For questions and bug reports please visit http://tech.groups.yahoo.com/group/pinheads/ + +For downloading Intel(R) X86 Encoder Decoder please visit http://www.intel.com/software/xed + +Example usage +============= + +This example applies to a 64-bit application. For a 32-bit application please use "obj-ia32" +instead of "obj-intel64" and add "TARGET=ia32" to the make command. + +To build and run a sample tool on Linux*: + + cd source/tools/SimpleExamples + make obj-intel64/opcodemix.so + ../../../pin -t obj-intel64/opcodemix.so -- /bin/ls + + This will instrument and run /bin/ls, the output for this tool is in + opcodemix.out. + +To build and run a sample tool on Windows*, open a MSVC x86/x64 command line prompt +(depending on the application type) and run: + + cd source\tools\SimpleExamples + make obj-intel64/opcodemix.dll + ..\..\..\pin.exe -t obj-intel64\opcodemix.dll -- cmd /C dir + + This will instrument and run cmd /C dir, the output for this tool is in + opcodemix.out. + +Refer to the Examples section in the Pin User Guide for more usage examples. + +Restrictions +============ + + o Tools are restricted from linking with any system libraries and/or calling + any system calls. See the paragraph on PinCRT in the "Additional information + for PinTool writers" section for more information. + + o Pin on Windows* requires dbghelp.dll version 6.11.1.404. This DLL is + distributed with the kit. + + o Pin on Windows* requires msdia120.dll. This DLL is distributed with the kit. + + o There is a known problem of using pin on systems protected by the + "McAfee Host Intrusion Prevention"* antivirus software. See the + "Additional Information for Using Pin on Windows*" section for more + information. + + o There is a known problem of attaching pin to a running process on Linux systems that + prevent the use of ptrace attach using the sysctl /proc/sys/kernel/yama/ptrace_scope. + See the "Additional information for using Pin on Linux*" section for more + information. + + o Pin performs memory allocations in the application's address space. + As a result, memory allocations performed by the application can fail. + For example, some applications use the SmartHeap utility which could + perform huge memory allocations. Using the "-pin_memory_range" and/or + "-cc_memory_range" switches may be helpful in some of these cases. + On Windows*, using Microsoft* + Visual C++ compiler* "editbin"* utility to rebase pinvm.dll and the + pintool preferred loading addresses might be helpful as well, for + example: + editbin /REBASE:BASE=0x57000000 pinvm.dll + editbin /REBASE:BASE=0x58000000 + is helpful in some Windows applications. + + o There are known problems using Pin with the Google Chrome web browser: + On Windows, Pin may fail to attach to a running Chrome process. + On Linux, Pin may crash when instrumenting Chrome. + A possible workaround is to launch Chrome with the "--no-sandbox" command + line switch. + + o Pin will run on all Intel(R) 64 architectures. An IA-32 architecture needs the + following features: + C8 - CMPXCHG8B + SSE2 + CMOV + FXSR - FXSAVE/FXRSTOR + Pentium(R) III processors do not have SSE2. Pentium(R) 4 processors can run Pin. + You can check the capabilities of your processor on Linux with the following + command: + cat /proc/cpuinfo + + o Pin has not been tested on systems with non-Intel processors. + Therefore, incompatible or proprietary instructions in non-Intel processors may cause + Pin to function incorrectly. Any attempt to instrument code not supported by Intel + processors may lead to failures. + + +Additional information for PinTool writers +============================================ + + o Pin is built and distributed with its own OS-agnostic, compiler-agnostic runtime, + named PinCRT. PinCRT exposes three layers of generic APIs which practically + eliminate Pin’s and the tools’ dependency on the host system: + 1. A generic operating system interface, supplying basic OS services such as + process control, thread control etc. + 2. A C-runtime layer supplying a standard C implementation. This is complemented + by compiler-runtime functions necessary for enabling gcc, msvc, clang and icc. + 3. A C++ runtime. Please note that the current version does not support C++11 and + RTTI (Run-Time Type Information). + Tools are obliged to use (link with) PinCRT instead of any system runtime. Tools + must refrain from using any native system calls, and use PinCRT APIs for any + needed functionality. Note that PinCRT APIs may differ from the native system APIs. + For additional information see the OS APIs user guide in extras/crt/docs/html + and the PinCRT documentation at + https://software.intel.com/sites/default/files/managed/8e/f5/PinCRT.pdf + + o PinCRT currently does not support the Boost C++ libraries due to lack of RTTI. + + o Pin uses new method to handle application exit in Jit mode. Once exit + is started in application or internal thread, Pin gracefully terminates + all application threads that did not initiate the exit. + On Windows application thread that initiated exit remains active under + Pin control until last safe point where Pin tool can operate properly. + Pin APIs PIN_AddFiniUnlockedFunction, PIN_IsProcessExiting were removed. + Added callback type PREPARE_FOR_FINI_CALLBACK and Pin API function + PIN_AddPrepareForFiniFunction. PREPARE_FOR_FINI callbacks are delivered + at the beginning of application exit activity and intended for graceful + exit of internal threads and unsafe operations in Pin tool. + Valid operation of internal threads and any APIs beyond Pin API and CRT + used in Pin tool is not guaranteed after the callbacks. + + o Due to a compatibility issue between operating systems pin does *not* + provide support for registering atexit functions inside pintools + (which means that the behavior of a pintool that does so is undefined). + If you need such functionality, please register a Fini function. + In probe mode, the Fini function is not available, instead tools should + define a global class and add the functionality to its destructor. + + o Some APIs from older versions of Pin have been deprecated and replaced + by more powerful, or simpler, interfaces in the current version of Pin. + Usage of deprecated APIs in Pin Tools will trigger a compilation warning. + You can #define PIN_DEPRECATED_WARNINGS=0 to disable these warnings. + Please refer to the Pin Deprecated API section in the Pin User Guide for + a list of the deprecated APIs and their replacements. + Also note that such deprecated APIs may be completely removed in future + versions of Pin without prior notice. + +Additional information for using Pin on Windows* +=============================================== + +General issues + + Pin provides transparent support for exceptions in the application, + but prohibits using exceptions in the tool. If you need to assert + some condition, use the ASSERT() macro defined by pin instead of + the standard C assert(). + + The Image API does not work for gcc-compiled applications. + + There is a known problem of using pin on systems protected by the + "McAfee Host Intrusion Prevention"* antivirus software. We did not + test coexistence of pin with other antivirus products that perform + run-time execution monitoring. + + Pin may not instrument applications that restrict loading of DLLs from + non-local drives if Pin and / or Pin tool binaries are located + on a network drive. To workaround this problem, install all Pin and + Pin tool binaries on a local drive. + + Pin Advanced Debugging Extensions (PinADX) can be used freely starting + Visual Studio 2012 up to Visual Studio 2015. With Visual Studio 2017, + only debugger-attach mode is available (-appdebug). The Pin debugger + plugin is not yet active for Visual Studio 2017 due to lack of support + of the Microsoft debugger extensions API in this version of Visual Studio. + +Additional information for using Pin on Linux* +=============================================== + +General issues + + There is a known problem of attaching pin to a running process on Linux systems that + prevent the use of ptrace attach using the sysctl /proc/sys/kernel/yama/ptrace_scope. + (There is no problem in launching an application with Pin with this limitation). + To resolve this, set the kernel/yama/ptrace_scope sysctl to 0. + +Additional information for using Pin on OS X* +=============================================== + +General issues + + o Pin documentation is not yet updated with the OS X* support information. + o Pin must be run from either a developer account, or an administrator account. + o If you’re running Pin on a GUI session – an authentication popup might be shown when Pin starts to work. + This pop up will appear only once for the entire session. + o If you’re running Pin on a non-GUI session (e.g. SSH only) then Pin might fail immediately. + To fix this problem, you need to run 'sudo sbin/host_config'. + sbin/host_config is located in the Pin kit. + NOTE: The host_config utility program configures taskgated to allow signed executables that had requested the + SecTaskAccess priviledge to run task_for_pid() on any process without going through the usual authentication + popup. + This configuration can be reset by running "sudo sbin/host_config --undo". + + +******************************* Recent Changes ******************************* + +Changes added _After_ Pin 3.4 / 97438 +=========================================== + o + +Changes added _After_ Pin 3.3 / 83088 +=========================================== + o The knob -version_long has been removed. + +Changes added _After_ Pin 3.2 / 81205 +=========================================== + o Support for Android has been discontinued. + o The opmask registers (REG_K*) are no longer valid for IARG_REG_VALUE. + o The IARG_G_* IARGs, which have been deprecated for a very long time, have been completely removed. + Please use IARG_FUNCARG_* and IARG_FUNCRET_* instead. + o The IARG_SYSCALL_ARG* IARGs, which have been deprecated for a very long time, have been completely + removed. Please use IARG_SYSARG_* instead. + o Added a new API, PIN_RemoveInstrumentationInRange, which removes all instrumentation in the given + range. See the user guide for further details. + o The IA64-only IARGs, IARG_REG_OUTPUT_FRAME_VALUE and IARG_REG_OUTPUT_FRAME_REFERENCE, have been + removed. + o Changes to the CODECACHE API: + The following functions were deprecated: + - CODECACHE_FlushCache - use PIN_RemoveInstrumentation instead. + - CODECACHE_InvalidateTraceAtProgramAddress - use PIN_RemoveInstrumentationInRange instead. + - CODECACHE_InvalidateRange - use PIN_RemoveInstrumentationInRange instead. + - TRACE_Original - always returns TRUE. + All other functions with the CODECACHE prefix were removed. + The following functions were also removed: + - INS_CodeCacheAddress, INS_CodeCacheSize + - BBL_CodeCacheSize, BBL_CodeCacheAddress + - TRACE_CodeCacheAddress, TRACE_CodeCacheSize + - PIN_MemoryAllocatedForPin + o Added a new API, PIN_CreateDefaultConfigurationInfo, which creates an instance of + PIN_CONFIGURATION_INFO containing default configuration values. + o Changed PIN_StartProgram to accept an additional argument: an instance of PIN_CONFIGURATION_INFO + that applies to the current run of Pin. + o Added a new API, PIN_SetAllowedConcurrentCallbacks, which can be used to change the types of Pin + callbacks that are allowed to be delivered concurrently. + o Symbol resolution on Windows is done with the msdia120.dll that is distributed with the kit. + The 64 bit and 32 bit versions of this biary from Microsoft SDK have been added to the kit. + +Changes added _After_ Pin 3.2 / 79375 +=========================================== + o Added a utility program sbin/host_config to Pin's OS X* kit. + This program configures Pin to have the necessary permissions to run non-interactively. + o Added Pin API: INS_IsCacheLineFlush() - API to classify instructions that cause cache line flush. + +Changes added _After_ Pin 3.1 / 76225 +=========================================== + o On Windows, Pintools are no longer required to be compiled with /D_SECURE_SCL=0. + o A Pin enabled libunwind library was introduced. This library can be linked and used + in a Pin tool. + o Added equivalent implementation for glibc's backtrace functions: + backtrace(), and backtrace_symbols(). + o Added Pin API: PIN_Backtrace() - Similar to backtrace() but generates a backtrace for the + instrumented application instead of a native backtrace for the Pin tool. + o Added Pin API: PIN_GetInitialContextForUnwind() - Equivalent to unw_get_context() but retrieves + the instrumented application context instead of the native context. + +Changes added _After_ Pin 3.0 / 73178 +=========================================== + o The Intel(R) XED kit is no longer distributed with the Pin kit. To download Intel(R) XED please + visit http://www.intel.com/software/xed + o Pin can now run in launch mode even in Linux environments where /proc/sys/kernel/yama/ptrace_scope + is set to 1, limiting use of ptrace. + o New APIs PIN_AddSmcDetectedFunction and PIN_SetSmcSupport were added, for more control of how Pin + supports self-modifying-code. + o Enhanced IARG_MEMEORYWRITE_SIZE and IARG_MEMORYREAD_SIZE to support XSAVE, XSAVEC, XSAVEOPT and XRSTOR + instructions which have variable length memory size. + o Added user API INS_hasKnownMemorySize to check if user can use safely the IARG_MEMORYWRITE_SIZE and the + IARG_MEMORYREAD_SIZE + o New APIs PIN_AddThreadAttachFunction and PIN_AddThreadDetachFunction were added for Linux. + These allow a Pin tool to get a callback for each thread when Pin attaches/detaches from the application. + o Added PIN_Attach() to support re-attach in JIT mode (currently only implemented on Linux). + +Changes added _After_ Pin 2.14 / 71313 +=========================================== + o The APIs PIN_AddFiniUnlockedFunction() and PIN_IsProcessExiting() were removed. + Added callback type PREPARE_FOR_FINI_CALLBACK and Pin API function + PIN_AddPrepareForFiniFunction(). Refer to ToolUnitTests/mt_tool.test for sample. + o The APIs GetVmLock and ReleaseVmLock were removed. + o Added PIN_GetAuxVectorValue() API, which queries aux vector values passed to the application. + This API is available in Linux and Android. Refer to auxv_query_jit.test and auxv_query_probe.test + samples in AttachDetach. + o Intel(R) XED and pindwarf are now linked dynamically to Pin and tools on all Unix platforms. + The static library versions are no longer distributed with the Pin kit. + o Pin no longer uses the system runtime, but rather a new runtime, PinCRT, which is distributed with the + Pin kit. Pin tools are also required to link and use this new runtime. For further details please see + the "Additional information for PinTool writers" and "Restrictions" sections above. + +Changes added _After_ Pin 2.14 / 67254 +=========================================== + o Added support for debug information placed in a separate file. + See example "get_source_location_gnu_debug.test" under SimpleExamples. + o RTN_Id now returns UINT32 instead int. PinTools have been updated accordingly. + o When using INS_InsertCall() on non-standard memory instructions (e.g. XSAVE) with inappropriate + memory operands related IARGs PIN will generate an error. + Note that some IARGs (e.g. IARG_MULTI_MEMORYACCESS) will still work on specific non-standard memory + instructions with vector arguments (VGATHER/VSCATTER in the case of IARG_MULTI_MEMORYACCESS). + o Added INS_IsStandardMemop(INS) which returns FALSE for non-standard memop instructions. + o Added PIN_IsThreadStoppedInDebugger(THREADID) which returns TRUE if the thread denoted by the + THREADID is currently stopped inside the debugger (when using PIN ADX). + o PIN_CallApplicationFunction() now accepts additional argument which + specifies how PIN should behave when invoking the application function. + Using this argument allows the user to specify that he wants to invoke + the application function without instrumenting it. + o The following APIs were removed: SYM_OriginatedFromIFunc, SYM_IFunc. + o The following APIs were added: RTN_IFuncResolver, RTN_IFuncImplementation, SYM_IFuncImplementation, SYM_IFuncResolver, SYM_GeneratedByPin + o When RTN_FindByName is called on an IFunc (such as gettimeofday, memcpy) the returned RTN is that of the ifunc implementation. + One may obtain the resolver RTN (and instrument it as well) by calling RTN_IFuncResolver(). + Note that the ifunc implementation may not reside in the same IMG as originally searched. + +Changes added _After_ Pin 2.13 / 65163 +=========================================== + o Added a new command line option, -appdebug_server_port, for requesting a specific port for gdb to listen on + when debugging the application (using the Pin advanced debugging extensions). + o Added a new IARG, IARG_EXPLICIT_MEMORY_EA, for getting the effective address of an explicit memory operand. + For example, this can be used for getting the address of an LEA instruction. + o All callback registration functions (e.g. PIN_AddThreadStartFunction()) are now returning a PIN_CALLBACK + instance that can later be used with CALLBACK_SetExecutionPriority() to control the order of execution + between all registered callbacks of the same kind. + o Added a new knob "-cc_memory_range". This knob enables the user to specify the memory address range(s) where + PIN should allocate its code cache regions. Note that this doesn't mean that PIN will allocate all of the + specified ranges but instead this knob just ensures that if PIN will allocate a code cache region then it + will be allocated in one of the specified regions. + If "-cc_memory_range" knob wasn't specified but "-pin_memory_range" was, then code cache regions will be + allocated inside the regions specified in the "-pin_memory_range" knob. + o Added a new knob "-restrict_memory". This knob enables the user to restrict several memory regions + from PIN's image loader. This means that PIN will not load any image in the address ranges specified by + this knob. + o Added a new knob "-pin_memory_size". This knob enbales the user to specify a hard limit of dynamic memory + that can be allocated by PIN and PIN tool (in bytes). When this limit exceeds, an out of memory condition + occurs. + o The knob "-limit_code_cache" was renamed to "-cc_memory_size" to align with the naming convention + introduced by the newly added knob "-pin_memory_size". + +Changes added _After_ Pin 2.13 / 62732 +=========================================== + o Support for Android Ice Cream Sandwich (4.0) has been deprecated. + o Support for Android Kit Kat (4.4) has been added. + o Added support for split images i.e. the image segments are loaded in non-consecutive memory regions. + The IMG_LowAddress and IMG_HighAddress were updated and three new APIs were added: IMG_NumRegions, + IMG_RegionLowAddress and IMG_RegionHighAddress. See the user guide for further details. + o Added a new API, PIN_GetInitialThreadCount, for obtaining the number of threads during attach. + +Changes added _After_ Pin 2.13 / 61206 +=========================================== + o Ifunc support for Linux has been added. + o A new API, SYM_OriginatedFromIFunc, has been added, which indicates if a SYM originated from an ifunc symbol. + o Removed the REGVAL struct and matching APIs. PIN_GetContextRegval and PIN_SetContextRegval accept UINT8* as the + value argument. The user must ensure that the UINT8* pointer points to a valid buffer which is large enough to + contain the requested register value. See SimpleExamples/regval.cpp for a typical usage example. + o Two deprecated APIs were re-enabled: PIN_SetContextFPState and PIN_GetContextFPState. These APIs provide access + to the entire floating point state via the FPSTATE type. + o Support for QEmu Android devices has been added. + o Support for PIN_GetSourceLocation has been added on Android and OS X*. + o Added support for VS2012 - Added a kit for VS2012, tools can now be compiled with VS2012 when using the new kit. + +Changes added _After_ Pin 2.13 / 59453 +=========================================== + o Two new APIs, PIN_CheckReadAccess and PIN_CheckWriteAccess, have been added. + These APIs give the tool information about the read and write access protection of a memory page respectively. + Please refer to the user guide for additional information. + o Support for Android Jelly Bean (Android 4.1) has been added. + o Support for Android Honeycomb (Android 3.0) has been deprecated. + +Changes added _After_ Pin 2.12 / 58423 +=========================================== + o Lock APIs (InitLock, GetLock, ReleaseLock) were renamed, with a PIN_ prefix added to each function name. + +Changes added _After_ Pin 2.12 / 56759 +=========================================== + o New APIs were added which allow the tool to manipulate registers of any size. Please refer to the user + guide, section REGVAL, for additional information. See SimpleExamples/regval.cpp for a typical usage + example. For more complex examples, including CONTEXT modification, see the tests in the Regvalue + directory. + o Internal lock usage in Pin APIs is documented. + o New APIs were added which allow the tool to stop, examine and resume application threads. Please refer + to the user guide, section STOPPED_THREAD, for additional information. + +Changes added _After_ Pin 2.12 / 54730 +=========================================== + o The PinTools makefile infrastructure has been changed. It is now simpler to use and to modify. + For detailed information, read the documentation in source/tools/Config/makefile.config. + o Nmake is no longer supported on windows. Either use make or the example vcproj file in the + MyPinTool directory. + o Android support has been added. An Android tutorial is avaliable at: /AndroidTutorial. + o The directory tree under /source/include has been changed, the include files are now located at: + /source/include/pin and /source/include/pin/gen. + +Changes added _After_ Pin 2.12 / 53271 +=========================================== + o A new API, PIN_AddThreadDetachProbedFunction, has been added on Linux. This allows the tool to receive + a per-thread callback before each application thread is about to detach in probe mode. Please refer to + the user guide for additional information. + o The kit naming convention was changed: + The kit name no longer includes the architecture type, the architecture will be implicitly defined by + the platform of the kit. + For example: pin-2.12-53271-gcc.4.4.7-intel64_ia32-linux is now called pin-2.12-53271-gcc.4.4.7-linux. + +Changes added _After_ Pin 2.11 / 49306 +=========================================== + o Pin is now compiled with gcc 4.4.7 on Linux. + o The Linux Pin kit runtime directory structure has changed: libstdc++ and libgcc_s have moved from: + "intel64/runtime" to a new directory: "intel64/runtime/cpplibs" (and ia32 equivalent). The kit comes + with these two libraries already installed and the tools' build process (makefile configuration) will + automatically choose whether to link/run with them or not, depending on the compiler being used. + o Updated versions of libelf.so and libelf.a are available in the Pin package. + o Pin is now launched using a c-based program instead of the previously used scripts. The sources for + this launcher are available at /source/launcher-example.c + +Changes added _After_ Pin 2.11 / 45931 +=========================================== + o An updated version of libdwarf.so is available in the Pin package. This version is compatible with the + latest gcc version. See the EXTLICENSE file for more details. + o The thread fini callbacks and buffer callbacks may now be called on a different physical thread than + the one that is exiting. + o The PIN_GetThreadData and PIN_SetThreadData APIs may now access the TLS of a different thread than the + calling thread by using the version of these APIs which takes a THREADID argument. The versions that do + not take the THREADID argument are now deprecated. + +Changes added _After_ Pin 2.10 / 45467 +=========================================== + o The THREAD_ATTACH_PROBED_CALLBACK callback was changed. It now enables the tool to receive the thread's + signal mask at the attach point and to modify it. + o Changed the default behavior when pin injection to child process fails. In case that pin injection + to a child process fails, the child process wouldn't terminate. Instead, it would run natively + (without instrumentation). + +Changes added _After_ Pin 2.10 / 43611 +=========================================== + o New APIs have been added to synchronize between threads. See PIN_MUTEX, PIN_RWMUTEX, + and PIN_SEMAPHORE. + o Added a new knob "-tool_load_option". This knob enables the user to specify additional options + for loading the tool. See the manual for more details. + +Changes added _After_ Pin 2.10 / 41150 +=========================================== + o The Pthread example tool directory was removed from the example tools. + o On Windows, dbghelp.dll is now included with the Pin kit. There's no need to manually + download and install dbghelp.dll. + o The API "INS_MemoryDisplacementSigned" is now deprecated. The two APIs,"INS_MemoryDisplacement" + and "INS_OperandMemoryDisplacement", have been changed to return the memory displacement as + ADDRDELTA. This means signed 32 bits value on IA32 and signed 64 bits value on 64 bits. + +Changes added _After_ Pin 2.9 / 40272 +=========================================== + o Guidelines for avoiding deadlocks in multi-threaded applications were + added to the "How to Instrument with Pin" section of the Pin User Guide. + o Application level debugging API has been added. This API allows the user to debug the application + that is running on top of Pin. It also allows a tool to interact with the debugger and provide + extended commands to the debugger. + +Changes added _After_ Pin 2.9 / 39501 +=========================================== + o The "use_dynsym" knob is now deprecated. On Linux, when invoking PIN_InitSymbols or + PIN_InitSymbolsAlt, both the SYMTAB and the DYNSYM tables will be processed. + This change does not affect Windows. + o Added a new PIN_ERRTYPE - PIN_ERR_ACCESS_DENIED. This type signifies that an access to a file was denied + due to bad permissions. + o The API "RTN_No" is now deprecated. A new API "RTN_Id" has been added to replace it. The function returns + a unique Id for the RTN. The Id is globally unique i.e. an Id will not appear in two images. When + unloading and reloading an image, it is most likely that a RTN will receive a different Id. + +Changes added _After_ Pin 2.8 / 39028 +=========================================== + o On Linux, Pin allows tools to see an instrument IFUNC symbols. + To enable this feature the tool needs to call PIN_InitSymbolsAlt(SYMBOL_INFO_MODE mode) + with the IFUNC_SYMBOLS flag set. + Use the new API SYM_IFunc(SYM x) to find if a given symbol is an IFUNC symbol. + + o On Windows*, Pin supports tools built with Intel(R) C++ compiler 10.1 and 11.1 . + +Changes added _After_ Pin 2.8 / 37832 +=========================================== + o On Linux, Pin is now checking the sysctl /proc/sys/kernel/yama/ptrace_scope and providing + relevant error message in case it is set to '1'. + See the "Additional information for using Pin on Linux*" section for more information. + + o On Linux, the following changes have been made for IMG and SEC objects used inside image-load callback. + While parsing the image Pin maps the whole image into store before calling the image-load callback. + Pin now umaps this copy of the file after the image-load callback returns to reduce memory use. + The addresses provided by IMG_StartAddress() and SEC_Data() point into the mapped image file and are + therefore only valid inside the image-load callback or after IMG_Open(). + + o A new API, PIN_ExitApplication, was added. This API terminates the current process after calling the + relevant thread and process exit callbacks. + + o A new API, RTN_InsHeadOnly, was added. This API provides a faster alternative to RTN_InsHead for tools + that want to examine only the first INS of an RTN. + +New Features added _After_ Pin 2.8 / 37300 +========================================== + o The FPSTATE type used by the API's PIN_GetContextFPState() and PIN_SetContextFPState() + has changed slightly. The "_st" and "_xmm" fields have been renamed and redefined + to better expose the structure of these FP registers. Code that refers to these + fields will fail to compile (because the field names have changed), and authors will + need to port to the new layout. + + o If you build Pin tools _without_ using the makefile or VS project file provided in + the Pin kit, you will need to add the following directory to the #include search path: + + /extras/components/include + +New Features added _After_ Pin 2.8 / 37081 +========================================== + o The Pin User Guide was updated with a list of Pin deprecated APIs and their + replacements. + +New Features added _After_ Pin 2.8 / 36909 +========================================== + o Pin tools are now encouraged to dynamically link with libelf and libdwarf. + Tools should link with the Pin-compatible versions of libelf.so and libdwarf.so that were + added to the Pin package. + + o PIN_UndecorateSymbolName() was reimplemented without using libiberty. + The libiberty.a library was removed from the Pin package. Pin tools no longer need to + link with this library. + +New Features added _After_ Pin 2.8 / 36111 +========================================== + o PIN_RemoveInstrumentation() now removes all instrumentation but + does not remove the saved ahead-of-time intrumentation requests, so + they will be re-applied if instructions which they targeted are + re-executed. This is consistent with its behavior for JIT + instrumentation; instrumentation callbacks continue to be made + after PIN_RemoveInstrumentation() has been called. + Previously PIN_RemoveInstrumentation() also cleared the saved + ahead-of-time intrumentation requests, so they would not be re-applied. + +New Features added _After_ Pin 2.8 / 33199 +========================================== + o The ability to debug 64-bit Pin tools on Linux has been somewhat improved. GDB + will now normally find the tool's shared libraries, which allows you to debug + crashes that occur when calling into a library. + +New Features added _After_ Pin 2.7 / 31933 +========================================== + o Pin allows tools to create their own internal, non-instrumented threads. The + following APIs have been added to support this feature: + PIN_SpawnInternalThread() - Create a new internal thread + PIN_ExitThread() - Terminate the current internal thread + PIN_WaitForThreadTermination() - Wait until the thread terminates and return exit code + PIN_IsApplicationThread() - Check the type of the thread (application's or internal) + PIN_Sleep() - Delay the calling thread for the specified time interval + PIN_Yield() - Yield the processor to another thread + PIN_ThreadUid() - Get unique (not reusable) identifier of the current thread in Pin. + PIN_IsProcessExiting() - Tool's threads should periodically call this function to check + if the application is about to exit. + PIN_AddFiniUnlockedFunction() - Yet another method to terminate tool's threads gracefully + when the process is about to exit. + Many Pin APIs, that are primarily intended for application's threads, are also available in + internal threads. Look at the API's description or the description of the corresponding + group of APIs to check whether specific API is available in internal threads. + + o A new API, PIN_InsertCallProbed was added. This API is used to insert a call to a + notification routine before a specific instruction. To guarantee safe usage of + this API the required location must have a single instruction that follows the + following restrictions: + - The size of the instruction is at least 5 bytes (in IA32) or 7 bytes (in Intel64). + - The instruction is not a control flow instruction. + - The instruction has no memory operand. + If the location is prepared in advance to be used with this API, the user can put + a large size NOP instruction that always follows the above restrictions. + + There is also a new API, PIN_IsSafeForProbedInsertion, to check if the location is + safe for inserting call (i.e. it follows the restrictions of PIN_InsertCallProbed). + +New Features added _After_ Pin 2.7 / 29972 +========================================== + o PIN_UndecorateSymbolName() is supported now on Linux and FreeBSD. Pin tools should be statically + linked with libiberty.a library, which became a part of Pin package like libelf and libdwarf. + + o Internal exception handling support was added on Windows. The new supported APIs are + PIN_AddInternalExceptionHandler(), PIN_TryStart(), PIN_TryEnd(), PIN_SetPhysicalContextReg(), + PIN_GetPhysicalContextReg(), PIN_SetPhysicalContextFPState(), PIN_GetPhysicalContextFPState(). + These APIs allow the user to be notified upon internal exception (generated by pin / tool) and + handle it. If the exception was generated unintentionally, it may indicate about a bug in pin / tool. + + o A new version of dbghelp is needed on Windows*. For more information see the + "Additional Information for Using Pin on Windows*" section. + + o There is a new API PIN_RaiseException() that allows a tool to emulate an exception + into the application. + + o New APIs are provided to allow tools more easily to iterate over the memory operands + of an instruction without having to explicitly check for odd cases such as the READ2 + operand of SCAS. The examples such as ManualExamples/pinatrace.cpp have been + rewritten to use the new interface. + +New Features added _After_ Pin 2.6 / 27887 +========================================== + o On Windows, Pintools must be compiled with /D_SECURE_SCL=0. Please see the User's + Guide for more information on mandatory compiler and linker swtiches. + + o Pin on Windows* now supports "early injection". The injection occurs right after + kernel32.dll is loaded and initialized. This allows Pin to instrument + DllMain(fdwReason=DLL_PROCESS_ATTACH) of the rest of the implicitly loaded DLLs. + The injection occurs when the application's loader is active and the system's loader + lock is acquired. + + o Pin on Windows* in Probe mode supports attach to a running process (using -pid + command line switch). + + o Pin on Windows* in Probe mode supports lite detach & reattach. + The new supported APIs are: PIN_AddDetachFunctionProbed(), PIN_DetachProbed(), + PIN_AttachProbed(). The -detach_reattach command line switch must be specified in + order to enable the feature. + + o In order to perform "early injection", attach, lite detach & reattach, Pin on Windows* + uses the debugging APIs. Therefore, you must attach with a debugger *after* the Pin + injection takes place (In particular, don't enable the Windbg* "Debug child processes also" + button). Pin's -debug_instrumented_processes command line switch can be used + in order to get a message that debugger attach can be done. + + o The treatment of REP prefixed instructions in the IA-32 and Intel(R) 64 architectures has + been changed. REP prefixed instructions are now treated as implicit loops, with + IPOINT_BEFORE and IPOINT_AFTER instrumentation called before each iteration. This will + affect instruction counts. PinTools/InstLib/icount.H shows how to collect an instruction + count which only counts a REP prefixed instruction once, as Pin used to do. + + o The Pin User Manual now includes a section on optimizing the treatment of REP prefixed + instructions. + + o As a result of the changes to REP prefixed instruction handling, + VARIABLE_MEMORY_REFERENCE_SIZE has been deprecated. No instructions now have a + variable memory reference size, so code which expected that can probably be removed from + your tools. + + o On the IA-32 and Intel(R) 64 architectures CMOVcc, FCMOVcc and REP prefixed instructions + are now treated as predicated. + + o Pin tools which use the REG_INST_Gn registers should consider using the new function + PIN_ClaimToolRegister() to allocate them to avoid conflicts if you want to integrate + multiple tools. + + +New Features added _After_ Pin 2.6 / 25945 +========================================== + o Support for a new buffering API has been added for IA-32 and Intel(R) 64 architectures. + This allows a tool to write data to a buffer for processing. See PIN_DefineTraceBuffer() + for more information. + +****************************************************************************** + + +Disclaimer and Legal Information +================================ + +The information in this document is subject to change without notice and +Intel Corporation assumes no responsibility or liability for any +errors or inaccuracies that may appear in this document or any +software that may be provided in association with this document. This +document and the software described in it are furnished under license +and may only be used or copied in accordance with the terms of the +license. No license, express or implied, by estoppel or otherwise, to +any intellectual property rights is granted by this document. The +information in this document is provided in connection with Intel +products and should not be construed as a commitment by Intel +Corporation. + +EXCEPT AS PROVIDED IN INTEL'S TERMS AND CONDITIONS OF SALE FOR SUCH +PRODUCTS, INTEL ASSUMES NO LIABILITY WHATSOEVER, AND INTEL DISCLAIMS +ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO SALE AND/OR USE OF INTEL +PRODUCTS INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A +PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, +COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT. Intel products are not +intended for use in medical, life saving, life sustaining, critical +control or safety systems, or in nuclear facility applications. + +Designers must not rely on the absence or characteristics of any +features or instructions marked "reserved" or "undefined." Intel +reserves these for future definition and shall have no responsibility +whatsoever for conflicts or incompatibilities arising from future +changes to them. + +The software described in this document may contain software defects +which may cause the product to deviate from published +specifications. Current characterized software defects are available +on request. + +Intel and Pentium are trademarks or registered trademarks of +Intel Corporation or its subsidiaries in the United States and other +countries. + +Intel, Xeon, and Intel Xeon Phi are trademarks of Intel Corporation in +the U.S. and/or other countries. + +Microsoft, Windows, and the Windows logo are trademarks, or registered trademarks +of Microsoft Corporation in the United States and/or other countries. + +Java and all Java based trademarks and logos are trademarks or registered trademarks +of Sun Microsystems, Inc. in the U.S. and other countries. + +*Other names and brands may be claimed as the property of others. + +Copyright(c) 2004-2017, Intel Corporation. All rights reserved. + +Intel Corporation, 2200 Mission College Blvd., +Santa Clara, CA 95052-8119, USA. diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/annotated.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/annotated.html new file mode 100644 index 0000000..0d4983d --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/annotated.html @@ -0,0 +1,58 @@ + + +Pin: Class List + + + + +
+
+ +

Pin Class List

Here are the classes, structs, unions and interfaces with brief descriptions: + + + + + + + + + + + + + + + + + + + + +
_tcpClientStruct
_tcpServerStruct
CALL_APPLICATION_FUNCTION_PARAM
DEBUG_CONNECTION_INFO
DEBUG_MODE
DEBUGGER_REG_DESCRIPTION
INSTLIB::FOLLOW_CHILD
INSTLIB::ICOUNT
DEBUGGER_SHELL::ICUSTOM_INSTRUMENTOR
LEVEL_BASE::ImageLoaderInfo
DEBUGGER_SHELL::ISHELL
CONTROLLER::PCREGION
PIN_CODE_RANGE
PIN_MEM_ACCESS_INFO
PIN_MEM_TRANS_FLAGS
PIN_MULTI_MEM_ACCESS_INFO
PIN_REGISTER
CONTROLLER::ROIinfoStruct
CONTROLLER::ROIpcinfoStruct
DEBUGGER_SHELL::STARTUP_ARGUMENTS
+
Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/classCONTROLLER_1_1PCREGION-members.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/classCONTROLLER_1_1PCREGION-members.html new file mode 100644 index 0000000..5b5d223 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/classCONTROLLER_1_1PCREGION-members.html @@ -0,0 +1,51 @@ + + +Pin: Member List + + + + +
+
+ +

CONTROLLER::PCREGION Member List

This is the complete list of members for CONTROLLER::PCREGION, including all inherited members.

+ + + + + + + + + + + + + + +
CONTROL_PCREGIONS (defined in CONTROLLER::PCREGION)CONTROLLER::PCREGION [friend]
GetComment() const (defined in CONTROLLER::PCREGION)CONTROLLER::PCREGION [inline]
GetParentSimulationRegion() const (defined in CONTROLLER::PCREGION)CONTROLLER::PCREGION [inline]
GetRegionEndCount() const (defined in CONTROLLER::PCREGION)CONTROLLER::PCREGION [inline]
GetRegionEndCountRelative() const (defined in CONTROLLER::PCREGION)CONTROLLER::PCREGION [inline]
GetRegionEndPC() const (defined in CONTROLLER::PCREGION)CONTROLLER::PCREGION [inline]
GetRegionId() const (defined in CONTROLLER::PCREGION)CONTROLLER::PCREGION [inline]
GetRegionLength() const (defined in CONTROLLER::PCREGION)CONTROLLER::PCREGION [inline]
GetRegionMultiplier() const (defined in CONTROLLER::PCREGION)CONTROLLER::PCREGION [inline]
GetRegionStartCount() const (defined in CONTROLLER::PCREGION)CONTROLLER::PCREGION [inline]
GetRegionStartPC() const (defined in CONTROLLER::PCREGION)CONTROLLER::PCREGION [inline]
GetWeightTimesHundredThousand() const (defined in CONTROLLER::PCREGION)CONTROLLER::PCREGION [inline]
IsWarmupRegion() const (defined in CONTROLLER::PCREGION)CONTROLLER::PCREGION [inline]
PCREGION() (defined in CONTROLLER::PCREGION)CONTROLLER::PCREGION [inline]


Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/classCONTROLLER_1_1PCREGION.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/classCONTROLLER_1_1PCREGION.html new file mode 100644 index 0000000..143154d --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/classCONTROLLER_1_1PCREGION.html @@ -0,0 +1,92 @@ + + +Pin: CONTROLLER::PCREGION Class Reference + + + + +
+
+ + +

CONTROLLER::PCREGION Class Reference
+ +[CONTROLLER_PCREGIONS] +

#include <pcregions_control.H> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

+string GetComment () const
+UINT32 GetRegionId () const
+BOOL IsWarmupRegion () const
+UINT64 GetRegionStartCount () const
+UINT64 GetRegionEndCount () const
+UINT64 GetRegionEndCountRelative () const
+UINT64 GetRegionLength () const
+UINT64 GetRegionStartPC () const
+UINT64 GetRegionEndPC () const
+double GetRegionMultiplier () const
+PCREGIONGetParentSimulationRegion () const
+UINT32 GetWeightTimesHundredThousand () const

Friends

+class CONTROL_PCREGIONS
+


Detailed Description

+This class is used for reading in the pcregions.csv file +

+


The documentation for this class was generated from the following file:
    +
  • pcregions_control.H
+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/classDEBUGGER__SHELL_1_1ICUSTOM__INSTRUMENTOR-members.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/classDEBUGGER__SHELL_1_1ICUSTOM__INSTRUMENTOR-members.html new file mode 100644 index 0000000..8c2cc8f --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/classDEBUGGER__SHELL_1_1ICUSTOM__INSTRUMENTOR-members.html @@ -0,0 +1,40 @@ + + +Pin: Member List + + + + +
+
+ +

DEBUGGER_SHELL::ICUSTOM_INSTRUMENTOR Member List

This is the complete list of members for DEBUGGER_SHELL::ICUSTOM_INSTRUMENTOR, including all inherited members.

+ + + +
InsertBreakpointAfter(INS ins, BBL bbl, IPOINT ipoint, CALL_ORDER order, const std::string &message)=0DEBUGGER_SHELL::ICUSTOM_INSTRUMENTOR [pure virtual]
InsertBreakpointBefore(INS ins, BBL bbl, CALL_ORDER order, const std::string &message)=0DEBUGGER_SHELL::ICUSTOM_INSTRUMENTOR [pure virtual]
~ICUSTOM_INSTRUMENTOR()=0DEBUGGER_SHELL::ICUSTOM_INSTRUMENTOR [inline, pure virtual]


Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/classDEBUGGER__SHELL_1_1ICUSTOM__INSTRUMENTOR.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/classDEBUGGER__SHELL_1_1ICUSTOM__INSTRUMENTOR.html new file mode 100644 index 0000000..a05e733 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/classDEBUGGER__SHELL_1_1ICUSTOM__INSTRUMENTOR.html @@ -0,0 +1,254 @@ + + +Pin: DEBUGGER_SHELL::ICUSTOM_INSTRUMENTOR Class Reference + + + + +
+
+ + +

DEBUGGER_SHELL::ICUSTOM_INSTRUMENTOR Class Reference
+ +[DEBUGGER_SHELL] +

#include <debugger-shell.H> +

+List of all members. + + + + + + + + +

Public Member Functions

virtual VOID InsertBreakpointBefore (INS ins, BBL bbl, CALL_ORDER order, const std::string &message)=0
virtual VOID InsertBreakpointAfter (INS ins, BBL bbl, IPOINT ipoint, CALL_ORDER order, const std::string &message)=0
virtual ~ICUSTOM_INSTRUMENTOR ()=0
+


Detailed Description

+Some tools may need to define their own analysis routine that stops at a debugger breakpoint. Such tools can define their own class, which derives from ICUSTOM_INSTRUMENTOR. Pass a pointer to that object to STARTUP_ARGUMENTS::_customInstrumentor.

+Most tools do not need to override the default instrumentation, so most tools need not use this interface. +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
DEBUGGER_SHELL::ICUSTOM_INSTRUMENTOR::~ICUSTOM_INSTRUMENTOR  )  [inline, pure virtual]
+
+ + + + + +
+   + + +

+Destroys the custom instrumentor object. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual VOID DEBUGGER_SHELL::ICUSTOM_INSTRUMENTOR::InsertBreakpointAfter INS  ins,
BBL  bbl,
IPOINT  ipoint,
CALL_ORDER  order,
const std::string &  message
[pure virtual]
+
+ + + + + +
+   + + +

+The debugger shell calls this method to insert a "then" instrumentation call to an analysis routine that stops at a debugger breakpoint _after_ an instruction. The default instrumentation looks like this. Tools that implement this method should insert similar instrumentation:

+

  VOID InsertBreakpointAfter(INST ins, BBL bbl, IPOINT ipoint, CALL_ORDER order,
+      const std::string &message)
+  {
+      INS_InsertThenCall(ins, ipoint, (AFUNPTR)TriggerBreakpointAfter,
+          IARG_CALL_ORDER, order,
+          IARG_CONTEXT, IARG_INST_PTR, IARG_THREAD_ID,
+          IARG_PTR, message.c_str(),
+          IARG_END);
+  }
+
+  VOID TriggerBreakpointAfter(CONTEXT *ctxt, ADDRINT pc, THREADID tid, const char *message)
+  {
+      std::ostringstream os;
+      os << message << "\n";
+      os << "Breakpoint triggered after instruction at 0x" << std::hex << pc;
+
+      PIN_ApplicationBreakpoint(ctxt, tid, FALSE, os.str());
+  }
+

+

Parameters:
+ + + + + + +
[in] ins Insert the instrumentation after this instruction.
[in] bbl The basic block containing ins.
[in] ipoint Tells whether to instrument IPOINT_AFTER or IPOINT_TAKEN_BRANCH.
[in] order The instrumentation call order to use for the instrumentation.
[in] message String telling why the breakpoint is triggered. The string is allocated in permanent storage, so the client can pass it directly to an analysis routine. If the debugger shell removes instrumentation, it will also deallocate this string.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual VOID DEBUGGER_SHELL::ICUSTOM_INSTRUMENTOR::InsertBreakpointBefore INS  ins,
BBL  bbl,
CALL_ORDER  order,
const std::string &  message
[pure virtual]
+
+ + + + + +
+   + + +

+The debugger shell calls this method to insert a "then" instrumentation call to an analysis routine that stops at a debugger breakpoint _before_ an instruction. The default instrumentation looks like this. Tools that implement this method should insert similar instrumentation:

+

  VOID InsertBreakpointBefore(INST ins, BBL bbl, CALL_ORDER order, const std::string &message)
+  {
+      INS_InsertThenCall(ins, IPOINT_BEFORE, (AFUNPTR)TriggerBreakpointBefore,
+          IARG_CALL_ORDER, order,
+          IARG_CONTEXT, IARG_THREAD_ID,
+          IARG_UINT32, static_cast<UINT32>(RegSkipOne),
+          IARG_PTR, message.c_str(),
+          IARG_END);
+  }
+
+  VOID TriggerBreakpointBefore(CONTEXT *ctxt, THREADID tid, UINT32 regSkipOne, const char *message)
+  {
+      ADDRINT skipPc = PIN_GetContextReg(ctxt, static_cast<REG>(regSkipOne));
+      ADDRINT pc = PIN_GetContextReg(ctxt, REG_INST_PTR);
+      if (skipPc == pc)
+          return
+
+      PIN_SetContextReg(ctxt, static_cast<REG>(regSkipOne), pc);
+      PIN_ApplicationBreakpoint(ctxt, tid, FALSE, message);
+  }
+

+See the method ISHELL::GetSkipOneRegister() for the register number to use for RegSkipOne.

+

Parameters:
+ + + + + +
[in] ins Insert the instrumentation before this instruction.
[in] bbl The basic block containing ins.
[in] order The instrumentation call order to use for the instrumentation.
[in] message String telling why the breakpoint is triggered. The string is allocated in permanent storage, so the client can pass it directly to an analysis routine. If the debugger shell removes instrumentation, it will also deallocate this string.
+
+
+


The documentation for this class was generated from the following file:
    +
  • debugger-shell.H
+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/classDEBUGGER__SHELL_1_1ISHELL-members.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/classDEBUGGER__SHELL_1_1ISHELL-members.html new file mode 100644 index 0000000..f4a3b21 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/classDEBUGGER__SHELL_1_1ISHELL-members.html @@ -0,0 +1,42 @@ + + +Pin: Member List + + + + +
+
+ +

DEBUGGER_SHELL::ISHELL Member List

This is the complete list of members for DEBUGGER_SHELL::ISHELL, including all inherited members.

+ + + + + +
AddExtendedHelpCategory(const std::string &name, const std::string &description, BOOL *alreadyExists)=0DEBUGGER_SHELL::ISHELL [pure virtual]
AddExtendedHelpMessage(unsigned category, const std::string &cmd, const std::string &description)=0DEBUGGER_SHELL::ISHELL [pure virtual]
Enable(const STARTUP_ARGUMENTS &args)=0DEBUGGER_SHELL::ISHELL [pure virtual]
GetSkipOneRegister()=0DEBUGGER_SHELL::ISHELL [pure virtual]
~ISHELL()=0DEBUGGER_SHELL::ISHELL [inline, pure virtual]


Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/classDEBUGGER__SHELL_1_1ISHELL.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/classDEBUGGER__SHELL_1_1ISHELL.html new file mode 100644 index 0000000..f5ee911 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/classDEBUGGER__SHELL_1_1ISHELL.html @@ -0,0 +1,262 @@ + + +Pin: DEBUGGER_SHELL::ISHELL Class Reference + + + + +
+
+ + +

DEBUGGER_SHELL::ISHELL Class Reference
+ +[DEBUGGER_SHELL] +

#include <debugger-shell.H> +

+Inherited by SHELL. +

+List of all members. + + + + + + + + + + + + +

Public Member Functions

virtual BOOL Enable (const STARTUP_ARGUMENTS &args)=0
virtual unsigned AddExtendedHelpCategory (const std::string &name, const std::string &description, BOOL *alreadyExists)=0
virtual void AddExtendedHelpMessage (unsigned category, const std::string &cmd, const std::string &description)=0
virtual REG GetSkipOneRegister ()=0
virtual ~ISHELL ()=0
+


Detailed Description

+The public interface to the debugger shell. +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
DEBUGGER_SHELL::ISHELL::~ISHELL  )  [inline, pure virtual]
+
+ + + + + +
+   + + +

+Destroys the debugger shell object. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual unsigned DEBUGGER_SHELL::ISHELL::AddExtendedHelpCategory const std::string &  name,
const std::string &  description,
BOOL *  alreadyExists
[pure virtual]
+
+ + + + + +
+   + + +

+Tools that use the debugger shell may still implement their own extended debugger commands by using PIN_AddDebugInterpreter(). The debugger shell provides a way for such tools to include a help message for these extended commands in the help message that the debugger shell prints. Tools can use AddExtendedHelpCategory() to define their own category of help messages.

+

Parameters:
+ + + + +
[in] name The name of the category.
[in] description Describes this category of extended commands.
[out] alreadyExists If not NULL, receives TRUE if a tool already added a custom category for name. In this case, the debugger shell uses the previous description.
+
+
Returns:
The ID for this custom category. If a tool already added a category named name, that previous category ID is returned.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void DEBUGGER_SHELL::ISHELL::AddExtendedHelpMessage unsigned  category,
const std::string &  cmd,
const std::string &  description
[pure virtual]
+
+ + + + + +
+   + + +

+Adds a help message for an extended command that is implemented by the layered tool. See also AddExtendedHelpCategory() for more information on adding extended debugger commands.

+

Parameters:
+ + + + +
[in] category The category for this extended command. This can either be one of the predefined HELP_CATEGORY constants or a value returned by AddExtendedHelpCategory().
[in] cmd The name of a tool's extended command.
[in] description Describes what the command does.
+
+
+

+ + + + +
+ + + + + + + + + +
virtual BOOL DEBUGGER_SHELL::ISHELL::Enable const STARTUP_ARGUMENTS args  )  [pure virtual]
+
+ + + + + +
+   + + +

+This method must be called once, typically from the tool's main() function. It enables the Pin instrumentation which implements the debugger extensions.

+

Parameters:
+ + +
[in] args Arguments that customize the debugger shell.
+
+
Returns:
TRUE on success. If there is an error, a diagnostic is printed and this method returns FALSE.
+
+

+ + + + +
+ + + + + + + + +
virtual REG DEBUGGER_SHELL::ISHELL::GetSkipOneRegister  )  [pure virtual]
+
+ + + + + +
+   + + +

+Tools that override the default instrumentation with ICUSTOM_INSTRUMENTOR may need a virtual register to hold the "skip one" flag. This method provides the register number to use for this.

+

Returns:
The Pin virtual register to use for the "skip one" flag. This is one of the REG_INST_Gn registers.
+
+


The documentation for this class was generated from the following file:
    +
  • debugger-shell.H
+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/classINSTLIB_1_1FOLLOW__CHILD-members.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/classINSTLIB_1_1FOLLOW__CHILD-members.html new file mode 100644 index 0000000..c05d6b5 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/classINSTLIB_1_1FOLLOW__CHILD-members.html @@ -0,0 +1,40 @@ + + +Pin: Member List + + + + +
+
+ +

INSTLIB::FOLLOW_CHILD Member List

This is the complete list of members for INSTLIB::FOLLOW_CHILD, including all inherited members.

+ + + +
Activate()INSTLIB::FOLLOW_CHILD [inline]
FOLLOW_CHILD()INSTLIB::FOLLOW_CHILD [inline]
SetPrefix(CHAR *prefix[])INSTLIB::FOLLOW_CHILD [inline]


Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/classINSTLIB_1_1FOLLOW__CHILD.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/classINSTLIB_1_1FOLLOW__CHILD.html new file mode 100644 index 0000000..95bc0b6 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/classINSTLIB_1_1FOLLOW__CHILD.html @@ -0,0 +1,99 @@ + + +Pin: INSTLIB::FOLLOW_CHILD Class Reference + + + + +
+
+ + +

INSTLIB::FOLLOW_CHILD Class Reference
+ +[FOLLOW_CHILD] +

#include <follow_child.H> +

+List of all members. + + + + + + + + +

Public Member Functions

 FOLLOW_CHILD ()
VOID SetPrefix (CHAR *prefix[])
VOID Activate ()
+


Detailed Description

+The example below can be found in InstLibExamples/follow_child.cpp

+

#include <fstream>
+
+
+#include "pin.H"
+#include "instlib.H"
+
+using namespace INSTLIB;
+
+FOLLOW_CHILD follow;
+
+INT32 Usage()
+{
+    cerr <<
+        "This pin tool demonstrates use of FOLLOW_CHILD to inject pin in programs that call exec\n"
+        "\n";
+
+    cerr << KNOB_BASE::StringKnobSummary() << endl;
+    return -1;
+}
+
+// argc, argv are the entire command line, including pin -t <toolname> -- ...
+int main(int argc, char * argv[])
+{
+    if( PIN_Init(argc,argv) )
+    {
+        return Usage();
+    }
+
+    follow.Activate();
+
+    // Use the same prefix as our command line
+    follow.SetPrefix(argv);
+    
+    // Start the program, never returns
+    PIN_StartProgram();
+    
+    return 0;
+}
+
+
+
+

+


The documentation for this class was generated from the following file:
    +
  • follow_child.H
+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/classINSTLIB_1_1ICOUNT-members.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/classINSTLIB_1_1ICOUNT-members.html new file mode 100644 index 0000000..4d97cf8 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/classINSTLIB_1_1ICOUNT-members.html @@ -0,0 +1,48 @@ + + +Pin: Member List + + + + +
+
+ +

INSTLIB::ICOUNT Member List

This is the complete list of members for INSTLIB::ICOUNT, including all inherited members.

+ + + + + + + + + + + +
Activate(mode m=ModeNormal)INSTLIB::ICOUNT [inline]
Count(THREADID tid=0) const INSTLIB::ICOUNT [inline]
CountWithoutRep(THREADID tid=0) const (defined in INSTLIB::ICOUNT)INSTLIB::ICOUNT [inline]
ICOUNT() (defined in INSTLIB::ICOUNT)INSTLIB::ICOUNT [inline]
mode enum nameINSTLIB::ICOUNT
Mode() const INSTLIB::ICOUNT [inline]
ModeBoth enum valueINSTLIB::ICOUNT
ModeInactive enum value (defined in INSTLIB::ICOUNT)INSTLIB::ICOUNT
ModeNormal enum valueINSTLIB::ICOUNT
SetCount(UINT64 count, THREADID tid=0)INSTLIB::ICOUNT [inline]
~ICOUNT() (defined in INSTLIB::ICOUNT)INSTLIB::ICOUNT [inline]


Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/classINSTLIB_1_1ICOUNT.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/classINSTLIB_1_1ICOUNT.html new file mode 100644 index 0000000..bcd2894 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/classINSTLIB_1_1ICOUNT.html @@ -0,0 +1,121 @@ + + +Pin: INSTLIB::ICOUNT Class Reference + + + + +
+
+ + +

INSTLIB::ICOUNT Class Reference
+ +[ICOUNT] +

#include <icount.H> +

+List of all members. + + + + + + + + + + + + + + + + + + +

Public Types

enum  mode {
+  ModeInactive = -1, +
+  ModeNormal = 0, +
+  ModeBoth +
+ }

Public Member Functions

UINT64 Count (THREADID tid=0) const
+UINT64 CountWithoutRep (THREADID tid=0) const
VOID SetCount (UINT64 count, THREADID tid=0)
mode Mode () const
VOID Activate (mode m=ModeNormal)

Classes

struct  threadStats
+


Detailed Description

+The example below can be found in InstLibExamples/icount.cpp

+

#include <iostream>
+
+#include "pin.H"
+#include "instlib.H"
+
+KNOB<BOOL> KnobReps(KNOB_MODE_WRITEONCE, "pintool", "reps", "0", 
+                    "add count with REP prefixed instructions counted only once");
+
+INSTLIB::ICOUNT icount;
+
+// This function is called when the application exits
+VOID Fini(INT32 code, VOID *v)
+{
+    std::cerr << "Count " << icount.Count() << endl;
+    if (KnobReps)
+        std::cerr << "Count (single REPs) " << icount.CountWithoutRep() << endl;
+}
+
+// argc, argv are the entire command line, including pin -t <toolname> -- ...
+int main(int argc, char * argv[])
+{
+    // Initialize pin
+    if (PIN_Init(argc, argv))
+    {
+        PIN_ERROR("Count executed instructions.\n"
+                  + KNOB_BASE::StringKnobSummary() + "\n");
+    }
+
+    // Activate instruction counter
+    if (KnobReps)
+        icount.Activate(INSTLIB::ICOUNT::ModeBoth);
+    else
+        icount.Activate(INSTLIB::ICOUNT::ModeNormal);
+        
+    // Register Fini to be called when the application exits
+    PIN_AddFiniFunction(Fini, 0);
+    
+    // Start the program, never returns
+    PIN_StartProgram();
+    
+    return 0;
+}
+
+
+
+

+


The documentation for this class was generated from the following file:
    +
  • icount.H
+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/classes.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/classes.html new file mode 100644 index 0000000..111f03e --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/classes.html @@ -0,0 +1,47 @@ + + +Pin: Alphabetical List + + + + +
+
+ +

Pin Class Index

C | D | F | I | P | R | S | _

+ +
  C  
+
  F  
+
ISHELL (DEBUGGER_SHELL)   PIN_MULTI_MEM_ACCESS_INFO   
  S  
+
CALL_APPLICATION_FUNCTION_PARAM   FOLLOW_CHILD (INSTLIB)   
  P  
+
PIN_REGISTER   STARTUP_ARGUMENTS (DEBUGGER_SHELL)   
  D  
+
  I  
+
PCREGION (CONTROLLER)   
  R  
+
  _  
+
DEBUG_CONNECTION_INFO   ICOUNT (INSTLIB)   PIN_CODE_RANGE   ROIinfoStruct (CONTROLLER)   _tcpClientStruct   
DEBUG_MODE   ICUSTOM_INSTRUMENTOR (DEBUGGER_SHELL)   PIN_MEM_ACCESS_INFO   ROIpcinfoStruct (CONTROLLER)   _tcpServerStruct   
DEBUGGER_REG_DESCRIPTION   ImageLoaderInfo (LEVEL_BASE)   PIN_MEM_TRANS_FLAGS   

C | D | F | I | P | R | S | _

+


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/doxygen.css b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/doxygen.css new file mode 100644 index 0000000..05615b2 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/doxygen.css @@ -0,0 +1,310 @@ +BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV { + font-family: Geneva, Arial, Helvetica, sans-serif; +} +BODY,TD { + font-size: 90%; +} +H1 { + text-align: center; + font-size: 160%; +} +H2 { + font-size: 120%; +} +H3 { + font-size: 100%; +} +CAPTION { font-weight: bold } +DIV.qindex { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.nav { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.navtab { + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} +TD.navtab { + font-size: 70%; +} +A.qindex { + text-decoration: none; + font-weight: bold; + color: #1A419D; +} +A.qindex:visited { + text-decoration: none; + font-weight: bold; + color: #1A419D +} +A.qindex:hover { + text-decoration: none; + background-color: #ddddff; +} +A.qindexHL { + text-decoration: none; + font-weight: bold; + background-color: #6666cc; + color: #ffffff; + border: 1px double #9295C2; +} +A.qindexHL:hover { + text-decoration: none; + background-color: #6666cc; + color: #ffffff; +} +A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff } +A.el { text-decoration: none; font-weight: bold } +A.elRef { font-weight: bold } +A.code:link { text-decoration: none; font-weight: normal; color: #0000FF} +A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF} +A.codeRef:link { font-weight: normal; color: #0000FF} +A.codeRef:visited { font-weight: normal; color: #0000FF} +A:hover { text-decoration: none; background-color: #f2f2ff } +DL.el { margin-left: -1cm } +.fragment { + font-family: Fixed, monospace; + font-size: 95%; +} +PRE.fragment { + border: 1px solid #CCCCCC; + background-color: #f5f5f5; + margin-top: 4px; + margin-bottom: 4px; + margin-left: 2px; + margin-right: 8px; + padding-left: 6px; + padding-right: 6px; + padding-top: 4px; + padding-bottom: 4px; +} +DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } +TD.md { background-color: #F4F4FB; font-weight: bold; } +TD.mdPrefix { + background-color: #F4F4FB; + color: #606060; + font-size: 80%; +} +TD.mdname1 { background-color: #F4F4FB; font-weight: bold; color: #602020; } +TD.mdname { background-color: #F4F4FB; font-weight: bold; color: #602020; width: 600px; } +DIV.groupHeader { + margin-left: 16px; + margin-top: 12px; + margin-bottom: 6px; + font-weight: bold; +} +DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% } +BODY { + background: white; + color: black; + margin-right: 20px; + margin-left: 20px; +} +TD.indexkey { + background-color: #e8eef2; + font-weight: bold; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TD.indexvalue { + background-color: #e8eef2; + font-style: italic; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TR.memlist { + background-color: #f0f0f0; +} +P.formulaDsp { text-align: center; } +IMG.formulaDsp { } +IMG.formulaInl { vertical-align: middle; } +SPAN.keyword { color: #008000 } +SPAN.keywordtype { color: #604020 } +SPAN.keywordflow { color: #e08000 } +SPAN.comment { color: #800000 } +SPAN.preprocessor { color: #806020 } +SPAN.stringliteral { color: #002080 } +SPAN.charliteral { color: #008080 } +.mdTable { + border: 1px solid #868686; + background-color: #F4F4FB; +} +.mdRow { + padding: 8px 10px; +} +.mdescLeft { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.mdescRight { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.memItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplParams { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + color: #606060; + background-color: #FAFAFA; + font-size: 80%; +} +.search { color: #003399; + font-weight: bold; +} +FORM.search { + margin-bottom: 0px; + margin-top: 0px; +} +INPUT.search { font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +TD.tiny { font-size: 75%; +} +a { + color: #1A41A8; +} +a:visited { + color: #2A3798; +} +.dirtab { padding: 4px; + border-collapse: collapse; + border: 1px solid #84b0c7; +} +TH.dirtab { background: #e8eef2; + font-weight: bold; +} +HR { height: 1px; + border: none; + border-top: 1px solid black; +} + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/doxygen.png b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/doxygen.png new file mode 100644 index 0000000..f0a274b Binary files /dev/null and b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/doxygen.png differ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/functions.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/functions.html new file mode 100644 index 0000000..1f549db --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/functions.html @@ -0,0 +1,120 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- _ -

+

- a -

+

- c -

+

- e -

+

- f -

+

- g -

+

- i -

+

- m -

+

- n -

+

- s -

+

- ~ -

+
Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/functions_enum.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/functions_enum.html new file mode 100644 index 0000000..190acdb --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/functions_enum.html @@ -0,0 +1,50 @@ + + +Pin: Class Members - Enumerations + + + + +
+
+ + +  +

+

+
Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/functions_eval.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/functions_eval.html new file mode 100644 index 0000000..c2a9417 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/functions_eval.html @@ -0,0 +1,51 @@ + + +Pin: Class Members - Enumerator + + + + +
+
+ + +  +

+

+
Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/functions_func.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/functions_func.html new file mode 100644 index 0000000..49314f0 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/functions_func.html @@ -0,0 +1,63 @@ + + +Pin: Class Members - Functions + + + + +
+
+ + +  +

+

+
Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/functions_vars.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/functions_vars.html new file mode 100644 index 0000000..425928a --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/functions_vars.html @@ -0,0 +1,66 @@ + + +Pin: Class Members - Variables + + + + +
+
+ + +  +

+

+
Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__ALARM.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__ALARM.html new file mode 100644 index 0000000..2aeb48e --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__ALARM.html @@ -0,0 +1,32 @@ + + +Pin: ALARM + + + + +
+
+

ALARM

+ +
+Call a function when the specified event has occured. Triggers can be base on instruction counts or executing a specific address.
Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__API__REF.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__API__REF.html new file mode 100644 index 0000000..d0c74a9 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__API__REF.html @@ -0,0 +1,38 @@ + + +Pin: API Reference + + + + +
+
+

API Reference

+ +
+
    +
  • CONTROL Program control and initialization
  • IMG Image: an image (executable or library)
  • SEC Section: a section within an Image
  • RTN Routine: a routine/function/procedure within a section
  • BBL Basic block: a single entrace, single exit sequence of instructions
  • INS Instruction: an instruction (syllable) within a routine
  • TRACE Trace: a single entrance, multiple exit sequence of instructions
  • SYM Symbol: n symbol (regular or dynamic) within an image
  • REG Register
  • ARG Arguments to instrumentation routines
  • TRACE_VERSION Used to implement, and switch between, multiple instrumentations on a trace
  • BUFFER Fast buffering support
  • PROTO Prototype: a description of an application routine
  • THREAD Thread support
  • PROCESS Process support
  • SYSCALL System call support
  • DBG Access debug information from a Pintool
  • ERROR_FILE Error file support
  • CODECACHE Inspect or alter code cache behavior
  • CHILD_PROCESS Follow child process API
  • CONTEXT Context: application's architectural state of the processor
  • PHYSICAL_CONTEXT Physical context: Pin/tool architectural state of the processor
  • CALLBACKS Manipulations of PIN's callback routines
  • EXCEPTION Hardware and software exceptions
  • APPDEBUG Application level debugging
  • STOPPED_THREAD Stop, examine and resume application threads
  • UTILS Architecture-specific utilities
  • MISC Miscellaneous functions
+

+This section contains utilities that are not directly related to instrumentation, but are useful for writing tools.

+

+
Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__APPDEBUG__API.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__APPDEBUG__API.html new file mode 100644 index 0000000..6a4b3b3 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__APPDEBUG__API.html @@ -0,0 +1,902 @@ + + +Pin: Application Level Debugging API + + + + +
+
+

Application Level Debugging API

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Classes

struct  DEBUG_CONNECTION_INFO
struct  DEBUG_MODE

Typedefs

typedef BOOL(* LEVEL_PINCLIENT::DEBUG_INTERPRETER_CALLBACK )(THREADID threadIndex, CONTEXT *ctxt, const std::string &cmd, std::string *reply, VOID *v)
typedef BOOL(* LEVEL_PINCLIENT::DEBUG_BREAKPOINT_CALLBACK )(ADDRINT addr, UINT size, BOOL insert, VOID *v)

Enumerations

enum  DEBUG_STATUS {
+  DEBUG_STATUS_DISABLED, +
+  DEBUG_STATUS_UNCONNECTABLE, +
+  DEBUG_STATUS_UNCONNECTED, +
+  DEBUG_STATUS_CONNECTED +
+ }
enum  DEBUG_CONNECTION_TYPE {
+  DEBUG_CONNECTION_TYPE_NONE, +
+  DEBUG_CONNECTION_TYPE_TCP_SERVER, +
+  DEBUG_CONNECTION_TYPE_TCP_CLIENT +
+ }
enum  DEBUGGER_TYPE {
+  DEBUGGER_TYPE_UNKNOWN, +
+  DEBUGGER_TYPE_GDB, +
+  DEBUGGER_TYPE_IDB, +
+  DEBUGGER_TYPE_VISUAL_STUDIO_VSDBG, +
+  DEBUGGER_TYPE_VISUAL_STUDIO +
+ }
enum  DEBUG_MODE_OPTION {
+  DEBUG_MODE_OPTION_NONE = 0, +
+  DEBUG_MODE_OPTION_STOP_AT_ENTRY = (1<<0), +
+  DEBUG_MODE_OPTION_SILENT = (1<<1), +
+  DEBUG_MODE_OPTION_ALLOW_REMOTE = (1<<2) +
+ }

Functions

PIN_CALLBACK LEVEL_PINCLIENT::PIN_AddDebugInterpreter (DEBUG_INTERPRETER_CALLBACK fun, VOID *val)
VOID LEVEL_PINCLIENT::PIN_RemoveDebugInterpreter (DEBUG_INTERPRETER_CALLBACK fun)
PIN_CALLBACK LEVEL_PINCLIENT::PIN_AddBreakpointHandler (DEBUG_BREAKPOINT_CALLBACK fun, VOID *val)
VOID LEVEL_PINCLIENT::PIN_RemoveBreakpointHandler (DEBUG_BREAKPOINT_CALLBACK fun)
VOID LEVEL_PINCLIENT::PIN_ResetBreakpointAt (ADDRINT addr)
VOID LEVEL_PINCLIENT::PIN_ApplicationBreakpoint (const CONTEXT *ctxt, THREADID tid, BOOL waitIfNoDebugger, const std::string &msg)
BOOL LEVEL_PINCLIENT::PIN_SetDebugMode (const DEBUG_MODE *mode)
DEBUG_STATUS LEVEL_PINCLIENT::PIN_GetDebugStatus ()
BOOL LEVEL_PINCLIENT::PIN_GetDebugConnectionInfo (DEBUG_CONNECTION_INFO *info)
DEBUGGER_TYPE LEVEL_PINCLIENT::PIN_GetDebuggerType ()
BOOL LEVEL_PINCLIENT::PIN_WaitForDebuggerToConnect (unsigned timeout)
BOOL LEVEL_PINCLIENT::PIN_GetStoppedThreadPendingToolBreakpoint (THREADID tid, std::string *msg)
BOOL LEVEL_PINCLIENT::PIN_ChangePendingToolBreakpointOnStoppedThread (THREADID tid, BOOL squash, const std::string &msg)
+

Detailed Description

+This API allows the user to debug the application that is running on top of Pin. It also allows a tool to interact with the debugger and provide extended commands to the debugger. Also see the tutorial section on this topic: The Pin Advanced Debugging Extensions.

Typedef Documentation

+

+ + + + +
+ + + + +
typedef BOOL(* LEVEL_PINCLIENT::DEBUG_BREAKPOINT_CALLBACK)(ADDRINT addr, UINT size, BOOL insert, VOID *v)
+
+ + + + + +
+   + + +

+Call-back function to handle breakpoint set requests from a debugger.

+Once a callback accepted control over a breakpoint at the given address, Pin and PinADX will not stop at that address. The stop responsibility is handled solely by the tool.

+However, PinADX does keep track of the breakpoint, in case the tool wants to "reset" the breakpoint and give the control back to PinADX.

+

Parameters:
+ + + + + +
[in] addr The address of the requested breakpoint.
[in] size The size of the breakpoint (HW/SW)
[in] insert Whether if this is a breakpoint insertion or deletion.
[in] v The tool's call-back value.
+
+
Returns:
TRUE if this callback function takes control over the breakpoint. FALSE if it does not. If FALSE is returned, Pin will call the next registered interpreter to see if it understands cmd.
+
+

+ + + + +
+ + + + +
typedef BOOL(* LEVEL_PINCLIENT::DEBUG_INTERPRETER_CALLBACK)(THREADID threadIndex, CONTEXT *ctxt, const std::string &cmd, std::string *reply, VOID *v)
+
+ + + + + +
+   + + +

+Call-back function to handle commands from a debugger.

+The format of the cmd and reply strings may vary depending on which debugger is connected to Pin. Tools can call PIN_GetDebuggerType() to tell which debugger is connected.

+When the debugger is GDB, cmd is the text string that the user types after the "monitor" command and reply is displayed verbatim as a response to the command.

+Pin reserves all command strings that start with the prefix "pin " or "pin:". Pin interprets these commands itself and does not pass them on to the tool.

+

Parameters:
+ + + + + + +
[in] threadIndex The Pin thread ID of the debugger's "focus" thread.
[in] ctxt Application register state of the debugger's "focus" thread. The interpreter can change this state if it handles cmd. When the debugger resumes this thread, it will use the new register state in ctxt.
[in] cmd The debugger command.
[out] reply Receives the reply to the command, if the interpreter understands cmd.
[in] v The tool's call-back value.
+
+
Returns:
TRUE if this interpreter function understands cmd. FALSE if it does not. If FALSE is returned, Pin will call the next registered interpreter to see if it understands cmd.
+
+


Enumeration Type Documentation

+

+ + + + +
+ + + + +
enum DEBUG_CONNECTION_TYPE
+
+ + + + + +
+   + + +

+Possible connection types for an application debugger. The connection type can be specified either via the -appdebug knobs or by PIN_SetDebugMode().

Enumerator:
+ + + + +
DEBUG_CONNECTION_TYPE_NONE  +Application debugging is disabled in this session.
DEBUG_CONNECTION_TYPE_TCP_SERVER  +Pin opens a TCP port and waits for a debugger to connect.
DEBUG_CONNECTION_TYPE_TCP_CLIENT  +Pin connects to a TCP port opened by the debugger.
+
+
+

+ + + + +
+ + + + +
enum DEBUG_MODE_OPTION
+
+ + + + + +
+   + + +

+Options which affect application debugging.

Enumerator:
+ + + + + +
DEBUG_MODE_OPTION_NONE  +No options specified.
DEBUG_MODE_OPTION_STOP_AT_ENTRY  +If this option is set, Pin stops the application at the first instruction and execution remains stopped until a debugger connects and continues the application. If this option is cleared, the application immediately runs when PIN_StartProgram() is called.
DEBUG_MODE_OPTION_SILENT  +If debugging is enabled Pin normally prints a message to the console when PIN_StartProgram() is called which tells the user how to connect a debugger. This option suppresses the message.
DEBUG_MODE_OPTION_ALLOW_REMOTE  +By default, Pin only listens for a debugger's TCP connection on the local machine. If this option is enabled, Pin will also listen for a connection from a remote machine.
+
+
+

+ + + + +
+ + + + +
enum DEBUG_STATUS
+
+ + + + + +
+   + + +

+Possible status codes telling the state of application level debugging.

Enumerator:
+ + + + + +
DEBUG_STATUS_DISABLED  +Application debugging is not enabled in this Pin session.
DEBUG_STATUS_UNCONNECTABLE  +Application debugging is enabled, but it is too early to allow a debugger to connect.
DEBUG_STATUS_UNCONNECTED  +Application debugging is enabled, but no debugger is connected yet.
DEBUG_STATUS_CONNECTED  +Application debugging is enabled and a debugger is connected.
+
+
+

+ + + + +
+ + + + +
enum DEBUGGER_TYPE
+
+ + + + + +
+   + + +

+Application debugger types that could be connected to Pin.

Enumerator:
+ + + + + + +
DEBUGGER_TYPE_UNKNOWN  +No debugger connected, or type is unknown.
DEBUGGER_TYPE_GDB  +The GNU debugger.
DEBUGGER_TYPE_IDB  +The Intel debugger.
DEBUGGER_TYPE_VISUAL_STUDIO_VSDBG  +Visual Studio via VSDBG.
DEBUGGER_TYPE_VISUAL_STUDIO  +Visual Studio via native connection.
+
+
+


Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
PIN_CALLBACK LEVEL_PINCLIENT::PIN_AddBreakpointHandler DEBUG_BREAKPOINT_CALLBACK  fun,
VOID *  val
+
+ + + + + +
+   + + +

+Register a handler that can intercept breakpoint set/delete commands sent from an application debugger. This API allows a tool to take control over specific breakpoints stop behavior.

+A tool may install more than one handler function. Pin calls each one until it reaches an handler that understand the command.

+

Parameters:
+ + + +
[in] fun The breakpoint handler function.
[in] val Value to pass to the handler function.
+
+
Note:
The pin client lock is obtained during the call of this API.
+
Returns:
PIN_CALLBACK A handle to a callback that can be used to further modify this callback's properties
+
Availability:
Mode: JIT
+ O/S: Linux, Windows, OS X*
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
PIN_CALLBACK LEVEL_PINCLIENT::PIN_AddDebugInterpreter DEBUG_INTERPRETER_CALLBACK  fun,
VOID *  val
+
+ + + + + +
+   + + +

+Register a handler that can interpret commands sent from an application debugger. This API allows a tool to extend the normal set of commands understood by a debugger that is connected to Pin.

+A tool may install more than one interpreter function. Pin calls each one until it reaches an interpreter that understand the command.

+

Parameters:
+ + + +
[in] fun The debug interpreter function.
[in] val Value to pass to the interpreter function.
+
+
Note:
The pin client lock is obtained during the call of this API.
+
Returns:
PIN_CALLBACK A handle to a callback that can be used to further modify this callback's properties
+
Availability:
Mode: JIT
+ O/S: Linux, Windows
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_ApplicationBreakpoint const CONTEXT ctxt,
THREADID  tid,
BOOL  waitIfNoDebugger,
const std::string &  msg
+
+ + + + + +
+   + + +

+A tool can call this API to stop execution in an application debugger as though a breakpoint was hit. The ctxt parameter tells the register state that the debugger sees when the application stops. If application level debugging is not enabled in this Pin session, execution does not stop, but resumes immediately at ctxt. Tools can tell if application level debugging is enabled by calling PIN_GetDebugStatus().

+The semantics of this API are very similar to PIN_ExecuteAt(). Both APIs abandon the current analysis function and resume execution at a new CONTEXT. The only difference is that PIN_ApplicationBreakpoint() also stops at a breakpoint in the application debugger.

+This API can be called from an analysis function or a replacement routine, but not from a callback.

+The expected format of the msg string may depend on which debugger is connected to Pin. Tools can call PIN_GetDebuggerType() to find the debugger type.

+When used with GDB, the msg string is displayed verbatim to the user when the debugger stops. The debugger adds a newline to the end of the string before displaying it.

+

Parameters:
+ + + + + +
[in] ctxt The register state that is reported to the debugger. When the debugger resumes this thread, it resumes execution at this register state (unless the debugger changes the register state).
[in] tid The ID of the calling thread.
[in] waitIfNoDebugger If waitIfNoDebugger is TRUE and the status is DEBUG_STATUS_UNCONNECTED, PIN_ApplicationBreakpoint() blocks until a debugger connects. Tools can call PIN_GetDebugStatus() to get the status. If waitIfNoDebugger is FALSE or if the status is DEBUG_STATUS_DISABLED or DEBUG_STATUS_UNCONNECTABLE, PIN_ApplicationBreakpoint() resumes immediately at the new context when no debugger is connected.
[in] msg Tells the reason why the breakpoint was triggered.
+
+
Returns:
This API never returns.
+
Note:
The vm lock is obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
BOOL LEVEL_PINCLIENT::PIN_ChangePendingToolBreakpointOnStoppedThread THREADID  tid,
BOOL  squash,
const std::string &  msg
+
+ + + + + +
+   + + +

+If the given stopped thread has a pending tool breakpoint, this function can change the message associated with that breakpoint request or it can squash the breakpoint request entirely. The debugger will see the effect of the changed breakpoint after it resumes execution of the thread. If the tool changes the breakpoint message, the debugger will receive the breakpoint event with the new message. If the tool squashes the breakpoint request, the thread will not stop at the breakpoint at all. Instead, it continues executing at the ctxt parameter that was passed to PIN_ApplicationBreakpoint().

+

Parameters:
+ + + + +
[in] tid Pin ID of a stopped thread.
[in] squash If TRUE, the breakpoint request is squashed. The msg parameter is ignored in this case.
[in] msg The new breakpoint message for this breakpoint request.
+
+
Returns:
TRUE if thread tid is stopped and has a pending breakpoint from PIN_ApplicationBreakpoint().
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::PIN_GetDebugConnectionInfo DEBUG_CONNECTION_INFO info  ) 
+
+ + + + + +
+   + + +

+This function retrieves the information that an application level debugger will need in order to connect to this Pin session.

+

Parameters:
+ + +
[out] info Receives the connection information.
+
+
Returns:
TRUE if application level debugging is enabled for this Pin session.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + +
DEBUGGER_TYPE LEVEL_PINCLIENT::PIN_GetDebuggerType  ) 
+
+ + + + + +
+   + + +

+This function tells the type of application level debugger (if any) that is connected to Pin. If no debugger is connected, returns DEBUGGER_TYPE_UNKNOWN.

+

Returns:
The type of the application level debugger that is connected to Pin.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + +
DEBUG_STATUS LEVEL_PINCLIENT::PIN_GetDebugStatus  ) 
+
+ + + + + +
+   + + +

+This function tells whether application level debugging is enabled in this Pin session. If so, it tells whether an application debugger is currently connected to Pin.

+

Returns:
A code telling the status of application level debugging.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_PINCLIENT::PIN_GetStoppedThreadPendingToolBreakpoint THREADID  tid,
std::string *  msg
+
+ + + + + +
+   + + +

+Tells whether a stopped thread has called PIN_ApplicationBreakpoint(), but the breakpoint has NOT yet been reported to the debugger. For example, this can occur if two threads call PIN_ApplicationBreakpoint() simultaneously and the debugger has asked Pin to report one debugger event at a time. In this case, Pin reports one breakpoint to the debugger and leaves the other breakpoint pending.

+

Parameters:
+ + + +
[in] tid Pin ID of a stopped thread.
[out] msg If there is a pending breakpoint and if msg is not NULL, msg receives the breakpoint message.
+
+
Returns:
TRUE if thread tid is stopped and has a pending breakpoint from PIN_ApplicationBreakpoint().
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_RemoveBreakpointHandler DEBUG_BREAKPOINT_CALLBACK  fun  ) 
+
+ + + + + +
+   + + +

+Remove a previously installed breakpoint handler function.

+

Parameters:
+ + +
[in] fun The breakpoint handler to remove.
+
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows, OS X*
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_RemoveDebugInterpreter DEBUG_INTERPRETER_CALLBACK  fun  ) 
+
+ + + + + +
+   + + +

+Remove a previously installed debug interpreter function.

+

Parameters:
+ + +
[in] fun The interpreter function to remove.
+
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_ResetBreakpointAt ADDRINT  addr  ) 
+
+ + + + + +
+   + + +

+Resets the breakpoint address, and returns the control back to PinADX.

+

Parameters:
+ + +
[in] addr The breakpoint address.
+
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows, OS X*
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::PIN_SetDebugMode const DEBUG_MODE mode  ) 
+
+ + + + + +
+   + + +

+Set whether application debugging is enabled or disabled in this Pin session and set the debugging mode if debugging is enabled. This API overrides the following knobs if they are specified on the command line:

+

+

+If the tool calls this API, it must be called before PIN_StartProgram().

+

Parameters:
+ + +
[in] mode Tells whether application debugging is enabled and specifies the mode. If mode->_tcpClient->_ip is set, this method makes a copy of the string.
+
+
Returns:
TRUE on success, FALSE on failure or if called after PIN_StartProgram().
+
Availability:
Mode: JIT
+ O/S: Linux, Windows
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::PIN_WaitForDebuggerToConnect unsigned  timeout  ) 
+
+ + + + + +
+   + + +

+Waits for an application level debugger to connect to this Pin session. This function may only be called after PIN_StartProgram(). If the debugger status is DEBUG_STATUS_DISABLED or DEBUG_STATUS_UNCONNECTABLE, it returns FALSE immediately.

+After a successful return, an application level debugger is connected to Pin. The debugger will stop the application soon, but there is no guarantee that this will happen immediately after this API returns. If the tool wants to guarantee an immediate stop, it should call PIN_ApplicationBreakpoint().

+

Parameters:
+ + +
[in] timeout A timeout value (milliseconds). This function returns (with FALSE) if a debugger has not connected by the end of the timeout period. A timeout value of zero means wait forever.
+
+
Returns:
TRUE if an application level debugger is connected.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__BBL__BASIC__API.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__BBL__BASIC__API.html new file mode 100644 index 0000000..dfd1425 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__BBL__BASIC__API.html @@ -0,0 +1,630 @@ + + +Pin: BBL: Single entrance, single exit sequence of instructions + + + + +
+
+

BBL: Single entrance, single exit sequence of instructions

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Functions

VOID LEVEL_CORE::BBL_MoveAllAttributes (BBL fromBbl, BBL toBbl)
UINT32 LEVEL_CORE::BBL_NumIns (BBL bbl)
INS LEVEL_PINCLIENT::BBL_InsHead (BBL x)
INS LEVEL_PINCLIENT::BBL_InsTail (BBL x)
BBL LEVEL_PINCLIENT::BBL_Next (BBL x)
BBL LEVEL_PINCLIENT::BBL_Prev (BBL x)
BOOL LEVEL_PINCLIENT::BBL_Valid (BBL x)
BOOL LEVEL_PINCLIENT::BBL_Original (BBL bbl)
ADDRINT LEVEL_PINCLIENT::BBL_Address (BBL bbl)
USIZE LEVEL_PINCLIENT::BBL_Size (BBL bbl)
VOID LEVEL_PINCLIENT::BBL_InsertCall (BBL bbl, IPOINT action, AFUNPTR funptr,...)
VOID LEVEL_PINCLIENT::BBL_InsertIfCall (BBL bbl, IPOINT action, AFUNPTR funptr,...)
VOID LEVEL_PINCLIENT::BBL_InsertThenCall (BBL bbl, IPOINT action, AFUNPTR funptr,...)
BOOL LEVEL_PINCLIENT::BBL_HasFallThrough (BBL bbl)
+

Detailed Description

+Sequence of instructions that is always entered at the top and exited at the bottom by a fall through and/or taken branch. If Pin detects a jump to an instruction in the middle of a bbl, it will create a new bbl beginning at the target. See Instrumentation Granularity.

Function Documentation

+

+ + + + +
+ + + + + + + + + +
ADDRINT LEVEL_PINCLIENT::BBL_Address BBL  bbl  ) 
+
+ + + + + +
+   + + +

+

Returns:
Address of a bbl
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::BBL_HasFallThrough BBL  bbl  ) 
+
+ + + + + +
+   + + +

+Refer INS_HasFallThrough for checking if an instruction could have a fall-through path based on the opcode.

Returns:
True if the BBL has a fall-through bbl within the trace else return FALSE.
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::BBL_InsertCall BBL  bbl,
IPOINT  action,
AFUNPTR  funptr,
  ...
+
+ + + + + +
+   + + +

+Insert call relative to a bbl.

Parameters:
+ + + + + +
bbl BBL to instrument
action Specifies before, after, etc.
+ IPOINT_BEFORE is always valid for all instructions.
+ IPOINT_AFTER is valid only when a fall-through exists (i.e. Calls and unconditional branches will fail).
+ IPOINT_ANYWHERE will put the instrumentation at a place inside the bbl for best performance
+ IPOINT_TAKEN_BRANCH is invalid for non-branches.
funptr Analysis function to call
... IARG_TYPE. Arguments to pass to funptr
+
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::BBL_InsertIfCall BBL  bbl,
IPOINT  action,
AFUNPTR  funptr,
  ...
+
+ + + + + +
+   + + +

+Insert a call to funptr relative to a BBL. If funptr returns a non-zero ADDRINT, then the immediately following "then" analysis call is executed. Note that if CALL_ORDER is used, Both "if" and "then" analysis calls must have the same order.

+

Parameters:
+ + + + + +
bbl BBL to instrument
action Specifies before, after, etc.
+ IPOINT_BEFORE is always valid for all instructions.
+ IPOINT_AFTER is valid only when a fall-through exists (i.e. Calls and unconditional branches will fail).
+ IPOINT_TAKEN_BRANCH is invalid for non-branches.
funptr Analysis function to call. Its return type must be ADDRINT
... IARG_TYPE. Arguments to pass to funptr
+
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::BBL_InsertThenCall BBL  bbl,
IPOINT  action,
AFUNPTR  funptr,
  ...
+
+ + + + + +
+   + + +

+Insert a call to funptr relative to a BBL. The function is called only if the immediately preceding "if" analysis call returns a non-zero value. Note that if CALL_ORDER is used, Both "if" and "then" analysis calls must have the same order.

+

Parameters:
+ + + + + +
bbl BBL to instrument
action Specifies before, after, etc.
+ IPOINT_BEFORE is always valid for all instructions.
+ IPOINT_AFTER is valid only when a fall-through exists (i.e. Calls and unconditional branches will fail).
+ IPOINT_TAKEN_BRANCH is invalid for non-branches.
funptr Analysis function to call
... IARG_TYPE. Arguments to pass to funptr
+
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
INS LEVEL_PINCLIENT::BBL_InsHead BBL  x  ) 
+
+ + + + + +
+   + + +

+

Returns:
First instruction of bbl
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
INS LEVEL_PINCLIENT::BBL_InsTail BBL  x  ) 
+
+ + + + + +
+   + + +

+

Returns:
Last instruction of bbl
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::BBL_MoveAllAttributes BBL  fromBbl,
BBL  toBbl
+
+ + + + + +
+   + + +

+Move all attributes from one BBL to another

+

Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
BBL LEVEL_PINCLIENT::BBL_Next BBL  x  ) 
+
+ + + + + +
+   + + +

+

Returns:
Next bbl or BBL_INVALID() if this is the end of trace or rtn
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_CORE::BBL_NumIns BBL  bbl  ) 
+
+ + + + + +
+   + + +

+Number of INSs within a BBL.

+

Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::BBL_Original BBL  bbl  ) 
+
+ + + + + +
+   + + +

+

Returns:
Whether the BBL data structure has been instrumented or optimized since it was created
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
BBL LEVEL_PINCLIENT::BBL_Prev BBL  x  ) 
+
+ + + + + +
+   + + +

+

Returns:
Previous bbl or BBL_INVALID() if this is the beginning of trace or rtn
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
USIZE LEVEL_PINCLIENT::BBL_Size BBL  bbl  ) 
+
+ + + + + +
+   + + +

+

Returns:
Size of bbl code, in bytes
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::BBL_Valid BBL  x  ) 
+
+ + + + + +
+   + + +

+

Returns:
True if x is not BBL_INVALID()
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__BUFFER__API.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__BUFFER__API.html new file mode 100644 index 0000000..653de07 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__BUFFER__API.html @@ -0,0 +1,284 @@ + + +Pin: Fast Buffering APIs + + + + +
+
+

Fast Buffering APIs

+ + + + + + + + + + + + + +

Typedefs

typedef VOID *(* LEVEL_PINCLIENT::TRACE_BUFFER_CALLBACK )(BUFFER_ID id, THREADID tid, const CONTEXT *ctxt, VOID *buf, UINT64 numElements, VOID *v)

Functions

BUFFER_ID LEVEL_PINCLIENT::PIN_DefineTraceBuffer (size_t recordSize, UINT32 numPages, TRACE_BUFFER_CALLBACK fun, VOID *val)
VOID * LEVEL_PINCLIENT::PIN_AllocateBuffer (BUFFER_ID id)
VOID LEVEL_PINCLIENT::PIN_DeallocateBuffer (BUFFER_ID id, VOID *buf)
VOID * LEVEL_PINCLIENT::PIN_GetBufferPointer (CONTEXT *const ctxt, BUFFER_ID id)
+

Detailed Description

+APIs to perform low-overhead buffering of data for analysis. Use PIN_DefineTraceBuffer() to create space for storing data, and INS_InsertFillBuffer() to fill the buffers. When a buffer overflows, or the thread exits, the defined callback will be used to process the data.

Typedef Documentation

+

+ + + + +
+ + + + +
typedef VOID*(* LEVEL_PINCLIENT::TRACE_BUFFER_CALLBACK)(BUFFER_ID id, THREADID tid, const CONTEXT *ctxt, VOID *buf, UINT64 numElements, VOID *v)
+
+ + + + + +
+   + + +

+A call-back function which Pin calls whenever the tools needs to consume a trace buffer (e.g., the trace buffer is full).

+

Note:
This function may be called on a different thread than the given threadIndex.
+
Parameters:
+ + + + + + +
[in] id The ID of the trace buffer.
[in] tid The ID of the thread owning this buffer.
[in] buf Pointer to the start of the buffer.
[in] numElements The number of elements collected into the buffer which need to be consumed.
[in] v The tool's call-back value.
+
+
Returns:
A pointer to the buffer to use when the thread resumes. Typically, this is buf, but see also PIN_AllocateBuffer().
+
+


Function Documentation

+

+ + + + +
+ + + + + + + + + +
VOID* LEVEL_PINCLIENT::PIN_AllocateBuffer BUFFER_ID  id  ) 
+
+ + + + + +
+   + + +

+Explicitly allocate a trace buffer. This is only needed for tools which use a "double buffering" technique. When used, the buffer pointer should be returned from the TRACE_BUFFER_CALLBACK call-back.

+

Parameters:
+ + +
[in] id The ID of the trace buffer to allocate.
+
+
Returns:
A pointer to the new buffer.]
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Linux & Windows
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_DeallocateBuffer BUFFER_ID  id,
VOID *  buf
+
+ + + + + +
+   + + +

+Explicitly deallocate a trace buffer. This is only needed by tools using a "double buffering" technique, where it is used to deallocate buffers allocated via PIN_AllocateBuffer(). However, it may be safely called (with no effect) for a thread's implicit initial buffer.

+

Parameters:
+ + + +
[in] id The ID of the trace buffer.
[in] buf Pointer to the start of the buffer.
+
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Linux & Windows
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BUFFER_ID LEVEL_PINCLIENT::PIN_DefineTraceBuffer size_t  recordSize,
UINT32  numPages,
TRACE_BUFFER_CALLBACK  fun,
VOID *  val
+
+ + + + + +
+   + + +

+Define a trace buffer to use with the Pin trace buffer API. This function defines the shape of the buffer, but doesn't allocate the buffer itself. Each thread implicitly creates its first buffer on start-up. Additional buffers may then be created using PIN_AllocateBuffer, but this is only needed by tools using "double buffering".

+Upon exit, the notification callback may be called on a different physical thread than the one that is exiting.

+

Parameters:
+ + + + + +
[in] recordSize Size (bytes) of each record in the buffer. This size must be less than the size of an OS page.
[in] numPages The number of OS pages to allocate for each buffer. This size does not have to be an even multiple of recordSize.
[in] fun A call-back function that is called whenever the buffer is full, or when the thread exits with a partially-full buffer. Note that when called for a full buffer, not during thread exit, this function is called WITHOUT holding any Pin locks. So that multiple threads may be executing the function simultaneously. It is the tool's responsibility to take care of the multi-thread safety of this function, and any functions called by it.
[in] val Passed as the last argument to fun.
+
+
Returns:
On success, a BUFFER_ID. On error (e.g., maximum number of trace buffers exceeded,) returns BUFFER_ID_INVALID.
+
Note:
The vm and pin client locks are obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Linux & Windows
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID* LEVEL_PINCLIENT::PIN_GetBufferPointer CONTEXT *const   ctxt,
BUFFER_ID  id
+
+ + + + + +
+   + + +

+Returns the address of the current position in the buffer. Needs a CONTEXT that was passed in as a call back argument or IARG_CONTEXT

+

Parameters:
+ + + +
[in] id The ID of the trace buffer.
[in] ctxt CONTEXT
+
+
Availability:
Mode: JIT
+ O/S: Linux & Windows
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__CHILD__PROCESS__API.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__CHILD__PROCESS__API.html new file mode 100644 index 0000000..8848bdf --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__CHILD__PROCESS__API.html @@ -0,0 +1,264 @@ + + +Pin: Follow Child Process API + + + + +
+
+

Follow Child Process API

+ + + + + + + + + + + + + +

Typedefs

typedef LEVEL_BASE::CHILD_PROCESS_CLASS * LEVEL_PINCLIENT::CHILD_PROCESS
typedef BOOL(* LEVEL_PINCLIENT::FOLLOW_CHILD_PROCESS_CALLBACK )(CHILD_PROCESS childProcess, VOID *val)

Functions

OS_PROCESS_ID LEVEL_PINCLIENT::CHILD_PROCESS_GetId (CHILD_PROCESS childProcess)
VOID LEVEL_PINCLIENT::CHILD_PROCESS_GetCommandLine (CHILD_PROCESS childProcess, INT *pArgc, const CHAR *const **pArgv)
VOID LEVEL_PINCLIENT::CHILD_PROCESS_SetPinCommandLine (CHILD_PROCESS childProcess, INT argc, const CHAR *const *argv)
+

Detailed Description

+These APIs allow the user to be notified before child(Windows*)/exec-ed(Linux*) process is starting to execute. The user can use the CHILD_PROCESS handle to get information about the process that is going to be executed. The user can decide whether to inject Pin (and PinTool) into the child/exec-ed process.
+ On Linux, if the user has decided to inject Pin into the child process and the injection has failed, the child process would run uninstrumeted. This is only supported for parent injection. In case of child injection, the behavior is the same as on Windows.
+ On Windows, if the injection has failed, the child process would be terminated. However, the parent will continue to run.
+ NOTE:
    +
  • CHILD_PROCESS handle lifetime is in the scope of the callback
    +
  • These set of APIs are active only if -follow_execv is enabled
    +
  • If -follow_execv is enabled and the user has not registered to get a notification, Pin will be injected into child/exec-ed process with the same command line as of current process.
    +
+

Typedef Documentation

+

+ + + + +
+ + + + +
typedef LEVEL_BASE::CHILD_PROCESS_CLASS* LEVEL_PINCLIENT::CHILD_PROCESS
+
+ + + + + +
+   + + +

+CHILD_PROCESS - Handle for child process APIs

+

+ + + + +
+ + + + +
typedef BOOL(* LEVEL_PINCLIENT::FOLLOW_CHILD_PROCESS_CALLBACK)(CHILD_PROCESS childProcess, VOID *val)
+
+ + + + + +
+   + + +

+Call back function before child(Windows*)/exec-ed(Linux*) process is starting to execute. The function can be registered by PIN_AddFollowChildProcessFunction().

+

Parameters:
+ + + +
[in] childProcess Child process handle, it's lifetime is in the scope of the callback
[in] val The tool's call-back value
+
+
Returns:
TRUE If user is interested to inject Pin (and tool) into child/exec-ed process
+ FALSE If user is not interested to inject Pin (and tool) into child/exec-ed process
+
+
+


Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::CHILD_PROCESS_GetCommandLine CHILD_PROCESS  childProcess,
INT *  pArgc,
const CHAR *const **  pArgv
+
+ + + + + +
+   + + +

+Get application's original command line (without Pin's command line)

+

Parameters:
+ + + + +
[in] childProcess child process handle
[out] pArgc pointer to application's argc
[out] pArgv pointer to application's argv this data is allocated by Pin and can't be modified by tool, it's lifetime is in the scope of the callback
+
+
Availability:
Mode: JIT & Probe
+ O/S: Windows
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
OS_PROCESS_ID LEVEL_PINCLIENT::CHILD_PROCESS_GetId CHILD_PROCESS  childProcess  ) 
+
+ + + + + +
+   + + +

+Get process id of child process (meaningful only for Windows*)

+

Parameters:
+ + +
[in] childProcess child process handle
+
+
Returns:
process id of child process
+
Availability:
Mode: JIT & Probe
+ O/S: Windows
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::CHILD_PROCESS_SetPinCommandLine CHILD_PROCESS  childProcess,
INT  argc,
const CHAR *const *  argv
+
+ + + + + +
+   + + +

+Set Pin's (and tool's) command line for the child process (e.g. "c:\\pin_path\\pin -probe -follow_execv -t c:\\pintool_path\\tool --")

+If this API is not called, Pin will be injected into child/exec-ed process with the same command line as of current process.

+NOTE:

    +
  • Providing full path for Pin and tool is the safest way to ensure they will be found (e.g. changing execution directory by application)
  • Use same Pin version for all process tree
+

+

Parameters:
+ + + + +
[in] childProcess handle to child process
[in] argc Pin's (and tool's) argc
[in] argv Pin's (and tool's) argv, this data is allocated by tool and can't be modified by Pin, it's lifetime is in the scope of this function
+
+
Availability:
Mode: JIT & Probe
+ O/S: Windows
+ CPU: All
+
+
+


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__CODECACHE__API.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__CODECACHE__API.html new file mode 100644 index 0000000..d70da24 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__CODECACHE__API.html @@ -0,0 +1,33 @@ + + +Pin: Code Cache API + + + + +
+
+

Code Cache API

+ +
+This API allows the user to inspect Pin's code cache and/or alter the code cache replacement policy. For example, to alter the replacement policy, a user can register a routine that is called anytime the cache is full.
+ APIs from this group are available in any thread, including any internal thread spawned by the tool.
Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__CONTEXT__API.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__CONTEXT__API.html new file mode 100644 index 0000000..34ab502 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__CONTEXT__API.html @@ -0,0 +1,662 @@ + + +Pin: Context manipulation API + + + + +
+
+

Context manipulation API

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Classes

union  PIN_REGISTER

Typedefs

typedef CONTEXT CONTEXT

Enumerations

enum  PROCESSOR_STATE {
+  PROCESSOR_STATE_X87, +
+  PROCESSOR_STATE_XMM, +
+  PROCESSOR_STATE_YMM, +
+  PROCESSOR_STATE_ZMM +
+ }

Functions

BOOL LEVEL_PINCLIENT::PIN_SupportsProcessorState (PROCESSOR_STATE state)
BOOL LEVEL_PINCLIENT::PIN_ContextContainsState (CONTEXT *ctxt, PROCESSOR_STATE state)
VOID LEVEL_PINCLIENT::PIN_SetContextRegval (CONTEXT *ctxt, REG reg, const UINT8 *val)
VOID LEVEL_PINCLIENT::PIN_GetContextRegval (const CONTEXT *ctxt, REG reg, UINT8 *val)
VOID LEVEL_PINCLIENT::PIN_SetContextReg (CONTEXT *ctxt, REG reg, ADDRINT val)
ADDRINT LEVEL_PINCLIENT::PIN_GetContextReg (const CONTEXT *ctxt, REG reg)
VOID LEVEL_PINCLIENT::PIN_SetContextFPState (CONTEXT *ctxt, const FPSTATE *fpstate)
VOID LEVEL_PINCLIENT::PIN_GetContextFPState (const CONTEXT *ctxt, FPSTATE *fpstate)
REGSET LEVEL_PINCLIENT::PIN_GetFullContextRegsSet ()
VOID LEVEL_PINCLIENT::PIN_SaveContext (const CONTEXT *ctxtFrom, CONTEXT *ctxtTo)
VOID LEVEL_PINCLIENT::PIN_ExecuteAt (const CONTEXT *ctxt)
+

Detailed Description

+This API allows the user to read and modify the architectural register state of the processor, as seen in the application that runs under Pin.

+Usually, the tool receives context in the instrumentation callback like THREAD_START_CALLBACK, CONTEXT_CHANGE_CALLBACK, or when it specifies explicitly to pass CONTEXT to the instrumentation routine via IARG_CONTEXT, IARG_CONST_CONTEXT or IARG_PARTIAL_CONTEXT. At this time, the tool can read the individual register value via PIN_GetContextReg and , or save the entire context using the PIN_SaveContext. The PIN_ExecuteAt function can be called from an analysis routine to change the control flow of the thread and start execution from the specified context. The PIN_SetContextReg and PIN_SetContextRegval functions can be used from callbacks to change the thread's given register state. In case where IARG_PARTIAL_CONTEXT was used the behaviour of the threads can be changed by changing registers values without using the PIN_ExecuteAt.


Typedef Documentation

+

+ + + + +
+ + + + +
typedef struct CONTEXT CONTEXT
+
+ + + + + +
+   + + +

+Architectural state of the processor.
+ The tool should not read or modify data members of this structure directly, but must treat the structure as logically opaque and use the Context manipulation API functions to manage it.

+


Enumeration Type Documentation

+

+ + + + +
+ + + + +
enum PROCESSOR_STATE
+
+ + + + + +
+   + + +

+enums for queries on the supported state: PIN_SupportsProcessorState and PIN_ContextContainsState

Enumerator:
+ + + + + +
PROCESSOR_STATE_X87  +is the X87 (fp stack) supported
PROCESSOR_STATE_XMM  +are the xmm registers supported
PROCESSOR_STATE_YMM  +are the ymm registers supported
PROCESSOR_STATE_ZMM  +are the zmm registers supported
+
+
+


Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_PINCLIENT::PIN_ContextContainsState CONTEXT ctxt,
PROCESSOR_STATE  state
+
+ + + + + +
+   + + +

+Query if the specified CONTEXT contains the specified PROCESSOR_STATE.

+

Parameters:
+ + + +
[in] ctxt context to be examined
[in] state the PROCESSOR_STATE being queried
+
+
Returns:
TRUE if the PROCESSOR_STATE specified by state is contained in the ctxt
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_ExecuteAt const CONTEXT ctxt  ) 
+
+ + + + + +
+   + + +

+A tool can call this API to abandon the current analysis function and resume execution of the calling thread at a new application register state. Note that this API does not return back to the caller's analysis function.

+This API can be called from an analysis function or a replacement routine, but not from a callback.

+

Parameters:
+ + +
[in] ctxt New application register state for the calling thread.
+
+
Returns:
This API never returns.
+
Note:
The vm lock is obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_GetContextFPState const CONTEXT ctxt,
FPSTATE *  fpstate
+
+ + + + + +
+   + + +

+Get the floating point state of the specified context.

+

Parameters:
+ + + +
[in] ctxt context whose floating point state is retrieved
[in] fpstate pointer to the buffer that receives floating point state of the context. the FPSTATE type is exposed by Pin.
+
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
ADDRINT LEVEL_PINCLIENT::PIN_GetContextReg const CONTEXT ctxt,
REG  reg
+
+ + + + + +
+   + + +

+Get the value of the integer register or fp status/control register in the specified context. Note that fp registers such as fp-stack regs, xmm regs, ymm regs (when running with Intel(R) AVX support), can only be read using PIN_GetContextRegval.

+

Parameters:
+ + + +
[in] ctxt context whose register value is requested
[in] reg register whose value is requested. This could be an integer register or a floating point register with integer values, like FP status/control register.
+
+
Returns:
value of the register in the specified context
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_GetContextRegval const CONTEXT ctxt,
REG  reg,
UINT8 *  val
+
+ + + + + +
+   + + +

+Get the value of the requested register from the context. This function is applicable for all context registers (integer, fp etc).

+

Parameters:
+ + + + +
[in] ctxt context whose register value is requested
[in] reg register whose value is requested
[out] val an empty buffer which will hold the register value, see note below
+
+
Note:
It is the user's responsibility to allocate and free the val buffer. The buffer size should be at least as wide as the register. The register size can be obtained using REG_Size.
+ It is recommended to use a PIN_REGISTER object as the buffer (and pass a pointer to it). This will ensure that the buffer is large enough for any architectural register.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + +
REGSET LEVEL_PINCLIENT::PIN_GetFullContextRegsSet  ) 
+
+ + + + + +
+   + + +

+Get full REGSET.
+ When using IARG_PARTIAL_CONTEXT such a regset for both in and out REGSET will provide access to all registers including the ability to update them. Such a usage will provide better performance than using IARG_CONTEXT combined with PIN_ExecuteAt().

+

Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_SaveContext const CONTEXT ctxtFrom,
CONTEXT ctxtTo
+
+ + + + + +
+   + + +

+Copy the CONTEXT structure.
+ CONTEXT structures supplied by Pin to the instrumentation callbacks are not "byte-copyable". The tool should use this function to copy the context provided by Pin and must not attempt to move it as raw memory bytes.

+

Parameters:
+ + + +
[in] ctxtFrom CONTEXT structure to copy from
[out] ctxtTo CONTEXT structure to copy into
+
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_SetContextFPState CONTEXT ctxt,
const FPSTATE *  fpstate
+
+ + + + + +
+   + + +

+Set the given floating point state in the specified context.

+

Parameters:
+ + + +
[in,out] ctxt context whose floating point state is to be set
[in] fpstate new floating point state of the context. the FPSTATE type is exposed by Pin.
+
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_SetContextReg CONTEXT ctxt,
REG  reg,
ADDRINT  val
+
+ + + + + +
+   + + +

+Set the given value for the integer register or fp status/control register in the specified context. Note that fp registers such as fp-stack regs, xmm regs, ymm regs (when running with Intel(R) AVX support), can only be set using PIN_SetContextRegval.

+

Parameters:
+ + + + +
[in,out] ctxt context whose register value is to be set
[in] reg register whose value is to be set. This could be an integer register or a floating point register with integer values, like FP status/control register.
[in] val new value of the register
+
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_SetContextRegval CONTEXT ctxt,
REG  reg,
const UINT8 *  val
+
+ + + + + +
+   + + +

+Set the given value for the requested register in the context. This function is applicable for all context registers (integer, fp etc.). When this function is used from within a callback, e.g. THREAD_START_CALLBACK, the new context will take effect when the application continues. If this function is called from within an analysis routine, in order for the new context to take effect when the application continues one must do one of the following: Either use IARG_PARTIAL_CONTEXT and specify the registers which should be modified in the "out" REGSET. Or, use the IARG_CONTEXT and call PIN_ExecuteAt (don't forget to set REG_INST_PTR appropriately).

+

Parameters:
+ + + + +
[in,out] ctxt context whose register value is to be set
[in] reg register whose value is to be set
[in] val buffer holding the new value of the register, see note below
+
+
Note:
It is the user's responsibility to allocate and free the val buffer. The buffer size should be at least as wide as the register. The register size can be obtained using REG_Size.
+ It is recommended to use a PIN_REGISTER object as the buffer (and pass a pointer to it). This will ensure that the buffer is large enough for any architectural register.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::PIN_SupportsProcessorState PROCESSOR_STATE  state  ) 
+
+ + + + + +
+   + + +

+Query if Pin supports the specified PROCESSOR_STATE.

+

Parameters:
+ + +
[in] state the PROCESSOR_STATE being queried
+
+
Returns:
TRUE if the PROCESSOR_STATE specified by state is supported by Pin
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__CONTROLLER__PCREGIONS.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__CONTROLLER__PCREGIONS.html new file mode 100644 index 0000000..79d5d11 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__CONTROLLER__PCREGIONS.html @@ -0,0 +1,88 @@ + + +Pin: CONTROLLER_PCREGIONS + + + + +
+
+

CONTROLLER_PCREGIONS

+ + + + + + + + + + + + + +

Classes

class  CONTROLLER::PCREGION
struct  CONTROLLER::ROIpcinfoStruct
struct  CONTROLLER::ROIinfoStruct
class  CONTROLLER::CONTROL_PCREGIONS

Functions

INT32 CONTROLLER::CONTROL_PCREGIONS::Activate (BOOL passContext)
+

Detailed Description

+Controller for "regions" that are specified using pc+count. Use -pcregions:in pcregions.csv

+Regions are specified using a text file with the records of the form: # comment,thread-id,region-id,start-pc,start-pc-count,end-pc,end-pc-count, end-pc-relative-count, region-length, region-weight, region-multiplier, region-type [ fields after the first twelve are ignored, so are any lines beginning with '#' ]

+end-pc-relative-count: is the count w.r.t. the beginning of the region. [ Corner case: if start-pc==end-pc, the first occurrence of the (common) pc is *not* counted in end-pc-relative-count. This to account for the fact that when used for relogging, the initial occurrence of the (common) pc will be skipped due to delay in region logging {unless '-log:precise_controller' is used} ]

+region-type : "simulation"|"warmup"

+Region weight can be computed two ways: 1. region-weight : number_of_slices_in_cluster/total_number_of_slices # Here, all slices are considered equal

+2. alternate-region-weight : number_of_instructions_in_cluster /total_instruction_count # Here, slices with higher instruction counts contribute more.

+If we use fixed-sized slices, both the weights are the same. However, with variable length intervals, they will be different.

+The "BarrierPoint" paper used the second weight for their prediction. Also, since they were directly computing run-time, the introduced the idea of a region 'multiplier' region-multipler = alternate-region-weight * total_number_of_slices

+That way: predicted_runtime = SUM( region_i_runtime * region_i_multiplier)

+Knobs: ------ -pcregions:in foo.csv : input file -pcregions:end_only report only region ends -pcregions:relative use relative endPC-count -pcregions:merge_warmup ignore warmupEnd and regionStart -pcregions:no_warmup ignore warmup regions -pcregions:startpc_offset Add 'offset' to Start PCs of all regions -pcregions:verbose : for getting informed about regions/events -pcregions:out : Output file for regions skipped due to overlap The idea is to feed this file with "-pcregions:in" to the next invocation of the tool to process skipped regions. If this knob is specified but no regions are skipped, the output file will be empty.

+Region processing: ----------------- The overall regions picture looks as follows: WARMUP--(SIM)REGION

+each sub-region has a start and end event. So there are four events possible (two coinciding . warmup-end and sim-start) EVENT_WARMUP_START : Beginning of warmup region EVENT_WARMUP_STOP : End of warmup region EVENT_START : Beginning of interval EVENT_STOP : End of interval

+Warmup region needs to specified explicitly in the pcregions file. For example, if we are using SimPoint output to generate the pcregion file, then the warmup could be N slices prior to the simulation region slice.

+'region number' vs 'region id' o both > 0 o region number starts at one and goes till the number of regions in the input pcregions file. o region ids can be arbitrary numbers > 0 A pcregion file may have regions with ids sparsely assigned SimPoint generated cluster-IDs could be non-contiguous and region_id = cluster_id+1 This could also happen for example when the pcregion file contains regions skipped during a previous relogging session We use 'region number' value of zero to indicate an invalid ROI, so all *valid* 'region number' are > 1 and that's the reason we size ROIinfo array at 1+of_regions so we can index it starting at 1.


Function Documentation

+

+ + + + +
+ + + + + + + + + +
INT32 CONTROLLER::CONTROL_PCREGIONS::Activate BOOL  passContext  )  [inline, inherited]
+
+ + + + + +
+   + + +

+Activate the controller if the -pcregions knob is provided

Returns:
1 if controller can start an interval, otherwise 0
+
+


Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__CONTROLLER__REGIONS.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__CONTROLLER__REGIONS.html new file mode 100644 index 0000000..405b9dd --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__CONTROLLER__REGIONS.html @@ -0,0 +1,41 @@ + + +Pin: CONTROLLER_REGIONS + + + + +
+
+

CONTROLLER_REGIONS

+ +
+Controller for "regions" that are specified using instruction counts. Use -regions:in regions.csv

+regions.csv files will be an alternative to PinPoints files. The main goal is to separate warm-up specification from region description. Another major goal is the simplicity of implementation.

+Regions are specified using a text file with the records of the form: comment,thread-id,region-id,simulation-region-start-icount, simulation-region-end-icount,region-weight

+[ fields after the first six are ignored, so are lines beginning with '#' ]

+Knobs: ------ -regions:in foo.csv : input file -regions:warmup N : use N instructions for warmup -regions:prolog N : use N instructions for prolog -regions:epilog N : use N instructions for epilog -regions:verbose : for getting informed about regions/events -regions:overlap-ok : allow overlap among multiple regions. -regions:out : Output file for regions skipped due to overlap (if overlap is not ok) The idea is to feed this file with "-regions:in" to the next invocation of the tool to process skipped regions. If this knob is specified but no regions are skipped, the output file will be empty.

+Region processing: ----------------- The overall regions picture looks as follows: WARMUP--PROLOG--(SIM)REGION--EPILOG

+each sub-region has a start and end event. So there are eight events possible (some coinciding e.g. warmup-end and prolog-start) EVENT_WARMUP_START : Beginning of warmup region EVENT_WARMUP_STOP : End of warmup region EVENT_PROLOG_START : Beginning of prolog region EVENT_PROLOG_STOP : End of prolog region EVENT_START : Beginning of interval EVENT_STOP : End of interval EVENT_EPILOG_START : Beginning of epilog region EVENT_EPILOG_STOP : End of epilog region

+Using the warmup/prolog/epilog knobs provided to the controller, the region boundaries for the four sub-regions above are computed for each record in the regions.csv file.

+If overlap is not allowed (-regions:overlap-ok is zero), any record that has any of its 4 sub-regions overapping with any sub-region of previously processed records will be ignored. If -regions:out knob is specified, the skipped records will be output to a file. The idea is to feed the skipped region records to another invocation of the tool involved iteratively till all the records are processed.

+As regions are processed, an event list containing tuples of the form (icount, event-type, region-pointer) is created per thread. There is one tuple for each of the possible 8 events for four sub-regions.


Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__DEBUGGER__SHELL.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__DEBUGGER__SHELL.html new file mode 100644 index 0000000..9e2bfd6 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__DEBUGGER__SHELL.html @@ -0,0 +1,142 @@ + + +Pin: DEBUGGER_SHELL + + + + +
+
+

DEBUGGER_SHELL

+ + + + + + + + + + + + + + +

Classes

class  DEBUGGER_SHELL::ISHELL
struct  DEBUGGER_SHELL::STARTUP_ARGUMENTS
class  DEBUGGER_SHELL::ICUSTOM_INSTRUMENTOR

Enumerations

enum  DEBUGGER_SHELL::HELP_CATEGORY {
+  DEBUGGER_SHELL::HELP_CATEGORY_GENERAL, +
+  DEBUGGER_SHELL::HELP_CATEGORY_BREAKPOINTS, +
+  DEBUGGER_SHELL::HELP_CATEGORY_TRACEPOINTS, +
+  DEBUGGER_SHELL::HELP_CATEGORY_REGISTERS, +
+  DEBUGGER_SHELL::HELP_CATEGORY_END +
+ }

Functions

DEBUGGER_SHELL::ISHELLDEBUGGER_SHELL::CreateShell ()
+

Detailed Description

+Pin tools that run with the "-appdebug" switch can use this class to implement some common custom debugger commands. Once enabled, a user can type these commands interactively at the debugger prompt. In GDB, type "monitor help" to see a list of the available commands.

+Typical usage in the tool is as follows:

+

  #include "debugger-shell.H"
+
+  int main(int argc, char **argv)
+  {
+      if (PIN_Init(argc,argv))
+          return 1;
+
+      DEBUGGER_SHELL::ISHELL *shell = DEBUGGER_SHELL::CreateShell();
+      DEBUGGER_SHELL::STARTUP_ARGUMENTS args;
+      if (!shell->Enable(args))
+          return 1;
+
+      PIN_StartProgram();
+  }
+

+The tool must also compile and link with "debugger-shell.cpp".


Enumeration Type Documentation

+

+ + + + +
+ + + + +
enum DEBUGGER_SHELL::HELP_CATEGORY
+
+ + + + + +
+   + + +

+Predefined categories of help commands.

Enumerator:
+ + + + + + +
HELP_CATEGORY_GENERAL  +General commands.
HELP_CATEGORY_BREAKPOINTS  +Breakpoint commands.
HELP_CATEGORY_TRACEPOINTS  +Tracepoint commands.
HELP_CATEGORY_REGISTERS  +Register names.
HELP_CATEGORY_END  +Marks the last predefined help category. Custom category numbers start here.
+
+
+


Function Documentation

+

+ + + + +
+ + + + + + + + +
ISHELL * DEBUGGER_SHELL::CreateShell  ) 
+
+ + + + + +
+   + + +

+Create a debugger shell object.

+

Returns:
A new debugger shell object on success. If there is an error, a diagnostic is printed and this method returns NULL.
+
+


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__DEBUG__API.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__DEBUG__API.html new file mode 100644 index 0000000..4e34056 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__DEBUG__API.html @@ -0,0 +1,106 @@ + + +Pin: DBG: Debugging using Pin + + + + +
+
+

DBG: Debugging using Pin

+ + + + +

Functions

void LEVEL_PINCLIENT::PIN_GetSourceLocation (ADDRINT address, INT32 *column, INT32 *line, string *fileName)
+

Detailed Description

+Access the debug information contained in an elf binary.

Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void LEVEL_PINCLIENT::PIN_GetSourceLocation ADDRINT  address,
INT32 *  column,
INT32 *  line,
string *  fileName
+
+ + + + + +
+   + + +

+Find the line number, file, and column number corresponding to a memory address.

+Linux: Compile your program with -g to include line number information. Pin can only read dwarf2 information, which is the default for most modern compilers. Use -gdwarf-2 if you are using gcc 2.96.

+MacOS: Compile your program with -g to include line number information. On MacOS, Pin currently understands the default debugging info (stab) generated by gcc. Support for dwarf2 will be added later. With stab, the column number is not available. So, we simply return 0 as the column number. Once we support dwarf2, we would have the column number as well.

+Windows: Executable/dll has to have program data base (.pdb) file in order to support this API.

+This function can be used in any thread, including any internal thread spawned by the tool.

+

Note:
In analysis routines, Client Lock should be obtained before calling this function
+
+
Parameters:
+ + + + + +
[in] address The code address to lookup.
[out] column If column is non-zero, *column is set to the column number. Column number 0 indicates that there is no valid column information.
[out] line If line is non-zero, *line is set to the line number. Line number 0 indicates that there is no valid line information.
[out] fileName If fileName is non-zero, *fileName is set to the file name. Empty string ("") indicates that there is no valid file name information. File names are encoded in UTF8 (a superset of ASCII), this is supported for Linux (only for locales encoded in UTF8) and Windows
+
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__DEPRECATED__PIN__API.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__DEPRECATED__PIN__API.html new file mode 100644 index 0000000..906862f --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__DEPRECATED__PIN__API.html @@ -0,0 +1,1415 @@ + + +Pin: Pin Deprecated API + + + + +
+
+

Pin Deprecated API

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Typedefs

typedef VOID(* LEVEL_PINCLIENT::SIGNAL_BEFORE_CALLBACK )(THREADID threadIndex, INT32 sig, const CONTEXT *ctxtFrom, const CONTEXT *ctxtTo, VOID *v)
typedef VOID(* LEVEL_PINCLIENT::SIGNAL_AFTER_CALLBACK )(THREADID threadIndex, const CONTEXT *ctxtFrom, const CONTEXT *ctxtTo, VOID *v)
typedef VOID(* LEVEL_PINCLIENT::THREAD_BEGIN_CALLBACK )(THREADID threadIndex, VOID *sp, int flags, VOID *v)
typedef VOID(* LEVEL_PINCLIENT::THREAD_END_CALLBACK )(THREADID threadIndex, INT32 code, VOID *v)
typedef BOOL(* LEVEL_PINCLIENT::SIGNAL_INTERCEPT_CALLBACK )(THREADID threadIndex, INT32 sig, CONTEXT *ctxt, BOOL hasHndlr, VOID *v)

Functions

PIN_DEPRECATED_API BOOL LEVEL_CORE::INS_IsRewritableMemOpBaseLimited (INS ins, MEMORY_TYPE mtype, REG &base)
PIN_DEPRECATED_API BOOL LEVEL_CORE::INS_IsRewritableMemOpBase (INS ins, MEMORY_TYPE mtype, REG &base)
PIN_DEPRECATED_API BOOL LEVEL_CORE::INS_IsDynamicRewritableMemOpBase (INS ins, MEMORY_TYPE mtype, REG &reg)
PIN_DEPRECATED_API ADDRINT LEVEL_CORE::INS_MemoryOffset (INS ins)
PIN_DEPRECATED_API ADDRDELTA LEVEL_CORE::INS_MemoryDisplacementSigned (INS ins)
PIN_DEPRECATED_API BOOL LEVEL_CORE::INS_OperandReadAndWriten (INS ins, UINT32 n)
PIN_DEPRECATED_API BOOL LEVEL_PINCLIENT::PIN_AddSignalBeforeFunction (SIGNAL_BEFORE_CALLBACK fun, VOID *val)
PIN_DEPRECATED_API BOOL LEVEL_PINCLIENT::PIN_AddSignalAfterFunction (SIGNAL_AFTER_CALLBACK fun, VOID *val)
PIN_DEPRECATED_API BOOL LEVEL_PINCLIENT::PIN_AddSignalInterceptFunction (INT32 sig, SIGNAL_INTERCEPT_CALLBACK fun, VOID *val)
PIN_DEPRECATED_API VOID LEVEL_PINCLIENT::PIN_AddThreadBeginFunction (THREAD_BEGIN_CALLBACK fun, VOID *val)
PIN_DEPRECATED_API VOID LEVEL_PINCLIENT::PIN_AddThreadEndFunction (THREAD_END_CALLBACK fun, VOID *val)
PIN_DEPRECATED_API VOID LEVEL_PINCLIENT::PIN_StartProbedProgram ()
PIN_DEPRECATED_API BOOL LEVEL_PINCLIENT::RTN_IsSafeForProbe (RTN rtn)
PIN_DEPRECATED_API VOID LEVEL_PINCLIENT::RTN_ReplaceWithUninstrumentedRoutine (RTN replacedRtn, AFUNPTR replacementFun)
PIN_DEPRECATED_API BOOL LEVEL_PINCLIENT::CODECACHE_FlushCache ()
PIN_DEPRECATED_API UINT32 LEVEL_PINCLIENT::CODECACHE_InvalidateTraceAtProgramAddress (ADDRINT app_pc)
PIN_DEPRECATED_API UINT32 LEVEL_PINCLIENT::CODECACHE_InvalidateRange (ADDRINT start, ADDRINT end)
PIN_DEPRECATED_API BOOL LEVEL_PINCLIENT::TRACE_Original (TRACE trace)
PIN_DEPRECATED_API BBL LEVEL_PINCLIENT::RTN_BblHead (RTN x)
PIN_DEPRECATED_API BBL LEVEL_PINCLIENT::RTN_BblTail (RTN x)
PIN_DEPRECATED_API INT32 LEVEL_PINCLIENT::RTN_No (RTN x)
PIN_DEPRECATED_API VOID LEVEL_PINCLIENT::PIN_RegisterItcAuxCallBackPushFun (AFUNPTR callBackPushFun)
PIN_DEPRECATED_API VOID LEVEL_PINCLIENT::RTN_ComplexReplaceWithUninstrumentedRoutine (RTN replacedRtn, AFUNPTR replacementFun)
PIN_DEPRECATED_API ADDRINT LEVEL_PINCLIENT::PIN_FindAlternateAppStack ()
PIN_DEPRECATED_API BOOL LEVEL_PINCLIENT::ParseCommandLine (int xargc, CHAR **xargv)
PIN_DEPRECATED_API BOOL LEVEL_PINCLIENT::INS_ChangeMemOpToBaseRegisterAddressMode (INS ins, MEMORY_TYPE mtype, REG newBase)
PIN_DEPRECATED_API BOOL LEVEL_PINCLIENT::INS_RewriteMemoryAddressingToBaseRegisterOnly (INS ins, MEMORY_TYPE mtype, REG newBase)
BOOL LEVEL_PINCLIENT::PIN_SetThreadData (TLS_KEY key, const VOID *data)
VOID * LEVEL_PINCLIENT::PIN_GetThreadData (TLS_KEY key)
+

Detailed Description

+APIs from older versions of Pin that have been replaced by more powerful, or simpler, interfaces in the current version of Pin. The newer APIs should be used instead of these interfaces.

Typedef Documentation

+

+ + + + +
+ + + + +
typedef VOID(* LEVEL_PINCLIENT::SIGNAL_AFTER_CALLBACK)(THREADID threadIndex, const CONTEXT *ctxtFrom, const CONTEXT *ctxtTo, VOID *v)
+
+ + + + + +
+   + + +

+Call back function when application signal handler returns.

+

Parameters:
+ + + + + +
threadIndex The Pin thread ID of the thread that handled the signal.
ctxtFrom Application's register state at end of handler.
ctxtTo Application's register state to which the handler is returning.
v The tool's call-back value.
+
+
Note:
DEPRECATED: See PIN_AddContextChangeFunction().
+
+

+ + + + +
+ + + + +
typedef VOID(* LEVEL_PINCLIENT::SIGNAL_BEFORE_CALLBACK)(THREADID threadIndex, INT32 sig, const CONTEXT *ctxtFrom, const CONTEXT *ctxtTo, VOID *v)
+
+ + + + + +
+   + + +

+Call back function when application handles a signal.

+

Parameters:
+ + + + + + +
threadIndex The Pin thread ID of the thread that handles the signal.
sig The signal number.
ctxtFrom Application's register state when it was interrupted by the signal.
ctxtTo Application's register state at start of handler.
v The tool's call-back value.
+
+
Note:
DEPRECATED: See PIN_AddContextChangeFunction().
+
+

+ + + + +
+ + + + +
typedef BOOL(* LEVEL_PINCLIENT::SIGNAL_INTERCEPT_CALLBACK)(THREADID threadIndex, INT32 sig, CONTEXT *ctxt, BOOL hasHndlr, VOID *v)
+
+ + + + + +
+   + + +

+Call back function when tool creates its own signal handler.

+

Parameters:
+ + + + + + +
threadIndex The Pin thread ID of the thread that handled the signal.
sig The signal number.
ctxt Application's register state when it was interrupted by the signal. The tool may change this context if desired. If so, the application continues at the modified context. Or, if the application's signal handler is invoked, that handler returns to the modified context.
hndlr Boolean indicating if the application has a registered signal handler.
v The tool's call-back value.
+
+
Returns:
Returning TRUE tells Pin to pass the signal on to the application's handler (if any). If the tool returns FALSE or if the application has no handler, execution continues at ctxt.
+
Note:
DEPRECATED: See PIN_InterceptSignal() and PIN_UnblockSignal().
+
+

+ + + + +
+ + + + +
typedef VOID(* LEVEL_PINCLIENT::THREAD_BEGIN_CALLBACK)(THREADID threadIndex, VOID *sp, int flags, VOID *v)
+
+ + + + + +
+   + + +

+Call back function when thread begins

+

Note:
DEPRECATED: See PIN_AddThreadStartFunction().
+
+

+ + + + +
+ + + + +
typedef VOID(* LEVEL_PINCLIENT::THREAD_END_CALLBACK)(THREADID threadIndex, INT32 code, VOID *v)
+
+ + + + + +
+   + + +

+Call back function when thread ends

+

Note:
DEPRECATED: See PIN_AddThreadFiniFunction().
+
+


Function Documentation

+

+ + + + +
+ + + + + + + + +
PIN_DEPRECATED_API BOOL LEVEL_PINCLIENT::CODECACHE_FlushCache  ) 
+
+ + + + + +
+   + + +

+This routine flushes the entire cache. We do not need to remove any links, as they will be flushed with the cache.

Returns:
Boolean success if the given cache was successfully flushed
+
Note:
The vm lock is obtained during the call of this API.

+DEPRECATED: Always returns true. See PIN_RemoveInstrumentation.

+
Availability:
Mode: JIT
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
PIN_DEPRECATED_API UINT32 LEVEL_PINCLIENT::CODECACHE_InvalidateRange ADDRINT  start,
ADDRINT  end
+
+ + + + + +
+   + + +

+This routine unlinks and invalidates any traces in the code cache that correspond to any code in the given source program address range [start,end]

Parameters:
+ + + +
start The original program starting address of the range we want to invalidate
end The original program ending address (inclusive) of the range we want to invalidate
+
+
Returns:
Number of Traces Invalidated
+
Note:
The vm lock is obtained during the call of this API.

+DEPRECATED: Always returns zero. See PIN_RemoveInstrumentationInRange.

+
Availability:
Mode: JIT
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
PIN_DEPRECATED_API UINT32 LEVEL_PINCLIENT::CODECACHE_InvalidateTraceAtProgramAddress ADDRINT  app_pc  ) 
+
+ + + + + +
+   + + +

+Invalidates any traces starting at the given program address. Note: More than one trace may correspond to a single program address due to register allocation

Parameters:
+ + +
app_pc The original program address (must be a trace head)
+
+
Returns:
The number of traces successfully invalidated
+
Note:
The vm lock is obtained during the call of this API.

+DEPRECATED: Always returns zero.

+
Availability:
Mode: JIT
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
PIN_DEPRECATED_API BOOL LEVEL_PINCLIENT::INS_ChangeMemOpToBaseRegisterAddressMode INS  ins,
MEMORY_TYPE  mtype,
REG  newBase
+
+ + + + + +
+   + + +

+Change this memory access instruction use a base register addressing mode. On IA-32/Intel(R) 64, it will not rewrite all references; See INS_IsRewritableMemOpBaseLimited() for details.

+

Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
Note:
DEPRECATED and NO LONGER SUPPORTED: See INS_RewriteMemoryOperand().
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
PIN_DEPRECATED_API BOOL LEVEL_CORE::INS_IsDynamicRewritableMemOpBase INS  ins,
MEMORY_TYPE  mtype,
REG reg
+
+ + + + + +
+   + + +

+Test if this memory operation can be rewritten dynamically and return the base register

+

Note:
DEPRECATED and NO LONGER SUPPORTED: See INS_RewriteMemoryOperand().
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
PIN_DEPRECATED_API BOOL LEVEL_CORE::INS_IsRewritableMemOpBase INS  ins,
MEMORY_TYPE  mtype,
REG base
+
+ + + + + +
+   + + +

+

Returns:
true if this instruction has a memory op that can be rewritten. Exclude anything with implicit memory operations, but allow the string ops. Exclude a write if has the same base register as a read because we'll rewrite it when we do the read.
+Exclude some implicit stack operations (associated w/call,ret) as they cannot be rewritten.

+

Note:
DEPRECATED and NO LONGER SUPPORTED: See INS_RewriteMemoryOperand().
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
PIN_DEPRECATED_API BOOL LEVEL_CORE::INS_IsRewritableMemOpBaseLimited INS  ins,
MEMORY_TYPE  mtype,
REG base
+
+ + + + + +
+   + + +

+

Returns:
true if this instruction has a memory op that can be rewritten. Exclude memory accesses with rIP or rSP as the base register. Exclude *anything* with no base register. (This will exclude instructions that have an index reg with no base reg). (This will exclude instructions that just use a displacement to access memory). Exclude anything with a segment prefix. Exclude LEAVE operations. Exclude a write if has the same base register as a read because we'll rewrite it when we do the read.
+
Note:
DEPRECATED and NO LONGER SUPPORTED: See INS_RewriteMemoryOperand().
+
+

+ + + + +
+ + + + + + + + + +
PIN_DEPRECATED_API ADDRDELTA LEVEL_CORE::INS_MemoryDisplacementSigned INS  ins  ) 
+
+ + + + + +
+   + + +

+

Note:
DEPRECATED: See INS_MemoryDisplacement().
+
+

+ + + + +
+ + + + + + + + + +
PIN_DEPRECATED_API ADDRINT LEVEL_CORE::INS_MemoryOffset INS  ins  ) 
+
+ + + + + +
+   + + +

+

Note:
DEPRECATED: See INS_MemoryDisplacement().
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
PIN_DEPRECATED_API BOOL LEVEL_CORE::INS_OperandReadAndWriten INS  ins,
UINT32  n
+
+ + + + + +
+   + + +

+Old name for the previous function; this name is a typo. For backward compatibility we keep it.

+

Note:
DEPRECATED: See INS_OperandReadAndWritten().
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
PIN_DEPRECATED_API BOOL LEVEL_PINCLIENT::INS_RewriteMemoryAddressingToBaseRegisterOnly INS  ins,
MEMORY_TYPE  mtype,
REG  newBase
+
+ + + + + +
+   + + +

+Change this memory access instruction to reference the virtual memory location contained in the given register.

+On IA-32 and Intel64, the modified operand uses only base register addressing with the new base register newBase. Any index, scale, or offset fields from that operand in the original instruction are removed. In addition, if the original instruction's operand uses a segment override, the instruction is changed to use the default segment.

+A memory operand can't be rewritten when:

    +
  • the operand is implicit, but string operations are allowed
  • write operand has the same base register as read
  • some implicit stack operations (associated w/call,ret)
+

+

Parameters:
+ + + + +
[in] ins input instruction
[in] mtype controls which operand to rewrite (read, write or second read operand)
[in] newBase register used as the new memory base address
+
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
Note:
DEPRECATED and NO LONGER SUPPORTED: See INS_RewriteMemoryOperand().
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
PIN_DEPRECATED_API BOOL LEVEL_PINCLIENT::ParseCommandLine int  xargc,
CHAR **  xargv
+
+ + + + + +
+   + + +

+

Note:
DEPRECATED: See the return value from PIN_Init().
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
PIN_DEPRECATED_API BOOL LEVEL_PINCLIENT::PIN_AddSignalAfterFunction SIGNAL_AFTER_CALLBACK  fun,
VOID *  val
+
+ + + + + +
+   + + +

+Register a notification function that is called immediately after the application returns from a signal handler. This notification only occurs if the application returns "normally" from the signal handler. If the application jumps out of its handler early (e.g. via longjmp), the notification does not occur.

+

Parameters:
+ + + +
fun Call back function to execute immediately after the application's signal handler.
val Value to pass to the function.
+
+
Returns:
TRUE if succeeds, FALSE otherwise
+
Note:
DEPRECATED: See PIN_AddContextChangeFunction().
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
PIN_DEPRECATED_API BOOL LEVEL_PINCLIENT::PIN_AddSignalBeforeFunction SIGNAL_BEFORE_CALLBACK  fun,
VOID *  val
+
+ + + + + +
+   + + +

+Register a notification function that is called immediately before the application jumps to a signal handler. The tool is only notified of a signal that the application actually handles. Unhandled signals do not trigger a notification.

+

Parameters:
+ + + +
fun Call back function to execute immediately before the application's signal handler.
val Value to pass to the function.
+
+
Returns:
TRUE if succeeds, FALSE otherwise
+
Note:
Function always return FALSE on Windows

+DEPRECATED: See PIN_AddContextChangeFunction().

+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
PIN_DEPRECATED_API BOOL LEVEL_PINCLIENT::PIN_AddSignalInterceptFunction INT32  sig,
SIGNAL_INTERCEPT_CALLBACK  fun,
VOID *  val
+
+ + + + + +
+   + + +

+Takes over ownership of a signal for the tool and establishes a tool handler for the signal. Tools should never call sigaction() directly to handle signals.

+Use this function to take over "ownership" of a signal. If you want to be notified when the application receives a signal, use PIN_AddContextChangeFunction() instead.

+Tools should take care when intercepting signals, because this can adversely affect the application if it also uses the signal. The application is still allowed to set up its own handler for an intercepted signal. However, the application is prevented from attempts to block the signal.

+When an intercepted signal is received, the tool's handler is called first. The tool's handler then decides whether the signal should be forwarded to the application's handler (if any).

+A tool can set only one "intercept" handler for a particular signal, so a new handler overwrites any previous handler for the same signal. To disable a handler, pass a NULL function pointer.

+

Parameters:
+ + + + +
sig The signal number to handle.
fun The tool's handler function, or NULL to return ownership of the signal back to the application.
val Value to pass to the handler function.
+
+
Returns:
TRUE if succeeds, FALSE otherwise
+
Availability:
Mode: JIT
+ O/S: Linux
+ CPU: All
+
+
Note:
Intercepting a signal immediately forces the current thread to unblock that signal. This ensures that the application cannot prevent the tool from receiving the signal. Any future threads that the application creates will also be prevented from blocking the signal. However, if there are existing threads in the application when the tool intercepts a signal, those threads will not be prevented from blocking the intercepted signal until some future time. There is no guarantee on when the other threads will unblock the intercepted signal, and they may never do so if they are permanently blocked in a system call. To avoid this problem, it is safest to call PIN_AddSignalInterceptFunction() before starting the application with PIN_StartProgram().

+Function always return FALSE on Windows

+DEPRECATED: See PIN_InterceptSignal() and PIN_UnblockSignal().

+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
PIN_DEPRECATED_API VOID LEVEL_PINCLIENT::PIN_AddThreadBeginFunction THREAD_BEGIN_CALLBACK  fun,
VOID *  val
+
+ + + + + +
+   + + +

+Call func immediately after a new thread has been created

+

Parameters:
+ + + +
fun Call back function to execute after new thread has been created
val Value to be passed to fun when it is called
+
+
Note:
DEPRECATED: See PIN_AddThreadStartFunction().
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
PIN_DEPRECATED_API VOID LEVEL_PINCLIENT::PIN_AddThreadEndFunction THREAD_END_CALLBACK  fun,
VOID *  val
+
+ + + + + +
+   + + +

+Call func immediately before a thread ends

+

Parameters:
+ + + +
fun Call back function to execute before new thread ends
val Value to be passed to fun when it is called
+
+
Note:
DEPRECATED: See PIN_AddThreadFiniFunction().
+
+

+ + + + +
+ + + + + + + + +
PIN_DEPRECATED_API ADDRINT LEVEL_PINCLIENT::PIN_FindAlternateAppStack  ) 
+
+ + + + + +
+   + + +

+If we are currently on a pin stack, return a location on the application stack where we can "unswitch to" and continue execution there

Note:
DEPRECATED.
+
+

+ + + + +
+ + + + + + + + + +
VOID* LEVEL_PINCLIENT::PIN_GetThreadData TLS_KEY  key  ) 
+
+ + + + + +
+   + + +

+Get the value stored in the specified TLS slot of the thread.

+

Note:
DEPRECATED and NO LONGER SUPPORTED. Please use the version of this function which takes a THREADID argument.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
PIN_DEPRECATED_API VOID LEVEL_PINCLIENT::PIN_RegisterItcAuxCallBackPushFun AFUNPTR  callBackPushFun  ) 
+
+ + + + + +
+   + + +

+This API is only used by the Intel Thread Checker. Calling this API to register the function that libtcheck provides to push the original function pointer of a replaced function onto Thread Checker's internal storage. Once this API is called, the function replacement bridge will call "callBackPushFun" with the original function pointer of the replaced function as the parameter.

Note:
DEPRECATED.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_PINCLIENT::PIN_SetThreadData TLS_KEY  key,
const VOID *  data
+
+ + + + + +
+   + + +

+Store specified value in the specified TLS slot of the thread.

+

Note:
DEPRECATED and NO LONGER SUPPORTED. Please use the version of this function which takes a THREADID argument.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + +
PIN_DEPRECATED_API VOID LEVEL_PINCLIENT::PIN_StartProbedProgram  ) 
+
+ + + + + +
+   + + +

+Starts program executing, never returns. PIN_Init must be called first. The command line option -probe must be invoked when using PIN_StartProbedProgram(). A probed program only invokes instrumentation at explicitly inserted probe points.

+

Note:
DEPRECATED: See PIN_StartProgramProbed().
+
+

+ + + + +
+ + + + + + + + + +
PIN_DEPRECATED_API BBL LEVEL_PINCLIENT::RTN_BblHead RTN  x  ) 
+
+ + + + + +
+   + + +

+

Returns:
A bbl contains the INSs of the RTN.
+The RTN must have been opened by RTN_Open in order to receive a valid BBL. Note that RTN is not broken up into BBLs. The returned bbl will contain all the INSs of the RTN that Pin could find through static discovery, so Pin does not guarantee that it will find all the INSs in the RTN.

+

Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
Note:
DEPRECATED: See RTN_InsHead().
+
+

+ + + + +
+ + + + + + + + + +
PIN_DEPRECATED_API BBL LEVEL_PINCLIENT::RTN_BblTail RTN  x  ) 
+
+ + + + + +
+   + + +

+

Returns:
A bbl contains the INSs of the RTN.
+The RTN must have been opened by RTN_Open in order to receive a valid BBL. Note that RTN is not broken up into BBLs. The returned bbl will contain all the INSs of the RTN that Pin could find through static discovery, so Pin does not guarantee that it will find all the INSs in the RTN.

+

Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
Note:
DEPRECATED: See RTN_InsTail().
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
PIN_DEPRECATED_API VOID LEVEL_PINCLIENT::RTN_ComplexReplaceWithUninstrumentedRoutine RTN  replacedRtn,
AFUNPTR  replacementFun
+
+ + + + + +
+   + + +

+Replace a function in the application (replacedRtn) by another function defined in the Pintool (replacementFun). The replacement function is not instrumented. Difference between RTN_ReplaceWithUninstrumentedRoutine() and RTN_ComplexReplaceWithUninstrumentedRoutine() is that the latter does complex replacement (i.e. a call to the callBackPushFun registered will be made before calling to the replacement function).

Note:
DEPRECATED.
+
+

+ + + + +
+ + + + + + + + + +
PIN_DEPRECATED_API BOOL LEVEL_PINCLIENT::RTN_IsSafeForProbe RTN  rtn  ) 
+
+ + + + + +
+   + + +

+Return TRUE if the given RTN is a candidate for function insertion using probes, and FALSE otherwise. Please use RTN_IsSafeForProbedInsertion() if you want to insert a call before or after routine.

+

Note:
DEPRECATED: See RTN_IsSafeForProbedReplacement().
+
+

+ + + + +
+ + + + + + + + + +
PIN_DEPRECATED_API INT32 LEVEL_PINCLIENT::RTN_No RTN  x  ) 
+
+ + + + + +
+   + + +

+

Returns:
Number of routine
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
Note:
DEPRECATED: See RTN_Id().
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
PIN_DEPRECATED_API VOID LEVEL_PINCLIENT::RTN_ReplaceWithUninstrumentedRoutine RTN  replacedRtn,
AFUNPTR  replacementFun
+
+ + + + + +
+   + + +

+Replace a function in the application (replacedRtn) by another function defined in the Pintool (replacementFun). The replacement function is not instrumented.

+

Note:
DEPRECATED: See RTN_Replace() and RTN_ReplaceProbed().
+
+

+ + + + +
+ + + + + + + + + +
PIN_DEPRECATED_API BOOL LEVEL_PINCLIENT::TRACE_Original TRACE  trace  ) 
+
+ + + + + +
+   + + +

+

Returns:
Whether the TRACE data structure has been instrumented or optimized since it was created
+
Note:
DEPRECATED: Always returns true.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X
+ CPU: All
+
+
+


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__ERROR__FILE__BASIC.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__ERROR__FILE__BASIC.html new file mode 100644 index 0000000..15154c7 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__ERROR__FILE__BASIC.html @@ -0,0 +1,405 @@ + + +Pin: Pin Error Reporting Support + + + + +
+
+

Pin Error Reporting Support

+ + + + + + + + + +

Enumerations

enum  PIN_ERR_SEVERITY_TYPE {
+  PIN_ERR_FATAL, +
+  PIN_ERR_NONFATAL +
+ }
enum  PIN_ERRTYPE {
+  PIN_ERR_NONE = 0, +
+  PIN_ERR_INTERNAL, +
+  PIN_ERR_ASSERT, +
+  PIN_ERR_TOOL, +
+  PIN_ERR_CMD_LINE, +
+  PIN_ERR_PARSING, +
+  PIN_ERR_NO_APP, +
+  PIN_ERR_INVALID_PLOAD, +
+  PIN_ERR_FILE_NOT_FOUND, +
+  PIN_ERR_ELF_HEADER, +
+  PIN_ERR_NO_PIE, +
+  PIN_ERR_NO_ENTRY_OFFSET, +
+  PIN_ERR_INVALID_ADDRESS, +
+  PIN_ERR_INVALID_ADDRESS_RANGE, +
+  PIN_ERR_CANNOT_LOAD_TOOL, +
+  PIN_ERR_PIN_INJECTION, +
+  PIN_ERR_WAIT_FOR_INJECTOR, +
+  PIN_ERR_BAD_OS_FILE, +
+  PIN_ERR_UNSUPPORTED_OS, +
+  PIN_ERR_BIN32, +
+  PIN_ERR_BIN64, +
+  PIN_ERR_CANNOT_RUN, +
+  PIN_ERR_ATTACH_PID, +
+  PIN_ERR_ATTACH_NYI, +
+  PIN_ERR_ATTACH_REJECTED, +
+  PIN_ERR_ATTACH_PTRACE_SCOPE_1, +
+  PIN_ERR_DETACH_PID, +
+  PIN_ERR_WAIT_PID, +
+  PIN_ERR_STEP_PID, +
+  PIN_ERR_WAIT_EXECV, +
+  PIN_ERR_APP_RESUME, +
+  PIN_ERR_NO_INSTRUMENT, +
+  PIN_ERR_CHILD_PTRACEME, +
+  PIN_ERR_CHILD_RESUME, +
+  PIN_ERR_RELINK_APP, +
+  PIN_ERR_KNOB_BAD, +
+  PIN_ERR_NO_RELOCS, +
+  PIN_ERR_VERSION_SKEW, +
+  PIN_ERR_MS_DOS, +
+  PIN_ERR_LONG_PATH, +
+  PIN_ERR_CANNOT_EXECUTE_FILE, +
+  PIN_ERR_BLOCKSIG_TOOL, +
+  PIN_ERR_BLOCKSIG_APP, +
+  PIN_ERR_USER_SPECIFIED_ERROR, +
+  PIN_ERR_OUT_OF_MEMORY, +
+  PIN_ERR_NON_NUMERIC_STRING, +
+  PIN_ERR_EMPTY_STRING, +
+  PIN_ERR_NUMERIC_FROM_STRING, +
+  PIN_ERR_ALREADY_ATTACHED, +
+  PIN_ERR_ILLEGAL_EXCEPTION, +
+  PIN_ERR_EXCEPTION_NEEDS_ADDR, +
+  PIN_ERR_PREDEFINED_INSTRUMENTATION_FAILED, +
+  PIN_ERR_UNSUPPORTED_SYSCALL, +
+  PIN_ERR_ACCESS_DENIED, +
+  PIN_ERR_INVALID_SUSPEND_REQUEST, +
+  PIN_ERR_DEBUGGER, +
+  PIN_ERR_LAST +
+ }

Functions

VOID LEVEL_PINCLIENT::PIN_WriteErrorMessage (const char *msg, INT32 type, PIN_ERR_SEVERITY_TYPE severity, INT32 num,...)
+

Detailed Description

+Pin errors are normally printed to the screen. Some tools prefer to take the Pin errors and create their own error message. This is important if your tool has a particular look and feel. Pin provides the -error_file option, which generates a machine-parsable error code, and supresses error being emitted to the screen.

+The PIN_ERRTYPEs are the errors that Pin can report. The PIN_ERRTYPEs are defined in $PIN_HOME/source/include/pin-errtype.h.


Enumeration Type Documentation

+

+ + + + +
+ + + + +
enum PIN_ERR_SEVERITY_TYPE
+
+ + + + + +
+   + + +

+Severity used by PIN_WriteErrorMessage()

Enumerator:
+ + + +
PIN_ERR_FATAL  +fatal error, Pin exits after printing message.
PIN_ERR_NONFATAL  +non-fatal error
+
+
+

+ + + + +
+ + + + +
enum PIN_ERRTYPE
+
+ + + + + +
+   + + +

+Client level errors reported by Pin.

Enumerator:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PIN_ERR_NONE  +0 args. no error.
PIN_ERR_INTERNAL  +0 args. internal pin error has occurred.
PIN_ERR_ASSERT  +0 args. internal pin assertion has occurred.
PIN_ERR_TOOL  +0 args. tool error has been detected.
PIN_ERR_CMD_LINE  +0 args. tool arguments are incorrect.
PIN_ERR_PARSING  +0 args. command line arguments are incorrect.
PIN_ERR_NO_APP  +0 args. missing application name.
PIN_ERR_INVALID_PLOAD  +0 args. invalid pload argument.
PIN_ERR_FILE_NOT_FOUND  +1 arg: file name. error in application file name or path.
PIN_ERR_ELF_HEADER  +1 arg: file name. unable to read elf header of "filename".
PIN_ERR_NO_PIE  +1 arg: file name. pie binaries not supported on this system.
PIN_ERR_NO_ENTRY_OFFSET  +1 arg: file name. no entry in aux vector.
PIN_ERR_INVALID_ADDRESS  +1 arg: address. "address" is invalid.
PIN_ERR_INVALID_ADDRESS_RANGE  +2 args: low address, high address. address range is invalid.
PIN_ERR_CANNOT_LOAD_TOOL  +1 arg: tool name. pin cannot load "tool".
PIN_ERR_PIN_INJECTION  +0 arg: can't inject pin in running process.
PIN_ERR_WAIT_FOR_INJECTOR  +2 args: pid, errno. injector "pid" failed to exit.
PIN_ERR_BAD_OS_FILE  +0 args. cannot determine os release.
PIN_ERR_UNSUPPORTED_OS  +0 args. unsupported os.
PIN_ERR_BIN32  +0 args. 32-bit binary detected.
PIN_ERR_BIN64  +0 args. 64-bit binary detected.
PIN_ERR_CANNOT_RUN  +1 arg: errno. error in running pin.
PIN_ERR_ATTACH_PID  +2 arg: pid, errno. attach to "pid" failed.
PIN_ERR_ATTACH_NYI  +0 arg: attach to running process is NYI for Pin/Windows in JIT mode.
PIN_ERR_ATTACH_REJECTED  +0 arg: ptrace attach rejected.
PIN_ERR_ATTACH_PTRACE_SCOPE_1  +1 arg: pid, ptrace attach rejected due to sysctl kernel.yama.ptrace_scope.
PIN_ERR_DETACH_PID  +2 arg: pid, errno. detach failed.
PIN_ERR_WAIT_PID  +2 arg: pid, errno. wait for child failed.
PIN_ERR_STEP_PID  +2 arg: pid, errno. single step failed.
PIN_ERR_WAIT_EXECV  +1 arg: errno. wait after execv failed.
PIN_ERR_APP_RESUME  +1 arg: errno. resuming application failed.
PIN_ERR_NO_INSTRUMENT  +2 args: file name, errno. could not instrument process.
PIN_ERR_CHILD_PTRACEME  +1 arg: errno. parent cannot trace the child.
PIN_ERR_CHILD_RESUME  +1 arg: errno. resuming child failed.
PIN_ERR_RELINK_APP  +0 args: application address overlaps with pin, relink.
PIN_ERR_KNOB_BAD  +1 arg: knob. unknown "knob" on command line.
PIN_ERR_NO_RELOCS  +0 args. regular relocations not found, relink with -q.
PIN_ERR_VERSION_SKEW  +0 args. pintool version does not match pin version.
PIN_ERR_MS_DOS  +0 args. ms-dos & win16 application are not supported.
PIN_ERR_LONG_PATH  +0 args. fully qualified pathname of pin executable is too long.
PIN_ERR_CANNOT_EXECUTE_FILE  +1 arg: filename. cannot execute application.
PIN_ERR_BLOCKSIG_TOOL  +1 arg: signal number. Tool intercepted signal and forwarded while application had it blocked.
PIN_ERR_BLOCKSIG_APP  +1 arg: signal number. Application received asynchronous blocked signal, which can't be emulated.
PIN_ERR_USER_SPECIFIED_ERROR  +reserved. internal use only
PIN_ERR_OUT_OF_MEMORY  +0 args. Pin is out of memory.
PIN_ERR_NON_NUMERIC_STRING  +1 arg: string. Non-numeric string passed to conversion utility.
PIN_ERR_EMPTY_STRING  +0 args. Empty string passed to conversion utility.
PIN_ERR_NUMERIC_FROM_STRING  +1 arg: string. Error in numeric to string conversion utility.
PIN_ERR_ALREADY_ATTACHED  +0 args. Pin is already attached to the process.
PIN_ERR_ILLEGAL_EXCEPTION  +1 arg: string. Tool raised invalid exception.
PIN_ERR_EXCEPTION_NEEDS_ADDR  +1 arg: string. Must specify access address for exception.
PIN_ERR_PREDEFINED_INSTRUMENTATION_FAILED  +1 arg: string. Specified function can not be instrumented
PIN_ERR_UNSUPPORTED_SYSCALL  +1 arg: string. System call is not supported by Pin
PIN_ERR_ACCESS_DENIED  +0 args. File access denied due to bad permissions
PIN_ERR_INVALID_SUSPEND_REQUEST  +0 args. Attempting to suspend an internal thread
PIN_ERR_DEBUGGER  +0 args. Error related to debugger
+
+
+


Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_WriteErrorMessage const char *  msg,
INT32  type,
PIN_ERR_SEVERITY_TYPE  severity,
INT32  num,
  ...
+
+ + + + + +
+   + + +

+Writes the given error message to the Pin error file. The error file name is specified using the -error_file switch.

+This API allows tool writer to write a tool-specified error message to the Pin error file. Pin reserves the error type enums from 0-999. Pin will exit after printing a fatal message.
+ This function can be used in any thread, including any internal thread spawned by the tool.

+

Parameters:
+ + + + + + +
msg a description of the error
type an enum associated with the error. type >= 1000.
severity 0=fatal, 1=non-fatal.
num number of arguments following this parameter
... arguments. must be of type "char *".
+
+
Availability:
Mode: JIT, Probe
+ O/S: Linux, Windows
+ CPU: All.
+
+
+


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__EXCEPTION__API.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__EXCEPTION__API.html new file mode 100644 index 0000000..ac140fa --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__EXCEPTION__API.html @@ -0,0 +1,1156 @@ + + +Pin: Exception API + + + + +
+
+

Exception API

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Typedefs

typedef EXCEPTION_INFO EXCEPTION_INFO

Enumerations

enum  EXCEPTION_CLASS {
+  EXCEPTCLASS_NONE, +
+  EXCEPTCLASS_UNKNOWN, +
+  EXCEPTCLASS_ACCESS_FAULT, +
+  EXCEPTCLASS_INVALID_INS, +
+  EXCEPTCLASS_INT_ERROR, +
+  EXCEPTCLASS_FP_ERROR, +
+  EXCEPTCLASS_MULTIPLE_FP_ERROR, +
+  EXCEPTCLASS_DEBUG, +
+  EXCEPTCLASS_OS +
+ }
enum  EXCEPTION_CODE {
+  EXCEPTCODE_NONE, +
+  EXCEPTCODE_ACCESS_INVALID_ADDRESS, +
+  EXCEPTCODE_ACCESS_DENIED, +
+  EXCEPTCODE_ACCESS_INVALID_PAGE, +
+  EXCEPTCODE_ACCESS_MISALIGNED, +
+  EXCEPTCODE_ILLEGAL_INS, +
+  EXCEPTCODE_PRIVILEGED_INS, +
+  EXCEPTCODE_INT_DIVIDE_BY_ZERO, +
+  EXCEPTCODE_INT_OVERFLOW_TRAP, +
+  EXCEPTCODE_INT_BOUNDS_EXCEEDED, +
+  EXCEPTCODE_X87_DIVIDE_BY_ZERO, +
+  EXCEPTCODE_X87_OVERFLOW, +
+  EXCEPTCODE_X87_UNDERFLOW, +
+  EXCEPTCODE_X87_INEXACT_RESULT, +
+  EXCEPTCODE_X87_INVALID_OPERATION, +
+  EXCEPTCODE_X87_DENORMAL_OPERAND, +
+  EXCEPTCODE_X87_STACK_ERROR, +
+  EXCEPTCODE_SIMD_DIVIDE_BY_ZERO, +
+  EXCEPTCODE_SIMD_OVERFLOW, +
+  EXCEPTCODE_SIMD_UNDERFLOW, +
+  EXCEPTCODE_SIMD_INEXACT_RESULT, +
+  EXCEPTCODE_SIMD_INVALID_OPERATION, +
+  EXCEPTCODE_SIMD_DENORMAL_OPERAND, +
+  EXCEPTCODE_DBG_BREAKPOINT_TRAP, +
+  EXCEPTCODE_DBG_SINGLE_STEP_TRAP, +
+  EXCEPTCODE_ACCESS_WINDOWS_GUARD_PAGE, +
+  EXCEPTCODE_ACCESS_WINDOWS_STACK_OVERFLOW, +
+  EXCEPTCODE_WINDOWS, +
+  EXCEPTCODE_RECEIVED_UNKNOWN, +
+  EXCEPTCODE_RECEIVED_ACCESS_FAULT, +
+  EXCEPTCODE_RECEIVED_AMBIGUOUS_X87, +
+  EXCEPTCODE_RECEIVED_AMBIGUOUS_SIMD +
+ }
enum  FAULTY_ACCESS_TYPE {
+  FAULTY_ACCESS_TYPE_UNKNOWN, +
+  FAULTY_ACCESS_READ, +
+  FAULTY_ACCESS_WRITE, +
+  FAULTY_ACCESS_EXECUTE +
+ }
enum  FPERROR {
+  FPERROR_DIVIDE_BY_ZERO = (1<<0), +
+  FPERROR_OVERFLOW = (1<<1), +
+  FPERROR_UNDERFLOW = (1<<2), +
+  FPERROR_INEXACT_RESULT = (1<<3), +
+  FPERROR_INVALID_OPERATION = (1<<4), +
+  FPERROR_DENORMAL_OPERAND = (1<<5), +
+  FPERROR_X87_STACK_ERROR = (1<<6) +
+ }

Functions

VOID PIN_InitExceptionInfo (EXCEPTION_INFO *pExceptInfo, EXCEPTION_CODE exceptCode, ADDRINT exceptAddress)
VOID PIN_InitAccessFaultInfo (EXCEPTION_INFO *pExceptInfo, EXCEPTION_CODE exceptCode, ADDRINT exceptAddress, ADDRINT accessAddress, FAULTY_ACCESS_TYPE accessType=FAULTY_ACCESS_TYPE_UNKNOWN)
VOID PIN_InitWindowsExceptionInfo (EXCEPTION_INFO *pExceptInfo, UINT32 sysExceptCode, ADDRINT exceptAddress, UINT32 numArgs=0, const ADDRINT *pArgs=0)
EXCEPTION_CODE PIN_GetExceptionCode (const EXCEPTION_INFO *pExceptInfo)
EXCEPTION_CLASS PIN_GetExceptionClass (EXCEPTION_CODE exceptCode)
ADDRINT PIN_GetExceptionAddress (const EXCEPTION_INFO *pExceptInfo)
VOID PIN_SetExceptionAddress (EXCEPTION_INFO *pExceptInfo, ADDRINT exceptAddress)
FAULTY_ACCESS_TYPE PIN_GetFaultyAccessType (const EXCEPTION_INFO *pExceptInfo)
BOOL PIN_GetFaultyAccessAddress (const EXCEPTION_INFO *pExceptInfo, ADDRINT *pAccessAddress)
UINT32 PIN_GetFpErrorSet (const EXCEPTION_INFO *pExceptInfo)
UINT32 PIN_GetWindowsExceptionCode (const EXCEPTION_INFO *pExceptInfo)
UINT32 PIN_CountWindowsExceptionArguments (const EXCEPTION_INFO *pExceptInfo)
ADDRINT PIN_GetWindowsExceptionArgument (const EXCEPTION_INFO *pExceptInfo, UINT32 argNum)
string PIN_ExceptionToString (const EXCEPTION_INFO *pExceptInfo)
VOID LEVEL_PINCLIENT::PIN_RaiseException (const CONTEXT *ctxt, THREADID tid, const EXCEPTION_INFO *pExceptInfo)

Variables

GLOBALCONST UINT32 MAX_WINDOWS_EXCEPTION_ARGS = 5
+

Detailed Description

+This API allows the user to raise exceptions on behalf of the application and also analyze information associated with exceptions.

Typedef Documentation

+

+ + + + +
+ + + + +
typedef struct EXCEPTION_INFO EXCEPTION_INFO
+
+ + + + + +
+   + + +

+Structure that describes an exception.
+ The tool should not read or modify data members of this structure directly, but must treat the structure as logically opaque and use the Exception API functions to manage it.

+


Enumeration Type Documentation

+

+ + + + +
+ + + + +
enum EXCEPTION_CLASS
+
+ + + + + +
+   + + +

+Identifiers of exception classes. Exception class indicates the type of information (set of attributes) that accompanies exceptions of this class.

Enumerator:
+ + + + + + + + + + +
EXCEPTCLASS_NONE  +Reserved. No real exception belongs to this class.
EXCEPTCLASS_UNKNOWN  +Unknown exception.
EXCEPTCLASS_ACCESS_FAULT  +Memory access fault.
EXCEPTCLASS_INVALID_INS  +Invalid instruction.
EXCEPTCLASS_INT_ERROR  +Erroneous integer operation.
EXCEPTCLASS_FP_ERROR  +Erroneous floating point operation.
EXCEPTCLASS_MULTIPLE_FP_ERROR  +Received an ambiguous floating point exception.
EXCEPTCLASS_DEBUG  +Debugging trap.
EXCEPTCLASS_OS  +O/S specific exception.
+
+
+

+ + + + +
+ + + + +
enum EXCEPTION_CODE
+
+ + + + + +
+   + + +

+Identifiers for all possible exception codes. The codes below are divided into two groups. The first group list all the exceptions that can be raised by PIN_RaiseException(). Tools that want to be portable across operating systems should use codes from this first group when raising exceptions via PIN_RaiseException().

+When Pin receives an exception and reports it to the tool, it may report an exception in either the first or second group. This can happen, for example, when using the PIN_SafeCopyEx() function. When Pin can identify a specific exception, it reports a code from the first group. Sometimes, though, the host operating system does not provide enough information for Pin to determine the exact exception. In these cases, Pin reports a code from the second group (one of the EXCEPTCODE_RECEIVED_ codes). A tool can always re-raise one of these exceptions by passing it to PIN_RaiseException(). However, portable tools should avoid creating new exceptions using codes from the second group, because these codes are not supported on all operating systems.

Enumerator:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EXCEPTCODE_NONE  +Reserved. No real exception has this code.
EXCEPTCODE_ACCESS_INVALID_ADDRESS  +Virtual address not mapped (the #PF exception). Belongs to EXCEPTCLASS_ACCESS_FAULT.
EXCEPTCODE_ACCESS_DENIED  +Access not permitted due to protection violation (the #PF exception). Belongs to EXCEPTCLASS_ACCESS_FAULT.
EXCEPTCODE_ACCESS_INVALID_PAGE  +A #PF exception for some reason other than the cases above. Belongs to EXCEPTCLASS_ACCESS_FAULT.
EXCEPTCODE_ACCESS_MISALIGNED  +Misaligned memory reference (the #AC exception). Belongs to EXCEPTCLASS_ACCESS_FAULT.
EXCEPTCODE_ILLEGAL_INS  +Illegal instruction (the #UD exception). Belongs to EXCEPTCLASS_INVALID_INS.
EXCEPTCODE_PRIVILEGED_INS  +Privileged instruction (the #GP exception). Belongs to EXCEPTCLASS_INVALID_INS.
EXCEPTCODE_INT_DIVIDE_BY_ZERO  +Integer divide by zero (the #DE exception). Belongs to EXCEPTCLASS_INT_ERROR.
EXCEPTCODE_INT_OVERFLOW_TRAP  +Integer overflow trap (the #OF trap). Belongs to EXCEPTCLASS_INT_ERROR.
EXCEPTCODE_INT_BOUNDS_EXCEEDED  +Array index is out of bounds (#BR exception). Belongs to EXCEPTCLASS_INT_ERROR.
EXCEPTCODE_X87_DIVIDE_BY_ZERO  +x87 FPU divide by zero (the #MF/#Z exception). Belongs to EXCEPTCLASS_FP_ERROR.
EXCEPTCODE_X87_OVERFLOW  +x87 FPU overflow (the #MF/#O exception). Belongs to EXCEPTCLASS_FP_ERROR.
EXCEPTCODE_X87_UNDERFLOW  +x87 FPU underflow (the #MF/#U exception). Belongs to EXCEPTCLASS_FP_ERROR.
EXCEPTCODE_X87_INEXACT_RESULT  +x87 FPU inexact result (the #MF/#P exception). Belongs to EXCEPTCLASS_FP_ERROR.
EXCEPTCODE_X87_INVALID_OPERATION  +x87 FPU invalid operation (the #MF/#IA exception). Belongs to EXCEPTCLASS_FP_ERROR.
EXCEPTCODE_X87_DENORMAL_OPERAND  +x87 FPU denormal operand (the #MF/#D exception). Belongs to EXCEPTCLASS_FP_ERROR.
EXCEPTCODE_X87_STACK_ERROR  +x87 FPU stack overflowed or underflowed (the #MF/#IS exception). Belongs to EXCEPTCLASS_FP_ERROR.
EXCEPTCODE_SIMD_DIVIDE_BY_ZERO  +SIMD floating point divide by zero (the #XM/#Z exception). Belongs to EXCEPTCLASS_FP_ERROR.
EXCEPTCODE_SIMD_OVERFLOW  +SIMD floating point overflow (the #XM/#O exception). Belongs to EXCEPTCLASS_FP_ERROR.
EXCEPTCODE_SIMD_UNDERFLOW  +SIMD floating point underflow (the #XM/#U exception). Belongs to EXCEPTCLASS_FP_ERROR.
EXCEPTCODE_SIMD_INEXACT_RESULT  +SIMD floating point inexact result (the #XM/#P exception). Belongs to EXCEPTCLASS_FP_ERROR.
EXCEPTCODE_SIMD_INVALID_OPERATION  +SIMD invalid floating point operation (the #XM/#I exception). Belongs to EXCEPTCLASS_FP_ERROR.
EXCEPTCODE_SIMD_DENORMAL_OPERAND  +SIMD denormal floating point operand (the #XM/#D exception). Belongs to EXCEPTCLASS_FP_ERROR.
EXCEPTCODE_DBG_BREAKPOINT_TRAP  +Breakpoint trap (the #BP trap). Belongs to EXCEPTCLASS_DEBUG.
EXCEPTCODE_DBG_SINGLE_STEP_TRAP  +Trace trap (the #DB trap). Belongs to EXCEPTCLASS_DEBUG.
EXCEPTCODE_ACCESS_WINDOWS_GUARD_PAGE  +Guard page access (the Windows STATUS_GUARD_PAGE_VIOLATION exception). Belongs to EXCEPTCLASS_ACCESS_FAULT.
EXCEPTCODE_ACCESS_WINDOWS_STACK_OVERFLOW  +Thread stack overflowed (the Windows STATUS_STACK_OVERFLOW exception). Belongs to EXCEPTCLASS_ACCESS_FAULT.
EXCEPTCODE_WINDOWS  +Generic Windows exception. Belongs to EXCEPTCLASS_OS.
EXCEPTCODE_RECEIVED_UNKNOWN  +Unknown exception, cannot be re-raised. Belongs to EXCEPTCLASS_UNKNOWN.
EXCEPTCODE_RECEIVED_ACCESS_FAULT  +General memory access fault. Belongs to EXCEPTCLASS_ACCESS_FAULT.
EXCEPTCODE_RECEIVED_AMBIGUOUS_X87  +Ambiguous x87 FPU exception. PIN_GetFpErrorSet() tell which are possible. Belongs to EXCEPTCLASS_MULTIPLE_FP_ERROR.
EXCEPTCODE_RECEIVED_AMBIGUOUS_SIMD  +Ambiguous SIMD FPU exception. PIN_GetFpErrorSet() tell which are possible. Belongs to EXCEPTCLASS_MULTIPLE_FP_ERROR.
+
+
+

+ + + + +
+ + + + +
enum FAULTY_ACCESS_TYPE
+
+ + + + + +
+   + + +

+Types of faulty memory accesses that may cause an EXCEPTCLASS_ACCESS_FAULT exception

Enumerator:
+ + + + + +
FAULTY_ACCESS_TYPE_UNKNOWN  +Unknown access violation.
FAULTY_ACCESS_READ  +Read access.
FAULTY_ACCESS_WRITE  +Write access.
FAULTY_ACCESS_EXECUTE  +Execute access.
+
+
+

+ + + + +
+ + + + +
enum FPERROR
+
+ + + + + +
+   + + +

+Possible types of FPU exceptions.

Enumerator:
+ + + + + + + + +
FPERROR_DIVIDE_BY_ZERO  +The DE exception.
FPERROR_OVERFLOW  +The O exception.
FPERROR_UNDERFLOW  +The U exception.
FPERROR_INEXACT_RESULT  +The P exception.
FPERROR_INVALID_OPERATION  +The IA exception on x87 or I exception on SIMD.
FPERROR_DENORMAL_OPERAND  +The D exception.
FPERROR_X87_STACK_ERROR  +The IS exception on x87.
+
+
+


Function Documentation

+

+ + + + +
+ + + + + + + + + +
UINT32 PIN_CountWindowsExceptionArguments const EXCEPTION_INFO pExceptInfo  ) 
+
+ + + + + +
+   + + +

+Retrieve the number of Windows system exception's arguments from the specified EXCEPTION_INFO structure.

Parameters:
+ + +
[in] pExceptInfo pointer to the exception information structure to be queried
+
+
Returns:
The number of arguments associated with the system exception
+
Precondition:
The specified exception information should describe an EXCEPTCODE_WINDOWS exception.
+
Availability:
Mode: All
+ O/S: Windows
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
string PIN_ExceptionToString const EXCEPTION_INFO pExceptInfo  ) 
+
+ + + + + +
+   + + +

+Get a string representation of the specified EXCEPTION_INFO structure.

Parameters:
+ + +
[in] pExceptInfo pointer to the exception information structure to be stringized
+
+
Returns:
The string representation of this structure.
+
Availability:
Mode: All
+ O/S: All
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
ADDRINT PIN_GetExceptionAddress const EXCEPTION_INFO pExceptInfo  ) 
+
+ + + + + +
+   + + +

+Retrieve the address of the instruction that caused the specified exception.

Parameters:
+ + +
[in] pExceptInfo pointer to the exception information structure to be queried
+
+
Returns:
The address of the instruction that caused the exception
+
Availability:
Mode: All
+ O/S: All
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
EXCEPTION_CLASS PIN_GetExceptionClass EXCEPTION_CODE  exceptCode  ) 
+
+ + + + + +
+   + + +

+Given an exception code, return the corresponding exception class.

Parameters:
+ + +
[in] exceptCode exception code
+
+
Returns:
The class of the exception
+
Availability:
Mode: All
+ O/S: All
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
EXCEPTION_CODE PIN_GetExceptionCode const EXCEPTION_INFO pExceptInfo  ) 
+
+ + + + + +
+   + + +

+Retrieve the exception code from the specified EXCEPTION_INFO structure.

Parameters:
+ + +
[in] pExceptInfo pointer to the exception information structure to be queried
+
+
Returns:
The code of the exception
+
Availability:
Mode: All
+ O/S: All
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL PIN_GetFaultyAccessAddress const EXCEPTION_INFO pExceptInfo,
ADDRINT *  pAccessAddress
+
+ + + + + +
+   + + +

+Retrieve the address of the faulty memory access from the specified EXCEPTION_INFO structure.

Parameters:
+ + + +
[in] pExceptInfo pointer to the exception information structure to be queried
[out] pAccessAddress pointer to variable that receives the address of the faulty memory access, if known. If this pointer is NULL, the function only checks if the requested address is known but does not return its value.
+
+
Returns:
TRUE, if the address of the faulty memory access is known
+
Precondition:
The specified exception information should describe an EXCEPTCLASS_ACCESS_FAULT exception.
+
Availability:
Mode: All
+ O/S: All
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
FAULTY_ACCESS_TYPE PIN_GetFaultyAccessType const EXCEPTION_INFO pExceptInfo  ) 
+
+ + + + + +
+   + + +

+Retrieve the type of the faulty memory access from the specified EXCEPTION_INFO structure.

Parameters:
+ + +
[in] pExceptInfo pointer to the exception information structure to be queried
+
+
Returns:
The type of the faulty memory access that caused the exception
+
Precondition:
The specified exception information should describe an EXCEPTCLASS_ACCESS_FAULT exception.
+
Availability:
Mode: All
+ O/S: All
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
UINT32 PIN_GetFpErrorSet const EXCEPTION_INFO pExceptInfo  ) 
+
+ + + + + +
+   + + +

+Retrieve the set of floating point exception codes from the specified EXCEPTION_INFO structure. For EXCEPTCODE_RECEIVED_AMBIGUOUS_X87 and EXCEPTCODE_RECEIVED_AMBIGUOUS_SIMD exceptions, this is the set of possible causes for the exception.

Parameters:
+ + +
[in] pExceptInfo pointer to the exception information structure to be queried
+
+
Returns:
A bitmask of FPERROR values.
+
Precondition:
The specified exception information should describe an EXCEPTCLASS_MULTIPLE_FP_ERROR exception.
+
Availability:
Mode: All
+ O/S: All
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
ADDRINT PIN_GetWindowsExceptionArgument const EXCEPTION_INFO pExceptInfo,
UINT32  argNum
+
+ + + + + +
+   + + +

+Retrieve the specified Windows system exception's argument from the specified EXCEPTION_INFO structure.

Parameters:
+ + + +
[in] pExceptInfo pointer to the exception information structure to be queried
[in] argNum ordinal number of the argument to be retrieved, starting from zero. The value of this parameter should not exceed the value returned by the PIN_CountWindowsExceptionArguments function.
+
+
Returns:
The value of the specified system exception's argument
+
Precondition:
The specified exception information should describe an EXCEPTCODE_WINDOWS exception.
+
Availability:
Mode: All
+ O/S: Windows
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
UINT32 PIN_GetWindowsExceptionCode const EXCEPTION_INFO pExceptInfo  ) 
+
+ + + + + +
+   + + +

+Retrieve the Windows system exception code from the specified EXCEPTION_INFO structure.

Parameters:
+ + +
[in] pExceptInfo pointer to the exception information structure to be queried
+
+
Returns:
The system exception code
+
Precondition:
The specified exception information should describe an EXCEPTCODE_WINDOWS exception.
+
Availability:
Mode: All
+ O/S: Windows
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID PIN_InitAccessFaultInfo EXCEPTION_INFO pExceptInfo,
EXCEPTION_CODE  exceptCode,
ADDRINT  exceptAddress,
ADDRINT  accessAddress,
FAULTY_ACCESS_TYPE  accessType = FAULTY_ACCESS_TYPE_UNKNOWN
+
+ + + + + +
+   + + +

+Initialize the specified EXCEPTION_INFO structure with the given attributes of an EXCEPTCLASS_ACCESS_FAULT exception.

+

Parameters:
+ + + + + + +
[out] pExceptInfo pointer to the exception information structure to be initialized
[in] exceptCode exception code that specifies an EXCEPTCLASS_ACCESS_FAULT exception
[in] exceptAddress address of the instruction that caused the exception
[in] accessAddress address of the faulty memory access
[in] accessType type of the faulty memory access
+
+
Availability:
Mode: All
+ O/S: All
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID PIN_InitExceptionInfo EXCEPTION_INFO pExceptInfo,
EXCEPTION_CODE  exceptCode,
ADDRINT  exceptAddress
+
+ + + + + +
+   + + +

+Initialize the specified EXCEPTION_INFO structure with the given generic exception's attributes. Set "unknown" state for all exception-specific attributes.
+

+

Note:
This function is useful when the specified exception code does not require any additional exception information or such information is not available. The function can not be used to initialize EXCEPTCODE_WINDOWS exception information.
+ Use exception-specific initialization functions if an additional exception information is available/required.
+
Parameters:
+ + + + +
[out] pExceptInfo pointer to the exception information structure to be initialized
[in] exceptCode exception code. It could specify any exception other than EXCEPTCODE_WINDOWS
[in] exceptAddress address of the instruction that caused the exception
+
+
Availability:
Mode: All
+ O/S: All
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID PIN_InitWindowsExceptionInfo EXCEPTION_INFO pExceptInfo,
UINT32  sysExceptCode,
ADDRINT  exceptAddress,
UINT32  numArgs = 0,
const ADDRINT *  pArgs = 0
+
+ + + + + +
+   + + +

+Initialize the specified EXCEPTION_INFO structure with the given attributes of an EXCEPTCODE_WINDOWS exception.

+

Parameters:
+ + + + + + +
[out] pExceptInfo pointer to the exception information structure to be initialized
[in] sysExceptCode the system exception code
[in] exceptAddress address of the instruction that caused the exception
[in] numArgs number of arguments associated with the system exception. This is the number of elements in the <pArgs> array; it should not exceed the MAX_WINDOWS_EXCEPTION_ARGS value.
[in] pArgs pointer to an array of arguments associated with the system exception or NULL if the number of arguments is zero
+
+
Availability:
Mode: All
+ O/S: Windows
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_RaiseException const CONTEXT ctxt,
THREADID  tid,
const EXCEPTION_INFO pExceptInfo
+
+ + + + + +
+   + + +

+A tool can call this API to raise an emulated exception in the application's calling thread. Calling this API abandons the current analysis function and immediately starts executing at the application's exception handler (if there is one) or terminates the application (if there is no handler). This API does not return back to the calling analysis function.

+When raising a floating point exception, this method merely raises the exception. It does not set any bits in the floating point status register, nor does it check that the exception is enabled via the exception mask. If the tool wishes to examine or change the floating point status register bits, it may do so via the ctxt parameter.

+This function can be called from an analysis function or a replacement routine, but not from an instrumentation callback.

+

Parameters:
+ + + + +
[in] ctxt Register state to be reported as the application's context at the exception point.
[in] tid Id of the calling thread.
[in] pExceptInfo Pointer to the EXCEPTION_INFO structure that describes the exception. The exception information should be properly initialized.
+
+
Returns:
This API never returns.
+
Precondition:
All locks must be released before calling to this function.
+
Note:
The vm lock is obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Windows
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID PIN_SetExceptionAddress EXCEPTION_INFO pExceptInfo,
ADDRINT  exceptAddress
+
+ + + + + +
+   + + +

+Set the address of the instruction that caused the specified exception.

Parameters:
+ + + +
[in,out] pExceptInfo pointer to the exception information structure that receives the new exception address
[in] exceptAddress address of the instruction that caused the exception
+
+
+


Variable Documentation

+

+ + + + +
+ + + + +
GLOBALCONST UINT32 MAX_WINDOWS_EXCEPTION_ARGS = 5
+
+ + + + + +
+   + + +

+Maximum number of arguments that can be associated with an EXCEPTCODE_WINDOWS exception.

+


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__FILTER.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__FILTER.html new file mode 100644 index 0000000..f17707d --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__FILTER.html @@ -0,0 +1,119 @@ + + +Pin: FILTER + + + + +
+
+

FILTER

+ + + + + + + + +

Modules

 FILTER_RTN
 FILTER_LIB
 FILTER_MULTI
+

Detailed Description

+Filters are used to select static parts of the program to instrument. A user may only want to instrument specific routines or may way to ignore shared libraries.

+The example below can be foundin InstLibExamples/filter.cpp

+

#include <iomanip>
+#include <iostream>
+
+#include "pin.H"
+#include "instlib.H"
+
+using namespace INSTLIB;
+
+// Contains knobs to filter out things to instrument
+FILTER filter;
+
+ofstream out;
+KNOB<string> KnobOutputFile(KNOB_MODE_WRITEONCE, "pintool",
+    "o", "filter.out", "specify output file name");
+
+INT32 Usage()
+{
+    cerr <<
+        "This pin tool demonstrates use of FILTER to identify instrumentation points\n"
+        "\n";
+
+    cerr << KNOB_BASE::StringKnobSummary() << endl;
+    return -1;
+}
+
+VOID Trace(TRACE trace, VOID * val)
+{
+    if (!filter.SelectTrace(trace))
+        return;
+
+    for (BBL bbl = TRACE_BblHead(trace); BBL_Valid(bbl); bbl = BBL_Next(bbl))
+    {
+        for (INS ins = BBL_InsHead(bbl); INS_Valid(ins); ins = INS_Next(ins))
+        {
+            out << hex << setw(8) << INS_Address(ins) << " ";
+    
+            RTN rtn = TRACE_Rtn(trace);
+            if (RTN_Valid(rtn))
+            {
+                IMG img = SEC_Img(RTN_Sec(rtn));
+                if (IMG_Valid(img)) {
+                    out << IMG_Name(img) << ":" << RTN_Name(rtn) << " " ;
+                }
+            }
+    
+            out << INS_Disassemble(ins) << endl;
+        }
+    }
+}
+
+VOID Fini(INT32 code, VOID * junk)
+{
+    out.close();
+}
+
+// argc, argv are the entire command line, including pin -t <toolname> -- ...
+int main(int argc, char * argv[])
+{
+    if( PIN_Init(argc,argv) )
+    {
+        return Usage();
+    }
+
+    out.open(KnobOutputFile.Value().c_str());
+
+    TRACE_AddInstrumentFunction(Trace, 0);
+    
+    filter.Activate();
+
+    PIN_AddFiniFunction(Fini, NULL);
+    
+    // Start the program, never returns
+    PIN_StartProgram();
+    return 0;
+}
+
+
+

Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__FILTER__LIB.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__FILTER__LIB.html new file mode 100644 index 0000000..ab3b516 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__FILTER__LIB.html @@ -0,0 +1,100 @@ + + +Pin: FILTER_LIB + + + + +
+
+

FILTER_LIB
+ +[FILTER] +

+ + + + + + + + + +

Classes

class  INSTLIB::FILTER_LIB

Functions

VOID INSTLIB::FILTER_LIB::Activate ()
BOOL INSTLIB::FILTER_LIB::SelectTrace (TRACE trace)
+

Detailed Description

+Filter for selecting shared libraries Use -filter_no_shared_libs to ignore all shared libraries

Function Documentation

+

+ + + + +
+ + + + + + + + +
VOID INSTLIB::FILTER_LIB::Activate  )  [inline, inherited]
+
+ + + + + +
+   + + +

+Activate the filter. Must be done before PIN_StartProgram

+

+ + + + +
+ + + + + + + + + +
BOOL INSTLIB::FILTER_LIB::SelectTrace TRACE  trace  )  [inline, inherited]
+
+ + + + + +
+   + + +

+Return true if the filter is not active or the shared library that contains this trace is selected

+


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__FILTER__MULTI.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__FILTER__MULTI.html new file mode 100644 index 0000000..936c3cf --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__FILTER__MULTI.html @@ -0,0 +1,100 @@ + + +Pin: FILTER_MULTI + + + + +
+
+

FILTER_MULTI
+ +[FILTER] +

+ + + + + + + + + +

Classes

class  INSTLIB::FILTER

Functions

VOID INSTLIB::FILTER::Activate ()
BOOL INSTLIB::FILTER::SelectTrace (TRACE trace)
+

Detailed Description

+Filter that includes all the filters See FILTER_RTN, FILTER_LIB

Function Documentation

+

+ + + + +
+ + + + + + + + +
VOID INSTLIB::FILTER::Activate  )  [inline, inherited]
+
+ + + + + +
+   + + +

+Activate the filter. Must be done before PIN_StartProgram

+

+ + + + +
+ + + + + + + + + +
BOOL INSTLIB::FILTER::SelectTrace TRACE  trace  )  [inline, inherited]
+
+ + + + + +
+   + + +

+Return true if the filter is not active or the this trace is selected

+


Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__FILTER__RTN.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__FILTER__RTN.html new file mode 100644 index 0000000..0120194 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__FILTER__RTN.html @@ -0,0 +1,130 @@ + + +Pin: FILTER_RTN + + + + +
+
+

FILTER_RTN
+ +[FILTER] +

+ + + + + + + + + + + +

Classes

class  INSTLIB::FILTER_RTN

Functions

VOID INSTLIB::FILTER_RTN::Activate ()
BOOL INSTLIB::FILTER_RTN::SelectTrace (TRACE trace)
BOOL INSTLIB::FILTER_RTN::SelectRtn (RTN rtn)
+

Detailed Description

+Filter for selecting routines by name Use -filter_rtn <name> to select a routine. To select multiple routines, use more than one -filter_rtn.

Function Documentation

+

+ + + + +
+ + + + + + + + +
VOID INSTLIB::FILTER_RTN::Activate  )  [inline, inherited]
+
+ + + + + +
+   + + +

+Activate the filter. Must be done before PIN_StartProgram

+

+ + + + +
+ + + + + + + + + +
BOOL INSTLIB::FILTER_RTN::SelectRtn RTN  rtn  )  [inline, inherited]
+
+ + + + + +
+   + + +

+Return true if the filter is not active or the routine is selected

+

+ + + + +
+ + + + + + + + + +
BOOL INSTLIB::FILTER_RTN::SelectTrace TRACE  trace  )  [inline, inherited]
+
+ + + + + +
+   + + +

+Return true if the filter is not active or the routine that contains this trace is selected

+


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__FOLLOW__CHILD.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__FOLLOW__CHILD.html new file mode 100644 index 0000000..9b6f4b2 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__FOLLOW__CHILD.html @@ -0,0 +1,126 @@ + + +Pin: FOLLOW_CHILD + + + + +
+
+

FOLLOW_CHILD

+ + + + + + + + + + + +

Classes

class  INSTLIB::FOLLOW_CHILD

Functions

 INSTLIB::FOLLOW_CHILD::FOLLOW_CHILD ()
VOID INSTLIB::FOLLOW_CHILD::SetPrefix (CHAR *prefix[])
VOID INSTLIB::FOLLOW_CHILD::Activate ()
+

Detailed Description

+Instrumentation for injecting pin in child processes. Pin will always be in the child and parent after a fork. By default, pin will not be in a process after an exec system call. This tool intercepts the exec system call and inserts a Pin command line prefix so pin will also be present after exec.

Function Documentation

+

+ + + + +
+ + + + + + + + +
VOID INSTLIB::FOLLOW_CHILD::Activate  )  [inline, inherited]
+
+ + + + + +
+   + + +

+Activate, must be called before PIN_StartProgram

+

+ + + + +
+ + + + + + + + +
INSTLIB::FOLLOW_CHILD::FOLLOW_CHILD  )  [inline, inherited]
+
+ + + + + +
+   + + +

+Constructor

+

+ + + + +
+ + + + + + + + + +
VOID INSTLIB::FOLLOW_CHILD::SetPrefix CHAR *  prefix[]  )  [inline, inherited]
+
+ + + + + +
+   + + +

+Set the prefix to be used for the next child. The prefix is the full pathname to the pin binary followed by everything up to and including the --. It is stored as array of pointers to tokens. Most users can simply use the argv array that is passed to the main of the tool.

+


Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__ICOUNT.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__ICOUNT.html new file mode 100644 index 0000000..3bedc0e --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__ICOUNT.html @@ -0,0 +1,215 @@ + + +Pin: ICOUNT + + + + +
+
+

ICOUNT

+ + + + + + + + + + + + + + + + +

Classes

class  INSTLIB::ICOUNT

Enumerations

enum  INSTLIB::ICOUNT::mode {
+  ModeInactive = -1, +
+  INSTLIB::ICOUNT::ModeNormal = 0, +
+  INSTLIB::ICOUNT::ModeBoth +
+ }

Functions

UINT64 INSTLIB::ICOUNT::Count (THREADID tid=0) const
VOID INSTLIB::ICOUNT::SetCount (UINT64 count, THREADID tid=0)
mode INSTLIB::ICOUNT::Mode () const
VOID INSTLIB::ICOUNT::Activate (mode m=ModeNormal)
+

Detailed Description

+Instrumentation for counting instruction execution

Enumeration Type Documentation

+

+ + + + +
+ + + + +
enum INSTLIB::ICOUNT::mode [inherited]
+
+ + + + + +
+   + + +

+The mode used for counting REP prefixed instructions.

Enumerator:
+ + + +
ModeNormal  +Count all instructions, each REP "iteration" adds 1
ModeBoth  +Provide both the normal count and a count in which REP prefixed instructions are only counted once.
+
+
+


Function Documentation

+

+ + + + +
+ + + + + + + + + +
VOID INSTLIB::ICOUNT::Activate mode  m = ModeNormal  )  [inline, inherited]
+
+ + + + + +
+   + + +

+Activate the counter, must be called before PIN_StartProgram.

Parameters:
+ + +
[in] mode Determine the way in which REP prefixed operations are counted. By default (ICOUNT::ModeNormal), REP prefixed instructions are counted as if REP is an implicit loop. By passing ICOUNT::ModeRepsCountedOnlyOnce you can have the counter treat each REP as only one dynamic instruction.
+
+
+

+ + + + +
+ + + + + + + + + +
UINT64 INSTLIB::ICOUNT::Count THREADID  tid = 0  )  const [inline, inherited]
+
+ + + + + +
+   + + +

+

Returns:
Total number of instructions executed. (But see mode for what this means).
+
+

+ + + + +
+ + + + + + + + +
mode INSTLIB::ICOUNT::Mode  )  const [inline, inherited]
+
+ + + + + +
+   + + +

+

Returns:
the mode of the ICOUNT object.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID INSTLIB::ICOUNT::SetCount UINT64  count,
THREADID  tid = 0
[inline, inherited]
+
+ + + + + +
+   + + +

+Set the current count

+


Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__IMG__BASIC__API.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__IMG__BASIC__API.html new file mode 100644 index 0000000..adac021 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__IMG__BASIC__API.html @@ -0,0 +1,1354 @@ + + +Pin: IMG: Image Object + + + + +
+
+

IMG: Image Object

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Typedefs

typedef VOID(* LEVEL_PINCLIENT::IMAGECALLBACK )(IMG, VOID *)

Enumerations

enum  LEVEL_CORE::IMG_TYPE {
+  IMG_TYPE_INVALID, +
+  LEVEL_CORE::IMG_TYPE_STATIC, +
+  LEVEL_CORE::IMG_TYPE_SHARED, +
+  LEVEL_CORE::IMG_TYPE_SHAREDLIB, +
+  LEVEL_CORE::IMG_TYPE_RELOCATABLE, +
+  LEVEL_CORE::IMG_TYPE_DYNAMIC_CODE, +
+  LEVEL_CORE::IMG_TYPE_API_CREATED, +
+  IMG_TYPE_LAST +
+ }

Functions

IMG LEVEL_PINCLIENT::IMG_Next (IMG img)
IMG LEVEL_PINCLIENT::IMG_Prev (IMG img)
IMG LEVEL_PINCLIENT::IMG_Invalid ()
BOOL LEVEL_PINCLIENT::IMG_Valid (IMG img)
SEC LEVEL_PINCLIENT::IMG_SecHead (IMG img)
SEC LEVEL_PINCLIENT::IMG_SecTail (IMG img)
SYM LEVEL_PINCLIENT::IMG_RegsymHead (IMG img)
ADDRINT LEVEL_PINCLIENT::IMG_Entry (IMG img)
const string & LEVEL_PINCLIENT::IMG_Name (IMG img)
ADDRINT LEVEL_PINCLIENT::IMG_Gp (IMG img)
ADDRINT LEVEL_PINCLIENT::IMG_LoadOffset (IMG img)
ADDRINT LEVEL_PINCLIENT::IMG_LowAddress (IMG img)
ADDRINT LEVEL_PINCLIENT::IMG_HighAddress (IMG img)
ADDRINT LEVEL_PINCLIENT::IMG_StartAddress (IMG img)
USIZE LEVEL_PINCLIENT::IMG_SizeMapped (IMG img)
IMG_TYPE LEVEL_PINCLIENT::IMG_Type (IMG img)
BOOL LEVEL_PINCLIENT::IMG_IsMainExecutable (IMG x)
BOOL LEVEL_PINCLIENT::IMG_IsInterpreter (IMG x)
BOOL LEVEL_PINCLIENT::IMG_IsStaticExecutable (IMG x)
BOOL LEVEL_PINCLIENT::IMG_IsVDSO (IMG img)
UINT32 LEVEL_PINCLIENT::IMG_NumRegions (IMG img)
ADDRINT LEVEL_PINCLIENT::IMG_RegionHighAddress (IMG img, UINT32 n)
ADDRINT LEVEL_PINCLIENT::IMG_RegionLowAddress (IMG img, UINT32 n)
UINT32 LEVEL_PINCLIENT::IMG_Id (IMG x)
IMG LEVEL_PINCLIENT::IMG_FindImgById (UINT32 id)
IMG LEVEL_PINCLIENT::IMG_FindByAddress (ADDRINT address)
PIN_CALLBACK LEVEL_PINCLIENT::IMG_AddInstrumentFunction (IMAGECALLBACK fun, VOID *v)
PIN_CALLBACK LEVEL_PINCLIENT::IMG_AddUnloadFunction (IMAGECALLBACK fun, VOID *v)
IMG LEVEL_PINCLIENT::IMG_Open (const string &filename)
VOID LEVEL_PINCLIENT::IMG_Close (IMG img)
IMG LEVEL_PINCLIENT::APP_ImgHead ()
IMG LEVEL_PINCLIENT::APP_ImgTail ()
+

Detailed Description

+An IMG represents all the data structures corresponding to a binary (executable). Can be accessed at instrumentation time and analysis time. Note: Shared libraries are also represented by the IMG abstraction. Moreover, the IMG objects are created in a lazy fashion. Only if a shared library is loaded and IMG is created. Over the lifetime of a process the number IMG objects created may hence increase.
+ APIs from this group are available in any thread, including any internal thread spawned by the tool.

+Example tools:

+Detecting the Loading and Unloading of Images (Image Instrumentation)

+Iteration idioms:

+

    // Visit every loaded image
+    for( IMG img= APP_ImgHead(); IMG_Valid(img); img = IMG_Next(img) )
+

Typedef Documentation

+

+ + + + +
+ + + + +
typedef VOID(* LEVEL_PINCLIENT::IMAGECALLBACK)(IMG, VOID *)
+
+ + + + + +
+   + + +

+Type of function to be called when an image is loaded

+


Enumeration Type Documentation

+

+ + + + +
+ + + + +
enum LEVEL_CORE::IMG_TYPE
+
+ + + + + +
+   + + +

+

Enumerator:
+ + + + + + + +
IMG_TYPE_STATIC  +Main image, linked with -static.
IMG_TYPE_SHARED  +Main image, linked against shared libraries.
IMG_TYPE_SHAREDLIB  +Shared library or main image linked with -pie.
IMG_TYPE_RELOCATABLE  +Relocatble object (.o file).
IMG_TYPE_DYNAMIC_CODE  +Container for all dynamically created functions.
IMG_TYPE_API_CREATED  +Artificial image created by IMG_CreateAt ().
+
+
+


Function Documentation

+

+ + + + +
+ + + + + + + + +
IMG LEVEL_PINCLIENT::APP_ImgHead  ) 
+
+ + + + + +
+   + + +

+

Returns:
The first image loaded into memory
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + +
IMG LEVEL_PINCLIENT::APP_ImgTail  ) 
+
+ + + + + +
+   + + +

+

Returns:
The last image loaded into memory
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
PIN_CALLBACK LEVEL_PINCLIENT::IMG_AddInstrumentFunction IMAGECALLBACK  fun,
VOID *  v
+
+ + + + + +
+   + + +

+Use this to register a call back to catch the loading of an image

Parameters:
+ + + +
fun Instrumentation function for images, it is passed an image and v
v the value of to pass to fun when an image is loaded
+
+
Returns:
PIN_CALLBACK A handle to a callback that can be used to further modify this callback's properties
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
PIN_CALLBACK LEVEL_PINCLIENT::IMG_AddUnloadFunction IMAGECALLBACK  fun,
VOID *  v
+
+ + + + + +
+   + + +

+Register fun as a call back to be used when an image is unloaded. This is not an instrumentation function--it doesn't make sense to instrument a function when it removed from memory.

Parameters:
+ + + +
fun passed an image and v when an image is unloaded
v the value to pass to fun when an image is unloaded
+
+
Returns:
PIN_CALLBACK A handle to a callback that can be used to further modify this callback's properties
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::IMG_Close IMG  img  ) 
+
+ + + + + +
+   + + +

+Close the open image.

+

Parameters:
+ + +
[in] img The IMG that was previously opened.
+
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
ADDRINT LEVEL_PINCLIENT::IMG_Entry IMG  img  ) 
+
+ + + + + +
+   + + +

+

Returns:
Address of first instruction executed when image is loaded
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
IMG LEVEL_PINCLIENT::IMG_FindByAddress ADDRINT  address  ) 
+
+ + + + + +
+   + + +

+Find image by address. For each image, check if the address is within the mapped memory region of one of its segments.

Returns:
IMG object, valid or invalid
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
IMG LEVEL_PINCLIENT::IMG_FindImgById UINT32  id  ) 
+
+ + + + + +
+   + + +

+Find image by Id

Returns:
IMG object, valid or invalid
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
ADDRINT LEVEL_PINCLIENT::IMG_Gp IMG  img  ) 
+
+ + + + + +
+   + + +

+

Returns:
Global pointer (GP) of image, if a GP is used to address global data
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
ADDRINT LEVEL_PINCLIENT::IMG_HighAddress IMG  img  ) 
+
+ + + + + +
+   + + +

+Tells the highest address of any code or data loaded by the image. This is the address of the last byte loaded by the image.

+

Remarks:
If the image is split in memory, regions from other images might be mapped between its regions. In this case, the function will return the high address of the text segment. See IMG_NumRegions.
+
Parameters:
+ + +
[in] img The Pin image handle.
+
+
Returns:
The image's highest address or the text segment high address if the image is split.
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_PINCLIENT::IMG_Id IMG  x  ) 
+
+ + + + + +
+   + + +

+Returns a unique ID for the image. If an image is unloaded, the ID is not reused for a different image. If an image is unloaded and the same one is loaded back, the ID is different.

Returns:
Unique ID for the image.
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + +
IMG LEVEL_PINCLIENT::IMG_Invalid  ) 
+
+ + + + + +
+   + + +

+

Returns:
Used to indicate no image
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::IMG_IsInterpreter IMG  x  ) 
+
+ + + + + +
+   + + +

+On operating systems that have the concept of loader image. (i.e. another program that is resposible to load the application), this function return TRUE for the image of the loader. In operating system that don't have the concept of loader, this function returns FALSE on all images.

+

Parameters:
+ + +
[in] img The Pin image handle.
+
+
Returns:
TRUE if this is the image of the application's loader (interpreter).
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::IMG_IsMainExecutable IMG  x  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE if this is the main executable of an application
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::IMG_IsStaticExecutable IMG  x  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE if this is the static executable
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::IMG_IsVDSO IMG  img  ) 
+
+ + + + + +
+   + + +

+On Linux this function return TRUE for the image of the VDSO. On other operating systems return FALSE for all images.

+

Parameters:
+ + +
[in] img The Pin image handle.
+
+
Returns:
TRUE if this is the VDSO image.
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
ADDRINT LEVEL_PINCLIENT::IMG_LoadOffset IMG  img  ) 
+
+ + + + + +
+   + + +

+

Returns:
Offset from the image's link-time address to its load-time address.
+
Availability:
Mode: JIT & Probe
+ O/S: Linux
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
ADDRINT LEVEL_PINCLIENT::IMG_LowAddress IMG  img  ) 
+
+ + + + + +
+   + + +

+Tells the lowest address of any code or data loaded by the image.

+

Remarks:
If the image is split in memory, regions from other images might be mapped between its regions. In this case, the function will return the low address of the text segment. See IMG_NumRegions.
+
Parameters:
+ + +
[in] img The Pin image handle.
+
+
Returns:
The image's lowest address or the text segment low address if the image is split.
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
const string& LEVEL_PINCLIENT::IMG_Name IMG  img  ) 
+
+ + + + + +
+   + + +

+

Returns:
Fully qualified actual file name of image. Image names are encoded in UTF8 (a superset of ASCII), this is supported for Linux (only for locales encoded in UTF8) and Windows
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
IMG LEVEL_PINCLIENT::IMG_Next IMG  img  ) 
+
+ + + + + +
+   + + +

+

Returns:
Of the list of currently loaded images in memory it returns the image loaded after image x, or IMG_Invalid() if x is the last image
+Skip shadow image (vdso or dynamic code)

+

Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_PINCLIENT::IMG_NumRegions IMG  img  ) 
+
+ + + + + +
+   + + +

+

Returns:
number of consecutive regions of the image in memory
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
IMG LEVEL_PINCLIENT::IMG_Open const string &  filename  ) 
+
+ + + + + +
+   + + +

+Allows one to open an image and browse it statically. There can only be one image open at a time. File names are encoded in UTF8 (a superset of ASCII), this is supported for Linux (only for locales encoded in UTF8) and Windows.

+

Parameters:
+ + +
[in] filename The image file name.
+
+
Returns:
The opened image, or IMG_INVALID() if the image cannot be opened.
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
IMG LEVEL_PINCLIENT::IMG_Prev IMG  img  ) 
+
+ + + + + +
+   + + +

+

Returns:
Of the list of currently loaded images in memory it returns the image loaded prior to image x, or IMG_Invalid() if x is the first image
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
ADDRINT LEVEL_PINCLIENT::IMG_RegionHighAddress IMG  img,
UINT32  n
+
+ + + + + +
+   + + +

+

Returns:
the high address of the n'th region
+
Remarks:
n starts at 0
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
ADDRINT LEVEL_PINCLIENT::IMG_RegionLowAddress IMG  img,
UINT32  n
+
+ + + + + +
+   + + +

+

Returns:
the low address of the n'th region
+
Remarks:
n starts at 0
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
SYM LEVEL_PINCLIENT::IMG_RegsymHead IMG  img  ) 
+
+ + + + + +
+   + + +

+

Returns:
First regular symbol in image
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
SEC LEVEL_PINCLIENT::IMG_SecHead IMG  img  ) 
+
+ + + + + +
+   + + +

+

Returns:
First section in image
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
SEC LEVEL_PINCLIENT::IMG_SecTail IMG  img  ) 
+
+ + + + + +
+   + + +

+

Returns:
Last section in image
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
USIZE LEVEL_PINCLIENT::IMG_SizeMapped IMG  img  ) 
+
+ + + + + +
+   + + +

+Tells the size of the raw image mapped by Pin, including the size of the image's symbolic information, which is not normally mapped by the application. Use this with IMG_StartAddress() to find the entire memory range of the raw image mapped by Pin.

+Note, this does not give the address range of the image from the application's perspective. To get that, use IMG_LowAddress() and IMG_HighAddress().

+On Linux, the file is mapped in image-load callback or after IMG_Open. In other cases the IMG_SizeMapped returns 0.

+

Parameters:
+ + +
[in] img The Pin image handle.
+
+
Returns:
Size (bytes) of the raw image file mapped by Pin.
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
ADDRINT LEVEL_PINCLIENT::IMG_StartAddress IMG  img  ) 
+
+ + + + + +
+   + + +

+On Windows, the whole image has been loaded by system loader at once. IMG_StartAddress() gives the pointer to the image, mapped by loader. If you are working inside image-load callback - IMG_LowAddress() and IMG_StartAddress() return the same value.

+On Unix, the loader maps only portions of the image file that contain code and data. Additionally, Pin maps the whole image file for parsing. IMG_StartAddress() returns a pointer to the memory mapped file. After return form image-load callback the whole image file is being unmapped and the pointer becomes invalid. The IMG_StartAddress() returns 0.

+Note, On Unix, the IMG_LowAddress() and IMG_StartAddress() return different values.

+On IMG_Open(), Pin maps the whole image into memory and the pointer is valid until IMG_Close()

+

Parameters:
+ + +
[in] img The Pin image handle.
+
+
Returns:
Pointer to the start of the raw image file.
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
IMG_TYPE LEVEL_PINCLIENT::IMG_Type IMG  img  ) 
+
+ + + + + +
+   + + +

+

Returns:
Image type
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::IMG_Valid IMG  img  ) 
+
+ + + + + +
+   + + +

+

Returns:
True if x is not IMG_Invalid()
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__INSTLIB.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__INSTLIB.html new file mode 100644 index 0000000..e81873f --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__INSTLIB.html @@ -0,0 +1,35 @@ + + +Pin: Instrumentation for Common Instrumentation Tasks + + + + +
+
+

Instrumentation for Common Instrumentation Tasks

+ +
+Instlib provides instrumentation for some common tasks. It is implemented as classes that automatically insert the instrumentation so it can be used with tools without having to knows the details of the implementation.

+

    +
  • Icount Instruction counting
  • Alarms Triggers an event
  • Controller Identify start and stop points for instrumentation
  • Filter Statically filter parts of a program to instrument
  • Debugger Shell Extended debugger commands when using -appdebug.
+
Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__INST__ARGS.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__INST__ARGS.html new file mode 100644 index 0000000..03b2044 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__INST__ARGS.html @@ -0,0 +1,620 @@ + + +Pin: Instrumentation arguments + + + + +
+
+

Instrumentation arguments

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Classes

struct  PIN_MEM_ACCESS_INFO
struct  PIN_MULTI_MEM_ACCESS_INFO
union  PIN_MEM_TRANS_FLAGS

Defines

#define PIN_FAST_ANALYSIS_CALL

Typedefs

typedef IARGLIST_CLASS * IARGLIST

Enumerations

enum  IPOINT {
+  IPOINT_INVALID, +
+  IPOINT_BEFORE, +
+  IPOINT_AFTER, +
+  IPOINT_ANYWHERE, +
+  IPOINT_TAKEN_BRANCH +
+ }
enum  CALL_ORDER {
+  CALL_ORDER_FIRST = 100, +
+  CALL_ORDER_DEFAULT = 200, +
+  CALL_ORDER_LAST = 300 +
+ }
enum  IARG_TYPE {
+  IARG_INVALID, +
+  IARG_ADDRINT, +
+  IARG_PTR, +
+  IARG_BOOL, +
+  IARG_UINT32, +
+  IARG_UINT64, +
+  IARG_INST_PTR, +
+  IARG_REG_VALUE, +
+  IARG_REG_REFERENCE, +
+  IARG_REG_CONST_REFERENCE, +
+  IARG_MEMORYREAD_EA, +
+  IARG_MEMORYREAD2_EA, +
+  IARG_MEMORYWRITE_EA, +
+  IARG_MEMORYREAD_SIZE, +
+  IARG_MEMORYWRITE_SIZE, +
+  IARG_MEMORYREAD_PTR, +
+  IARG_MEMORYREAD2_PTR, +
+  IARG_MEMORYWRITE_PTR, +
+  IARG_MEMORYOP_PTR, +
+  IARG_MULTI_MEMORYACCESS_EA, +
+  IARG_EXPLICIT_MEMORY_EA, +
+  IARG_BRANCH_TAKEN, +
+  IARG_BRANCH_TARGET_ADDR, +
+  IARG_FALLTHROUGH_ADDR, +
+  IARG_EXECUTING, +
+  IARG_FIRST_REP_ITERATION, +
+  IARG_PREDICATE, +
+  IARG_STACK_VALUE, +
+  IARG_STACK_REFERENCE, +
+  IARG_MEMORY_VALUE, +
+  IARG_MEMORY_REFERENCE, +
+  IARG_SYSCALL_NUMBER, +
+  IARG_SYSARG_REFERENCE, +
+  IARG_SYSARG_VALUE, +
+  IARG_SYSRET_VALUE, +
+  IARG_SYSRET_ERRNO, +
+  IARG_FUNCARG_CALLSITE_REFERENCE, +
+  IARG_FUNCARG_CALLSITE_VALUE, +
+  IARG_FUNCARG_ENTRYPOINT_REFERENCE, +
+  IARG_FUNCARG_ENTRYPOINT_VALUE, +
+  IARG_FUNCRET_EXITPOINT_REFERENCE, +
+  IARG_FUNCRET_EXITPOINT_VALUE, +
+  IARG_RETURN_IP, +
+  IARG_ORIG_FUNCPTR, +
+  IARG_PROTOTYPE, +
+  IARG_THREAD_ID, +
+  IARG_CONTEXT, +
+  IARG_CONST_CONTEXT, +
+  IARG_PARTIAL_CONTEXT, +
+  IARG_PRESERVE, +
+  IARG_RETURN_REGS, +
+  IARG_CALL_ORDER, +
+  IARG_IARGLIST, +
+  IARG_FAST_ANALYSIS_CALL, +
+  IARG_MEMORYOP_EA, +
+  IARG_MEMORYOP_MASKED_ON, +
+  IARG_TSC, +
+  IARG_FILE_NAME, +
+  IARG_LINE_NO, +
+  IARG_LAST +
+ }
enum  PIN_MEMOP_ENUM {
+  PIN_MEMOP_LOAD, +
+  PIN_MEMOP_STORE +
+ }

Functions

VOID LEVEL_PINCLIENT::IARGLIST_AddArguments (IARGLIST args,...)
IARGLIST LEVEL_PINCLIENT::IARGLIST_Alloc ()
VOID LEVEL_PINCLIENT::IARGLIST_Free (IARGLIST args)

Variables

+GLOBALCONST int MAX_MULTI_MEMOPS = 16
+

Detailed Description

+See INS_InsertCall.

+IARG_END

+All argument lists must end with IARG_END. Please see the Examples for further information.

+Probe Mode Considerations

+When IARG_CONTEXT is used in probe mode, it is impossible to get certain register values correct. The values in these registers are meaningless when IARG_CONTEXT is used in probe mode:

+REG_SEG_GS_BASE
+ REG_SEG_FS_BASE
+ REG_INST_G0 - REG_INST_G19
+

+Using IARG_RETURN_REGS, IARG_REG_REFERENCE, IARG_CONST_CONTEXT and IARG_PARTIAL_CONTEXT is not supported in Probe mode.

+Inlining Considerations

+The IARG_CONTEXT, IARG_CONST_CONTEXT and IARG_PARTIAL_CONTEXT IARG_TYPE cannot be inlined. Using these CONTEXT IARG_TYPE will prevent the analysis routine from being inlined.

Define Documentation

+

+ + + + +
+ + + + +
#define PIN_FAST_ANALYSIS_CALL
+
+ + + + + +
+   + + +

+Use a faster linkage for calls to analysis functions. Add PIN_FAST_ANALYSIS_CALL to the declaration between the return type and the function name. You must also add IARG_FAST_ANALYSIS_CALL to the InsertCall. For example:

+VOID PIN_FAST_ANALYSIS_CALL docount(int j);

+INS_InsertCall(ins, IPOINT_BEFORE, AFUNPTR(docount), IARG_FAST_ANALYSIS_CALL, IARG_UINT32, 3, IARG_END);

+You will gain the most benefit from using PIN_FAST_ANALYSIS_CALL if

    +
  • you are instrumenting a 32 bit process (the 64 bit calling conventions already pass arguments in registers)
  • your analysis routine is not inlined (if it is inlined there is no call to optimize)
  • your analysis routine is relatively small (if it is large the extra overhead imposed by the poor calling convention won't be significant anyway)
+
+


Typedef Documentation

+

+ + + + +
+ + + + +
typedef IARGLIST_CLASS* IARGLIST
+
+ + + + + +
+   + + +

+List of IARG_TYPE elements. See IARGLIST_Alloc() for its use.

+


Enumeration Type Documentation

+

+ + + + +
+ + + + +
enum CALL_ORDER
+
+ + + + + +
+   + + +

+Predefined values for IARG_CALL_ORDER. Controls the order of analysis call invocations when an instruction has multiple analysis calls. CALL_ORDER_DEFAULT is the default call order when IARG_CALL_ORDER is not specified. You can use integral values relative to the predefined values to have a fine-grained control over the instrumentation order (e.g., CALL_ORDER_DEFAULT + 5, CALL_ORDER_LAST - 10, etc).

+Pin guarantees that multiple analysis calls with the same CALL_ORDER on the same instruction, added in the context of the same instrumentation callback (e.g,. INS_INSTRUMENT_CALLBACK), will be invoked according to their insertion order. For all other cases, the invocation order for analysis calls with the same CALL_ORDER on the same instruction depends on the implementation and may change without notice.

Enumerator:
+ + + + +
CALL_ORDER_FIRST  +Execute this call first. Value is 100.
CALL_ORDER_DEFAULT  +Default when IARG_CALL_ORDER is not specified. Value is 200.
CALL_ORDER_LAST  +Execute this call last. Value is 300.
+
+
+

+ + + + +
+ + + + +
enum IARG_TYPE
+
+ + + + + +
+   + + +

+Determines the arguments that are passed to the analysis call. All argument lists must end with IARG_END.

Enumerator:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IARG_ADDRINT  +Type: ADDRINT. Constant value (additional arg required).
IARG_PTR  +Type: "VOID *". Constant value (additional pointer arg required).
IARG_BOOL  +Type: BOOL. Constant (additional BOOL arg required).
IARG_UINT32  +Type: UINT32. Constant (additional integer arg required).
IARG_UINT64  +Type: UINT64. Constant (additional UINT64 arg required).
IARG_INST_PTR  +Type: ADDRINT. The address of the instrumented instruction. This value does not change at IPOINT_AFTER. This is simply shorthand for IARG_ADDRINT, INS_Address(ins).
IARG_REG_VALUE  +Type: ADDRINT for integer registers. Value of a register (additional register arg required) REG: Register Object Basically, this cannot be used to retrieve the value of registers whose size is larger than ADDRINT (e.g. x87 FPU/XMM/YMM/ZMM/opmask) or registeres which are not architectural (REG_PIN_*), but there are some exceptions to this rule.
IARG_REG_REFERENCE  +Type: "@ref PIN_REGISTER *". Pointer to union holding register contents. Registers are updated. Not supported in Probe mode or with the Buffering APIs.
IARG_REG_CONST_REFERENCE  +Type: "@ref PIN_REGISTER *". Pointer to union holding register contents. Registers are not updated. Not supported with the Buffering APIs.
IARG_MEMORYREAD_EA  +Type: ADDRINT. Effective address of a memory read, only valid if INS_IsMemoryRead is true and at IPOINT_BEFORE.
IARG_MEMORYREAD2_EA  +Type: ADDRINT. Effective address of a 2nd memory read (e.g. 2nd operand in cmps on ia32), only valid at IPOINT_BEFORE.
IARG_MEMORYWRITE_EA  +Type: ADDRINT. Effective address of a memory write, only valid at IPOINT_BEFORE.
IARG_MEMORYREAD_SIZE  +Type: UINT32. Size in bytes of memory read. This IARG is applicable for all instructions for which INS_hasKnownMemorySize returns TRUE. For other instructions e.g. vgather/vscater see IARG_MULTI_MEMORYACCESS_EA. For the varying memory size read instruction, XRSTOR, the size is based on the XSAVE area header. If the header indicates compact mode it will provide the compact size. Otherwise it will provide the standard size. The minimum size for the XRSTOR instruction (not including FXRSTOR) is 576 (i.e the XSAVE area size up to and including the header).
IARG_MEMORYWRITE_SIZE  +Type: UINT32. Size in bytes of memory write. This IARG is applicable for all instructions for which INS_hasKnownMemorySize returns TRUE. For other instructions e.g. vgather/vscater see IARG_MULTI_MEMORYACCESS_EA. For varying size memory write instructions, the supported instructions are the XSAVE family of instructions. For XSAVE, the size of the XSAVE area used is based on user request and supported features in the machine. This will provide the exact size used. For XSAVEOPT, the size is calculated the same as if XSAVE was used. This may provide in some cases an upper bound to the actual used memory. For XSAVEC, in IPOINT_BEFORE the size is calculated based on user request only. This may provide in some cases an upper bound to the actual size. If used in IPOINT_AFTER it will provide the exact compact size as defined in the XSAVE area header. The minimum size for the XSAVE family write instructions (not including FXSAVE) is 576 (i.e the XSAVE area size up to and including the header).
IARG_MEMORYREAD_PTR  +Same as IARG_MEMORYREAD_EA, but allows registering a MEMORY_ADDR_TRANS_CALLBACK.
IARG_MEMORYREAD2_PTR  +Same as IARG_MEMORYREAD2_EA, but allows registering a MEMORY_ADDR_TRANS_CALLBACK.
IARG_MEMORYWRITE_PTR  +Same as IARG_MEMORYWRITE_EA, but allows registering a MEMORY_ADDR_TRANS_CALLBACK.
IARG_MEMORYOP_PTR  +Same as IARG_MEMORYOP_EA, but allows registering a MEMORY_ADDR_TRANS_CALLBACK.
IARG_MULTI_MEMORYACCESS_EA  +Type: PIN_MULTI_MEM_ACCESS_INFO* the addresses read by the various vgather* instructions.
IARG_EXPLICIT_MEMORY_EA  +Type: ADDRINT. Effective address of the explicit memory operand. Useful for instrumenting LEA instructions.
IARG_BRANCH_TAKEN  +Type: BOOL. Non zero if a branch is taken.
IARG_BRANCH_TARGET_ADDR  +Type: ADDRINT. Target address of this branch instruction, only valid if INS_IsBranchOrCall is true.
IARG_FALLTHROUGH_ADDR  +Type: ADDRINT. Fall through address of this instruction.
IARG_EXECUTING  +Type: BOOL. False if the instruction will not be executed because of predication, otherwise true.
IARG_FIRST_REP_ITERATION  +Type: BOOL. True if INS_HasRealRep(ins) and this the first iteration of the REP sequence, otherwise false.
IARG_PREDICATE  +Reserved. Do not use.
IARG_STACK_VALUE  +Reserved. Do not use.
IARG_STACK_REFERENCE  +Reserved. Do not use.
IARG_MEMORY_VALUE  +Reserved. IA32(e) only.
IARG_MEMORY_REFERENCE  +Reserved. IA32(e) only.
IARG_SYSCALL_NUMBER  +Type: ADDRINT. System call number. Valid for IPOINT_BEFORE at the system call instruction.
IARG_SYSARG_REFERENCE  +Type: "ADDRINT *". Pointer to system call argument n. Valid for IPOINT_BEFORE at the system call instruction. (First argument number is 0.).
IARG_SYSARG_VALUE  +Type: ADDRINT. System call argument n. Valid for IPOINT_BEFORE at the system call instruction. (First argument number is 0.).
IARG_SYSRET_VALUE  +Type: ADDRINT. System call return value. On Linux and MacOS the value is -1 if the system call failed. (IPOINT_AFTER only).
IARG_SYSRET_ERRNO  +Type: INT32. System call errno (IPOINT_AFTER_only).
IARG_FUNCARG_CALLSITE_REFERENCE  +Type: "ADDRINT *". Pointer to integer argument n. Valid only at the call site. (First argument number is 0.)
IARG_FUNCARG_CALLSITE_VALUE  +Type: ADDRINT. Integer argument n. Valid only at the call site. (First argument number is 0.)
IARG_FUNCARG_ENTRYPOINT_REFERENCE  +Type: "ADDRINT *". Pointer to integer argument n. Valid only at the entry point of a routine. (First argument number is 0.)
IARG_FUNCARG_ENTRYPOINT_VALUE  +Type: ADDRINT. Integer argument n. Valid only at the entry point of a routine. (First argument number is 0.)
IARG_FUNCRET_EXITPOINT_REFERENCE  +Type: "ADDRINT *". Pointer to function result. Valid only at return instruction.
IARG_FUNCRET_EXITPOINT_VALUE  +Type: ADDRINT. Function result. Valid only at return instruction.
IARG_RETURN_IP  +Type: ADDRINT. Return address for function call, valid only at the function entry point.
IARG_ORIG_FUNCPTR  +Type: AFUNPTR. Function pointer to the relocated entry of the original uninstrumented function.
IARG_PROTOTYPE  +Type: PROTO. The function prototype of the application function. See Prototypes.
IARG_THREAD_ID  +Type: THREADID. Application thread id.
IARG_CONTEXT  +Type: CONTEXT *. Handle to access a context (architectural state). When passed at IPOINT_AFTER or IPOINT_TAKEN_BRANCH, PC points to the next instruction. Upon return from the analysis routine, Pin ignores any changes you've made to the CONTEXT. If you want to change register values, use IARG_REG_REFERENCE, IARG_RETURN_REGS, or PIN_ExecuteAt. See Probe Mode Considerations for probe mode restrictions. Not supported with the Buffering APIs.
IARG_CONST_CONTEXT  +Type: CONTEXT *. Like IARG_CONTEXT, but tool receives a read-only CONTEXT*. PIN_SetContextReg, PIN_SetContextRegval and PIN_SetContextFPState will not work with IARG_CONST_CONTEXT. The overhead of IARG_CONST_CONTEXT is considerably lower than that of IARG_CONTEXT. Tools that need a CONTEXT* and only read from it should use IARG_CONST_CONTEXT. Tools that need a CONTEXT* and only occasionally write into it should also use IARG_CONST_CONTEXT. One example of a tool that needs a CONTEXT * and only occasionally writes into it, would be an emulator that would need to write into the CONTEXT * only when an exception occurs, and then raise an exception with the CONTEXT *. PIN_SaveContext can be used by the tool to get a writable copy of the CONTEXT *. IARG_CONST_CONTEXT is available only in Jit mode.
IARG_PARTIAL_CONTEXT  +Type: CONTEXT *. Additional two REGSET * arguments are needed 'inSet' and 'outSet'. Like IARG_CONTEXT, but tool needs to define also which registers set it needs to read (inSet) and which registers set it may write (outSet). PIN_SetContextReg, PIN_SetContextRegval and PIN_SetContextFPState will work only on registers that are in the outSet. These functions will change the actual application registers so there is no need to perform PIN_ExecuteAt as need to be done with IARG_CONTEXT. PIN_GetContextReg, PIN_GetContextRegval and PIN_GetContextFPState will return unexpected values for registers not defined in the 'inSet'. The overhead of IARG_PARTIAL_CONTEXT may lower than that of IARG_CONTEXT as there is no need to perform PIN_ExecuteAt to update registers. Tools that know which application registers are needed to be read should use IARG_PARTIAL_CONTEXT instead of IARG_CONST_CONTEXT. Thus may reduce the overhead as not fully updated context for read need to be provided. Tools that know which application registers other than REG_INST_PTR should use IARG_PARTIAL_CONTEXT instead of combination of IARG_CONTEXT and the use of PIN_ExecuteAt for registers update. If REG_INST_PTR needs to be updated PIN_ExecuteAt still needs to be used. Any updates to a register from the inSet of an IARG_PARTIAL_CONTEXT will be propagated to the application upon return from the analysis routine. Tools that want to update CONTEXT registers without affecting application registers should use IARG_CONTEXT. IARG_PARTIAL_CONTEXT is available only in Jit mode.
IARG_PRESERVE  +Type: REGSET *. Used to specify registers whose values will be the same upon return from the analysis routine. Should be used to specify caller-saved registers which are preserved by the analysis routine. When a non-inlinable analysis routine preserves caller-saved registers, Pin can avoid generating code to preserve these registers, across the analysis call, if they are specified in the IARG_PRESERVE. e.g. if a non-inlinable analysis routine preserves the values in the x87 registers, then Pin can avoid generating code to preserve these registers, across the analysis call, if REG_X87 is specified in the IARG_PRESERVE e.g. if a non-inlinable analysis routine preserves the values in XMM caller saved registers, then Pin can avoid generating code to preserve these registers, across the analysis call, if those preserved XMM registers are specified in the IARG_PRESERVE IARG_PRESERVE must be followed by a REGSET* that points to the REGSET containing the registers preserved. See the (REGSET_*) functions defined under REG (specific to the IA-32 and Intel(R) 64 architectures) for REGSET construction and manipulation.
IARG_RETURN_REGS  +Register to write analysis function return value (additional register arg required). Not supported in Probe mode.
IARG_CALL_ORDER  +Type: CALL_ORDER. Determine order of analysis calls. See CALL_ORDER.
IARG_IARGLIST  +Type: IARGLIST. List of IARGS which can be constructed one IARG at a time.
IARG_FAST_ANALYSIS_CALL  +No type: Use a fast linkage to call the analysis function. See PIN_FAST_ANALYSIS_CALL.
IARG_MEMORYOP_EA  +Type: ADDRINT. Effective address of a memory op (memory op index is next arg); only valid at IPOINT_BEFORE.
IARG_MEMORYOP_MASKED_ON  +Type: BOOL. TRUE if the this memory op (memory op index is next arg) is masked on; only valid at IPOINT_BEFORE.
IARG_TSC  +Type: UINT64. Time Stamp Counter value at the point of entering the analysis call.
IARG_FILE_NAME  +Reserved for internal use only.
IARG_LINE_NO  +Reserved for internal use only.
IARG_LAST  +Reserved for internal use only.
+
+
+

+ + + + +
+ + + + +
enum IPOINT
+
+ + + + + +
+   + + +

+Determines where the analysis call is inserted relative to the instrumented object

Enumerator:
+ + + + + +
IPOINT_BEFORE  +Insert a call before an instruction or routine.
IPOINT_AFTER  +Insert a call on the fall through path of an instruction or return path of a routine.
IPOINT_ANYWHERE  +Insert a call anywhere inside a trace or a bbl.
IPOINT_TAKEN_BRANCH  +Insert a call on the taken edge of branch, the side effects of the branch are visible.
+
+
+

+ + + + +
+ + + + +
enum PIN_MEMOP_ENUM
+
+ + + + + +
+   + + +

+used in the Type whose address is passed to analysis routine when IARG_MULTI_MEMORYACCESS_EA is requested

+


Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::IARGLIST_AddArguments IARGLIST  args,
  ...
+
+ + + + + +
+   + + +

+Add an argument to an IARGLIST.

+

Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + +
IARGLIST LEVEL_PINCLIENT::IARGLIST_Alloc  ) 
+
+ + + + + +
+   + + +

+Allocate a container to hold instrumentation arguments. Pass to *_InsertCall by using IARG_LIST

+

Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::IARGLIST_Free IARGLIST  args  ) 
+
+ + + + + +
+   + + +

+Free a container to hold instrumentation arguments. Pass to *_InsertCall by using IARG_LIST

+

Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__INS__BASIC__API.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__INS__BASIC__API.html new file mode 100644 index 0000000..cb8acc5 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__INS__BASIC__API.html @@ -0,0 +1,117 @@ + + +Pin: INS: Instruction Object + + + + +
+
+

INS: Instruction Object

+ + + + + + + + + + + + + + + +

Modules

 Instrumentation API
 Generic inspection API
 Inspection API for IA-32 and Intel(R) 64 instructions
 Generic modification API

Functions

BOOL LEVEL_CORE::INS_IsCacheLineFlush (INS ins)
BOOL LEVEL_PINCLIENT::INS_IsAddedForFunctionReplacement (INS ins)
+

Detailed Description

+An INS represents an instruction. Can only be accessed at instrumentation time.

+Iteration idioms:

+

  // Forward pass over all instructions in bbl
+  for( INS ins= BBL_InsHead(bbl); INS_Valid(ins); ins = INS_Next(ins) )
+
+  // Forward pass over all instructions in routine
+  for( INS ins= RTN_InsHead(rtn); INS_Valid(ins); ins = INS_Next(ins) )
+

Function Documentation

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::INS_IsAddedForFunctionReplacement INS  ins  ) 
+
+ + + + + +
+   + + +

+Return TRUE if ins is not an original instruction in the application, but is an instruction added by Pin for doing function replacement. Pin allows you to even instrument these non-original instructions in JIT mode.

+

Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsCacheLineFlush INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE if instruction causes cache line flush
+
+


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__INS__BASIC__API__GEN__IA32.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__INS__BASIC__API__GEN__IA32.html new file mode 100644 index 0000000..18bf9f6 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__INS__BASIC__API__GEN__IA32.html @@ -0,0 +1,2214 @@ + + +Pin: Generic inspection API + + + + +
+
+

Generic inspection API
+ +[INS: Instruction Object] +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Typedefs

typedef PREDICATE_IA32 LEVEL_BASE::PREDICATE

Enumerations

enum  LEVEL_CORE::MEMORY_TYPE {
+  MEMORY_TYPE_READ, +
+  MEMORY_TYPE_WRITE, +
+  MEMORY_TYPE_READ2 +
+ }
enum  LEVEL_CORE::SYSCALL_STANDARD {
+  LEVEL_CORE::SYSCALL_STANDARD_INVALID, +
+  LEVEL_CORE::SYSCALL_STANDARD_IA32_LINUX, +
+  LEVEL_CORE::SYSCALL_STANDARD_IA32_LINUX_SYSENTER, +
+  LEVEL_CORE::SYSCALL_STANDARD_IA32E_LINUX, +
+  LEVEL_CORE::SYSCALL_STANDARD_IA32_MAC, +
+  LEVEL_CORE::SYSCALL_STANDARD_IA32E_MAC, +
+  LEVEL_CORE::SYSCALL_STANDARD_IA32_WINDOWS_FAST, +
+  LEVEL_CORE::SYSCALL_STANDARD_IA32E_WINDOWS_FAST, +
+  LEVEL_CORE::SYSCALL_STANDARD_IA32_WINDOWS_ALT, +
+  LEVEL_CORE::SYSCALL_STANDARD_WOW64, +
+  LEVEL_CORE::SYSCALL_STANDARD_WINDOWS_INT +
+ }

Functions

INT32 LEVEL_CORE::INS_Category (const INS ins)
INT32 LEVEL_CORE::INS_Extension (const INS ins)
USIZE LEVEL_CORE::INS_MemoryOperandSize (INS ins, UINT32 memoryOp)
USIZE LEVEL_CORE::INS_MemoryWriteSize (INS ins)
PREDICATE LEVEL_CORE::INS_GetPredicate (INS ins)
USIZE LEVEL_CORE::INS_MemoryReadSize (INS ins)
BOOL LEVEL_CORE::INS_IsMemoryRead (INS ins)
BOOL LEVEL_CORE::INS_IsMemoryWrite (INS ins)
BOOL LEVEL_CORE::INS_HasMemoryRead2 (INS ins)
BOOL LEVEL_CORE::INS_HasFallThrough (INS ins)
BOOL LEVEL_CORE::INS_IsLea (INS ins)
BOOL LEVEL_CORE::INS_IsNop (INS ins)
string LEVEL_CORE::OPCODE_StringShort (UINT32 opcode)
string LEVEL_CORE::INS_Mnemonic (INS ins)
BOOL LEVEL_CORE::INS_IsBranch (INS ins)
BOOL LEVEL_CORE::INS_IsDirectBranch (INS ins)
BOOL LEVEL_CORE::INS_IsDirectCall (INS ins)
BOOL LEVEL_CORE::INS_IsDirectBranchOrCall (INS ins)
BOOL LEVEL_CORE::INS_IsBranchOrCall (INS ins)
BOOL LEVEL_CORE::INS_Stutters (INS ins)
BOOL LEVEL_CORE::INS_IsCall (INS ins)
BOOL LEVEL_CORE::INS_IsProcedureCall (INS ins)
BOOL LEVEL_CORE::INS_IsRet (INS ins)
BOOL LEVEL_CORE::INS_IsSysret (INS ins)
BOOL LEVEL_CORE::INS_IsPrefetch (INS ins)
BOOL LEVEL_CORE::INS_IsAtomicUpdate (const INS ins)
BOOL LEVEL_CORE::INS_IsIndirectBranchOrCall (INS ins)
BOOL LEVEL_CORE::INS_HasExplicitMemoryReference (INS ins)
REG LEVEL_CORE::INS_RegR (INS x, UINT32 k)
REG LEVEL_CORE::INS_RegW (INS x, UINT32 k)
OPCODE LEVEL_CORE::INS_Opcode (INS ins)
string LEVEL_CORE::CATEGORY_StringShort (UINT32 num)
string LEVEL_CORE::EXTENSION_StringShort (UINT32 num)
UINT32 LEVEL_CORE::INS_MaxNumRRegs (INS x)
UINT32 LEVEL_CORE::INS_MaxNumWRegs (INS x)
BOOL LEVEL_CORE::INS_RegRContain (const INS ins, const REG reg)
BOOL LEVEL_CORE::INS_RegWContain (const INS ins, const REG reg)
BOOL LEVEL_CORE::INS_IsStackRead (const INS ins)
BOOL LEVEL_CORE::INS_IsStackWrite (const INS ins)
BOOL LEVEL_CORE::INS_IsIpRelRead (const INS ins)
BOOL LEVEL_CORE::INS_IsIpRelWrite (const INS ins)
BOOL LEVEL_CORE::INS_IsPredicated (INS ins)
BOOL LEVEL_CORE::INS_IsOriginal (INS ins)
string LEVEL_CORE::INS_Disassemble (INS ins)
xed_decoded_inst_t * LEVEL_CORE::INS_XedDec (INS ins)
REG LEVEL_CORE::INS_XedExactMapToPinReg (unsigned int r)
UINT32 LEVEL_CORE::INS_MemoryOperandCount (INS ins)
BOOL LEVEL_CORE::INS_OperandIsAddressGenerator (INS ins, UINT32 n)
BOOL LEVEL_CORE::INS_MemoryOperandIsRead (INS ins, UINT32 memopIdx)
BOOL LEVEL_CORE::INS_MemoryOperandIsWritten (INS ins, UINT32 memopIdx)
BOOL LEVEL_CORE::INS_IsSyscall (INS ins)
SYSCALL_STANDARD LEVEL_CORE::INS_SyscallStd (INS ins)
RTN LEVEL_PINCLIENT::INS_Rtn (INS x)
INS LEVEL_PINCLIENT::INS_Next (INS x)
INS LEVEL_PINCLIENT::INS_Prev (INS x)
INS LEVEL_PINCLIENT::INS_Invalid ()
BOOL LEVEL_PINCLIENT::INS_Valid (INS x)
ADDRINT LEVEL_PINCLIENT::INS_Address (INS ins)
USIZE LEVEL_PINCLIENT::INS_Size (INS ins)
ADDRINT LEVEL_PINCLIENT::INS_DirectBranchOrCallTargetAddress (INS ins)
ADDRINT LEVEL_PINCLIENT::INS_NextAddress (INS ins)

Variables

GLOBALCONST PIN_DEPRECATED_API
+UINT32 
LEVEL_CORE::VARIABLE_MEMORY_REFERENCE_SIZE = ~0U
+

Detailed Description

+Use these functions to examine an instruction. They work for all instruction sets.

+

Availability:
Mode: JIT & Probe
+ O/S: Linux & Windows
+ CPU: All
+
+

Typedef Documentation

+

+ + + + +
+ + + + +
typedef PREDICATE_IA32 LEVEL_BASE::PREDICATE
+
+ + + + + +
+   + + +

+Predication type in instructions, see PREDICATE_IA32. +

+

+


Enumeration Type Documentation

+

+ + + + +
+ + + + +
enum LEVEL_CORE::MEMORY_TYPE
+
+ + + + + +
+   + + +

+Memory type of argument

+

+ + + + +
+ + + + +
enum LEVEL_CORE::SYSCALL_STANDARD
+
+ + + + + +
+   + + +

+Calling standard of the system call instruction.

Enumerator:
+ + + + + + + + + + + + +
SYSCALL_STANDARD_INVALID  +Invalid value; the instruction is not a system call.
SYSCALL_STANDARD_IA32_LINUX  +Linux system call on IA-32 architecture.
SYSCALL_STANDARD_IA32_LINUX_SYSENTER  +Linux system call via 'sysenter' on IA-32 architecture.
SYSCALL_STANDARD_IA32E_LINUX  +Linux system call on Intel(R) 64 architecture.
SYSCALL_STANDARD_IA32_MAC  +MacOS system call in IA-32 architecture.
SYSCALL_STANDARD_IA32E_MAC  +MacOS system call in Intel(R) 64 architecture.
SYSCALL_STANDARD_IA32_WINDOWS_FAST  +"Fast" (SYSENTER) Windows system call in IA-32 architecture
SYSCALL_STANDARD_IA32E_WINDOWS_FAST  +"Fast" (SYSCALL) Windows system call in Intel(R) 64 architecture
SYSCALL_STANDARD_IA32_WINDOWS_ALT  +Alternative (INT2E) Windows system call in IA-32 architecture.
SYSCALL_STANDARD_WOW64  +System call in WOW64 (32 bit process in 64-bit Windows).
SYSCALL_STANDARD_WINDOWS_INT  +Software interruption (INT n) in Windows.
+
+
+


Function Documentation

+

+ + + + +
+ + + + + + + + + +
string LEVEL_CORE::CATEGORY_StringShort UINT32  num  ) 
+
+ + + + + +
+   + + +

+

Returns:
String form of category
+
+

+ + + + +
+ + + + + + + + + +
string LEVEL_CORE::EXTENSION_StringShort UINT32  num  ) 
+
+ + + + + +
+   + + +

+

Returns:
String form of ISA extension
+
+

+ + + + +
+ + + + + + + + + +
ADDRINT LEVEL_PINCLIENT::INS_Address INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
Address of instruction
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
INT32 LEVEL_CORE::INS_Category const INS  ins  ) 
+
+ + + + + +
+   + + +

+The category of an instruction is a higher level semantic description of an instruction than its opcode (INS_Opcode). So, for instance, you can test for a conditional branch by using INS_Category(ins) == XED_CATEGORY_COND_BR, whereas using INS_Opcode(ins) would require that you enumerate all twenty conditional branch opcodes.

+The full mapping of opcodes to categories can be found in the idata.txt file in the Intel(R) X86 Encoder Decoder distribution (which is distributed as part of the Pin kit). The category enumeration can be found in the file "xed-category-enum.h".

+A category can be converted into a string by using CATEGORY_StringShort.

+

Returns:
Instruction category
+
+

+ + + + +
+ + + + + + + + + +
ADDRINT LEVEL_PINCLIENT::INS_DirectBranchOrCallTargetAddress INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
For direct branches or calls, the target address
+
+

+ + + + +
+ + + + + + + + + +
string LEVEL_CORE::INS_Disassemble INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
std::string disassembly of instruction
+
+

+ + + + +
+ + + + + + + + + +
INT32 LEVEL_CORE::INS_Extension const INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
Instruction extension, Use EXTENSION_StringShort to make it a string
+
+

+ + + + +
+ + + + + + + + + +
PREDICATE LEVEL_CORE::INS_GetPredicate INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
predicate for instruction (see PREDICATE)
+CMOVcc and FMOVcc instructions are treated as predicated. Rep string ops are treated as predicated.
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_HasExplicitMemoryReference INS  ins  ) 
+
+ + + + + +
+   + + +

+Test if this instruction has an explict memory operand. We include the memory operand in lea.

+

Returns:
TRUE if the instruction is has an explicit memory operand
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_HasFallThrough INS  ins  ) 
+
+ + + + + +
+   + + +

+If INS_HasFallThrough(INS) is TRUE, then the instruction may execute the "natural" next instruction (i.e. the one which starts immediately after this one), if it is FALSE, then the instruction following the one tested will not (normally) be executed next. So HasFallThrough is TRUE for instructions which don't change the control flow (most instructions), or for conditional branches (which might change the control flow, but might not), and FALSE for unconditional branches and calls (where the next instruction to be executed is always explicitly specified).

+Note that an unconditional branch or call to the next instruction still doesn't have a fall-through, since a fall through is the implicitly following instruction, and an unconditional branch never uses that.

+

Returns:
TRUE if the instruction type has a fallthrough path based on the opcode
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_HasMemoryRead2 INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if this instruction has 2 memory read operands
+
+

+ + + + +
+ + + + + + + + +
INS LEVEL_PINCLIENT::INS_Invalid  ) 
+
+ + + + + +
+   + + +

+

Returns:
Invalid instruction used in iterators INS_Prev and INS_Next
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsAtomicUpdate const INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if this instruction performs an atomic update of memory.
+
Note:
An XCHG instruction accessing memory is atomic with or without a LOCK prefix.
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsBranch INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if the ins is a branch instruction.
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsBranchOrCall INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if ins is a Branch or Call instruction, includes both direct and indirect instruction types
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsCall INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if ins is a Call instruction
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsDirectBranch INS  ins  ) 
+
+ + + + + +
+   + + +

+These are supposed to be near relative branches.

Returns:
true if the target address is an offset from the instruction pointer or is an immediate.
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsDirectBranchOrCall INS  ins  ) 
+
+ + + + + +
+   + + +

+These are supposed to be near relative branches.

Returns:
true if the target address is an offset from the instruction pointer or is an immediate.
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsDirectCall INS  ins  ) 
+
+ + + + + +
+   + + +

+These are supposed to be near relative branches.

Returns:
true if the target address is an offset from the instruction pointer or is an immediate.
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsIndirectBranchOrCall INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if the branch target comes from a register or memory
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsIpRelRead const INS  ins  ) 
+
+ + + + + +
+   + + +

+Is an IP-relative read

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsIpRelWrite const INS  ins  ) 
+
+ + + + + +
+   + + +

+Is an IP-relative write

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsLea INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE if the instruction is Lea.
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsMemoryRead INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if this instruction reads memory (Note that on some OSes instructions which read relative to gs or fs are treated as if they do not access memory...)
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsMemoryWrite INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if this instruction writes memory
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsNop INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE if the instruction is a nop.
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsOriginal INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if this is an original instruction
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsPredicated INS  ins  ) 
+
+ + + + + +
+   + + +

+We treat these instructions as predicated conditional move (CMOVcc) floating conditional move (FCMOVcc) rep string ops (since they don't execute if GCX==0)

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsPrefetch INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if this instruction is a prefetch
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsProcedureCall INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if ins is a procedure call. This filters out call instructions that are (ab)used for other purposes
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsRet INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if ins is a Return instruction
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsStackRead const INS  ins  ) 
+
+ + + + + +
+   + + +

+Access to the stack simply means that the instruction accesses memory relative to the stack pointer (ESP or RSP), or the frame pointer (EBP or RBP). In code compiled without a frame pointer (where EBP/RBP is used as a general register), this may give a misleading result.

+

Returns:
TRUE if ins is a read from the stack
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsStackWrite const INS  ins  ) 
+
+ + + + + +
+   + + +

+Detection of stack accesses is done in the same way as for INS_IsStackRead, so the same caveats apply here too.

+

Returns:
TRUE if ins is a write to the stack
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsSyscall INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if the instruction is a system call
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsSysret INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if ins is a System Return instruction
+
+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_CORE::INS_MaxNumRRegs INS  x  ) 
+
+ + + + + +
+   + + +

+

Returns:
Maximum number of read operands
+
+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_CORE::INS_MaxNumWRegs INS  x  ) 
+
+ + + + + +
+   + + +

+

Returns:
Maximum number of write operands
+
+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_CORE::INS_MemoryOperandCount INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
the number of memory operands. On OSes where Pin is not virtualising the segment registers, accesses with segment register overrides (e.g. gs:4) are ignored. (This is in line with Pin's behavior elsewhere).
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::INS_MemoryOperandIsRead INS  ins,
UINT32  memopIdx
+
+ + + + + +
+   + + +

+

Returns:
TRUE if memory operand memopIdx is read
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::INS_MemoryOperandIsWritten INS  ins,
UINT32  memopIdx
+
+ + + + + +
+   + + +

+

Returns:
TRUE if memory operand memopIdx is written
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
USIZE LEVEL_CORE::INS_MemoryOperandSize INS  ins,
UINT32  memoryOp
+
+ + + + + +
+   + + +

+

Parameters:
+ + + +
[in] ins the instruction.
[in] memoryOp the memory operand index whose size is required.
+
+
Returns:
the size of the requested memory operand in bytes (for REPped instructions this is the size accessed in each iteration of the implicit loop).
+
+

+ + + + +
+ + + + + + + + + +
USIZE LEVEL_CORE::INS_MemoryReadSize INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
the size of the memory read in bytes (for REP prefixed instructions this is the size of the operand read on each iteration of the REP, so 1,2,4 or 8).
+
+

+ + + + +
+ + + + + + + + + +
USIZE LEVEL_CORE::INS_MemoryWriteSize INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
the size of the memory write in bytes (for REP prefixed instructions this is the size of the operand written on each iteration of the REP, so 1,2,4 or 8).
+
+

+ + + + +
+ + + + + + + + + +
string LEVEL_CORE::INS_Mnemonic INS  ins  ) 
+
+ + + + + +
+   + + +

+Only use this function if you really want a printable version of the instruction's opcode.

+If you are trying to test what the opcode of an instruction is, use INS_Opcode and compare it with one of the XED_ICLASS values, or use one of the INS_Is... calls such as INS_IsMov, rather than using this function and comparing a string. Generating and comparing strings is much slower than comparing small integer values!

+

Returns:
String form of mnemonic
+
+

+ + + + +
+ + + + + + + + + +
INS LEVEL_PINCLIENT::INS_Next INS  x  ) 
+
+ + + + + +
+   + + +

+

Returns:
Instruction that follows x, or INS_Invalid() if x is the last in the rtn or trace
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
ADDRINT LEVEL_PINCLIENT::INS_NextAddress INS  ins  ) 
+
+ + + + + +
+   + + +

+Get the address of the next instruction.

Returns:
Address of instruction that follows this one
+
+

+ + + + +
+ + + + + + + + + +
OPCODE LEVEL_CORE::INS_Opcode INS  ins  ) 
+
+ + + + + +
+   + + +

+On ia-32 and Intel64 the opcodes are constants of the form XED_ICLASS_name. The full list of valid opcodes can be found in the idata.txt file in the Intel(R) X86 Encoder Decoder distribution (which is distributed as part of the Pin kit), and the enum definitions are in the file "xed-iclass-enum.h".

+Use INS_Mnemonic if you want a string.

+

Returns:
Opcode of instruction
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::INS_OperandIsAddressGenerator INS  ins,
UINT32  n
+
+ + + + + +
+   + + +

+

Returns:
true if this operand generates an address, but the address does not access memory (e.g. load effective address instruction)
+
+

+ + + + +
+ + + + + + + + + +
INS LEVEL_PINCLIENT::INS_Prev INS  x  ) 
+
+ + + + + +
+   + + +

+

Returns:
Instruction that precedes x, or INS_Invalid() if x is the first in the rtn or trace
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
REG LEVEL_CORE::INS_RegR INS  x,
UINT32  k
+
+ + + + + +
+   + + +

+

Returns:
kth read register of instruction x, including implicit reads (e.g. stack pointer is read by push on IA-32 architectures)
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::INS_RegRContain const INS  ins,
const REG  reg
+
+ + + + + +
+   + + +

+

Returns:
true if ins uses reg as a read operand
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
REG LEVEL_CORE::INS_RegW INS  x,
UINT32  k
+
+ + + + + +
+   + + +

+

Returns:
kth write register of instruction x, including implicit writes (e.g. stack pointer is written by push on IA-32 architectures)
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::INS_RegWContain const INS  ins,
const REG  reg
+
+ + + + + +
+   + + +

+

Returns:
true if ins uses reg as a write operand
+
+

+ + + + +
+ + + + + + + + + +
RTN LEVEL_PINCLIENT::INS_Rtn INS  x  ) 
+
+ + + + + +
+   + + +

+

Returns:
Routine that contains this instruction
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
USIZE LEVEL_PINCLIENT::INS_Size INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
Size of instruction in bytes
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_Stutters INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if ins "stutters", so re-executes even though it is not a branch or call. REP prefixed string ops do this.
+
+

+ + + + +
+ + + + + + + + + +
SYSCALL_STANDARD LEVEL_CORE::INS_SyscallStd INS  ins  ) 
+
+ + + + + +
+   + + +

+Check to see if the given instruction is a system call and return corresponding calling standard.

Returns:
calling standard of the system call instruction or SYSCALL_STANDARD_INVALID if the instruction is not a system call.
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::INS_Valid INS  x  ) 
+
+ + + + + +
+   + + +

+

Returns:
Invalid instruction used in iterators INS_Prev and INS_Next
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
xed_decoded_inst_t* LEVEL_CORE::INS_XedDec INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
This provides the pointer to the decoded Intel(R) X86 Encoder Decoder instruction.
+
+

+ + + + +
+ + + + + + + + + +
REG LEVEL_CORE::INS_XedExactMapToPinReg unsigned int  r  ) 
+
+ + + + + +
+   + + +

+Convert a Intel(R) X86 Encoder Decoder xed_reg_enum_t register to a Pin REG type.

Returns:
a valid pin register, but never an invalid one. Asserts if there is no exact map.
+
+

+ + + + +
+ + + + + + + + + +
string LEVEL_CORE::OPCODE_StringShort UINT32  opcode  ) 
+
+ + + + + +
+   + + +

+

Returns:
String with the opcode of the instruction
+
+


Variable Documentation

+

+ + + + +
+ + + + +
GLOBALCONST PIN_DEPRECATED_API UINT32 LEVEL_CORE::VARIABLE_MEMORY_REFERENCE_SIZE = ~0U
+
+ + + + + +
+   + + +

+DEPRECATED

+VARIABLE_MEMORY_REFERENCE_SIZE is no longer generated by Pin, so all code which used to test for it can (and should ) now be removed, since the definition of this symbol will disappear in a future Pin release.

+Pin now treats REP prefixed string ops as implicit loops, with the IPOINT_BEFORE and IPOINT_AFTER instrumentation called once for each iteration. That allows the IARG_MEMORY*_SIZE of the instruction to be that of the un-repped instruction (1,2,4 or 8 bytes), which can be determined at instrumentation time as with any other instruction. In most cases this significantly simplifies tools, which no longer have to special case unbounded memory accesses.

+To handle the case of zero iteration REP prefixed instructions (which used to dynamically generate a zero memory size, but which will now generate the statically determined size), REP prefixed instructions are treated as predicated, so you can use INS_InsertPredicatedCall, or IARG_EXECUTING to determine whether the instruction actually executes.

+Note that this is the same behavior as for CMOVcc instructions which can also have conditional memory accesses, but have never generated a zero memory size operand.

+


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__INS__BASIC__API__IA32.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__INS__BASIC__API__IA32.html new file mode 100644 index 0000000..6cfc8f4 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__INS__BASIC__API__IA32.html @@ -0,0 +1,2623 @@ + + +Pin: Inspection API for IA-32 and Intel(R) 64 instructions + + + + +
+
+

Inspection API for IA-32 and Intel(R) 64 instructions
+ +[INS: Instruction Object] +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Enumerations

enum  LEVEL_BASE::PREDICATE_IA32 {
+  LEVEL_BASE::PREDICATE_ALWAYS_TRUE, +
+  PREDICATE_INVALID, +
+  LEVEL_BASE::PREDICATE_BELOW, +
+  LEVEL_BASE::PREDICATE_BELOW_OR_EQUAL, +
+  LEVEL_BASE::PREDICATE_LESS, +
+  LEVEL_BASE::PREDICATE_LESS_OR_EQUAL, +
+  LEVEL_BASE::PREDICATE_NOT_BELOW, +
+  LEVEL_BASE::PREDICATE_NOT_BELOW_OR_EQUAL, +
+  LEVEL_BASE::PREDICATE_NOT_LESS, +
+  LEVEL_BASE::PREDICATE_NOT_LESS_OR_EQUAL, +
+  LEVEL_BASE::PREDICATE_NOT_OVERFLOW, +
+  LEVEL_BASE::PREDICATE_NOT_PARITY, +
+  LEVEL_BASE::PREDICATE_NOT_SIGN, +
+  LEVEL_BASE::PREDICATE_NOT_ZERO, +
+  LEVEL_BASE::PREDICATE_OVERFLOW, +
+  LEVEL_BASE::PREDICATE_PARITY, +
+  LEVEL_BASE::PREDICATE_SIGN, +
+  LEVEL_BASE::PREDICATE_ZERO, +
+  LEVEL_BASE::PREDICATE_CX_NON_ZERO, +
+  LEVEL_BASE::PREDICATE_ECX_NON_ZERO, +
+  LEVEL_BASE::PREDICATE_RCX_NON_ZERO, +
+  LEVEL_BASE::PREDICATE_SAVED_GCX_NON_ZERO, +
+  PREDICATE_LAST +
+ }

Functions

UINT32 LEVEL_CORE::INS_EffectiveAddressWidth (INS ins)
BOOL LEVEL_CORE::INS_IsSysenter (INS ins)
BOOL LEVEL_CORE::INS_IsXbegin (INS ins)
BOOL LEVEL_CORE::INS_IsXend (INS ins)
BOOL LEVEL_CORE::INS_IsHalt (INS ins)
BOOL LEVEL_CORE::INS_IsPcMaterialization (INS ins)
BOOL LEVEL_CORE::INS_IsFarCall (INS ins)
BOOL LEVEL_CORE::INS_IsFarJump (INS ins)
BOOL LEVEL_CORE::INS_IsDirectFarJump (INS ins)
BOOL LEVEL_CORE::INS_IsVgather (INS ins)
BOOL LEVEL_CORE::INS_IsVscatter (INS ins)
BOOL LEVEL_CORE::INS_HasMemoryVector (INS ins)
VOID LEVEL_CORE::INS_GetFarPointer (INS ins, UINT16 &segment_selector, UINT32 &displacement)
BOOL LEVEL_CORE::INS_IsInterrupt (INS ins)
BOOL LEVEL_CORE::INS_IsFarRet (INS ins)
BOOL LEVEL_CORE::INS_IsSub (const INS ins)
BOOL LEVEL_CORE::INS_IsMov (const INS ins)
BOOL LEVEL_CORE::INS_IsMovFullRegRegSame (const INS ins)
BOOL LEVEL_CORE::INS_IsRDTSC (const INS ins)
BOOL LEVEL_CORE::INS_IsMaskMov (const INS ins)
REG LEVEL_CORE::INS_RepCountRegister (INS ins)
REG LEVEL_CORE::INS_SegmentRegPrefix (INS ins)
VOID LEVEL_CORE::PIN_SetSyntaxIntel ()
VOID LEVEL_CORE::PIN_SetSyntaxATT ()
VOID LEVEL_CORE::PIN_SetSyntaxXED ()
BOOL LEVEL_CORE::INS_SegPrefixIsMemoryRead (INS ins)
BOOL LEVEL_CORE::INS_SegPrefixIsMemoryWrite (INS ins)
BOOL LEVEL_CORE::INS_AddressSizePrefix (INS ins)
BOOL LEVEL_CORE::INS_BranchNotTakenPrefix (INS ins)
BOOL LEVEL_CORE::INS_BranchTakenPrefix (INS ins)
BOOL LEVEL_CORE::INS_LockPrefix (INS ins)
BOOL LEVEL_CORE::INS_OperandSizePrefix (INS ins)
BOOL LEVEL_CORE::INS_RepPrefix (INS ins)
BOOL LEVEL_CORE::INS_RepnePrefix (INS ins)
BOOL LEVEL_CORE::INS_SegmentPrefix (INS ins)
BOOL LEVEL_CORE::INS_IsXchg (INS ins)
BOOL LEVEL_CORE::INS_IsStringop (INS ins)
BOOL LEVEL_CORE::INS_IsIRet (INS ins)
BOOL LEVEL_CORE::INS_FullRegRContain (const INS ins, const REG reg)
BOOL LEVEL_CORE::INS_FullRegWContain (const INS ins, const REG reg)
BOOL LEVEL_CORE::INS_HasRealRep (INS ins)
ADDRDELTA LEVEL_CORE::INS_MemoryDisplacement (INS ins)
REG LEVEL_CORE::INS_MemoryBaseReg (INS ins)
REG LEVEL_CORE::INS_MemoryIndexReg (INS ins)
UINT32 LEVEL_CORE::INS_MemoryScale (INS ins)
BOOL LEVEL_CORE::INS_IsStandardMemop (INS ins)
BOOL LEVEL_CORE::INS_hasKnownMemorySize (INS ins)
BOOL LEVEL_CORE::INS_ChangeReg (const INS ins, const REG old_reg, const REG new_reg, const BOOL as_read)
UINT32 LEVEL_CORE::INS_OperandCount (INS ins)
+UINT32 LEVEL_CORE::INS_OperandNameId (INS ins, UINT32 n)
BOOL LEVEL_CORE::INS_OperandIsMemory (INS ins, UINT32 n)
REG LEVEL_CORE::INS_OperandMemoryBaseReg (INS ins, UINT32 n)
REG LEVEL_CORE::INS_OperandMemoryIndexReg (INS ins, UINT32 n)
REG LEVEL_CORE::INS_OperandMemorySegmentReg (INS ins, UINT32 n)
UINT32 LEVEL_CORE::INS_OperandMemoryScale (INS ins, UINT32 n)
ADDRDELTA LEVEL_CORE::INS_OperandMemoryDisplacement (INS ins, UINT32 n)
BOOL LEVEL_CORE::INS_OperandIsFixedMemop (INS ins, UINT32 n)
+VOID LEVEL_CORE::GetNumberAndSizeOfMemAccesses (INS ins, int *numAccesses, int *accessSize, int *indexSize)
BOOL LEVEL_CORE::INS_OperandIsBranchDisplacement (INS ins, UINT32 n)
BOOL LEVEL_CORE::INS_OperandIsReg (INS ins, UINT32 n)
REG LEVEL_CORE::INS_OperandReg (INS ins, UINT32 n)
BOOL LEVEL_CORE::INS_OperandIsImmediate (INS ins, UINT32 n)
UINT64 LEVEL_CORE::INS_OperandImmediate (INS ins, UINT32 n)
BOOL LEVEL_CORE::INS_OperandIsImplicit (INS ins, UINT32 n)
BOOL LEVEL_CORE::INS_RegIsImplicit (INS ins, REG reg)
UINT32 LEVEL_CORE::INS_OperandWidth (INS ins, UINT32 n)
BOOL LEVEL_CORE::INS_OperandRead (INS ins, UINT32 n)
BOOL LEVEL_CORE::INS_OperandWritten (INS ins, UINT32 n)
BOOL LEVEL_CORE::INS_OperandReadOnly (INS ins, UINT32 n)
BOOL LEVEL_CORE::INS_OperandWrittenOnly (INS ins, UINT32 n)
BOOL LEVEL_CORE::INS_OperandReadAndWritten (INS ins, UINT32 n)
UINT32 LEVEL_CORE::INS_MemoryOperandIndexToOperandIndex (INS ins, UINT32 memopIdx)
+

Detailed Description

+Functions to examine IA-32 and Intel(R) 64 instructions.

+

Availability:
Mode: JIT & Probe
+ O/S: Linux & Windows
+ CPU: IA-32 and Intel(R) 64 architectures
+
+

Enumeration Type Documentation

+

+ + + + +
+ + + + +
enum LEVEL_BASE::PREDICATE_IA32
+
+ + + + + +
+   + + +

+Predicate abstraction for IA-32 and Intel(R) 64 instructions. +

+

Enumerator:
+ + + + + + + + + + + + + + + + + + + + + + +
PREDICATE_ALWAYS_TRUE  +Default predication on IA-32 and Intel(R) 64 architectures.
PREDICATE_BELOW  +Below (CF==1).
PREDICATE_BELOW_OR_EQUAL  +Below or Equal (CF==1 or ZF==1).
PREDICATE_LESS  +Less (SF!=OF).
PREDICATE_LESS_OR_EQUAL  +Less or Equal (ZF==1 or SF!=OF).
PREDICATE_NOT_BELOW  +Not Below (CF==0).
PREDICATE_NOT_BELOW_OR_EQUAL  +Above (CF==0 and ZF==0).
PREDICATE_NOT_LESS  +Greater or Equal (SF==OF).
PREDICATE_NOT_LESS_OR_EQUAL  +Greater (ZF==0 and SF==OF).
PREDICATE_NOT_OVERFLOW  +Not Overflow (OF==0).
PREDICATE_NOT_PARITY  +Not Parity (PF==0).
PREDICATE_NOT_SIGN  +Not Sign (SF==0).
PREDICATE_NOT_ZERO  +Not Zero (ZF==0).
PREDICATE_OVERFLOW  +Overflow (OF==1).
PREDICATE_PARITY  +Parity (PF==1).
PREDICATE_SIGN  +Sign (SF==1).
PREDICATE_ZERO  +Zero (ZF==1).
PREDICATE_CX_NON_ZERO  +CX != 0.
PREDICATE_ECX_NON_ZERO  +ECX != 0.
PREDICATE_RCX_NON_ZERO  +RCX != 0.
PREDICATE_SAVED_GCX_NON_ZERO  +(Internal) Use the saved value of one of the previous three tests
+
+
+


Function Documentation

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_AddressSizePrefix INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if the instruction has an address size prefix.
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_BranchNotTakenPrefix INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if the instruction has an branch not taken hint prefix
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_BranchTakenPrefix INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if the instruction has an branch taken hint prefix
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::INS_ChangeReg const INS  ins,
const REG  old_reg,
const REG  new_reg,
const BOOL  as_read
+
+ + + + + +
+   + + +

+Change all occurrences of old_reg to new_reg in the r/w sets of the ins. Return TRUE if at least one occurrence changed.

+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_CORE::INS_EffectiveAddressWidth INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
the width of the effective address in bits
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::INS_FullRegRContain const INS  ins,
const REG  reg
+
+ + + + + +
+   + + +

+

Returns:
true if ins uses reg as a read operand
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::INS_FullRegWContain const INS  ins,
const REG  reg
+
+ + + + + +
+   + + +

+

Returns:
true if ins uses reg as a write operand
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_GetFarPointer INS  ins,
UINT16 &  segment_selector,
UINT32 &  displacement
+
+ + + + + +
+   + + +

+

Returns:
the segment selector and displacement from a direct far jump.
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_hasKnownMemorySize INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
false if this instruction has a memory operand for which IARG_MEMORYREAD_SIZE or IARG_MEMORYWRITE_SIZE cannot be used (e.g. vectorized memory reference of the GATHER/SCATTER instructions).
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_HasMemoryVector INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE iff the ins has a memory vector, i.e. the memory is accessed using a base address and an index vector with a scale.
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_HasRealRep INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
whether the instruction has a real REP/REPZ/REPNZ prefix (i.e. one which is not just part of the opcode encoding but does cause the instruction to repeat).
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsDirectFarJump INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if the target address is a direct far jump
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsFarCall INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if ins is a Far Call instruction
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsFarJump INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if ins is a Far Jump instruction
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsFarRet INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if ins is a far ret instruction
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsHalt INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if the ins is a halt or reserved undefined (UD2) instruction.
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsInterrupt INS  ins  ) 
+
+ + + + + +
+   + + +

+Return TRUE if the INS is an interrupt category instruction

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsIRet INS  ins  ) 
+
+ + + + + +
+   + + +

+Note that IRET instructions also pass the INS_IsRet test, since they are RETs.

Returns:
true if the instruction is an "iret"
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsMaskMov const INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if this instruction is a maskmovq or maskmovdqu.
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsMov const INS  ins  ) 
+
+ + + + + +
+   + + +

+returns true if this instruction is a move.

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsMovFullRegRegSame const INS  ins  ) 
+
+ + + + + +
+   + + +

+returns true if this instruction is a mov reg1, reg1. And reg1 is a full reg

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsPcMaterialization INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if this is a call to the next instruction, which is an idiom for materializing the instruction pointer
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsRDTSC const INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if this instruction is an rdtsc or rdtscp.
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsStandardMemop INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
false if this instruction has a memory operand which has unconventional meaning (e.g. vectorized memory reference of the GATHER/SCATTER instructions or some of the XSAVE instructions).
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsStringop INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if the instruction is a string op (can be REP prefixed).
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsSub const INS  ins  ) 
+
+ + + + + +
+   + + +

+returns true if this instruction is a subtract.

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsSysenter INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if the instruction is a SysEnter
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsVgather INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE iff the ins is a VGATHER* instruction
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsVscatter INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE iff the ins is a VSCATTER* instruction
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsXbegin INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if the instruction is a Xbegin
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsXchg INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if the instruction is an "xchg"
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsXend INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if the instruction is a Xend
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_LockPrefix INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if the instruction has a lock prefix.
+
+

+ + + + +
+ + + + + + + + + +
REG LEVEL_CORE::INS_MemoryBaseReg INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
The base register used in the instruction's memory operand, or REG_INVALID() if there is no base register.
+
+

+ + + + +
+ + + + + + + + + +
ADDRDELTA LEVEL_CORE::INS_MemoryDisplacement INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
The memory displacement of an instrucation with memory operand.
+
Note:
: the displacement is a signed number.
+
+

+ + + + +
+ + + + + + + + + +
REG LEVEL_CORE::INS_MemoryIndexReg INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
The index register used in the instruction's memory operand, or REG_INVALID() if there is no index register.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
UINT32 LEVEL_CORE::INS_MemoryOperandIndexToOperandIndex INS  ins,
UINT32  memopIdx
+
+ + + + + +
+   + + +

+Convert a memory operand index into a simple operand index.

+

Parameters:
+ + + +
[in] ins The instruction.
[in] memopIdx Memory operand's index in the range [0, n-1], where n is from INS_MemoryOperandCount().
+
+
Returns:
operand index
+
+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_CORE::INS_MemoryScale INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
The scale factor (1,2,4,8) by which the index register in the instruction's memory operand is multiplied.
+
+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_CORE::INS_OperandCount INS  ins  ) 
+
+ + + + + +
+   + + +

+Tells the number of operands for the instruction. Several other APIs take an operand index as a parameter. Those APIs expect an index in the range [0, n-1], where n is the value returned by INS_OperandCount().

+

Parameters:
+ + +
[in] ins The instruction.
+
+
Returns:
The number of operands for the instruction.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
UINT64 LEVEL_CORE::INS_OperandImmediate INS  ins,
UINT32  n
+
+ + + + + +
+   + + +

+Although return type is UINT64, on 32-bit systems only the lower 32 bits are utilized. To see how to retrieve immediate values with correct width and sign information, see example in test tool PinTools/SimpleExamples/oper-imm.cpp.

Returns:
immediate value for operand
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::INS_OperandIsBranchDisplacement INS  ins,
UINT32  n
+
+ + + + + +
+   + + +

+

Returns:
true if this operand is a displacement (e.g. branch offset)
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::INS_OperandIsFixedMemop INS  ins,
UINT32  n
+
+ + + + + +
+   + + +

+

Returns:
TRUE if memory operand uses predefined base register and this register can not be changed Example: movs ds:(esi), es:(edi) There are two fixed operands
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::INS_OperandIsImmediate INS  ins,
UINT32  n
+
+ + + + + +
+   + + +

+

Returns:
true if this operand is an immediate
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::INS_OperandIsImplicit INS  ins,
UINT32  n
+
+ + + + + +
+   + + +

+

Returns:
true if this operand is implied by the opcode (e.g. the stack write in a push instruction)
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::INS_OperandIsMemory INS  ins,
UINT32  n
+
+ + + + + +
+   + + +

+

Returns:
true if this operand is a memory reference
+Note: this does not include LEA operands.
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::INS_OperandIsReg INS  ins,
UINT32  n
+
+ + + + + +
+   + + +

+

Returns:
true if this operand is a register
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
REG LEVEL_CORE::INS_OperandMemoryBaseReg INS  ins,
UINT32  n
+
+ + + + + +
+   + + +

+

Returns:
register used as base register in memory operand, or REG_INVALID() Effective address = Displacement + BaseReg + IndexReg * Scale
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
ADDRDELTA LEVEL_CORE::INS_OperandMemoryDisplacement INS  ins,
UINT32  n
+
+ + + + + +
+   + + +

+

Returns:
The memory displacement of an instrucation with memory operand.
+
Note:
the displacement is a signed number. Effective address = Displacement + BaseReg + IndexReg * Scale
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
REG LEVEL_CORE::INS_OperandMemoryIndexReg INS  ins,
UINT32  n
+
+ + + + + +
+   + + +

+

Returns:
register used as index register in memory operand, or REG_INVALID() Effective address = Displacement + BaseReg + IndexReg * Scale
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
UINT32 LEVEL_CORE::INS_OperandMemoryScale INS  ins,
UINT32  n
+
+ + + + + +
+   + + +

+

Returns:
scale used for addressing in memory operand. Effective address = Displacement + BaseReg + IndexReg * Scale
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
REG LEVEL_CORE::INS_OperandMemorySegmentReg INS  ins,
UINT32  n
+
+ + + + + +
+   + + +

+

Returns:
register used as segment register in memory operand, or REG_INVALID()
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::INS_OperandRead INS  ins,
UINT32  n
+
+ + + + + +
+   + + +

+Tells if an instruction operand is a source; it may also be a destination.

+

Parameters:
+ + + +
[in] ins The instruction.
[in] n Operand's index in the range [0, n-1], where n is from INS_OperandCount().
+
+
Returns:
TRUE if the operand is a source.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::INS_OperandReadAndWritten INS  ins,
UINT32  n
+
+ + + + + +
+   + + +

+Tells if an instruction operand is both a source and a destination.

+

Parameters:
+ + + +
[in] ins The instruction.
[in] n Operand's index in the range [0, n-1], where n is from INS_OperandCount().
+
+
Returns:
TRUE if the operand is both a source and a destination.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::INS_OperandReadOnly INS  ins,
UINT32  n
+
+ + + + + +
+   + + +

+Tells if an instruction operand is just a source (and not a destination).

+

Parameters:
+ + + +
[in] ins The instruction.
[in] n Operand's index in the range [0, n-1], where n is from INS_OperandCount().
+
+
Returns:
TRUE if the operand is just a source.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
REG LEVEL_CORE::INS_OperandReg INS  ins,
UINT32  n
+
+ + + + + +
+   + + +

+

Returns:
register name for this operand, may return REG_INVALID()
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_OperandSizePrefix INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if the instruction has an operand size prefix.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
UINT32 LEVEL_CORE::INS_OperandWidth INS  ins,
UINT32  n
+
+ + + + + +
+   + + +

+

Returns:
operand width in bits.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::INS_OperandWritten INS  ins,
UINT32  n
+
+ + + + + +
+   + + +

+Tells if an instruction operand is a destination; it may also be a source.

+

Parameters:
+ + + +
[in] ins The instruction.
[in] n Operand's index in the range [0, n-1], where n is from INS_OperandCount().
+
+
Returns:
TRUE if the operand is a destination.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::INS_OperandWrittenOnly INS  ins,
UINT32  n
+
+ + + + + +
+   + + +

+Tells if an instruction operand is just a destination (and not a source).

+

Parameters:
+ + + +
[in] ins The instruction.
[in] n Operand's index in the range [0, n-1], where n is from INS_OperandCount().
+
+
Returns:
TRUE if the operand is just a destination.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::INS_RegIsImplicit INS  ins,
REG  reg
+
+ + + + + +
+   + + +

+Assumes that reg is a PIN register

Returns:
true if the ins has
+
+

+ + + + +
+ + + + + + + + + +
REG LEVEL_CORE::INS_RepCountRegister INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
register used as the repeat counter by this REP prefixed instruction, or REG_INVALID() if the instruction does not have a real REP prefix.
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_RepnePrefix INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if the instruction has an REPNE (0xF2) prefix.
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_RepPrefix INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if the instruction has an REP (0xF3) prefix.
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_SegmentPrefix INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if the instruction has a segment prefix; Call INS_SegmentRegPrefix() to get the actual prefix register name.
+
+

+ + + + +
+ + + + + + + + + +
REG LEVEL_CORE::INS_SegmentRegPrefix INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
Segment overide prefix used by INS
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_SegPrefixIsMemoryRead INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if this Seg prefixed instruction reads memory
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_SegPrefixIsMemoryWrite INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if this Seg prefixed instruction writes to memory
+
+

+ + + + +
+ + + + + + + + +
VOID LEVEL_CORE::PIN_SetSyntaxATT  ) 
+
+ + + + + +
+   + + +

+Sets the disassembly syntax to ATT SYSV format. (Destination on the right)

+

+ + + + +
+ + + + + + + + +
VOID LEVEL_CORE::PIN_SetSyntaxIntel  ) 
+
+ + + + + +
+   + + +

+Sets the disassembly syntax to Intel format. (Destination on the left)

+

+ + + + +
+ + + + + + + + +
VOID LEVEL_CORE::PIN_SetSyntaxXED  ) 
+
+ + + + + +
+   + + +

+Sets the disassembly syntax to Intel(R) X86 Encoder Decoder detailed format which lists all resources read and written.

+


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__INS__INST__API.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__INS__INST__API.html new file mode 100644 index 0000000..e0b3a31 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__INS__INST__API.html @@ -0,0 +1,728 @@ + + +Pin: Instrumentation API + + + + +
+
+

Instrumentation API
+ +[INS: Instruction Object] +

+ + + + + + + + + + + + + + + + + + + + + + + + + +

Typedefs

typedef VOID(* LEVEL_PINCLIENT::INS_INSTRUMENT_CALLBACK )(INS ins, VOID *v)

Functions

PIN_CALLBACK LEVEL_PINCLIENT::INS_AddInstrumentFunction (INS_INSTRUMENT_CALLBACK fun, VOID *val)
VOID LEVEL_PINCLIENT::INS_InsertPredicatedCall (INS ins, IPOINT ipoint, AFUNPTR funptr,...)
VOID LEVEL_PINCLIENT::INS_InsertCall (INS ins, IPOINT action, AFUNPTR funptr,...)
VOID LEVEL_PINCLIENT::INS_InsertIfCall (INS ins, IPOINT action, AFUNPTR funptr,...)
VOID LEVEL_PINCLIENT::INS_InsertThenCall (INS ins, IPOINT action, AFUNPTR funptr,...)
VOID LEVEL_PINCLIENT::INS_InsertIfPredicatedCall (INS ins, IPOINT action, AFUNPTR funptr,...)
VOID LEVEL_PINCLIENT::INS_InsertThenPredicatedCall (INS ins, IPOINT action, AFUNPTR funptr,...)
VOID LEVEL_PINCLIENT::INS_InsertFillBuffer (INS ins, IPOINT action, BUFFER_ID id,...)
VOID LEVEL_PINCLIENT::INS_InsertFillBufferPredicated (INS ins, IPOINT action, BUFFER_ID id,...)
VOID LEVEL_PINCLIENT::INS_InsertFillBufferThen (INS ins, IPOINT action, BUFFER_ID id,...)
+

Detailed Description

+Use these functions to instrument instructions.

Typedef Documentation

+

+ + + + +
+ + + + +
typedef VOID(* LEVEL_PINCLIENT::INS_INSTRUMENT_CALLBACK)(INS ins, VOID *v)
+
+ + + + + +
+   + + +

+

+Call back function used to instrument instructions

+


Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
PIN_CALLBACK LEVEL_PINCLIENT::INS_AddInstrumentFunction INS_INSTRUMENT_CALLBACK  fun,
VOID *  val
+
+ + + + + +
+   + + +

+Add a function used to instrument at instruction granularity

Parameters:
+ + + +
fun Instrumentation function for instructions
val passed as the second argument to the instrumentation function
+
+
Returns:
PIN_CALLBACK A handle to a callback that can be used to further modify this callback's properties
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::INS_InsertCall INS  ins,
IPOINT  action,
AFUNPTR  funptr,
  ...
+
+ + + + + +
+   + + +

+Insert a call to funptr relative to instruction ins.

Parameters:
+ + + + + +
ins Instruction to instrument
action Specifies before, after, etc.
+ IPOINT_BEFORE is always valid for all instructions.
+ IPOINT_AFTER is valid only when a fall-through exists (i.e. Calls and unconditional branches will fail).
+ IPOINT_TAKEN_BRANCH is invalid for non-branches.
funptr Insert a call to funptr
... List of arguments to pass funptr. See IARG_TYPE, terminated with IARG_END
+
+If more than one call is inserted for the same instruction, the order is determined by IARG_CALL_ORDER. For more information, see CALL_ORDER.

+

Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::INS_InsertFillBuffer INS  ins,
IPOINT  action,
BUFFER_ID  id,
  ...
+
+ + + + + +
+   + + +

+Insert analysis code to fill one record in a trace buffer whenever an application instruction executes.

+

Parameters:
+ + + + + +
[in] ins The application instruction.
[in] action Tells whether the record is filled before or after the instruction.
[in] id The ID of the buffer whose record is filled.
[in] ... IARG_TYPE. Additional arguments to specify the fields of the trace buffer. These additional arguments take the form: IARG_TYPE arg, [optional IARG parameters], size_t offset, ..., IARG_END The arg argument specifies the value to write to the trace record field. The offset argument specifies the offset (in bytes) from the start of the trace record to this field. Typically, you would use "offsetof()" for this. if arg requires additional parameters, they come before offset.
+
+Certain IARG_TYPEs cannot be used with the *_InsertFillBuffer APIs. The unsupported IARG_TYPEs are: IARG_CONTEXT, IARG_REG_REFERENCE, and IARG_REG_CONST_REFERENCE.

+

Availability:
Mode: JIT
+ O/S: Linux & Windows
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::INS_InsertFillBufferPredicated INS  ins,
IPOINT  action,
BUFFER_ID  id,
  ...
+
+ + + + + +
+   + + +

+Insert analysis code to fill one record in a trace buffer whenever an application instruction executes, based on that instruction's predicate.

+

Parameters:
+ + + + + +
[in] ins The application instruction
[in] action Whether the record is filled before or after the instruction
[in] id The ID of the buffer whose record is filled
[in] ... IARG_TYPE. Additional arguments to specify the fields of the trace buffer.
+
+Certain IARG_TYPEs cannot be used with the *_InsertFillBuffer APIs. The unsupported IARG_TYPEs are: IARG_CONTEXT, IARG_REG_REFERENCE, and IARG_REG_CONST_REFERENCE.

+

Availability:
Mode: JIT
+ O/S: Linux & Windows
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::INS_InsertFillBufferThen INS  ins,
IPOINT  action,
BUFFER_ID  id,
  ...
+
+ + + + + +
+   + + +

+Insert analysis code to fill one record in a trace buffer whenever an application instruction executes. The record is only inserted if the preceding "if" analysis call returns a non-zero value.

+

Parameters:
+ + + + + +
[in] ins The application instruction
[in] action Whether the record is filled before or after the instruction
[in] id The ID of the buffer whose record is to filled
[in] ... IARG_TYPE. Additional arguments to specify the fields of the trace buffer.
+
+Certain IARG_TYPEs cannot be used with the *_InsertFillBuffer APIs. The unsupported IARG_TYPEs are: IARG_CONTEXT, IARG_REG_REFERENCE, and IARG_REG_CONST_REFERENCE.

+

Availability:
Mode: JIT
+ O/S: Linux & Windows
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::INS_InsertIfCall INS  ins,
IPOINT  action,
AFUNPTR  funptr,
  ...
+
+ + + + + +
+   + + +

+Insert a call to funptr relative to an INS. If funptr returns a non-zero ADDRINT, then the immediately following "then" analysis call is executed.

+

Parameters:
+ + + + + +
ins Instruction to instrument
action Specifies before, after, etc.
+ IPOINT_BEFORE is always valid for all instructions.
+ IPOINT_AFTER is valid only when a fall-through exists (i.e. Calls and unconditional branches will fail).
+ IPOINT_TAKEN_BRANCH is invalid for non-branches.
+ IPOINT_ANYWHERE is not supported and will result an error.
+ action value must be identical to the value passed to the corresponding INS_InsertThenCall.
funptr Insert a call to funptr. Its return type must be ADDRINT
... List of arguments to pass funptr. See IARG_TYPE, terminated with IARG_END
+
+If more than one call is inserted for the same instruction, the order is determined by IARG_CALL_ORDER. For more information, see CALL_ORDER. Note that if CALL_ORDER is used, Both "if" and "then" analysis calls must have the same order.

+

Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::INS_InsertIfPredicatedCall INS  ins,
IPOINT  action,
AFUNPTR  funptr,
  ...
+
+ + + + + +
+   + + +

+Insert a call to funptr relative to an INS. If funptr returns a non-zero ADDRINT and the instruction has a true predicate, then the immediately following "then" analysis call is executed. If the instruction is not predicated, then this function is identical to INS_InsertIfCall.

+Note that funptr may be called even if the predicate is false, the predicate is only defined to guard the execution of the following THEN function. (So if the function inserted here modifies the machine state it might affect the value of the predicate. Best practice is not to modify machine state here!)

+On IA32 and Intel64, the sequences

and

+produce identical results. They all generate code which can be represented like this

      if (UsersIfFunction(...))
+          if (predicate)
+              UsersThenFunction(...);
+
However on other architectures the behavior may be different, and the "IF" call need not always be called.

+This means that on IA32 and Intel64 the user's IF code is always called, however on these architectures that is very likely to generate faster code, since predicated instructions are rare. The dynamically most important predicated instructions are almost certainly REP MOVS, which have a very low (~80ppm) probablity of being predicated false. Unless the user's IF code is very large, or has a lower probability of filtering the execution, it is always better to use the test of the user condition to prevent execution of the predicate test. Of course, the code included in a user IF call is expected to be small, since the objective of INS_InsertIfCall, INS_InsertThenCall is to allow the code in the IF to be inlined.

+If you need to know the instruction predicate inside the IF call, you should pass IARG_EXECUTING as an argument and test it.

+

Parameters:
+ + + + + +
ins Instruction to instrument
action Specifies before, after, etc.
+ IPOINT_BEFORE is always valid for all instructions.
+ IPOINT_AFTER is valid only when a fall-through exists (i.e. Calls and unconditional branches will fail).
+ IPOINT_TAKEN_BRANCH is invalid for non-branches.
funptr Insert a call to funptr. Its return type must be ADDRINT
... List of arguments to pass funptr. See IARG_TYPE, terminated with IARG_END
+
+If more than one call is inserted for the same instruction, the order is determined by IARG_CALL_ORDER. For more information, see CALL_ORDER. Note that if CALL_ORDER is used, Both "if" and "then" analysis calls must have the same order.

+

Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::INS_InsertPredicatedCall INS  ins,
IPOINT  ipoint,
AFUNPTR  funptr,
  ...
+
+ + + + + +
+   + + +

+See INS_InsertCall. When the instruction has a predicate and the predicate is false, the analysis function is not called.

+On the IA-32 and Intel 64 architectures the only instructions treated as predicated are CMOVcc, FCMOVcc and REPped string ops. For the conditional moves, the predicate is based on the condition codes tested by the instruction. For the REPped string ops the predicate is that the execution count is not zero. For all other instructions the predicate is always true, so INS_InsertPredicatedCall is identical to INS_InsertCall.

+If you want to test both your own condition, and the predicate, you can use INS_InsertThenPredicatedCall, or use IARG_EXECUTING to pass the predicate value to an INS_InsertIfCall.

+If more than one call is inserted for the same instruction, the order is determined by IARG_CALL_ORDER. For more information, see CALL_ORDER.

+

Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::INS_InsertThenCall INS  ins,
IPOINT  action,
AFUNPTR  funptr,
  ...
+
+ + + + + +
+   + + +

+Insert a call to funptr relative to an INS. The function is called only if the immediately preceding "if" analysis call returns a non-zero value.

+

Parameters:
+ + + + + +
ins Instruction to instrument
action Specifies before, after, etc.
+ IPOINT_BEFORE is always valid for all instructions.
+ IPOINT_AFTER is valid only when a fall-through exists (i.e. Calls and unconditional branches will fail).
+ IPOINT_TAKEN_BRANCH is invalid for non-branches.
+ IPOINT_ANYWHERE is not supported and will result an error.
+ action value must be identical to the value passed to the corresponding INS_InsertIfCall.
funptr Insert a call to funptr
... List of arguments to pass funptr. See IARG_TYPE, terminated with IARG_END
+
+If more than one call is inserted for the same instruction, the order is determined by IARG_CALL_ORDER. For more information, see CALL_ORDER. Note that if CALL_ORDER is used, Both "if" and "then" analysis calls must have the same order.

+

Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::INS_InsertThenPredicatedCall INS  ins,
IPOINT  action,
AFUNPTR  funptr,
  ...
+
+ + + + + +
+   + + +

+Insert a call to funptr relative to an INS. The function is called only if the immediately preceding "if" analysis call returns a non-zero value and the instruction's predicate is true. See INS_InsertIfPredicatedCall for details of the semantics of mixing INS_InsertThenPredicatedCall with INS_InsertIfCall (and all the other possibilities).

+

Parameters:
+ + + + + +
ins Instruction to instrument
action Specifies before, after, etc.
+ IPOINT_BEFORE is always valid for all instructions.
+ IPOINT_AFTER is valid only when a fall-through exists (i.e. Calls and unconditional branches will fail).
+ IPOINT_TAKEN_BRANCH is invalid for non-branches.
funptr Insert a call to funptr
... List of arguments to pass funptr. See IARG_TYPE, terminated with IARG_END
+
+If more than one call is inserted for the same instruction, the order is determined by IARG_CALL_ORDER. For more information, see CALL_ORDER. Note that if CALL_ORDER is used, Both "if" and "then" analysis calls must have the same order.

+

Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__INS__MOD__API__GEN__IA32.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__INS__MOD__API__GEN__IA32.html new file mode 100644 index 0000000..73ab900 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__INS__MOD__API__GEN__IA32.html @@ -0,0 +1,274 @@ + + +Pin: Generic modification API + + + + +
+
+

Generic modification API
+ +[INS: Instruction Object] +

+ + + + + + + + + + +

Functions

VOID LEVEL_PINCLIENT::INS_RewriteMemoryOperand (INS ins, UINT32 memindex, REG reg)
VOID LEVEL_PINCLIENT::INS_InsertIndirectJump (INS ins, IPOINT ipoint, REG reg)
VOID LEVEL_PINCLIENT::INS_InsertDirectJump (INS ins, IPOINT ipoint, ADDRINT tgt)
VOID LEVEL_PINCLIENT::INS_Delete (INS ins)
+

Detailed Description

+Use these functions to modify instructions. They work for all instruction sets. For experts only!

+

Availability:
Mode: JIT & Probe
+ O/S: Linux & Windows
+ CPU: All
+
+

Function Documentation

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::INS_Delete INS  ins  ) 
+
+ + + + + +
+   + + +

+Delete the instruction

+

Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::INS_InsertDirectJump INS  ins,
IPOINT  ipoint,
ADDRINT  tgt
+
+ + + + + +
+   + + +

+Insert a direct jump instruction relative to the given instruction When used with INS_Delete it can be used to emulate control transfer instructions.

+

Parameters:
+ + + + +
[in] ins input instruction
[in] ipoint location relative to ins (only IPOINT_BEFORE and IPOINT_AFTER are supported)
[in] tgt absolute address of the target
+
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::INS_InsertIndirectJump INS  ins,
IPOINT  ipoint,
REG  reg
+
+ + + + + +
+   + + +

+Insert an indirect jump instruction relative to the given instruction. When used with INS_Delete it can be used to emulate control transfer instructions.

+

Parameters:
+ + + + +
[in] ins input instruction
[in] ipoint location relative to ins (only IPOINT_BEFORE and IPOINT_AFTER are supported)
[in] reg register holding the target
+
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::INS_RewriteMemoryOperand INS  ins,
UINT32  memindex,
REG  reg
+
+ + + + + +
+   + + +

+Change this memory access instruction to reference the virtual memory location contained in the given register.

+

Parameters:
+ + + + +
[in] ins input instruction
[in] memopIdx controls which memory operand to rewrite (0,1,...)
[in] newBase register containing the base address of the new operand which will normally be a scratch register allocated via PIN_ClaimToolRegister()
+
+On IA-32 and Intel64, the modified operand uses only base register addressing with the new base register newBase. Any index, scale, or offset fields from that operand in the original instruction are removed. In addition, if the original instruction's operand uses a segment override, the instruction is changed to use the default segment.

+This function can be used to rewrite memory operands even when they are implicit (for instance call, ret, push, pop), though in this case the instruction may ultimately be replaced by a sequence of instructions which achieve the same effect. (This is transparent to instrumentation, which continues to see the original instruction).

+The only instruction which cannot be rewritten is enter with a second operand > 0.

+Note that the address in newBase is always the lowest address which will be accessed by this operand. This is consistent with the way in which Pin returns addresses in IARG_*_EA, but means that if the operand is modified by the instruction before the memory access occurs (for instance a push instruction), the value in newBase will not be the value in the stack pointer, but the address of the memory which is accessed by the instruction.

+This can also be confusing for xlat; where the value of newBase is the address from which data is loaded, not the address of the base of the translation table. (Again, this is consistent with the IARG_*_EA which Pin will report for an xlat operation).

+Similarly for the bt,btc,btr and bts insructions, if the bit index is larger than the operand size (so that parts of the bit index affect the EA), they are included in Pin's normal EA calculation. In this case, Pin automatically masks the bit index operand so that it only includes the index within the addressed unit of memory. This ensures that your address manipulation function need only consider the translation of the EA, it does not have to worry about additional offsets generated by the bit index operand of these instructions. (This is equivalent to saying that if you replace all memory operands, but use an address computation function that simply returns the original EA, the code will continue to execute correctly).

+The canonical instrumentation code for memory address rewriting now looks something like this

 // Map the originalEa to a translated address.
+ static ADDRINT ProcessAddress(ADDRINT originalEa, ADDRINT size, UINT32 access);
+ ...
+    for (UINT32 op = 0; op<INS_MemoryOperandCount(ins); op++)
+    {
+        UINT32 access = (INS_MemoryOperandIsRead(ins,op)    ? 1 : 0) |
+                        (INS_MemoryOperandIsWritten(ins,op) ? 2 : 0);
+
+        INS_InsertCall(ins, IPOINT_BEFORE,
+                       AFUNPTR(ProcessAddress),
+                       IARG_MEMORYOP_EA,   op,
+                       IARG_MEMORYOP_SIZE, op,
+                       IARG_UINT32,        access,
+                       IARG_RETURN_REGS,   REG_INST_G0+i,
+                       IARG_END);
+
+        INS_RewriteMemoryOperand(ins, i, REG(REG_INST_G0+i));
+    }
+
There is no need to handle any instructions specially.

+

Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__KNOBS.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__KNOBS.html new file mode 100644 index 0000000..6e8db12 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__KNOBS.html @@ -0,0 +1,123 @@ + + +Pin: Command Line Switches + + + + +
+
+

Command Line Switches

+ +
+This section describes the command line switches that are currently supported by Pin.

+Pin switches should appear after the pin command, but before the -t <tool> option. The following Pin switches are supported:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
-follow_execv Execute all processes spawned by the execv class system calls with Pin.
-help Print the help message.
-pause_tool <n> Pause and print the PID so the debugger can be attached after the tool is loaded. Processing will resume after "n" seconds.
-logfile Indicates the path and name of the log file. The default path is the current working directory. The default name is pin.log.
-unique_logfile Appends the pid to the log file name.
-error_file Indicates the path and name of the error file. The default path is the current working directory. If an error file is specified, all errors will be written to the error file, and will not be displayed on the console. If an error file is not specified, no error file will be created. The error file is designed to be parsed by tools that layer on top of Pin. See Pin Error Reporting Support.
-unique_error_file Appends the pid to the error file name.
-injection <mode> Where <mode> is one of dynamic, self, child, parent. UNIX-only. See Injection.
-inline Inline simple analysis routines.
-log_inline Report which analysis routines have been inlined in the pin.log file.
-cc_memory_size <n> Max (in bytes) code cache size (0==unlimited, default). Must be a multiple of the code cache block size
-pid <pid #> Attach Pin and the Pintool to an already running executable with the given process id.
-pin_memory_range Restrict Pin to a memory range, 0x80000000:0x90000000 or size: 0:0x10000000.
-restrict_memory Prevent PIN's dynamic loader from using these memory regions, 0x10000000:0x20000000
-pin_memory_size Limit the number of bytes that can be dynamically allocated by PIN and PIN tool Note that the number of bytes allocated by PIN is defined by the total number of memory pages allocated by PIN multiplied by the page size
-tool_load_option Load the tool with additional flags. Currently supported flags are:
+ deepbind: (Linux only) Load the tool with the RTLD_DEEPBIND flag to make it a self-contained library. For more information see the dlopen man pages.
-t <toolname> Specify the Pintool to use. If you are running a 32-bit application in an IA-32 architecture, or a 64-bit application on an Intel(R) 64 architecture, only -t <toolname> is needed. If you are running an application on an Intel(R) 64 architecture, where all of the components in the chain are either 32-bit or 64-bit, but not both, only -t <toolname> is needed. If you are running an application on an Intel(R) 64 architecture, where components in the chain are both 32-bit and 64-bit, use -t64 <64-bit toolname> to specify the 64-bit tool binary followed by -t <32-bit toolname> to specify the 32-bit tool binary and the tool options. For more information, see Instrumenting Applications on Intel(R) 64 Architectures
-t64 <64-bit toolname> Specify 64-bit tool binary for Intel(R) 64 architecture. If you are running an application on an Intel(R) 64 architecture, where components in the chain are both 32-bit and 64-bit, use -t64 together with -t as described above. See Instrumenting Applications on Intel(R) 64 Architectures.
+ Important: Using -t64 without -t is not recommended, since in this case when given a 32-bit application, Pin will run the application without applying any tool.
-p32 <toolname> Specify Pin binary for IA-32 architecture. See Instrumenting Applications on Intel(R) 64 Architectures.
-p64 <toolname> Specify Pin binary for Intel(R) 64 architecture. See Instrumenting Applications on Intel(R) 64 Architectures.
-smc_support [1][0] Enable (1) or disable (0) support for self-modifying code (SMC) in the application. This option is enabled by default.
-smc_strict [0][1] Enable (1) or disable (0) support for SMC inside basic blocks. By default (0), Pin assumes that basic blocks do not modify their own code.
-appdebug Debug the application, stopping in the debugger as soon as the application is launched.
-appdebug_enable Enable application level debugger support, but do not stop when the application is launched. Instead, you can connect a debugger after launch.
-appdebug_silent When application debugging is enabled, Pin normally prints a message telling how to connect an external debugger. This knob disables the message. Pin never prints this message when -appdebug_connection is specified.
-appdebug_exclude When application debugging and -follow_execv are both specified, the default behavior is to enable debugging on all child processes. This knob, which is repeatable, specifies an application name for which debugging is disabled. Debugging is disabled for a process if it's argv[0] value matches one of the -appdebug_exclude names.
-appdebug_allow_remote When application debugging is enabled, the default behavior requires the debugger to run on the same system as Pin. This knob allows Pin to connect to an external debugger that runs on a remote system. This knob is ignored when -appdebug_connection is specified because -appdebug_connection explicitly specifies the machine on which the debugger runs.
-appdebug_connection When application debugging is enabled, Pin's default behavior is to open a TCP port and wait for a debugger to connect. This knob reverses the roles; the debugger opens a TCP port and waits for Pin to connect to the port specified in this knob. The format of the knob value should be "[ip]:port". If the "ip" address is specified, it should be in dot-decimal notation. If "ip" is omitted, Pin connects to the specified port on the local machine. The port number should be specified in decimal. Note that this knob is never used when debugging with GDB.
-detach_reattach Allow detach and reattach in probe mode. Windows* only.
-debug_instrumented_processes Print message to allow debugger attach to instrumented processes. Windows* only.
-slow_asserts Perform expensive sanity checks
+

+Pin also supports the following tool switches. Tool switches should be placed after the tool name, but before the double dash ("--").

+ + + + + + + + + + + + + + + + + + + +
-logfile Indicates the path and name of the log file. The default path is the current working directory. The default name is pintool.log.
-unique_logfile Appends the pid to the log file name.
-discard_line_info <module_name> Discard line information for specific module. Module name should be a short name without path, and not a symbolic link
-discard_line_info_all Discard line information for all modules.
-help Print the help message.
-support_jit_api Enables managed platforms support.
-short_name Use the shortest name for the RTN. Names with version substrings are preferred over the same name without the substring.
-symbol_path <list of paths> Specifies list of paths separated with semicolons that are searched to find symbol and line information. The list is searched when necessary after default search algorithm is applied. Default list is empty. Windows* only.
-slow_asserts Perform expensive sanity checks. Recommended to be used in development and testing phase.
+

+If you want to add your own command line options to your tool, please see KNOBS.


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__KNOB__API.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__KNOB__API.html new file mode 100644 index 0000000..ba31989 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__KNOB__API.html @@ -0,0 +1,38 @@ + + +Pin: KNOB: Commandline Option Handling + + + + +
+
+

KNOB: Commandline Option Handling

+ + + + + + +

Modules

 KNOB: Basics
 KNOB: Printing
+

Detailed Description

+Knobs automate the parsing and management of command line switches. A command line contains switches for Pin, the tool, and the application. The knobs parsing code understands how to separate them.
Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__KNOB__BASIC.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__KNOB__BASIC.html new file mode 100644 index 0000000..616053b --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__KNOB__BASIC.html @@ -0,0 +1,535 @@ + + +Pin: KNOB: Basics + + + + +
+
+

KNOB: Basics
+ +[KNOB: Commandline Option Handling] +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Enumerations

enum  LEVEL_BASE::KNOB_MODE {
+  KNOB_MODE_INVALID, +
+  LEVEL_BASE::KNOB_MODE_COMMENT, +
+  LEVEL_BASE::KNOB_MODE_WRITEONCE, +
+  LEVEL_BASE::KNOB_MODE_OVERWRITE, +
+  LEVEL_BASE::KNOB_MODE_ACCUMULATE, +
+  LEVEL_BASE::KNOB_MODE_APPEND, +
+  KNOB_MODE_LAST +
+ }

Functions

 LEVEL_BASE::KNOB_BASE::KNOB_BASE (const string &myprefix, const string &myname, const string &myfamily, const string &mydefault, const string &mypurpose, KNOB_MODE mymode=KNOB_MODE_WRITEONCE)
int LEVEL_BASE::KNOB_BASE::Compare (const KNOB_BASE &k2) const
STATIC VOID LEVEL_BASE::KNOB_BASE::CheckAllKnobs (BOOL allowDashes=FALSE)
STATIC UINT32 LEVEL_BASE::KNOB_BASE::NumberOfKnobs ()
STATIC VOID LEVEL_BASE::KNOB_BASE::DisableKnobFamily (const string &myfamily)
STATIC VOID LEVEL_BASE::KNOB_BASE::EnableKnobFamily (const string &myfamily)
STATIC VOID LEVEL_BASE::KNOB_BASE::DisableKnob (const string &myname)
STATIC VOID LEVEL_BASE::KNOB_BASE::EnableKnob (const string &myname)
STATIC KNOB_BASE * LEVEL_BASE::KNOB_BASE::FindKnob (const string &name)
STATIC KNOB_BASE * LEVEL_BASE::KNOB_BASE::FindFamily (const string &name)
STATIC KNOB_BASE * LEVEL_BASE::KNOB_BASE::FindEnabledKnob (const string &name)
STATIC string LEVEL_BASE::KNOB_BASE::StringKnobSummary ()
+

Detailed Description

+
Availability:
Mode: JIT & Probe
+ O/S: Linux & Windows
+ CPU: All
+
+

Enumeration Type Documentation

+

+ + + + +
+ + + + +
enum LEVEL_BASE::KNOB_MODE
+
+ + + + + +
+   + + +

+Per knob mode - indicates how multiple appearances of the mode on the command line are handled

Enumerator:
+ + + + + + +
KNOB_MODE_COMMENT  +comment for knob family
KNOB_MODE_WRITEONCE  +single value, single write
KNOB_MODE_OVERWRITE  +single value, overwrite
KNOB_MODE_ACCUMULATE  +single value, update
KNOB_MODE_APPEND  +list of values, append
+
+
+


Function Documentation

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_BASE::KNOB_BASE::CheckAllKnobs BOOL  allowDashes = FALSE  )  [inherited]
+
+ + + + + +
+   + + +

+Check for duplicates amongst the declared knobs

+

+ + + + +
+ + + + + + + + + +
int LEVEL_BASE::KNOB_BASE::Compare const KNOB_BASE &  k2  )  const [inherited]
+
+ + + + + +
+   + + +

+

Returns:
TRUE if two knobs are identical.
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_BASE::KNOB_BASE::DisableKnob const string &  myname  )  [inherited]
+
+ + + + + +
+   + + +

+Disable a particular knob

Parameters:
+ + +
myname The particular knob to disable
+
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_BASE::KNOB_BASE::DisableKnobFamily const string &  myfamily  )  [inherited]
+
+ + + + + +
+   + + +

+Disable all options within a given family of knobs

Parameters:
+ + +
myfamily The family to disable
+
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_BASE::KNOB_BASE::EnableKnob const string &  myname  )  [inherited]
+
+ + + + + +
+   + + +

+Enable a particular knob

Parameters:
+ + +
myname The knob to enable
+
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_BASE::KNOB_BASE::EnableKnobFamily const string &  myfamily  )  [inherited]
+
+ + + + + +
+   + + +

+Enable all options within a given family of knobs

Parameters:
+ + +
myfamily The family to enable
+
+
+

+ + + + +
+ + + + + + + + + +
KNOB_BASE * LEVEL_BASE::KNOB_BASE::FindEnabledKnob const string &  myname  )  [inherited]
+
+ + + + + +
+   + + +

+Search for a knob that is currently not disabled

Parameters:
+ + +
myname The name of the knob to search which is currently enabled
+
+
+

+ + + + +
+ + + + + + + + + +
KNOB_BASE * LEVEL_BASE::KNOB_BASE::FindFamily const string &  family  )  [inherited]
+
+ + + + + +
+   + + +

+Search for a knob family

Parameters:
+ + +
family The family of knobs to locate
+
+
+

+ + + + +
+ + + + + + + + + +
KNOB_BASE * LEVEL_BASE::KNOB_BASE::FindKnob const string &  myname  )  [inherited]
+
+ + + + + +
+   + + +

+Locate a knob from the list of declared knobs

Parameters:
+ + +
myname The name of the knob to locate
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LEVEL_BASE::KNOB_BASE::KNOB_BASE const string &  myprefix,
const string &  myname,
const string &  myfamily,
const string &  mydefault,
const string &  mypurpose,
KNOB_MODE  mymode = KNOB_MODE_WRITEONCE
[inherited]
+
+ + + + + +
+   + + +

+Create a new knob

Parameters:
+ + + + + + +
myname Name of the knob
myfamily Family to which the knob belongs to
mydefault The default value to which the knob is initialized with
mypurpose A string that explains the purpose of the knob
mymode KNOB_MODE
+
+
+

+ + + + +
+ + + + + + + + +
UINT32 LEVEL_BASE::KNOB_BASE::NumberOfKnobs  )  [inherited]
+
+ + + + + +
+   + + +

+

Returns:
The total number of knobs that have been declared
+
+

+ + + + +
+ + + + + + + + +
string LEVEL_BASE::KNOB_BASE::StringKnobSummary  )  [inherited]
+
+ + + + + +
+   + + +

+Print out a summary of all the knobs declared

+


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__KNOB__PRINT.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__KNOB__PRINT.html new file mode 100644 index 0000000..58fa1d5 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__KNOB__PRINT.html @@ -0,0 +1,71 @@ + + +Pin: KNOB: Printing + + + + +
+
+

KNOB: Printing
+ +[KNOB: Commandline Option Handling] +

+ + + + +

Functions

STATIC string LEVEL_BASE::KNOB_BASE::StringLongAll ()
+

Detailed Description

+
Availability:
Mode: JIT & Probe
+ O/S: Linux & Windows
+ CPU: All
+
+

Function Documentation

+

+ + + + +
+ + + + + + + + +
string LEVEL_BASE::KNOB_BASE::StringLongAll  )  [inherited]
+
+ + + + + +
+   + + +

+x

+


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__LOCK.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__LOCK.html new file mode 100644 index 0000000..04233da --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__LOCK.html @@ -0,0 +1,941 @@ + + +Pin: LOCK: Locking Primitives + + + + +
+
+

LOCK: Locking Primitives

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Typedefs

typedef PINVM::PINSYNC_POD_LOCK LEVEL_BASE::PIN_MUTEX
typedef PINVM::PINSYNC_POD_RWLOCK LEVEL_BASE::PIN_RWMUTEX
typedef PINVM::PINSYNC_POD_SEMAPHORE LEVEL_BASE::PIN_SEMAPHORE

Functions

VOID LEVEL_BASE::PIN_InitLock (PIN_LOCK *lock)
VOID LEVEL_BASE::PIN_GetLock (PIN_LOCK *lock, INT32 val)
INT32 LEVEL_BASE::PIN_ReleaseLock (PIN_LOCK *lock)
BOOL LEVEL_BASE::PIN_MutexInit (PIN_MUTEX *lock)
VOID LEVEL_BASE::PIN_MutexFini (PIN_MUTEX *lock)
VOID LEVEL_BASE::PIN_MutexLock (PIN_MUTEX *lock)
VOID LEVEL_BASE::PIN_MutexUnlock (PIN_MUTEX *lock)
BOOL LEVEL_BASE::PIN_MutexTryLock (PIN_MUTEX *lock)
BOOL LEVEL_BASE::PIN_RWMutexInit (PIN_RWMUTEX *lock)
VOID LEVEL_BASE::PIN_RWMutexFini (PIN_RWMUTEX *lock)
VOID LEVEL_BASE::PIN_RWMutexReadLock (PIN_RWMUTEX *lock)
VOID LEVEL_BASE::PIN_RWMutexWriteLock (PIN_RWMUTEX *lock)
VOID LEVEL_BASE::PIN_RWMutexUnlock (PIN_RWMUTEX *lock)
BOOL LEVEL_BASE::PIN_RWMutexTryReadLock (PIN_RWMUTEX *lock)
BOOL LEVEL_BASE::PIN_RWMutexTryWriteLock (PIN_RWMUTEX *lock)
BOOL LEVEL_BASE::PIN_SemaphoreInit (PIN_SEMAPHORE *sem)
VOID LEVEL_BASE::PIN_SemaphoreFini (PIN_SEMAPHORE *sem)
VOID LEVEL_BASE::PIN_SemaphoreSet (PIN_SEMAPHORE *sem)
VOID LEVEL_BASE::PIN_SemaphoreClear (PIN_SEMAPHORE *sem)
BOOL LEVEL_BASE::PIN_SemaphoreIsSet (PIN_SEMAPHORE *sem)
VOID LEVEL_BASE::PIN_SemaphoreWait (PIN_SEMAPHORE *sem)
BOOL LEVEL_BASE::PIN_SemaphoreTimedWait (PIN_SEMAPHORE *sem, unsigned timeout)
+

Detailed Description

+Primitives for locking.
+ APIs from this group are available in any thread, including any internal thread spawned by the tool.

+

Availability:
Mode: JIT
+ O/S: Linux & Windows
+ CPU: All
+
+

Typedef Documentation

+

+ + + + +
+ + + + +
typedef PINVM::PINSYNC_POD_LOCK LEVEL_BASE::PIN_MUTEX
+
+ + + + + +
+   + + +

+A simple non-recursive lock. PIN_MUTEX is different from PIN_LOCK because it provides just mutex locking without an extra "lock owner" parameter.

+

+ + + + +
+ + + + +
typedef PINVM::PINSYNC_POD_RWLOCK LEVEL_BASE::PIN_RWMUTEX
+
+ + + + + +
+   + + +

+A non-recursive multiple-reader / single-writer lock. Use this lock when multiple "reader" threads can simultaneously access a shared resource, but "writer" threads need to have exclusive access. This is a write-biased lock: if a writer thread blocks on the lock because there are active readers, new readers are prevented from acquiring the lock until the writer gets access. This prevents starvation of writer threads.

+

+ + + + +
+ + + + +
typedef PINVM::PINSYNC_POD_SEMAPHORE LEVEL_BASE::PIN_SEMAPHORE
+
+ + + + + +
+   + + +

+A binary semaphore synchronization object. You can use this synchronization when one thread needs to wait for some condition to become true. A binary semaphore has exactly two states: "set" and "clear". It is possible for one or more threads to wait for the semaphore to become "set". Those threads resume when some other thread changes the state to "set".

+Note that it is generally not safe to wait on a PIN_SEMAPHORE from an analysis routine or from a call-back function. Most Pin call-back functions are called while Pin holds an internal lock (the VM lock). Therefore, if you wait on a PIN_SEMAPHORE from a call-back, you will prevent any other thread from entering any call-back function (because the waiting thread also holds the VM lock). There is also a danger when waiting on a PIN_SEMAPHORE from an analysis routine. If a thread waits on a semaphore from an analysis routine, the application may also hold some locks of its own. Thus, you can cause a deadlock in the application if you wait on a semaphore while the application holds its own lock.

+The dangers listed above do not exist if you wait on a PIN_SEMAPHORE from a Pin internal thread (see PIN_SpawnInternalThread()). Also, it is safe to set, clear, or test a semaphore from any thread, even when executing an analysis routine or call-back function.

+


Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_BASE::PIN_GetLock PIN_LOCK *  lock,
INT32  val
+
+ + + + + +
+   + + +

+Acquire the lock.

+

Parameters:
+ + + +
[in] lock The lock variable.
[in] val Used for debugging. Typically, this is the ID of the calling thread. See the _owner field of PIN_LOCK.
+
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_BASE::PIN_InitLock PIN_LOCK *  lock  ) 
+
+ + + + + +
+   + + +

+Initialize the lock as free

+

Parameters:
+ + +
[in] lock The lock variable to initialize.
+
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_BASE::PIN_MutexFini PIN_MUTEX lock  ) 
+
+ + + + + +
+   + + +

+Destroy the PIN_MUTEX and deallocate resources. If you want to use the lock object again later, you must call PIN_MutexInit() again.

+

Parameters:
+ + +
[in] lock The lock variable.
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::PIN_MutexInit PIN_MUTEX lock  ) 
+
+ + + + + +
+   + + +

+This function must be called to initialize a PIN_MUTEX before it is used.

+

Parameters:
+ + +
[in] lock The lock variable.
+
+
Returns:
TRUE on successful initialization. If FALSE is returned, initialization failed, and the PIN_MUTEX may not be used.
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_BASE::PIN_MutexLock PIN_MUTEX lock  ) 
+
+ + + + + +
+   + + +

+Block the caller until the lock can be acquired.

+

Parameters:
+ + +
[in] lock The lock variable.
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::PIN_MutexTryLock PIN_MUTEX lock  ) 
+
+ + + + + +
+   + + +

+Try to acquire the lock, but do not block the caller.

+

Parameters:
+ + +
[in] lock The lock variable.
+
+
Returns:
TRUE if the lock is acquired, FALSE if not.
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_BASE::PIN_MutexUnlock PIN_MUTEX lock  ) 
+
+ + + + + +
+   + + +

+Release the lock.

+

Parameters:
+ + +
[in] lock The lock variable.
+
+
+

+ + + + +
+ + + + + + + + + +
INT32 LEVEL_BASE::PIN_ReleaseLock PIN_LOCK *  lock  ) 
+
+ + + + + +
+   + + +

+Release the lock.

+

Parameters:
+ + +
[in] lock The lock variable.
+
+
Returns:
The val parameter that was passed to PIN_GetLock() when the lock was acquired. Typically, this is the ID of the thread that owned the lock.
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_BASE::PIN_RWMutexFini PIN_RWMUTEX lock  ) 
+
+ + + + + +
+   + + +

+Destroy the PIN_RWMUTEX and deallocate resources. If you want to use the lock object again later, you must call PIN_RWMutexInit() again.

+

Parameters:
+ + +
[in] lock The lock variable.
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::PIN_RWMutexInit PIN_RWMUTEX lock  ) 
+
+ + + + + +
+   + + +

+This function must be called to initialize a PIN_RWMUTEX before it is used.

+

Parameters:
+ + +
[in] lock The lock variable.
+
+
Returns:
TRUE on successful initialization. If FALSE is returned, initialization failed, and the PIN_RWMUTEX may not be used.
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_BASE::PIN_RWMutexReadLock PIN_RWMUTEX lock  ) 
+
+ + + + + +
+   + + +

+Acquire the lock for "read" access, blocking if necessary. Multiple readers may simultaneously hold the same lock.

+

Parameters:
+ + +
[in] lock The lock variable.
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::PIN_RWMutexTryReadLock PIN_RWMUTEX lock  ) 
+
+ + + + + +
+   + + +

+Attempts to acquire the lock as a reader, but does not block the caller.

+

Parameters:
+ + +
[in] lock The lock variable.
+
+
Returns:
TRUE if the lock is acquired, FALSE if not.
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::PIN_RWMutexTryWriteLock PIN_RWMUTEX lock  ) 
+
+ + + + + +
+   + + +

+Attempts to acquire the lock as a writer, but does not block the caller.

+

Parameters:
+ + +
[in] lock The lock variable.
+
+
Returns:
TRUE if the lock is acquired, FALSE if not.
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_BASE::PIN_RWMutexUnlock PIN_RWMUTEX lock  ) 
+
+ + + + + +
+   + + +

+Release the lock. Used for both "readers" and "writers".

+

Parameters:
+ + +
[in] lock The lock variable.
+
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_BASE::PIN_RWMutexWriteLock PIN_RWMUTEX lock  ) 
+
+ + + + + +
+   + + +

+Acquire the lock for "write" access, blocking if necessary. A writer has exclusive ownership of the lock, not shared with any other readers or writers.

+

Parameters:
+ + +
[in] lock The lock variable.
+
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_BASE::PIN_SemaphoreClear PIN_SEMAPHORE sem  ) 
+
+ + + + + +
+   + + +

+Change the semaphore's state to "clear". This has no effect on any threads waiting on the semaphore.

+

Parameters:
+ + +
[in] sem The semaphore variable.
+
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_BASE::PIN_SemaphoreFini PIN_SEMAPHORE sem  ) 
+
+ + + + + +
+   + + +

+Destroy the PIN_SEMAPHORE and deallocate resources. If you want to use the lock object again later, you must call PIN_SemaphoreInit() again.

+

Parameters:
+ + +
[in] sem The semaphore variable.
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::PIN_SemaphoreInit PIN_SEMAPHORE sem  ) 
+
+ + + + + +
+   + + +

+This function must be called to initialize a PIN_SEMAPHORE before it is used.

+

Parameters:
+ + +
[in] sem The semaphore variable.
+
+
Returns:
TRUE on successful initialization. If FALSE is returned, initialization failed, and the PIN_SEMAPHORE may not be used.
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::PIN_SemaphoreIsSet PIN_SEMAPHORE sem  ) 
+
+ + + + + +
+   + + +

+Check whether the semaphore's state is "set", but do not block.

+

Parameters:
+ + +
[in] sem The semaphore variable.
+
+
Returns:
TRUE if the semaphore's state is "set".
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_BASE::PIN_SemaphoreSet PIN_SEMAPHORE sem  ) 
+
+ + + + + +
+   + + +

+Change the semaphore's state to "set" and tell any threads waiting on the semaphore to wake up. Note that threads waiting on the semaphore may not resume running right away, and they are guaranteed to resume only if the semaphore's state is still "set" when they actually do resume.

+

Parameters:
+ + +
[in] sem The semaphore variable.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_BASE::PIN_SemaphoreTimedWait PIN_SEMAPHORE sem,
unsigned  timeout
+
+ + + + + +
+   + + +

+Block the calling thread until the semaphore's state is "set" or until a timeout expires. The calling thread resumes immediately if the state is already "set".

+

Parameters:
+ + + +
[in] sem The semaphore variable.
[in] timeout The timeout period (milliseconds).
+
+
Returns:
TRUE if the semaphore's state is "set", FALSE if this method returns due to the timeout.
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_BASE::PIN_SemaphoreWait PIN_SEMAPHORE sem  ) 
+
+ + + + + +
+   + + +

+Block the calling thread until the semaphore's state is "set". The calling thread resumes immediately if the state is already "set".

+

Parameters:
+ + +
[in] sem The semaphore variable.
+
+
+


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__MISC.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__MISC.html new file mode 100644 index 0000000..481b3cc --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__MISC.html @@ -0,0 +1,109 @@ + + +Pin: Miscellaneous functions + + + + +
+
+

Miscellaneous functions

+ + + + + + + + +

Defines

#define PIN_PRODUCT_VERSION_MAJOR   3
#define PIN_PRODUCT_VERSION_MINOR   5
#define PIN_BUILD_NUMBER   97503-gac534ca30
+

Define Documentation

+

+ + + + +
+ + + + +
#define PIN_BUILD_NUMBER   97503-gac534ca30
+
+ + + + + +
+   + + +

+The Pin kit build number. This is unique for every Pin kit.

+

+ + + + +
+ + + + +
#define PIN_PRODUCT_VERSION_MAJOR   3
+
+ + + + + +
+   + + +

+The Pin major version number. E.g. "3" if the kit is "3.5".

+

+ + + + +
+ + + + +
#define PIN_PRODUCT_VERSION_MINOR   5
+
+ + + + + +
+   + + +

+The Pin minor version number. E.g. "5" if the kit is "3.5".

+


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__MISC__PARSE.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__MISC__PARSE.html new file mode 100644 index 0000000..3cabfa9 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__MISC__PARSE.html @@ -0,0 +1,335 @@ + + +Pin: Utilities for tokenizing strings + + + + +
+
+

Utilities for tokenizing strings

+ + + + + + + + + + + + + + + + + + + + +

Functions

INT32 LEVEL_BASE::Int32FromString (const string &s)
UINT32 LEVEL_BASE::Uint32FromString (const string &s)
INT64 LEVEL_BASE::Int64FromString (const string &s)
UINT64 LEVEL_BASE::Uint64FromString (const string &s)
FLT64 LEVEL_BASE::FLT64FromString (const string &s)
INT LEVEL_BASE::CharToHexDigit (CHAR c)
ADDRINT LEVEL_BASE::AddrintFromString (const string &str)
string LEVEL_BASE::ReadLine (istream &inputFile, UINT32 *lineNum)
UINT32 LEVEL_BASE::Tokenize (const string &line, string *array, UINT32 n)
+

Detailed Description

+
Availability:
Mode: JIT & Probe
+ O/S: Linux & Windows
+ CPU: All
+
+

Function Documentation

+

+ + + + +
+ + + + + + + + + +
ADDRINT LEVEL_BASE::AddrintFromString const string &  str  ) 
+
+ + + + + +
+   + + +

+Convert a string to an ADDRINT.

+

+ + + + +
+ + + + + + + + + +
INT LEVEL_BASE::CharToHexDigit CHAR  c  ) 
+
+ + + + + +
+   + + +

+Convert specified character to the corresponding hexadecimal digit.

Returns:
integer in the interval [0, 15] or -1 upon failure
+
+

+ + + + +
+ + + + + + + + + +
FLT64 LEVEL_BASE::FLT64FromString const string &  s  ) 
+
+ + + + + +
+   + + +

+Convert a string to a FLT64.

+

+ + + + +
+ + + + + + + + + +
INT32 LEVEL_BASE::Int32FromString const string &  s  ) 
+
+ + + + + +
+   + + +

+Convert a string to an INT32.

+

+ + + + +
+ + + + + + + + + +
INT64 LEVEL_BASE::Int64FromString const string &  s  ) 
+
+ + + + + +
+   + + +

+Convert a string to an INT64.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
string LEVEL_BASE::ReadLine istream &  inputFile,
UINT32 *  lineNum
+
+ + + + + +
+   + + +

+Read a line from file while maintaining a current line count skipping over blank and comment lines.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
UINT32 LEVEL_BASE::Tokenize const string &  line,
string *  array,
UINT32  n
+
+ + + + + +
+   + + +

+Break a line into tokens separated by whitespace.

Returns:
'array' contains the tokens
+
+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_BASE::Uint32FromString const string &  s  ) 
+
+ + + + + +
+   + + +

+Convert a string to a UINT32.

+

+ + + + +
+ + + + + + + + + +
UINT64 LEVEL_BASE::Uint64FromString const string &  s  ) 
+
+ + + + + +
+   + + +

+Convert a string to a UINT64.

+


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__MISC__PRINT.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__MISC__PRINT.html new file mode 100644 index 0000000..487fadf --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__MISC__PRINT.html @@ -0,0 +1,1236 @@ + + +Pin: Utilities for formatting strings + + + + +
+
+

Utilities for formatting strings

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Functions

VOID LEVEL_BASE::SetAddress0x (BOOL val)
BOOL LEVEL_BASE::CharIsSpace (CHAR c)
CHAR LEVEL_BASE::CharToUpper (CHAR c)
string LEVEL_BASE::ptrstr (const VOID *val)
string LEVEL_BASE::StringFromAddrint (ADDRINT l)
string LEVEL_BASE::StringFromUint64 (UINT64 l)
string LEVEL_BASE::StringDec (UINT64 l, UINT32 digits, CHAR padding)
string LEVEL_BASE::StringDecSigned (INT64 l, UINT32 digits, CHAR padding)
string LEVEL_BASE::StringBignum (INT64 l, UINT32 digits, CHAR padding)
string LEVEL_BASE::Reformat (const string &s, const string &prefix, UINT32 min_line, UINT32 max_line)
string LEVEL_BASE::StringHex32 (UINT32 l, UINT32 digits, BOOL prefix_0x)
string LEVEL_BASE::StringFlt (FLT64 val, UINT32 precision, UINT32 width)
string LEVEL_BASE::StringBool (BOOL b)
string LEVEL_BASE::StringTri (TRI t)
string LEVEL_BASE::StringHex (UINT32 l, UINT32 digits, BOOL prefix_0x=TRUE)
string LEVEL_BASE::decstr (INT64 val, UINT32 width=0)
string LEVEL_BASE::decstr (INT32 val, UINT32 width=0)
string LEVEL_BASE::decstr (INT16 val, UINT32 width=0)
string LEVEL_BASE::decstr (UINT64 val, UINT32 width=0)
string LEVEL_BASE::decstr (UINT32 val, UINT32 width=0)
string LEVEL_BASE::decstr (UINT16 val, UINT32 width=0)
string LEVEL_BASE::hexstr (INT64 val, UINT32 width=0)
string LEVEL_BASE::hexstr (INT32 val, UINT32 width=0)
string LEVEL_BASE::hexstr (INT16 val, UINT32 width=0)
string LEVEL_BASE::hexstr (UINT64 val, UINT32 width=0)
string LEVEL_BASE::hexstr (VOID *p, UINT32 width=0)
string LEVEL_BASE::hexstr (const VOID *p, UINT32 width=0)
string LEVEL_BASE::hexstr (UINT32 val, UINT32 width=0)
string LEVEL_BASE::hexstr (UINT16 val, UINT32 width=0)
string LEVEL_BASE::fltstr (FLT64 val, UINT32 prec=0, UINT32 width=0)
string LEVEL_BASE::ljstr (const string &s, UINT32 width, CHAR padding= ' ')
+

Detailed Description

+
Availability:
Mode: JIT & Probe
+ O/S: Linux & Windows
+ CPU: All
+
+

Function Documentation

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::CharIsSpace CHAR  c  ) 
+
+ + + + + +
+   + + +

+ctype::isspace alternative (avoids complications from including ctype.h).

+

+ + + + +
+ + + + + + + + + +
CHAR LEVEL_BASE::CharToUpper CHAR  c  ) 
+
+ + + + + +
+   + + +

+ctype::toupper alternative (avoids complications from including ctype.h).

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
string LEVEL_BASE::decstr UINT16  val,
UINT32  width = 0
+
+ + + + + +
+   + + +

+Create a string containing the given decimal integer.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
string LEVEL_BASE::decstr UINT32  val,
UINT32  width = 0
+
+ + + + + +
+   + + +

+Create a string containing the given decimal integer.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
string LEVEL_BASE::decstr UINT64  val,
UINT32  width = 0
+
+ + + + + +
+   + + +

+Create a string containing the given decimal integer.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
string LEVEL_BASE::decstr INT16  val,
UINT32  width = 0
+
+ + + + + +
+   + + +

+Create a string containing the given decimal integer.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
string LEVEL_BASE::decstr INT32  val,
UINT32  width = 0
+
+ + + + + +
+   + + +

+Create a string containing the given decimal integer.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
string LEVEL_BASE::decstr INT64  val,
UINT32  width = 0
+
+ + + + + +
+   + + +

+Create a string containing the given decimal integer.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
string LEVEL_BASE::fltstr FLT64  val,
UINT32  prec = 0,
UINT32  width = 0
+
+ + + + + +
+   + + +

+Create a string containing the given floating point number.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
string LEVEL_BASE::hexstr UINT16  val,
UINT32  width = 0
+
+ + + + + +
+   + + +

+Create a string with a hexadecimal prefix containing the given hexadecimal integer.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
string LEVEL_BASE::hexstr UINT32  val,
UINT32  width = 0
+
+ + + + + +
+   + + +

+Create a string with a hexadecimal prefix containing the given hexadecimal integer.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
string LEVEL_BASE::hexstr const VOID *  p,
UINT32  width = 0
+
+ + + + + +
+   + + +

+Create a string with a hexadecimal prefix containing the given hexadecimal integer.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
string LEVEL_BASE::hexstr VOID *  p,
UINT32  width = 0
+
+ + + + + +
+   + + +

+Create a string with a hexadecimal prefix containing the given hexadecimal integer.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
string LEVEL_BASE::hexstr UINT64  val,
UINT32  width = 0
+
+ + + + + +
+   + + +

+Create a string with a hexadecimal prefix containing the given hexadecimal integer.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
string LEVEL_BASE::hexstr INT16  val,
UINT32  width = 0
+
+ + + + + +
+   + + +

+Create a string with a hexadecimal prefix containing the given hexadecimal integer.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
string LEVEL_BASE::hexstr INT32  val,
UINT32  width = 0
+
+ + + + + +
+   + + +

+Create a string with a hexadecimal prefix containing the given hexadecimal integer.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
string LEVEL_BASE::hexstr INT64  val,
UINT32  width = 0
+
+ + + + + +
+   + + +

+Create a string with a hexadecimal prefix containing the given hexadecimal integer.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
string LEVEL_BASE::ljstr const string &  s,
UINT32  width,
CHAR  padding = ' '
+
+ + + + + +
+   + + +

+Left justify string.

+

+ + + + +
+ + + + + + + + + +
string LEVEL_BASE::ptrstr const VOID *  val  ) 
+
+ + + + + +
+   + + +

+Print pointer.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
string LEVEL_BASE::Reformat const string &  s,
const string &  prefix,
UINT32  min_line,
UINT32  max_line
+
+ + + + + +
+   + + +

+Add new lines to string to make it fit given line width restrictions.

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_BASE::SetAddress0x BOOL  val  ) 
+
+ + + + + +
+   + + +

+Set mode for printing of addresses, two formats are available either 0x12345678 or #1234_5678.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
string LEVEL_BASE::StringBignum INT64  l,
UINT32  digits,
CHAR  padding
+
+ + + + + +
+   + + +

+Convert a INT64 into a dec string with 1000 separation . Padding can be specified as well.

+

+ + + + +
+ + + + + + + + + +
string LEVEL_BASE::StringBool BOOL  b  ) 
+
+ + + + + +
+   + + +

+Convert a BOOL into a string.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
string LEVEL_BASE::StringDec UINT64  l,
UINT32  digits,
CHAR  padding
+
+ + + + + +
+   + + +

+Convert a UINT64 into a dec string. Padding can be specified as well.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
string LEVEL_BASE::StringDecSigned INT64  l,
UINT32  digits,
CHAR  padding
+
+ + + + + +
+   + + +

+Convert a INT64 into a dec string. Padding can be specified as well.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
string LEVEL_BASE::StringFlt FLT64  val,
UINT32  precision,
UINT32  width
+
+ + + + + +
+   + + +

+Convert a FLT64 into a string. Padding can be specified as well.

+

+ + + + +
+ + + + + + + + + +
string LEVEL_BASE::StringFromAddrint ADDRINT  l  ) 
+
+ + + + + +
+   + + +

+Convert a ADDRINT into a string using the hex address format.

+

+ + + + +
+ + + + + + + + + +
string LEVEL_BASE::StringFromUint64 UINT64  l  ) 
+
+ + + + + +
+   + + +

+Convert a UINT64 into a string using the hex address format.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
string LEVEL_BASE::StringHex UINT32  l,
UINT32  digits,
BOOL  prefix_0x = TRUE
+
+ + + + + +
+   + + +

+Create a string with a hexadecimal prefix containing the given hexadecimal integer.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
string LEVEL_BASE::StringHex32 UINT32  l,
UINT32  digits,
BOOL  prefix_0x
+
+ + + + + +
+   + + +

+Convert a UINT32 into a hex string. Padding can be specified as well.

+

+ + + + +
+ + + + + + + + + +
string LEVEL_BASE::StringTri TRI  t  ) 
+
+ + + + + +
+   + + +

+Convert a TRI into a string.

+


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__PHYSICAL__CONTEXT__API.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__PHYSICAL__CONTEXT__API.html new file mode 100644 index 0000000..ba4652b --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__PHYSICAL__CONTEXT__API.html @@ -0,0 +1,272 @@ + + +Pin: Physical context manipulation API + + + + +
+
+

Physical context manipulation API

+ + + + + + + + + + + + + +

Typedefs

typedef PHYSICAL_CONTEXT PHYSICAL_CONTEXT

Functions

VOID LEVEL_PINCLIENT::PIN_SetPhysicalContextReg (PHYSICAL_CONTEXT *pPhysCtxt, REG reg, ADDRINT val)
ADDRINT LEVEL_PINCLIENT::PIN_GetPhysicalContextReg (const PHYSICAL_CONTEXT *pPhysCtxt, REG reg)
VOID LEVEL_PINCLIENT::PIN_SetPhysicalContextFPState (PHYSICAL_CONTEXT *pPhysCtxt, const VOID *fpstate)
VOID LEVEL_PINCLIENT::PIN_GetPhysicalContextFPState (const PHYSICAL_CONTEXT *pPhysCtxt, VOID *fpstate)
+

Detailed Description

+This API allows the user to read and modify the Pin/tool architectural register state of the processor. The registers physical context range (enumerated in REG) is up to REG_PHYSICAL_CONTEXT_END registers and floating point state.

+The tool receives physical context in the INTERNAL_EXCEPTION_CALLBACK. At this time, the tool can read and modify individual physical register values and modify floating point state using the PIN_GetPhysicalContextReg(), PIN_SetPhysicalContextReg(), PIN_SetPhysicalContextFPState(), PIN_GetPhysicalContextFPState().


Typedef Documentation

+

+ + + + +
+ + + + +
typedef struct PHYSICAL_CONTEXT PHYSICAL_CONTEXT
+
+ + + + + +
+   + + +

+Physical state of the processor.
+ The tool should not read or modify data members of this structure directly, but must treat the structure as logically opaque and use the Physical context manipulation API functions to manage it.

+


Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_GetPhysicalContextFPState const PHYSICAL_CONTEXT pPhysCtxt,
VOID *  fpstate
+
+ + + + + +
+   + + +

+Get the floating point state of the specified physical context.

+

Parameters:
+ + + +
[in] pPhysCtxt physical context whose floating point state is retrieved
[in] fpstate pointer to the buffer that receives floating point state of the context. The size of the buffer must be at least FPSTATE_SIZE bytes. The returned state has fxsave format in IA-32 and Intel(R) 64 architectures.
+
+
Availability:
Mode: JIT
+ O/S: Windows
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
ADDRINT LEVEL_PINCLIENT::PIN_GetPhysicalContextReg const PHYSICAL_CONTEXT pPhysCtxt,
REG  reg
+
+ + + + + +
+   + + +

+Get the value of the integer register in the specified physical context.

+

Parameters:
+ + + +
[in] pPhysCtxt physical context whose register value is requested
[in] reg physical register whose value is requested (up to REG_PHYSICAL_INTEGER_END)
+
+
Returns:
value of the register in the specified context
+
Availability:
Mode: JIT
+ O/S: Windows
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_SetPhysicalContextFPState PHYSICAL_CONTEXT pPhysCtxt,
const VOID *  fpstate
+
+ + + + + +
+   + + +

+Set the given floating point state in the specified physical context.

+

Parameters:
+ + + +
[in,out] pPhysCtxt physical context whose floating point state is to be set
[in] fpstate new floating point state of the context. It must have fxsave format in IA-32 and Intel(R) 64 architectures.
+
+
Availability:
Mode: JIT
+ O/S: Windows
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_SetPhysicalContextReg PHYSICAL_CONTEXT pPhysCtxt,
REG  reg,
ADDRINT  val
+
+ + + + + +
+   + + +

+Set the given value for the integer register in the specified physical context.

+

Parameters:
+ + + + +
[in,out] pPhysCtxt physical context whose register value is to be set
[in] reg physical register whose value is to be set (up to REG_PHYSICAL_INTEGER_END)
[in] val new value of the register
+
+
Availability:
Mode: JIT
+ O/S: Windows
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__PIN__CALLBACKS.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__PIN__CALLBACKS.html new file mode 100644 index 0000000..77b0eee --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__PIN__CALLBACKS.html @@ -0,0 +1,183 @@ + + +Pin: PIN callbacks manipulation API + + + + +
+
+

PIN callbacks manipulation API

+ + + + + + + + + + + +

Typedefs

typedef COMPLEX_CALLBACKVAL_BASE * LEVEL_PINCLIENT::PIN_CALLBACK

Functions

GLOBALCONST PIN_CALLBACK LEVEL_PINCLIENT::PIN_CALLBACK_INVALID (0)
VOID LEVEL_PINCLIENT::CALLBACK_SetExecutionPriority (PIN_CALLBACK callback, INT32 priority)
INT32 LEVEL_PINCLIENT::CALLBACK_GetExecutionPriority (PIN_CALLBACK callback)
+

Detailed Description

+This API allows the user to retrieve and modify properties of the registered callback functions that were registered in Pin.

+To identify the callback on which the manipulation is done, the user has to provide the API function with a PIN_CALLBACK object. This PIN_CALLBACK object is returned from any of the callback registering functions (e.g. PIN_AddFiniFunction ()) as a return value.


Typedef Documentation

+

+ + + + +
+ + + + +
typedef COMPLEX_CALLBACKVAL_BASE* LEVEL_PINCLIENT::PIN_CALLBACK
+
+ + + + + +
+   + + +

+Container for a PIN callback

+


Function Documentation

+

+ + + + +
+ + + + + + + + + +
INT32 LEVEL_PINCLIENT::CALLBACK_GetExecutionPriority PIN_CALLBACK  callback  ) 
+
+ + + + + +
+   + + +

+Gets the execution priority of a registered callback function The highest the execution priority, the sooner it will be called relative to other similar callbacks

Parameters:
+ + +
callback Registered Callback function returned from *_Add*Function()
+
+
Returns:
INT32 The current priority value of the callback
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::CALLBACK_SetExecutionPriority PIN_CALLBACK  callback,
INT32  priority
+
+ + + + + +
+   + + +

+Sets the execution priority of a registered callback function The highest the execution priority, the sooner it will be called relative to other similar callbacks

Parameters:
+ + + +
callback Registered Callback function returned from *_Add*Function()
priority New priority to assign to the callback
+
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
GLOBALCONST PIN_CALLBACK LEVEL_PINCLIENT::PIN_CALLBACK_INVALID  ) 
+
+ + + + + +
+   + + +

+Invalid value for PIN callback

+


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__PIN__CONTROL.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__PIN__CONTROL.html new file mode 100644 index 0000000..95ba07d --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__PIN__CONTROL.html @@ -0,0 +1,3843 @@ + + +Pin: Controlling and Initializing + + + + +
+
+

Controlling and Initializing

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Classes

struct  CALL_APPLICATION_FUNCTION_PARAM

Typedefs

typedef EXCEPT_HANDLING_RESULT(* LEVEL_PINCLIENT::INTERNAL_EXCEPTION_CALLBACK )(THREADID tid, EXCEPTION_INFO *pExceptInfo, PHYSICAL_CONTEXT *pPhysCtxt, VOID *v)
typedef VOID * LEVEL_PINCLIENT::PIN_CONFIGURATION_INFO
typedef VOID(* LEVEL_PINCLIENT::REMOVE_INSTRUMENTATION_CALLBACK )(VOID *v)
typedef VOID(* LEVEL_PINCLIENT::DETACH_CALLBACK )(VOID *v)
typedef VOID(* LEVEL_PINCLIENT::DETACH_PROBED_CALLBACK )(VOID *v)
typedef VOID(* LEVEL_PINCLIENT::ATTACH_PROBED_CALLBACK )(VOID *v)
typedef VOID(* LEVEL_PINCLIENT::ATTACH_CALLBACK )(VOID *v)
typedef VOID(* LEVEL_PINCLIENT::APPLICATION_START_CALLBACK )(VOID *v)
typedef VOID(* LEVEL_PINCLIENT::PREPARE_FOR_FINI_CALLBACK )(VOID *v)
typedef VOID(* LEVEL_PINCLIENT::FINI_CALLBACK )(INT32 code, VOID *v)
typedef size_t(* LEVEL_PINCLIENT::FETCH_CALLBACK )(void *buf, ADDRINT addr, size_t size, EXCEPTION_INFO *pExceptInfo, VOID *v)
typedef VOID(* LEVEL_PINCLIENT::OUT_OF_MEMORY_CALLBACK )(size_t size, VOID *v)
typedef ADDRINT(PIN_FAST_ANALYSIS_CALL * LEVEL_PINCLIENT::MEMORY_ADDR_TRANS_CALLBACK )(PIN_MEM_TRANS_INFO *memTransInfo, VOID *v)
typedef VOID(* LEVEL_PINCLIENT::FORK_CALLBACK )(THREADID threadid, const CONTEXT *ctxt, VOID *v)
typedef VOID(* LEVEL_PINCLIENT::THREAD_START_CALLBACK )(THREADID threadIndex, CONTEXT *ctxt, INT32 flags, VOID *v)
typedef VOID(* LEVEL_PINCLIENT::THREAD_ATTACH_PROBED_CALLBACK )(VOID *sigmask, VOID *v)
typedef VOID(* LEVEL_PINCLIENT::THREAD_DETACH_PROBED_CALLBACK )(VOID *v)
typedef VOID(* LEVEL_PINCLIENT::THREAD_ATTACH_CALLBACK )(THREADID threadIndex, CONTEXT *ctxt, VOID *v)
typedef VOID(* LEVEL_PINCLIENT::THREAD_DETACH_CALLBACK )(THREADID threadIndex, const CONTEXT *ctxt, VOID *v)
typedef VOID(* LEVEL_PINCLIENT::THREAD_FINI_CALLBACK )(THREADID threadIndex, const CONTEXT *ctxt, INT32 code, VOID *v)
typedef VOID(* LEVEL_PINCLIENT::CONTEXT_CHANGE_CALLBACK )(THREADID threadIndex, CONTEXT_CHANGE_REASON reason, const CONTEXT *from, CONTEXT *to, INT32 info, VOID *v)
typedef BOOL(* LEVEL_PINCLIENT::INTERCEPT_SIGNAL_CALLBACK )(THREADID tid, INT32 sig, CONTEXT *ctxt, BOOL hasHandler, const EXCEPTION_INFO *pExceptInfo, VOID *v)
typedef VOID(* LEVEL_PINCLIENT::PROBES_INSERTED_CALLBACK )(IMG img, VOID *v)

Enumerations

enum  LEVEL_PINCLIENT::SYMBOL_INFO_MODE {
+  LEVEL_PINCLIENT::NO_SYMBOLS = 0, +
+  LEVEL_PINCLIENT::EXPORT_SYMBOLS = (1<<0), +
+  LEVEL_PINCLIENT::DEBUG_SYMBOLS = (1<<1), +
+  LEVEL_PINCLIENT::IFUNC_SYMBOLS = (1<<2), +
+  LEVEL_PINCLIENT::DEBUG_OR_EXPORT_SYMBOLS = (DEBUG_SYMBOLS | EXPORT_SYMBOLS) +
+ }
enum  LEVEL_PINCLIENT::SMC_ENABLE_DISABLE_TYPE {
+  SMC_ENABLE, +
+  SMC_DISABLE +
+ }
enum  LEVEL_PINCLIENT::FPOINT {
+  LEVEL_PINCLIENT::FPOINT_BEFORE, +
+  LEVEL_PINCLIENT::FPOINT_AFTER_IN_PARENT, +
+  LEVEL_PINCLIENT::FPOINT_AFTER_IN_CHILD +
+ }
enum  LEVEL_PINCLIENT::ATTACH_STATUS {
+  LEVEL_PINCLIENT::ATTACH_INITIATED, +
+  LEVEL_PINCLIENT::ATTACH_FAILED_DETACH +
+ }
enum  CONTEXT_CHANGE_REASON {
+  CONTEXT_CHANGE_REASON_FATALSIGNAL, +
+  CONTEXT_CHANGE_REASON_SIGNAL, +
+  CONTEXT_CHANGE_REASON_SIGRETURN, +
+  CONTEXT_CHANGE_REASON_APC, +
+  CONTEXT_CHANGE_REASON_EXCEPTION, +
+  CONTEXT_CHANGE_REASON_CALLBACK +
+ }
enum  EXCEPT_HANDLING_RESULT {
+  EHR_HANDLED, +
+  EHR_UNHANDLED, +
+  EHR_CONTINUE_SEARCH +
+ }
enum  PIN_CALLBACK_TYPE {
+  PIN_CALLBACK_TYPE_NONE = 0, +
+  PIN_CALLBACK_TYPE_SYSCALL = 1 +
+ }

Functions

VOID LEVEL_PINCLIENT::PIN_InitSymbols ()
BOOL LEVEL_PINCLIENT::PIN_InitSymbolsAlt (SYMBOL_INFO_MODE mode)
PIN_CALLBACK LEVEL_PINCLIENT::PIN_AddFollowChildProcessFunction (FOLLOW_CHILD_PROCESS_CALLBACK fun, VOID *val)
PIN_CALLBACK LEVEL_PINCLIENT::PIN_AddInternalExceptionHandler (INTERNAL_EXCEPTION_CALLBACK fun, VOID *val)
VOID LEVEL_PINCLIENT::PIN_TryStart (THREADID tid, INTERNAL_EXCEPTION_CALLBACK fun, VOID *val)
VOID LEVEL_PINCLIENT::PIN_TryEnd (THREADID tid)
BOOL LEVEL_PINCLIENT::PIN_IsProbeMode ()
BOOL LEVEL_PINCLIENT::PIN_IsAttaching ()
BOOL LEVEL_PINCLIENT::PIN_IsSafeForProbedInsertion (ADDRINT addr)
VOID LEVEL_PINCLIENT::PIN_InsertCallProbed (ADDRINT addr, AFUNPTR funptr,...)
VOID LEVEL_PINCLIENT::PIN_LockClient ()
VOID LEVEL_PINCLIENT::PIN_UnlockClient ()
VOID LEVEL_PINCLIENT::PIN_CallApplicationFunction (const CONTEXT *ctxt, THREADID tid, CALLINGSTD_TYPE cstype, AFUNPTR origFunPtr, CALL_APPLICATION_FUNCTION_PARAM *param,...)
PIN_CALLBACK LEVEL_PINCLIENT::PIN_AddFiniFunction (FINI_CALLBACK fun, VOID *val)
PIN_CALLBACK LEVEL_PINCLIENT::PIN_AddPrepareForFiniFunction (PREPARE_FOR_FINI_CALLBACK fun, VOID *val)
VOID LEVEL_PINCLIENT::PIN_AddFetchFunction (FETCH_CALLBACK fun, VOID *val)
size_t LEVEL_PINCLIENT::PIN_FetchCode (void *copyBuf, const VOID *address, size_t maxSize, EXCEPTION_INFO *pExceptInfo)
VOID LEVEL_PINCLIENT::PIN_AddOutOfMemoryFunction (OUT_OF_MEMORY_CALLBACK fun, VOID *val)
VOID LEVEL_PINCLIENT::PIN_AddMemoryAddressTransFunction (MEMORY_ADDR_TRANS_CALLBACK fun, VOID *val)
MEMORY_ADDR_TRANS_CALLBACK LEVEL_PINCLIENT::PIN_GetMemoryAddressTransFunction ()
PIN_CALLBACK LEVEL_PINCLIENT::PIN_AddDetachFunction (DETACH_CALLBACK fun, VOID *val)
PIN_CALLBACK LEVEL_PINCLIENT::PIN_AddDetachFunctionProbed (DETACH_PROBED_CALLBACK fun, VOID *val)
PIN_CALLBACK LEVEL_PINCLIENT::PIN_AddThreadStartFunction (THREAD_START_CALLBACK fun, VOID *val)
PIN_CALLBACK LEVEL_PINCLIENT::PIN_AddThreadAttachProbedFunction (THREAD_ATTACH_PROBED_CALLBACK fun, VOID *val)
PIN_CALLBACK LEVEL_PINCLIENT::PIN_AddThreadAttachFunction (THREAD_ATTACH_CALLBACK fun, VOID *val)
PIN_CALLBACK LEVEL_PINCLIENT::PIN_AddThreadDetachProbedFunction (THREAD_DETACH_PROBED_CALLBACK fun, VOID *val)
PIN_CALLBACK LEVEL_PINCLIENT::PIN_AddThreadDetachFunction (THREAD_DETACH_CALLBACK fun, VOID *val)
PIN_CALLBACK LEVEL_PINCLIENT::PIN_AddApplicationStartFunction (APPLICATION_START_CALLBACK fun, VOID *val)
PIN_CALLBACK LEVEL_PINCLIENT::PIN_AddThreadFiniFunction (THREAD_FINI_CALLBACK fun, VOID *val)
PIN_CALLBACK LEVEL_PINCLIENT::PIN_AddContextChangeFunction (CONTEXT_CHANGE_CALLBACK fun, VOID *val)
BOOL LEVEL_PINCLIENT::PIN_InterceptSignal (INT32 sig, INTERCEPT_SIGNAL_CALLBACK fun, VOID *val)
BOOL LEVEL_PINCLIENT::PIN_UnblockSignal (INT32 sig, BOOL enable)
VOID LEVEL_PINCLIENT::PIN_SetSmcSupport (SMC_ENABLE_DISABLE_TYPE enable_disable)
PIN_CALLBACK LEVEL_PINCLIENT::PIN_AddProbesInsertedFunction (PROBES_INSERTED_CALLBACK fun, VOID *val)
PIN_CALLBACK LEVEL_PINCLIENT::PIN_AddForkFunction (FPOINT point, FORK_CALLBACK fun, VOID *val)
VOID LEVEL_PINCLIENT::PIN_RemoveInstrumentation ()
VOID LEVEL_PINCLIENT::PIN_RemoveInstrumentationInRange (ADDRINT start, ADDRINT end)
VOID LEVEL_PINCLIENT::PIN_RemoveFiniFunctions ()
VOID LEVEL_PINCLIENT::PIN_Detach ()
ATTACH_STATUS LEVEL_PINCLIENT::PIN_Attach (ATTACH_CALLBACK fun, VOID *val)
VOID LEVEL_PINCLIENT::PIN_DetachProbed ()
ATTACH_STATUS LEVEL_PINCLIENT::PIN_AttachProbed (ATTACH_PROBED_CALLBACK fun, VOID *val)
PIN_CONFIGURATION_INFO LEVEL_PINCLIENT::PIN_CreateDefaultConfigurationInfo ()
VOID LEVEL_PINCLIENT::PIN_SetAllowedConcurrentCallbacks (PIN_CONFIGURATION_INFO options, PIN_CALLBACK_TYPE callbackType)
VOID LEVEL_PINCLIENT::PIN_StartProgram (PIN_CONFIGURATION_INFO options=PIN_CreateDefaultConfigurationInfo())
VOID LEVEL_PINCLIENT::PIN_StartProgramProbed ()
BOOL LEVEL_PINCLIENT::PIN_Init (INT32 argc, CHAR **argv)
CHAR * LEVEL_PINCLIENT::PIN_VmFullPath ()
const CHAR * LEVEL_PINCLIENT::PIN_ToolFullPath ()
size_t LEVEL_PINCLIENT::PIN_SafeCopy (VOID *dst, const VOID *src, size_t size)
size_t LEVEL_PINCLIENT::PIN_SafeCopyEx (VOID *dst, const VOID *src, size_t size, EXCEPTION_INFO *pExceptInfo)
BOOL LEVEL_PINCLIENT::PIN_IsActionPending (THREADID tid)
UINT32 LEVEL_PINCLIENT::PIN_GetInitialThreadCount ()
BOOL LEVEL_PINCLIENT::PIN_CheckReadAccess (VOID *addr)
BOOL LEVEL_PINCLIENT::PIN_CheckWriteAccess (VOID *addr)
ADDRINT LEVEL_PINCLIENT::PIN_GetAuxVectorValue (ADDRINT type, bool *found)
+

Detailed Description

+This group of functions is used to initialize Pin, start the application, and a call backs for events like application exit.

Typedef Documentation

+

+ + + + +
+ + + + +
typedef VOID(* LEVEL_PINCLIENT::APPLICATION_START_CALLBACK)(VOID *v)
+
+ + + + + +
+   + + +

+Call back function when pin initialization is finished.

+

Parameters:
+ + +
[in] v The tool's call-back value.
+
+
+

+ + + + +
+ + + + +
typedef VOID(* LEVEL_PINCLIENT::ATTACH_CALLBACK)(VOID *v)
+
+ + + + + +
+   + + +

+Call back function when Pin attaches to application in JIT mode

+

Parameters:
+ + +
[in] v The tool's call-back value.
+
+
+

+ + + + +
+ + + + +
typedef VOID(* LEVEL_PINCLIENT::ATTACH_PROBED_CALLBACK)(VOID *v)
+
+ + + + + +
+   + + +

+Call back function when Pin attaches to application in Probe mode

+

Parameters:
+ + +
[in] v The tool's call-back value.
+
+
+

+ + + + +
+ + + + +
typedef VOID(* LEVEL_PINCLIENT::CONTEXT_CHANGE_CALLBACK)(THREADID threadIndex, CONTEXT_CHANGE_REASON reason, const CONTEXT *from, CONTEXT *to, INT32 info, VOID *v)
+
+ + + + + +
+   + + +

+Call-back function when application changes context.

+

Parameters:
+ + + + + + + +
[in] threadIndex The Pin thread ID of the thread that changes contexts.
[in] reason Cause of the context change.
[in] from Application's register state prior to the context change (NULL if reason is CONTEXT_CHANGE_REASON_CALLBACK).
[in] to Application's register state after context change (NULL if reason is CONTEXT_CHANGE_REASON_FATALSIGNAL). The tool may change this and affect the new register state.
[in] info Additional information (depends on reason):
    +
  • CONTEXT_CHANGE_REASON_FATALSIGNAL: The Unix signal number.
  • +
  • CONTEXT_CHANGE_REASON_SIGNAL: The Unix signal number.
  • +
  • CONTEXT_CHANGE_REASON_EXCEPTION: The Windows exception code.
  • +
+
[in] v The tool's call-back value.
+
+
+

+ + + + +
+ + + + +
typedef VOID(* LEVEL_PINCLIENT::DETACH_CALLBACK)(VOID *v)
+
+ + + + + +
+   + + +

+Call back function when Pin detaches from application in JIT mode

+

Parameters:
+ + +
[in] v The tool's call-back value.
+
+
+

+ + + + +
+ + + + +
typedef VOID(* LEVEL_PINCLIENT::DETACH_PROBED_CALLBACK)(VOID *v)
+
+ + + + + +
+   + + +

+Call back function when Pin detaches from application in Probe mode

+

Parameters:
+ + +
[in] v The tool's call-back value.
+
+
+

+ + + + +
+ + + + +
typedef size_t(* LEVEL_PINCLIENT::FETCH_CALLBACK)(void *buf, ADDRINT addr, size_t size, EXCEPTION_INFO *pExceptInfo, VOID *v)
+
+ + + + + +
+   + + +

+Call back function that Pin will use to fetch code bytes to be jitted.

+

Parameters:
+ + + + + + +
[out] buf A buffer which receives the fetched instruction bytes. This buffer is at least size bytes long.
[in] addr Starting address from which instruction bytes should be fetched.
[in] size The number of bytes that should be fetched.
[out] pExceptInfo If less than size bytes are fetched, pExceptInfo receives an exception that describes why more bytes could not be fetched. If Pin needs more bytes to decode the next instruction, this exception will be delivered to the application.
[in] v The tool's call-back value.
+
+
Returns:
The number of bytes sucessfully fetched into buf. This may be less than size (or even zero) if Pin attempts to fetch instructions from an invalid address.
+
+

+ + + + +
+ + + + +
typedef VOID(* LEVEL_PINCLIENT::FINI_CALLBACK)(INT32 code, VOID *v)
+
+ + + + + +
+   + + +

+Call back function when application exits. It is called after all the per thread fini functions were called (registered via PIN_AddThreadFiniFunction). This function may be called on any application thread or internal thread spawned by the tool.

+

Note:
It is prohibited to access the TLS in this callback.
+
Parameters:
+ + + +
[in] code O/S specific termination code for the application.
[in] v The tool's call-back value.
+
+
+

+ + + + +
+ + + + +
typedef VOID(* LEVEL_PINCLIENT::FORK_CALLBACK)(THREADID threadid, const CONTEXT *ctxt, VOID *v)
+
+ + + + + +
+   + + +

+Call-back function when the application forks.

+

Parameters:
+ + + + +
[in] threadId Thread index
[in] ctxt Register state immediately before/after the fork.
[in] v The tool's call-back value.
+
+
+

+ + + + +
+ + + + +
typedef BOOL(* LEVEL_PINCLIENT::INTERCEPT_SIGNAL_CALLBACK)(THREADID tid, INT32 sig, CONTEXT *ctxt, BOOL hasHandler, const EXCEPTION_INFO *pExceptInfo, VOID *v)
+
+ + + + + +
+   + + +

+Call back function when the tool intercepts a signal with PIN_InterceptSignal().

+

Parameters:
+ + + + + + + +
[in] tid The Pin thread ID of the thread that handled the signal.
[in] sig The signal number.
[in,out] ctxt The application's register state when it was interrupted by the signal. The tool may change this context if desired. If so, the application continues at the modified context. Or, if the application's signal handler is invoked, the handler is passed the modified context for its return context.
[in] hasHandler TRUE if the application has a handler registered for this signal.
[in] pExceptInfo If the signal represents an exception, pExceptInfo points to a description of the exception. If the signal is not an exception, pExceptInfo is NULL.
[in] v The tool's call-back value.
+
+
Returns:
Returning TRUE tells Pin to pass the signal on to the application. Returning FALSE tells Pin to squash the signal and execution resumes at ctxt.
+
+

+ + + + +
+ + + + +
typedef EXCEPT_HANDLING_RESULT(* LEVEL_PINCLIENT::INTERNAL_EXCEPTION_CALLBACK)(THREADID tid, EXCEPTION_INFO *pExceptInfo, PHYSICAL_CONTEXT *pPhysCtxt, VOID *v)
+
+ + + + + +
+   + + +

+Handler (call-back) function when pin/tool generates internal exception. This function can be registered via PIN_AddInternalExceptionHandler() or PIN_TryStart(). This function becomes active only after APPLICATION_START_CALLBACK notification is delivered. Any internal exception prior to this event can't be handled.

+If the exception occurred while analysis routine is executed, it is legal to modify the execution control path using functions such as PIN_RaiseException() or PIN_ExecuteAt(). In this case, any per-thread INTERNAL_EXCEPTION_CALLBACK function registered via PIN_TryStart() will be unregistered automatically (similar semantics to PIN_TryEnd() for all registered notifications)

+

Note:
It is unsupported to call PIN_CallApplicationFunction() in the scope of this callback
+
Parameters:
+ + + + + +
[in] tid The Pin thread ID of the thread that generated the exception.
[in,out] pExceptInfo Pointer to the EXCEPTION_INFO structure that describes the exception. If the exception should be raised in the context of the application (using PIN_RaiseException()), The tool should update the exception info to match the OS logic (e.g. update exception address using PIN_SetExceptionAddress()).
[in,out] pPhysCtxt Physical register state when the exception was generated. The tool can change pPhysCtxt (make sure that if PIN_TryStart() was called, matching PIN_TryEnd() will be called)
[in] v The tool's call-back value.
+
+
Returns:
an EXCEPT_HANDLING_RESULT value
+
+

+ + + + +
+ + + + +
typedef ADDRINT(PIN_FAST_ANALYSIS_CALL * LEVEL_PINCLIENT::MEMORY_ADDR_TRANS_CALLBACK)(PIN_MEM_TRANS_INFO *memTransInfo, VOID *v)
+
+ + + + + +
+   + + +

+Call back function for pin/tool to modify memory address arguments in analysis routines. This feature allows users to register for a callback immediately prior to an analysis routine which gets one of the four IARG_MEMORY*_PTR as a parameter. The callback enables the user to manipulate the memory address pointed to by the aforementioned parameter. This function can be registered via PIN_AddMemoryAddressTransFunction(). This function is called from the jitted code, so calls to this function are not serialized.

+

Parameters:
+ + + +
[in] memTransInfo Memory address data structure
[in] v The tool's call-back value
+
+
+

+ + + + +
+ + + + +
typedef VOID(* LEVEL_PINCLIENT::OUT_OF_MEMORY_CALLBACK)(size_t size, VOID *v)
+
+ + + + + +
+   + + +

+Call back function when pin/tool is out of memory. This function can be registered via PIN_AddOutOfMemoryFunction().

+

Parameters:
+ + + +
[in] size Size of the failed allocation
[in] v The tool's call-back value
+
+
+

+ + + + +
+ + + + +
typedef VOID* LEVEL_PINCLIENT::PIN_CONFIGURATION_INFO
+
+ + + + + +
+   + + +

+Global configuration for Pin. Currently, this configuration includes whether Pin should serialize calls to some callbacks (for backward compatibility) or if it should concurrently call the callbacks (better for multi-threaded performance).

+See also: PIN_SetAllowedConcurrentCallbacks()

+

Note:
A new instance of PIN_CONFIGURATION_INFO with default values should be created with PIN_CreateDefaultConfigurationInfo()
+
+

+ + + + +
+ + + + +
typedef VOID(* LEVEL_PINCLIENT::PREPARE_FOR_FINI_CALLBACK)(VOID *v)
+
+ + + + + +
+   + + +

+Call back function invoked when Pin is about to detach from terminating process. The function that is registered by this callback may gracefully finish all the internal threads of the tool, e.g.

    +
  • Force all the internal threads of the tool to finish using return from the main function of the thread or calling PIN_ExitThread.
  • Wait until all the internal threads are finished before it will continue to run.
    Note:
    : normal run of the internal threads after exit from all registered call back functions of this type is not guaranteed.

    +: If current thread is an internal thread, do not finish it in this callback!

    +This function is invoked in thread that initiated process termination. This function is registered via PIN_AddPrepareForFiniFunction().
+

+

Parameters:
+ + +
[in] v The tool's call-back value
+
+
+

+ + + + +
+ + + + +
typedef VOID(* LEVEL_PINCLIENT::PROBES_INSERTED_CALLBACK)(IMG img, VOID *v)
+
+ + + + + +
+   + + +

+Callback function when probe insertion is complete.

+

Parameters:
+ + + +
[in] img Image.
[in] v The tool's call-back value.
+
+
+

+ + + + +
+ + + + +
typedef VOID(* LEVEL_PINCLIENT::REMOVE_INSTRUMENTATION_CALLBACK)(VOID *v)
+
+ + + + + +
+   + + +

+Call back function when Pin removes all old instrumented code from its cache

+

Parameters:
+ + +
[in] v The tool's call-back value.
+
+
+

+ + + + +
+ + + + +
typedef VOID(* LEVEL_PINCLIENT::THREAD_ATTACH_CALLBACK)(THREADID threadIndex, CONTEXT *ctxt, VOID *v)
+
+ + + + + +
+   + + +

+Call-back function when an attached thread starts to run under Pin in JIT mode.

+

Parameters:
+ + + + +
[in] threadIndex The Pin thread ID of the terminating thread.
[in] ctxt Register state of the thread.
[in] v The tool's call-back value.
+
+
+

+ + + + +
+ + + + +
typedef VOID(* LEVEL_PINCLIENT::THREAD_ATTACH_PROBED_CALLBACK)(VOID *sigmask, VOID *v)
+
+ + + + + +
+   + + +

+Call-back function when an attached thread starts to run under Pin in probe mode. The tool receives the signal mask at the attach point and can modify it. The changes to this value will be applied when the thread continues to run. Pin does not validate the new signal mask so tools must take extra care when modifying this value.

+

Parameters:
+ + + +
[in,out] sigmask The thread's signal mask at the attach point. The tool may change this and affect the signal mask once the thread starts running again.
[in] v The tool's call-back value.
+
+
+

+ + + + +
+ + + + +
typedef VOID(* LEVEL_PINCLIENT::THREAD_DETACH_CALLBACK)(THREADID threadIndex, const CONTEXT *ctxt, VOID *v)
+
+ + + + + +
+   + + +

+Call-back function before an application thread is detached from Pin in JIT mode. The callback is received in the thread native context before Pin detach.

+

Parameters:
+ + + + +
[in] threadIndex The Pin thread ID of the terminating thread.
[in] ctxt Register state of the thread immediately before it detaches.
[in] v The tool's call-back value.
+
+
+

+ + + + +
+ + + + +
typedef VOID(* LEVEL_PINCLIENT::THREAD_DETACH_PROBED_CALLBACK)(VOID *v)
+
+ + + + + +
+   + + +

+Call-back function before an application thread is being detached from Pin in probe mode. The callback is received in the thread native context before probes removal.

+

Parameters:
+ + +
[in] v The tool's call-back value.
+
+
+

+ + + + +
+ + + + +
typedef VOID(* LEVEL_PINCLIENT::THREAD_FINI_CALLBACK)(THREADID threadIndex, const CONTEXT *ctxt, INT32 code, VOID *v)
+
+ + + + + +
+   + + +

+Call-back function when thread ends.

+

Note:
This function may be called on a different thread than the given threadIndex.
+
Parameters:
+ + + + + +
[in] threadIndex The Pin thread ID of the terminating thread.
[in] ctxt Register state of the thread immediately before it terminates.
[in] code O/S specific termination code for the thread.
[in] v The tool's call-back value.
+
+
+

+ + + + +
+ + + + +
typedef VOID(* LEVEL_PINCLIENT::THREAD_START_CALLBACK)(THREADID threadIndex, CONTEXT *ctxt, INT32 flags, VOID *v)
+
+ + + + + +
+   + + +

+Call-back function when thread begins.

+

Parameters:
+ + + + + +
[in] threadIndex The Pin thread ID of the new thread.
[in] ctxt Initial register state for the new thread. The tool may change this.
[in] flags O/S specific flags for the new thread.
[in] v The tool's call-back value.
+
+
+


Enumeration Type Documentation

+

+ + + + +
+ + + + +
enum LEVEL_PINCLIENT::ATTACH_STATUS
+
+ + + + + +
+   + + +

+Return values of PIN_Attach() and PIN_AttachProbed() which describe the status of the attach request.

Enumerator:
+ + + +
ATTACH_INITIATED  +Attach request was delivered successfully to PIN.
ATTACH_FAILED_DETACH  +Attach request was not delivered to Pin since detach session hasn't completed yet.
+
+
+

+ + + + +
+ + + + +
enum CONTEXT_CHANGE_REASON
+
+ + + + + +
+   + + +

+Possible reasons for an application context change.

Enumerator:
+ + + + + + + +
CONTEXT_CHANGE_REASON_FATALSIGNAL  +Receipt of fatal Unix signal.
CONTEXT_CHANGE_REASON_SIGNAL  +Receipt of handled Unix signal.
CONTEXT_CHANGE_REASON_SIGRETURN  +Return from Unix signal handler.
CONTEXT_CHANGE_REASON_APC  +Receipt of Windows APC.
CONTEXT_CHANGE_REASON_EXCEPTION  +Receipt of Windows exception.
CONTEXT_CHANGE_REASON_CALLBACK  +Receipt of Windows call-back.
+
+
+

+ + + + +
+ + + + +
enum EXCEPT_HANDLING_RESULT
+
+ + + + + +
+   + + +

+Possible return values of the INTERNAL_EXCEPTION_CALLBACK exception filter function

Enumerator:
+ + + + +
EHR_HANDLED  +Exception is handled. Continue execution with the internal physical context.
EHR_UNHANDLED  +Exception is not handled. Execute default system procedure for unhandled exceptions (Windows) or abort the process (Unix)
EHR_CONTINUE_SEARCH  +Execute next (upper level) exception filter function, if any. For the uppermost filter, this is the same as EHR_UNHANDLED semantics
+
+
+

+ + + + +
+ + + + +
enum LEVEL_PINCLIENT::FPOINT
+
+ + + + + +
+   + + +

+time of callback notification

Enumerator:
+ + + + +
FPOINT_BEFORE  +Call-back in parent, just before fork.
FPOINT_AFTER_IN_PARENT  +Call-back in parent, immediately after fork.
FPOINT_AFTER_IN_CHILD  +Call-back in child, immediately after fork.
+
+
+

+ + + + +
+ + + + +
enum PIN_CALLBACK_TYPE
+
+ + + + + +
+   + + +

+Types of Pin callbacks. These type could be used with the function PIN_SetAllowedConcurrentCallbacks()

Enumerator:
+ + + +
PIN_CALLBACK_TYPE_NONE  +None of the callback types.
PIN_CALLBACK_TYPE_SYSCALL  +Syscall entry/exit callback.
+
+
+

+ + + + +
+ + + + +
enum LEVEL_PINCLIENT::SMC_ENABLE_DISABLE_TYPE
+
+ + + + + +
+   + + +

+Enum for controlling Pin's SMC detection

+

+ + + + +
+ + + + +
enum LEVEL_PINCLIENT::SYMBOL_INFO_MODE
+
+ + + + + +
+   + + +

+List of supported modes of symbolic information delivery. Used in PIN_InitSymbolsAlt().

Enumerator:
+ + + + + + +
NO_SYMBOLS  +No symbols required.
EXPORT_SYMBOLS  +Only symbols taken from export table are provided (Windows only).
DEBUG_SYMBOLS  +Debug symbols (Windows only, currently implemented as DEBUG_OR_EXPORT_SYMBOLS).
IFUNC_SYMBOLS  +IFUNC symbols (Linux only).
DEBUG_OR_EXPORT_SYMBOLS  +First debug symbols if available, otherwise export symbols (Windows only)
+
+
+


Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
PIN_CALLBACK LEVEL_PINCLIENT::PIN_AddApplicationStartFunction APPLICATION_START_CALLBACK  fun,
VOID *  val
+
+ + + + + +
+   + + +

+Register a notification function that is called after pin initialization is finished. This notification function is available when pin launches the application and when pin attaches to a running process.

+When pin launches the application, this notification function is called on the application's main thread.

+When pin attaches to a running process, this notification function is called on a dedicated thread which is not part of the application's threads.
+ When it is called, all the application's threads are paused by Pin and are about to be released.
+ No new threads can be created by the application at this time.

+When Pin starts running a program, it calls into the tool several times in the following order:
+ 1. Calls the tool's main() function.
+ 2. If the tool set up a notification with IMG_AddInstrumentFunction(), Pin calls this call-back for each image that is already loaded in the application's address space at the point when Pin attaches to it.
+ 3. Calls any notification call-backs set up with PIN_AddApplicationStartFunction().
+

+

Parameters:
+ + + +
[in] fun Function to be called at application start.
[in] val Value to pass to the function.
+
+
Returns:
PIN_CALLBACK A handle to a callback that can be used to further modify this callback's properties
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: JIT & Probe
+ O/S: Windows, Linux
+ CPU: IA-32, Intel(R) 64
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
PIN_CALLBACK LEVEL_PINCLIENT::PIN_AddContextChangeFunction CONTEXT_CHANGE_CALLBACK  fun,
VOID *  val
+
+ + + + + +
+   + + +

+Register a notification function that is called immediately before the application changes context due to receipt of an asynchronous event such as Unix signal or Windows APC.

+

Parameters:
+ + + +
[in] fun Call-back function to execute immediately before the application changes context.
[in] val Value to pass to the function.
+
+
Returns:
PIN_CALLBACK A handle to a callback that can be used to further modify this callback's properties
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
PIN_CALLBACK LEVEL_PINCLIENT::PIN_AddDetachFunction DETACH_CALLBACK  fun,
VOID *  val
+
+ + + + + +
+   + + +

+Call func immediately before Pin relinquishes control of the application through PIN_Detach().

+At this stage no more instrumentation/analysis callbacks will be called

+This function is called one time for the process. It may be called by any thread. Pin memory is not freed at this moment.

+

Parameters:
+ + + +
fun Call back function to execute before detaching
val Value to be passed to fun when it is called
+
+
Returns:
PIN_CALLBACK A handle to a callback that can be used to further modify this callback's properties
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Linux, OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
PIN_CALLBACK LEVEL_PINCLIENT::PIN_AddDetachFunctionProbed DETACH_PROBED_CALLBACK  fun,
VOID *  val
+
+ + + + + +
+   + + +

+Register a notification function that is called immediately after Pin relinquishes control of the application through PIN_DetachProbed(). There can be more than one Detach callback function.
+ When this callback function is called, it is guaranteed that Pin removed all probes from the application code and that no other callback function will be called afterwards (except from additional Detach callback functions).
+

+

Parameters:
+ + + +
fun Call back function to execute before detaching
val Value to be passed to fun when it is called
+
+
Returns:
PIN_CALLBACK A handle to a callback that can be used to further modify this callback's properties
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: Probe
+ O/S: Windows, Linux
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_AddFetchFunction FETCH_CALLBACK  fun,
VOID *  val
+
+ + + + + +
+   + + +

+Called to register a function That will become the function that Pin calls to fetch application instructions. Pin sometimes attempt to fetch instructions from an invalid address, and the call-back needs to handle this correctly. If multiple functions are registered using this API, only the last one registered is used

+Pin cannot automatically detect self-modifying code (SMC) when a tool uses this API. Therefore, such tools take over responsibility for detecting SMC and must explicitly regenerate all traces within a modified code range if such was detected using PIN_RemoveInstrumentationInRange.

+

Parameters:
+ + + +
[in] fun The tool's call-back function.
[in] val The tool's call-back value.
+
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
PIN_CALLBACK LEVEL_PINCLIENT::PIN_AddFiniFunction FINI_CALLBACK  fun,
VOID *  val
+
+ + + + + +
+   + + +

+Call func immediately before the application exits. The function is not an instrumentation function--it cannot insert instrumentation. There can be more than one Fini function.

+

Parameters:
+ + + +
fun Call back function is passed exit code and val
val Value to be passed to fun when it is called
+
+
Returns:
PIN_CALLBACK A handle to a callback that can be used to further modify this callback's properties
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
PIN_CALLBACK LEVEL_PINCLIENT::PIN_AddFollowChildProcessFunction FOLLOW_CHILD_PROCESS_CALLBACK  fun,
VOID *  val
+
+ + + + + +
+   + + +

+Register a notification function that is called before a child/exec-ed process is starting to execute

+NOTE: Only one callback can be registered

+

Parameters:
+ + + +
[in] fun Call-back function
[in] val Value to pass to the function
+
+
Returns:
PIN_CALLBACK A handle to a callback that can be used to further modify this callback's properties
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: JIT & Probe
+ O/S: Windows, Linux, MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
PIN_CALLBACK LEVEL_PINCLIENT::PIN_AddForkFunction FPOINT  point,
FORK_CALLBACK  fun,
VOID *  val
+
+ + + + + +
+   + + +

+Register a notification handler that is called when the application forks a new process. The function can only be used on Linux.

+

Parameters:
+ + + + +
[in] where Tells when to make the call-back and tells whether the parent or child makes the call-back.
[in] fun Call-back function to execute.
[in] v Value passed as final parameter to call-back.
+
+
Returns:
PIN_CALLBACK A handle to a callback that can be used to further modify this callback's properties
+If the fork function fails, the FPOINT_AFTER_IN_PARENT function, if it exists, is still called.

+

Note:
The pin client is obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Linux, OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
PIN_CALLBACK LEVEL_PINCLIENT::PIN_AddInternalExceptionHandler INTERNAL_EXCEPTION_CALLBACK  fun,
VOID *  val
+
+ + + + + +
+   + + +

+Register a global (not per-thread) notification handler function that is called upon receipt of any unhandled internal exception in Pin or the tool. This handler does not catch exceptions that are generated by the application, nor does it catch exceptions that are handled by PIN_TryStart() / PIN_TryEnd(). The handler is active for all the application's threads, it should be called in tool's main() before PIN_StartProgram(). If it is called after PIN_StartProgram() is called, it will be ignored. The user can register up to MAX_IEH_CALLBACKS global notification functions.

+

Note:
This function should be used for permanent global call-back registration (as opposed to PIN_TryStart() / PIN_TryEnd() pair which should be used for function scope registration).
+
Parameters:
+ + + +
[in] fun Handler function to execute upon receipt of internal exception in pin/tool.
[in] val Value to pass to the function.
+
+
Returns:
PIN_CALLBACK A handle to a callback that can be used to further modify this callback's properties
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Windows
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_AddMemoryAddressTransFunction MEMORY_ADDR_TRANS_CALLBACK  fun,
VOID *  val
+
+ + + + + +
+   + + +

+Register a callback for modifying memory address arguments that are passed to analysis routines. See MEMORY_ADDR_TRANS_CALLBACK for usage details.
+

+Only one such callback may be registered.
+

+

Parameters:
+ + + +
fun Call back function is passed the thread id, address, size, read
val Value to be passed to fun when it is called
+
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_AddOutOfMemoryFunction OUT_OF_MEMORY_CALLBACK  fun,
VOID *  val
+
+ + + + + +
+   + + +

+Register a notification function that is called when pin/tool is out of memory.
+ Try to reduce memory consumption when this notification function is called.
+ Any implicit or explicit usage of malloc()/realloc() etc. in this notification function might cause an infinite recursion.
+ The call to the notification function is NOT serialized by pin. The user can't assume anything about the locks state while the notification is delivered (as out of memory condition can occur anywhere). Avoid dead-locks by careful design of the notification function.
+

+A tool can register only one notification function.
+ A new notification function registration overwrites any previous registration.
+ To disable the notification function, pass a NULL function pointer.
+

+

Parameters:
+ + + +
fun Call back function is passed the size of the failing allocation
val Value to be passed to fun when it is called
+
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: JIT & PROBE
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
PIN_CALLBACK LEVEL_PINCLIENT::PIN_AddPrepareForFiniFunction PREPARE_FOR_FINI_CALLBACK  fun,
VOID *  val
+
+ + + + + +
+   + + +

+Register a function to be called when the application is about to exit. The registered function will be executed in a thread that initiated the exit and currently does not hold any thread synchronization lock in Pin. It means that this callback function can be executed concurrently with other Pin callbacks and APIs.
+ All callbacks registered by this function will be executed before any callback registered by the PIN_AddFiniFunction() function.

+

Parameters:
+ + + +
fun Callback function to be registered
val Value to be passed to fun when it is called
+
+
Returns:
PIN_CALLBACK A handle to a callback that can be used to further modify this callback's properties
+
Note:
Function registered by this API after application exit is started, may not be executed.

+The pin client lock is obtained during the call of this API.

+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
PIN_CALLBACK LEVEL_PINCLIENT::PIN_AddProbesInsertedFunction PROBES_INSERTED_CALLBACK  fun,
VOID *  val
+
+ + + + + +
+   + + +

+Register a notification function that is called when Pin has inserted all probes.

+

Parameters:
+ + + + +
[in] img Image.
[in] fun Callback function to execute when probe insertion is complete.
[in] val Value to pass to the function.
+
+
Returns:
PIN_CALLBACK A handle to a callback that can be used to further modify this callback's properties
+
Note:
The pin client is obtained during the call of this API.
+
Availability:
Mode: Probe
+ O/S: Linux, Windows
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
PIN_CALLBACK LEVEL_PINCLIENT::PIN_AddThreadAttachFunction THREAD_ATTACH_CALLBACK  fun,
VOID *  val
+
+ + + + + +
+   + + +

+This API is useful when Pin is run in JIT mode and attaches to a running process. Tools may use this API to register a notification that is called by each application thread.

+After Pin attaches to the process, Pin first notifies the tool of any images that are loaded (see IMG_AddInstrumentFunction()) and then notifies the tool that initialization is complete (see PIN_AddApplicationStartFunction()). After that, each thread in the application calls the notification set up by PIN_AddThreadAttachFunction(). After each thread returns from this notification, it resumes execution in the application code.

+Note, this notification happens only for threads that exist in the process at the time that Pin attaches.

+It does not happen for the following threads: 1. Threads that are created in the process after Pin is already attached. 2. Internal threads spawned by Pin tool when Pin re-attaches to the application.

+

Parameters:
+ + + +
[in] fun Call-back function to execute for the attached thread.
[in] val Value to pass to the function.
+
+
Returns:
PIN_CALLBACK A handle to a callback that can be used to further modify this callback's properties
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
PIN_CALLBACK LEVEL_PINCLIENT::PIN_AddThreadAttachProbedFunction THREAD_ATTACH_PROBED_CALLBACK  fun,
VOID *  val
+
+ + + + + +
+   + + +

+This API is useful when Pin is run in probe mode and attaches to a running process. Tools may use this API to register a notification that is called by each application thread.

+After Pin attaches to the process, Pin first notifies the tool of any images that are loaded (see IMG_AddInstrumentFunction()) and then notifies the tool that initialization is complete (see PIN_AddApplicationStartFunction()). After that, each thread in the application calls the notification set up by PIN_AddThreadAttachProbedFunction(). After each thread returns from this notification, it resumes execution in the application code.

+Note, this notification happens only for threads that exist in the process at the time that Pin attaches. It does not happen for threads that are created in the process after Pin is already attached.

+

Parameters:
+ + + +
[in] fun Call-back function to execute for the attached thread.
[in] val Value to pass to the function.
+
+
Returns:
PIN_CALLBACK A handle to a callback that can be used to further modify this callback's properties
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: Probe
+ O/S: Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
PIN_CALLBACK LEVEL_PINCLIENT::PIN_AddThreadDetachFunction THREAD_DETACH_CALLBACK  fun,
VOID *  val
+
+ + + + + +
+   + + +

+This API is useful when Pin runs in JIT mode and detaches from a running process. Tools may use this API to register a notification that is called by each application thread before Pin detaches from the thread. This notification is given in the thread native context.

+Note, this notification happens only for application threads that exist in the process at the time that Pin detaches. It does not happen for the following threads: 1. Threads that are created in the process after Pin is already detached. 2. Internal threads spawned by Pin tool.

+

Parameters:
+ + + +
[in] fun Call-back function to execute by the detaching thread.
[in] val Value to pass to the function.
+
+
Returns:
PIN_CALLBACK A handle to a callback that can be used to further modify this callback's properties
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Linux
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
PIN_CALLBACK LEVEL_PINCLIENT::PIN_AddThreadDetachProbedFunction THREAD_DETACH_PROBED_CALLBACK  fun,
VOID *  val
+
+ + + + + +
+   + + +

+This API is useful when Pin runs in probe mode and detaches from a running process. Tools may use this API to register a notification that is called by each application thread before any probes removal. This notification is given in the thread native context.

+Note, this notification happens only for threads that exist in the process at the time that Pin detaches. It does not happen for threads that are created in the process after Pin is already detached.

+

Parameters:
+ + + +
[in] fun Call-back function to execute by the detaching thread.
[in] val Value to pass to the function.
+
+
Returns:
PIN_CALLBACK A handle to a callback that can be used to further modify this callback's properties
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: Probe
+ O/S: Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
PIN_CALLBACK LEVEL_PINCLIENT::PIN_AddThreadFiniFunction THREAD_FINI_CALLBACK  fun,
VOID *  val
+
+ + + + + +
+   + + +

+Register a notification function that is called when an application thread terminates. The call-back happens even for the application's root (initial) thread.

+The notification call-back will often happen on the physical thread that is exiting, but under some circumstances it will be called on a different physical thread.

+

Parameters:
+ + + +
[in] fun Call-back function to execute for the terminating thread.
[in] val Value to pass to the function.
+
+
Returns:
PIN_CALLBACK A handle to a callback that can be used to further modify this callback's properties
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
PIN_CALLBACK LEVEL_PINCLIENT::PIN_AddThreadStartFunction THREAD_START_CALLBACK  fun,
VOID *  val
+
+ + + + + +
+   + + +

+Register a notification function that is called when a thread starts executing in the application. The call-back happens even for the application's root (initial) thread.

+

Parameters:
+ + + +
[in] fun Call-back function to execute for the new thread.
[in] val Value to pass to the function.
+
+
Returns:
PIN_CALLBACK A handle to a callback that can be used to further modify this callback's properties
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
ATTACH_STATUS LEVEL_PINCLIENT::PIN_Attach ATTACH_CALLBACK  fun,
VOID *  val
+
+ + + + + +
+   + + +

+Initiate Pin attach request in JIT mode. If Pin was not detached (using PIN_DetachProbed()) this function will be ignored.
+ The given notification function will be called immediately after Pin regains control of the application. It is expected that in the scope of this callback, the tool will register callbacks (e.g. IMG_AddInstrumentFunction()) and will reconfigure itself (if needed). In order to change tool's KNOB value, use KNOB: Basics

+

Note:
Pin's state can't be reconfigured in the scope of the callback function (don't use PIN_Init(), PIN_InitSymbols(), PIN_StartProgramProbed() etc.)
+
Parameters:
+ + + +
fun Call back function to execute when starting to attach
val Value to be passed to fun when it is called
+
+
Returns:
status of attach request (ATTACH_STATUS)
+
Note:
The vm and pin client locks are obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Windows, Linux
+ CPU: IA32, Intel64
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
ATTACH_STATUS LEVEL_PINCLIENT::PIN_AttachProbed ATTACH_PROBED_CALLBACK  fun,
VOID *  val
+
+ + + + + +
+   + + +

+Initiate Pin attach request in probe mode. If Pin was not detached (using PIN_DetachProbed()) this function will be ignored.
+ The given notification function will be called immediately after Pin regain control of the application. It is expected that in the scope of this callback, the tool will register callbacks (e.g. IMG_AddInstrumentFunction()) and will reconfigure itself (if needed). In order to change tool's KNOB value, use KNOB: Basics

+

Note:
Pin's state can't be reconfigured in the scope of the callback function (don't use PIN_Init(), PIN_InitSymbols(), PIN_StartProgramProbed() etc.)
+
Parameters:
+ + + +
fun Call back function to execute when starting to attach
val Value to be passed to fun when it is called
+
+
Returns:
status of attach request (ATTACH_STATUS)
+
Note:
The vm and pin client locks are obtained during the call of this API.
+
Availability:
Mode: Probe
+ O/S: Windows, Linux
+ CPU: IA32, Intel64
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_CallApplicationFunction const CONTEXT ctxt,
THREADID  tid,
CALLINGSTD_TYPE  cstype,
AFUNPTR  origFunPtr,
CALL_APPLICATION_FUNCTION_PARAM param,
  ...
+
+ + + + + +
+   + + +

+This API allows a tool to call a function inside the application. The function is executed under control of Pin's JIT compiler, and the application code is instrumented normally. Tools should not make direct calls to application functions when Pin is in JIT mode.

+PIN_CallApplicationFunction() can be called from a replacement routine or an analysis routine, but not from a call-back. Note that this API can result in recursive execution in the tool since the called application function is also instrumented.

+One usage model for this API is to "wrap" an application function, executing analysis code before the function is called and after it returns. To do this, use RTN_ReplaceSignature() to replace the application function, use IARG_ORIG_FUNCPTR to pass the original function pointer to the replacement routine, and use IARG_CONST_CONTEXT to pass the register state. You can then call back on the original function from your replacement routine with PIN_CallApplicationFunction(). Note, however, that the overhead of PIN_CallApplicationFunction() can be high, so it is more efficient to use *_InsertCall() instead if possible.

+

Parameters:
+ + + + + + + +
[in] ctxt The application register state to use when calling the function. Pin changes the register state in order to pass arguments to the function, but the ctxt parameter isn't changed.
[in] tid The Pin id of the current thread (see IARG_THREAD_ID).
[in] cstype The calling standard used for calling this function (CALLINGSTD_DEFAULT recommended).
[in] origFunPtr The entry point of the application function.
[in] param Additional parameters to define the exact behavior of this function invocation (or NULL for using the defaults). See CALL_APPLICATION_FUNCTION_PARAM .
[in] ... List of function argument type and size.
+
+See PIN_PARG for the recommended method of passing function arguments. PIN_PARG_END() must end the argument list, even if the function has no arguments. If the application function has a return value, it must appear first in the argument list.

+

Note:
The vm lock is obtained during the call of this API.
+
Availability:
Mode: JIT only
+ O/S: Linux and Windows
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::PIN_CheckReadAccess VOID *  addr  ) 
+
+ + + + + +
+   + + +

+Given an address, this API checks whether the memory page which contains this address has a read access protection.

+

Parameters:
+ + +
[in] addr memory address
+
+
Returns:
True if the memory page which contains the given address has a read access protection, false otherwise.
+
Note:
PIN_CheckReadAccess() should not be called before the application has been started. For instance, it cannot be called in an Image load callback. Unexpected results will occur.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::PIN_CheckWriteAccess VOID *  addr  ) 
+
+ + + + + +
+   + + +

+Given an address, this API checks whether the memory page which contains this address has a write access protection.

+

Parameters:
+ + +
[in] addr memory address
+
+
Returns:
True if the memory page which contains the given address has a write access protection, false otherwise.
+
Note:
PIN_CheckWriteAccess() should not be called before the application has been started. For instance, it cannot be called in an Image load callback. Unexpected results will occur.

+PIN_CheckWriteAccess assume that if a memory page has a write access protection it also has a read

+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + +
PIN_CONFIGURATION_INFO LEVEL_PINCLIENT::PIN_CreateDefaultConfigurationInfo  ) 
+
+ + + + + +
+   + + +

+Creates an instance of PIN_CONFIGURATION_INFO with default values. This instance can be passed to PIN_StartProgram() in order to take effect on Pin.

+The default values are:

    +
  • Callback types which are allowed to run concurrently - None (PIN_CALLBACK_TYPE_NONE)
+

+

Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_Detach  ) 
+
+ + + + + +
+   + + +

+Pin relinquishes control of the application and the original un-instrumented code is executed.

+On Linux, the function may be invoked from analysis, instrumentation or callback routines. It may be executed by any thread, including threads spawned by the Pintool which are invisible to the Pin VM.

+On Windows and OS X*, the function must be invoked from an analysis routine. Invoking the function from instrumentation routines could cause Pin to misbehave. See Tests/detach.C for an example of its use.

+The request for detach is considered by Pin as asynchronous. This means that Pin will perform the detach procedure at a point which it considers convenient to do so. From the user's perspective, instrumentation, analysis or callback routines might still be executed after calling PIN_Detach(). In practice, PIN_Detach() simply registers the request to the Pin VM and exits immediately i.e. the function does not wait for detach to complete.

+Once Pin starts the detach procedure, it can't be blocked, and will not run forever. It is not possible to detach one thread. All threads will run natively after PIN_Detach(). During detach, Pin doesn't free memory used for Pin objects. This memory will be used during re-attach.

+During the detach procedure Pin runs an auxiliary process, which communicates with the running application process via debug interface. The auxiliary process is temporary and will exit immediately when the detach procedure is completed. For the user, this means that a debugger cannot be attached to the application process during detach.

+Use PIN_AddDetachFunction() to receive a notification just prior to detach. The callback will be received after all the threads are stopped inside the VM and no more instrumentation functions, analysis routines or callbacks will be called.
+ Note: at this point, the auxiliary process mentioned above is still attached to the application process.

+

Note:
The vm and client locks are obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows, & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_DetachProbed  ) 
+
+ + + + + +
+   + + +

+Initiate Pin detach request in probe mode. In the scope of this operation, Pin removes all probes set by Pin & tool, The user can get a notification when the detach operation has been completed (via callback registration using PIN_AddDetachFunctionProbed()). On Linux, the user can get additional per-thread callbacks just prior to probes removal. (via callback registration using PIN_AddThreadDetachProbedFunction()).These callbacks will be given for each thread in its native context. If Pin has already detached (using PIN_DetachProbed()), or if Pin has not fully started yet (the notification function registered by PIN_AddApplicationStartFunction() was not yet delivered to the tool), this function will be ignored.
+

+

Note:
Even though Pin removes all probes, replacement functions can still be active (for example, if the replacement function is still located on the call stack of one of the threads). It is the tool responsibility to handle these scenarios.
+

+The vm and pin client locks are obtained during the call of this API.

+
Availability:
Mode: Probe
+ O/S: Linux, Windows, & OS X*
+ CPU: IA32, Intel64
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
size_t LEVEL_PINCLIENT::PIN_FetchCode void *  copyBuf,
const VOID *  address,
size_t  maxSize,
EXCEPTION_INFO pExceptInfo
+
+ + + + + +
+   + + +

+A function to fetch the code raw bytes.

+This function should be used when the tool needs the raw bytes of instructions and the tool is using a code fetcher function that translates the original code address to an actual code address.

+

Parameters:
+ + + + + +
[out] copyBuf destination buffer
[in] address address to copy from
[in] maxSize number of bytes to copy
[out] pExceptInfo pointer to the structure that receives the exception information
+
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
ADDRINT LEVEL_PINCLIENT::PIN_GetAuxVectorValue ADDRINT  type,
bool *  found
+
+ + + + + +
+   + + +

+Given an aux vector entry type, returns the entry's value.

+

Parameters:
+ + + +
[in] type The type of the desired auxv entry.
[out] found True if the entry was found, false otherwise.
+
+
Returns:
The value of the aux vector entry, undefined if .
+
Availability:
Mode: JIT/Probe
+ O/S: Linux CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + +
UINT32 LEVEL_PINCLIENT::PIN_GetInitialThreadCount  ) 
+
+ + + + + +
+   + + +

+This function is useful when the tool that use attach is doing some initial work that needs the number of threads at the time of the attach.

+

Returns:
Number of threads at the time of the attach, in all other cases it will return one. It is not implemented for Windows with attach.
+
Availability:
Mode: JIT/Probe
+ O/S: Linux
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + +
MEMORY_ADDR_TRANS_CALLBACK LEVEL_PINCLIENT::PIN_GetMemoryAddressTransFunction  ) 
+
+ + + + + +
+   + + +

+Get the Registered notification function that is called when tool needs to modify memory address in PIN.
+

+

Parameters:
+ + + +
fun Call back function has no parameters
val Value to be passed to fun when it is called
+
+
Availability:
Mode: JIT & PROBE
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_PINCLIENT::PIN_Init INT32  argc,
CHAR **  argv
+
+ + + + + +
+   + + +

+Initialize Pin system. Must be called before PIN_StartProgram

Parameters:
+ + + +
argc argc value passed to main
argv argv value passed to main, encoded in UTF8 (a superset of ASCII)
+
+
Returns:
true if an error was detected parsing the command line
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_InitSymbols  ) 
+
+ + + + + +
+   + + +

+Initialize symbol table code. Pin does not read symbols unless this is called. Must be called before PIN_StartProgram

+

Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::PIN_InitSymbolsAlt SYMBOL_INFO_MODE  mode  ) 
+
+ + + + + +
+   + + +

+Initialize symbol table code with an explicitly specified mode of symbol support.
+ Pin does not read symbols unless this is called.
+ Must be called before PIN_StartProgram.
+ Alternative to PIN_InitSymbols() on Windows & Linux.
+ On MacOS it is implemented as PIN_InitSymbols()
+

+

Parameters:
+ + +
[in] mode Explicit mode of symbol support. Valid values:
+ EXPORT_SYMBOLS Only symbols taken from export table are provided. Line information is not available (Windows only).
+ DEBUG_SYMBOLS Currently treated the same as DEBUG_OR_EXPORT_SYMBOLS (Windows only).
+ IFUNC_SYMBOLS IFUNC symbols (Linux only).
+ DEBUG_OR_EXPORT_SYMBOLS First debug symbols if available, otherwise export symbols. This mode is set by PIN_InitSymbols() (Windows only)
+ This parameter is ignored on operating systems other than Windows & Linux.
+
+
+
Returns:
TRUE if the operation succeeded
+
+
Availability:
Mode: JIT & Probe
+ O/S: Windows, Linux & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_InsertCallProbed ADDRINT  addr,
AFUNPTR  funptr,
  ...
+
+ + + + + +
+   + + +

+Insert a call to an analysis routine relative to a location. In this location we expect to find a safe instruction, i.e. an instruction which is large enough to be replaced entirely with a jump instruction (i.e. 5/7 bytes long), it is not a control flow instruction, and it doesn't have memory operand.

+

Parameters:
+ + + + +
address the application address to instrument
funptr the analysis function
... IARG_TYPE. The list must end with IARG_END.
+
+PIN_StartProgramProbed() must be used when using this API.

+Some restrictions apply when using IARG_CONTEXT. See Instrumentation arguments for more information. IARG_THREAD_ID is not supported.

+

Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: Probe
+ O/S: All
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
BOOL LEVEL_PINCLIENT::PIN_InterceptSignal INT32  sig,
INTERCEPT_SIGNAL_CALLBACK  fun,
VOID *  val
+
+ + + + + +
+   + + +

+Establish an interceptor function for signals delivered to the application. Tools should never call sigaction() directly to handle signals. The interceptor function is called whenever the application receives the requested signal, regardless of whether the application has a handler for that signal. The tool's handler can then decide whether the signal should be forwarded to the application.

+There are two intended usage models for this API, which are both advanced features. If your tool merely needs to be notified of signals that are sent to the application, use PIN_AddContextChangeFunction() instead.

+In one usage model, a tool can take over ownership of a signal in order to use the signal as an asynchronous communication mechanism to the outside world. For example, if a tool intercepts SIGUSR1, a user of the tool could send this signal and tell the tool to do something. In this usage model, the tool may want to call PIN_UnblockSignal() so that it will receive the signal even if the application attempts to block it.

+In the second usage model, the tool may need to "squash" certain signals that the application generates. For example, a tool that forces speculative execution in the application may want to intercept and squash exceptions generated in the speculative code.

+A tool can set only one "intercept" handler for a particular signal, so a new handler overwrites any previous handler for the same signal. To disable a handler, pass a NULL function pointer.

+

Parameters:
+ + + + +
[in] sig The signal number to intercept, which may not be SIGKILL or SIGSTOP.
[in] fun The tool's intercept function, or NULL.
[in] val Value to pass to the intercept function.
+
+
Returns:
TRUE on success (always FALSE on Windows).
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Linux
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::PIN_IsActionPending THREADID  tid  ) 
+
+ + + + + +
+   + + +

+This function is useful when an analysis routine might block for an indefinite period of time. In such cases, the analysis code can periodically call PIN_IsActionPending() to see if the thread has some pending action that needs to be handled in the Pin VM. If so, the analysis routine should return back to the VM, either by returning or by calling PIN_ExecuteAt().

+

Parameters:
+ + +
[in] tid The ID of the calling thread.
+
+
Returns:
TRUE if the thread has a pending action in the Pin VM.
+
Availability:
Mode: JIT
+ O/S: Linux
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + +
BOOL LEVEL_PINCLIENT::PIN_IsAttaching  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE if Pin is being attached to a running application process
+
+

+ + + + +
+ + + + + + + + +
BOOL LEVEL_PINCLIENT::PIN_IsProbeMode  ) 
+
+ + + + + +
+   + + +

+

Returns:
Return TRUE if -probe on command line or if Tool started application calling PIN_StartProgramProbed().
+
+
Note:
Tool can run in Probe mode without specifying -probe on the command line. This switch is provided as a convenience. In that case, PIN_IsProbeMode() will return FALSE before PIN_StartProgramProbed() was called (Since the default running mode is JIT).
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::PIN_IsSafeForProbedInsertion ADDRINT  addr  ) 
+
+ + + + + +
+   + + +

+Check if the given location is safe for probe insertion. This means that the location contains an instruction which is large enough to be replaced entirely with a jump instruction (i.e. 5/7 bytes long), it is not a control flow instruction, and it doesn't have memory operand.

+

Parameters:
+ + +
address the application address to instrument
+
+
Returns:
TRUE/FALSE if the location is safe
+PIN_StartProgramProbed() must be used when using this API.

+

Availability:
Mode: Probe
+ O/S: All
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_LockClient  ) 
+
+ + + + + +
+   + + +

+Some Pin API functions may only be called when the thread is holding this lock. See also PIN_UnlockClient. The client lock is recursive, so can be claimed again by a thread if it already holds it. PIN_LockClient and PIN_UnlockClient calls must be matched, since the lock implementation maintains a depth count.
+ This function can be used in any thread, including internal threads spawned by the tool.

+

Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_RemoveFiniFunctions  ) 
+
+ + + + + +
+   + + +

+Invalidates all the Fini callback functions registered via PIN_AddFiniFunction; Fini callbacks will no longer be called before the application exits.

+Must be called prior to invoking PIN_Detach if the tool has previously registered Fini callbacks and libc.so is not yet loaded into memory yet for a dynamically linked binary.

+

Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_RemoveInstrumentation  ) 
+
+ + + + + +
+   + + +

+All instrumentation is removed. When application code is executed the instrumentation routines will be called to reinstrument all code. Similarly, any ahead-of-time instrumentation will be reapplied if the relevant code is re-executed.

+

Note:
The vm lock is obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_RemoveInstrumentationInRange ADDRINT  start,
ADDRINT  end
+
+ + + + + +
+   + + +

+Removes all instrumentation from the given range [start,end]. If the application reaches this range again, the code will be reinstrumented. Can be called from an analysis function or a callback. Note: Some code beyond the start and end margins may be reinstrumented as well.

+

Parameters:
+ + + +
start The starting address of the range
end The ending address (inclusive) of the range
+
+
Note:
The vm lock is obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
size_t LEVEL_PINCLIENT::PIN_SafeCopy VOID *  dst,
const VOID *  src,
size_t  size
+
+ + + + + +
+   + + +

+Copy the specified number of bytes from a source memory region to a destination memory region. The function guarantees safe return to the caller even if the source or destination regions are inaccessible (entirely or partially).

+Tools should use this function to ensure safe access to the original content of the application's memory. For example, on Windows, Pin replaces certain TEB fields when running analysis routines in the tool. If the tool accesses these fields directly, it would see the values assigned by Pin rather than the original ones. On the contrary, PIN_SafeCopy() always reads and modifies the original application's values of these fields.

+This function can be used in any thread, including any internal thread spawned by the tool.

+

Parameters:
+ + + + +
[out] dst destination region
[in] src region to copy from
[in] size number of bytes to copy
+
+
Returns:
Number of bytes successfully copied from the source to the destination region.
+
Note:
PIN_SafeCopy() should not be called before the application has been started. For instance, it cannot be called in an Image load callback. Unexpected results will occur.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
size_t LEVEL_PINCLIENT::PIN_SafeCopyEx VOID *  dst,
const VOID *  src,
size_t  size,
EXCEPTION_INFO pExceptInfo
+
+ + + + + +
+   + + +

+Copy the specified number of bytes from a source memory region to a destination memory region. The function guarantees safe return to the caller even if the source or destination regions are inaccessible (entirely or partially).

+In addition to the PIN_SafeCopy functionality, this function allows the tool to obtain detailed exception information in case of failure.

+This function can be used in any thread, including any internal thread spawned by the tool.

+

Parameters:
+ + + + + +
[out] dst destination region
[in] src region to copy from
[in] size number of bytes to copy
[out] pExceptInfo pointer to the structure that receives the exception information in case of failure.
+
+
Returns:
Number of bytes successfully copied from the source to the destination region. If the function fails to copy all bytes, it provides detailed description of the failure in the
+

+structure.

+

Note:
The exception address in the returned exception information always has zero value. If the tool wants to raise this exception on behalf of the application, it should use PIN_SetExceptionAddress function to set an appropriate exception address before passing the exception information to the PIN_RaiseException function.

+PIN_SafeCopyEx() should not be called before the application has been started. For instance, it cannot be called in an Image load callback. Unexpected results will occur.

+
Availability:
Mode: JIT
+ O/S: Linux, Windows
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_SetAllowedConcurrentCallbacks PIN_CONFIGURATION_INFO  options,
PIN_CALLBACK_TYPE  callbackType
+
+ + + + + +
+   + + +

+Enables/disables concurrent delivery of certain callbacks in a specific PIN_CONFIGURATION_INFO instance.

+

Parameters:
+ + + +
options The PIN_CONFIGURATION_INFO instance to modify.
callbackType Specifies which Pin callbacks are allowed to be delivered concurrently:
+
+ In the case where a callback should be delivered to several threads at a given moment, delivering a callback concurrently means that each thread is free to deliver its the respective callbacks without waiting for the other threads. This means that Pin doesn't acquire any exclusive internal lock in order to deliver a concurrent callback
+
+ In constrast, delivering a callback in a serialized way means that, in a given moment, only one threads is allowed to deliver any type of callback. Serializing the callback might hurt the performance of your Pin tool, but it will protect the tool against possibly race conditions in your tool. When a callback is considered "serialized", Pin will acquire an exclusive internal lock before delivering the callback to the tool.
+
+
Note:
In order for this option to take effect the PIN_CONFIGURATION_INFO must be passed to PIN_StartProgram().

+Currently, other types of callbacks (which don't have a respective enum entry in PIN_CALLBACK_TYPE) are serialized by Pin with no option to change that.

+
Availability:
Mode: JIT
+ O/S: Linux
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_SetSmcSupport SMC_ENABLE_DISABLE_TYPE  enable_disable  ) 
+
+ + + + + +
+   + + +

+Enable/Disable Pin's support of self modifying code When enabled, Pin will detect self modification of code and will deliver a callback, if one is registered, when such an event happens. When disabled and if SMC occurs, the SMC will not be detected and the original code will continue to execute. This function takes precedence over the specification of smc_support in the invocation line. This function must be called before PIN_StartProgram.

+

Parameters:
+ + +
[in] enable SMC_ENABLE, or SMC_DISABLE
+
+SMC support is enabled by default

+

Availability:
Mode: JIT
+ O/S: Windows,Linux,OS X,Adroid
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_StartProgram PIN_CONFIGURATION_INFO  options = PIN_CreateDefaultConfigurationInfo()  ) 
+
+ + + + + +
+   + + +

+Starts executing the application, when Pin is in JIT mode, which is the default. Note that PIN_Init() must be called before PIN_StartProgram().

+

Parameters:
+ + +
options Pin global configuration to use in this run of Pin. These configuration options are set only once (during the call of PIN_StartProgram()), and they are affecting the entire execution of Pin.
+
+
Note:
The PIN_StartProgram() function never returns. It also unwinds the tool's stack, so any local (stack based) variables are lost.

+The vm and pin client locks are obtained during the call of this API.

+See also: PIN_CreateDefaultConfigurationInfo().

+

Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_StartProgramProbed  ) 
+
+ + + + + +
+   + + +

+Starts executing the application, when Pin is in Probe mode. Note that PIN_Init() must be called before PIN_StartProgramProbed().

+The PIN_StartProgramProbed() function never returns. It also unwinds the tool's stack, so any local (stack based) variables are lost.

+

Note:
The vm and pin client locks are obtained during the call of this API.
+
Availability:
Mode: Probe
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + +
const CHAR* LEVEL_PINCLIENT::PIN_ToolFullPath  ) 
+
+ + + + + +
+   + + +

+Returns full path of main Pin tool binary image, encoded in UTF8 (superset of ASCII).

+

Availability:
Mode: JIT & Probe
+ O/S: Windows, Linux
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_TryEnd THREADID  tid  ) 
+
+ + + + + +
+   + + +

+Unregister the last registered notification function (registered via PIN_TryStart()) from the context of the calling thread. This function should be called in the same function scope as the previously registered PIN_TryStart().
+ This function can be used in any thread, including any internal thread spawned by the tool.

+

Parameters:
+ + +
[in] tid Id of the calling thread.
+
+
Availability:
Mode: JIT
+ O/S: Windows, Linux
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_TryStart THREADID  tid,
INTERNAL_EXCEPTION_CALLBACK  fun,
VOID *  val
+
+ + + + + +
+   + + +

+Register a per-thread notification handler function that is called upon receipt of an internal exception in pin or the tool in the context of the calling thread. Use PIN_TryEnd() in order to remove the registered handler from the context of the calling thread (do it in the same function scope). The user can register up to MAX_IEH_CALLBACKS per-thread notification functions.
+ This function can be used in any thread, including any internal thread spawned by the tool.

+

Note:
It is unsupported to call PIN_CallApplicationFunction() in the scope of PIN_TryStart() / PIN_TryEnd() pair.
+
+
Parameters:
+ + + + +
[in] tid Id of the calling thread.
[in] fun Handler function to execute upon receipt of internal exception in pin/tool.
[in] val Value to pass to the handler function.
+
+
Availability:
Mode: JIT
+ O/S: Windows, Linux
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_PINCLIENT::PIN_UnblockSignal INT32  sig,
BOOL  enable
+
+ + + + + +
+   + + +

+This API is normally used in conjunction with PIN_InterceptSignal() to prevent the application from blocking a signal that the tool intercepts. This is useful if the tool wants to ensure that the application will not prevent the tool from receiving the intercepted signal.

+When this API is called before PIN_StartProgram(), it affects all threads in the application. However, if it is called after PIN_StartProgram(), it only affects the calling thread. If the application spawns a thread, the child thread inherits the signal blocking state from its parent.

+Tools should take care when using this API because it can adversely affect the application if it also uses the signal sig.

+

Parameters:
+ + + +
[in] sig The signal number, which may not be SIGKILL or SIGSTOP.
[in] enable If TRUE, the application is prevented from blocking sig. If FALSE, the application may block or unblock sig at will.
+
+
Returns:
TRUE on success (always FALSE on Windows).
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Linux
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_UnlockClient  ) 
+
+ + + + + +
+   + + +

+Some Pin API functions may be called only when the thread is holding this lock. See also PIN_LockClient.
+ This function can be used in any thread, including any internal thread spawned by the tool.

+

Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + +
CHAR* LEVEL_PINCLIENT::PIN_VmFullPath  ) 
+
+ + + + + +
+   + + +

+Returns full path of Pin binary invoked, encoded in UTF8 (superset of ASCII), this is supported for Linux (only for locales encoded in UTF8).

+

Availability:
Mode: JIT
+ O/S: Linux & OS X*
+ CPU: All
+
+
+


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__PIN__PROCESS__API.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__PIN__PROCESS__API.html new file mode 100644 index 0000000..a201ddf --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__PIN__PROCESS__API.html @@ -0,0 +1,155 @@ + + +Pin: Pin Process API + + + + +
+
+

Pin Process API

+ + + + + + + + +

Functions

NORETURN VOID LEVEL_PINCLIENT::PIN_ExitProcess (INT32 exitCode)
INT LEVEL_PINCLIENT::PIN_GetPid ()
NORETURN VOID LEVEL_PINCLIENT::PIN_ExitApplication (INT32 status)
+

Detailed Description

+These APIs provide information about the instrumented process. They are available in any thread, including any internal thread spawned by the tool.

Function Documentation

+

+ + + + +
+ + + + + + + + + +
NORETURN VOID LEVEL_PINCLIENT::PIN_ExitApplication INT32  status  ) 
+
+ + + + + +
+   + + +

+Terminate the current process after calling the relevant thread and process exit callbacks. This call behaves "as if" the application process itself had executed a process termination system call. It therefore does perform all the finalization actions Pin normally takes on application process exit, including calling registered thread and process fini-functions, unlike PIN_ExitProcess, which exits immediately.

+This API may be called from an instrumentation callback function or an analysis routine. However, it should not be called from any FINI_CALLBACK or THREAD_FINI_CALLBACK routines. It may be called by an application thread or a tool internal thread (that was created via PIN_SpawnInternalThread).

+Be aware, that when called from an internal thread, the calling thread will not exit until after the tool's fini callbacks return. Therefore, to avoid deadlock, your fini callbacks should not wait for that internal thread to exit.

+

Parameters:
+ + +
[in] status The result argument to exit
+
+
Returns:
This function does not return.
+
Note:
The vm and pin client locks are obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Linux,Windows,BSD
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
NORETURN VOID LEVEL_PINCLIENT::PIN_ExitProcess INT32  exitCode  ) 
+
+ + + + + +
+   + + +

+Terminate the current process immediately, without calling any thread or process fini callbacks that may be registered. (See PIN_ExitApplication, if you want fini callbacks to be called).

+This function should be used only for abnormal termination of the instrumented process. Normally, the process is terminated when Pin executes a process termination system call on behalf of the application.

+

Parameters:
+ + +
[in] exitCode exit code of the process to be reported to the operating system.
+
+
Returns:
the function never returns.
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + +
INT LEVEL_PINCLIENT::PIN_GetPid  ) 
+
+ + + + + +
+   + + +

+Returns current process id

+

Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__PIN__SYSCALL__API.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__PIN__SYSCALL__API.html new file mode 100644 index 0000000..7eb7ea0 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__PIN__SYSCALL__API.html @@ -0,0 +1,554 @@ + + +Pin: Pin System Call API + + + + +
+
+

Pin System Call API

+ + + + + + + + + + + + + + + + + + + + + + + +

Typedefs

typedef VOID(* LEVEL_PINCLIENT::SYSCALL_ENTRY_CALLBACK )(THREADID threadIndex, CONTEXT *ctxt, SYSCALL_STANDARD std, VOID *v)
typedef VOID(* LEVEL_PINCLIENT::SYSCALL_EXIT_CALLBACK )(THREADID threadIndex, CONTEXT *ctxt, SYSCALL_STANDARD std, VOID *v)

Functions

PIN_CALLBACK LEVEL_PINCLIENT::PIN_AddSyscallEntryFunction (SYSCALL_ENTRY_CALLBACK fun, VOID *val)
PIN_CALLBACK LEVEL_PINCLIENT::PIN_AddSyscallExitFunction (SYSCALL_EXIT_CALLBACK fun, VOID *val)
VOID LEVEL_PINCLIENT::PIN_SetSyscallArgument (CONTEXT *ctxt, SYSCALL_STANDARD std, UINT32 argNum, ADDRINT val)
ADDRINT LEVEL_PINCLIENT::PIN_GetSyscallArgument (const CONTEXT *ctxt, SYSCALL_STANDARD std, UINT32 argNum)
VOID LEVEL_PINCLIENT::PIN_SetSyscallNumber (CONTEXT *ctxt, SYSCALL_STANDARD std, ADDRINT val)
ADDRINT LEVEL_PINCLIENT::PIN_GetSyscallNumber (const CONTEXT *ctxt, SYSCALL_STANDARD std)
ADDRINT LEVEL_PINCLIENT::PIN_GetSyscallReturn (const CONTEXT *ctxt, SYSCALL_STANDARD std)
ADDRINT LEVEL_PINCLIENT::PIN_GetSyscallErrno (const CONTEXT *ctxt, SYSCALL_STANDARD std)
+

Detailed Description

+These APIs provide Pin support for extracting information about, or modifying, system calls made by the pinned program.

Typedef Documentation

+

+ + + + +
+ + + + +
typedef VOID(* LEVEL_PINCLIENT::SYSCALL_ENTRY_CALLBACK)(THREADID threadIndex, CONTEXT *ctxt, SYSCALL_STANDARD std, VOID *v)
+
+ + + + + +
+   + + +

+Call-back function before execution of a system call.

+

Parameters:
+ + + + + +
[in] threadIndex The Pin thread ID of the thread that executes the system call.
[in,out] ctxt Application's register state immediately before execution of the system call. The tool may change this and affect the new register state.
[in] std The system calling standard.
[in] v The tool's call-back value.
+
+
+

+ + + + +
+ + + + +
typedef VOID(* LEVEL_PINCLIENT::SYSCALL_EXIT_CALLBACK)(THREADID threadIndex, CONTEXT *ctxt, SYSCALL_STANDARD std, VOID *v)
+
+ + + + + +
+   + + +

+Call-back function after execution of a system call.

+

Parameters:
+ + + + + +
[in] threadIndex The Pin thread ID of the thread that executed the system call.
[in,out] ctxt Application's register state immediately after execution of the system call.The tool may change this and affect the new register state.
[in] std The system calling standard.
[in] v The tool's call-back value.
+
+
+


Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
PIN_CALLBACK LEVEL_PINCLIENT::PIN_AddSyscallEntryFunction SYSCALL_ENTRY_CALLBACK  fun,
VOID *  val
+
+ + + + + +
+   + + +

+Register a notification function that is called immediately before execution of a system call.

+

Parameters:
+ + + +
[in] fun Function to be called immediately before execution of a system call.
[in] val Value to pass to the function.
+
+
Returns:
PIN_CALLBACK A handle to a callback that can be used to further modify this callback's properties
+
Note:
The pin client lock is obtained during the call of this API..
+
Availability:
Mode: JIT
+ O/S: Linux, Windows
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
PIN_CALLBACK LEVEL_PINCLIENT::PIN_AddSyscallExitFunction SYSCALL_EXIT_CALLBACK  fun,
VOID *  val
+
+ + + + + +
+   + + +

+Register a notification function that is called immediately after execution of a system call.
+ The notification is called for each system call when it returns to the application, even if the system call changes control flow and does not fall through to the next instruction.
+

+

Parameters:
+ + + +
[in] fun Function to be called immediately after execution of a system call.
[in] val Value to pass to the function.
+
+
Note:
In order to monitor all possible control transfers from the operating system to the user mode application, the tool has to register both a SYSCALL_EXIT_CALLBACK and a CONTEXT_CHANGE_CALLBACK callback functions. This can be done using the corresponding registration functions: PIN_AddSyscallExitFunction() and PIN_AddContextChangeFunction().
+ When a system call returns to the application, the tool receives the SYSCALL_EXIT_CALLBACK notification. Usually, this callback immediately follows the corresponding SYSCALL_ENTRY_CALLBACK notification and there is no application code executed between these two events. However, some (Windows) system calls can be interrupted by a system event (APC, Windows callback, exception) before they return to the application. If this happens, the tool receives the corresponding CONTEXT_CHANGE_CALLBACK notification just before the (user mode) handler of the system event gets executed. Eventually, when the event handler and the interrupted system call are completed, the SYSCALL_EXIT_CALLBACK notification is delivered to the tool.
+
Returns:
PIN_CALLBACK A handle to a callback that can be used to further modify this callback's properties
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
ADDRINT LEVEL_PINCLIENT::PIN_GetSyscallArgument const CONTEXT ctxt,
SYSCALL_STANDARD  std,
UINT32  argNum
+
+ + + + + +
+   + + +

+Get the value of the argument of the system call to be executed in the specified context.
+ It is a user's responsibility to make sure that the specified context and the current memory content represent the state of a system call before execution. For example, this function can be safely used in the scope of SYSCALL_ENTRY_CALLBACK. Applying this function to an inappropriate context results in undefined behavior and even may cause crash on systems in which system call arguments are located in memory.

+

Parameters:
+ + + + +
[in] ctxt context before the system call execution
[in] std system calling standard
[in] argNum ordinal number of the argument whose value is requested. Ordinal numbers start from zero for the first argument
+
+
Returns:
value of the argument
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
ADDRINT LEVEL_PINCLIENT::PIN_GetSyscallErrno const CONTEXT ctxt,
SYSCALL_STANDARD  std
+
+ + + + + +
+   + + +

+Get the error code of the system call which is just returned with the specified context.
+ It is a user's responsibility to make sure that the specified context represents the state of a system call after execution. For example, this function can be safely used in the scope of SYSCALL_EXIT_CALLBACK. Applying this function to an inappropriate context results in undefined behavior.

+

Parameters:
+ + + +
[in] ctxt context after the system call execution
[in] std system calling standard
+
+
Returns:
error code, if the system call failed;
+ zero, if the system call succeeded
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
ADDRINT LEVEL_PINCLIENT::PIN_GetSyscallNumber const CONTEXT ctxt,
SYSCALL_STANDARD  std
+
+ + + + + +
+   + + +

+Get the number (ID) of the system call to be executed in the specified context.
+ It is a user's responsibility to make sure that the specified context represents the state of a system call before execution. For example, this function can be safely used in the scope of SYSCALL_ENTRY_CALLBACK, but not in a SYSCALL_EXIT_CALLBACK. Applying this function to an inappropriate context results in undefined behavior.

+If you need the system call number in a SYSCALL_EXIT_CALLBACK, you should use a SYSCALL_ENTRY_CALLBACK to save the system call number into thread local storage so that you can get it from there in your SYSCALL_EXIT_CALLBACK. Beware, though of interruptable system calls, to handle those you will need to worry about other context changes (see the discussion in PIN_AddSyscallExitFunction ).

+

Parameters:
+ + + +
[in] ctxt context before the system call execution
[in] std system calling standard
+
+
Returns:
system call number
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
ADDRINT LEVEL_PINCLIENT::PIN_GetSyscallReturn const CONTEXT ctxt,
SYSCALL_STANDARD  std
+
+ + + + + +
+   + + +

+Get the return value of the system call which has just returned with the specified context.
+ It is a user's responsibility to make sure that the specified context represents the state of a system call after execution. For example, this function can be safely used in the scope of SYSCALL_EXIT_CALLBACK. Applying this function to an inappropriate context results in undefined behavior.

+

Parameters:
+ + + +
[in] ctxt context after the system call execution
[in] std system calling standard
+
+
Returns:
return value of the system call.
+ On Linux and OS X the function returns -1 if the system call failed
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_SetSyscallArgument CONTEXT ctxt,
SYSCALL_STANDARD  std,
UINT32  argNum,
ADDRINT  val
+
+ + + + + +
+   + + +

+Set the given value for the argument of the system call to be executed in the specified context.
+ It is a user's responsibility to make sure that the specified context and the current memory content represent the state of a system call before execution. For example, this function can be safely used in the scope of SYSCALL_ENTRY_CALLBACK. Applying this function to an inappropriate context results in undefined behavior and even may cause crash on systems in which system call arguments are located in memory.

+

Parameters:
+ + + + + +
[in,out] ctxt context before the system call execution
[in] std system calling standard
[in] argNum ordinal number of the argument whose value is to be set. Ordinal numbers start from zero for the first argument
[in] val new value of the argument
+
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_SetSyscallNumber CONTEXT ctxt,
SYSCALL_STANDARD  std,
ADDRINT  val
+
+ + + + + +
+   + + +

+Set the number (ID) of the system call to be executed in the specified context.
+ It is a user's responsibility to make sure that the specified context represents the state of a system call before execution. For example, this function can be safely used in the scope of SYSCALL_ENTRY_CALLBACK. Applying this function to an inappropriate context results in undefined behavior.

+

Parameters:
+ + + + +
[in] ctxt context before the system call execution
[in] std system calling standard
[in] val new system call number
+
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__PIN__THREAD__API.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__PIN__THREAD__API.html new file mode 100644 index 0000000..42a88b2 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__PIN__THREAD__API.html @@ -0,0 +1,930 @@ + + +Pin: Pin Thread API + + + + +
+
+

Pin Thread API

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Typedefs

typedef INT32 LEVEL_BASE::TLS_KEY
typedef UINT32 THREADID
typedef UINT64 PIN_THREAD_UID
typedef NATIVE_TID OS_THREAD_ID
typedef VOID ROOT_THREAD_FUNC (VOID *arg)
typedef UINT32 OS_PROCESS_ID

Functions

OS_THREAD_ID LEVEL_PINCLIENT::PIN_GetTid ()
THREADID LEVEL_PINCLIENT::PIN_ThreadId ()
PIN_THREAD_UID LEVEL_PINCLIENT::PIN_ThreadUid ()
OS_THREAD_ID LEVEL_PINCLIENT::PIN_GetParentTid ()
VOID LEVEL_PINCLIENT::PIN_Sleep (UINT32 milliseconds)
VOID LEVEL_PINCLIENT::PIN_Yield ()
THREADID LEVEL_PINCLIENT::PIN_SpawnInternalThread (ROOT_THREAD_FUNC *pThreadFunc, VOID *arg, size_t stackSize, PIN_THREAD_UID *pThreadUid)
VOID LEVEL_PINCLIENT::PIN_ExitThread (INT32 exitCode)
BOOL LEVEL_PINCLIENT::PIN_IsApplicationThread ()
BOOL LEVEL_PINCLIENT::PIN_WaitForThreadTermination (const PIN_THREAD_UID &threadUid, UINT32 milliseconds, INT32 *pExitCode)
TLS_KEY LEVEL_PINCLIENT::PIN_CreateThreadDataKey (DESTRUCTFUN destruct_func)
BOOL LEVEL_PINCLIENT::PIN_DeleteThreadDataKey (TLS_KEY key)
BOOL LEVEL_PINCLIENT::PIN_SetThreadData (TLS_KEY key, const VOID *data, THREADID threadId)
VOID * LEVEL_PINCLIENT::PIN_GetThreadData (TLS_KEY key, THREADID threadId)

Variables

GLOBALCONST TLS_KEY LEVEL_BASE::INVALID_TLS_KEY = (-1)
GLOBALCONST UINT32 LEVEL_PINCLIENT::MAX_CLIENT_TLS_KEYS = (TLS_KEY_CLIENT_LAST - TLS_KEY_CLIENT_FIRST + 1)
GLOBALCONST THREADID INVALID_THREADID = static_cast<THREADID>(-1)
GLOBALCONST PIN_THREAD_UID INVALID_PIN_THREAD_UID = static_cast<PIN_THREAD_UID>(-1)
GLOBALCONST OS_THREAD_ID INVALID_OS_THREAD_ID = INVALID_NATIVE_TID
+

Detailed Description

+A group of Pin threading primitives. These APIs are available in any thread, including any internal thread spawned by the tool.

Typedef Documentation

+

+ + + + +
+ + + + +
typedef UINT32 OS_PROCESS_ID
+
+ + + + + +
+   + + +

+Process ID assigned by OS.

+

+ + + + +
+ + + + +
typedef NATIVE_TID OS_THREAD_ID
+
+ + + + + +
+   + + +

+Thread ID assigned by OS.

+

+ + + + +
+ + + + +
typedef UINT64 PIN_THREAD_UID
+
+ + + + + +
+   + + +

+Unique thread ID which, unlike THREADID identifier, is not reused by Pin after the thread termination. The uniqueness of this identifier allows to use it in the PIN_WaitForThreadTermination() function which monitors the thread's state.

+

+ + + + +
+ + + + +
typedef VOID ROOT_THREAD_FUNC(VOID *arg)
+
+ + + + + +
+   + + +

+Main (starting) function of a thread.

Parameters:
+ + +
[in] arg argument of the main thread function, as specified by the thread creator.
+
+
+

+ + + + +
+ + + + +
typedef UINT32 THREADID
+
+ + + + + +
+   + + +

+Thread ID assigned by PIN.

+

+ + + + +
+ + + + +
typedef INT32 LEVEL_BASE::TLS_KEY
+
+ + + + + +
+   + + +

+Type that represents TLS key - a unique identifier of a slot in the thread local storage.

+


Function Documentation

+

+ + + + +
+ + + + + + + + + +
TLS_KEY LEVEL_PINCLIENT::PIN_CreateThreadDataKey DESTRUCTFUN  destruct_func  ) 
+
+ + + + + +
+   + + +

+Allocate a new TLS key and associate it with a given data destruction function. Upon successful return, any thread of the process can use PIN_SetThreadData() and PIN_GetThreadData() functions to store and retrieve values in its own slot, referenced by the allocated key. The initial value associated with the key in all threads is NULL. At the thread exit, if a key has a non-NULL pointer to the cleanup (destruction) function, and the thread has a non-NULL value in the corresponding slot, the function is called with the slot's value as its sole argument. The order in which destructors are invoked is undefined.

Parameters:
+ + +
[in] destructFun optional parameter that specifies data destruction function to be associated with the new key. This function is called just after notifying the client about VM thread exit. By default (NULL destructor), the data is not cleaned up.
+
+
Returns:
allocated TLS key, upon success; -1, if number of already allocated keys reached the MAX_CLIENT_TLS_KEYS limit.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::PIN_DeleteThreadDataKey TLS_KEY  key  ) 
+
+ + + + + +
+   + + +

+Release TLS key, allocated by a previous call to the PIN_CreateThreadDataKey() function. The function has no effect if specified key is not allocated/already released. After the key is released, a client should not attempt to use it for any further TLS access. Doing otherwise results in undefined behavior.

Parameters:
+ + +
[in] key TLS key to be released
+
+
Returns:
TRUE, upon success; FALSE, if if specified key is invalid
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_ExitThread INT32  exitCode  ) 
+
+ + + + + +
+   + + +

+Terminate the current thread.

+This function is intended for threads created by the tool (see PIN_SpawnInternalThread()) and is not normally used for threads created by the application, since application threads exit automatically when Pin executes a thread termination system call on their behalf.

+If this call is made on an application thread, Pin will make any callbacks registered for thread exit before the thread is terminated.

+

Parameters:
+ + +
[in] exitCode exit code of the thread to be returned by the PIN_WaitForThreadTermination() function.
+
+
Returns:
the function never returns.
+
Note:
The vm lock is obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + +
OS_THREAD_ID LEVEL_PINCLIENT::PIN_GetParentTid  ) 
+
+ + + + + +
+   + + +

+Get system identifier of the parent thread, if known.

Returns:
system ID of the parent thread or INVALID_OS_THREAD_ID if the parent thread is unknown. On Windows the result is always INVALID_OS_THREAD_ID, since there is, in general, no well defined parent child relationship between threads.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID* LEVEL_PINCLIENT::PIN_GetThreadData TLS_KEY  key,
THREADID  threadId
+
+ + + + + +
+   + + +

+Get the value stored in the specified TLS slot of the thread.

Parameters:
+ + + +
[in] key TLS key, referencing the slot, whose value is requested. The key should be allocated by a previous call to the PIN_CreateThreadDataKey() function.
[in] threadId Thread ID assigned by pin of the thread for which TLS access is desired, not necessarily the current thread. This ID can be obtained by the PIN_ThreadId() function call or received as the value of the IARG_THREAD_ID argument.
+
+
Returns:
value stored in the specified slot of the thread, if specified key is currently allocated; NULL, if specified key is invalid or the given thread is not yet registered in the pin thread database; undefined, if specified key is valid, but it is not currently allocated
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + +
OS_THREAD_ID LEVEL_PINCLIENT::PIN_GetTid  ) 
+
+ + + + + +
+   + + +

+Get system identifier of the current thread.

Returns:
system ID of the current thread.
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + +
BOOL LEVEL_PINCLIENT::PIN_IsApplicationThread  ) 
+
+ + + + + +
+   + + +

+Check to see if the current thread is created by the application or it is an internal thread spawned by the tool or Pin itself (see PIN_SpawnInternalThread()).

+

Returns:
TRUE, if this function is called in a thread created by the application; FALSE, if this function is called in an internal thread spawned by the tool or Pin.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
BOOL LEVEL_PINCLIENT::PIN_SetThreadData TLS_KEY  key,
const VOID *  data,
THREADID  threadId
+
+ + + + + +
+   + + +

+Store specified value in the specified TLS slot of the thread.

Parameters:
+ + + + +
[in] key TLS key, referencing the slot, where the value will be stored upon successful return. The key should be allocated by a previous call to the PIN_CreateThreadDataKey() function.
[in] data value to be stored in the TLS slot of the current thread.
[in] threadId Thread ID assigned by pin of the thread for which TLS access is desired, not necessarily the current thread. This ID can be obtained by the PIN_ThreadId() function call or received as the value of the IARG_THREAD_ID argument.
+
+
Returns:
TRUE, if specified key is currently allocated; FALSE, if specified key is invalid or the given thread is not yet registered in the pin thread database; undefined, if specified key is valid, but it is not currently allocated
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_Sleep UINT32  milliseconds  ) 
+
+ + + + + +
+   + + +

+Delay execution of the current thread for the specified time interval.

Parameters:
+ + +
[in] milliseconds time interval, in milliseconds.
+
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
THREADID LEVEL_PINCLIENT::PIN_SpawnInternalThread ROOT_THREAD_FUNC pThreadFunc,
VOID *  arg,
size_t  stackSize,
PIN_THREAD_UID pThreadUid
+
+ + + + + +
+   + + +

+Create a new tool internal thread in the current process.

+It is safe to create internal threads in the tool's main procedure and spawn new internal threads from existing ones. However new internal threads cannot be created in any other places, like Pin callbacks and analysis routines in application threads.
+

+In order to ensure graceful termination of internal threads on the application's exit, the tool can use the following recommended method:

    +
  • The tool uses the PIN_AddPrepareForFiniFunction() function to register a PREPARE_FOR_FINI_CALLBACK callback. When the registered function is called in an "unlocked" thread, the tool requests each other internal thread to exit and waits until the PIN_WaitForThreadTermination() function returns.
    Note:
    : Pin doesn't wait for internal threads termination after the callbacks.
    +Many of Pin's APIs, that are primarily intended for application threads, are also available in internal threads. Look at the API's description ( Availability paragraph) or the description of the corresponding group of APIs to check whether a specific API is available in internal threads.
    +
+

+

Parameters:
+ + + + + +
[in] pThreadFunc main (starting) function of the thread
[in] arg argument of the main thread function
[in] stackSize size of the thread's stack, in bytes. The function rounds this value up to the page size. If this parameter is zero, DEFAULT_THREAD_STACK_SIZE bytes will be allocated for the stack.
[out] pThreadUid pointer to a variable that receives the unique identifier of the new thread in Pin. This identifier can be used in the PIN_WaitForThreadTermination() function to monitor the thread's state. If the caller specifies NULL for this parameter, the unique thread ID is not returned.
+
+
Returns:
ID of the new thread in Pin or INVALID_THREADID if the thread creation failed.
+
Note:
The PIN_SpawnInternalThread() API is the only way for tools to create a private thread in the Pin-controlled process. System services, like CreateThread() in Windows or clone() in Linux should not be used for this purpose.
+
Pin makes an effort to hide internal threads from the application so, usually, a tool's threads do not interfere with the application. However, the complete transparency of internal threads is not guaranteed, so tools should only use them when their instrumentation tasks cannot be done (effectively) by analysis routines within application threads. For example, a need to execute Windows services (Win32 APIs) may be a reason for creating a private thread in the tool. All Win32 APIs that do not modify the application's resources can be freely used in internal threads. In application threads, on the contrary, using Win32 APIs in analysis routines and Pin callbacks is not supported due to possible reentrancy and isolation problems.
+
Internal threads remain blocked inside Pin until PIN_StartProgram() is called and Pin completes some initialization. On Linux, internal threads start running pThreadFunc before Pin executes the first application instruction. On Windows all threads, including Pin internal threads, start executing from the system runtime before they execute the pThreadFunc function. However, the system runtime blocks threads until the application has finished initializing its DLL's (i.e. until the application releases the internal "loader lock"). As a result, Pin internal threads on Windows do not execute pThreadFunc until after the application finishes executing the DLL initialization code.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + +
THREADID LEVEL_PINCLIENT::PIN_ThreadId  ) 
+
+ + + + + +
+   + + +

+Get identifier of the current thread in Pin.

Returns:
ID of the current thread in Pin or INVALID_THREADID upon failure. Usually, the failure means that the function is called in a private tool's thread which is created by a direct call to a system service and not via the PIN_SpawnInternalThread() function.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + +
PIN_THREAD_UID LEVEL_PINCLIENT::PIN_ThreadUid  ) 
+
+ + + + + +
+   + + +

+Get unique identifier of the current thread in Pin.

Returns:
Unique ID of the current thread in Pin or INVALID_PIN_THREAD_UID upon failure. Usually, the failure means that the function is called in a private tool's thread which is created by a direct call to a system service and not via the PIN_SpawnInternalThread() function.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
BOOL LEVEL_PINCLIENT::PIN_WaitForThreadTermination const PIN_THREAD_UID threadUid,
UINT32  milliseconds,
INT32 *  pExitCode
+
+ + + + + +
+   + + +

+Delay the current thread until the specified thread is terminated or the time-out interval elapses.

+To avoid deadlocks, the caller should not hold any lock that the target thread may try to acquire. For example, this function can be safely used in the PREPARE_FOR_FINI_CALLBACK callback if it is registered by the PIN_AddPrepareForFiniFunction(). However, it is not recommended to use this function in other Pin callbacks if the target thread is an application thread or an internal thread that uses Pin APIs. This is because most of Pin APIs and callbacks are serialized by the same internal lock.
+

+This function can not be used to wait for the termination of the calling thread.

+

Parameters:
+ + + + +
[in] threadUid unique identifier of the thread to be waited for termination, provided by PIN_SpawnInternalThread() or PIN_ThreadUid().
[in] milliseconds time-out interval, in milliseconds. If this parameter is zero, the function tests the thread's state and returns immediately. If this parameter is PIN_INFINITE_TIMEOUT, the time-out interval never elapses.
[out] pExitCode optional pointer to a variable that receives exit code of the thread. If this pointer is NULL or the thread has not terminated, the exit code is not returned.
+
+
Returns:
TRUE - the thread has terminated, FALSE - the specified time-out interval elapsed or threadUid is not valid or corresponds to current thread or specified thread is not yet started when application shutdown begins.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_Yield  ) 
+
+ + + + + +
+   + + +

+Yield the processor to another thread.

+

Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+


Variable Documentation

+

+ + + + +
+ + + + +
GLOBALCONST OS_THREAD_ID INVALID_OS_THREAD_ID = INVALID_NATIVE_TID
+
+ + + + + +
+   + + +

+Invalid value of the OS_THREAD_ID type.

+

+ + + + +
+ + + + +
GLOBALCONST PIN_THREAD_UID INVALID_PIN_THREAD_UID = static_cast<PIN_THREAD_UID>(-1)
+
+ + + + + +
+   + + +

+Invalid value of the PIN_THREAD_UID type.

+

+ + + + +
+ + + + +
GLOBALCONST THREADID INVALID_THREADID = static_cast<THREADID>(-1)
+
+ + + + + +
+   + + +

+Invalid value of the THREADID type.

+

+ + + + +
+ + + + +
GLOBALCONST TLS_KEY LEVEL_BASE::INVALID_TLS_KEY = (-1)
+
+ + + + + +
+   + + +

+Invalid value of the TLS_KEY type.

+

+ + + + +
+ + + + +
GLOBALCONST UINT32 LEVEL_PINCLIENT::MAX_CLIENT_TLS_KEYS = (TLS_KEY_CLIENT_LAST - TLS_KEY_CLIENT_FIRST + 1)
+
+ + + + + +
+   + + +

+Maximum number of TLS keys that can be allocated by tool

+


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__PROTO.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__PROTO.html new file mode 100644 index 0000000..3658081 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__PROTO.html @@ -0,0 +1,32 @@ + + +Pin: Prototypes + + + + +
+
+

Prototypes

+ +
+A PROTO is a data structure that describes a function prototype.
Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__PROTO__API.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__PROTO__API.html new file mode 100644 index 0000000..664ea94 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__PROTO__API.html @@ -0,0 +1,394 @@ + + +Pin: PROTO API + + + + +
+
+

PROTO API

+ + + + + + + + + + + + + + + + + + + + + + + +

Defines

#define PIN_PARG(t)   _PinPargClass<t>::parg()
#define PIN_PARG_AGGREGATE(t)   _PinParg(PARG_AGGREGATE, sizeof(t))
#define PIN_PARG_ENUM(t)   _PinParg(PARG_ENUM, sizeof(t))
#define PIN_PARG_END()   _PinParg(PARG_END, 0)

Typedefs

typedef PROTO_CLASS * PROTO

Enumerations

enum  CALLINGSTD_TYPE {
+  CALLINGSTD_INVALID, +
+  CALLINGSTD_DEFAULT, +
+  CALLINGSTD_CDECL, +
+  CALLINGSTD_REGPARMS, +
+  CALLINGSTD_STDCALL, +
+  CALLINGSTD_ART +
+ }
enum  PARG_TYPE {
+  PARG_INVALID, +
+  PARG_POINTER, +
+  PARG_BOOL, +
+  PARG_CHAR, +
+  PARG_UCHAR, +
+  PARG_SCHAR, +
+  PARG_SHORT, +
+  PARG_USHORT, +
+  PARG_INT, +
+  PARG_UINT, +
+  PARG_LONG, +
+  PARG_ULONG, +
+  PARG_LONGLONG, +
+  PARG_ULONGLONG, +
+  PARG_FLOAT, +
+  PARG_DOUBLE, +
+  PARG_VOID, +
+  PARG_ENUM, +
+  PARG_AGGREGATE, +
+  PARG_END +
+ }

Functions

PROTO LEVEL_PINCLIENT::PROTO_Allocate (PARG_T returnArg, CALLINGSTD_TYPE cstype, const char *name,...)
VOID LEVEL_PINCLIENT::PROTO_Free (PROTO proto)
+

Detailed Description

+This API describes an application routine.

Define Documentation

+

+ + + + +
+ + + + + + + + + +
#define PIN_PARG  )    _PinPargClass<t>::parg()
+
+ + + + + +
+   + + +

+Macros used to simplify the passing of function prototype arguments. The macro will pass the type and size of each argument specified. When passing an argument to PROTO_Allocate(), use these macros. As an example, PIN_PARG(int) will pass the PARG_TYPE PARG_INT and the size of an integer to PROTO_Allocate().

+

+ + + + +
+ + + + + + + + + +
#define PIN_PARG_AGGREGATE  )    _PinParg(PARG_AGGREGATE, sizeof(t))
+
+ + + + + +
+   + + +

+Type and size of an aggregate in PROTO_Allocate() See PIN_PARG

+

+ + + + +
+ + + + +  + + + + +
#define PIN_PARG_END  )    _PinParg(PARG_END, 0)
+
+ + + + + +
+   + + +

+Ends a list of arguments in PROTO_Allocate() See PIN_PARG

+

+ + + + +
+ + + + + + + + + +
#define PIN_PARG_ENUM  )    _PinParg(PARG_ENUM, sizeof(t))
+
+ + + + + +
+   + + +

+Type and size of an enum in PROTO_Allocate() See PIN_PARG

+


Typedef Documentation

+

+ + + + +
+ + + + +
typedef PROTO_CLASS* PROTO
+
+ + + + + +
+   + + +

+List of function prototype arguments. See PROTO_Allocate() for its use.

+


Enumeration Type Documentation

+

+ + + + +
+ + + + +
enum CALLINGSTD_TYPE
+
+ + + + + +
+   + + +

+Type of calling standards used for compiling the function. See PROTO_Allocate() for its use. CALLINGSTD_DEFAULT is the default calling standard for the platform. This is the recommended option.

+

+ + + + +
+ + + + +
enum PARG_TYPE
+
+ + + + + +
+   + + +

+Function prototype argument types. See PROTO_Allocate() for its use.

+


Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PROTO LEVEL_PINCLIENT::PROTO_Allocate PARG_T  returnArg,
CALLINGSTD_TYPE  cstype,
const char *  name,
  ...
+
+ + + + + +
+   + + +

+Allocate and initialize a function prototype.

Parameters:
+ + + + + +
returnArg The return argument type and size. See PIN_PARG.
cstype The calling standard used for compiling this function (CALLINGSTD_DEFAULT recommended).
name The name of the function.
... List of function argument type and size. See PIN_PARG for the recommended method of passing function arguments.
+
+
Note:
currently PARG_FLOAT, PARG_DOUBLE are supported as return type only and can not be used as function argument types. Any other PRG_* that does not fit in an integer register are not supported neither as function argument nor as return type of replacement functions.
+PIN_PARG_END() must end the argument list, even if the function has no arguments.
Returns:
proto A pointer to a function prototype. This is an opaque type.
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::PROTO_Free PROTO  proto  ) 
+
+ + + + + +
+   + + +

+Free the specified function prototype.

Parameters:
+ + +
proto A pointer to a function prototype.
+
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__REG__BASIC__API.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__REG__BASIC__API.html new file mode 100644 index 0000000..ee5242e --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__REG__BASIC__API.html @@ -0,0 +1,38 @@ + + +Pin: REG: Register Object + + + + +
+
+

REG: Register Object

+ + + + + + +

Modules

 REG (generic)
 REG (specific to the IA-32 and Intel(R) 64 architectures)
+

Detailed Description

+Can be accessed at instrumentation time and analysis time.
Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__REG__CPU__GENERIC.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__REG__CPU__GENERIC.html new file mode 100644 index 0000000..72b9d7b --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__REG__CPU__GENERIC.html @@ -0,0 +1,576 @@ + + +Pin: REG (generic) + + + + +
+
+

REG (generic)
+ +[REG: Register Object] +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Functions

+BOOL LEVEL_BASE::REG_is_reg (REG reg)
+BOOL LEVEL_BASE::REG_is_pseudo (REG reg)
BOOL LEVEL_BASE::REG_is_gr (REG reg)
BOOL LEVEL_BASE::REG_is_fr (REG reg)
BOOL LEVEL_BASE::REG_is_br (REG reg)
BOOL LEVEL_BASE::REG_is_gr64 (REG reg)
BOOL LEVEL_BASE::REG_is_gr32 (REG reg)
BOOL LEVEL_BASE::REG_is_pin_gr32 (REG reg)
BOOL LEVEL_BASE::REG_is_gr16 (REG reg)
BOOL LEVEL_BASE::REG_is_gr8 (REG reg)
BOOL LEVEL_BASE::REG_is_seg (REG reg)
BOOL LEVEL_BASE::REG_is_pin_gr (REG reg)
BOOL LEVEL_BASE::REG_is_pin_gr_half32 (REG reg)
REG LEVEL_BASE::REG_INVALID ()
BOOL LEVEL_BASE::REG_valid (REG reg)
BOOL LEVEL_BASE::REG_is_pin64 (REG reg)
REG LEVEL_BASE::REG_FullRegName (const REG reg)
string LEVEL_BASE::REG_StringShort (REG reg)
REG LEVEL_PINCLIENT::PIN_ClaimToolRegister ()
+

Detailed Description

+
Availability:
Mode: JIT & Probe
+ O/S: Linux & Windows
+ CPU: All
+
+

Function Documentation

+

+ + + + +
+ + + + + + + + +
REG LEVEL_PINCLIENT::PIN_ClaimToolRegister  ) 
+
+ + + + + +
+   + + +

+Claim a PIN scratch register for use by this tool.

+By using this function to claim scratch registers tools can avoid contention if a tool is composed from different components each of which uses scratch registers. Using this function is to be preferred to directly using the REG_INST_Gn register enumerations.

+Note that although this function is available in probe mode, use of Pin scratch registers is not currently supported in probe mode, so this function is useless there.

+

Returns:
A register to be used, or REG_INVALID() if all of the scratch registers available for tool use have been allocated.
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
REG LEVEL_BASE::REG_FullRegName const REG  reg  ) 
+
+ + + + + +
+   + + +

+If reg is a partial register, return the name of the full register containing it. For example, on IA-32, if reg is REG_AL, the function will return REG_EAX. If reg is a full register, the function returns it unchanged.

+

+ + + + +
+ + + + + + + + +
REG LEVEL_BASE::REG_INVALID  ) 
+
+ + + + + +
+   + + +

+Return the invalid register.

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_br REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if reg is a branch register
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_fr REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if reg is a floating register
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_gr REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if reg is a FULL WIDTH general purpose register
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_gr16 REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if reg is a 16-bit general purpose register
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_gr32 REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if reg is a 32-bit general purpose register
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_gr64 REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if reg is a 64-bit general purpose register
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_gr8 REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if reg is a 8-bit general purpose register
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_pin64 REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if reg is a 64-bit pin register
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_pin_gr REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if reg is a FULL WIDTH general purpose pin virtual register
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_pin_gr32 REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if reg is a 32-bit pin register
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_pin_gr_half32 REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if reg is a FULL WIDTH general purpose pin virtual register
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_seg REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if reg is a segment register
+
+

+ + + + +
+ + + + + + + + + +
string LEVEL_BASE::REG_StringShort REG  reg  ) 
+
+ + + + + +
+   + + +

+convert a REG into a printable string

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_valid REG  reg  ) 
+
+ + + + + +
+   + + +

+Check if register is valid.

+


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__REG__CPU__IA32.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__REG__CPU__IA32.html new file mode 100644 index 0000000..2a8e99e --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__REG__CPU__IA32.html @@ -0,0 +1,3592 @@ + + +Pin: REG (specific to the IA-32 and Intel(R) 64 architectures) + + + + +
+
+

REG (specific to the IA-32 and Intel(R) 64 architectures)
+ +[REG: Register Object] +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Defines

#define _REGSBIT(regSubClass)   (REG_SUBCLASS_BITS(1) << (regSubClass))

Typedefs

typedef UINT64 LEVEL_BASE::REG_CLASS_BITS
typedef REGISTER_SET< REG_FirstInRegset,
+ REG_LastInRegset
LEVEL_CORE::REGSET

Enumerations

enum  LEVEL_BASE::REG {
+  REG_INVALID_ = 0, +
+  REG_GR_BASE = REG_RBASE, +
+  REG_EDI = REG_GR_BASE, +
+  REG_GDI = REG_EDI, +
+  REG_ESI, +
+  REG_GSI = REG_ESI, +
+  REG_EBP, +
+  REG_GBP = REG_EBP, +
+  REG_ESP, +
+  REG_STACK_PTR = REG_ESP, +
+  REG_EBX, +
+  REG_GBX = REG_EBX, +
+  REG_EDX, +
+  REG_GDX = REG_EDX, +
+  REG_ECX, +
+  REG_GCX = REG_ECX, +
+  REG_EAX, +
+  REG_GAX = REG_EAX, +
+  REG_GR_LAST = REG_EAX, +
+  REG_SEG_BASE, +
+  REG_SEG_CS = REG_SEG_BASE, +
+  REG_SEG_SS, +
+  REG_SEG_DS, +
+  REG_SEG_ES, +
+  REG_SEG_FS, +
+  REG_SEG_GS, +
+  REG_SEG_LAST = REG_SEG_GS, +
+  REG_EFLAGS, +
+  REG_GFLAGS = REG_EFLAGS, +
+  REG_EIP, +
+  REG_INST_PTR = REG_EIP, +
+  REG_AL, +
+  REG_AH, +
+  REG_AX, +
+  REG_CL, +
+  REG_CH, +
+  REG_CX, +
+  REG_DL, +
+  REG_DH, +
+  REG_DX, +
+  REG_BL, +
+  REG_BH, +
+  REG_BX, +
+  REG_BP, +
+  REG_SI, +
+  REG_DI, +
+  REG_SP, +
+  REG_FLAGS, +
+  REG_IP, +
+  REG_MM_BASE, +
+  REG_MM0 = REG_MM_BASE, +
+  REG_MM1, +
+  REG_MM2, +
+  REG_MM3, +
+  REG_MM4, +
+  REG_MM5, +
+  REG_MM6, +
+  REG_MM7, +
+  REG_MM_LAST = REG_MM7, +
+  REG_XMM_BASE, +
+  REG_FIRST_FP_REG = REG_XMM_BASE, +
+  REG_XMM0 = REG_XMM_BASE, +
+  REG_XMM1, +
+  REG_XMM2, +
+  REG_XMM3, +
+  REG_XMM4, +
+  REG_XMM5, +
+  REG_XMM6, +
+  REG_XMM7, +
+  REG_XMM_SSE_LAST = REG_XMM7, +
+  REG_XMM_AVX_LAST = REG_XMM_SSE_LAST, +
+  REG_XMM_AVX512_LAST = REG_XMM_AVX_LAST, +
+  REG_XMM_LAST = REG_XMM_AVX512_LAST, +
+  REG_YMM_BASE, +
+  REG_YMM0 = REG_YMM_BASE, +
+  REG_YMM1, +
+  REG_YMM2, +
+  REG_YMM3, +
+  REG_YMM4, +
+  REG_YMM5, +
+  REG_YMM6, +
+  REG_YMM7, +
+  REG_YMM_AVX_LAST = REG_YMM7, +
+  REG_YMM_AVX512_LAST = REG_YMM_AVX_LAST, +
+  REG_YMM_LAST = REG_YMM_AVX512_LAST, +
+  REG_ZMM_BASE, +
+  REG_ZMM0 = REG_ZMM_BASE, +
+  REG_ZMM1, +
+  REG_ZMM2, +
+  REG_ZMM3, +
+  REG_ZMM4, +
+  REG_ZMM5, +
+  REG_ZMM6, +
+  REG_ZMM7, +
+  REG_ZMM_AVX512_SPLIT_LAST = REG_ZMM7, +
+  REG_ZMM_AVX512_LAST = REG_ZMM_AVX512_SPLIT_LAST, +
+  REG_ZMM_LAST = REG_ZMM_AVX512_LAST, +
+  REG_K_BASE, +
+  REG_K0 = REG_K_BASE, +
+  REG_IMPLICIT_FULL_MASK = REG_K0, +
+  REG_K1, +
+  REG_K2, +
+  REG_K3, +
+  REG_K4, +
+  REG_K5, +
+  REG_K6, +
+  REG_K7, +
+  REG_K_LAST = REG_K7, +
+  REG_MXCSR, +
+  REG_MXCSRMASK, +
+  REG_ORIG_EAX, +
+  REG_ORIG_GAX = REG_ORIG_EAX, +
+  REG_FPST_BASE, +
+  REG_FPSTATUS_BASE = REG_FPST_BASE, +
+  REG_FPCW = REG_FPSTATUS_BASE, +
+  REG_FPSW, +
+  LEVEL_BASE::REG_FPTAG, +
+  REG_FPIP_OFF, +
+  REG_FPIP_SEL, +
+  REG_FPOPCODE, +
+  REG_FPDP_OFF, +
+  REG_FPDP_SEL, +
+  REG_FPSTATUS_LAST = REG_FPDP_SEL, +
+  LEVEL_BASE::REG_FPTAG_FULL, +
+  REG_ST_BASE, +
+  REG_ST0 = REG_ST_BASE, +
+  REG_ST1, +
+  REG_ST2, +
+  REG_ST3, +
+  REG_ST4, +
+  REG_ST5, +
+  REG_ST6, +
+  REG_ST7, +
+  REG_ST_LAST = REG_ST7, +
+  REG_FPST_LAST = REG_ST_LAST, +
+  REG_DR_BASE, +
+  REG_DR0 = REG_DR_BASE, +
+  REG_DR1, +
+  REG_DR2, +
+  REG_DR3, +
+  REG_DR4, +
+  REG_DR5, +
+  REG_DR6, +
+  REG_DR7, +
+  REG_DR_LAST = REG_DR7, +
+  REG_CR_BASE, +
+  REG_CR0 = REG_CR_BASE, +
+  REG_CR1, +
+  REG_CR2, +
+  REG_CR3, +
+  REG_CR4, +
+  REG_CR_LAST = REG_CR4, +
+  REG_TSSR, +
+  REG_LDTR, +
+  REG_TR_BASE, +
+  REG_TR = REG_TR_BASE, +
+  REG_TR3, +
+  REG_TR4, +
+  REG_TR5, +
+  REG_TR6, +
+  REG_TR7, +
+  REG_TR_LAST = REG_TR7, +
+  LEVEL_BASE::REG_SEG_GS_BASE = REG_TOOL_BASE, +
+  LEVEL_BASE::REG_SEG_FS_BASE, +
+  REG_INST_BASE, +
+  LEVEL_BASE::REG_INST_SCRATCH_BASE = REG_INST_BASE, +
+  LEVEL_BASE::REG_INST_G0 = REG_INST_SCRATCH_BASE, +
+  LEVEL_BASE::REG_INST_G1, +
+  LEVEL_BASE::REG_INST_G2, +
+  LEVEL_BASE::REG_INST_G3, +
+  LEVEL_BASE::REG_INST_G4, +
+  LEVEL_BASE::REG_INST_G5, +
+  LEVEL_BASE::REG_INST_G6, +
+  LEVEL_BASE::REG_INST_G7, +
+  LEVEL_BASE::REG_INST_G8, +
+  LEVEL_BASE::REG_INST_G9, +
+  LEVEL_BASE::REG_INST_G10, +
+  LEVEL_BASE::REG_INST_G11, +
+  LEVEL_BASE::REG_INST_G12, +
+  LEVEL_BASE::REG_INST_G13, +
+  LEVEL_BASE::REG_INST_G14, +
+  LEVEL_BASE::REG_INST_G15, +
+  LEVEL_BASE::REG_INST_G16, +
+  LEVEL_BASE::REG_INST_G17, +
+  LEVEL_BASE::REG_INST_G18, +
+  LEVEL_BASE::REG_INST_G19, +
+  LEVEL_BASE::REG_INST_G20, +
+  LEVEL_BASE::REG_INST_G21, +
+  LEVEL_BASE::REG_INST_G22, +
+  LEVEL_BASE::REG_INST_G23, +
+  LEVEL_BASE::REG_INST_G24, +
+  LEVEL_BASE::REG_INST_G25, +
+  LEVEL_BASE::REG_INST_G26, +
+  LEVEL_BASE::REG_INST_G27, +
+  LEVEL_BASE::REG_INST_G28, +
+  LEVEL_BASE::REG_INST_G29, +
+  REG_INST_TOOL_FIRST = REG_INST_G0, +
+  REG_INST_TOOL_LAST = REG_INST_G29, +
+  REG_BUF_BASE0, +
+  REG_BUF_BASE1, +
+  REG_BUF_BASE2, +
+  REG_BUF_BASE3, +
+  REG_BUF_BASE4, +
+  REG_BUF_BASE5, +
+  REG_BUF_BASE6, +
+  REG_BUF_BASE7, +
+  REG_BUF_BASE8, +
+  REG_BUF_BASE9, +
+  REG_BUF_BASE_LAST = REG_BUF_BASE9, +
+  REG_BUF_END0, +
+  REG_BUF_END1, +
+  REG_BUF_END2, +
+  REG_BUF_END3, +
+  REG_BUF_END4, +
+  REG_BUF_END5, +
+  REG_BUF_END6, +
+  REG_BUF_END7, +
+  REG_BUF_END8, +
+  REG_BUF_END9, +
+  REG_BUF_ENDLAST = REG_BUF_END9, +
+  REG_BUF_LAST = REG_BUF_ENDLAST, +
+  REG_INST_SCRATCH_LAST = REG_BUF_LAST, +
+  REG_TOOL_LAST = REG_BUF_LAST, +
+  REG_LAST +
+ }
enum  LEVEL_BASE::REGNAME { REGNAME_LAST + }
enum  LEVEL_BASE::REGWIDTH {
+  REGWIDTH_8 = 0, +
+  REGWIDTH_16 = 1, +
+  REGWIDTH_32 = 2, +
+  REGWIDTH_64 = 3, +
+  REGWIDTH_80, +
+  REGWIDTH_128, +
+  REGWIDTH_256, +
+  REGWIDTH_512, +
+  REGWIDTH_INVALID, +
+  REGWIDTH_NATIVE = REGWIDTH_64 +
+ }
enum  LEVEL_BASE::REG_CLASS {
+  REG_CLASS_NONE = 0, +
+  REG_CLASS_PSEUDO, +
+  REG_CLASS_GR, +
+  REG_CLASS_GRU8, +
+  REG_CLASS_GRL8, +
+  REG_CLASS_GRH16, +
+  REG_CLASS_GRH32, +
+  REG_CLASS_SEG, +
+  REG_CLASS_MM, +
+  REG_CLASS_XMM, +
+  REG_CLASS_YMM, +
+  REG_CLASS_ZMM, +
+  REG_CLASS_K, +
+  REG_CLASS_FPST, +
+  REG_CLASS_ST, +
+  REG_CLASS_CR, +
+  REG_CLASS_DR, +
+  REG_CLASS_TR, +
+  REG_CLASS_FLAGS, +
+  REG_CLASS_FLAGS16, +
+  REG_CLASS_FLAGS32, +
+  REG_CLASS_STATUS_FLAGS, +
+  REG_CLASS_DFLAG, +
+  REG_CLASS_MXCSR, +
+  REG_CLASS_MXCSRMASK, +
+  REG_CLASS_IP, +
+  REG_CLASS_IP16, +
+  REG_CLASS_IP32, +
+  REG_CLASS_ARCH, +
+  REG_CLASS_PIN_GR, +
+  REG_CLASS_PIN_GRU8, +
+  REG_CLASS_PIN_GRL8, +
+  REG_CLASS_PIN_GRH16, +
+  REG_CLASS_PIN_GRH32, +
+  REG_CLASS_PIN_XMM, +
+  REG_CLASS_PIN_YMM, +
+  REG_CLASS_PIN_ZMM, +
+  REG_CLASS_PIN_K, +
+  REG_CLASS_PIN_MXCSR, +
+  REG_CLASS_PIN_FLAGS, +
+  REG_CLASS_PIN_STATUS_FLAGS, +
+  REG_CLASS_PIN_DFLAG +
+ }
enum  LEVEL_BASE::REG_SUBCLASS {
+  REG_SUBCLASS_NONE = 0, +
+  REG_SUBCLASS_REX, +
+  REG_SUBCLASS_FULL_STACKPTR, +
+  REG_SUBCLASS_PIN_FULL_STACKPTR, +
+  REG_SUBCLASS_PIN_TMP, +
+  REG_SUBCLASS_PIN_INST_GR, +
+  REG_SUBCLASS_PIN_INST_GR_H32, +
+  REG_SUBCLASS_PIN_INST_BUF, +
+  REG_SUBCLASS_PIN_INST_COND +
+ }

Functions

BOOL LEVEL_BASE::REG_is_fr_for_get_context (REG reg)
BOOL LEVEL_BASE::REG_is_mxcsr (REG reg)
BOOL LEVEL_BASE::REG_is_any_mxcsr (REG reg)
BOOL LEVEL_BASE::REG_is_mm (REG reg)
BOOL LEVEL_BASE::REG_is_xmm (REG reg)
BOOL LEVEL_BASE::REG_is_ymm (REG reg)
BOOL LEVEL_BASE::REG_is_zmm (REG reg)
BOOL LEVEL_BASE::REG_is_xmm_ymm_zmm (REG reg)
BOOL LEVEL_BASE::REG_is_any_vector_reg (REG reg)
BOOL LEVEL_BASE::REG_is_k_mask (REG reg)
BOOL LEVEL_BASE::REG_is_any_mask (REG reg)
REG LEVEL_BASE::REG_corresponding_ymm_reg (REG reg)
REG LEVEL_BASE::REG_corresponding_zmm_reg (REG reg)
BOOL LEVEL_BASE::REG_is_st (REG reg)
BOOL LEVEL_BASE::REG_is_machine (REG reg)
BOOL LEVEL_BASE::REG_is_application (REG reg)
BOOL LEVEL_BASE::REG_is_pin (REG reg)
BOOL LEVEL_BASE::REG_is_subclass_none (REG reg)
BOOL LEVEL_BASE::REG_is_pin_gpr (REG reg)
BOOL LEVEL_BASE::REG_is_seg_base (REG reg)
BOOL LEVEL_BASE::REG_valid_for_iarg_reg_value (REG reg)
BOOL LEVEL_BASE::REG_is_pin_xmm (REG reg)
BOOL LEVEL_BASE::REG_is_pin_ymm (REG reg)
BOOL LEVEL_BASE::REG_is_pin_zmm (REG reg)
BOOL LEVEL_BASE::REG_is_pin_xmm_ymm_zmm (REG reg)
BOOL LEVEL_BASE::REG_is_pin_k_mask (REG reg)
BOOL LEVEL_BASE::REG_is_avx512_hi16_xmm (const REG xmm)
BOOL LEVEL_BASE::REG_is_avx512_hi16_ymm (const REG ymm)
BOOL LEVEL_BASE::REG_is_gr_type (REG reg)
REG LEVEL_BASE::REG_AppFlags ()
BOOL LEVEL_BASE::REG_is_flags (REG reg)
BOOL LEVEL_BASE::REG_is_pin_flags (REG reg)
BOOL LEVEL_BASE::REG_is_status_flags (REG reg)
BOOL LEVEL_BASE::REG_is_pin_status_flags (REG reg)
BOOL LEVEL_BASE::REG_is_df_flag (REG reg)
BOOL LEVEL_BASE::REG_is_pin_df_flag (REG reg)
BOOL LEVEL_BASE::REG_is_flags_type (REG reg)
BOOL LEVEL_BASE::REG_is_flags_any_size_type (REG reg)
BOOL LEVEL_BASE::REG_is_status_flags_type (REG reg)
BOOL LEVEL_BASE::REG_is_app_status_flags_type (REG reg)
BOOL LEVEL_BASE::REG_is_df_flag_type (REG reg)
BOOL LEVEL_BASE::REG_is_app_df_flag_type (REG reg)
BOOL LEVEL_BASE::REG_is_any_flags_type (REG reg)
BOOL LEVEL_BASE::REG_is_any_pin_flags (REG reg)
BOOL LEVEL_BASE::REG_is_any_app_flags (REG reg)
REG LEVEL_BASE::REG_get_status_flags_reg_of_type (REG reg)
REG LEVEL_BASE::REG_get_df_flag_reg_of_type (REG reg)
REG LEVEL_BASE::REG_get_full_flags_reg_of_type (REG reg)
BOOL LEVEL_BASE::REG_is_stackptr_type (REG reg)
BOOL LEVEL_BASE::REG_is_representative_reg (REG reg)
BOOL LEVEL_BASE::REG_is_pin_inst (REG reg)
BOOL LEVEL_BASE::REG_is_buffer (REG reg)
BOOL LEVEL_BASE::REG_is_inst_scratch (REG reg)
ADDRINT LEVEL_BASE::REG_regSubClassBitMapTable ()
ADDRINT LEVEL_BASE::REG_regDefTable ()
BOOL LEVEL_BASE::REG_is_pin_tmp (REG reg)
REG LEVEL_BASE::REG_LastSupportedXmm ()
REG LEVEL_BASE::REG_LastSupportedYmm ()
REG LEVEL_BASE::REG_LastSupportedZmm ()
UINT32 LEVEL_BASE::REG_Size (REG reg)
REG LEVEL_BASE::REG_IdentityCopy (const REG reg)
BOOL LEVEL_BASE::REG_is_Half16 (const REG reg)
REGWIDTH LEVEL_BASE::REG_Width (REG reg)
BOOL LEVEL_BASE::REG_is_Half32 (const REG reg)
BOOL LEVEL_BASE::REG_is_Lower8 (const REG reg)
BOOL LEVEL_BASE::REG_is_Upper8 (const REG reg)
BOOL LEVEL_BASE::REG_is_Any8 (const REG reg)
BOOL LEVEL_BASE::REG_is_partialreg (const REG reg)
BOOL LEVEL_CORE::REGSET_Contains (const REGSET &regset, REG reg)
VOID LEVEL_CORE::REGSET_Insert (REGSET &regset, REG reg)
VOID LEVEL_CORE::REGSET_Remove (REGSET &regset, REG reg)
VOID LEVEL_CORE::REGSET_Clear (REGSET &regset)
VOID LEVEL_CORE::REGSET_AddAll (REGSET &regset)
REG LEVEL_CORE::REGSET_PopNext (REGSET &regset)
UINT32 LEVEL_CORE::REGSET_PopCount (const REGSET &regset)
BOOL LEVEL_CORE::REGSET_PopCountIsZero (const REGSET &regset)
string LEVEL_CORE::REGSET_StringShort (const REGSET &regset)
string LEVEL_CORE::REGSET_StringList (const REGSET &regset)

Variables

const REGDEF_ENTRY LEVEL_BASE::_regDefTable []
GLOBALCONST REG_CLASS_BITS LEVEL_BASE::REGCBIT_APP_FLAGS
GLOBALCONST REG_CLASS_BITS LEVEL_BASE::REGCBIT_PIN_FLAGS
GLOBALCONST REG_CLASS_BITS LEVEL_BASE::REGCBIT_PARTIAL
GLOBALCONST REG_SUBCLASS_BITS LEVEL_BASE::REGSBIT_PIN_INST_ALL
GLOBALCONST REG_SUBCLASS_BITS LEVEL_BASE::REGSBIT_PIN_SCRATCH_ALL
GLOBALCONST REG_SUBCLASS_BITS LEVEL_BASE::REGSBIT_STACKPTR_ALL
GLOBALCONST REG LEVEL_CORE::REG_FirstInRegset = REG_RBASE
GLOBALCONST REG LEVEL_CORE::REG_LastInRegset = REG(REG_LAST-1)
+

Detailed Description

+
Availability:
Mode: JIT & Probe
+ O/S: Linux & Windows
+ CPU: IA-32 and Intel(R) 64 architectures
+
+

Define Documentation

+

+ + + + +
+ + + + + + + + + +
#define _REGSBIT regSubClass   )    (REG_SUBCLASS_BITS(1) << (regSubClass))
+
+ + + + + +
+   + + +

+Bit flag that represents a REG_SUBCLASS value.

+


Typedef Documentation

+

+ + + + +
+ + + + +
typedef UINT64 LEVEL_BASE::REG_CLASS_BITS
+
+ + + + + +
+   + + +

+Bit flag that represents a REG_CLASS value.

+

+ + + + +
+ + + + +
typedef class REGISTER_SET< REG_FirstInRegset, REG_LastInRegset > LEVEL_CORE::REGSET
+
+ + + + + +
+   + + +

+A regset type that contains all registers

+


Enumeration Type Documentation

+

+ + + + +
+ + + + +
enum LEVEL_BASE::REG
+
+ + + + + +
+   + + +

+The x86 register enum (for both IA-32 and Intel(R) 64 architectures) Note that each register added to this enum, must have a row in the _regDefTable. Note also that the _regDefTable is defined separately for Intel64 and for IA-32.

Enumerator:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
REG_FPTAG  +Abridged 8-bit version of x87 tag register.
REG_FPTAG_FULL  +Full 16-bit version of x87 tag register.
REG_SEG_GS_BASE  +Base address for GS segment.
REG_SEG_FS_BASE  +Base address for FS segment.
REG_INST_SCRATCH_BASE  +First available scratch register.
REG_INST_G0  +Scratch register used in pintools.
REG_INST_G1  +Scratch register used in pintools.
REG_INST_G2  +Scratch register used in pintools.
REG_INST_G3  +Scratch register used in pintools.
REG_INST_G4  +Scratch register used in pintools.
REG_INST_G5  +Scratch register used in pintools.
REG_INST_G6  +Scratch register used in pintools.
REG_INST_G7  +Scratch register used in pintools.
REG_INST_G8  +Scratch register used in pintools.
REG_INST_G9  +Scratch register used in pintools.
REG_INST_G10  +Scratch register used in pintools.
REG_INST_G11  +Scratch register used in pintools.
REG_INST_G12  +Scratch register used in pintools.
REG_INST_G13  +Scratch register used in pintools.
REG_INST_G14  +Scratch register used in pintools.
REG_INST_G15  +Scratch register used in pintools.
REG_INST_G16  +Scratch register used in pintools.
REG_INST_G17  +Scratch register used in pintools.
REG_INST_G18  +Scratch register used in pintools.
REG_INST_G19  +Scratch register used in pintools.
REG_INST_G20  +Scratch register used in pintools.
REG_INST_G21  +Scratch register used in pintools.
REG_INST_G22  +Scratch register used in pintools.
REG_INST_G23  +Scratch register used in pintools.
REG_INST_G24  +Scratch register used in pintools.
REG_INST_G25  +Scratch register used in pintools.
REG_INST_G26  +Scratch register used in pintools.
REG_INST_G27  +Scratch register used in pintools.
REG_INST_G28  +Scratch register used in pintools.
REG_INST_G29  +Scratch register used in pintools.
+
+
+

+ + + + +
+ + + + +
enum LEVEL_BASE::REG_CLASS
+
+ + + + + +
+   + + +

+Enumeration of register classes. Each register belongs to one and only one class.

+

+ + + + +
+ + + + +
enum LEVEL_BASE::REG_SUBCLASS
+
+ + + + + +
+   + + +

+Additional classification of register.

+

+ + + + +
+ + + + +
enum LEVEL_BASE::REGNAME
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + +
enum LEVEL_BASE::REGWIDTH
+
+ + + + + +
+   + + +

+register widths

+


Function Documentation

+

+ + + + +
+ + + + + + + + +
REG LEVEL_BASE::REG_AppFlags  ) 
+
+ + + + + +
+   + + +

+

Returns:
the application flags register
+
+

+ + + + +
+ + + + + + + + + +
REG LEVEL_BASE::REG_corresponding_ymm_reg REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
the corresponding ymm reg to an xmm reg: e.g. if reg is xmm4 return ymm4 ASSUMES that REG_is_xmm returns TRUE on reg
+
+

+ + + + +
+ + + + + + + + + +
REG LEVEL_BASE::REG_corresponding_zmm_reg REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
the corresponding zmm reg to an xmm reg: e.g. if reg is xmm4 return zmm4 ASSUMES that REG_is_xmm returns TRUE on reg
+
+

+ + + + +
+ + + + + + + + + +
REG LEVEL_BASE::REG_get_df_flag_reg_of_type REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
TGiven that reg is either REG_GFLAGS or REG_PIN_FLAGS, return the corresponding *_DF_FLAG reg
+
+

+ + + + +
+ + + + + + + + + +
REG LEVEL_BASE::REG_get_full_flags_reg_of_type REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
the full flags reg of either the app or pin reg - depending on what type of reg reg is
+
+

+ + + + +
+ + + + + + + + + +
REG LEVEL_BASE::REG_get_status_flags_reg_of_type REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
Given that reg is either REG_GFLAGS or REG_PIN_FLAGS, return the corresponding *_STATUS_FLAGS reg
+
+

+ + + + +
+ + + + + + + + + +
REG LEVEL_BASE::REG_IdentityCopy const REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
the application register that is the counterpart of this Pin reg
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_Any8 const REG  reg  ) 
+
+ + + + + +
+   + + +

+Return TRUE if reg is a upper or lower 8-bit register

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_any_app_flags REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE iff is Any of the app flag regs
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_any_flags_type REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE iff is Any of the flag regs app or pin
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_any_mask REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if reg is a k-mask register or its Pin variant
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_any_mxcsr REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if reg is mxcsr or its Pin variant
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_any_pin_flags REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE iff is Any of the pinflag regs
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_any_vector_reg REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if reg is an xmm,ymm, or zmm register, or their Pin variants.
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_app_df_flag_type REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE iff is REG_DF_FLAG or PIN_REG_DF_FLAG
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_app_status_flags_type REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE iff REG_STATUS_FLAGS
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_application REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if reg is an application register
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_avx512_hi16_xmm const REG  xmm  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if the given xmm is one of xmm16-xmm31
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_avx512_hi16_ymm const REG  ymm  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if the given ymm is one of ymm16-ymm31
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_buffer REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE iff is app flags
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_df_flag REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE iff is app df flag
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_df_flag_type REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE iff is REG_DF_FLAG or PIN_REG_DF_FLAG
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_flags REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE iff is app flags
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_flags_any_size_type REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE iff both app and pin (and redundant for both) flags regs
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_flags_type REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE iff both app and pin (and redundant for both) flags regs
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_fr_for_get_context REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if reg is a floating register appropriate for PIN_GetContextReg
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_gr_type REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if it is a gr reg
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_Half16 const REG  reg  ) 
+
+ + + + + +
+   + + +

+Return TRUE if reg is a lower 16-bit register

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_Half32 const REG  reg  ) 
+
+ + + + + +
+   + + +

+Return TRUE if reg is a lower 32-bit register, actually any 32 bit register

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_inst_scratch REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE iff is app flags
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_k_mask REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if reg is a k-mask register
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_Lower8 const REG  reg  ) 
+
+ + + + + +
+   + + +

+Return TRUE if reg is a lower 8-bit register

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_machine REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if reg is a machine register
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_mm REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if reg is an mmx register
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_mxcsr REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if reg is the mxcsr
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_partialreg const REG  reg  ) 
+
+ + + + + +
+   + + +

+Return TRUE if reg is a partial register

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_pin REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if reg is a pin register
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_pin_df_flag REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE iff is pin df flags
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_pin_flags REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE iff is pin flags
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_pin_gpr REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE iff pin general purpose register
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_pin_inst REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE iff is app flags
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_pin_k_mask REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if reg is a pin virtual mask register
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_pin_status_flags REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE iff is pin status flag
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_pin_tmp REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE iff pin tmp regs
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_pin_xmm REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if reg is a pin virtual sse register
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_pin_xmm_ymm_zmm REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if reg is a Pin xmm, ymm or zmm register
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_pin_ymm REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if reg is a pin virtual ymm register
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_pin_zmm REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if reg is a pin virtual zmm register
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_representative_reg REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE iff is representative register for internal purposes
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_seg_base REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if reg is a seg base
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_st REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if reg is a x87 FPU stack register
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_stackptr_type REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE both app and pin stack ptrs
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_status_flags REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE iff is is app status flags
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_status_flags_type REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE iff is REG_STATUS_FLAGS or PIN_REG_STATUS_FLAGS
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_subclass_none REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE iff subclass of reg is none
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_Upper8 const REG  reg  ) 
+
+ + + + + +
+   + + +

+Return TRUE if reg is a upper 8-bit register

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_xmm REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if reg is an sse register
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_xmm_ymm_zmm REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if reg is an xmm,ymm, or zmm register
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_ymm REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if reg is a ymm register
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_zmm REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if reg is a zmm register
+
+

+ + + + +
+ + + + + + + + +
REG LEVEL_BASE::REG_LastSupportedXmm  ) 
+
+ + + + + +
+   + + +

+

Returns:
the highest xmm register supported on the current CPU
+
+

+ + + + +
+ + + + + + + + +
REG LEVEL_BASE::REG_LastSupportedYmm  ) 
+
+ + + + + +
+   + + +

+

Returns:
the highest ymm register supported on the current CPU
+
+

+ + + + +
+ + + + + + + + +
REG LEVEL_BASE::REG_LastSupportedZmm  ) 
+
+ + + + + +
+   + + +

+

Returns:
the highest zmm register supported on the current CPU
+
+

+ + + + +
+ + + + + + + + +
ADDRINT LEVEL_BASE::REG_regDefTable  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE iff is app flags
+
+

+ + + + +
+ + + + + + + + +
ADDRINT LEVEL_BASE::REG_regSubClassBitMapTable  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE iff is app flags
+
+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_BASE::REG_Size REG  reg  ) 
+
+ + + + + +
+   + + +

+return the register size in bytes

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_valid_for_iarg_reg_value REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if reg value of reg can be requested by IARG_REG_VALUE
+
+

+ + + + +
+ + + + + + + + + +
REGWIDTH LEVEL_BASE::REG_Width REG  reg  ) 
+
+ + + + + +
+   + + +

+return the register width for all regs.

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::REGSET_AddAll REGSET regset  ) 
+
+ + + + + +
+   + + +

+Insert all registers into the specified regset

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::REGSET_Clear REGSET regset  ) 
+
+ + + + + +
+   + + +

+Remove all registers from the specified regset

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::REGSET_Contains const REGSET regset,
REG  reg
+
+ + + + + +
+   + + +

+

Returns:
TRUE if the specified reg is contained in the specified regset
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::REGSET_Insert REGSET regset,
REG  reg
+
+ + + + + +
+   + + +

+Insert the specified reg into the specified regset

+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_CORE::REGSET_PopCount const REGSET regset  ) 
+
+ + + + + +
+   + + +

+

Returns:
the number of registers in the specified regset
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::REGSET_PopCountIsZero const REGSET regset  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE if the number of registers in the specified regset is zero
+
+

+ + + + +
+ + + + + + + + + +
REG LEVEL_CORE::REGSET_PopNext REGSET regset  ) 
+
+ + + + + +
+   + + +

+Pop the next register from the specified regset

Returns:
the popped register
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::REGSET_Remove REGSET regset,
REG  reg
+
+ + + + + +
+   + + +

+Remove the specified reg from the specified regset

+

+ + + + +
+ + + + + + + + + +
string LEVEL_CORE::REGSET_StringList const REGSET regset  ) 
+
+ + + + + +
+   + + +

+

Returns:
a string with the names of all registers is the specified regset
+
+

+ + + + +
+ + + + + + + + + +
string LEVEL_CORE::REGSET_StringShort const REGSET regset  ) 
+
+ + + + + +
+   + + +

+

Returns:
a string with the names of all registers is the specified regset
+
+


Variable Documentation

+

+ + + + +
+ + + + +
const REGDEF_ENTRY LEVEL_BASE::_regDefTable[]
+
+ + + + + +
+   + + +

+The main register information table

+

+ + + + +
+ + + + +
GLOBALCONST REG LEVEL_CORE::REG_FirstInRegset = REG_RBASE
+
+ + + + + +
+   + + +

+REG represented by the first bit in the regset vector. +

+

+

+ + + + +
+ + + + +
GLOBALCONST REG LEVEL_CORE::REG_LastInRegset = REG(REG_LAST-1)
+
+ + + + + +
+   + + +

+REG represented by the last bit in the regset vector. Most of the code assumes that REG_LAST is not an actual register, so we should not include it in the set. We use REG_LAST-1 for the last registers.

+

+ + + + +
+ + + + +
GLOBALCONST REG_CLASS_BITS LEVEL_BASE::REGCBIT_APP_FLAGS
+
+ + + + + +
+   + + +

+Initial value:

 
+
+    (_REGCBIT(REG_CLASS_FLAGS)               )|
+    (_REGCBIT(REG_CLASS_STATUS_FLAGS)        )|
+    (_REGCBIT(REG_CLASS_DFLAG))
+
Mask of REG_CLASS_BITS values for all application flag registers.
+

+ + + + +
+ + + + +
GLOBALCONST REG_CLASS_BITS LEVEL_BASE::REGCBIT_PARTIAL
+
+ + + + + +
+   + + +

+Initial value:

 
+    (_REGCBIT(REG_CLASS_GRU8)                )|
+    (_REGCBIT(REG_CLASS_GRL8)                )|
+    (_REGCBIT(REG_CLASS_GRH16)               )|
+    (_REGCBIT(REG_CLASS_GRH32)               )|
+    (_REGCBIT(REG_CLASS_FLAGS16)             )|
+    (_REGCBIT(REG_CLASS_FLAGS32)             )|
+    (_REGCBIT(REG_CLASS_IP16)                )|
+    (_REGCBIT(REG_CLASS_IP32)                )|
+    (_REGCBIT(REG_CLASS_PIN_GRU8)            )|
+    (_REGCBIT(REG_CLASS_PIN_GRL8)            )|
+    (_REGCBIT(REG_CLASS_PIN_GRH16)           )|
+    (_REGCBIT(REG_CLASS_PIN_GRH32))
+
Mask of REG_CLASS_BITS values for partial registers (excluding XMM, even if AVX is present).
+

+ + + + +
+ + + + +
GLOBALCONST REG_CLASS_BITS LEVEL_BASE::REGCBIT_PIN_FLAGS
+
+ + + + + +
+   + + +

+Initial value:

 
+    (_REGCBIT(REG_CLASS_PIN_FLAGS)           )|
+    (_REGCBIT(REG_CLASS_PIN_STATUS_FLAGS)    )|
+    (_REGCBIT(REG_CLASS_PIN_DFLAG))
+
Mask of REG_CLASS_BITS values for all Pin flag registers.
+

+ + + + +
+ + + + +
GLOBALCONST REG_SUBCLASS_BITS LEVEL_BASE::REGSBIT_PIN_INST_ALL
+
+ + + + + +
+   + + +

+Initial value:

 
+    (_REGCBIT(REG_SUBCLASS_PIN_INST_GR)      )|
+    (_REGCBIT(REG_SUBCLASS_PIN_INST_GR_H32)  )|
+    (_REGCBIT(REG_SUBCLASS_PIN_INST_BUF)     )|
+    (_REGCBIT(REG_SUBCLASS_PIN_INST_COND))
+
Combination of REG_SUBCLASS_BITS flags of all instrumentation registers.
+

+ + + + +
+ + + + +
GLOBALCONST REG_SUBCLASS_BITS LEVEL_BASE::REGSBIT_PIN_SCRATCH_ALL
+
+ + + + + +
+   + + +

+Initial value:

 
+    (_REGCBIT(REG_SUBCLASS_PIN_INST_GR)      )|
+    (_REGCBIT(REG_SUBCLASS_PIN_INST_BUF))
+
Combination of REG_SUBCLASS_BITS flags of all instrumentation scratch registers.
+

+ + + + +
+ + + + +
GLOBALCONST REG_SUBCLASS_BITS LEVEL_BASE::REGSBIT_STACKPTR_ALL
+
+ + + + + +
+   + + +

+Initial value:

 
+    (_REGCBIT(REG_SUBCLASS_FULL_STACKPTR)         )|
+    (_REGCBIT(REG_SUBCLASS_PIN_FULL_STACKPTR))
+
Combination of REG_SUBCLASS_BITS flags of stack registers (both app and pin).
+


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__RTN__BASIC__API.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__RTN__BASIC__API.html new file mode 100644 index 0000000..810124c --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__RTN__BASIC__API.html @@ -0,0 +1,1930 @@ + + +Pin: RTN: Routine Object + + + + +
+
+

RTN: Routine Object

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Typedefs

typedef VOID(* LEVEL_PINCLIENT::RTN_INSTRUMENT_CALLBACK )(RTN rtn, VOID *v)

Enumerations

enum  LEVEL_PINCLIENT::PROBE_MODE {
+  PROBE_MODE_DEFAULT = 0, +
+  PROBE_MODE_ALLOW_RELOCATION = (1<<0) +
+ }

Functions

SEC LEVEL_PINCLIENT::RTN_Sec (RTN x)
RTN LEVEL_PINCLIENT::RTN_Next (RTN x)
RTN LEVEL_PINCLIENT::RTN_Prev (RTN x)
RTN LEVEL_PINCLIENT::RTN_Invalid ()
BOOL LEVEL_PINCLIENT::RTN_Valid (RTN x)
const string & LEVEL_PINCLIENT::RTN_Name (RTN x)
BOOL LEVEL_PINCLIENT::RTN_IsArtificial (RTN x)
SYM LEVEL_PINCLIENT::RTN_Sym (RTN x)
AFUNPTR LEVEL_PINCLIENT::RTN_Funptr (RTN x)
UINT32 LEVEL_PINCLIENT::RTN_Id (RTN x)
PIN_CALLBACK LEVEL_PINCLIENT::RTN_AddInstrumentFunction (RTN_INSTRUMENT_CALLBACK fun, VOID *val)
USIZE LEVEL_PINCLIENT::RTN_Range (RTN rtn)
USIZE LEVEL_PINCLIENT::RTN_Size (RTN rtn)
RTN LEVEL_PINCLIENT::RTN_IFuncResolver (RTN rtn)
RTN LEVEL_PINCLIENT::RTN_IFuncImplementation (RTN rtn)
string LEVEL_PINCLIENT::RTN_FindNameByAddress (ADDRINT address)
RTN LEVEL_PINCLIENT::RTN_FindByAddress (ADDRINT address)
RTN LEVEL_PINCLIENT::RTN_FindByName (IMG img, const CHAR *name)
VOID LEVEL_PINCLIENT::RTN_Open (RTN rtn)
VOID LEVEL_PINCLIENT::RTN_Close (RTN rtn)
INS LEVEL_PINCLIENT::RTN_InsHead (RTN rtn)
INS LEVEL_PINCLIENT::RTN_InsHeadOnly (RTN rtn)
INS LEVEL_PINCLIENT::RTN_InsTail (RTN rtn)
UINT32 LEVEL_PINCLIENT::RTN_NumIns (RTN rtn)
VOID LEVEL_PINCLIENT::RTN_InsertCall (RTN rtn, IPOINT action, AFUNPTR funptr,...)
ADDRINT LEVEL_PINCLIENT::RTN_Address (RTN rtn)
RTN LEVEL_PINCLIENT::RTN_CreateAt (ADDRINT address, string name)
BOOL LEVEL_PINCLIENT::RTN_IsDynamic (RTN rtn)
BOOL LEVEL_PINCLIENT::RTN_IsSafeForProbedInsertion (RTN rtn)
BOOL LEVEL_PINCLIENT::RTN_IsSafeForProbedInsertionEx (RTN rtn, PROBE_MODE mode)
BOOL LEVEL_PINCLIENT::RTN_IsSafeForProbedReplacement (RTN rtn)
BOOL LEVEL_PINCLIENT::RTN_IsSafeForProbedReplacementEx (RTN rtn, PROBE_MODE mode)
AFUNPTR LEVEL_PINCLIENT::RTN_ReplaceSignatureProbed (RTN replacedRtn, AFUNPTR replacementFun,...)
AFUNPTR LEVEL_PINCLIENT::RTN_ReplaceSignatureProbedEx (RTN replacedRtn, PROBE_MODE mode, AFUNPTR replacementFun,...)
VOID LEVEL_PINCLIENT::RTN_InsertCallProbed (RTN orgRtn, IPOINT action, AFUNPTR funptr,...)
VOID LEVEL_PINCLIENT::RTN_InsertCallProbedEx (RTN orgRtn, IPOINT action, PROBE_MODE mode, AFUNPTR funptr,...)
INT32 LEVEL_PINCLIENT::RTN_CodeRangesProbed (RTN rtn, INT32 num, PIN_CODE_RANGE *buffer)
AFUNPTR LEVEL_PINCLIENT::RTN_Replace (RTN replacedRtn, AFUNPTR replacementFun)
AFUNPTR LEVEL_PINCLIENT::RTN_ReplaceSignature (RTN replacedRtn, AFUNPTR replacementFun,...)
AFUNPTR LEVEL_PINCLIENT::RTN_ReplaceProbed (RTN replacedRtn, AFUNPTR replacementFun)
AFUNPTR LEVEL_PINCLIENT::RTN_ReplaceProbedEx (RTN replacedRtn, PROBE_MODE mode, AFUNPTR replacementFun)
+

Detailed Description

+A RTN represents the functions/routines/procedures typically produced by a compiler for a procedural programming language such as C. Pin finds routines by using the symbol table information. You must call PIN_InitSymbols() so that symbol table information will be available. Can be accessed at instrumentation time and analysis time.
+ APIs from this group are available in any thread, including any internal thread spawned by the tool.

+Iteration idioms:

+

  // Forward pass over all routines in a section
+  for( RTN rtn= SEC_RtnHead(sec); RTN_Valid(rtn); rtn = RTN_Next(rtn) )
+
+  // Reverse pass over all routines in a section
+  for( RTN rtn= SEC_RtnTail(sec); RTN_Valid(rtn); rtn = RTN_Prev(rtn) )
+

Typedef Documentation

+

+ + + + +
+ + + + +
typedef VOID(* LEVEL_PINCLIENT::RTN_INSTRUMENT_CALLBACK)(RTN rtn, VOID *v)
+
+ + + + + +
+   + + +

+Call back function used to instrument routines

+


Enumeration Type Documentation

+

+ + + + +
+ + + + +
enum LEVEL_PINCLIENT::PROBE_MODE
+
+ + + + + +
+   + + +

+PROBE_MODE enumerator allows user to set probe mode instrumentation other than default for a particular function. Usually, non-default mode is used when Pin can't instrument a routine in a regular way. A non default mode is usually less safe and tool-writer takes responsibility for correctness in this case.

+PROBE_MODE_ALLOW_RELOCATION

+Doing probed instrumentation Pin inserts a jumper in the first bytes of the instrumented routine. If the first basic block calculated within static discovery is not long enough, Pin can't insert a jumper and the instrumentation request is rejected. One more chance to insert a jumper in such case is to relocate the whole routine. It is not always possible, of course. The routine can be relocated by Pin if

    +
  • the size is known
  • there is no jumps outside function and
  • the routine does not contain indirect jumps
+

+The routine relocation may destabilize the application since ability to propagate exceptions is not preserved. Doing static analysis Pin also does not see additional entry points in the routine code.

+In PROBE_MODE_ALLOW_RELOCATION mode Pin tries to keep the instrumented routine in place, and considers relocation when "in-place" instrumentation is impossible. In PROBE_MODE_DEFAULT the relocation is not allowed. Routine relocation is not supported on Windows.

+


Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
PIN_CALLBACK LEVEL_PINCLIENT::RTN_AddInstrumentFunction RTN_INSTRUMENT_CALLBACK  fun,
VOID *  val
+
+ + + + + +
+   + + +

+Add a function used to instrument at routine granularity

Parameters:
+ + + +
fun Instrumentation function for routines
val Passed as the second argument to the instrumentation function
+
+
Returns:
PIN_CALLBACK A handle to a callback that can be used to further modify this callback's properties
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
ADDRINT LEVEL_PINCLIENT::RTN_Address RTN  rtn  ) 
+
+ + + + + +
+   + + +

+

Returns:
Address in memory of rtn
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::RTN_Close RTN  rtn  ) 
+
+ + + + + +
+   + + +

+Close the given rtn. This must be called before opening a new rtn.

+

Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
INT32 LEVEL_PINCLIENT::RTN_CodeRangesProbed RTN  rtn,
INT32  num,
PIN_CODE_RANGE buffer
+
+ + + + + +
+   + + +

+Returns all the dynamic code ranges associated with the given RTN. The buffer must be allocated by the tool, and be large enough to contain all code ranges. If num=0, the number of dynamic code ranges is returned.

+

Parameters:
+ + + + +
[in] rtn function that was replaced
[in] num number of elements, or zero.
[out] buffer buffer large enough for all of the code ranges.
+
+
Returns:
the number of dynamic code ranges copied into buffer. If num=0,it returns the number of dynamic code ranges associated with the RTN.
+PIN_StartProgramProbed() must be used when using this API.

+

Availability:
Mode: Probe
+ O/S: Linux, Windows
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
RTN LEVEL_PINCLIENT::RTN_CreateAt ADDRINT  address,
string  name
+
+ + + + + +
+   + + +

+Create a routine object at given address. In some situations user can calculate address of routine, but Pin doesn't see it because there is no symbol at this point. RTN_CreateAt() allows user to create a routine at a given address and assign a name to it. When it is done, the routine can be searched for by address or by name. The information is kept in Pin as long as the containing image is in memory.

+The address should point to code (an executable section or segment). Since the whole code is "covered" by routine objects, the address should fall in one of the existing routines. Pin shortens the routine, which contains the given address, and creates a new routine which starts at the given address and continues till the next routine or the end of the code section. Close any open routine before calling this interface with RTN_Close().

+

Parameters:
+ + + + +
[in] address The start address of the new routine
[in] name The assigned name of the new routine
[in] isIFunc True if the symbol's type which corresponds to the new routine location is ifunc symbol.
+
+
Returns:
RTN object The routine object is valid if the address fails into code section.
+
Note:
The pin client lock is obtained during the call of this API.

+If there is another routine object which starts at the same address this function replaces its name.

+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
RTN LEVEL_PINCLIENT::RTN_FindByAddress ADDRINT  address  ) 
+
+ + + + + +
+   + + +

+

Parameters:
+ + +
Address Memory address that corresponds to the RTN
+
+
Returns:
Handle to the RTN found. If not found returns RTN_Invalid() In a multithreaded program, the returned RTN handle could go stale if another thread unloaded the shared object that contains the RTN. Use PIN_LockClient() before calling this routine and PIN_UnlockClient() after the last use of the returned RTN handle. Locking is automatic from an instrumentation routine, so it is unnecessary (but harmless) to lock calls to this function from an instrumentation routine. If you just want the name, call RTN_FindNameByAddress, which automatically does the locking and returns a string which will not go stale if the shared library is unloaded
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
RTN LEVEL_PINCLIENT::RTN_FindByName IMG  img,
const CHAR *  name
+
+ + + + + +
+   + + +

+

Parameters:
+ + + +
Img Image in which to search for RTN
Name Name of the RTN to search in IMG
+
+
Returns:
Handle to the RTN found. If not found returns RTN_Invalid()
+
Note:
The pin client lock is obtained during the call of this API.

+In case this function is an Ifunc the return value will be the RTN that holds the implementation of that ifunc (Notice! this RTN can be on another image. If the resolver function is needed use RTN_IFuncResolver().

+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
string LEVEL_PINCLIENT::RTN_FindNameByAddress ADDRINT  address  ) 
+
+ + + + + +
+   + + +

+Return the name of a function. If more than one name is associated with this address, the first name found is returned.

+

Parameters:
+ + +
Address Memory address that corresponds to the RTN
+
+
Returns:
Name of routine, or "" if it is not found
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
AFUNPTR LEVEL_PINCLIENT::RTN_Funptr RTN  x  ) 
+
+ + + + + +
+   + + +

+an rtn to a funptr

+

Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_PINCLIENT::RTN_Id RTN  x  ) 
+
+ + + + + +
+   + + +

+Pin assigns each routine a unique ID. The ID is globally unique, i.e. an ID will not appear in two images. If the same routine name exists in two different images (i.e. they are in different addresses), each will have a different ID. If an image is unloaded and then reloaded, the routines within it will most likely have different IDs than before.

Returns:
Unique ID for the routine.
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
RTN LEVEL_PINCLIENT::RTN_IFuncImplementation RTN  rtn  ) 
+
+ + + + + +
+   + + +

+

Returns:
The implementation function that this ifunc points to
+
Availability:
Mode: JIT & Probe
+ O/S: Linux
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
RTN LEVEL_PINCLIENT::RTN_IFuncResolver RTN  rtn  ) 
+
+ + + + + +
+   + + +

+

Returns:
The resolver function that led to this implementation (ifunc)
+
Availability:
Mode: JIT & Probe
+ O/S: Linux
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::RTN_InsertCall RTN  rtn,
IPOINT  action,
AFUNPTR  funptr,
  ...
+
+ + + + + +
+   + + +

+Insert call relative to a rtn.

Parameters:
+ + + + + +
rtn Routine to instrument
action Use IPOINT_BEFORE to call funptr before execution, or IPOINT_AFTER for immediately before the return NOTE: IPOINT_AFTER is implemented by instrumenting each return instruction in a routine. Pin tries to find all return instructions, but success is not guaranteed
funptr Analysis function to call
... IARG_TYPE. Arguments to pass to funptr
+
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & MacOS
+ CPU: All
+ NOTE: Pin does not support calling this function from either the TRACE or INS InstrumentationFunction callback
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::RTN_InsertCallProbed RTN  orgRtn,
IPOINT  action,
AFUNPTR  funptr,
  ...
+
+ + + + + +
+   + + +

+Insert a call to an analysis routine relative to a RTN.

+

Parameters:
+ + + + + +
orgRtn the application routine to instrument
action use IPOINT_BEFORE or IPOINT_AFTER to call funptr before or after execution.
funptr the analysis function
... IARG_TYPE. If using IPOINT_AFTER, one IARG_TYPE must be IARG_PROTOTYPE. The list must end with IARG_END.
+
+PIN_StartProgramProbed() must be used when using this API.

+Use RTN_IsSafeForProbedInsertion() to determine if a function is a suitable candidate for probed function insertion.

+Some restrictions apply when using IARG_CONTEXT. See Instrumentation arguments for more information. IARG_THREAD_ID is not supported.

+

Availability:
Mode: Probe
+ O/S: All
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::RTN_InsertCallProbedEx RTN  orgRtn,
IPOINT  action,
PROBE_MODE  mode,
AFUNPTR  funptr,
  ...
+
+ + + + + +
+   + + +

+Insert a call to an analysis routine relative to a RTN.

+

Parameters:
+ + + + + + +
orgRtn the application routine to instrument
action use IPOINT_BEFORE or IPOINT_AFTER to call funptr before or after execution.
mode 
funptr the analysis function
... IARG_TYPE. If using IPOINT_AFTER, one IARG_TYPE must be IARG_PROTOTYPE. The list must end with IARG_END.
+
+PIN_StartProgramProbed() must be used when using this API.

+Use RTN_IsSafeForProbedInsertionEx() to determine if a function is a suitable candidate for probed function insertion.

+Some restrictions apply when using IARG_CONTEXT. See Instrumentation arguments for more information. IARG_THREAD_ID is not supported.

+

Availability:
Mode: Probe
+ O/S: All
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
INS LEVEL_PINCLIENT::RTN_InsHead RTN  rtn  ) 
+
+ + + + + +
+   + + +

+You must call RTN_Open() before the first time this is called for an rtn

Returns:
First instruction of rtn, or INS_Invalid() if no instructions.
+Note that Pin find the INSs of the RTN through static discovery, so Pin does not guarantee that it will find all the INSs in the RTN. If you need completely reliable instructions, use normal JIT time instrumentation, where Pin can guarantee that the instructions are correct.

+

See also:
RTN_InsHeadOnly(), which is provided for performance purposes. If a tool wishes to examine only the first INS of an RTN it should use RTN_InsHeadOnly() instead of RTN_InsHead().
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
INS LEVEL_PINCLIENT::RTN_InsHeadOnly RTN  rtn  ) 
+
+ + + + + +
+   + + +

+You must call RTN_Open() before the first time this is called for an rtn

Returns:
First instruction of rtn, or INS_Invalid() if no instructions.
+Note that tools should use this function when they want to examine ONLY the first INS of an RTN, and NO others. The INS_Next() of the INS returned by this function may be INS_Invalid() even if there are more INSs in the RTN. Tools that want to examine further INSs of the RTN should call the RTN_InsHead() function instead of this one.

+

Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
INS LEVEL_PINCLIENT::RTN_InsTail RTN  rtn  ) 
+
+ + + + + +
+   + + +

+You must call RTN_Open() before the first time this is called for an rtn

Returns:
Last instruction of rtn, or INS_Invalid() if no instructions
+Note that Pin finds the INSs of the RTN through static discovery, so Pin does not guarantee that it will find all the INSs in the RTN. If you need completely reliable instructions, use normal JIT time instrumentation, where Pin can guarantee that the instructions are correct.

+

Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + +
RTN LEVEL_PINCLIENT::RTN_Invalid  ) 
+
+ + + + + +
+   + + +

+

Returns:
RTN value that indicates no valid image
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::RTN_IsArtificial RTN  x  ) 
+
+ + + + + +
+   + + +

+An artificial RTN is an RTN which was introduced by PIN for internal management and does not really represent an actual routine in the application. For example, PIN might cover code pieces that are not associated with symbols with artificial RTNs in order to meet the requirement that all code must be covered with RTNs.

+

Returns:
TRUE if RTN is artificial.
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::RTN_IsDynamic RTN  rtn  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE if the routine is dynamically created
+A routine can be marked as dynamically created using Jit Profiling API only.

+

Availability:
Mode: JIT
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::RTN_IsSafeForProbedInsertion RTN  rtn  ) 
+
+ + + + + +
+   + + +

+Return TRUE if the given RTN is a candidate for function insertion using probes, and FALSE otherwise. This API should be called before attempting to insert a call to an analysis function using RTN_InsertCallProbed(). If you want to replace the given RTN with RTN_ReplaceSignatureProbed() or RTN_ReplaceProbed() you should use RTN_IsSafeForProbedReplacement()

+

Parameters:
+ + +
rtn the application routine to be replaced.
+
+
Returns:
TRUE if the function can be instrumented, FALSE if it cannot.
+PIN_StartProgramProbed() must be used when using this API.

+

Availability:
Mode: Probe
+ O/S: Linux, Windows
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_PINCLIENT::RTN_IsSafeForProbedInsertionEx RTN  rtn,
PROBE_MODE  mode
+
+ + + + + +
+   + + +

+Return TRUE if the given RTN is a candidate for function insertion using probes, and FALSE otherwise. This API should be called before attempting to insert a call to an analysis function using RTN_InsertCallProbedEx(). If you want to replace the given RTN with RTN_ReplaceSignatureProbedEx() or RTN_ReplaceProbedEx() you should use RTN_IsSafeForProbedReplacementEx()

+

Parameters:
+ + + +
rtn the application routine to be replaced.
mode instrumentation mode, see PROBE_MODE
+
+
Returns:
TRUE if the function can be instrumented, FALSE if it cannot.
+PIN_StartProgramProbed() must be used when using this API.

+

Availability:
Mode: Probe
+ O/S: Linux, Windows
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::RTN_IsSafeForProbedReplacement RTN  rtn  ) 
+
+ + + + + +
+   + + +

+Return TRUE if the given RTN is a candidate for probed function replacement, and FALSE otherwise. This API should be called before attempting to replace a function using RTN_ReplaceSignatureProbed() or RTN_ReplaceProbed(). Note that this routine does not guarantee it is safe to place a probe, it merely indicates that certain conditions are not present.

+

Parameters:
+ + +
rtn the application routine to be replaced.
+
+
Returns:
TRUE if the function can be replaced, FALSE if it cannot.
+PIN_StartProgramProbed() must be used when using this API.

+

Availability:
Mode: Probe
+ O/S: Linux, Windows
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_PINCLIENT::RTN_IsSafeForProbedReplacementEx RTN  rtn,
PROBE_MODE  mode
+
+ + + + + +
+   + + +

+Return TRUE if the given RTN is a candidate for probed function replacement, and FALSE otherwise. This API should be called before attempting to replace a function using RTN_ReplaceSignatureProbedEx(). Note that this routine does not guarantee it is safe to place a probe, it merely indicates that certain conditions are not present.

+

Parameters:
+ + + +
rtn the application routine to be replaced.
mode instrumentation mode, see PROBE_MODE
+
+
Returns:
TRUE if the function can be replaced, FALSE if it cannot.
+PIN_StartProgramProbed() must be used when using this API.

+

Availability:
Mode: Probe
+ O/S: Linux, Windows
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
const string& LEVEL_PINCLIENT::RTN_Name RTN  x  ) 
+
+ + + + + +
+   + + +

+

Returns:
Name of routine
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
RTN LEVEL_PINCLIENT::RTN_Next RTN  x  ) 
+
+ + + + + +
+   + + +

+

Returns:
Routine that follows x, or RTN_Invalid() if x is the last in the section
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_PINCLIENT::RTN_NumIns RTN  rtn  ) 
+
+ + + + + +
+   + + +

+Compute number of static INSs inside RTN.

+

Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::RTN_Open RTN  rtn  ) 
+
+ + + + + +
+   + + +

+Open the given rtn. This must be called before RTN_InsHead() or RTN_InsertCall() or RTN_InsHeadOnly()

+

Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
RTN LEVEL_PINCLIENT::RTN_Prev RTN  x  ) 
+
+ + + + + +
+   + + +

+

Returns:
Routine that precedes x, or RTN_Invalid() if x is the first in the section
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
USIZE LEVEL_PINCLIENT::RTN_Range RTN  rtn  ) 
+
+ + + + + +
+   + + +

+

Returns:
range of routine in bytes (until the next known symbol or end of current code region).
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
AFUNPTR LEVEL_PINCLIENT::RTN_Replace RTN  replacedRtn,
AFUNPTR  replacementFun
+
+ + + + + +
+   + + +

+Replace a routine in the application (replacedRtn) by another function defined in the Pin tool (replacementFun). The replacement function is not instrumented. The signature of the replacement function must be exactly the same as the replaced application routine. However, see RTN_ReplaceSignature(), which allows you to have a different signature.

+This API returns a function pointer to the replaced application routine's entry point, which allows the replacement function to call back to the original routine. If you do this, be sure to call the original routine via PIN_CallApplicationFunction(). Directly calling the application's function pointer from the replacement function may result in a crash.

+This API works in JIT mode, so you must start the application with PIN_StartProgram().

+

Parameters:
+ + + +
[in] replacedRtn The application routine to be replaced.
[in] replacementFun The replacement function.
+
+
Returns:
A function pointer to the replaced application routine's entry point.
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: JIT only.
+ O/S: Linux & Windows
+ CPU: All.
+ NOTE: Pin does not support calling this function from either the TRACE or INS InstrumentationFunction callback
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
AFUNPTR LEVEL_PINCLIENT::RTN_ReplaceProbed RTN  replacedRtn,
AFUNPTR  replacementFun
+
+ + + + + +
+   + + +

+Replace a routine in the application (replacedRtn) by another function defined in the Pintool (replacementFun) using probes. The replacement function is not instrumented. The signature of the replacement function must be the same as the replaced application routine. Replacement functions typically need to call the replaced routines. However, calls to RTN_Funptr(replacedRtn) will be redirected to replacementFun. Replacement functions must instead call or jump to the returned function pointer, which is a copy of the entry point that is not redirected.

+

Parameters:
+ + + +
replacedRtn the application routine to be replaced.
replacementFun the replacement function
+
+
Returns:
a function pointer to replaced application routine's entry point. This allows the replacement function to execute the replaced routine.
+PIN_StartProgramProbed() must be used when using this API.

+Use RTN_IsSafeForProbedReplacement() to determine if a function is a suitable candidate for probed function replacement.

+

Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: Probe
+ O/S: Linux & Windows
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
AFUNPTR LEVEL_PINCLIENT::RTN_ReplaceProbedEx RTN  replacedRtn,
PROBE_MODE  mode,
AFUNPTR  replacementFun
+
+ + + + + +
+   + + +

+Replace a routine in the application (replacedRtn) by another function defined in the Pintool (replacementFun) using probes. This API is an analog to RTN_ReplaceProbed.

+

Parameters:
+ + + + +
replacedRtn the application routine to be replaced.
mode instrumentation mode, see PROBE_MODE
replacementFun the replacement function
+
+
Returns:
a function pointer to replaced application routine's entry point.
+PIN_StartProgramProbedEx() must be used when using this API.

+Use RTN_IsSafeForProbedReplacementEx(rtn, mode) to determine if a function is a suitable candidate for probed function replacement.

+

Availability:
Mode: Probe
+ O/S: Linux & Windows
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
AFUNPTR LEVEL_PINCLIENT::RTN_ReplaceSignature RTN  replacedRtn,
AFUNPTR  replacementFun,
  ...
+
+ + + + + +
+   + + +

+Replace a routine in the application (replacedRtn) by another function defined in the Pin tool (replacementFun). The replacement function is not instrumented. The signature of the replacement function can be different from the replaced application routine's signature, which allows the tool to pass more (or fewer) parameters than were passed to the original application routine.

+The IARG_ORIG_FUNCPTR argument is especially useful because it allows the replacement function to call back to the original routine. Other useful arguments are IARG_FUNCARG_ENTRYPOINT_VALUE, which allows you to pass a parameter from the original routine to the replacement function, and IARG_PROTOTYPE, which allows you define the prototype of the original routine. The IARG_PROTOTYPE argument is recommended whenever you use IARG_FUNCARG_ENTRYPOINT_VALUE. It is required if the original routine has any parameters that are not simple integral or pointer values.

+If your replacement function calls back to the original application routine, be sure to do so via PIN_CallApplicationFunction(). Directly calling the application's function pointer from the replacement function may result in a crash.

+This API works in JIT mode, so you must start the application with PIN_StartProgram().

+

Parameters:
+ + + + +
[in] replacedRtn The application routine to be replaced.
[in] replacementFun The replacement function.
[in] ... Any additional arguments define parameters that are passed to the replacement function, see IARG_TYPE. This list must end with IARG_END.
+
+
Returns:
A function pointer to the replaced application routine's entry point. The replacement function can use this pointer to call back to the original application routine, or it can use IARG_ORIG_FUNCPTR for this purpose.
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: JIT only.
+ O/S: Linux & Windows
+ CPU: All.
+ NOTE: Pin does not support calling this function from either the TRACE or INS InstrumentationFunction callback
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
AFUNPTR LEVEL_PINCLIENT::RTN_ReplaceSignatureProbed RTN  replacedRtn,
AFUNPTR  replacementFun,
  ...
+
+ + + + + +
+   + + +

+Replace a routine in the application (orgRtn) by another function defined in the Pintool (replacementFunptr) using probes. The replacement function is not instrumented. Replacement functions typically need to call the replaced routines. However, calls to RTN_Funptr(orgRtn) will be redirected to replacementFunptr. Replacement functions must instead call the returned function pointer, which is a copy of the entry point that is not redirected. The replacement function signature does not have to be the same as the replaced function. In fact while the replaced function may have the CALLINGSTD_REGPARMS calling convention, the replacement function calling convention must not be PIN_FAST_ANALYSIS_CALL (i.e. the replaced function may have register parameters, the replacement function must not). The replacement function arguments must be passed to the replacement function using the Pin IARG_TYPEs, in the same way as RTN_InsertCall(). A prototype of the routine in the application must also be passed in as an argument. See PROTO_Allocate for more information.

Parameters:
+ + + + +
orgRtn the application routine to be replaced.
replacementFunptr the replacement function
... IARG_TYPE. One IARG_TYPE must be IARG_PROTOTYPE, and the list must end with IARG_END.
+
+
Returns:
a function pointer to the relocated application function entry point. This allows the replacement routine to execute the replaced routine.
+PIN_StartProgramProbed() must be used when using this API.

+Use RTN_IsSafeForProbeReplacement() to determine if a function is a suitable candidate for probed function replacement.

+Some restrictions apply when using IARG_CONTEXT. See Instrumentation arguments for more information. IARG_THREAD_ID is not supported.

+

Availability:
Mode: Probe
+ O/S: Linux, Windows
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AFUNPTR LEVEL_PINCLIENT::RTN_ReplaceSignatureProbedEx RTN  replacedRtn,
PROBE_MODE  mode,
AFUNPTR  replacementFun,
  ...
+
+ + + + + +
+   + + +

+Replace a routine in the application (orgRtn) by another function defined in the Pintool (replacementFunptr) using probes.

+

Parameters:
+ + + + + +
replacedRtn the application routine to be replaced.
mode instrumentation mode, see PROBE_MODE
replacementFun the replacement function
... IARG_TYPE. One IARG_TYPE must be IARG_PROTOTYPE, and the list must end with IARG_END.
+
+
Returns:
a function pointer to the relocated application function entry point. This allows the replacement routine to execute the replaced routine.
+Use RTN_IsSafeForProbeReplacementEx() to determine if a function is a suitable candidate for probed function replacement.

+

Availability:
Mode: Probe
+ O/S: Linux, Windows
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
SEC LEVEL_PINCLIENT::RTN_Sec RTN  x  ) 
+
+ + + + + +
+   + + +

+

Returns:
Section that contains this routine
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
USIZE LEVEL_PINCLIENT::RTN_Size RTN  rtn  ) 
+
+ + + + + +
+   + + +

+

Returns:
size of routine in bytes
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
SYM LEVEL_PINCLIENT::RTN_Sym RTN  x  ) 
+
+ + + + + +
+   + + +

+

Returns:
SYM associated with the given routine
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::RTN_Valid RTN  x  ) 
+
+ + + + + +
+   + + +

+

Returns:
True if x is not RTN_Invalid(). RTN_Valid() returns FALSE in certain cases when there is no static image of the code available, including dynamically generated code.
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__SEC__BASIC__API.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__SEC__BASIC__API.html new file mode 100644 index 0000000..588f75d --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__SEC__BASIC__API.html @@ -0,0 +1,690 @@ + + +Pin: SEC: Section Object + + + + +
+
+

SEC: Section Object

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Enumerations

enum  LEVEL_CORE::SEC_TYPE {
+  SEC_TYPE_INVALID, +
+  SEC_TYPE_UNUSED, +
+  LEVEL_CORE::SEC_TYPE_REGREL, +
+  LEVEL_CORE::SEC_TYPE_DYNREL, +
+  LEVEL_CORE::SEC_TYPE_EXEC, +
+  LEVEL_CORE::SEC_TYPE_DATA, +
+  SEC_TYPE_DYNAMIC, +
+  SEC_TYPE_OPD, +
+  SEC_TYPE_GOT, +
+  SEC_TYPE_STACK, +
+  SEC_TYPE_PLTOFF, +
+  SEC_TYPE_HASH, +
+  LEVEL_CORE::SEC_TYPE_LSDA, +
+  SEC_TYPE_UNWIND, +
+  SEC_TYPE_UNWINDINFO, +
+  SEC_TYPE_REGSYM, +
+  SEC_TYPE_DYNSYM, +
+  SEC_TYPE_DEBUG, +
+  LEVEL_CORE::SEC_TYPE_BSS, +
+  SEC_TYPE_SYMSTR, +
+  SEC_TYPE_DYNSTR, +
+  SEC_TYPE_SECSTR, +
+  SEC_TYPE_COMMENT, +
+  LEVEL_CORE::SEC_TYPE_LOOS, +
+  LEVEL_CORE::SEC_TYPE_USER, +
+  SEC_TYPE_LAST +
+ }

Functions

IMG LEVEL_PINCLIENT::SEC_Img (SEC sec)
SEC LEVEL_PINCLIENT::SEC_Next (SEC sec)
SEC LEVEL_PINCLIENT::SEC_Prev (SEC sec)
SEC LEVEL_PINCLIENT::SEC_Invalid ()
BOOL LEVEL_PINCLIENT::SEC_Valid (SEC x)
RTN LEVEL_PINCLIENT::SEC_RtnHead (SEC sec)
RTN LEVEL_PINCLIENT::SEC_RtnTail (SEC sec)
const string & LEVEL_PINCLIENT::SEC_Name (SEC sec)
SEC_TYPE LEVEL_PINCLIENT::SEC_Type (SEC sec)
BOOL LEVEL_PINCLIENT::SEC_Mapped (SEC sec)
const VOID * LEVEL_PINCLIENT::SEC_Data (SEC sec)
ADDRINT LEVEL_PINCLIENT::SEC_Address (SEC sec)
BOOL LEVEL_PINCLIENT::SEC_IsReadable (SEC sec)
BOOL LEVEL_PINCLIENT::SEC_IsWriteable (SEC sec)
BOOL LEVEL_PINCLIENT::SEC_IsExecutable (SEC sec)
USIZE LEVEL_PINCLIENT::SEC_Size (SEC sec)
+

Detailed Description

+A SEC is modeled after the sections found inside elf images. Can be accessed at instrumentation time and analysis time.

+SECs can be mapped or unmapped, a mapped SEC occupies address space inside the IMG. Unmapped SECs often contain debug and relocation information.
+ APIs from this group are available in any thread, including any internal thread spawned by the tool.

+Iteration idioms:

+

  // Forward pass over all sections in an image
+  for( SEC sec= IMG_SecHead(img); SEC_Valid(sec); sec = SEC_Next(sec) )
+
+  // Reverse pass over all sections in animage
+  for( SEC sec= IMG_SecTail(img); SEC_Valid(sec); sec = SEC_Prev(sec) )
+

+

Availability:
Mode: JIT & Probe
+ O/S: Linux & Windows
+ CPU: All
+
+

Enumeration Type Documentation

+

+ + + + +
+ + + + +
enum LEVEL_CORE::SEC_TYPE
+
+ + + + + +
+   + + +

+SEC types

Enumerator:
+ + + + + + + + + +
SEC_TYPE_REGREL  +relocations
SEC_TYPE_DYNREL  +dynamic relocations
SEC_TYPE_EXEC  +contains code
SEC_TYPE_DATA  +contains initialized data
SEC_TYPE_LSDA  +old exception_info (obsolete)
SEC_TYPE_BSS  +contains uninitialized data
SEC_TYPE_LOOS  +OS specific.
SEC_TYPE_USER  +Application specific.
+
+
+


Function Documentation

+

+ + + + +
+ + + + + + + + + +
ADDRINT LEVEL_PINCLIENT::SEC_Address SEC  sec  ) 
+
+ + + + + +
+   + + +

+

Returns:
Address in memory of sec
+If image is loaded by system loader, the real virtual address of section will be returned. If the image is mapped by IMG_Open() the address will be inside the mapped image. On Unix, if the section is not loadable, 0 will be returned in the both cases.
+

+ + + + +
+ + + + + + + + + +
const VOID* LEVEL_PINCLIENT::SEC_Data SEC  sec  ) 
+
+ + + + + +
+   + + +

+

Returns:
Return a pointer to the raw data for the section
+On Linux, Pin maps the whole image file for processing. The pointer returned by SEC_Data() points inside the mapped file. Note, SEC_Data() pointer is always between IMG_StartAddress() and IMG_StartAddress() + IMG_SizeMapped(). If you are analyzing image in image-load callback, please remember that the image will be unmapped after the callback returns and the pointer provided by SEC_Data() becomes invalid. If you are working with IMG_Open() the pointer is valid until IMG_Close().

+If section does not have raw data the function returns 0.

+

Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
IMG LEVEL_PINCLIENT::SEC_Img SEC  sec  ) 
+
+ + + + + +
+   + + +

+

Returns:
Image that contains this section
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + +
SEC LEVEL_PINCLIENT::SEC_Invalid  ) 
+
+ + + + + +
+   + + +

+

Returns:
Invalid section value
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::SEC_IsExecutable SEC  sec  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE if section is executable
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::SEC_IsReadable SEC  sec  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE if section is readable
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::SEC_IsWriteable SEC  sec  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE if section is writable
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::SEC_Mapped SEC  sec  ) 
+
+ + + + + +
+   + + +

+

Returns:
True if section is mapped in memory, unmapped section contain data not needed at run time, like debug information
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
const string& LEVEL_PINCLIENT::SEC_Name SEC  sec  ) 
+
+ + + + + +
+   + + +

+

Returns:
Section name
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
SEC LEVEL_PINCLIENT::SEC_Next SEC  sec  ) 
+
+ + + + + +
+   + + +

+

Returns:
Section that follows x, or SEC_Invalid() is x is last section in the image
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
SEC LEVEL_PINCLIENT::SEC_Prev SEC  sec  ) 
+
+ + + + + +
+   + + +

+

Returns:
Previous section of x, or SEC_Invalid() if x is the first in the image
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
RTN LEVEL_PINCLIENT::SEC_RtnHead SEC  sec  ) 
+
+ + + + + +
+   + + +

+

Returns:
First RTN of x, or RTN_Invalid() if no RTNs
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
RTN LEVEL_PINCLIENT::SEC_RtnTail SEC  sec  ) 
+
+ + + + + +
+   + + +

+

Returns:
Last RTN of x, or RTN_Invalid() if no RTNs
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
USIZE LEVEL_PINCLIENT::SEC_Size SEC  sec  ) 
+
+ + + + + +
+   + + +

+

Returns:
Size of section
+
+

+ + + + +
+ + + + + + + + + +
SEC_TYPE LEVEL_PINCLIENT::SEC_Type SEC  sec  ) 
+
+ + + + + +
+   + + +

+

Returns:
Section type
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::SEC_Valid SEC  x  ) 
+
+ + + + + +
+   + + +

+

Returns:
True if x is not SEC_Invalid()
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__SKIPPER.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__SKIPPER.html new file mode 100644 index 0000000..a906542 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__SKIPPER.html @@ -0,0 +1,74 @@ + + +Pin: SKIPPER + + + + +
+
+

SKIPPER

+ + + + + + + + + + + + +

Modules

 SKIP_INT3

Classes

class  INSTLIB::SKIPPER

Functions

INSTLIB::SKIPPER::SKIPPER (const string &prefix="", const string &knob_family="pintool:control", const string &knob_family_description="Skipper knobs")
INT32 INSTLIB::SKIPPER::CheckKnobs (VOID *val)
+

Detailed Description

+This class allows one to skip (i.e. delete) a set of instructions. Currently, only "int3" skipping is supported.

Function Documentation

+

+ + + + +
+ + + + + + + + + +
INT32 INSTLIB::SKIPPER::CheckKnobs VOID *  val  )  [inline, inherited]
+
+ + + + + +
+   + + +

+Activate all the component controllers

+


Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__SKIP__INT3.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__SKIP__INT3.html new file mode 100644 index 0000000..facc8b1 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__SKIP__INT3.html @@ -0,0 +1,72 @@ + + +Pin: SKIP_INT3 + + + + +
+
+

SKIP_INT3
+ +[SKIPPER] +

+ + + + + + + +

Classes

class  INSTLIB::SKIP_INT3

Functions

INT32 INSTLIB::SKIP_INT3::CheckKnobs (VOID *val)
+

Detailed Description

+Delete INT3 instruction on IA-32 and Intel(R) 64 architectures.

Function Documentation

+

+ + + + +
+ + + + + + + + + +
INT32 INSTLIB::SKIP_INT3::CheckKnobs VOID *  val  )  [inline, inherited]
+
+ + + + + +
+   + + +

+Delete "int3" if the -skip_int3 knob is provided

Returns:
1 if enabled, otherwise 0
+
+


Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__STOPPED__THREAD__API.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__STOPPED__THREAD__API.html new file mode 100644 index 0000000..38435ea --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__STOPPED__THREAD__API.html @@ -0,0 +1,321 @@ + + +Pin: Stop, examine and resume application threads API + + + + +
+
+

Stop, examine and resume application threads API

+ + + + + + + + + + + + + + + + +

Functions

BOOL LEVEL_PINCLIENT::PIN_StopApplicationThreads (THREADID tid)
BOOL LEVEL_PINCLIENT::PIN_IsThreadStoppedInDebugger (THREADID tid)
VOID LEVEL_PINCLIENT::PIN_ResumeApplicationThreads (THREADID tid)
UINT32 LEVEL_PINCLIENT::PIN_GetStoppedThreadCount ()
THREADID LEVEL_PINCLIENT::PIN_GetStoppedThreadId (UINT32 i)
const CONTEXTLEVEL_PINCLIENT::PIN_GetStoppedThreadContext (THREADID tid)
CONTEXTLEVEL_PINCLIENT::PIN_GetStoppedThreadWriteableContext (THREADID tid)
+

Detailed Description

+This API allows the user to stop all application threads, examine and modify their state and then resume them. It is available in analysis routines and internal threads.

Function Documentation

+

+ + + + +
+ + + + + + + + + +
const CONTEXT* LEVEL_PINCLIENT::PIN_GetStoppedThreadContext THREADID  tid  ) 
+
+ + + + + +
+   + + +

+This function returns the CONTEXT (register state) of a stopped application thread. The caller can inspect the stopped thread's register state via PIN_GetContextReg() and related API's.

+

Parameters:
+ + +
[in] tid Pin ID of a stopped thread.
+
+
Returns:
The CONTEXT for thread tid or NULL if that thread is not stopped.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + +
UINT32 LEVEL_PINCLIENT::PIN_GetStoppedThreadCount  ) 
+
+ + + + + +
+   + + +

+This function can be called in two scenarios. First, it may be called after stopping threads with PIN_StopApplicationThreads(), in which case it tells the number of application threads that were stopped with that API.

+Alternatively, this function may be called from a call-back that is registered via PIN_AddDebugInterpreter(). In this case, it tells the number of application threads that are stopped in the debugger.

+

Returns:
The number of stopped application threads. Returns zero if threads are not currently stopped.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + +
THREADID LEVEL_PINCLIENT::PIN_GetStoppedThreadId UINT32  i  ) 
+
+ + + + + +
+   + + +

+This function returns the Pin thread ID of a stopped application thread.

+

Parameters:
+ + +
[in] i An index in the range [0, n-1], where n is the value returned by PIN_GetStoppedThreadCount().
+
+
Returns:
The ID of the indexed thread, which is currently stopped. Returns INVALID_THREADID if i is out of range.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + +
CONTEXT* LEVEL_PINCLIENT::PIN_GetStoppedThreadWriteableContext THREADID  tid  ) 
+
+ + + + + +
+   + + +

+This function is similar to PIN_GetStoppedThreadContext(), but it returns a CONTEXT that may be modified. The caller may modify the stopped thread's register state via PIN_SetContextReg() and related API's. The stopped thread uses the new register state when it resumes.

+

Parameters:
+ + +
[in] tid Pin ID of a stopped thread.
+
+
Returns:
The CONTEXT for thread tid or NULL if that thread is not stopped.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::PIN_IsThreadStoppedInDebugger THREADID  tid  ) 
+
+ + + + + +
+   + + +

+This function returns true if the thread with denoted by 'tid' given by its arguments was stopped in the debugger. Note: If there is no thread with ID 'tid', this function returns false.

+

Parameters:
+ + +
[in] tid The Pin thread ID to check
+
+
Returns:
TRUE if the specified thread was stopped in the debugger. FALSE indicates that the thread is either running, or doesn't exist
+
Availability:
Mode: JIT
+ O/S: Linux, Windows
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_ResumeApplicationThreads THREADID  tid  ) 
+
+ + + + + +
+   + + +

+This function may be called after a successful call to PIN_StopApplicationThreads() in order to resume execution of the stopped application threads. If a thread's CONTEXT was changed while it was stopped, it resumes with the new CONTEXT.

+

Note:
When used in application thread, it is highly recommended to call it in the same analysis function that called PIN_StopApplicationThreads(). Deferring the call could result in a deadlock when the thread later tries to acquire a lock held by other application thread it suspended.
+
Parameters:
+ + +
[in] tid The Pin thread ID of the calling thread. Should be called in the same thread as corresponding PIN_StopApplicationThreads()
+
+
Note:
The vm lock is obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & MacOS
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::PIN_StopApplicationThreads THREADID  tid  ) 
+
+ + + + + +
+   + + +

+This function may be called by either an application thread or by a Pin internal thread to stop all other application threads at a "safe point". Threads that are stopped at a safe point are always stopped in between traces, so the caller is guaranteed that they are not stopped in the middle of any analysis functions or call-back functions. Once stopped, the calling thread can examine and modify the registers of the stopped threads.

+If this function is called by an internal thread, it stops all application threads. If it is called by an application thread, it stops all other application threads. When called by an application thread, this function may be called from an analysis function, but not from a call-back function.

+Since this function blocks until other application threads finish their current trace, the caller must not hold any locks that the other threads might try to acquire. Doing so could result in a deadlock.

+

Parameters:
+ + +
[in] tid The Pin thread ID of the calling thread.
+
+
Returns:
TRUE if the target threads are successfully stopped. FALSE indicates that some other thread is trying to stop the calling thread. In such a case, the caller should return from its analysis function to avoid a deadlock.
+
Note:
The vm lock is obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & MacOS
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__SYM__BASIC__API.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__SYM__BASIC__API.html new file mode 100644 index 0000000..0a94f67 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__SYM__BASIC__API.html @@ -0,0 +1,542 @@ + + +Pin: SYM: Symbol Object + + + + +
+
+

SYM: Symbol Object

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Enumerations

enum  LEVEL_PINCLIENT::UNDECORATION {
+  LEVEL_PINCLIENT::UNDECORATION_COMPLETE, +
+  LEVEL_PINCLIENT::UNDECORATION_NAME_ONLY +
+ }

Functions

SYM LEVEL_PINCLIENT::SYM_Next (SYM x)
SYM LEVEL_PINCLIENT::SYM_Prev (SYM x)
const string & LEVEL_PINCLIENT::SYM_Name (SYM x)
SYM LEVEL_PINCLIENT::SYM_Invalid ()
BOOL LEVEL_PINCLIENT::SYM_Valid (SYM x)
BOOL LEVEL_PINCLIENT::SYM_Dynamic (SYM x)
BOOL LEVEL_PINCLIENT::SYM_GeneratedByPin (SYM x)
BOOL LEVEL_PINCLIENT::SYM_IFuncImplementation (SYM x)
BOOL LEVEL_PINCLIENT::SYM_IFuncResolver (SYM x)
ADDRINT LEVEL_PINCLIENT::SYM_Value (SYM x)
UINT32 LEVEL_PINCLIENT::SYM_Index (SYM x)
ADDRINT LEVEL_PINCLIENT::SYM_Address (SYM x)
string LEVEL_PINCLIENT::PIN_UndecorateSymbolName (const string &symbolName, UNDECORATION style)
+

Detailed Description

+Symbol objects provide information about function symbols in the application. See Symbols for more information.

+You must call PIN_InitSymbols to make symbols available.

+Can be accessed at instrumentation time and analysis time.
+ APIs from this group are available in any thread, including any internal thread spawned by the tool.

+Iteration idioms:

+

  // Forward pass over all symbols in an image
+  for( SYM sym= IMG_RegsymHead(img); SYM_Valid(sym); sym = SYM_Next(sym) )
+

+

Availability:
Mode: JIT & Probe
+ O/S: Linux & Windows
+ CPU: All
+
+

Enumeration Type Documentation

+

+ + + + +
+ + + + +
enum LEVEL_PINCLIENT::UNDECORATION
+
+ + + + + +
+   + + +

+List of supported symbol name undecoration styles. Used in PIN_UndecorateSymbolName()

Enumerator:
+ + + +
UNDECORATION_COMPLETE  +Undecorate to full symbol signature.
UNDECORATION_NAME_ONLY  +Undecorate to [scope::]name.
+
+
+


Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
string LEVEL_PINCLIENT::PIN_UndecorateSymbolName const string &  symbolName,
UNDECORATION  style
+
+ + + + + +
+   + + +

+Undecorate symbol name.
+ Provides undecoration of C++ names and decorated C names. The behavior of this function
+ is compiler and OS specific.
+

+The C++ mangled name is undecorated either to its full signature (UNDECORATION_COMPLETE style)
+ or to [scope::]name form (UNDECORATION_NAME_ONLY style).
+

+Example of undecoration of symbol generated by Microsoft compiler in Windows:
+

+

  Style                   Original name        Undecorated name
+  =====================   ==================   ======================================
+  UNDECORATION_COMPLETE   ?foo@ccc@@QAEPADH@Z  public: char * __thiscall ccc::foo(int)
+  UNDECORATION_NAME_ONLY                       ccc::foo
+

+Symbol name decorated according to Windows IA32 C calling conventions is undecorated as follows:
+

  _foo     ->  foo    (__cdecl    convention)
+  _foo@4   ->  foo    (__stdcall  convention)
+  @foo@12  ->  foo    (__fastcall convention)
+

+Example of undecoration of symbol generated by GCC compiler on Linux:
+

+

  Style                   Original name                      Undecorated name
+  =====================   ==================                 ======================================
+  UNDECORATION_COMPLETE   _ZN1A7method1ERKSt6vectorIiSaIiEE  A::method1(std::vector<int, std::allocator<int> > const&)
+  UNDECORATION_NAME_ONLY                                     A::method1
+

+You should be careful if using this function, since some of the undecorated names it generates for symbols generated by the compiler may not be valid C++ symbol names. For example on Linux demangling can give names like construction vtable for std::istream-in-stdiostream, or non-virtual thunk to std::strstream::~strstream(), which are not valid C++ names.

+

Parameters:
+ + + +
[in] symbolName Decorated name
+
[in] style Undecoration style, relevant only to C++ undecoration
+ Values:
+ UNDECORATION_COMPLETE undecorate to full signature
+ UNDECORATION_NAME_ONLY undecorate to [scope::]name
+
+
+
Returns:
string containing undecorated symbol name.
+ If undecoration fails or not supported, the function returns the unmodified original name.
+
+
Availability:
Mode: JIT & Probe
+ O/S: Windows, Linux IA32/Intel64 and FreeBSD
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
ADDRINT LEVEL_PINCLIENT::SYM_Address SYM  x  ) 
+
+ + + + + +
+   + + +

+

Returns:
address of the symbol in memory
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::SYM_Dynamic SYM  x  ) 
+
+ + + + + +
+   + + +

+

Returns:
True if x is a dynamic symbol
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::SYM_GeneratedByPin SYM  x  ) 
+
+ + + + + +
+   + + +

+

Returns:
True if x is a symbol which did not appear in the image's original symbol table and was added by Pin (for example when resolving an ifunc). False if the symbol existed in the image's symbol table
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::SYM_IFuncImplementation SYM  x  ) 
+
+ + + + + +
+   + + +

+

Returns:
True if x is an IFUNC implementation symbol
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::SYM_IFuncResolver SYM  x  ) 
+
+ + + + + +
+   + + +

+

Returns:
True if x is an IFUNC resolver symbol
+
+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_PINCLIENT::SYM_Index SYM  x  ) 
+
+ + + + + +
+   + + +

+

Returns:
section index of a symbol
+
+

+ + + + +
+ + + + + + + + +
SYM LEVEL_PINCLIENT::SYM_Invalid  ) 
+
+ + + + + +
+   + + +

+

Returns:
Used to indicate no symbol
+
+

+ + + + +
+ + + + + + + + + +
const string& LEVEL_PINCLIENT::SYM_Name SYM  x  ) 
+
+ + + + + +
+   + + +

+

Returns:
Name of symbol
+
+

+ + + + +
+ + + + + + + + + +
SYM LEVEL_PINCLIENT::SYM_Next SYM  x  ) 
+
+ + + + + +
+   + + +

+

Returns:
Routine that follows x, or SYM_Invalid() if x is the last in the section
+
+

+ + + + +
+ + + + + + + + + +
SYM LEVEL_PINCLIENT::SYM_Prev SYM  x  ) 
+
+ + + + + +
+   + + +

+

Returns:
Routine that precedes x, or SYM_Invalid() if x is the first in the section
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::SYM_Valid SYM  x  ) 
+
+ + + + + +
+   + + +

+

Returns:
True if x is not SYM_Invalid()
+
+

+ + + + +
+ + + + + + + + + +
ADDRINT LEVEL_PINCLIENT::SYM_Value SYM  x  ) 
+
+ + + + + +
+   + + +

+

Returns:
Value of symbol, usually an address relative to beginning of image
+
+


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__TIME__WARPER.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__TIME__WARPER.html new file mode 100644 index 0000000..7b0a784 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__TIME__WARPER.html @@ -0,0 +1,36 @@ + + +Pin: TIME_WARPER + + + + +
+
+

TIME_WARPER

+ + + + +

Modules

 TIME_WARPER_RDTSC
+

Detailed Description

+It is often desirable to use instrumentation to change behavior of program in certain ways so that different runs of the program (with the same input) are same. Time_warper allows uses to modify non-repitative constructs such as instructions reading the cycle counters and system calls reading time of the day.
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__TIME__WARPER__RDTSC.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__TIME__WARPER__RDTSC.html new file mode 100644 index 0000000..e361b99 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__TIME__WARPER__RDTSC.html @@ -0,0 +1,72 @@ + + +Pin: TIME_WARPER_RDTSC + + + + +
+
+

TIME_WARPER_RDTSC
+ +[TIME_WARPER] +

+ + + + + + + +

Classes

class  INSTLIB::TIME_WARP_RDTSC

Functions

INT32 INSTLIB::TIME_WARP_RDTSC::CheckKnobs (VOID *val)
+

Detailed Description

+Modify the behaviors of RDTSC instruction on IA-32 and Intel(R) 64 architectures.

Function Documentation

+

+ + + + +
+ + + + + + + + + +
INT32 INSTLIB::TIME_WARP_RDTSC::CheckKnobs VOID *  val  )  [inline, inherited]
+
+ + + + + +
+   + + +

+Activate the controller if the -length knob is provided

Returns:
1 if controller can start an interval, otherwise 0
+
+


Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__TRACE__BASIC__API.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__TRACE__BASIC__API.html new file mode 100644 index 0000000..236fe74 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__TRACE__BASIC__API.html @@ -0,0 +1,714 @@ + + +Pin: TRACE: Single entrance, multiple exit sequence of instructions + + + + +
+
+

TRACE: Single entrance, multiple exit sequence of instructions

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Typedefs

typedef TRACE_CLASS * LEVEL_PINCLIENT::TRACE
typedef VOID(* LEVEL_PINCLIENT::SMC_CALLBACK )(ADDRINT traceStartAddress, ADDRINT traceEndAddress, VOID *v)
typedef VOID(* LEVEL_PINCLIENT::TRACE_INSTRUMENT_CALLBACK )(TRACE trace, VOID *v)

Functions

PIN_CALLBACK LEVEL_PINCLIENT::TRACE_AddInstrumentFunction (TRACE_INSTRUMENT_CALLBACK fun, VOID *val)
VOID LEVEL_PINCLIENT::TRACE_AddSmcDetectedFunction (SMC_CALLBACK fun, VOID *val)
VOID LEVEL_PINCLIENT::TRACE_InsertCall (TRACE trace, IPOINT action, AFUNPTR funptr,...)
VOID LEVEL_PINCLIENT::TRACE_InsertIfCall (TRACE trace, IPOINT action, AFUNPTR funptr,...)
VOID LEVEL_PINCLIENT::TRACE_InsertThenCall (TRACE trace, IPOINT action, AFUNPTR funptr,...)
BBL LEVEL_PINCLIENT::TRACE_BblHead (TRACE trace)
BBL LEVEL_PINCLIENT::TRACE_BblTail (TRACE trace)
ADDRINT LEVEL_PINCLIENT::TRACE_Address (TRACE trace)
USIZE LEVEL_PINCLIENT::TRACE_Size (TRACE trace)
RTN LEVEL_PINCLIENT::TRACE_Rtn (TRACE trace)
BOOL LEVEL_PINCLIENT::TRACE_HasFallThrough (TRACE trace)
UINT32 LEVEL_PINCLIENT::TRACE_NumBbl (TRACE trace)
UINT32 LEVEL_PINCLIENT::TRACE_NumIns (TRACE trace)
+

Detailed Description

+Sequence of instructions that is always entered at the top and may have multiple exits. If Pin detects a jump to an instruction in the middle of a trace, it will create a new trace beginning at the target. See Instrumentation Granularity.

+Iteration idioms:

+

  // Forward pass over all bbls in a trace
+  for( BBL bbl = TRACE_BblHead(trace); BBL_Valid(bbl); bbl = BBL_Next(bbl) )
+

Typedef Documentation

+

+ + + + +
+ + + + +
typedef VOID(* LEVEL_PINCLIENT::SMC_CALLBACK)(ADDRINT traceStartAddress, ADDRINT traceEndAddress, VOID *v)
+
+ + + + + +
+   + + +

+Call back function when SMC is detected. This function can be registered via TRACE_AddSmcDetectedFunction. The callback delivers the start and end addresses of the TRACE containing the SMC. Using this function can potentially cause Pin to use unlimited memory due to SMC tracking.

+

Parameters:
+ + + + +
[in] traceStartAddress The start address of the trace in which SMC is detected
[in] traceEndAddress The end address of the trace in which SMC is detected
[in] v The tool's call-back value
+
+
+

+ + + + +
+ + + + +
typedef TRACE_CLASS* LEVEL_PINCLIENT::TRACE
+
+ + + + + +
+   + + +

+Container for a trace

+

+ + + + +
+ + + + +
typedef VOID(* LEVEL_PINCLIENT::TRACE_INSTRUMENT_CALLBACK)(TRACE trace, VOID *v)
+
+ + + + + +
+   + + +

+Call back function used to instrument traces

+


Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
PIN_CALLBACK LEVEL_PINCLIENT::TRACE_AddInstrumentFunction TRACE_INSTRUMENT_CALLBACK  fun,
VOID *  val
+
+ + + + + +
+   + + +

+Add a function used to instrument at trace granularity

Parameters:
+ + + +
fun Instrumentation function for traces
val passed as the second argument to the instrumentation function
+
+
Returns:
PIN_CALLBACK A handle to a callback that can be used to further modify this callback's properties
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
ADDRINT LEVEL_PINCLIENT::TRACE_Address TRACE  trace  ) 
+
+ + + + + +
+   + + +

+

Returns:
Application address of a trace
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::TRACE_AddSmcDetectedFunction SMC_CALLBACK  fun,
VOID *  val
+
+ + + + + +
+   + + +

+Register a call back to be called when Pin detects a self modification of code in the application. See SMC_CALLBACK for usage details.
+

+

Parameters:
+ + + +
fun The call back function that is to be called
val Value to be passed to fun when it is called
+
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
BBL LEVEL_PINCLIENT::TRACE_BblHead TRACE  trace  ) 
+
+ + + + + +
+   + + +

+

Returns:
first bbl of trace
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
BBL LEVEL_PINCLIENT::TRACE_BblTail TRACE  trace  ) 
+
+ + + + + +
+   + + +

+

Returns:
last bbl of trace
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::TRACE_HasFallThrough TRACE  trace  ) 
+
+ + + + + +
+   + + +

+Tells if the last instructon in the trace has a fall-through path.

+

Parameters:
+ + +
[in] trace The trace.
+
+
Returns:
TRUE if the last instruction in the trace has a fall-through path.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::TRACE_InsertCall TRACE  trace,
IPOINT  action,
AFUNPTR  funptr,
  ...
+
+ + + + + +
+   + + +

+Insert one or more analysis calls in a trace.

+

Parameters:
+ + + + + +
[in] trace The trace to instrument.
[in] action Specifies when the analysis call executes:
    +
  • IPOINT_BEFORE inserts the call before the first instruction in the trace.
  • +
  • IPOINT_AFTER inserts the call after the last instruction in the trace. This call will only execute if execution falls-through (i.e. does not branch). You may only use IPOINT_AFTER if the last instruction in the trace has a fall-through path, which you can find out by using TRACE_HasFallThrough().
  • +
  • IPOINT_ANYWHERE is like IPOINT_BEFORE, but may put the call on a different instruction for better performance.
  • +
  • IPOINT_TAKEN_BRANCH inserts a call after each branch in the trace. The call only executes if the trace exits with a taken branch.
  • +
+
[in] funptr The analysis function to call.
[in] ... IARG_TYPE. Arguments to pass to funptr.
+
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::TRACE_InsertIfCall TRACE  trace,
IPOINT  action,
AFUNPTR  funptr,
  ...
+
+ + + + + +
+   + + +

+Insert one or more analysis calls in a trace. If funptr returns a non-zero ADDRINT, then the immediately following "then" analysis call is executed. Note that if CALL_ORDER is used, Both "if" and "then" analysis calls must have the same order.

+

Parameters:
+ + + + + +
[in] trace The trace to instrument.
[in] action Specifies when the analysis call executes. See the documentation in TRACE_InsertCall().
[in] funptr The analysis function to call. Its return type must be ADDRINT.
[in] ... IARG_TYPE. Arguments to pass to funptr.
+
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::TRACE_InsertThenCall TRACE  trace,
IPOINT  action,
AFUNPTR  funptr,
  ...
+
+ + + + + +
+   + + +

+Insert one or more analysis calls in a trace. The functions are called only if the immediately preceding "if" analysis call returns a non-zero value. Note that if CALL_ORDER is used, Both "if" and "then" analysis calls must have the same order.

+

Parameters:
+ + + + + +
[in] trace The trace to instrument.
[in] action Specifies when the analysis call executes. See the documentation in TRACE_InsertCall().
[in] funptr The analysis function to call.
[in] ... IARG_TYPE. Arguments to pass to funptr.
+
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_PINCLIENT::TRACE_NumBbl TRACE  trace  ) 
+
+ + + + + +
+   + + +

+

Returns:
Number of BBLs in trace
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_PINCLIENT::TRACE_NumIns TRACE  trace  ) 
+
+ + + + + +
+   + + +

+

Returns:
Number of instructions in trace
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
RTN LEVEL_PINCLIENT::TRACE_Rtn TRACE  trace  ) 
+
+ + + + + +
+   + + +

+

Returns:
RTN that contains first instruction of trace
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
USIZE LEVEL_PINCLIENT::TRACE_Size TRACE  trace  ) 
+
+ + + + + +
+   + + +

+Traces represent contiguous segments of the original code. This function returns the original source footprint of the given trace (not the corresponding post-instrumentation footprint in the code cache).

Returns:
Original application code size of a trace
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__TRACE__VERSION__API.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__TRACE__VERSION__API.html new file mode 100644 index 0000000..0c44cde --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__TRACE__VERSION__API.html @@ -0,0 +1,196 @@ + + +Pin: Trace version APIs + + + + +
+
+

Trace version APIs

+ + + + + + + + +

Functions

VOID LEVEL_PINCLIENT::BBL_SetTargetVersion (BBL bbl, ADDRINT version)
ADDRINT LEVEL_PINCLIENT::TRACE_Version (TRACE trace)
VOID LEVEL_PINCLIENT::INS_InsertVersionCase (INS ins, REG reg, INT32 case_value, ADDRINT version,...)
+

Detailed Description

+APIs to implement multiple types of instrumentation on traces and switch between them. Trace versioning allows the same code to be instrumented multiple times. For example, a trace can have both heavyweight and lightweight instrumentation and Pin can switch between the two while the application is running. See tests in the tools/InstrumentationOrderAndVersion directory for examples that use the versioning API's.

+Versions are user-defined integer values. By default, all traces have a version value of 0. Tool writers insert instrumentation that switch the application between different versions values. A trace with version value N only transfers control to successor traces with version value N.

+There are 2 ways to switch between versions. By calling BBL_SetTargetVersion on a BBL, all successor BBL's (taken and not taken path) will have the new version. BBL_SetTargetVersion can only be called once for a BBL, but it can be applied to every BBL in a trace, allowing all the exits to have different versions.

+In addition to BBL_SetTargetVersion, it is possible to insert a dynamic test to jump to a different version based on the value of a Pin virtual register with INS_InsertVersionCase

+Instrumentation functions can query which version is being used with TRACE_Version.

+There are some situations where Pin will reset the version value to 0, even if executing a non 0 trace. This may occur after a system call, exception or other unusual control flow. Versioning is intended to enable lightweight instrumentation. We suggest you structure the tool so a non-zero version value is used for lightweight instrumentation and 0 is for heavyweight, but always safe to use instrumentation.


Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::BBL_SetTargetVersion BBL  bbl,
ADDRINT  version
+
+ + + + + +
+   + + +

+Set the versioning for traces that can be reached from this basic block. Overrides the versioning from previous basic blocks. It is an error to set the versioning for the same basic block more than once.

+

Parameters:
+ + + +
[in] bbl BBL to mark for versioning
[in] version make BBL have this version
+
+
Availability:
Mode: JIT
+ O/S: All
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::INS_InsertVersionCase INS  ins,
REG  reg,
INT32  case_value,
ADDRINT  version,
  ...
+
+ + + + + +
+   + + +

+Insert a dynamic test to switch between versions before ins. If the value in reg matches case_value, then continue execution at ins with version version. Switching to a new version will cause execution to continue at a new trace starting with ins. This API can be called multiple times for the same instruction, creating a switch/case construct to select the version.

+

Parameters:
+ + + + + + +
[in] ins Insert case test before this instruction
[in] reg Virtual register used to select case.
[in] case_value Go to new version if reg contains case_value
[in] version New version to use
[in] ... List of additional arguments (see IARG_TYPE), terminated with IARG_END. Currently, only IARG_CALL_ORDER is supported. For more information, see CALL_ORDER.
+
+
Availability:
Mode: JIT
+ O/S: All
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + +
ADDRINT LEVEL_PINCLIENT::TRACE_Version TRACE  trace  ) 
+
+ + + + + +
+   + + +

+Returns the version for this trace. See BBL_SetTargetVersion

+

Availability:
Mode: JIT
+ O/S: All
+ CPU: All
+
+
+


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__TYPE__BASE.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__TYPE__BASE.html new file mode 100644 index 0000000..92557ad --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__TYPE__BASE.html @@ -0,0 +1,32 @@ + + +Pin: Basic types + + + + +
+
+

Basic types

+ +
+
Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__UTILS.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__UTILS.html new file mode 100644 index 0000000..8fc0d10 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/group__UTILS.html @@ -0,0 +1,32 @@ + + +Pin: Architecture-specific utilities + + + + +
+
+

Architecture-specific utilities

+ +
+
Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/hierarchy.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/hierarchy.html new file mode 100644 index 0000000..bf41837 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/hierarchy.html @@ -0,0 +1,58 @@ + + +Pin: Hierarchical Index + + + + +
+
+ +

Pin Class Hierarchy

This inheritance list is sorted roughly, but not completely, alphabetically: +
Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/index.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/index.html new file mode 100644 index 0000000..786d996 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/index.html @@ -0,0 +1,3788 @@ + + +Pin: Pin 3.5 User Guide + + + + +
+
+

Pin 3.5 User Guide

+

+========================================================================================

+Introduction

+========================================================================================

+Pin is a tool for the instrumentation of programs. It supports the Linux*, OS X* and Windows* operating systems and executables for the IA-32, Intel(R) 64 and Intel(R) Many Integrated Core architectures.

+Pin allows a tool to insert arbitrary code (written in C or C++) in arbitrary places in the executable. The code is added dynamically while the executable is running. This also makes it possible to attach Pin to an already running process.

+Pin provides a rich API that abstracts away the underlying instruction set idiosyncracies and allows context information such as register contents to be passed to the injected code as parameters. Pin automatically saves and restores the registers that are overwritten by the injected code so the application continues to work. Limited access to symbol and debug information is available as well.

+Pin includes the source code for a large number of example instrumentation tools like basic block profilers, cache simulators, instruction trace generators, etc. It is easy to derive new tools using the examples as a template.

+Tutorial Sections

+

+Reference Sections

+

+========================================================================================

+How to Instrument with Pin

+========================================================================================

+Table of Contents

+

+Pin

+The best way to think about Pin is as a "just in time" (JIT) compiler. The input to this compiler is not bytecode, however, but a regular executable. Pin intercepts the execution of the first instruction of the executable and generates ("compiles") new code for the straight line code sequence starting at this instruction. It then transfers control to the generated sequence. The generated code sequence is almost identical to the original one, but Pin ensures that it regains control when a branch exits the sequence. After regaining control, Pin generates more code for the branch target and continues execution. Pin makes this efficient by keeping all of the generated code in memory so it can be reused and directly branching from one sequence to another.

+In JIT mode, the only code ever executed is the generated code. The original code is only used for reference. When generating code, Pin gives the user an opportunity to inject their own code (instrumentation).

+Pin instruments all instructions that are actually excuted. It does not matter in what section they reside. Although there are some exceptions for conditional branches, generally speaking, if an instruction is never executed then it will not be instrumented.

+Pintools

+Conceptually, instrumentation consists of two components:

+

    +
  • A mechanism that decides where and what code is inserted
+

+

    +
  • The code to execute at insertion points
+

+These two components are instrumentation and analysis code. Both components live in a single executable, a Pintool. Pintools can be thought of as plugins that can modify the code generation process inside Pin.

+The Pintool registers instrumentation callback routines with Pin that are called from Pin whenever new code needs to be generated. This instrumentation callback routine represents the instrumentation component. It inspects the code to be generated, investigates its static properties, and decides if and where to inject calls to analysis functions.

+The analysis function gathers data about the application. Pin makes sure that the integer and floating point register state is saved and restored as necessary and allow arguments to be passed to the functions.

+The Pintool can also register notification callback routines for events such as thread creation or forking. These callbacks are generally used to gather data or tool initialization or clean up.

+Observations

+Since a Pintool works like a plugin, it must run in the same address space as Pin and the executable to be instrumented. Hence the Pintool has access to all of the executable's data. It also shares file descriptors and other process information with the executable.

+Pin and the Pintool control a program starting with the very first instruction. For executables compiled with shared libraries this implies that the execution of the dynamic loader and all shared libraries will be visible to the Pintool.

+When writing tools, it is more important to tune the analysis code than the instrumentation code. This is because the instrumentation is executed once, but analysis code is called many times.

+Instrumentation Granularity

+As described above, Pin's instrumentation is "just in time" (JIT). Instrumentation occurs immediately before a code sequence is executed for the first time. We call this mode of operation trace instrumentation .

+Trace instrumentation lets the Pintool inspect and instrument an executable one trace at a time. Traces usually begin at the target of a taken branch and end with an unconditional branch, including calls and returns. Pin guarantees that a trace is only entered at the top, but it may contain multiple exits. If a branch joins the middle of a trace, Pin constructs a new trace that begins with the branch target. Pin breaks the trace into basic blocks, BBLs. A BBL is a single entrance, single exit sequence of instructions. Branches to the middle of a bbl begin a new trace and hence a new BBL. It is often possible to insert a single analysis call for a BBL, instead of one analysis call for every instruction. Reducing the number of analysis calls makes instrumentation more efficient. Trace instrumentation utilizes the TRACE_AddInstrumentFunction API call.

+Note, though, that since Pin is discovering the control flow of the program dynamically as it executes, Pin's BBL can be different from the classical definition of a BBL which you will find in a compiler textbook. For instance, consider the code generated for the body of a switch statement like this

    switch(i)
+    {
+        case 4: total++;
+        case 3: total++;
+        case 2: total++;
+        case 1: total++;
+        case 0:
+        default: break;
+    }
+

+It will generate instructions something like this (for the IA-32 architecture)

.L7:
+        addl    $1, -4(%ebp)
+.L6:
+        addl    $1, -4(%ebp)
+.L5:
+        addl    $1, -4(%ebp)
+.L4:
+        addl    $1, -4(%ebp)
+

+In terms of classical basic blocks, each addl instruction is in a single instruction basic block. However as the different switch cases are executed, Pin will generate BBLs which contain all four instructions (when the .L7 case is entered), three instructions (when the .L6 case is entered), and so on. This means that counting Pin BBLs is unlikely to give the count you would expect if you thought that Pin BBLs were the same as the basic blocks in the text book. Here, for instance, if the code branches to .L7 you will count one Pin BBL, but there are four classical basic blocks executed.

+Pin also breaks BBLs on some other instructions which may be unexpected, for instance cpuid, popf and REP prefixed instructions all end traces and therefore BBLs. Since REP prefixed instructions are treated as implicit loops, if a REP prefixed instruction iterates more than once, iterations after the first will cause a single instruction BBL to be generated, so in this case you would see more basic blocks executed than you might expect.

+As a convenience for Pintool writers, Pin also offers an instruction instrumentation mode which lets the tool inspect and instrument an executable a single instruction at a time. This is essentially identical to trace instrumentation where the Pintool writer has been freed from the responsibilty of iterating over the instructions inside a trace. As decribed under trace instrumentation, certain BBLs and the instructions inside of them may be generated (and hence instrumented) multiple times. Instruction instrumentation utilizes the INS_AddInstrumentFunction API call.

+Sometimes, however, it can be useful to look at different granularity than a trace. For this purpose Pin offers two additional modes: image and routine instrumentation. These modes are implemented by "caching" instrumentation requests and hence incur a space overhead, these modes are aslo referred to as ahead-of-time instrumentation.

+Image instrumentation lets the Pintool inspect and instrument an entire image, IMG, when it is first loaded. A Pintool can walk the sections, SEC, of the image, the routines, RTN, of a section, and the instructions, INS of a routine. Instrumentation can be inserted so that it is executed before or after a routine is executed, or before or after an instruction is executed. Image instrumentation utilizes the IMG_AddInstrumentFunction API call. Image instrumentation depends on symbol information to determine routine boundaries hence PIN_InitSymbols must be called before PIN_Init.

+Routine instrumentation lets the Pintool inspect and instrument an entire routine when the image it is contained in is first loaded. A Pintool can walk the instructions of a routine. There is not enough information available to break the instructions into BBLs. Instrumentation can be inserted so that it is executed before or after a routine is executed, or before or after an instruction is executed. Routine instrumentation is provided as a convenience for Pintool writers, as an alternative to walking the sections and routines of the image during the Image instrumentation, as described in the previous paragraph.

+Routine instrumentation utilizes the RTN_AddInstrumentFunction API call. Instrumentation of routine exits does not work reliably in the presence of tail calls or when return instructions cannot reliably be detected.

+Note that in both Image and Routine instrumentation, it is not possible to know whether or not a routine will actually be executed (since these instrumentations are done at image load time). It is possible to walk the instructions only of routines that are executed, in the Trace or Instruction instrumentation routines, by identifying instructions that are the start of routines. See the tool Tests/parse_executed_rtns.cpp.

+Managed platforms support

+Pin supports all executables including the managed binaries. From Pin point of view managed binary is one more kind of a self-modifying program. There is a way to cause Pin to differentiate the just-in-time compiled code (Jitted code) from all other dynamically generated code and associate Jitted code with appropriate managed functions. To get this functionality, the just-in-time compiler (Jitter) of the running managed platform should support Jit Profiling API

+The following capabilities are supported:

+

+Following conditions must be satisfied to get the managed platforms support:

    +
  • +Set INTEL_JIT_PROFILER32 and INTEL_JIT_PROFILER64 environment variables to appropriate pinjitprofiling dynamic library
      +
    1. +For Windows:

      +

                  set INTEL_JIT_PROFILER32=<The Pin kit full path>\ia32\bin\pinjitprofiling.dll
      +            set INTEL_JIT_PROFILER64=<The Pin kit full path>\intel64\bin\pinjitprofiling.dll
      +

      +

    2. +
    3. +For Linux:

      +

                  setenv INTEL_JIT_PROFILER32 <The Pin kit full path>/ia32/bin/libpinjitprofiling.so
      +            setenv INTEL_JIT_PROFILER64 <The Pin kit full path>/intel64/bin/libpinjitprofiling.so
      +

      +

    4. +
    +

    +

  • +
  • +Add the knob support_jit_api to the Pin command line as Pintool option:

    +

        <Pin executable> <Pin options> -t <Pintool> -support_jit_api <Other Pintool options> -- <Test application> <Test application options>
    +

    +

  • +
+

+Symbols

+Pin provides access to function names using the symbol object (SYM). Symbol objects only provide information about the function symbols in the application. Information about other types of symbols (e.g. data symbols), must be obtained independently by the tool.

+On Windows, you can use dbghelp.dll for this. Note that using dbghelp.dll in an instrumented process is not safe and can cause dead-locks in some cases. A possible solution is to find symbols using a different non-instrumented process.

+On Linux, libelf.so or libdwarf.so can be used to access symbol information.

+PIN_InitSymbols must be called to access functions by name. See SYM: Symbol Object for more information.

+Floating Point Support in Analysis Routines

+Pin takes care of maintaining the application's floating point state accross analysis routines.

+IARG_REG_VALUE cannot be used to pass floating point register values as arguments to analysis routines.

+Instrumenting Multi-threaded Applications

+Instrumenting a multi-threaded program requires that the tool be thread safe - access to global storage must be coordinated with other threads. Pin tries to provide a conventional C++ program environment for tools, but it is not possible to use the standard library interfaces to manage threads in a Pintool. For example, Linux tools cannot use the pthreads library and Windows tools should not use the Win32 API's to manage threads. Instead, Pin provides its own locking and thread management API's, which the Pintool should use. (See LOCK: Locking Primitives and Pin Thread API.)

+Pintools do not need to add explicit locking to instrumentation routines because Pin calls these routines while holding an internal lock called the VM lock. However, Pin does execute analysis and replacement functions in parallel, so Pintools may need to add locking to these routines if they access global data.

+Pintools on Linux also need to take care when calling standard C or C++ library routines from analysis or replacement functions because the C and C++ libraries linked into Pintools are not thread-safe. Some simple C / C++ routines are safe to call without locking, because their implementations are inherently thread-safe, however, Pin does not attempt to provide a list of safe routines. If you are in doubt, you should add locking around calls to library functions. In particular, the "errno" value is not multi-thread safe, so tools that use this should provide their own locking. Note that these restrictions only exist on the Unix platforms, as the library routines on Windows are thread safe.

+Pin provides call-backs when each thread starts and ends (see PIN_AddThreadStartFunction and PIN_AddThreadFiniFunction). These provide a convenient place for a Pintool to allocate and manipulate thread local data and store it on a thread's local storage.

+Pin also provides an analysis routine argument (IARG_THREAD_ID), which passes a Pin-specific thread ID for the calling thread. This ID is different from the O/S system thread ID, and is a small number starting at 0, which can be used as an index to an array of thread data or as the locking value to Pin user locks. See the example Instrumenting Threaded Applications for more information.

+In addition to the Pin thread ID, the Pin API provides an efficient thread local storage (TLS), with the option to allocate a new TLS key and associate it with a given data destruction function. Any thread of the process can store and retrieve values in its own slot, referenced by the allocated key. The initial value associated with the key in all threads is NULL. See the example Using TLS for more information.

+False sharing occurs when multiple threads access different parts of the same cache line and at least one of them is a write. To maintain memory coherency, the computer must copy the memory from one CPU's cache to another, even though data is not truly shared. False sharing can usually be avoided by padding critical data structures to the size of a cache line, or by rearranging the data layout of structures. See the example Using TLS for more information.

+Avoiding Deadlocks in Multi-threaded Applications

+Since Pin, the tool, and the application may each acquire and release locks, Pintool developers must take care to avoid deadlocks with either the application or Pin. Deadlocks generally occur when two threads acquire the same locks in a different order. For example, thread A acquires lock L1 and then acquires lock L2, while thread B acquires lock L2 and then acquires lock L1. This will lead to a deadlock if thread A holds lock L1 and waits for L2 while thread B holds lock L2 and waits for L1. To avoid such deadlocks, Pin imposes a hierarchy on the order in which locks must be acquired. Pin generally acquires its own internal locks before the tool acquires any lock (e.g. via PIN_GetLock()). Additionally, we assume that the application may acquire locks at the top of this hierarchy (i.e. before Pin acquires its internal locks). The following diagram illustrates the hierarchy:
Application locks -> Pin internal locks -> Tool locks
+
Pintool developers should design their Pintools such that they never break this lock hierarchy, and they can do so by following these basic guidelines:
    +
  • If the tool acquires any locks from within a Pin call-back, it must release those locks before returning from that call-back. Holding a lock across Pin call-backs violates the hierarchy with respect to the Pin internal locks.
  • If the tool acquires any locks from within an analysis routine, it must release those locks before returning from the analysis routine. Holding a lock across Pin analysis routines violates the hierarchy with respect to Pin internal locks and other locks used by the instrumented application itself.
  • If the tool calls a Pin API from within a Pin call-back or analysis routine, it should not hold any tool locks when calling the API. Some of the Pin APIs use the internal Pin locks so holding a tool lock before invoking these APIs violates the hierarchy with respect to the Pin internal locks.
  • If the tool calls a Pin API from within an analysis routine, it may need to acquire the Pin client lock first by calling PIN_LockClient(). This depends on the API, so check the documentation for the specific API for more information. Note that the tool should not hold any other locks when calling PIN_LockClient(), as described in the previous item.
+

+While these guidelines are sufficient in most cases, they may turn out to be too restrictive for certain use-cases. The next set of guidelines explains the conditions in which it is safe to relax the basic guidelines above:

    +
  • In JIT mode, the tool may acquire locks from within an analysis routine and not release them, providing it releases these locks before leaving the trace that contains the analysis routine. The tool must expect that the trace may exit "early" if an application instruction raises an exception. Any lock L, which the tool might hold when the application raises an exception, must obey the following sub-rules:
      +
    • The tool must establish a call-back that executes when the application raises an exception and this call-back must release lock L if it was acquired at the time the exception occurred. Tools can use PIN_AddContextChangeFunction() to establish this call-back.
    • The tool must not acquire lock L from within any Pin call-back, to avoid violating the hierarchy with respect to the Pin internal locks.
    +
  • If the tool calls a Pin API from an analysis routine, it may acquire and hold a lock L while calling the API providing that:
      +
    • Lock L is not being acquired from any Pin call-back. This avoids the hierarchy violation with respect to the Pin internal locks.
    • The Pin API being invoked does not cause application code to execute (e.g., PIN_CallApplicationFunction()). This avoids the hierarchy violation with respect to the locks used by the application itself.
    +
+

+========================================================================================

+Examples

+========================================================================================

+Table of Contents

+

+To illustrate how to write Pintools, we present some simple examples. In the web based version of the manual, you can click on a function in the Pin API to see its documentation.

+All the examples presented in the manual can be found in the source/tools/ManualExamples directory.

+Building the Example Tools

+To build all examples in a directory for ia32 architecture:
$ cd source/tools/ManualExamples
+$ make all TARGET=ia32
+

+To build all examples in a directory for intel64 architecture:

$ cd source/tools/ManualExamples
+$ make all TARGET=intel64
+

+To build and run a specific example (e.g., inscount0):

$ cd source/tools/ManualExamples
+$ make inscount0.test TARGET=intel64
+

+To build a specific example without running it (e.g., inscount0):

$ cd source/tools/ManualExamples
+$ make obj-intel64/inscount0.so TARGET=intel64
+

+The above applies to the Intel(R) 64 architecture. For the IA-32 architecture, use TARGET=ia32 instead.

$ cd source/tools/ManualExamples
+$ make obj-ia32/inscount0.so TARGET=ia32
+

+Notes for Building Tools for Windows

+Since the tools are built using make, be sure to install cygwin make first.

+Open the Visual Studio Command Prompt corresponding to your target architecture, i.e. x86 or x64, and follow the steps in the Building the Example Tools section.

+Simple Instruction Count (Instruction Instrumentation)

+The example below instruments a program to count the total number of instructions executed. It inserts a call to docount before every instruction. When the program exits, it saves the count in the file inscount.out.

+Here is how to run it and display its output (note that the file list is the ls output, so it may be different on your machine, similarly the instruction count will depend on the implementation of ls):

+

$ ../../../pin -t obj-intel64/inscount0.so -- /bin/ls
+Makefile          atrace.o     imageload.out  itrace      proccount
+Makefile.example  imageload    inscount0      itrace.o    proccount.o
+atrace            imageload.o  inscount0.o    itrace.out
+$ cat inscount.out
+Count 422838
+$
+

+The KNOB exhibited in the example below overwrites the default name for the output file. To use this feature, add "-o <file_name>" to the command line. Tool command line options should be inserted between the tool name and the double dash ("--"). For more information on how to add command line options to your tool, please see KNOB: Commandline Option Handling.

+

$ ../../../pin -t obj-intel64/inscount0.so -o inscount0.log -- /bin/ls
+

+The example can be found in source/tools/ManualExamples/inscount0.cpp

+

#include <iostream>
+#include <fstream>
+#include "pin.H"
+
+ofstream OutFile;
+
+// The running count of instructions is kept here
+// make it static to help the compiler optimize docount
+static UINT64 icount = 0;
+
+// This function is called before every instruction is executed
+VOID docount() { icount++; }
+    
+// Pin calls this function every time a new instruction is encountered
+VOID Instruction(INS ins, VOID *v)
+{
+    // Insert a call to docount before every instruction, no arguments are passed
+    INS_InsertCall(ins, IPOINT_BEFORE, (AFUNPTR)docount, IARG_END);
+}
+
+KNOB<string> KnobOutputFile(KNOB_MODE_WRITEONCE, "pintool",
+    "o", "inscount.out", "specify output file name");
+
+// This function is called when the application exits
+VOID Fini(INT32 code, VOID *v)
+{
+    // Write to a file since cout and cerr maybe closed by the application
+    OutFile.setf(ios::showbase);
+    OutFile << "Count " << icount << endl;
+    OutFile.close();
+}
+
+/* ===================================================================== */
+/* Print Help Message                                                    */
+/* ===================================================================== */
+
+INT32 Usage()
+{
+    cerr << "This tool counts the number of dynamic instructions executed" << endl;
+    cerr << endl << KNOB_BASE::StringKnobSummary() << endl;
+    return -1;
+}
+
+/* ===================================================================== */
+/* Main                                                                  */
+/* ===================================================================== */
+/*   argc, argv are the entire command line: pin -t <toolname> -- ...    */
+/* ===================================================================== */
+
+int main(int argc, char * argv[])
+{
+    // Initialize pin
+    if (PIN_Init(argc, argv)) return Usage();
+
+    OutFile.open(KnobOutputFile.Value().c_str());
+
+    // Register Instruction to be called to instrument instructions
+    INS_AddInstrumentFunction(Instruction, 0);
+
+    // Register Fini to be called when the application exits
+    PIN_AddFiniFunction(Fini, 0);
+    
+    // Start the program, never returns
+    PIN_StartProgram();
+    
+    return 0;
+}
+

+Instruction Address Trace (Instruction Instrumentation)

+In the previous example, we did not pass any arguments to docount, the analysis procedure. In this example, we show how to pass arguments. When calling an analysis procedure, Pin allows you to pass the instruction pointer, current value of registers, effective address of memory operations, constants, etc. For a complete list, see IARG_TYPE.

+With a small change, we can turn the instruction counting example into a Pintool that prints the address of every instruction that is executed. This tool is useful for understanding the control flow of a program for debugging, or in processor design when simulating an instruction cache.

+We change the arguments to INS_InsertCall to pass the address of the instruction about to be executed. We replace docount with printip, which prints the instruction address. It writes its output to the file itrace.out.

+This is how to run it and look at the output:

+

$ ../../../pin -t obj-intel64/itrace.so -- /bin/ls
+Makefile          atrace.o     imageload.out  itrace      proccount
+Makefile.example  imageload    inscount0      itrace.o    proccount.o
+atrace            imageload.o  inscount0.o    itrace.out
+$ head itrace.out
+0x40001e90
+0x40001e91
+0x40001ee4
+0x40001ee5
+0x40001ee7
+0x40001ee8
+0x40001ee9
+0x40001eea
+0x40001ef0
+0x40001ee0
+$
+

+The example can be found in source/tools/ManualExamples/itrace.cpp

+

#include <stdio.h>
+#include "pin.H"
+
+FILE * trace;
+
+// This function is called before every instruction is executed
+// and prints the IP
+VOID printip(VOID *ip) { fprintf(trace, "%p\n", ip); }
+
+// Pin calls this function every time a new instruction is encountered
+VOID Instruction(INS ins, VOID *v)
+{
+    // Insert a call to printip before every instruction, and pass it the IP
+    INS_InsertCall(ins, IPOINT_BEFORE, (AFUNPTR)printip, IARG_INST_PTR, IARG_END);
+}
+
+// This function is called when the application exits
+VOID Fini(INT32 code, VOID *v)
+{
+    fprintf(trace, "#eof\n");
+    fclose(trace);
+}
+
+/* ===================================================================== */
+/* Print Help Message                                                    */
+/* ===================================================================== */
+
+INT32 Usage()
+{
+    PIN_ERROR("This Pintool prints the IPs of every instruction executed\n" 
+              + KNOB_BASE::StringKnobSummary() + "\n");
+    return -1;
+}
+
+/* ===================================================================== */
+/* Main                                                                  */
+/* ===================================================================== */
+
+int main(int argc, char * argv[])
+{
+    trace = fopen("itrace.out", "w");
+    
+    // Initialize pin
+    if (PIN_Init(argc, argv)) return Usage();
+
+    // Register Instruction to be called to instrument instructions
+    INS_AddInstrumentFunction(Instruction, 0);
+
+    // Register Fini to be called when the application exits
+    PIN_AddFiniFunction(Fini, 0);
+    
+    // Start the program, never returns
+    PIN_StartProgram();
+    
+    return 0;
+}
+

+Memory Reference Trace (Instruction Instrumentation)

+The previous example instruments all instructions. Sometimes a tool may only want to instrument a class of instructions, like memory operations or branch instructions. A tool can do this by using the Pin API which includes functions that classify and examine instructions. The basic API is common to all instruction sets and is described here. In addition, there is an instruction set specific API for the IA-32 ISA.

+In this example, we show how to do more selective instrumentation by examining the instructions. This tool generates a trace of all memory addresses referenced by a program. This is also useful for debugging and for simulating a data cache in a processor.

+We only instrument instructions that read or write memory. We also use INS_InsertPredicatedCall instead of INS_InsertCall to avoid generating references to instructions that are predicated when the predicate is false. On IA-32 and Intel(R) 64 architectures CMOVcc, FCMOVcc and REP prefixed string operations are treated as being predicated. For CMOVcc and FCMOVcc the predicate is the condition test implied by "cc", for REP prefixed string ops it is that the count register is non-zero.

+Since the instrumentation functions are only called once and the analysis functions are called every time an instruction is executed, it is much faster to instrument only the memory operations, as compared to the previous instruction trace example that instruments every instruction.

+Here is how to run it and the sample output:

+

$ ../../../pin -t obj-intel64/pinatrace.so -- /bin/ls
+Makefile          atrace.o    imageload.o    inscount0.o  itrace.out
+Makefile.example  atrace.out  imageload.out  itrace       proccount
+atrace            imageload   inscount0      itrace.o     proccount.o
+$ head pinatrace.out
+0x40001ee0: R 0xbfffe798
+0x40001efd: W 0xbfffe7d4
+0x40001f09: W 0xbfffe7d8
+0x40001f20: W 0xbfffe864
+0x40001f20: W 0xbfffe868
+0x40001f20: W 0xbfffe86c
+0x40001f20: W 0xbfffe870
+0x40001f20: W 0xbfffe874
+0x40001f20: W 0xbfffe878
+0x40001f20: W 0xbfffe87c
+$
+

+The example can be found in source/tools/ManualExamples/pinatrace.cpp

+

/*
+ *  This file contains an ISA-portable PIN tool for tracing memory accesses.
+ */
+
+#include <stdio.h>
+#include "pin.H"
+
+
+FILE * trace;
+
+// Print a memory read record
+VOID RecordMemRead(VOID * ip, VOID * addr)
+{
+    fprintf(trace,"%p: R %p\n", ip, addr);
+}
+
+// Print a memory write record
+VOID RecordMemWrite(VOID * ip, VOID * addr)
+{
+    fprintf(trace,"%p: W %p\n", ip, addr);
+}
+
+// Is called for every instruction and instruments reads and writes
+VOID Instruction(INS ins, VOID *v)
+{
+    // Instruments memory accesses using a predicated call, i.e.
+    // the instrumentation is called iff the instruction will actually be executed.
+    //
+    // On the IA-32 and Intel(R) 64 architectures conditional moves and REP 
+    // prefixed instructions appear as predicated instructions in Pin.
+    UINT32 memOperands = INS_MemoryOperandCount(ins);
+
+    // Iterate over each memory operand of the instruction.
+    for (UINT32 memOp = 0; memOp < memOperands; memOp++)
+    {
+        if (INS_MemoryOperandIsRead(ins, memOp))
+        {
+            INS_InsertPredicatedCall(
+                ins, IPOINT_BEFORE, (AFUNPTR)RecordMemRead,
+                IARG_INST_PTR,
+                IARG_MEMORYOP_EA, memOp,
+                IARG_END);
+        }
+        // Note that in some architectures a single memory operand can be 
+        // both read and written (for instance incl (%eax) on IA-32)
+        // In that case we instrument it once for read and once for write.
+        if (INS_MemoryOperandIsWritten(ins, memOp))
+        {
+            INS_InsertPredicatedCall(
+                ins, IPOINT_BEFORE, (AFUNPTR)RecordMemWrite,
+                IARG_INST_PTR,
+                IARG_MEMORYOP_EA, memOp,
+                IARG_END);
+        }
+    }
+}
+
+VOID Fini(INT32 code, VOID *v)
+{
+    fprintf(trace, "#eof\n");
+    fclose(trace);
+}
+
+/* ===================================================================== */
+/* Print Help Message                                                    */
+/* ===================================================================== */
+   
+INT32 Usage()
+{
+    PIN_ERROR( "This Pintool prints a trace of memory addresses\n" 
+              + KNOB_BASE::StringKnobSummary() + "\n");
+    return -1;
+}
+
+/* ===================================================================== */
+/* Main                                                                  */
+/* ===================================================================== */
+
+int main(int argc, char *argv[])
+{
+    if (PIN_Init(argc, argv)) return Usage();
+
+    trace = fopen("pinatrace.out", "w");
+
+    INS_AddInstrumentFunction(Instruction, 0);
+    PIN_AddFiniFunction(Fini, 0);
+
+    // Never returns
+    PIN_StartProgram();
+    
+    return 0;
+}
+

+Detecting the Loading and Unloading of Images (Image Instrumentation)

+The example below prints a message to a trace file every time and image is loaded or unloaded. It really abuses the image instrumentation mode as the Pintool neither inspects the image nor adds instrumentation code.

+If you invoke it on ls, you would see this output:

+

$ ../../../pin -t obj-intel64/imageload.so -- /bin/ls
+Makefile          atrace.o    imageload.o    inscount0.o  proccount
+Makefile.example  atrace.out  imageload.out  itrace       proccount.o
+atrace            imageload   inscount0      itrace.o     trace.out
+$ cat imageload.out
+Loading /bin/ls
+Loading /lib/ld-linux.so.2
+Loading /lib/libtermcap.so.2
+Loading /lib/i686/libc.so.6
+Unloading /bin/ls
+Unloading /lib/ld-linux.so.2
+Unloading /lib/libtermcap.so.2
+Unloading /lib/i686/libc.so.6
+$
+

+The example can be found in source/tools/ManualExamples/imageload.cpp

+

//
+// This tool prints a trace of image load and unload events
+//
+
+#include "pin.H"
+#include <iostream>
+#include <fstream>
+#include <stdlib.h>
+
+using namespace std;
+
+KNOB<string> KnobOutputFile(KNOB_MODE_WRITEONCE, "pintool",
+    "o", "imageload.out", "specify file name");
+
+ofstream TraceFile;
+
+// Pin calls this function every time a new img is loaded
+// It can instrument the image, but this example does not
+// Note that imgs (including shared libraries) are loaded lazily
+
+VOID ImageLoad(IMG img, VOID *v)
+{
+    TraceFile << "Loading " << IMG_Name(img) << ", Image id = " << IMG_Id(img) << endl;
+}
+
+// Pin calls this function every time a new img is unloaded
+// You can't instrument an image that is about to be unloaded
+VOID ImageUnload(IMG img, VOID *v)
+{
+    TraceFile << "Unloading " << IMG_Name(img) << endl;
+}
+
+// This function is called when the application exits
+// It closes the output file.
+VOID Fini(INT32 code, VOID *v)
+{
+    if (TraceFile.is_open()) { TraceFile.close(); }
+}
+
+/* ===================================================================== */
+/* Print Help Message                                                    */
+/* ===================================================================== */
+
+INT32 Usage()
+{
+    PIN_ERROR("This tool prints a log of image load and unload events\n"
+             + KNOB_BASE::StringKnobSummary() + "\n");
+    return -1;
+}
+
+/* ===================================================================== */
+/* Main                                                                  */
+/* ===================================================================== */
+
+int main(int argc, char * argv[])
+{
+    // Initialize symbol processing
+    PIN_InitSymbols();
+    
+    // Initialize pin
+    if (PIN_Init(argc, argv)) return Usage();
+    
+    TraceFile.open(KnobOutputFile.Value().c_str());
+    
+    // Register ImageLoad to be called when an image is loaded
+    IMG_AddInstrumentFunction(ImageLoad, 0);
+
+    // Register ImageUnload to be called when an image is unloaded
+    IMG_AddUnloadFunction(ImageUnload, 0);
+
+    // Register Fini to be called when the application exits
+    PIN_AddFiniFunction(Fini, 0);
+    
+    // Start the program, never returns
+    PIN_StartProgram();
+    
+    return 0;
+}
+

+More Efficient Instruction Counting (Trace Instrumentation)

+The example Simple Instruction Count (Instruction Instrumentation) computed the number of executed instructions by inserting a call before every instruction. In this example, we make it more efficient by counting the number of instructions in a BBL at instrumentation time, and incrementing the counter once per BBL, instead of once per instruction.

+The example can be found in source/tools/ManualExamples/inscount1.cpp

+

#include <iostream>
+#include <fstream>
+#include "pin.H"
+
+ofstream OutFile;
+
+// The running count of instructions is kept here
+// make it static to help the compiler optimize docount
+static UINT64 icount = 0;
+
+// This function is called before every block
+VOID docount(UINT32 c) { icount += c; }
+    
+// Pin calls this function every time a new basic block is encountered
+// It inserts a call to docount
+VOID Trace(TRACE trace, VOID *v)
+{
+    // Visit every basic block  in the trace
+    for (BBL bbl = TRACE_BblHead(trace); BBL_Valid(bbl); bbl = BBL_Next(bbl))
+    {
+        // Insert a call to docount before every bbl, passing the number of instructions
+        BBL_InsertCall(bbl, IPOINT_BEFORE, (AFUNPTR)docount, IARG_UINT32, BBL_NumIns(bbl), IARG_END);
+    }
+}
+
+KNOB<string> KnobOutputFile(KNOB_MODE_WRITEONCE, "pintool",
+    "o", "inscount.out", "specify output file name");
+
+// This function is called when the application exits
+VOID Fini(INT32 code, VOID *v)
+{
+    // Write to a file since cout and cerr maybe closed by the application
+    OutFile.setf(ios::showbase);
+    OutFile << "Count " << icount << endl;
+    OutFile.close();
+}
+
+/* ===================================================================== */
+/* Print Help Message                                                    */
+/* ===================================================================== */
+
+INT32 Usage()
+{
+    cerr << "This tool counts the number of dynamic instructions executed" << endl;
+    cerr << endl << KNOB_BASE::StringKnobSummary() << endl;
+    return -1;
+}
+
+/* ===================================================================== */
+/* Main                                                                  */
+/* ===================================================================== */
+
+int main(int argc, char * argv[])
+{
+    // Initialize pin
+    if (PIN_Init(argc, argv)) return Usage();
+
+    OutFile.open(KnobOutputFile.Value().c_str());
+
+    // Register Instruction to be called to instrument instructions
+    TRACE_AddInstrumentFunction(Trace, 0);
+
+    // Register Fini to be called when the application exits
+    PIN_AddFiniFunction(Fini, 0);
+    
+    // Start the program, never returns
+    PIN_StartProgram();
+    
+    return 0;
+}
+

+Procedure Instruction Count (Routine Instrumentation)

+The example below instruments a program to count the number of times a procedure is called, and the total number of instructions executed in each procedure. When it finishes, it prints a profile to proccount.out

+Executing the tool and sample output:

+

$ ../../../pin -t obj-intel64/proccount.so -- /bin/grep proccount.cpp Makefile
+proccount_SOURCES = proccount.cpp
+$ head proccount.out
+              Procedure           Image            Address        Calls Instructions
+                  _fini       libc.so.6         0x40144d00            1           21
+__deregister_frame_info       libc.so.6         0x40143f60            2           70
+  __register_frame_info       libc.so.6         0x40143df0            2           62
+              fde_merge       libc.so.6         0x40143870            0            8
+            __init_misc       libc.so.6         0x40115824            1           85
+            __getclktck       libc.so.6         0x401157f4            0            2
+                 munmap       libc.so.6         0x40112ca0            1            9
+                   mmap       libc.so.6         0x40112bb0            1           23
+            getpagesize       libc.so.6         0x4010f934            2           26
+$
+

+The example can be found in source/tools/ManualExamples/proccount.cpp

+

//
+// This tool counts the number of times a routine is executed and 
+// the number of instructions executed in a routine
+//
+
+#include <fstream>
+#include <iomanip>
+#include <iostream>
+#include <string.h>
+#include "pin.H"
+
+ofstream outFile;
+
+// Holds instruction count for a single procedure
+typedef struct RtnCount
+{
+    string _name;
+    string _image;
+    ADDRINT _address;
+    RTN _rtn;
+    UINT64 _rtnCount;
+    UINT64 _icount;
+    struct RtnCount * _next;
+} RTN_COUNT;
+
+// Linked list of instruction counts for each routine
+RTN_COUNT * RtnList = 0;
+
+// This function is called before every instruction is executed
+VOID docount(UINT64 * counter)
+{
+    (*counter)++;
+}
+    
+const char * StripPath(const char * path)
+{
+    const char * file = strrchr(path,'/');
+    if (file)
+        return file+1;
+    else
+        return path;
+}
+
+// Pin calls this function every time a new rtn is executed
+VOID Routine(RTN rtn, VOID *v)
+{
+    
+    // Allocate a counter for this routine
+    RTN_COUNT * rc = new RTN_COUNT;
+
+    // The RTN goes away when the image is unloaded, so save it now
+    // because we need it in the fini
+    rc->_name = RTN_Name(rtn);
+    rc->_image = StripPath(IMG_Name(SEC_Img(RTN_Sec(rtn))).c_str());
+    rc->_address = RTN_Address(rtn);
+    rc->_icount = 0;
+    rc->_rtnCount = 0;
+
+    // Add to list of routines
+    rc->_next = RtnList;
+    RtnList = rc;
+            
+    RTN_Open(rtn);
+            
+    // Insert a call at the entry point of a routine to increment the call count
+    RTN_InsertCall(rtn, IPOINT_BEFORE, (AFUNPTR)docount, IARG_PTR, &(rc->_rtnCount), IARG_END);
+    
+    // For each instruction of the routine
+    for (INS ins = RTN_InsHead(rtn); INS_Valid(ins); ins = INS_Next(ins))
+    {
+        // Insert a call to docount to increment the instruction counter for this rtn
+        INS_InsertCall(ins, IPOINT_BEFORE, (AFUNPTR)docount, IARG_PTR, &(rc->_icount), IARG_END);
+    }
+
+    
+    RTN_Close(rtn);
+}
+
+// This function is called when the application exits
+// It prints the name and count for each procedure
+VOID Fini(INT32 code, VOID *v)
+{
+    outFile << setw(23) << "Procedure" << " "
+          << setw(15) << "Image" << " "
+          << setw(18) << "Address" << " "
+          << setw(12) << "Calls" << " "
+          << setw(12) << "Instructions" << endl;
+
+    for (RTN_COUNT * rc = RtnList; rc; rc = rc->_next)
+    {
+        if (rc->_icount > 0)
+            outFile << setw(23) << rc->_name << " "
+                  << setw(15) << rc->_image << " "
+                  << setw(18) << hex << rc->_address << dec <<" "
+                  << setw(12) << rc->_rtnCount << " "
+                  << setw(12) << rc->_icount << endl;
+    }
+
+}
+
+/* ===================================================================== */
+/* Print Help Message                                                    */
+/* ===================================================================== */
+
+INT32 Usage()
+{
+    cerr << "This Pintool counts the number of times a routine is executed" << endl;
+    cerr << "and the number of instructions executed in a routine" << endl;
+    cerr << endl << KNOB_BASE::StringKnobSummary() << endl;
+    return -1;
+}
+
+/* ===================================================================== */
+/* Main                                                                  */
+/* ===================================================================== */
+
+int main(int argc, char * argv[])
+{
+    // Initialize symbol table code, needed for rtn instrumentation
+    PIN_InitSymbols();
+
+    outFile.open("proccount.out");
+
+    // Initialize pin
+    if (PIN_Init(argc, argv)) return Usage();
+
+    // Register Routine to be called to instrument rtn
+    RTN_AddInstrumentFunction(Routine, 0);
+
+    // Register Fini to be called when the application exits
+    PIN_AddFiniFunction(Fini, 0);
+    
+    // Start the program, never returns
+    PIN_StartProgram();
+    
+    return 0;
+}
+

+Using PIN_SafeCopy()

+PIN_SafeCopy is used to copy the specified number of bytes from a source memory region to a destination memory region. This function guarantees safe return to the caller even if the source or destination regions are inaccessible (entirely or partially).

+Use of this function also guarantees that the tool reads or writes the values used by the application. For example, on Windows, Pin replaces certain TEB fields when running a tool's analysis code. If the tool accessed these fields directly, it would see the modified values rather than the original ones. Using PIN_SafeCopy() allows the tool to read or write the application's values for these fields.

+We recommend using this API any time a tool reads or writes application memory.

+

$ ../../../pin -t obj-ia32/safecopy.so -- /bin/cp makefile obj-ia32/safecopy.so.makefile.copy
+$ head safecopy.out
+Emulate loading from addr 0xbff0057c to ebx
+Emulate loading from addr 0x64ffd4 to eax
+Emulate loading from addr 0xbff00598 to esi
+Emulate loading from addr 0x6501c8 to edi
+Emulate loading from addr 0x64ff14 to edx
+Emulate loading from addr 0x64ff1c to edx
+Emulate loading from addr 0x64ff24 to edx
+Emulate loading from addr 0x64ff2c to edx
+Emulate loading from addr 0x64ff34 to edx
+Emulate loading from addr 0x64ff3c to edx
+

+The example can be found in source/tools/ManualExamples/safecopy.cpp.

+

#include <stdio.h>
+#include "pin.H"
+#include <iostream>
+#include <fstream>
+
+std::ofstream* out = 0;
+
+//=======================================================
+//  Analysis routines
+//=======================================================
+
+// Move from memory to register
+ADDRINT DoLoad(REG reg, ADDRINT * addr)
+{
+    *out << "Emulate loading from addr " << addr << " to " << REG_StringShort(reg) << endl;
+    ADDRINT value;
+    PIN_SafeCopy(&value, addr, sizeof(ADDRINT));
+    return value;
+}
+
+//=======================================================
+// Instrumentation routines
+//=======================================================
+
+VOID EmulateLoad(INS ins, VOID* v)
+{
+    // Find the instructions that move a value from memory to a register
+    if (INS_Opcode(ins) == XED_ICLASS_MOV &&
+        INS_IsMemoryRead(ins) &&
+        INS_OperandIsReg(ins, 0) &&
+        INS_OperandIsMemory(ins, 1))
+    {
+        // op0 <- *op1
+        INS_InsertCall(ins,
+                       IPOINT_BEFORE,
+                       AFUNPTR(DoLoad),
+                       IARG_UINT32,
+                       REG(INS_OperandReg(ins, 0)),
+                       IARG_MEMORYREAD_EA,
+                       IARG_RETURN_REGS,
+                       INS_OperandReg(ins, 0),
+                       IARG_END);
+
+        // Delete the instruction
+        INS_Delete(ins);
+    }
+}
+
+/* ===================================================================== */
+/* Print Help Message                                                    */
+/* ===================================================================== */
+
+INT32 Usage()
+{
+    cerr << "This tool demonstrates the use of SafeCopy" << endl;
+    cerr << endl << KNOB_BASE::StringKnobSummary() << endl;
+    return -1;
+}
+
+/* ===================================================================== */
+/* Main                                                                  */
+/* ===================================================================== */
+
+int main(int argc, char * argv[])
+{
+    // Write to a file since cout and cerr maybe closed by the application
+    out = new std::ofstream("safecopy.out");
+
+    // Initialize pin & symbol manager
+    if (PIN_Init(argc, argv)) return Usage();
+    PIN_InitSymbols();
+
+    // Register EmulateLoad to be called to instrument instructions
+    INS_AddInstrumentFunction(EmulateLoad, 0);
+
+    // Never returns
+    PIN_StartProgram();
+    return 0;
+}
+

+Order of Instrumentation

+Pin provides tools with multiple ways to control the exection order of analysis calls. The exection order depends mainly on the insertion action (IPOINT) and call order (CALL_ORDER). The example below illustrates this behavior by instrumenting all return instructions in three different ways. Additional examples can be found in source/tools/InstrumentationOrderAndVersion.

+

$ ../../../pin -t obj-ia32/invocation.so -- obj-ia32/little_malloc
+$ head invocation.out
+After: IP = 0x64bc5e
+Before: IP = 0x64bc5e
+Taken: IP = 0x63a12e
+After: IP = 0x64bc5e
+Before: IP = 0x64bc5e
+Taken: IP = 0x641c76
+After: IP = 0x641ca6
+After: IP = 0x64bc5e
+Before: IP = 0x64bc5e
+Taken: IP = 0x648b02
+

+The example can be found in source/tools/ManualExamples/invocation.cpp.

+

+#include "pin.H"
+#include <iostream>
+#include <fstream>
+using namespace std;
+
+
+KNOB<string> KnobOutputFile(KNOB_MODE_WRITEONCE, "pintool",
+    "o", "invocation.out", "specify output file name");
+
+ofstream OutFile;
+
+/*
+ * Analysis routines
+ */
+VOID Taken( const CONTEXT * ctxt)
+{
+    ADDRINT TakenIP = (ADDRINT)PIN_GetContextReg( ctxt, REG_INST_PTR );
+    OutFile << "Taken: IP = " << hex << TakenIP << dec << endl;
+}
+
+VOID Before(CONTEXT * ctxt)
+{
+    ADDRINT BeforeIP = (ADDRINT)PIN_GetContextReg( ctxt, REG_INST_PTR);
+    OutFile << "Before: IP = " << hex << BeforeIP << dec << endl;
+}
+
+
+VOID After(CONTEXT * ctxt)
+{
+    ADDRINT AfterIP = (ADDRINT)PIN_GetContextReg( ctxt, REG_INST_PTR);
+    OutFile << "After: IP = " << hex << AfterIP << dec << endl;
+}
+
+    
+/*
+ * Instrumentation routines
+ */
+VOID ImageLoad(IMG img, VOID *v)
+{
+    for (SEC sec = IMG_SecHead(img); SEC_Valid(sec); sec = SEC_Next(sec))
+    {
+        // RTN_InsertCall() and INS_InsertCall() are executed in order of
+        // appearance.  In the code sequence below, the IPOINT_AFTER is
+        // executed before the IPOINT_BEFORE.
+        for (RTN rtn = SEC_RtnHead(sec); RTN_Valid(rtn); rtn = RTN_Next(rtn))
+        {
+            // Open the RTN.
+            RTN_Open( rtn );
+            
+            // IPOINT_AFTER is implemented by instrumenting each return
+            // instruction in a routine.  Pin tries to find all return
+            // instructions, but success is not guaranteed.
+            RTN_InsertCall( rtn, IPOINT_AFTER, (AFUNPTR)After,
+                            IARG_CONTEXT, IARG_END);
+            
+            // Examine each instruction in the routine.
+            for( INS ins = RTN_InsHead(rtn); INS_Valid(ins); ins = INS_Next(ins) )
+            {
+                if( INS_IsRet(ins) )
+                {
+                    // instrument each return instruction.
+                    // IPOINT_TAKEN_BRANCH always occurs last.
+                    INS_InsertCall( ins, IPOINT_BEFORE, (AFUNPTR)Before,
+                                   IARG_CONTEXT, IARG_END);
+                    INS_InsertCall( ins, IPOINT_TAKEN_BRANCH, (AFUNPTR)Taken,
+                                   IARG_CONTEXT, IARG_END);
+                }
+            }
+            // Close the RTN.
+            RTN_Close( rtn );
+        }
+    }
+}
+
+VOID Fini(INT32 code, VOID *v)
+{
+    OutFile.close();
+}
+
+/* ===================================================================== */
+/* Print Help Message                                                    */
+/* ===================================================================== */
+
+INT32 Usage()
+{
+    cerr << "This is the invocation pintool" << endl;
+    cerr << endl << KNOB_BASE::StringKnobSummary() << endl;
+    return -1;
+}
+
+/* ===================================================================== */
+/* Main                                                                  */
+/* ===================================================================== */
+
+int main(int argc, char * argv[])
+{
+    // Initialize pin & symbol manager
+    if (PIN_Init(argc, argv)) return Usage();
+    PIN_InitSymbols();
+
+    // Register ImageLoad to be called to instrument instructions
+    IMG_AddInstrumentFunction(ImageLoad, 0);
+    PIN_AddFiniFunction(Fini, 0);
+
+    // Write to a file since cout and cerr maybe closed by the application
+    OutFile.open(KnobOutputFile.Value().c_str());
+    OutFile.setf(ios::showbase);
+    
+    // Start the program, never returns
+    PIN_StartProgram();
+    
+    return 0;
+}
+/* ===================================================================== */
+    
+

+Finding the Value of Function Arguments

+Often one needs the know the value of the argument passed into a function, or the return value. You can use Pin to find this information. Using the RTN_InsertCall() function, you can specify the arguments of interest.

+The example below prints the input argument for malloc() and free(), and the return value from malloc().

+

$ ../../../pin -t obj-ia32/malloctrace.so -- /bin/cp makefile obj-ia32/malloctrace.so.makefile.copy
+$ head malloctrace.out
+malloc(0x24d)
+  returns 0x6504f8
+malloc(0x57)
+  returns 0x650748
+malloc(0xc)
+  returns 0x6507a0
+malloc(0x3c0)
+  returns 0x6507b0
+malloc(0xc)
+  returns 0x650b70
+

+The example can be found in source/tools/ManualExamples/malloctrace.cpp.

+

+#include "pin.H"
+#include <iostream>
+#include <fstream>
+
+/* ===================================================================== */
+/* Names of malloc and free */
+/* ===================================================================== */
+#if defined(TARGET_MAC)
+#define MALLOC "_malloc"
+#define FREE "_free"
+#else
+#define MALLOC "malloc"
+#define FREE "free"
+#endif
+
+/* ===================================================================== */
+/* Global Variables */
+/* ===================================================================== */
+
+std::ofstream TraceFile;
+
+/* ===================================================================== */
+/* Commandline Switches */
+/* ===================================================================== */
+
+KNOB<string> KnobOutputFile(KNOB_MODE_WRITEONCE, "pintool",
+    "o", "malloctrace.out", "specify trace file name");
+
+/* ===================================================================== */
+
+
+/* ===================================================================== */
+/* Analysis routines                                                     */
+/* ===================================================================== */
+ 
+VOID Arg1Before(CHAR * name, ADDRINT size)
+{
+    TraceFile << name << "(" << size << ")" << endl;
+}
+
+VOID MallocAfter(ADDRINT ret)
+{
+    TraceFile << "  returns " << ret << endl;
+}
+
+
+/* ===================================================================== */
+/* Instrumentation routines                                              */
+/* ===================================================================== */
+   
+VOID Image(IMG img, VOID *v)
+{
+    // Instrument the malloc() and free() functions.  Print the input argument
+    // of each malloc() or free(), and the return value of malloc().
+    //
+    //  Find the malloc() function.
+    RTN mallocRtn = RTN_FindByName(img, MALLOC);
+    if (RTN_Valid(mallocRtn))
+    {
+        RTN_Open(mallocRtn);
+
+        // Instrument malloc() to print the input argument value and the return value.
+        RTN_InsertCall(mallocRtn, IPOINT_BEFORE, (AFUNPTR)Arg1Before,
+                       IARG_ADDRINT, MALLOC,
+                       IARG_FUNCARG_ENTRYPOINT_VALUE, 0,
+                       IARG_END);
+        RTN_InsertCall(mallocRtn, IPOINT_AFTER, (AFUNPTR)MallocAfter,
+                       IARG_FUNCRET_EXITPOINT_VALUE, IARG_END);
+
+        RTN_Close(mallocRtn);
+    }
+
+    // Find the free() function.
+    RTN freeRtn = RTN_FindByName(img, FREE);
+    if (RTN_Valid(freeRtn))
+    {
+        RTN_Open(freeRtn);
+        // Instrument free() to print the input argument value.
+        RTN_InsertCall(freeRtn, IPOINT_BEFORE, (AFUNPTR)Arg1Before,
+                       IARG_ADDRINT, FREE,
+                       IARG_FUNCARG_ENTRYPOINT_VALUE, 0,
+                       IARG_END);
+        RTN_Close(freeRtn);
+    }
+}
+
+/* ===================================================================== */
+
+VOID Fini(INT32 code, VOID *v)
+{
+    TraceFile.close();
+}
+
+/* ===================================================================== */
+/* Print Help Message                                                    */
+/* ===================================================================== */
+   
+INT32 Usage()
+{
+    cerr << "This tool produces a trace of calls to malloc." << endl;
+    cerr << endl << KNOB_BASE::StringKnobSummary() << endl;
+    return -1;
+}
+
+/* ===================================================================== */
+/* Main                                                                  */
+/* ===================================================================== */
+
+int main(int argc, char *argv[])
+{
+    // Initialize pin & symbol manager
+    PIN_InitSymbols();
+    if( PIN_Init(argc,argv) )
+    {
+        return Usage();
+    }
+    
+    // Write to a file since cout and cerr maybe closed by the application
+    TraceFile.open(KnobOutputFile.Value().c_str());
+    TraceFile << hex;
+    TraceFile.setf(ios::showbase);
+    
+    // Register Image to be called to instrument functions.
+    IMG_AddInstrumentFunction(Image, 0);
+    PIN_AddFiniFunction(Fini, 0);
+
+    // Never returns
+    PIN_StartProgram();
+    
+    return 0;
+}
+
+/* ===================================================================== */
+/* eof */
+/* ===================================================================== */
+

+Finding Functions By Name on Windows

+Finding functions by name on Windows requires a different methodology. Several symbols could resolve to the same function address. It is important to check all symbol names.

+The following example finds the function name in the symbol table, and uses the symbol address to find the appropriate RTN.

+

$ ..\..\..\pin -t obj-ia32\w_malloctrace.dll -- ..\Tests\obj-ia32\cp-pin.exe makefile w_malloctrace.makefile.copy
+$ head *.out
+Before: RtlAllocateHeap(00150000, 0, 0x94)
+After: RtlAllocateHeap  returns 0x153440
+After: RtlAllocateHeap  returns 0x153440
+Before: RtlAllocateHeap(00150000, 0, 0x20)
+After: RtlAllocateHeap  returns 0
+After: RtlAllocateHeap  returns 0x1567c0
+Before: RtlAllocateHeap(019E0000, 0x8, 0x1800)
+After: RtlAllocateHeap  returns 0x19e0688
+Before: RtlAllocateHeap(00150000, 0, 0x1a)thread begin 0
+
+After: RtlAllocateHeap  returns 0
+

+The example can be found in source/tools/ManualExamples/w_malloctrace.cpp.

+

/* ===================================================================== */
+/* This example demonstrates finding a function by name on Windows.      */
+/* ===================================================================== */
+
+#include "pin.H"
+namespace WINDOWS
+{
+#include<Windows.h>
+}
+#include <iostream>
+#include <fstream>
+
+/* ===================================================================== */
+/* Global Variables */
+/* ===================================================================== */
+
+std::ofstream TraceFile;
+
+/* ===================================================================== */
+/* Commandline Switches */
+/* ===================================================================== */
+
+KNOB<string> KnobOutputFile(KNOB_MODE_WRITEONCE, "pintool",
+    "o", "w_malloctrace.out", "specify trace file name");
+
+/* ===================================================================== */
+/* Print Help Message                                                    */
+/* ===================================================================== */
+
+INT32 Usage()
+{
+    cerr << "This tool produces a trace of calls to RtlAllocateHeap.";
+    cerr << endl << endl;
+    cerr << KNOB_BASE::StringKnobSummary();
+    cerr << endl;
+    return -1;
+}
+
+/* ===================================================================== */
+/* Analysis routines                                                     */
+/* ===================================================================== */
+ 
+VOID Before(CHAR * name, WINDOWS::HANDLE hHeap,
+            WINDOWS::DWORD dwFlags, WINDOWS::DWORD dwBytes) 
+{
+    TraceFile << "Before: " << name << "(" << hex << hHeap << ", "
+              << dwFlags << ", " << dwBytes << ")" << dec << endl;
+}
+
+VOID After(CHAR * name, ADDRINT ret)
+{
+    TraceFile << "After: " << name << "  returns " << hex
+              << ret << dec << endl;
+}
+
+
+/* ===================================================================== */
+/* Instrumentation routines                                              */
+/* ===================================================================== */
+   
+VOID Image(IMG img, VOID *v)
+{
+    // Walk through the symbols in the symbol table.
+    //
+    for (SYM sym = IMG_RegsymHead(img); SYM_Valid(sym); sym = SYM_Next(sym))
+    {
+        string undFuncName = PIN_UndecorateSymbolName(SYM_Name(sym), UNDECORATION_NAME_ONLY);
+
+        //  Find the RtlAllocHeap() function.
+        if (undFuncName == "RtlAllocateHeap")
+        {
+            RTN allocRtn = RTN_FindByAddress(IMG_LowAddress(img) + SYM_Value(sym));
+            
+            if (RTN_Valid(allocRtn))
+            {
+                // Instrument to print the input argument value and the return value.
+                RTN_Open(allocRtn);
+                
+                RTN_InsertCall(allocRtn, IPOINT_BEFORE, (AFUNPTR)Before,
+                               IARG_ADDRINT, "RtlAllocateHeap",
+                               IARG_FUNCARG_ENTRYPOINT_VALUE, 0,
+                               IARG_FUNCARG_ENTRYPOINT_VALUE, 1,
+                               IARG_FUNCARG_ENTRYPOINT_VALUE, 2,
+                               IARG_END);
+                RTN_InsertCall(allocRtn, IPOINT_AFTER, (AFUNPTR)After,
+                               IARG_ADDRINT, "RtlAllocateHeap",
+                               IARG_FUNCRET_EXITPOINT_VALUE,
+                               IARG_END);
+                
+                RTN_Close(allocRtn);
+            }
+        }
+    }
+}
+
+/* ===================================================================== */
+
+VOID Fini(INT32 code, VOID *v)
+{
+    TraceFile.close();
+}
+
+/* ===================================================================== */
+/* Main                                                                  */
+/* ===================================================================== */
+
+int main(int argc, char *argv[])
+{
+    // Initialize pin & symbol manager
+    PIN_InitSymbols();
+    if( PIN_Init(argc,argv) )
+    {
+        return Usage();
+    }
+    
+    // Write to a file since cout and cerr maybe closed by the application
+    TraceFile.open(KnobOutputFile.Value().c_str());
+    TraceFile << hex;
+    TraceFile.setf(ios::showbase);
+    
+    // Register Image to be called to instrument functions.
+    IMG_AddInstrumentFunction(Image, 0);
+    PIN_AddFiniFunction(Fini, 0);
+
+    // Never returns
+    PIN_StartProgram();
+    
+    return 0;
+}
+
+/* ===================================================================== */
+/* eof */
+/* ===================================================================== */
+

+Instrumenting Threaded Applications

+The following example demonstrates using the ThreadStart() and ThreadFini() notification callbacks. Although ThreadStart() and ThreadFini() are executed under the VM and client locks, they could still contend with resources that are shared by other analysis routines. Using PIN_GetLock() prevents this.

+Note that there is known isolation issue when using Pin on Windows. On Windows, a deadlock can occur if a tool opens a file in a callback when run on a multi-threaded application. To work around this problem, open one file in main, and tag the data with the thread ID. See source/tools/ManualExamples/buffer_windows.cpp as an example. This problem does not exist on Linux.

+

$ ../../../pin -t obj-ia32/malloc_mt.so -- obj-ia32/thread_lin
+$ head malloc_mt.out
+thread begin 0
+thread 0 entered malloc(24d)
+thread 0 entered malloc(57)
+thread 0 entered malloc(c)
+thread 0 entered malloc(3c0)
+thread 0 entered malloc(c)
+thread 0 entered malloc(58)
+thread 0 entered malloc(56)
+thread 0 entered malloc(19)
+thread 0 entered malloc(25c)
+

+The example can be found in source/tools/ManualExamples/malloc_mt.cpp

+

#include <stdio.h>
+#include "pin.H"
+
+KNOB<string> KnobOutputFile(KNOB_MODE_WRITEONCE, "pintool",
+    "o", "malloc_mt.out", "specify output file name");
+
+//==============================================================
+//  Analysis Routines
+//==============================================================
+// Note:  threadid+1 is used as an argument to the PIN_GetLock()
+//        routine as a debugging aid.  This is the value that
+//        the lock is set to, so it must be non-zero.
+
+// lock serializes access to the output file.
+FILE * out;
+PIN_LOCK pinLock;
+
+// Note that opening a file in a callback is only supported on Linux systems.
+// See buffer-win.cpp for how to work around this issue on Windows.
+//
+// This routine is executed every time a thread is created.
+VOID ThreadStart(THREADID threadid, CONTEXT *ctxt, INT32 flags, VOID *v)
+{
+    PIN_GetLock(&pinLock, threadid+1);
+    fprintf(out, "thread begin %d\n",threadid);
+    fflush(out);
+    PIN_ReleaseLock(&pinLock);
+}
+
+// This routine is executed every time a thread is destroyed.
+VOID ThreadFini(THREADID threadid, const CONTEXT *ctxt, INT32 code, VOID *v)
+{
+    PIN_GetLock(&pinLock, threadid+1);
+    fprintf(out, "thread end %d code %d\n",threadid, code);
+    fflush(out);
+    PIN_ReleaseLock(&pinLock);
+}
+
+// This routine is executed each time malloc is called.
+VOID BeforeMalloc( int size, THREADID threadid )
+{
+    PIN_GetLock(&pinLock, threadid+1);
+    fprintf(out, "thread %d entered malloc(%d)\n", threadid, size);
+    fflush(out);
+    PIN_ReleaseLock(&pinLock);
+}
+
+
+//====================================================================
+// Instrumentation Routines
+//====================================================================
+
+// This routine is executed for each image.
+VOID ImageLoad(IMG img, VOID *)
+{
+    RTN rtn = RTN_FindByName(img, "malloc");
+    
+    if ( RTN_Valid( rtn ))
+    {
+        RTN_Open(rtn);
+        
+        RTN_InsertCall(rtn, IPOINT_BEFORE, AFUNPTR(BeforeMalloc),
+                       IARG_FUNCARG_ENTRYPOINT_VALUE, 0,
+                       IARG_THREAD_ID, IARG_END);
+
+        RTN_Close(rtn);
+    }
+}
+
+// This routine is executed once at the end.
+VOID Fini(INT32 code, VOID *v)
+{
+    fclose(out);
+}
+
+/* ===================================================================== */
+/* Print Help Message                                                    */
+/* ===================================================================== */
+
+INT32 Usage()
+{
+    PIN_ERROR("This Pintool prints a trace of malloc calls in the guest application\n"
+              + KNOB_BASE::StringKnobSummary() + "\n");
+    return -1;
+}
+
+/* ===================================================================== */
+/* Main                                                                  */
+/* ===================================================================== */
+
+int main(INT32 argc, CHAR **argv)
+{
+    // Initialize the pin lock
+    PIN_InitLock(&pinLock);
+    
+    // Initialize pin
+    if (PIN_Init(argc, argv)) return Usage();
+    PIN_InitSymbols();
+    
+    out = fopen(KnobOutputFile.Value().c_str(), "w");
+
+    // Register ImageLoad to be called when each image is loaded.
+    IMG_AddInstrumentFunction(ImageLoad, 0);
+
+    // Register Analysis routines to be called when a thread begins/ends
+    PIN_AddThreadStartFunction(ThreadStart, 0);
+    PIN_AddThreadFiniFunction(ThreadFini, 0);
+
+    // Register Fini to be called when the application exits
+    PIN_AddFiniFunction(Fini, 0);
+    
+    // Never returns
+    PIN_StartProgram();
+    
+    return 0;
+}
+

+Using TLS

+Pin provides efficient thread local storage (TLS) APIs. These APIs allow a tool to create thread-specific data. The example below demonstrates how to use these APIs.

+

$ ../../../pin -t obj-ia32/inscount_tls.so -- obj-ia32/thread_lin
+$ head
+Count[0]= 237993
+Count[1]= 213296
+Count[2]= 209223
+Count[3]= 209223
+Count[4]= 209223
+Count[5]= 209223
+Count[6]= 209223
+Count[7]= 209223
+Count[8]= 209223
+Count[9]= 209223
+

+The example can be found in source/tools/ManualExamples/inscount_tls.cpp

+

#include <iostream>
+#include <fstream>
+#include "pin.H"
+
+KNOB<string> KnobOutputFile(KNOB_MODE_WRITEONCE, "pintool",
+    "o", "", "specify output file name");
+
+INT32 numThreads = 0;
+ostream* OutFile = NULL;
+
+// Force each thread's data to be in its own data cache line so that
+// multiple threads do not contend for the same data cache line.
+// This avoids the false sharing problem.
+#define PADSIZE 56  // 64 byte line size: 64-8
+
+// a running count of the instructions
+class thread_data_t
+{
+  public:
+    thread_data_t() : _count(0) {}
+    UINT64 _count;
+    UINT8 _pad[PADSIZE];
+};
+
+// key for accessing TLS storage in the threads. initialized once in main()
+static  TLS_KEY tls_key = INVALID_TLS_KEY;
+
+// This function is called before every block
+VOID PIN_FAST_ANALYSIS_CALL docount(UINT32 c, THREADID threadid)
+{
+    thread_data_t* tdata = static_cast<thread_data_t*>(PIN_GetThreadData(tls_key, threadid));
+    tdata->_count += c;
+}
+
+VOID ThreadStart(THREADID threadid, CONTEXT *ctxt, INT32 flags, VOID *v)
+{
+    numThreads++;
+    thread_data_t* tdata = new thread_data_t;
+    if (PIN_SetThreadData(tls_key, tdata, threadid) == FALSE)
+    {
+        cerr << "PIN_SetThreadData failed" << endl;
+        PIN_ExitProcess(1);
+    }
+}
+
+
+// Pin calls this function every time a new basic block is encountered.
+// It inserts a call to docount.
+VOID Trace(TRACE trace, VOID *v)
+{
+    // Visit every basic block  in the trace
+    for (BBL bbl = TRACE_BblHead(trace); BBL_Valid(bbl); bbl = BBL_Next(bbl))
+    {
+        // Insert a call to docount for every bbl, passing the number of instructions.
+
+        BBL_InsertCall(bbl, IPOINT_ANYWHERE, (AFUNPTR)docount, IARG_FAST_ANALYSIS_CALL,
+                       IARG_UINT32, BBL_NumIns(bbl), IARG_THREAD_ID, IARG_END);
+    }
+}
+
+// This function is called when the thread exits
+VOID ThreadFini(THREADID threadIndex, const CONTEXT *ctxt, INT32 code, VOID *v)
+{
+    thread_data_t* tdata = static_cast<thread_data_t*>(PIN_GetThreadData(tls_key, threadIndex));
+    *OutFile << "Count[" << decstr(threadIndex) << "] = " << tdata->_count << endl;
+    delete tdata;
+}
+
+// This function is called when the application exits
+VOID Fini(INT32 code, VOID *v)
+{
+    *OutFile << "Total number of threads = " << numThreads << endl;
+}
+
+/* ===================================================================== */
+/* Print Help Message                                                    */
+/* ===================================================================== */
+
+INT32 Usage()
+{
+    cerr << "This tool counts the number of dynamic instructions executed" << endl;
+    cerr << endl << KNOB_BASE::StringKnobSummary() << endl;
+    return 1;
+}
+
+/* ===================================================================== */
+/* Main                                                                  */
+/* ===================================================================== */
+
+int main(int argc, char * argv[])
+{
+    // Initialize pin
+    PIN_InitSymbols();
+    if (PIN_Init(argc, argv))
+        return Usage();
+
+    OutFile = KnobOutputFile.Value().empty() ? &cout : new std::ofstream(KnobOutputFile.Value().c_str());
+
+    // Obtain  a key for TLS storage.
+    tls_key = PIN_CreateThreadDataKey(NULL);
+    if (tls_key == INVALID_TLS_KEY)
+    {
+        cerr << "number of already allocated keys reached the MAX_CLIENT_TLS_KEYS limit" << endl;
+        PIN_ExitProcess(1);
+    }
+
+    // Register ThreadStart to be called when a thread starts.
+    PIN_AddThreadStartFunction(ThreadStart, NULL);
+
+    // Register Fini to be called when thread exits.
+    PIN_AddThreadFiniFunction(ThreadFini, NULL);
+
+    // Register Fini to be called when the application exits.
+    PIN_AddFiniFunction(Fini, NULL);
+
+    // Register Instruction to be called to instrument instructions.
+    TRACE_AddInstrumentFunction(Trace, NULL);
+
+    // Start the program, never returns
+    PIN_StartProgram();
+
+    return 1;
+}
+

+Using the Fast Buffering APIs

+Pin provides support for buffering data for processing. If all that your analysis callback does is to store its arguments into a buffer, then you should be able to use the buffering API instead, with some performance benefit. PIN_DefineTraceBuffer() defines the buffer that will be used. The buffer is allocated by each thread when it starts up, and deallocated when the thread exits. INS_InsertFillBuffer() writes the requested data directly to the given buffer. The callback delineated in the PIN_DefineTraceBuffer() call is used to process the buffer when the buffer is nearly full, and when the thread exits. Pin does not serialize the calls to this callback, so it is the tool writers responsibilty to make sure this function is thread safe. This example records the PC of all instructions that access memory, and the effective address accessed by the instruction. Note that IARG_REG_REFERENCE, IARG_REG_CONST_REFERENCE, IARG_CONTEXT, IARG_CONST_CONTEXT and IARG_PARTIAL_CONTEXT can NOT be used in the Fast Buffering APIs

+

$ ../../../pin -t obj-ia32/buffer_linux.so -- obj-ia32/thread_lin
+$ tail buffer.out.*.*
+3263df   330108
+3263df   330108
+3263f1   a92f43fc
+3263f7   a92f4d7d
+326404   a92f43fc
+32640a   a92f4bf8
+32640a   a92f4bf8
+32640f   a92f4d94
+32641b   a92f43fc
+326421   a92f4bf8
+

+The example can be found in source/tools/ManualExamples/buffer_linux.cpp. This example is appropriate for Linux tools. If you are writing a tool for Windows, please see source/tools/ManualExamples/buffer_windows.cpp

+

/*
+ * Sample buffering tool
+ *
+ * This tool collects an address trace of instructions that access memory
+ * by filling a buffer.  When the buffer overflows,the callback writes all
+ * of the collected records to a file.
+ *
+ */
+
+#include <iostream>
+#include <fstream>
+#include <cstdlib>
+#include <cstddef>
+#include <unistd.h>
+#include "pin.H"
+
+using namespace std;
+
+/*
+ * Name of the output file
+ */
+KNOB<string> KnobOutputFile(KNOB_MODE_WRITEONCE, "pintool", "o", "buffer.out", "output file");
+
+/*
+ * The ID of the buffer
+ */
+BUFFER_ID bufId;
+
+/*
+ * Thread specific data
+ */
+TLS_KEY mlog_key;
+
+/*
+ * Number of OS pages for the buffer
+ */
+#define NUM_BUF_PAGES 1024
+
+
+/*
+ * Record of memory references.  Rather than having two separate
+ * buffers for reads and writes, we just use one struct that includes a
+ * flag for type.
+ */
+struct MEMREF
+{
+    ADDRINT     pc;
+    ADDRINT     ea;
+    UINT32      size;
+    BOOL        read;
+};
+
+
+/*
+ * MLOG - thread specific data that is not handled by the buffering API.
+ */
+class MLOG
+{
+  public:
+    MLOG(THREADID tid);
+    ~MLOG();
+
+    VOID DumpBufferToFile( struct MEMREF * reference, UINT64 numElements, THREADID tid );
+
+  private:
+    ofstream _ofile;
+};
+
+
+MLOG::MLOG(THREADID tid)
+{
+    const string filename = KnobOutputFile.Value() + "." + decstr(getpid()) + "." + decstr(tid);
+
+    _ofile.open(filename.c_str());
+
+    if ( ! _ofile )
+    {
+        cerr << "Error: could not open output file." << endl;
+        exit(1);
+    }
+
+    _ofile << hex;
+}
+
+
+MLOG::~MLOG()
+{
+    _ofile.close();
+}
+
+
+VOID MLOG::DumpBufferToFile( struct MEMREF * reference, UINT64 numElements, THREADID tid )
+{
+    for(UINT64 i=0; i<numElements; i++, reference++)
+    {
+        if (reference->ea != 0)
+            _ofile << reference->pc << "   " << reference->ea << endl;
+    }
+}
+
+
+
+/**************************************************************************
+ *
+ *  Instrumentation routines
+ *
+ **************************************************************************/
+
+/*
+ * Insert code to write data to a thread-specific buffer for instructions
+ * that access memory.
+ */
+VOID Trace(TRACE trace, VOID *v)
+{
+    for(BBL bbl = TRACE_BblHead(trace); BBL_Valid(bbl); bbl=BBL_Next(bbl))
+    {
+        for(INS ins = BBL_InsHead(bbl); INS_Valid(ins); ins=INS_Next(ins))
+        {
+            if (!INS_IsStandardMemop(ins) && !INS_HasMemoryVector(ins))
+            {
+                // We don't know how to treat these instructions
+                continue;
+            }
+
+            UINT32 memoryOperands = INS_MemoryOperandCount(ins);
+
+            for (UINT32 memOp = 0; memOp < memoryOperands; memOp++)
+            {
+                UINT32 refSize = INS_MemoryOperandSize(ins, memOp);
+
+                // Note that if the operand is both read and written we log it once
+                // for each.
+                if (INS_MemoryOperandIsRead(ins, memOp))
+                {
+                    INS_InsertFillBuffer(ins, IPOINT_BEFORE, bufId,
+                                         IARG_INST_PTR, offsetof(struct MEMREF, pc),
+                                         IARG_MEMORYOP_EA, memOp, offsetof(struct MEMREF, ea),
+                                         IARG_UINT32, refSize, offsetof(struct MEMREF, size),
+                                         IARG_BOOL, TRUE, offsetof(struct MEMREF, read),
+                                         IARG_END);
+                }
+
+                if (INS_MemoryOperandIsWritten(ins, memOp))
+                {
+                    INS_InsertFillBuffer(ins, IPOINT_BEFORE, bufId,
+                                         IARG_INST_PTR, offsetof(struct MEMREF, pc),
+                                         IARG_MEMORYOP_EA, memOp, offsetof(struct MEMREF, ea),
+                                         IARG_UINT32, refSize, offsetof(struct MEMREF, size),
+                                         IARG_BOOL, FALSE, offsetof(struct MEMREF, read),
+                                         IARG_END);
+                }
+            }
+        }
+    }
+}
+
+
+/**************************************************************************
+ *
+ *  Callback Routines
+ *
+ **************************************************************************/
+
+VOID * BufferFull(BUFFER_ID id, THREADID tid, const CONTEXT *ctxt, VOID *buf,
+                  UINT64 numElements, VOID *v)
+{
+    struct MEMREF * reference=(struct MEMREF*)buf;
+
+    MLOG * mlog = static_cast<MLOG*>( PIN_GetThreadData( mlog_key, tid ) );
+
+    mlog->DumpBufferToFile( reference, numElements, tid );
+
+    return buf;
+}
+
+
+/*
+ * Note that opening a file in a callback is only supported on Linux systems.
+ * See buffer-win.cpp for how to work around this issue on Windows.
+ */
+VOID ThreadStart(THREADID tid, CONTEXT *ctxt, INT32 flags, VOID *v)
+{
+    // There is a new MLOG for every thread.  Opens the output file.
+    MLOG * mlog = new MLOG(tid);
+
+    // A thread will need to look up its MLOG, so save pointer in TLS
+    PIN_SetThreadData(mlog_key, mlog, tid);
+
+}
+
+
+VOID ThreadFini(THREADID tid, const CONTEXT *ctxt, INT32 code, VOID *v)
+{
+    MLOG * mlog = static_cast<MLOG*>(PIN_GetThreadData(mlog_key, tid));
+
+    delete mlog;
+
+    PIN_SetThreadData(mlog_key, 0, tid);
+}
+
+
+/* ===================================================================== */
+/* Print Help Message                                                    */
+/* ===================================================================== */
+
+INT32 Usage()
+{
+    cerr << "This tool demonstrates the basic use of the buffering API." << endl;
+    cerr << endl << KNOB_BASE::StringKnobSummary() << endl;
+    return -1;
+}
+
+
+/* ===================================================================== */
+/* Main                                                                  */
+/* ===================================================================== */
+int main(int argc, char *argv[])
+{
+    // Initialize PIN library. Print help message if -h(elp) is specified
+    // in the command line or the command line is invalid
+    if( PIN_Init(argc,argv) )
+    {
+        return Usage();
+    }
+
+    // Initialize the memory reference buffer;
+    // set up the callback to process the buffer.
+    //
+    bufId = PIN_DefineTraceBuffer(sizeof(struct MEMREF), NUM_BUF_PAGES,
+                                  BufferFull, 0);
+
+    if(bufId == BUFFER_ID_INVALID)
+    {
+        cerr << "Error: could not allocate initial buffer" << endl;
+        return 1;
+    }
+
+    // Initialize thread-specific data not handled by buffering api.
+    mlog_key = PIN_CreateThreadDataKey(0);
+
+    // add an instrumentation function
+    TRACE_AddInstrumentFunction(Trace, 0);
+
+    // add callbacks
+    PIN_AddThreadStartFunction(ThreadStart, 0);
+    PIN_AddThreadFiniFunction(ThreadFini, 0);
+
+    // Start the program, never returns
+    PIN_StartProgram();
+
+    return 0;
+}
+
+
+

+Finding the Static Properties of an Image

+It is also possible to use Pin to examine binaries without instrumenting them. This is useful when you need to know static properties of an image. The sample tool below counts the number of instructions in an image, but does not insert any instrumentation.

+The example can be found in source/tools/ManualExamples/staticcount.cpp

+

//
+// This tool prints a trace of image load and unload events
+//
+
+#include <stdio.h>
+#include <iostream>
+#include "pin.H"
+
+
+// Pin calls this function every time a new img is loaded
+// It can instrument the image, but this example merely
+// counts the number of static instructions in the image
+
+VOID ImageLoad(IMG img, VOID *v)
+{
+    UINT32 count = 0;
+    
+    for (SEC sec = IMG_SecHead(img); SEC_Valid(sec); sec = SEC_Next(sec))
+    { 
+        for (RTN rtn = SEC_RtnHead(sec); RTN_Valid(rtn); rtn = RTN_Next(rtn))
+        {
+            // Prepare for processing of RTN, an  RTN is not broken up into BBLs,
+            // it is merely a sequence of INSs 
+            RTN_Open(rtn);
+            
+            for (INS ins = RTN_InsHead(rtn); INS_Valid(ins); ins = INS_Next(ins))
+            {
+                count++;
+            }
+
+            // to preserve space, release data associated with RTN after we have processed it
+            RTN_Close(rtn);
+        }
+    }
+    fprintf(stderr, "Image %s has  %d instructions\n", IMG_Name(img).c_str(), count);
+}
+
+/* ===================================================================== */
+/* Print Help Message                                                    */
+/* ===================================================================== */
+
+INT32 Usage()
+{
+    cerr << "This tool prints a log of image load and unload events" << endl;
+    cerr << " along with static instruction counts for each image." << endl;
+    cerr << endl << KNOB_BASE::StringKnobSummary() << endl;
+    return -1;
+}
+
+/* ===================================================================== */
+/* Main                                                                  */
+/* ===================================================================== */
+
+int main(int argc, char * argv[])
+{
+    // prepare for image instrumentation mode
+    PIN_InitSymbols();
+
+    // Initialize pin
+    if (PIN_Init(argc, argv)) return Usage();
+
+    // Register ImageLoad to be called when an image is loaded
+    IMG_AddInstrumentFunction(ImageLoad, 0);
+
+    // Start the program, never returns
+    PIN_StartProgram();
+    
+    return 0;
+}
+

+Detaching Pin from the Application

+Pin can relinquish control of application any time when invoked via PIN_Detach. Control is returned to the original uninstrumented code and the application runs at native speed. Thereafter no instrumented code is ever executed.

+The example can be found in source/tools/ManualExamples/detach.cpp

+

#include <stdio.h>
+#include "pin.H"
+#include <iostream>
+
+// This tool shows how to detach Pin from an 
+// application that is under Pin's control.
+
+UINT64 icount = 0;
+
+#define N 10000
+VOID docount() 
+{
+    icount++;
+
+    // Release control of application if 10000 
+    // instructions have been executed
+    if ((icount % N) == 0) 
+    {
+        PIN_Detach();
+    }
+}
+ 
+VOID Instruction(INS ins, VOID *v)
+{
+    INS_InsertCall(ins, IPOINT_BEFORE, (AFUNPTR)docount, IARG_END);
+}
+
+VOID ByeWorld(VOID *v)
+{
+    std::cerr << endl << "Detached at icount = " << N << endl;
+}
+
+/* ===================================================================== */
+/* Print Help Message                                                    */
+/* ===================================================================== */
+
+INT32 Usage()
+{
+    cerr << "This tool demonstrates how to detach Pin from an " << endl;
+    cerr << "application that is under Pin's control" << endl;
+    cerr << endl << KNOB_BASE::StringKnobSummary() << endl;
+    return -1;
+}
+
+/* ===================================================================== */
+/* Main                                                                  */
+/* ===================================================================== */
+
+int main(int argc, char * argv[])
+{
+    if (PIN_Init(argc, argv)) return Usage();
+
+    // Callback function to invoke for every 
+    // execution of an instruction
+    INS_AddInstrumentFunction(Instruction, 0);
+    
+    // Callback functions to invoke before
+    // Pin releases control of the application
+    PIN_AddDetachFunction(ByeWorld, 0);
+    
+    // Never returns
+    PIN_StartProgram();
+    
+    return 0;
+}
+

+Replacing a Routine in Probe Mode

+Probe mode is a method of using Pin to insert probes at the start of specified routines. A probe is a jump instruction that is placed at the start of the specified routine. The probe redirects the flow of control to the replacement function. Before the probe is inserted, the first few instructions of the specified routine are relocated. It is not uncommon for the replacement function to call the replaced routine. Pin provides the relocated address to facilitate this. See the example below.

+In probe mode, the application and the replacement routine are run natively. This improves performance, but it puts more responsibility on the tool writer. Probes can only be placed on RTN boundaries.

+Many of the PIN APIs that are available in JIT mode are not applicable in Probe mode. In particular, the Pin thread APIs are not supported in Probe mode, because Pin has no information about the threads when the application is run natively. For more information, check the RTN API documentation.

+The tool writer must guarantee that there is no jump target where the probe is placed. A probe may be up to 14 bytes long.

+Also, it is the tool writer's responsibility to ensure that no thread is currently executing the code where a probe is inserted. Tool writers are encouraged to insert probes when an image is loaded to avoid this problem. Pin will automatically remove the probes when an image is unloaded.

+When using probes, Pin must be started with the PIN_StartProgramProbed() API.

+The example can be found in source/tools/ManualExamples/replacesigprobed.cpp. To build this test, execute:

$ make replacesigprobed.test
+

+

//  Replace an original function with a custom function defined in the tool using
+//  probes.  The replacement function has a different signature from that of the 
+//  original replaced function.
+
+#include "pin.H"
+#include <iostream>
+using namespace std;
+
+typedef VOID * ( *FP_MALLOC )( size_t );
+
+// This is the replacement routine.
+//
+VOID * NewMalloc( FP_MALLOC orgFuncptr, UINT32 arg0, ADDRINT returnIp )
+{
+    // Normally one would do something more interesting with this data.
+    //
+    cout << "NewMalloc ("
+         << hex << ADDRINT ( orgFuncptr ) << ", " 
+         << dec << arg0 << ", " 
+         << hex << returnIp << ")"
+         << endl << flush;
+
+    // Call the relocated entry point of the original (replaced) routine.
+    //
+    VOID * v = orgFuncptr( arg0 );
+
+    return v;
+}
+
+
+// Pin calls this function every time a new img is loaded.
+// It is best to do probe replacement when the image is loaded,
+// because only one thread knows about the image at this time.
+//
+VOID ImageLoad( IMG img, VOID *v )
+{
+    // See if malloc() is present in the image.  If so, replace it.
+    //
+    RTN rtn = RTN_FindByName( img, "malloc" );
+    
+    if (RTN_Valid(rtn))
+    {
+        if (RTN_IsSafeForProbedReplacement(rtn))
+        {
+            cout << "Replacing malloc in " << IMG_Name(img) << endl;
+
+            // Define a function prototype that describes the application routine
+            // that will be replaced.
+            //
+            PROTO proto_malloc = PROTO_Allocate(PIN_PARG(void *), CALLINGSTD_DEFAULT,
+                "malloc", PIN_PARG(int), PIN_PARG_END());
+
+            // Replace the application routine with the replacement function.
+            // Additional arguments have been added to the replacement routine.
+            //
+            RTN_ReplaceSignatureProbed(rtn, AFUNPTR(NewMalloc),
+                IARG_PROTOTYPE, proto_malloc,
+                IARG_ORIG_FUNCPTR,
+                IARG_FUNCARG_ENTRYPOINT_VALUE, 0,
+                IARG_RETURN_IP,
+                IARG_END);
+
+            // Free the function prototype.
+            //
+            PROTO_Free(proto_malloc);
+        }
+        else
+        {
+            cout << "Skip replacing malloc in " << IMG_Name(img) << " since it is not safe." << endl;
+        }
+    }
+}
+
+/* ===================================================================== */
+/* Print Help Message                                                    */
+/* ===================================================================== */
+
+INT32 Usage()
+{
+    cerr << "This tool demonstrates how to replace an original" << endl;
+    cerr << " function with a custom function defined in the tool " << endl;
+    cerr << " using probes.  The replacement function has a different " << endl;
+    cerr << " signature from that of the original replaced function." << endl;
+    cerr << endl << KNOB_BASE::StringKnobSummary() << endl;
+    return -1;
+}
+
+/* ===================================================================== */
+/* Main: Initialize and start Pin in Probe mode.                         */
+/* ===================================================================== */
+
+int main( INT32 argc, CHAR *argv[] )
+{
+    // Initialize symbol processing
+    //
+    PIN_InitSymbols();
+    
+    // Initialize pin
+    //
+    if (PIN_Init(argc, argv)) return Usage();
+    
+    // Register ImageLoad to be called when an image is loaded
+    //
+    IMG_AddInstrumentFunction( ImageLoad, 0 );
+    
+    // Start the program in probe mode, never returns
+    //
+    PIN_StartProgramProbed();
+    
+    return 0;
+}
+
+

+Instrumenting Child Processes

+The PIN_AddFollowChildProcessFunction() allows you to define the function you will like to execute before an execv'd process starts. Use the -follow_execv option on the command line to instrument the child processes, like this:

+

$ ../../../pin -follow_execv -t obj-intel64/follow_child_tool.so -- obj-intel64/follow_child_app1 obj-intel64/follow_child_app2
+

+The example can be found in source/tools/ManualExamples/follow_child_tool.cpp. To build this test, execute:

$ make follow_child_tool.test
+

+

#include "pin.H"
+#include <iostream>
+#include <stdio.h>
+#include <unistd.h>
+
+/* ===================================================================== */
+/* Command line Switches */
+/* ===================================================================== */
+
+
+BOOL FollowChild(CHILD_PROCESS childProcess, VOID * userData)
+{
+    fprintf(stdout, "before child:%u\n", getpid());
+    return TRUE;
+}        
+
+/* ===================================================================== */
+
+int main(INT32 argc, CHAR **argv)
+{
+    PIN_Init(argc, argv);
+
+    PIN_AddFollowChildProcessFunction(FollowChild, 0);
+
+    PIN_StartProgram();
+
+    return 0;
+}
+
+

+Instrumenting Before and After Forks

+Pin allows Pintools to register for notification callbacks around forks. The PIN_AddForkFunction() and PIN_AddForkFunctionProbed() callbacks allow you to define the function you want to execute at one of these FPOINTs:
    FPOINT_BEFORE            Call-back in parent, just before fork.
+    FPOINT_AFTER_IN_PARENT   Call-back in parent, immediately after fork.
+    FPOINT_AFTER_IN_CHILD    Call-back in child, immediately after fork.
+

+Note that PIN_AddForkFunction() is used for JIT mode and PIN_AddForkFunctionProbed() is used for Probed mode. If the fork() fails, the FPOINT_AFTER_IN_PARENT callback, if it is defined, will execute anyway.

+The example can be found in source/tools/ManualExamples/fork_jit_tool.cpp. To build this test, execute:

$ make fork_jit_tool.test
+

+

+#include <stdio.h>
+#include <sys/types.h>
+#include <unistd.h>
+#include <stdlib.h>
+
+#include "pin.H"
+
+#include <iostream>
+#include <fstream>
+
+using namespace std;
+
+
+INT32 Usage()
+{
+    cerr <<
+        "This pin tool registers callbacks around fork().\n"
+        "\n";
+    cerr << KNOB_BASE::StringKnobSummary();
+    cerr << endl;
+    return -1;
+}
+
+
+pid_t parent_pid;
+PIN_LOCK pinLock;
+
+VOID BeforeFork(THREADID threadid, const CONTEXT* ctxt, VOID * arg)
+{
+    PIN_GetLock(&pinLock, threadid+1);
+    cerr << "TOOL: Before fork." << endl;
+    PIN_ReleaseLock(&pinLock);
+    parent_pid = PIN_GetPid();
+}
+
+VOID AfterForkInParent(THREADID threadid, const CONTEXT* ctxt, VOID * arg)
+{
+    PIN_GetLock(&pinLock, threadid+1);
+    cerr << "TOOL: After fork in parent." << endl;
+    PIN_ReleaseLock(&pinLock);
+
+    if (PIN_GetPid() != parent_pid)
+    {
+        cerr << "PIN_GetPid() fails in parent process" << endl;
+        exit(-1);
+    }
+}
+
+VOID AfterForkInChild(THREADID threadid, const CONTEXT* ctxt, VOID * arg)
+{
+    PIN_GetLock(&pinLock, threadid+1);
+    cerr << "TOOL: After fork in child." << endl;
+    PIN_ReleaseLock(&pinLock);
+    
+    if ((PIN_GetPid() == parent_pid) || (getppid() != parent_pid))
+    {
+        cerr << "PIN_GetPid() fails in child process" << endl;
+        exit(-1);
+    }
+}
+
+int main(INT32 argc, CHAR **argv)
+{
+    PIN_InitSymbols();
+    if( PIN_Init(argc,argv) )
+    {
+        return Usage();
+    }
+    
+    // Initialize the pin lock
+    PIN_InitLock(&pinLock);
+    
+    // Register a notification handler that is called when the application
+    // forks a new process.
+    PIN_AddForkFunction(FPOINT_BEFORE, BeforeFork, 0);  
+    PIN_AddForkFunction(FPOINT_AFTER_IN_PARENT, AfterForkInParent, 0);
+    PIN_AddForkFunction(FPOINT_AFTER_IN_CHILD, AfterForkInChild, 0);
+    
+    // Never returns
+    PIN_StartProgram();
+    
+    return 0;
+}
+

+Managed platforms support

+Pin allows Pintools to indentify dynamically created code using RTN_IsDynamic() API (only code of functions which are reported by Jit Profiling API). The following example demonstrates use of RTN_IsDynamic() API. This example instruments a program to count the total number of instructions discovered and executed. The instructions are divided to three categories: native instructions, dynamic instructions and instructions without any known routine.

+Here is how to run it and display its output with a 32 bit OpenCL sample on Windows:

+

$ set CL_CONFIG_USE_VTUNE=True
+$ set INTEL_JIT_PROFILER32=ia32\bin\pinjitprofiling.dll
+$ ia32\bin\pin.exe -t source\tools\JitProfilingApiTests\obj-ia32\DynamicInsCount.dll -support_jit_api -o DynamicInsCount.out -- ..\OpenCL\Win32\Debug\BitonicSort.exe
+No command line arguments specified, using default values.
+Initializing OpenCL runtime...
+Trying to run on a CPU
+OpenCL data alignment is 128 bytes.
+Reading file 'BitonicSort.cl' (size 3435 bytes)
+Sort order is ascending
+Input size is 1048576 items
+Executing OpenCL kernel...
+Executing reference...
+Performing verification...
+Verification succeeded.
+NDRange perf. counter time 12994.272962 ms.
+Releasing resources...
+$ type JitInsCount.out
+===============================================
+Number of executed native instructions: 7631596649
+Number of executed jitted instructions: 438983207
+Number of executed instructions without any known routine: 12246
+===============================================
+Number of discovered native instructions: 870531
+Number of discovered jitted instructions: 223
+Number of discovered instructions without any known routine: 36
+===============================================
+
+$
+

+The example can be found in source.cpp

+

#include "pin.H"
+#include <iostream>
+#include <fstream>
+
+// ==================================================================
+// Global variables
+// ==================================================================
+
+UINT64 insNativeDiscoveredCount = 0;  //number of discovered native instructions
+UINT64 insDynamicDiscoveredCount = 0; //number of discovered dynamic instructions
+UINT64 insNoRtnDiscoveredCount = 0;   //number of discovered instructions without any known routine
+
+UINT64 insNativeExecutedCount = 0;  //number of executed native instructions
+UINT64 insDynamicExecutedCount = 0; //number of executed dynamic instructions
+UINT64 insNoRtnExecutedCount = 0;   //number of executed instructions without any known routine
+
+std::ostream * out = &cerr;
+
+// =====================================================================
+// Command line switches
+// =====================================================================
+
+KNOB<string> KnobOutputFile(KNOB_MODE_WRITEONCE,  "pintool", "o", "", "specify file name for output");
+
+// =====================================================================
+// Utilities
+// =====================================================================
+
+// Print out help message.
+INT32 Usage()
+{
+    cerr << "This tool prints out the number of native and dynamic instructions" << endl;
+    cerr << KNOB_BASE::StringKnobSummary() << endl;
+    return -1;
+}
+
+// =====================================================================
+// Analysis routines
+// =====================================================================
+
+// This function is called before every native instruction is executed
+VOID InsNativeCount()
+{
+    ++insNativeExecutedCount;
+}
+
+// This function is called before every dynamic instruction is executed
+VOID InsDynamicCount()
+{
+    ++insDynamicExecutedCount;
+}
+
+// This function is called before every instruction without any known routine is executed
+VOID InsNoRtnCount()
+{
+    ++insNoRtnExecutedCount;
+}
+
+// =====================================================================
+// Instrumentation callbacks
+// =====================================================================
+
+// Pin calls this function every time a new instruction is encountered
+VOID Instruction(INS ins, VOID *v)
+{
+    RTN rtn = INS_Rtn(ins);
+    if (!RTN_Valid(rtn))
+    {
+        ++insNoRtnDiscoveredCount;
+        INS_InsertCall(ins, IPOINT_BEFORE, (AFUNPTR)InsNoRtnCount, IARG_END);
+    }
+    else if (RTN_IsDynamic(rtn))
+    {
+        ++insDynamicDiscoveredCount;
+        INS_InsertCall(ins, IPOINT_BEFORE, (AFUNPTR)InsDynamicCount, IARG_END);
+    }
+    else
+    {
+        ++insNativeDiscoveredCount;
+        INS_InsertCall(ins, IPOINT_BEFORE, (AFUNPTR)InsNativeCount, IARG_END);
+    }
+}
+
+// Print out analysis results.
+// This function is called when the application exits.
+// @param[in]   code            exit code of the application
+// @param[in]   v               value specified by the tool in the
+//                              PIN_AddFiniFunction function call
+VOID Fini(INT32 code, VOID *v)
+{
+    *out <<  "===============================================" << endl;
+    *out <<  "Number of executed native instructions: " << insNativeExecutedCount << endl;
+    *out <<  "Number of executed dynamic instructions: " << insDynamicExecutedCount << endl;
+    *out <<  "Number of executed instructions without any known routine: " << insNoRtnExecutedCount << endl;
+    *out <<  "===============================================" << endl;
+    *out <<  "Number of discovered native instructions: " << insNativeDiscoveredCount << endl;
+    *out <<  "Number of discovered dynamic instructions: " << insDynamicDiscoveredCount << endl;
+    *out <<  "Number of discovered instructions without any known routine: " << insNoRtnDiscoveredCount << endl;
+    *out <<  "===============================================" << endl;
+
+    string fileName = KnobOutputFile.Value();
+    if (!fileName.empty())
+    {
+        delete out;
+    }
+}
+
+// The main procedure of the tool.
+// This function is called when the application image is loaded but not yet started.
+// @param[in]   argc            total number of elements in the argv array
+// @param[in]   argv            array of command line arguments,
+//                              including pin -t <toolname> -- ...
+int main(int argc, char *argv[])
+{
+    // Initialize symbol processing
+    PIN_InitSymbols();
+
+    // Initialize PIN library. Print help message if -h(elp) is specified
+    // in the command line or the command line is invalid
+    if(PIN_Init(argc,argv))
+    {
+        return Usage();
+    }
+
+    string fileName = KnobOutputFile.Value();
+
+    if (!fileName.empty())
+    {
+        out = new std::ofstream(fileName.c_str());
+    }
+
+    // Register Instruction to be called to instrument instructions
+    INS_AddInstrumentFunction(Instruction, NULL);
+
+    // Register function to be called when the application exits
+    PIN_AddFiniFunction(Fini, NULL);
+
+    // Start the program, never returns
+    PIN_StartProgram();
+
+    return 0;
+}
+

+Pin allows Pintools to instrument just compiled functions using RTN_AddInstrumentFunction API. Following example instruments a program to log Jitting and running of dynamic functions which are reported by Jit Profiling API.

+Here is how to run it with a 64 bit OpenCL sample on Linux:

+

$ setenv CL_CONFIG_USE_VTUNE True
+$ setenv INTEL_JIT_PROFILER64 intel64/lib/libpinjitprofiling.so
+$ ./pin -t source/tools/JitProfilingApiTests/obj-intel64/DynamicFuncInstrument.so -support_jit_api -o DynamicFuncInstrument.out -- ..\OpenCL\Win32\Debug\BitonicSort.exe
+No command line arguments specified, using default values.
+Initializing OpenCL runtime...
+Trying to run on a CPU
+OpenCL data alignment is 128 bytes.
+Reading file 'BitonicSort.cl' (size 3435 bytes)
+Sort order is ascending
+Input size is 1048576 items
+Executing OpenCL kernel...
+Executing reference...
+Performing verification...
+Verification succeeded.
+NDRange perf. counter time 12994.272962 ms.
+Releasing resources...
+$
+

+The example can be found in source.cpp

+

#include "pin.H"
+#include <iostream>
+#include <fstream>
+
+// =====================================================================
+// Global variables
+// =====================================================================
+
+std::ostream * out = &cerr;
+
+// =====================================================================
+// Command line switches
+// =====================================================================
+
+KNOB<string> KnobOutputFile(KNOB_MODE_WRITEONCE,  "pintool", "o", "", "specify file name for output");
+
+// =====================================================================
+// Utilities
+// =====================================================================
+
+// Print out help message.
+INT32 Usage()
+{
+    cerr << "This tool prints out the stack filtered by the dynamicaly created functions only" << endl;
+    cerr << KNOB_BASE::StringKnobSummary() << endl;
+    return -1;
+}
+
+// =====================================================================
+// Analysis routines
+// =====================================================================
+
+VOID RtnCallPrint(CHAR * rtnName)
+{
+    *out << "Before run " << rtnName << endl;
+}
+
+// =====================================================================
+// Instrumentation callbacks
+// =====================================================================
+
+// Pin calls this function every time a new rtn is executed
+VOID Routine(RTN rtn, VOID *v)
+{
+    if (!RTN_IsDynamic(rtn))
+    {
+        return;
+    }
+
+    *out << "Just discovered " << RTN_Name(rtn) << endl;
+
+    RTN_Open(rtn);
+
+    // Insert a call at the entry point of a routine to increment the call count
+    RTN_InsertCall(rtn, IPOINT_BEFORE, (AFUNPTR)RtnCallPrint, IARG_ADDRINT, RTN_Name(rtn).c_str(), IARG_END);
+
+    RTN_Close(rtn);
+}
+
+// Print out analysis results.
+// This function is called when the application exits.
+// @param[in]   code            exit code of the application
+// @param[in]   v               value specified by the tool in the
+//                              PIN_AddFiniFunction function call
+VOID Fini(INT32 code, VOID *v)
+{
+    const string fileName = KnobOutputFile.Value();
+    if (!fileName.empty())
+    {
+        delete out;
+    }
+}
+
+// The main procedure of the tool.
+// This function is called when the application image is loaded but not yet started.
+// @param[in]   argc            total number of elements in the argv array
+// @param[in]   argv            array of command line arguments,
+//                              including pin -t <toolname> -- ...
+int main(int argc, char *argv[])
+{
+    // Initialize symbol processing
+    PIN_InitSymbols();
+
+    // Initialize PIN library. Print help message if -h(elp) is specified
+    // in the command line or the command line is invalid
+    if(PIN_Init(argc,argv))
+    {
+        return Usage();
+    }
+
+    const string fileName = KnobOutputFile.Value();
+
+    if (!fileName.empty())
+    {
+        out = new std::ofstream(fileName.c_str());
+    }
+
+    // Register Routine to be called to instrument rtn
+    RTN_AddInstrumentFunction(Routine, 0);
+
+    // Register function to be called when the application exits
+    PIN_AddFiniFunction(Fini, NULL);
+
+    // Start the program, never returns
+    PIN_StartProgram();
+
+    return 0;
+}
+

+========================================================================================

+Callbacks

+========================================================================================

+The examples in the previous section have introduced a number of ways to register callback functions via the Pin API, such as:

+

+

+The extra parameter val (shared by all the registration functions) will be passed to fun as its second argument whenever it is "called back". This is a standard mechanism used in GUI programming with callbacks.

+If this feature is not needed, it is safe to pass 0 for val when registering a callback. The expected use of val is to pass a pointer to an instance of a class. Since val is a generic pointer, fun must cast it back to an object before dereferencing the pointer.

+Note that all callback registration functions return a PIN_CALLBACK object which can later be used to manipulate the properties of the registered callback (for example change the order in which PIN executes callback functions of the same type). This can be done by calling API functions that manipulates the PIN_CALLBACK object (see PIN callbacks)

+========================================================================================

+Modifying Application Instructions

+========================================================================================

+Although Pin is most commonly used for instrumenting applications, it is also possible to change the application's instructions. The simplest way to do this is to insert an analysis routine to emulate an instruction, and then use INS_Delete() to remove the original instruction. It is also possible to insert direct or indirect branches (using INS_InsertDirectJump and INS_InsertIndirectJump), which makes it easier to emulate instructions that change the control flow.

+The memory addresses accessed by an instruction can be modified to refer to a value calculated by an analysis routine using INS_RewriteMemoryOperand.

+Note that in all of the cases where an instruction is modified, the modification is only made after all of the instrumentation routines have been executed. Therefore all of the instrumentation routines see the original, un-modified instruction.

+========================================================================================

+The Pin Advanced Debugging Extensions

+========================================================================================

+Pin's advanced debugging extensions allow you to debug an application, even while it runs under Pin in JIT mode. Moreover, your Pintool can add support for new debugger commands, without making any changes to GDB or Visual Studio. This allows you to interactively control your Pintool from within a live debugger session. Finally, Pintools can add powerful new debugger features that are enabled via instrumentation. For example, a Pintool can use instrumentation to look for an interesting condition (like a memory buffer overwrite) and then stop at a live debugger session when that condition occurs.

+This section illustrates these three concepts:

+

    +
  • Enabling all the traditional debugger features even while running an application under Pin in JIT mode.
+

+

    +
  • Recognizing new debugger commands in your Pintool to allow interactive control of the tool from a live debugger session.
+

+

    +
  • Adding support for new debugger features by writing a Pintool.
+

+These features are available on both Linux (using GDB) and on Windows (using Visual Studio). The Pin APIs are the same in both cases, but their usage from within the debugger is different because each debugger has a different UI. The following tutorial is divided into two sections: one that is Linux centric and another that is Windows centric. They both describe the same example, so you can continue by reading either section.

+

+

+Finally, note that these advanced debugging extensions are not at all related to debugging your Pintool. If you have a bug in your tool and need to debug it, see the section Tips for Debugging a Pintool instead.

+Advanced Debugging Extensions on Linux

+Pin's debugging extensions on Linux work with nearly all modern versions of GDB, so you can probably use whatever version of GDB is already installed on your system. Pin uses GDB's remote debugger features, so it should work with any version of GDB that supports that feature.

+Throughout this section, we demonstrate the debugging extensions in Pin with the example tool "stack-debugger.cpp", which is available in the directory "source/tools/ManualExamples". You may want to compile that tool and follow along:

+

$ cd source/tools/ManualExamples
+$ make DEBUG=1 stack-debugger.test
+

+The tool and its associated test application, "fibonacci", are built in a directory named "obj-ia32", "obj-intel64", etc., depending on your machine type.

+To enable the debugging extensions, run Pin with the -appdebug command line switch. This causes Pin to start the application and stop immediately before the first instruction. Pin then prints a message telling you to start GDB.

+

$ ../../../pin -appdebug -t obj-intel64/stack-debugger.so -- obj-intel64/fibonacci 1000
+Application stopped until continued from debugger.
+Start GDB, then issue this command at the (gdb) prompt:
+  target remote :33030
+

+In another window, start GDB and enter the command that Pin printed:

+

$ gdb fibonacci
+(gdb) target remote :33030
+

+At this point, the debugger is attached to the application that is running under Pin. You can set breakpoints, continue execution, print out variables, disassemble code, etc.

+

(gdb) break main
+Breakpoint 1 at 0x401194: file fibonacci.cpp, line 12.
+(gdb) cont
+Continuing.
+
+Breakpoint 1, main (argc=2, argv=0x7fbffff3c8) at fibonacci.cpp:12
+12          if (argc > 2)
+(gdb) print argc
+$1 = 2
+(gdb) x/4i $pc
+0x401194 <main+27>:     cmpl   $0x2,0xfffffffffffffe5c(%rbp)
+0x40119b <main+34>:     je     0x4011c8 <main+79>
+0x40119d <main+36>:     mov    $0x402080,%esi
+0x4011a2 <main+41>:     mov    $0x603300,%edi
+

+Of course, any information you observe in the debugger shows the application's "pure" state. The details of Pin and the tool's instrumentation are hidden. For example, the disassembly you see above shows only the application's instructions, not any of the instructions inserted by the tool. However, when you use commands like "cont" or "step" to advance execution of the application, your tool's instrumentation runs as it normally would under Pin.

+

Note:
After connecting GDB with the "target remote" command, you should NOT use the "run" command. The application is already running and stopped at the first instruction. Instead, use the "cont" command to continue execution.
+

+Adding New Debugger Commands

+The previous section illustrated how you can enable the normal debugger features while running an application under Pin. Now, let's see how your Pintool can add new custom debugger commands, even without changing GDB. Custom debugger commands are useful because they allow you to control your Pintool interactively from within a live debugger session. For example, you can ask your Pintool to print out information that it has collected, or you can interactively enable instrumentation only for certain phases of the application.

+To illustrate, see the call to PIN_AddDebugInterpreter() in the stack-debugger tool. That API sets up the following call-back function:

+

static BOOL DebugInterpreter(THREADID tid, CONTEXT *ctxt, const string &cmd, string *result, VOID *)
+{
+    TINFO_MAP::iterator it = ThreadInfos.find(tid);
+    if (it == ThreadInfos.end())
+        return FALSE;
+    TINFO *tinfo = it->second;
+
+    std::string line = TrimWhitespace(cmd);
+    *result = "";
+
+    // [...]
+
+    if (line == "stats")
+    {
+        ADDRINT sp = PIN_GetContextReg(ctxt, REG_STACK_PTR);
+        tinfo->_os.str("");
+        if (sp <= tinfo->_stackBase)
+            tinfo->_os << "Current stack usage: " << std::dec << (tinfo->_stackBase - sp) << " bytes.\n";
+        else
+            tinfo->_os << "Current stack usage: -" << std::dec << (sp - tinfo->_stackBase) << " bytes.\n";
+        tinfo->_os << "Maximum stack usage: " << tinfo->_max << " bytes.\n";
+        *result = tinfo->_os.str();
+        return TRUE;
+    }
+    else if (line == "stacktrace on")
+    {
+        if (!EnableInstrumentation)
+        {
+            PIN_RemoveInstrumentation();
+            EnableInstrumentation = true;
+            *result = "Stack tracing enabled.\n";
+        }
+        return TRUE;
+    }
+
+    // [...]
+
+    return FALSE;  // Unknown command
+
+}
+

+The PIN_AddDebugInterpreter() API allows a Pintool to establish a handler for extended GDB commands. For example, the code snippet above implements the new commands "stats" and "stacktrace on". You can execute these commands in GDB by using the "monitor" command:

+

(gdb) monitor stats
+Current stack usage: 688 bytes.
+Maximum stack usage: 0 bytes.
+

+A Pintool can do various things when the user types an extended debugger command. For example, the "stats" command prints out some information that the tool has collected. Any text that the tool writes to the "result" parameter is printed to the GDB console. Note that the CONTEXT parameter has the register state for the debugger's "focus" thread, so the tool can easily display information about this focus thread.

+You can also use an extended debugger command to interactively enable or disable instrumentation in your Pintool, as demonstrated by the "stacktrace on" command. For example, if you wanted to quickly run your Pintool over the application's initial start-up phase, you could run with your Pintool's instrumentation disabled until a breakpoint is triggered. Then, you could use an extended command to enable instrumentation only during the interesting part of the application. In the stack-debugger example above, the call to PIN_RemoveInstrumentation() causes Pin to discard any previous instrumentation, so the tool re-instruments the code when the debugger continues execution of the application. As we will see later, the tool's global variable "EnableInstrumentation" adjusts the instrumentation that it inserts.

+Semantic Breakpoints

+The last major feature of the advanced debugging extensions is the ability to stop execution at a breakpoint by calling an API from your tool's analysis code. This may sound simple, but it is very powerful. Your Pintool can use instrumentation to look for a complex condition and then stop at a breakpoint when that condition occurs.

+The "stack-debugger" tool illustrates this by using instrumentation to observe all the instructions that allocate stack space, and then it stops at a breakpoint whenever the application's stack usage reaches some threshold. In effect, this adds a new feature to the debugger that could not be practically implemented using traditional debugger technology because a traditional debugger can not reasonably find all the instructions that allocate stack space. A Pintool, however, can do this quite easily via instrumentation.

+The example code below from the "stack-debugger" tool uses Pin instrumentation to identify all the instructions that allocate stack space.

+

static VOID Instruction(INS ins, VOID *)
+{
+    if (!EnableInstrumentation)
+        return;
+
+    if (INS_RegWContain(ins, REG_STACK_PTR))
+    {
+        IPOINT where = IPOINT_AFTER;
+        if (!INS_HasFallThrough(ins))
+            where = IPOINT_TAKEN_BRANCH;
+
+        INS_InsertIfCall(ins, where, (AFUNPTR)OnStackChangeIf, IARG_REG_VALUE, REG_STACK_PTR,
+            IARG_REG_VALUE, RegTinfo, IARG_END);
+        INS_InsertThenCall(ins, where, (AFUNPTR)DoBreakpoint, IARG_CONST_CONTEXT, IARG_THREAD_ID, IARG_END);
+    }
+}
+

+The call to INS_RegWContain() tests whether an instruction modifies the stack pointer. If it does, we insert an analysis call immediately after the instruction, which checks to see if the application's stack usage exceeds a threshold.

+Also notice that all the instrumentation is gated by the global flag "EnableInstrumentation", which we saw earlier in the "stacktrace on" command. Thus, the user can disable instrumentation (with "stacktrace off") in order to execute quickly through uninteresting parts of the application, and then re-enable it (with "stacktrace on") for the interesting parts.

+The analysis routine OnStackChangeIf() returns TRUE if the application's stack usage has exceeded the threshold. When this happens, the tool calls the DoBreakpoint() analysis routine, which will stop at the debugger breakpoint. Notice that we use if / then instrumentation here because the call to DoBreakpoint() requires a "CONTEXT *" parameter, which can be slow.

+

static ADDRINT OnStackChangeIf(ADDRINT sp, ADDRINT addrInfo)
+{
+    TINFO *tinfo = reinterpret_cast<TINFO *>(addrInfo);
+
+    // The stack pointer may go above the base slightly.  (For example, the application's dynamic
+    // loader does this briefly during start-up.)
+    //
+    if (sp > tinfo->_stackBase)
+        return 0;
+
+    // Keep track of the maximum stack usage.
+    //
+    size_t size = tinfo->_stackBase - sp;
+    if (size > tinfo->_max)
+        tinfo->_max = size;
+
+    // See if we need to trigger a breakpoint.
+    //
+    if (BreakOnNewMax && size > tinfo->_maxReported)
+        return 1;
+    if (BreakOnSize && size >= BreakOnSize)
+        return 1;
+    return 0;
+}
+
+static VOID DoBreakpoint(const CONTEXT *ctxt, THREADID tid)
+{
+    TINFO *tinfo = reinterpret_cast<TINFO *>(PIN_GetContextReg(ctxt, RegTinfo));
+
+    // Keep track of the maximum reported stack usage for "stackbreak newmax".
+    //
+    size_t size = tinfo->_stackBase - PIN_GetContextReg(ctxt, REG_STACK_PTR);
+    if (size > tinfo->_maxReported)
+        tinfo->_maxReported = size;
+
+    ConnectDebugger();  // Ask the user to connect a debugger, if it is not already connected.
+
+    // Construct a string that the debugger will print when it stops.  If a debugger is
+    // not connected, no breakpoint is triggered and execution resumes immediately.
+    //
+    tinfo->_os.str("");
+    tinfo->_os << "Thread " << std::dec << tid << " uses " << size << " bytes of stack.";
+    PIN_ApplicationBreakpoint(ctxt, tid, FALSE, tinfo->_os.str());
+}
+

+The analysis routine OnStackChangeIf() keeps track of some metrics on stack usage and tests whether the threshold has been reached. If the threshold is crossed, it returns non-zero, and Pin executes the DoBreakpoint() analysis routine.

+The interesting part of DoBreakpoint() is at the very end, where it calls PIN_ApplicationBreakpoint(). This API causes Pin to stop the execution of all threads and triggers a breakpoint in the debugger. There is also a string parameter to PIN_ApplicationBreakpoint(), which GDB prints at the console when the breakpoint triggers. A Pintool can use this string to tell the user why a breakpoint triggered. In our example tool, this string says something like "Thread 10 uses 4000 bytes of stack".

+We can see the breakpoint feature in action in our example tool by using the "stackbreak 4000" command like this:

+

(gdb) monitor stackbreak 4000
+Will break when thread uses more than 4000 bytes of stack.
+(gdb) c
+Continuing.
+Thread 0 uses 4000 bytes of stack.
+Program received signal SIGTRAP, Trace/breakpoint trap.
+0x0000000000400e27 in Fibonacci (num=0) at fibonacci.cpp:34
+(gdb)
+

+When you are done, you can either continue the application and let it terminate, or you can quit from the debugger:

+

(gdb) quit
+The program is running.  Exit anyway? (y or n) y
+

+Connecting the Debugger Later

+In the previous example, we used the Pin switch -appdebug to stop the application and debug it from the first instruction. You can also enable Pin's debugging extensions without stopping at the first instruction. The following example shows how you can use the stack-debugger tool to start the application and attach with the debugger only after it triggers a stack limit breakpoint.

+

$ ../../../pin -appdebug_enable -appdebug_silent -t obj-intel64/stack-debugger.so -stackbreak 4000 -- obj-intel64/fibonacci 1000
+

+The -appdebug_enable switch tells Pin to enable application debugging without stopping at the first instruction. The -appdebug_silent switch disables the message that tells how to connect with GDB. As we will see later, the Pintool can print a custom message instead. Finally, the "-stackbreak 4000" switch tells the stack-debugger tool to trigger a breakpoint when the stack grows to 4000 bytes. When the tool does trigger a breakpoint, it prints a message like this:

+

Triggered stack-limit breakpoint.
+Start GDB and enter this command:
+  target remote :45462
+

+You can now connect with GDB as you did before, except now GDB stops the application at the point where the stack-debugger tool triggered the stack-limit breakpoint.

+

gdb fibonacci
+(gdb) target remote :45462
+0x0000000000400e27 in Fibonacci (num=0) at fibonacci.cpp:37
+(gdb)
+

+Let's look at the code in the tool that connects to the debugger now.

+

static void ConnectDebugger()
+{
+    if (PIN_GetDebugStatus() != DEBUG_STATUS_UNCONNECTED)
+        return;
+
+    DEBUG_CONNECTION_INFO info;
+    if (!PIN_GetDebugConnectionInfo(&info) || info._type != DEBUG_CONNECTION_TYPE_TCP_SERVER)
+        return;
+
+    *Output << "Triggered stack-limit breakpoint.\n";
+    *Output << "Start GDB and enter this command:\n";
+    *Output << "  target remote :" << std::dec << info._tcpServer._tcpPort << "\n";
+    *Output << std::flush;
+
+    if (PIN_WaitForDebuggerToConnect(1000*KnobTimeout.Value()))
+        return;
+
+    *Output << "No debugger attached after " << KnobTimeout.Value() << " seconds.\n";
+    *Output << "Resuming application without stopping.\n";
+    *Output << std::flush;
+}
+

+The ConnectDebugger() function is called each time the tool wants to stop at a breakpoint. It first calls PIN_GetDebugStatus() to see if Pin is already connected to a debugger. If not, it uses PIN_GetDebugConnectionInfo() to get the TCP port number that is needed to connect GDB to Pin. This is, for example, the "45462" number that the user types in the "target remote" command. After asking the user to start GDB, the tool then calls PIN_WaitForDebuggerToConnect() to wait for GDB to connect. If the user doesn't start GDB after a timeout period, the tool prints a message and then continues executing the application.

+As before, you can either continue the application and let it terminate, or you can quit from the debugger:

+

(gdb) quit
+The program is running.  Exit anyway? (y or n) y
+

+Advanced Debugging Extensions on Windows

+On Windows, the advanced debugging extensions work with Microsoft Visual Studio 2012 or greater. There is no support for earlier versions of Visual Studio, so make sure you have that version installed. Also, the Express edition of Visual Studio doesn't support IDE extensions, so it will not work with the Pin debugger extensions. Therefore, you must install the Professional edition (or greater). If you are a student, you may be able to get the Professional edition for free. Check the Microsoft web site or with your school's IT department for details.

+After you have installed Visual Studio, you must also install the Pin extension for Visual Studio. Look for an installer named "pinadx-vsextension-X.Y.Z.msi" in the root of the Pin kit.

+The remainder of this section assumes that you are able to build the "stack-debugger" tool, so if you want to follow along, you must have the following software installed:

+

    +
  • Visual Studio 2012, Professional edition (or greater).
  • The Pin debugger extension for Visual Studio 2012 (pinadx-vsextension-X.Y.Z.msi).
+

+In order to start this tutorial, you will probably want to build the example tool "stack-debugger.cpp", which is available in the directory "source\tools\ManualExamples". To do this, open a Visual Studio command shell and type the following commands. (Use "TARGET=intel64" instead, if you want to build a 64-bit version of the tool.)

+

C:\> cd source\tools\ManualExamples
+C:\> make TARGET=ia32 obj-ia32/stack-debugger.dll
+

+After you have done this, start Visual Studio and open the sample solution file at "source\tools\ManualExamples\stack-debugger-tutorial.sln". Then build the sample application "fibonacci" by pressing F7. Make sure you can run the application natively by pressing CTRL-F5.

+Now let's try running the "fibonacci" application under Pin with the "stack-debugger" tool. To do this, you must first set the "Pin Kit Directory" from TOOLS->Options->Pin Debugger.

+

+pin-debugger-option-pages-properties.png +
+

+Then you have to adjust the "fibonacci" project properties in Visual Studio: right-click on the "fibonacci" project in the Solution Explorer, choose Properties, and then click on Debugging. Change the drop-down titled "Debugger to launch" to "Pin Debugger" as shown in the figure below.

+

+pin-debugger-project-properties1.png +
+

+Then, set the "Pin Tool Path" property by browsing to the "stack-debugger.dll". Press OK when you are done.

+

+pin-debugger-project-properties2.png +
+

+Visual Studio is now configured to run the "fibonacci" application under your Pintool. However, before you continue, set a breakpoint in "main()" so that execution stops in the debugger. Then press F5 to start debugging.

+You should now see a normal-looking debugger session, although your application is really running under control of Pin. All of the debugger features still work as you would expect. You can set breakpoints, continue execution, display the values of variables, and even view the disassembled code. All of the information that you observe in the debugger shows the application's "pure" state. The details of Pin and the tool's instrumentation are hidden. For example, the disassembly view shows only the application's instructions, not any of the instructions inserted by the tool. However, when you continue execution (e.g. with F5 or F10), the application executes along with your tool's instrumentation code.

+Now, let's see an alternative way to debug the "fibonacci" application under Pin with the "stack-debugger" tool in Visual Studio. After you have built the "stack-debugger" tool, open a command shell and start the application with the debugging extensions enabled. This will cause Pin to stop immediately before the first instruction.

+

C:\> cd source\tools\ManualExamples
+C:\> ..\..\..\pin -appdebug -t obj-ia32\stack-debugger.dll -- debug\fibonacci.exe 1000
+Application stopped until continued from debugger.
+Pin ready to accept debugger connection on port 30840
+

+Open the source.cpp in Visual Studio and set a breakpoint to stop the execution in the debugger. To attach with Visual Studio to the process that is running under Pin, select "Attach to Pin Process" on the DEBUG menu. Select from the Available Processes table the "fibonacci" process, enter the port number that Pin printed and click Attach.

+

+pin-debugger-attach.png +
+

+Adding New Debugger Commands

+The previous section illustrated how you can enable the normal debugger features while running an application under Pin. Now, let's see how your Pintool can add new custom debugger commands, even without changing Visual Studio. Custom debugger commands are useful because they allow you to control your Pintool interactively from within a live debugger session. For example, you can ask your Pintool to print out information that it has collected, or you can interactively enable instrumentation only for certain phases of the application.

+To illustrate, see the call to PIN_AddDebugInterpreter() in the stack-debugger tool. That API sets up the following call-back function:

+

static BOOL DebugInterpreter(THREADID tid, CONTEXT *ctxt, const string &cmd, string *result, VOID *)
+{
+    TINFO_MAP::iterator it = ThreadInfos.find(tid);
+    if (it == ThreadInfos.end())
+        return FALSE;
+    TINFO *tinfo = it->second;
+
+    std::string line = TrimWhitespace(cmd);
+    *result = "";
+
+    // [...]
+
+    if (line == "stats")
+    {
+        ADDRINT sp = PIN_GetContextReg(ctxt, REG_STACK_PTR);
+        tinfo->_os.str("");
+        if (sp <= tinfo->_stackBase)
+            tinfo->_os << "Current stack usage: " << std::dec << (tinfo->_stackBase - sp) << " bytes.\n";
+        else
+            tinfo->_os << "Current stack usage: -" << std::dec << (sp - tinfo->_stackBase) << " bytes.\n";
+        tinfo->_os << "Maximum stack usage: " << tinfo->_max << " bytes.\n";
+        *result = tinfo->_os.str();
+        return TRUE;
+    }
+    else if (line == "stacktrace on")
+    {
+        if (!EnableInstrumentation)
+        {
+            PIN_RemoveInstrumentation();
+            EnableInstrumentation = true;
+            *result = "Stack tracing enabled.\n";
+        }
+        return TRUE;
+    }
+
+    // [...]
+
+    return FALSE;  // Unknown command
+
+}
+

+The PIN_AddDebugInterpreter() API allows a Pintool to establish a handler for extended debugger commands. For example, the code snippet above implements the new commands "stats" and "stacktrace on". You can execute these commands in Visual Studio by opening "DEBUG->Windows->Pin Console" in the IDE.

+

+stack-debugger-commands.png +
+

+A Pintool can do various things when the user types an extended debugger command. For example, the "stats" command prints out some information that the tool has collected. Any text that the tool writes to the "result" parameter is printed to the Visual Studio Pin Console window. Note that the CONTEXT parameter has the register state for the debugger's "focus" thread, so the tool can easily display information about this focus thread.

+You can also use an extended debugger command to interactively enable or disable instrumentation in your Pintool, as demonstrated by the "stacktrace on" command. For example, if you wanted to quickly run your Pintool over the application's initial start-up phase, you could run with your Pintool's instrumentation disabled until a breakpoint is triggered. Then, you could use an extended command to enable instrumentation only during the interesting part of the application. In the stack-debugger example above, the call to PIN_RemoveInstrumentation() causes Pin to discard any previous instrumentation, so the tool re-instruments the code when the debugger continues execution of the application. As we will see later, the tool's global variable "EnableInstrumentation" adjusts the instrumentation that it inserts.

+Semantic Breakpoints

+The last major feature of the advanced debugging extensions is the ability to stop execution at a breakpoint by calling an API from your tool's analysis code. This may sound simple, but it is very powerful. Your Pintool can use instrumentation to look for a complex condition and then stop at a breakpoint when that condition occurs.

+The "stack-debugger" tool illustrates this by using instrumentation to observe all the instructions that allocate stack space, and then it stops at a breakpoint whenever the application's stack usage reaches some threshold. In effect, this adds a new feature to the debugger that could not be practically implemented using traditional debugger technology because a traditional debugger can not reasonably find all the instructions that allocate stack space. A Pintool, however, can do this quite easily via instrumentation.

+The example code below from the "stack-debugger" tool uses Pin instrumentation to identify all the instructions that allocate stack space.

+

static VOID Instruction(INS ins, VOID *)
+{
+    if (!EnableInstrumentation)
+        return;
+
+    if (INS_RegWContain(ins, REG_STACK_PTR))
+    {
+        IPOINT where = IPOINT_AFTER;
+        if (!INS_HasFallThrough(ins))
+            where = IPOINT_TAKEN_BRANCH;
+
+        INS_InsertIfCall(ins, where, (AFUNPTR)OnStackChangeIf, IARG_REG_VALUE, REG_STACK_PTR,
+            IARG_REG_VALUE, RegTinfo, IARG_END);
+        INS_InsertThenCall(ins, where, (AFUNPTR)DoBreakpoint, IARG_CONST_CONTEXT, IARG_THREAD_ID, IARG_END);
+    }
+}
+

+The call to INS_RegWContain() tests whether an instruction modifies the stack pointer. If it does, we insert an analysis call immediately after the instruction, which checks to see if the application's stack usage exceeds a threshold.

+Also notice that all the instrumentation is gated by the global flag "EnableInstrumentation", which we saw earlier in the "stacktrace on" command. Thus, the user can disable instrumentation (with "stacktrace off") in order to execute quickly through uninteresting parts of the application, and then re-enable it (with "stacktrace on") for the interesting parts.

+The analysis routine OnStackChangeIf() returns TRUE if the application's stack usage has exceeded the threshold. When this happens, the tool calls the DoBreakpoint() analysis routine, which will stop at the debugger breakpoint. Notice that we use if / then instrumentation here because the call to DoBreakpoint() requires a "CONTEXT *" parameter, which can be slow.

+

static ADDRINT OnStackChangeIf(ADDRINT sp, ADDRINT addrInfo)
+{
+    TINFO *tinfo = reinterpret_cast<TINFO *>(addrInfo);
+
+    // The stack pointer may go above the base slightly.  (For example, the application's dynamic
+    // loader does this briefly during start-up.)
+    //
+    if (sp > tinfo->_stackBase)
+        return 0;
+
+    // Keep track of the maximum stack usage.
+    //
+    size_t size = tinfo->_stackBase - sp;
+    if (size > tinfo->_max)
+        tinfo->_max = size;
+
+    // See if we need to trigger a breakpoint.
+    //
+    if (BreakOnNewMax && size > tinfo->_maxReported)
+        return 1;
+    if (BreakOnSize && size >= BreakOnSize)
+        return 1;
+    return 0;
+}
+
+static VOID DoBreakpoint(const CONTEXT *ctxt, THREADID tid)
+{
+    TINFO *tinfo = reinterpret_cast<TINFO *>(PIN_GetContextReg(ctxt, RegTinfo));
+
+    // Keep track of the maximum reported stack usage for "stackbreak newmax".
+    //
+    size_t size = tinfo->_stackBase - PIN_GetContextReg(ctxt, REG_STACK_PTR);
+    if (size > tinfo->_maxReported)
+        tinfo->_maxReported = size;
+
+    ConnectDebugger();  // Ask the user to connect a debugger, if it is not already connected.
+
+    // Construct a string that the debugger will print when it stops.  If a debugger is
+    // not connected, no breakpoint is triggered and execution resumes immediately.
+    //
+    tinfo->_os.str("");
+    tinfo->_os << "Thread " << std::dec << tid << " uses " << size << " bytes of stack.";
+    PIN_ApplicationBreakpoint(ctxt, tid, FALSE, tinfo->_os.str());
+}
+

+The analysis routine OnStackChangeIf() keeps track of some metrics on stack usage and tests whether the threshold has been reached. If the threshold is crossed, it returns non-zero, and Pin executes the DoBreakpoint() analysis routine.

+The interesting part of DoBreakpoint() is at the very end, where it calls PIN_ApplicationBreakpoint(). This API causes Pin to stop the execution of all threads and triggers a breakpoint in the debugger. There is also a string parameter to PIN_ApplicationBreakpoint(), which is displayed in Visual Studio when the breakpoint triggers. A Pintool can use this string to tell the user why a breakpoint triggered. In our example tool, this string says something like "Thread 10 uses 4000 bytes of stack".

+We can see the breakpoint feature in action in our example tool by typing this command in the Pin Console window:

+

>stackbreak 4000
+Will break when thread uses more than 4000 bytes of stack.
+

+Then press F5 to continue execution. The application should stop in the debugger again with a message like this:

+

+stack-debugger-custom-break.png +
+

+When you are done, you can either continue the application with F5 or terminate it with SHIFT-F5.

+Advanced Debugging Extensions on OS X*

+Pin's debugging extensions on OS X are very similar to Linux, with the one exception that the debugger used is LLDB. To work with LLDB, the -appdebug_lldb_options flag must be specified at the Pin command line.

+

$ ../../../pin -appdebug -appdebug_lldb_options -t obj-intel64/stack-debugger.dylib -- obj-intel64/fibonacci 1000
+Application stopped until continued from debugger.
+Start GDB, then issue this command at the (gdb) prompt:
+  target remote :33030
+

+

Warning:
For the debugger extensions to work properly, they require the target application symbols. Make sure to call PIN_InitSymbols in your Pintool.
+========================================================================================

+Applying a Pintool to an Application

+========================================================================================

+An application and a tool are invoked as follows:

+

pin [pin-option]... -t [toolname] [tool-options]... -- [application] [application-option]..
+

+These are a few of the Pin options are currently available. See Command Line Switches for the complete list.

    +
  • +-t toolname: Specifies the Pintool to use. If you are running a 32-bit application in an IA-32 architecture, or a 64-bit application on an Intel(R) 64 architecture, only -t <toolname> is needed. If you are running an application on an Intel(R) 64 architecture, where all of the components in the chain are either 32-bit or 64-bit, but not both, only -t <toolname> is needed. If you are running an application on an Intel(R) 64 architecture, where components in the chain are both 32-bit and 64-bit, use -t64 <64-bit toolname> to specify the 64-bit tool binary followed by -t <32-bit toolname> to specify the 32-bit tool binary and the tool options. For more information, see Instrumenting Applications on Intel(R) 64 Architectures
  • +
  • +-t64 toolname: Specify 64-bit tool binary for Intel(R) 64 architecture. If you are running an application on an Intel(R) 64 architecture, where components in the chain are both 32-bit and 64-bit, use -t64 together with -t as described above. See Instrumenting Applications on Intel(R) 64 Architectures.
    + Important: Using -t64 without -t is not recommended, since in this case when given a 32-bit application, Pin will run the application without applying any tool.
  • +
  • +-p32 toolname: Specify Pin binary for IA-32 architecture. See Instrumenting Applications on Intel(R) 64 Architectures
  • +
  • +-p64 toolname: Specify Pin binary for Intel(R) 64 architecture. See Instrumenting Applications on Intel(R) 64 Architectures
  • +
  • +-pause_tool n: is a useful Pin-option which prints out the process id and pauses Pin for n seconds to permit attaching with gdb. See Tips for Debugging a Pintool.
  • +
  • +-follow_execv: Execute with Pin all processes spawned by execv class system calls.
  • +
  • +-injection mode: Where mode is one of dynamic, self, child, parent. UNIX-only See Injection.

    +

  • +
+

+The tool-options follow immediately after the tool specification and depend on the tool used.

+Everything following the -- is the command line for the application.

+For example, to apply the itrace example (Instruction Address Trace (Instruction Instrumentation)) to a run of the "ls" program:

+

../../../pin -t obj-intel64/itrace.so -- /bin/ls
+

+To get a listing of the available command line options for Pin:

+

pin -help
+

+To get a listing of the available command line options for the itrace example:

+

../../../pin -t obj-intel64/itrace.so -help -- /bin/ls
+

+Note that in the last case /bin/ls is necessary on the command line but will not be executed.

+Instrumenting Applications on Intel(R) 64 Architectures

+The Pin kit for IA-32 and Intel(R) 64 architectures is a combined kit. Both a 32-bit version and a 64-bit version of Pin are present in the kit. This allows Pin to instrument complex applications on Intel(R) 64 architectures which may have 32-bit and 64-bit components.

+An application and a tool are invoked in "mixed-mode" as follows:

+

pin [pin-option]... -t64 <64-bit toolname> -t <32-bit toolname> [tool-options]...
+-- <application> [application-option]..
+

+Please note:

    +
  • The -t64 option must precede the -t option.
  • When using -t64 together with -t, -t specifies the 32-bit tool. Using -t64 without -t is not recommended, since in this case when given a 32-bit application, Pin will run the application without applying any tool.
  • The [tool-options] apply to both the 64-bit and the 32-bit tools and must be specified after -t <32-bit toolname>. It is not possible to specify different set of options for the 64-bit and the 32-bit tools.
+

+See source/tools/CrossIa32Intel64/makefile for a few examples.

+The file "pin" is a c-based launcher executable that expects the Pin binary "pinbin" to be in the architecture-specific "bin" subdirectory (i.e. intel64/bin). The "pin" launcher distinguishes the 32-bit version of the Pin binary from the 64-bit version of the Pin binary by using the -p32/-p64 switches, respectively. Today, the 32-bit version of the Pin binary is invoked, and the path of the 64-bit version of Pin is passed as an argument using the -p64 switch. However, one could change this to invoke the 64-bit version of the Pin binary, and pass the 32-bit version of the Pin binary as an argument using the -p32 switch.

+Injection

+The -injection switch is UNIX-only and controls the way Pin is injected into the application process. The default, dynamic, is recommended for all users. It uses parent injection unless it is unsupported (Linux 2.4 kernels). Child injection creates the application process as a child of the pin process so you will see both a pin process and the application process running. In parent injection, the pin process exits after injecting the application and is less likely to cause a problem. Using parent injection on an unsupported platform may lead to nondeterministic errors.

+IMPORTANT: The description about invoking assumes that the application is a program binary (and not a shell script). If your application is invoked indirectly (from a shell script or using 'exec') then you need to change the actual invocation of the program binary by prefixing it with Pin/Pintool options. Here's one way of doing that:

+

 # Track down the actual application binary, say it is 'application_binary'.
+ % mv application_binary application_binary.real
+
+ # Write a shell script named 'application_binary' with the following contents.
+ # (change 'itrace' to your desired tool)
+
+ #!/bin/sh
+ ../../../pin -t obj-intel64/itrace.so -- application_binary.real $*
+

+After you do this, whenever 'application_binary' is invoked indirectly (from some shell script or using 'exec'), the real binary will get invoked with the right Pin/Pintool options.

+Restrictions

+There is a known problem of using Pin on systems protected by the "McAfee Host Intrusion Prevention"* antivirus software. We did not test coexistence of Pin with other antivirus products that perform run-time execution monitoring.

+There is a known limitation of using Pin on Linux systems that prevent the use of ptrace attach via the sysctl /proc/sys/kernel/yama/ptrace_scope. Pin will still work when launching applications with the pin command line. However, Pin will fail in attach mode (that is, using the -pid knob). To resolve this, do the following (as root):

$ echo 0 > /proc/sys/kernel/yama/ptrace_scope
+

+========================================================================================

+Tips for Debugging a Pintool

+========================================================================================

+Using gdb on Linux

+When running an application under the control of Pin and a Pintool there are two different programs residing in the address space. The application, and the Pin instrumentation engine together with your Pintool. The Pintool is normally a shared object loaded by Pin. This section describes how to use gdb to find bugs in a Pintool. You cannot run Pin directly from gdb since Pin uses the debugging API to start the application. Instead, you must invoke Pin from the command line with the -pause_tool switch, and use gdb to attach to the Pin process from another window. The -pause_tool n switch makes Pin print out the process identifier (pid) and pause for n seconds.

+Pin searches for the tool in an internal search algorithm. Therefore in many cases gdb is unable to load the debug info for the tool. There are several options to help gdb find the debug info.

+Option 1 is to use full path to the tool when running pin.

+Option 2 is to tell gdb to load the debugging information of the tool. Pin prompts with the exact gdb command to be used in this case.

+To check that gdb loaded the debugging info to the tool use the command "info sharedlibrary" and you should see that gdb has read the symbols for your tool (as in the example below).

+

(gdb) info sharedlibrary
+From        To          Syms Read   Shared Object Library
+0x001b3ea0  0x001b4d80  Yes         /lib/libdl.so.2
+0x003b3820  0x00431d74  Yes         /usr/intel/pkgs/gcc/4.2.0/lib/libstdc++.so.6
+0x0084f4f0  0x00866f8c  Yes         /lib/i686/libm.so.6
+0x00df8760  0x00dffcc4  Yes         /usr/intel/pkgs/gcc/4.2.0/lib/libgcc_s.so.1
+0x00e5fa00  0x00f60398  Yes         /lib/i686/libc.so.6
+0x40001c50  0x4001367f  Yes         /lib/ld-linux.so.2
+0x008977f0  0x00af7784  Yes         ./dcache.so
+

+For example, if your tool is called opcodemix and the application is /bin/ls, you can use gdb as described below. The following example is for the Intel(R) 64 Linux platform. Substitute "ia32" for the IA-32 architecture.

+Change directory to the directory where your tool resides, and start gdb with pin, but do not use the run command.

+

$ /usr/bin/gdb ../../../intel64/bin/pinbin
+GNU gdb Red Hat Linux (6.3.0.0-1.132.EL4rh)
+Copyright 2004 Free Software Foundation, Inc.
+GDB is free software, covered by the GNU General Public License, and you are
+welcome to change it and/or distribute copies of it under certain conditions.
+Type "show copying" to see the conditions.
+There is absolutely no warranty for GDB.  Type "show warranty" for details.
+This GDB was configured as "x86_64-redhat-linux-gnu"...Using host libthread_db library "/lib64/tls/libthread_db.so.1"
+(gdb)
+

+In another window, start your application with the -pause_tool switch.

+

$ ../../../pin -pause_tool 10 -t obj-intel64/opcodemix.so -- /bin/ls
+Pausing for 10 seconds to attach to process with pid 28769
+To load the tool's debug info to gdb use:
+   add-symbol-file .../source/tools/SimpleExamples/obj-intel64/opcodemix.so 0x2a959e9830
+

+Then go back to gdb and attach to the process.

+

(gdb) attach 28769
+Attaching to program: .../intel64/bin/pinbin, process 28769
+0x000000314b38f7a2 in ?? ()
+(gdb)
+

+Now, you should tell gdb to load the Pintool debugging information, by copying the debugging message we got when invoking pin with the -pause_tool switch..

+

(gdb) add-symbol-file .../source/tools/SimpleExamples/obj-intel64/opcodemix.so 0x2a959e9830
+add symbol table from file ".../source/tools/SimpleExamples/obj-intel64/opcodemix.so" at
+        .text_addr = 0x2a959e9830
+        (y or n) y
+        Reading symbols from .../source/tools/SimpleExamples/obj-intel64/opcodemix.so...done.
+(gdb)
+

+Now, instead of using the gdb run command, you use the cont command to continue execution. You can also set breakpoints as normal.

+

(gdb) b opcodemix.cpp:447
+Breakpoint 1 at 0x2a959ecf60: file opcodemix.cpp, line 447.
+(gdb) cont
+Continuing.
+
+Breakpoint 1, main (argc=7, argv=0x3ff00f12f8) at opcodemix.cpp:447
+447     int main(int argc, CHAR *argv[])
+(gdb)
+

+If the program does not exit, then you should detach so gdb will release control.

+

(gdb) detach
+Detaching from program: .../intel64/bin/pinbin, process 28769
+(gdb)
+

+If you recompile your program and then use the run command, gdb will notice that the binary has been changed and reread the debug information from the file. This does not always happen automatically when using attach. In this case you must use the "add-symbol-file" command again to make gdb reread the debug information.

+Using the Visual Studio Debugger on Windows

+When running an application under the control of Pin and a Pintool there are two different programs residing in the address space. The application, and the Pin instrumentation engine together with your Pintool. The Pintool is a dynamically loaded library (.dll) loaded by Pin. This section describes how to use the Visual Studio Debugger to find bugs in a Pintool. You cannot run Pin directly from the debugger since Pin uses the debugging API to start the application. Instead, you must invoke Pin from the command line with the -pause_tool switch, and use Visual Studio to attach to the Pin process from another window. The -pause_tool n switch makes Pin print out the process identifier (pid) and pause for n seconds. You have n seconds (20 in our example) to attach the application with the debugger. Note, application resumes once the timeout expires. Attaching debugger later will not have the desired effect.

+

 % pin <pin options> -pause_tool 20 -t <tool name>  <tool options> -- <app name> <app options>
+Pausing for 20 seconds to attach to process with pid 28769
+

+In the Visual Studio window, attach to the application process using the "Debug"->"Attach to Process" menu selection and wait until a breakpoint occurs. Then you can set breakpoints in your tool in the usual way.

+Note, it is necessary to build your Pintool with debug symbols if you want symbolic information.

+Using the WinDbg Debugger on Windows

+WinDbg Debugger is the only available option to debug Pintool when it is necessary to attach to an instrumented process after Pin initialization. It also could be used instead of Visual Studio Debugger in scenario described above. The debugger is available at https://msdn.microsoft.com/en-us/library/windows/hardware/ff551063(v=vs.85).aspx

+The following steps are necessary to properly debug Pintool in instrumented process:

+

    +
  • Install latest WinDbg and Process Explorer utility ( https://technet.microsoft.com/en-us/sysinternals/processexplorer.aspx )
  • Add Microsoft Symbol Server settings in WinDbg: in "File" -> "Symbol File Path" type srv*c:\symbols*http://msdl.microsoft.com/download/symbols . Create c:\symbols directory that will serve as local repository for OS DLLs symbols.
  • Attach WinDbg to an instrumented process. Architectures of WinDbg and the process should match.
  • Use Process Explorer to notice location of hidden DLLs (Pintool DLL, its dependencies and pinvm.dll). Select process of interest in Process View, type Ctrl-D , then double-click on each hidden DLL of interest in DLL View to get location info.
  • When Windbg stops after attach, enter the following command for each hidden DLL:
    .reload /f <name>=<address>,<size>
    +
    where <name> is DLL base name, <address> is its actual base address and <size> is its actual size in memory. Example:
    .reload /f mytool.dll=0x50200000,0x420000
    +
  • From now on you can set breakpoints using symbolic info of the DLLs and see comprehensive call stacks.
+

+========================================================================================

+Logging Messages from a Pintool

+========================================================================================

+Pin provides a mechanism to write messages from a Pintool to a logfile. To use this capability, call the LOG() API with your message. The default filename is pintool.log, and it is created in the currently working directory. Use the -logfile switch after the tool name to change the path and file name of the log file.

+

LOG( "Replacing function in " + IMG_Name(img) + "\n" );
+LOG( "Address = " + hexstr( RTN_Address(rtn)) + "\n" );
+LOG( "Image ID = " + decstr( IMG_Id(img) ) + "\n" );
+

+========================================================================================

+Performance Considerations When Writing a Pintool

+========================================================================================

+The way a Pintool is written can have great impact on the performace of the tool, i.e. how much it slows down the applications it is instrumenting. This section demonstrates some techniques that can be used to improve tool performance. Let's start with an example. The following piece of code is derived from the source/tools/SimpleExamples/edgcnt.cpp:

+The instrumentation component of the tool is show below

+

VOID Instruction(INS ins, void *v)
+{
+      ...
+
+      if ( [ins is a branch or a call instruction] )
+      {
+
+
+        INS_InsertCall(ins, IPOINT_BEFORE, (AFUNPTR) docount2,
+                       IARG_INST_PTR,
+                       IARG_BRANCH_TARGET_ADDR,
+                       IARG_BRANCH_TAKEN,
+                       IARG_END);
+      }
+
+      ...
+}
+

+The analysis component looks like this:

VOID docount2( ADDRINT src, ADDRINT dst, INT32 taken )
+{
+    if(!taken) return;
+    COUNTER *pedg = Lookup( src,dst );
+    pedg->_count++;
+}
+

+The purpose of the tool is to count how often each controlflow changing edge in the control flowgraph is traversed. The tool considers both calls and branches but for brevity we will not mention branches in our description. The tool works as follows: The instrumentation component instruments each branch with a call to docount2. As parameters we pass in the origin and the target of the branch and whether the branch was taken or not. Branch origin and target represent of the source and destination of the controlflow edges. If a branch is not taken the controlflow does not change and hence the analysis routine returns right away. If the branch is taken we use the src and dst parameters to look up the counter associated with this edge (Lookup will create a new one if this edge has not been seen before) and increment the counter. Note, that the tool could have been simplified somewhat by using IPOINT_TAKEN_BRANCH option with INS_InsertCall().

+Shifting Computation for Analysis to Instrumentation Code

+About every 5th instruction executed in a typical application is a branch. Lookup will called whenever these instruction are executed, causing significant application slowdown. To improve the situation we note that the instrumentation code is typically called only once for every instruction, while the analysis code is called everytime the instruction is executed. If we can somehow shift computation from the analysis code to the instrumentation code we will improve the overall performance. Our example tools offer multiple such opportunites which will explore in turn. The first observation is that for most branches we can find out inside of Instruction() what the branch target will be . For those branches we can call Lookup inside of Instruction() rather than in docount2(), for indirect branches which are relatively rare we still have to use our original approach. All this is reflected in the folling code. We add a second "lighter" analsysis function, docount. While the original docount2() remains unchanged:

+

VOID docount( COUNTER *pedg, INT32 taken )
+{
+    if( !taken ) return;
+    pedg->_count++;
+}
+

+And the instrumentation will be somewhat more complex:

+

VOID Instruction(INS ins, void *v)
+{
+      ...
+
+    if (INS_IsDirectBranchOrCall(ins))
+    {
+        COUNTER *pedg = Lookup( INS_Address(ins),  INS_DirectBranchOrCallTargetAddress(ins) );
+
+        INS_InsertCall(ins, IPOINT_BEFORE, (AFUNPTR) docount,
+                       IARG_ADDRINT, pedg,
+                       IARG_BRANCH_TAKEN,
+                       IARG_END);
+    }
+    else
+    {
+        INS_InsertCall(ins, IPOINT_BEFORE, (AFUNPTR) docount2,
+                       IARG_INST_PTR,
+                       IARG_BRANCH_TARGET_ADDR,
+                       IARG_BRANCH_TAKEN,
+                       IARG_END);
+    }
+
+      ...
+}
+

+Eliminating Control Flow

+The code for docount() is very compact which provides performance advantages; it may also allow it to be inlined by Pin, thereby avoiding the overhead of a call. The heuristics for when a analysis routine is inlined by Pin are subject to change. But small routines without any control flow (single basic block) are almost guaranteed to be inlined. Unfortunately, docount() does have (albeit limited) control flow. Observing that the parameter, 'taken', will be zero or one we can eliminate the remaining control flow as follows:

+

VOID docount( COUNTER *pedg, INT32 taken )
+{
+    pedg->_count += taken;
+}
+

+Now docount() can be inlined.

+Compiler Considerations for Inlining

+The way that the tool is built affects inlining as well. If an analysis routine has a function call to another function, it would not be a candidate for inlining by Pin unless the function call was inlined by the compiler. If the function call is inlined by the compiler, the analysis routine would be a candidate for inlining by Pin. Therefore, it is advisable to write any subroutines called by the analysis routine in a way that allows the compiler to inline the subroutines.

+On Linux IA-32 architectures, Pintools are built non-PIC (Position Independent Code), which allows the compiler to inline both local and global functions. Tools for Linux Intel(R) 64 architectures are built PIC, but the compiler will not inline any globally visible function due to function pre-emption. Therefore, it is advisable to declare the subroutines called by the analysis function as 'static' on Linux Intel(R) 64 architectures.

+Letting Pin Decide Where to Instrument

+At times we do not care about the exact point where calls to analysis code are being inserted as long as it is within a given basic block. In this case we can let Pin make the decission where to insert. This has the advantage that Pin can select am insertion point that requires minimal register saving and restoring. The following code from ManualExamples/inscount2.cpp shows how this is done for the instruction count example using IPOINT_ANYWHERE with BBL_InsertCall().

+

#include <iostream>
+#include <fstream>
+#include "pin.H"
+
+ofstream OutFile;
+
+// The running count of instructions is kept here
+// make it static to help the compiler optimize docount
+static UINT64 icount = 0;
+
+// This function is called before every block
+// Use the fast linkage for calls
+VOID PIN_FAST_ANALYSIS_CALL docount(ADDRINT c) { icount += c; }
+    
+// Pin calls this function every time a new basic block is encountered
+// It inserts a call to docount
+VOID Trace(TRACE trace, VOID *v)
+{
+    // Visit every basic block  in the trace
+    for (BBL bbl = TRACE_BblHead(trace); BBL_Valid(bbl); bbl = BBL_Next(bbl))
+    {
+        // Insert a call to docount for every bbl, passing the number of instructions.
+        // IPOINT_ANYWHERE allows Pin to schedule the call anywhere in the bbl to obtain best performance.
+        // Use a fast linkage for the call.
+        BBL_InsertCall(bbl, IPOINT_ANYWHERE, AFUNPTR(docount), IARG_FAST_ANALYSIS_CALL, IARG_UINT32, BBL_NumIns(bbl), IARG_END);
+    }
+}
+
+KNOB<string> KnobOutputFile(KNOB_MODE_WRITEONCE, "pintool",
+    "o", "inscount.out", "specify output file name");
+
+// This function is called when the application exits
+VOID Fini(INT32 code, VOID *v)
+{
+    // Write to a file since cout and cerr maybe closed by the application
+    OutFile.setf(ios::showbase);
+    OutFile << "Count " << icount << endl;
+    OutFile.close();
+}
+
+/* ===================================================================== */
+/* Print Help Message                                                    */
+/* ===================================================================== */
+
+INT32 Usage()
+{
+    cerr << "This tool counts the number of dynamic instructions executed" << endl;
+    cerr << endl << KNOB_BASE::StringKnobSummary() << endl;
+    return -1;
+}
+
+/* ===================================================================== */
+/* Main                                                                  */
+/* ===================================================================== */
+
+int main(int argc, char * argv[])
+{
+    // Initialize pin
+    if (PIN_Init(argc, argv)) return Usage();
+
+    OutFile.open(KnobOutputFile.Value().c_str());
+
+    // Register Instruction to be called to instrument instructions
+    TRACE_AddInstrumentFunction(Trace, 0);
+
+    // Register Fini to be called when the application exits
+    PIN_AddFiniFunction(Fini, 0);
+    
+    // Start the program, never returns
+    PIN_StartProgram();
+    
+    return 0;
+}
+

+Using Fast Call Linkages

+For very small analysis functions, the overhead to call the function can be comparable to the work done in the function. Some compilers offer optimized call linkages that eliminate some of the overhead. For example, gcc for the IA-32 architecture has a regparm attribute for passing arguments in registers. Pin supports a limited number of alternate linkages. To use it, you must annotate the declaration of the analysis function with PIN_FAST_ANALYSIS_CALL. The InsertCall function must pass IARG_FAST_ANALYSIS_CALL. If you change one without changing the other, the arguments will not be passed correctly. See the inscount2.cpp example in the previous section for a sample use. For large analysis functions, the benefit may not be significant, but it is unlikely that PIN_FAST_ANALYSIS_CALL would ever cause a slowdown.

+Another call linkage optimization is to eliminate the frame pointer. We recommend using -fomit-frame-pointer to compile tools with gcc. See the gcc documentation for an explanation of what it does. The standard Pintool makefiles include -fomit-frame-pointer. Like PIN_FAST_ANALYSIS_CALL, the benefit is largest for small analysis functions. Debuggers rely on frame pointers to display stack traces, so eliminate this option when trying to debug a PinTool. If you are using a standard PinTool makefile, you can do this by overriding the definition of OPT on the command line with

+

make OPT=-O0
+

+Rewriting Conditional Analysis Code to Help Pin Inline

+Pin improves instrumentation performance by automatically inlining analysis routines that have no control-flow changes. Of course, many analysis routines do have control-flow changes. One particularly common case is that an analysis routine has a single "if-then" test, where a small amount of analysis code plus the test is always executed but the "then" part is executed only once a while. To inline this common case, Pin provides a set of conditional instrumentation APIs for the tool writer to rewrite their analysis routines into a form that does not have control-flow changes. The following example from source/tools/ManualExamples/isampling.cpp illustrates how such rewriting can be done:

+

/*
+ *  This file contains a Pintool for sampling the IPs of instruction executed.
+ *  It serves as an example of a more efficient way to write analysis routines
+ *  that include conditional tests.
+ *  Currently, it works on IA-32 and Intel(R) 64 architectures.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "pin.H"
+
+FILE * trace;
+
+const INT32 N = 100000;
+const INT32 M =  50000;
+
+INT32 icount = N;
+
+/*
+ *  IP-sampling could be done in a single analysis routine like:
+ *
+ *        VOID IpSample(VOID *ip)
+ *        {
+ *            --icount;
+ *            if (icount == 0)
+ *            {
+ *               fprintf(trace, "%p\n", ip);
+ *               icount = N + rand() % M;
+ *            }
+ *        }
+ *
+ *  However, we break IpSample() into two analysis routines,
+ *  CountDown() and PrintIp(), to facilitate Pin inlining CountDown()
+ *  (which is the much more frequently executed one than PrintIp()).
+ */
+
+ADDRINT CountDown()
+{
+    --icount;
+    return (icount==0);
+}
+
+
+// The IP of the current instruction will be printed and
+// the icount will be reset to a random number between N and N+M.
+VOID PrintIp(VOID *ip)
+{
+    fprintf(trace, "%p\n", ip);
+    
+    // Prepare for next period
+    icount = N + rand() % M; // random number from N to N+M
+}
+
+
+// Pin calls this function every time a new instruction is encountered
+VOID Instruction(INS ins, VOID *v)
+{
+    // CountDown() is called for every instruction executed
+    INS_InsertIfCall(ins, IPOINT_BEFORE, (AFUNPTR)CountDown, IARG_END);
+    
+    // PrintIp() is called only when the last CountDown() returns a non-zero value.
+    INS_InsertThenCall(ins, IPOINT_BEFORE, (AFUNPTR)PrintIp, IARG_INST_PTR, IARG_END);
+    
+}
+
+// This function is called when the application exits
+VOID Fini(INT32 code, VOID *v)
+{
+    fprintf(trace, "#eof\n");
+    fclose(trace);
+}
+
+/* ===================================================================== */
+/* Print Help Message                                                    */
+/* ===================================================================== */
+
+INT32 Usage()
+{
+    PIN_ERROR( "This Pintool samples the IPs of instruction executed\n"
+                + KNOB_BASE::StringKnobSummary() + "\n");
+    return -1;
+}
+
+/* ===================================================================== */
+/* Main                                                                  */
+/* ===================================================================== */
+
+int main(int argc, char * argv[])
+{
+    trace = fopen("isampling.out", "w");
+    
+    // Initialize pin
+    if (PIN_Init(argc, argv)) return Usage();
+
+    // Register Instruction to be called to instrument instructions
+    INS_AddInstrumentFunction(Instruction, 0);
+
+    // Register Fini to be called when the application exits
+    PIN_AddFiniFunction(Fini, 0);
+    
+    // Start the program, never returns
+    PIN_StartProgram();
+    
+    return 0;
+}
+

+In the above example, the original analysis routine IpSample() has a conditional control-flow change. It is rewritten into two analysis routines: CountDown() and PrintIp(). CountDown() is the simpler one of the two, which doesn't have control-flow change. It also performs the original conditional test and returns the test result. We use the conditional instrumentaton APIs INS_InsertIfCall() and INS_InsertThenCall() to tell Pin that tbe analysis routine specified by an INS_InsertThenCall() (i.e. PrintIp() in this example) is executed only if the result of the analysis routine specified by the previous INS_InsertIfCall() (i.e. CountDown() in this example) is non-zero. Now CountDown(), the common case, can be inlined by Pin, and only once a while does Pin need to execute PrintIp(), the non-inlined case.

+Optimizing Instrumentation of REP Prefixed Instructions

+The IA-32 and Intel(R) 64 architectures include REP prefixed string instructions. These use a REP prefix on a string operation to repeat the execution of the inner operation. For some instructions the repeat count is determined solely by the value in the count register. For others (SCAS,CMPS), the count register provides an upper limit on the number of iterations, while the REP opcode provides a condition to be tested which can exit the REP loop before the full number of iterations has been executed.

+Pin treats REP prefixed instructions as an implicit loop around the inner instruction, so IPOINT_BEFORE and IPOINT_AFTER instrumentation is executed for that instruction once for each iteration of the (implicit) loop. Since each execution of the inner instruction is instrumented, IARG_MEMORY{READ,READ2,WRITE}_SIZE can be determined statically from the instruction (1,2,4,8 bytes), and IARG_MEMORY{OP,READ,READ2,WRITE}_EA can also be determined (even if DF==1, so the inner instructions are decrementing their arguments and moving backwards through store).

+REP prefixed instructions are treated as predicated, where the predicate is that the count register is non-zero. Therefore canonical instrumentation for memory accesses such as

+

    if (INS_MemoryOperandIsRead(ins,memOp))
+    {
+        INS_InsertPredicatedCall(ins, IPOINT_BEFORE,(AFUNPTR)logMemory,
+                                 IARG_MEMORYOP_EA, memOp,
+                                 IARG_UINT32, INS_MemoryOperandSize(ins,memOp),
+                                 IARG_END);
+    }
+

+will see all of the memory accesses made by the REP prefixed operations.

+To allow tools to count entries into a REP prefixed instruction, and to optimize, Pin provides IARG_FIRST_REP_ITERATION, which can be passed as an argument to an analysis routine. It is TRUE if this is the first iteration of a REP prefixed instruction, FALSE otherwise.

+Thus to perform an action only on the first iteration of a REP prefixed instruction, one can use code like this (assuming that "takeAction" wants to be called on the first iteration of all REP prefixed instructions, even ones with a zero repeat count):

+To obtain the repeat count, you can use

        IARG_REGISTER_VALUE, INS_RepCountRegister(ins),
+
which will pass the value in the appropriate count register (one of REG_CX,REG_ECX,REG_RCX depending on the instruction).

+As an example, here is code which counts the number of times REP prefixed instructions are executed, optimizing cases in which the REP prefixed instruction only depends on the count register.

+

class stats
+{
+    UINT64 count;                               // Times we start the REP prefixed op
+    UINT64 repeatedCount;                       // Times we execute the inner instruction
+    UINT64 zeroLength;                          // Times we start but don't execute the inner instruction because count is zero
+public:
+    stats() : count(0), repeatedCount(0), zeroLength(0) {}
+    VOID output() const;
+    VOID add(UINT32 firstRep, UINT32 repCount)
+    {
+        count += firstRep;
+        repeatedCount += repCount;
+        if (repCount == 0)
+            zeroLength += 1;
+    }
+    BOOL empty() const { return count == 0; }
+    stats& operator+= (const stats &other)
+    {
+        count += other.count;
+        repeatedCount += other.repeatedCount;
+        zeroLength += other.zeroLength;
+        return *this;
+    }
+};
+
+// Trivial analysis routine to pass its argument back in an IfCall so that we can use it
+// to control the next piece of instrumentation.
+static ADDRINT returnArg (BOOL arg)
+{
+    return arg;
+}
+
+// Analysis functions for execution counts.
+// Analysis routine, FirstRep and Executing tell us the properties of the execution.
+static VOID addCount (UINT32 opIdx, UINT32 firstRep, UINT32 repCount)
+{
+    stats * s = &statistics[opIdx];
+
+    s->add(firstRep, repCount);
+}
+
+// Instrumentation routines.
+// Insert code for counting how many times the instruction is executed
+static VOID insertRepExecutionCountInstrumentation (INS ins, UINT32 opIdx)
+{
+    if (takesConditionalRep(opIdx))
+    {
+        // We have no smart way to lessen the number of
+        // instrumentation calls because we can't determine when
+        // the conditional instruction will finish.  So we just
+        // let the instruction execute and have our
+        // instrumentation be called on each iteration.  This is
+        // the simplest way of handling REP prefixed instructions, where
+        // each iteration appears as a separate instruction, and
+        // is independently instrumented.
+        INS_InsertCall(ins, IPOINT_BEFORE, (AFUNPTR)addCount,
+                       IARG_UINT32, opIdx,
+                       IARG_FIRST_REP_ITERATION,
+                       IARG_EXECUTING,
+                       IARG_END);
+    }
+    else
+    {
+        // The number of iterations is determined solely by the count register value,
+        // therefore we can log all we need at the start of each REP "loop", and skip the
+        // instrumentation on all the other iterations of the REP prefixed operation. Simply use
+        // IF/THEN instrumentation which tests IARG_FIRST_REP_ITERATION.
+        //
+        INS_InsertIfCall(ins, IPOINT_BEFORE, (AFUNPTR)returnArg, IARG_FIRST_REP_ITERATION, IARG_END);
+        INS_InsertThenCall(ins, IPOINT_BEFORE, (AFUNPTR)addCount,
+                           IARG_UINT32, opIdx,
+                           IARG_UINT32, 1,
+                           IARG_REG_VALUE, INS_RepCountRegister(ins),
+                           IARG_END);
+    }
+}
+

+To perform this optimization when collecting memory access addresses, you will also need to worry about the state of EFLAGS.DF, since the string operations work from high address to low address when EFLAGS.DF==1.

+Here is an example which shows how to handle that.

// Compute the base address of the whole access given the initial address,
+// repeat count and element size. It has to adjust for DF if it is asserted.
+static ADDRINT computeEA (ADDRINT firstEA, UINT32 eflags, UINT32 count, UINT32 elementSize)
+{
+    enum {
+        DF_MASK = 0x0400
+    };
+
+    if (eflags & DF_MASK)
+    {
+        ADDRINT size = elementSize*count;
+
+        // The string ops post-decrement, so the lowest address is one elementSize above
+        // where you might think it should be.
+        return firstEA - size + elementSize;
+    }
+    else
+        return firstEA;
+}
+
+static VOID logMemoryAddress (UINT32 op,        // Index of instruction
+                              BOOL first,       // First iteration?
+                              ADDRINT baseEA,   // Effective address being accessed on this iteration
+                              ADDRINT count,    // Iteration count
+                              UINT32 size,      // Size in bytes of the per-iteration access
+                              UINT32 eflags,    // Eflags
+                              ADDRINT tag)      // Name for the type of access
+{
+    const char * tagString = reinterpret_cast<const char *>(tag);
+    UINT32 width = 20;
+
+    if (!first)
+    {
+        out << "  ";                            // Indent REP iterations
+        width -= 2;
+    }
+    out << opcodes[op].name << ' ' << tagString << ' ';
+    out << std::hex << std::setw(width) << computeEA(baseEA, eflags, count, size) << ':';
+    out << std::dec << std::setw(20) << size*count << endl;
+}
+
+// Insert instrumentation to log memory addresses accessed.
+static VOID insertRepMemoryTraceInstrumentation(INS ins, UINT32 opIdx)
+{
+    const opInfo * op = &opcodes[opIdx];
+
+    if (takesConditionalRep(opIdx))
+    {
+        if (INS_IsMemoryRead(ins))
+        {
+            INS_InsertCall(ins, IPOINT_BEFORE, (AFUNPTR)logMemoryAddress,
+                           IARG_UINT32, opIdx,
+                           IARG_FIRST_REP_ITERATION,
+                           IARG_MEMORYREAD_EA,
+                           IARG_EXECUTING,
+                           IARG_UINT32, op->size,
+                           IARG_UINT32, 0,      // Fake Eflags, since we're called at each iteration it doesn't matter
+                           IARG_ADDRINT, (ADDRINT)"Read ",
+                           IARG_END);
+        }
+        // And similar code for MEMORYREAD2, MEMORYWRITE
+    }
+    else
+    {
+        if (INS_IsMemoryRead(ins))
+        {
+            INS_InsertIfCall(ins, IPOINT_BEFORE, (AFUNPTR)returnArg, IARG_FIRST_REP_ITERATION, IARG_END);
+            INS_InsertThenCall(ins, IPOINT_BEFORE, (AFUNPTR)logMemoryAddress,
+                               IARG_UINT32, opIdx,
+                               IARG_BOOL, TRUE,      // First must be TRUE else we wouldn't be called
+                               IARG_MEMORYREAD_EA,
+                               IARG_REG_VALUE, INS_RepCountRegister(ins),
+                               IARG_UINT32, op->size,
+                               IARG_REG_VALUE, REG_EFLAGS,
+                               IARG_ADDRINT, (ADDRINT)"Read ",
+                               IARG_END);
+        }
+        // And similar code for MEMORYREAD2, MEMORYWRITE
+    }
+}
+

+Since there are real codes where a significant proportion of all instructions are REP prefixed, using IARG_FIRST_REP_ITERATION to collect information at the beginning of the REP "loop" while skipping it for the later iterations can be a significant optimization.

+A tool which demonstrates all of these techniques can be found in source/tools/ManualExamples/countreps.cpp, from which these (slightly edited) code snippets were taken.

+========================================================================================

+Memory management

+========================================================================================

+

+Pin allows the Pintool to dynamically allocate memory (e.g. using malloc()) without interfering with the execution of the application that is run under Pin. In order to achieve this, Pin implements its own memory allocator which is separate from the application's memory allocator, and allocates memory in different memory regions.

+Pin's dynamic memory allocation regions

+By default, the memory address region used by Pin to dynamically allocate memory for both Pin usage and Pintool usage is unrestricted. However, if Pin memory allocation should be restricted to specific memory regions, the -pin_memory-range knob can be used in Pin's command line to make Pin allocate memory only inside the specified regions. Note that restricting Pin memory allocation to specific regions doesn't mean that it will allocate/reserve the entire memory available those regions!

+the maximum memory that Pin can allocate

+Pin can be forced to limit the amount of memory it can allocate (in bytes) by using the -pin_memory_size knob in Pin's command line. When a Pintool cannot allocate more memory due to -pin_memory_size limitation, its out of memory callback is called (see PIN_AddOutOfMemoryFunction()). By default, the number of bytes that Pin can allocate is unlimited. We recommend that if a memory limitation is specified, it will be at least 30MB.

+mode

+In JIT mode, Pin needs to manage memory for the code cache in addition to the dynamically allocated memory. This means that the memory regions specified by -pin_memory-range restricts both the dynamically allocated memory and the code cache blocks allocated by Pin.

+In order to limit the code cache memory allocation, one can specify the -cc_memory_size knob in Pin's command line. Note that the specified limit must be a multiple of the code cache block size (specified with -cache_block_size).

+Pin

+Another component that requires memory while running Pin on an application is the images of Pin, tool, and their shared libraries (aka dynamic link libraries).

+In order to restrict the memory that Pin image loader will use when placing the images mentioned above, one can use the -restrict_memory knob in Pin's command line. This will specify memory regions that the Pin loader should not use. Note that the logic of the -restrict_memory knob is reversed from all the other memory range knobs for Pin - as it specifies which memory regions the Pin loader should *NOT* use.

+========================================================================================

+Pintool Information and Restrictions

+========================================================================================

+PinCRT

+Pin is built and distributed with its own OS-agnostic, compiler-agnostic runtime, named PinCRT. PinCRT exposes three layers of generic APIs which practically eliminate Pin's and the tools' dependency on the host system:
    +
  • A generic operating system interface, supplying basic OS services such as process control, thread control etc.
  • A C-runtime layer supplying a standard C implementation. This is complemented by compiler-runtime functions necessary for enabling gcc, msvc, clang and icc.
  • A C++ runtime. Please note that the current version does not support C++11 and RTTI (Run-Time Type Information).
+

+Tools are obliged to use (link with) PinCRT instead of any system runtime. Tools must refrain from using any native system calls, and use PinCRT APIs for any needed functionality. Note that PinCRT APIs may differ from the native system APIs. For additional information see the OS APIs user guide in extras/crt/docs/html and the PinCRT documentation at https://software.intel.com/sites/default/files/managed/8e/f5/PinCRT.pdf

+General

+Tools are restricted from linking with any system libraries and/or calling any system calls. See PinCRT for more information.

+There are several things that a Pintool writer must be aware of.

    +
  • IARG_REG_VALUE cannot be used to pass floating point register values to an analysis routine.
  • Also, see the OS-specific restrictions below. Windows OS or Linux OS
+

+Often, a Pintool writer wants to run the SPEC benchmarks to see the results of their research. There are many ways one can update the scripts to invoke Pin on the SPEC tests; this is one. In your $SPEC/config file, add the following two lines:

+

   submit=$PIN_HOME/intel64/bin/pin -t /my/pin/tool -- $command
+   use_submit_for_speed=yes
+

+Now the SPEC harness will automatically run Pin with whatever benchmarks it runs. Note that you need the full path name for Pin and Pintool binaries. Replace "intel64" with "ia32" if you are using a 32-bit system.

+Linux OS

+Pin identifies system calls at the actual system call trap instruction, not the libc function call wrapper. Tools need to be aware of oddities like this when interpreting system call arguments, etc.

+Windows OS

+Tool are restricted from calling any win32 APIs. All system interaction should go through PinCRT.

+Pin on Windows separates DLLs loaded by the tool from the application DLLs - it makes separate copies of any DLL loaded by Pin and Pintool using the PinCRT loader. Separate copies of system DLLs are not supported by the OS. In order to avoid isolation problems, Pintool should not dynamically load any system DLL. For the same reason, Pintool should avoid static links to any system DLL.

+In probe mode, the application runs natively, and the probe is placed in the original code. If a tool replaces a function shared by the tool and the application, an undesirable behavior may occur. For example, if a tool replaces EnterCriticalSection() with an analysis routine that calls printf(), this could result in an infinite loop, because printf() can also call EnterCriticalSection(). The application would call EnterCriticalSection(), and the control flow would go to the replacement routine, and it would call EnterCriticalSection() (via printf) which would call the replacement routine, and so on.

+Conflicts between Pin and Windows

+Pin uses some base types that conflict with Windows types. If you use "windows.h", you may see compilation errors. To avoid this problem, we recommend wrapping the windows.h file as follows. Items that reside in the windows.h file must be referenced using the WINDOWS:: prefix.

+

namespace WINDOWS
+{
+#include <windows.h>
+}
+

+========================================================================================

+Building Tools on windows

+========================================================================================

+Building Tools in Visual Studio

+An example VS project that builds Pintool in the Visual Studio IDE can be found in the directory. Enter this directory and open the project or solution file. To build the tool, select "Build Solution".

+To run an application, instrumented by MyPinTool, select Tool->External Tools. In the "Menu contents" window choose "run pin". Add to the "Arguments" box the path of the required application that you want to run with Pin. For example: -t MyPinTool.dll -count 1 -- "C:\Users\..\my_app.exe" and select "OK". A Popup window may appear on the screen with the following message: "The command is not a valid executable. Would you like to change the command?" select "No". To start running your application select Tool->pin run.

+You can select another application and change tool's switches in the "MyPinTool Properties->Debugging" page.

+You can use MyPinTool as a template for your own project. Please, look carefully at the compilation and linking switches in the MyPinTool property pages. Mandatory switches can be found in the win.vars file in the kit's source/tools/Config directory. Also note the library order, as this is important, too. See Pin's makefile Infrastructure for further details.

+Constructing PinTools from multiple DLLs on Windows

+A Pintool can be composed from multiple DLLs:
    +
  • "main DLL", which is specified in the Pin command line after "-t" switch
  • a number of "secondary DLLs", linked to the "main DLL" statically.
+

+When considering this configuration, take into account that multi-DLL Pin tool may increase memory fragmentation and cause layout conflicts with application images. If there is no compelling reasons for using multiple DLLs, build your tool as a single DLL to reduce the risk of memory conflicts.

+Limitations and instructions:

    +
  • Don't use any Pin API in "secondary DLLs". Only "main DLL" can use Pin API!
  • In order to run Pintool put "main DLL" and its "secondary DLLs" in the same directory.
  • IMPORTANT: Build each DLL with the recommended Pintool building flags (see Building Tools in Visual Studio).
  • Remove /EXPORT:main link flag for "secondary DLLs".
  • Specify different base address for each DLL (/BASE link flag). When choosing base addresses, try to minimize memory fragmentation and layout conflicts.
+

+Supported executables

+Pin can instrument Windows* subsystem executables.
+ It can't instrument other executables (such as MS-DOS, Win16 or a POSIX subsystem executables).

+========================================================================================

+Libraries for Windows

+========================================================================================

+Pin on Windows uses dbghelp.dll by Microsoft* to provide symbolic information. dbghelp.dll version 6.11.1.404 is distributed with the kit. Please use the provided version, as other versions may not work properly with Pin.

+========================================================================================

+Libraries for Linux

+========================================================================================

+The "pin" Executable (Launcher)

+The kit's root directory contains a "pin" executable. This is a 32-bit launcher, used for launching Pin in 32 and 64 bit modes. The launcher sets up the environment to find the libraries supplied with the kit. The kit's runtime directories will be searched first, followed by directories that are on the LD_LIBRARY_PATH. The launcher will then invoke the actual Pin executable - "pinbin".

+If you need to change the directory structure or copy pin to a different directory, then you should note the following. The "pin" launcher expects the binary "pinbin" to be in the architecture-specific "bin" subdirectory (e.g. ia32/bin). The launcher expects the libraries to be found in the architecture-specific "runtime" and subdirectory (i.e. ia32/runtime). If you need a different directory structure, you need to build your own launcher or find a different way to set up the environment to allow the pinbin executable to find the necessary runtime libraries. The pinbin binary itself makes no assumptions about the directory structure. The launcher's sources may be found in <kit root>="">/source/launcher.

+========================================================================================

+Installing Pin

+========================================================================================

+To install a kit, unpack a kit and change to the directory.

+Linux / OS X*:

$ tar zxf pin-3.2-81205-gcc-linux.tar.gz
+$ cd pin-3.2-81205-gcc-linux
+
Use the OS X* kit names respectively.

+Windows: Unzip the installation files, extracting all files in the kit.

$ cd  pin-3.2-81205-msvc-windows
+

+========================================================================================

+Building Your Own Tool

+========================================================================================

+Table of Contents

+

+To write your own tool, copy one of the example directories and edit the makefile.rules file to add your tool. The sample tool MyPinTool is recommended. This tool allows you to build either inside or outside the kit directory tree. See Adding Tests, Tools and Applications to the makefile and Defining Build Rules for Tools and Applications for further details on makefile modification.

+Building a Tool From Within the Kit Directory Tree

+You may either modify MyPinTool or copy it as directed above. If you're using MyPinTool, and the default build rule suffices, you may not have to change makefile.rules. If you are adding a new tool, or you require special build flags for your tool, you will need to modify the makefile.rules file to add your tool and/or specify a customized build rule.

+Building YourTool.so (from YourTool.cpp):

make obj-intel64/YourTool.so
+
For the IA-32 architecture, use "obj-ia32" instead of "obj-intel64". See for commonly used make flags to add to your build.

+Building a Tool Out of the Kit Directory Tree

+Copy the MyPinTool directory to a place of your choosing. This directory will serve as a basis for your tool. Modify the makefile.rules file to add your tool and/or specify a customized build rule.

+Building YourTool.so (from YourTool.cpp):

make PIN_ROOT=<path to Pin kit> obj-intel64/YourTool.so
+
For the IA-32 architecture, use "obj-ia32" instead of "obj-intel64". See for commonly used make flags to add to your build.

+For changing the directory where the tool will be created, override the OBJDIR variable from the command line:

make PIN_ROOT=<path to Pin kit> OBJDIR=<path to output dir> <path to output dir>/YourTool.so
+

+========================================================================================

+Pin's makefile Infrastructure

+========================================================================================

+Table of Contents

+

+Using Pin's makefile Infrastructure

+Pintools are built using make on all target platforms. This section describes the basic flags available in Pin's makefile infrastructure. This is not a makefile tutorial. For general information about makefiles, refer to the makefile manual available at http://www.gnu.org/software/make/manual/make.html.

+The Config Directory

+The source/tools/Config directory holds the common make configuration files which should not be changed and template files which may serve as a basis for your own makefiles. This sections gives a short overview of the most notable files in the directory. The experienced user is welcome to read through the complete set of configuration files for better understanding the tools' build process.

+makefile.config: This is the first file to be included in the make include chain. It holds documentation of all the relevant flags and variables available to users, both within the makefile and from the command shell. Also, this file includes the OS-specific configuration files.

+makefile.unix.config: This file holds the Unix definitions of the makefile variables. See makefile.win.config for the Windows definitions.

+unix.vars: This file holds the Unix definitions of some architectural variables and utilities used by the makefiles. See win.vars for the Windows definitions.

+makefile.default.rules: This file holds the default make targets, test recipes and build rules.

+The Test Directories

+Each test directory in source/tools/ contains two files in the makefile chain.

+makefile: This is the makefile which will be invoked when running make. This file should not be changed. It holds the include directives for all the relevant configuration files of the makefile chain in the correct order. Changing this order may result in unexpected behavior. This is a generic file, it is identical in all test directories.

+makefile.rules: This is the directory-specific makefile. It holds the logic of the current directory. All tools, applications and tests that should be built and run in a directory are defined in this file. See Adding Tests, Tools and Applications to the makefile for adding tests, tools and applications to makefile.rules.

+Adding Tests, Tools and Applications to the makefile

+This section describes how to define your applications, tools and tests in the makefile. The sections below describe how to build the binaries and how to run the tests.

+The variables detailed below, hold the tests, applications and tools definitions. They are defined in the "Test targets" section of makefile.rules. See this section for additional variables and more detailed documentation for each variable.

+TOOL_ROOTS: Define the name of your tool here, without the file extension. The correct extension, according to the OS, will be added automatically by make. For example, for adding YourTool.so:

TOOL_ROOTS := YourTool
+

+APP_ROOTS: Define your application here, without the file extension. The correct extension according to the OS, will be added automatically by make. For example, for adding YourApp.exe:

APP_ROOTS := YourApp
+

+TEST_ROOTS: Define your tests here without the .test suffix. This suffix will be added automatically by make. For example, for adding YourTest.test:

TEST_ROOTS := YourTest
+

+Defining Build Rules for Tools and Applications

+Default build rules for tools and applications are defined in source/tools/Config/makefile.default.rules. The default tool requires a single c/cpp source file and will generate a tool of the same name. For example, for YourTool.cpp make will generate YourTool.so with the default build rule. However, if your tool requires more than one source file, or you need a customized build rule, add your rule at the bottom of makefile.rules in the "Build rules" section". There is no need to add the $(OBJDIR) dependency to the build rule, it will be added automatically. This dependency creates the build output directory obj-intel64 (or obj-ia32 for the IA-32 architecture). See source/tools/Config/makefile.config for all available compilation and link flags.

+Here are a few useful examples:

+Building an unoptimized tool from a single source:

# Build the intermediate object file.
+$(OBJDIR)YourTool$(OBJ_SUFFIX): YourTool.cpp
+    $(CXX) $(TOOL_CXXFLAGS_NOOPT) $(COMP_OBJ)$@ $<
+
+# Build the tool as a dll (shared object).
+$(OBJDIR)YourTool$(PINTOOL_SUFFIX): $(OBJDIR)YourTool$(OBJ_SUFFIX)
+    $(LINKER) $(TOOL_LDFLAGS_NOOPT) $(LINK_EXE)$@ $< $(TOOL_LPATHS) $(TOOL_LIBS)
+

+Building an optimized tool from several source files:

# Build the intermediate object file.
+$(OBJDIR)Source1$(OBJ_SUFFIX): Source1.cpp
+    $(CXX) $(TOOL_CXXFLAGS) $(COMP_OBJ)$@ $<
+
+# Build the intermediate object file.
+$(OBJDIR)Source2$(OBJ_SUFFIX): Source2.c Source2.h
+    $(CC) $(TOOL_CXXFLAGS) $(COMP_OBJ)$@ $<
+
+# Build the tool as a dll (shared object).
+$(OBJDIR)YourTool$(PINTOOL_SUFFIX): $(OBJDIR)Source1$(OBJ_SUFFIX) $(OBJDIR)Source2$(OBJ_SUFFIX) Source2.h
+    $(LINKER) $(TOOL_LDFLAGS_NOOPT) $(LINK_EXE)$@ $(^:%.h=) $(TOOL_LPATHS) $(TOOL_LIBS)
+

+Defining Test Recipes in makefile.rules

+A default test recipe is defined in source/tools/Config/makefile.default.rules. For most users, this recipe is insufficient. You may specify your own test recipes in makefile.rules in the "Test recipes" section. There is no need to add the $(OBJDIR) dependency to the build rule, it will be added automatically. This dependency creates the build output directory obj-intel64 (or obj-ia32 for the IA-32 architecture).

+Example:

YourTest.test: $(OBJDIR)YourTool$(PINTOOL_SUFFIX) $(OBJDIR)YourApp$(EXE_SUFFIX)
+    $(PIN) -t $< -- $(OBJDIR)YourApp$(EXE_SUFFIX)
+

+Useful make Variables and Flags

+For a complete list of all the available variables and flags, see source/tools/Config/makefile.config . Here is a short list of the most useful flags:
+PIN_ROOT: Specify the location for the Pin kit when building a tool outside of the kit.
+CC: Override the default c compiler for tools.
+CXX: Override the default c++ compiler for tools
+APP_CC: Override the default c compiler for applications. If not defined, APP_CC will be the same as CC.
+APP_CXX: Override the default c++ compiler for applications. If not defined, APP_CXX will be the same as CXX.
+TARGET: Override the default target architecture e.g. for cross-compilation.
+ICC: Specify ICC=1 when building tools with the Intel Compiler.
+DEBUG: When DEBUG=1 is specified, debug information will be generated when building tools and applications. Also, no compilation and/or link optimizations will be performed.

+========================================================================================

+Questions? Bugs?

+========================================================================================

+Send bugs and questions to pinheads@yahoogroups.com. Complete bug reports that are easy to reproduce are fixed faster, so try to provide as much information as possible. Include: kit number, your OS version, compiler version. Try to reproduce the problem in a simple example that you can send us.

+========================================================================================

+Disclaimer and Legal Information

+========================================================================================

+The information in this manual is subject to change without notice and Intel Corporation assumes no responsibility or liability for any errors or inaccuracies that may appear in this document or any software that may be provided in association with this document. This document and the software described in it are furnished under license and may only be used or copied in accordance with the terms of the license. No license, express or implied, by estoppel or otherwise, to any intellectual property rights is granted by this document. The information in this document is provided in connection with Intel products and should not be construed as a commitment by Intel Corporation.

+EXCEPT AS PROVIDED IN INTEL'S TERMS AND CONDITIONS OF SALE FOR SUCH PRODUCTS, INTEL ASSUMES NO LIABILITY WHATSOEVER, AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO SALE AND/OR USE OF INTEL PRODUCTS INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT. Intel products are not intended for use in medical, life saving, life sustaining, critical control or safety systems, or in nuclear facility applications.

+Designers must not rely on the absence or characteristics of any features or instructions marked "reserved" or "undefined." Intel reserves these for future definition and shall have no responsibility whatsoever for conflicts or incompatibilities arising from future changes to them.

+The software described in this document may contain software defects which may cause the product to deviate from published specifications. Current characterized software defects are available on request.

+Copyright (c) 2004-2017, Intel Corporation. All rights reserved.

+Intel, Xeon, and Intel Xeon Phi are trademarks of Intel Corporation in the U.S. and/or other countries.

+Microsoft, Windows, and the Windows logo are trademarks, or registered trademarks of Microsoft Corporation in the United States and/or other countries.

+Java is a registered trademark of Oracle and/or its affiliates.

+Other names and brands may be claimed as the property of others.

+Copyright Intel Corporation. All rights reserved. Intel Corporation, 2200 Mission College Blvd., Santa Clara, CA 95052-8119, USA.

+========================================================================================


Generated on Sat Nov 4 23:35:51 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/installdox b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/installdox new file mode 100644 index 0000000..9b89fe0 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/installdox @@ -0,0 +1,117 @@ +#!/usr/bin/perl + +%subst = ( ); +$quiet = 0; + +if (open(F,"search.cfg")) +{ + $_= ; s/[ \t\n]*$//g ; $subst{"_doc"} = $_; + $_= ; s/[ \t\n]*$//g ; $subst{"_cgi"} = $_; +} + +while ( @ARGV ) { + $_ = shift @ARGV; + if ( s/^-// ) { + if ( /^l(.*)/ ) { + $v = ($1 eq "") ? shift @ARGV : $1; + ($v =~ /\/$/) || ($v .= "/"); + $_ = $v; + if ( /(.+)\@(.+)/ ) { + if ( exists $subst{$1} ) { + $subst{$1} = $2; + } else { + print STDERR "Unknown tag file $1 given with option -l\n"; + &usage(); + } + } else { + print STDERR "Argument $_ is invalid for option -l\n"; + &usage(); + } + } + elsif ( /^q/ ) { + $quiet = 1; + } + elsif ( /^\?|^h/ ) { + &usage(); + } + else { + print STDERR "Illegal option -$_\n"; + &usage(); + } + } + else { + push (@files, $_ ); + } +} + +foreach $sub (keys %subst) +{ + if ( $subst{$sub} eq "" ) + { + print STDERR "No substitute given for tag file `$sub'\n"; + &usage(); + } + elsif ( ! $quiet && $sub ne "_doc" && $sub ne "_cgi" ) + { + print "Substituting $subst{$sub} for each occurence of tag file $sub\n"; + } +} + +if ( ! @files ) { + if (opendir(D,".")) { + foreach $file ( readdir(D) ) { + $match = ".html"; + next if ( $file =~ /^\.\.?$/ ); + ($file =~ /$match/) && (push @files, $file); + ($file =~ "tree.js") && (push @files, $file); + } + closedir(D); + } +} + +if ( ! @files ) { + print STDERR "Warning: No input files given and none found!\n"; +} + +foreach $f (@files) +{ + if ( ! $quiet ) { + print "Editing: $f...\n"; + } + $oldf = $f; + $f .= ".bak"; + unless (rename $oldf,$f) { + print STDERR "Error: cannot rename file $oldf\n"; + exit 1; + } + if (open(F,"<$f")) { + unless (open(G,">$oldf")) { + print STDERR "Error: opening file $oldf for writing\n"; + exit 1; + } + if ($oldf ne "tree.js") { + while () { + s/doxygen\=\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\" (href|src)=\"\2/doxygen\=\"$1:$subst{$1}\" \3=\"$subst{$1}/g; + print G "$_"; + } + } + else { + while () { + s/\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\", \"\2/\"$1:$subst{$1}\" ,\"$subst{$1}/g; + print G "$_"; + } + } + } + else { + print STDERR "Warning file $f does not exist\n"; + } + unlink $f; +} + +sub usage { + print STDERR "Usage: installdox [options] [html-file [html-file ...]]\n"; + print STDERR "Options:\n"; + print STDERR " -l tagfile\@linkName tag file + URL or directory \n"; + print STDERR " -q Quiet mode\n\n"; + exit 1; +} diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/modules.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/modules.html new file mode 100644 index 0000000..a856c5b --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/modules.html @@ -0,0 +1,103 @@ + + +Pin: Module Index + + + + +
+
+

Pin Modules

Here is a list of all modules: +
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespaceLEVEL__BASE.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespaceLEVEL__BASE.html new file mode 100644 index 0000000..f6875a7 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespaceLEVEL__BASE.html @@ -0,0 +1,10543 @@ + + +Pin: LEVEL_BASE Namespace Reference + + + + +
+
+ +

LEVEL_BASE Namespace Reference

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Classes

struct  ImageLoaderInfo
struct  LINUX_LOADER_IMAGE_INFO

Typedefs

typedef PINVM::PINSYNC_POD_LOCK PIN_MUTEX
typedef PINVM::PINSYNC_POD_RWLOCK PIN_RWMUTEX
typedef PINVM::PINSYNC_POD_SEMAPHORE PIN_SEMAPHORE
typedef BOOL(* MESSAGE_CALLBACK )(const string &message, PIN_ERRTYPE type, INT32 userType, INT32 severity, INT32 numArgs, va_list ap)
typedef STAT_INTEGRAL< UINT32 > STAT_UINT32
typedef STAT_INTEGRAL< SIZE > STAT_SIZE
typedef STAT_INTEGRAL< UINT64 > STAT_UINT64
typedef STAT_INTEGRAL< INT64 > STAT_INT64
typedef STAT_SINGLE< FLT32 > STAT_FLT32
typedef STAT_SINGLE< FLT64 > STAT_FLT64
typedef STAT_FLT64 STAT1
typedef INT32 TLS_KEY
+typedef UINT8 REGTYPE
typedef UINT64 REG_CLASS_BITS
+typedef VOID(* AFUNPTR )()
+typedef VOID *(* THREAD_STARTROUTINE )(void *)
+typedef VOID(* DESTRUCTFUN )(void *)
+typedef UINT16 OPCODE
typedef PREDICATE_IA32 PREDICATE

Enumerations

enum  KNOB_MODE {
+  KNOB_MODE_INVALID, +
+  KNOB_MODE_COMMENT, +
+  KNOB_MODE_WRITEONCE, +
+  KNOB_MODE_OVERWRITE, +
+  KNOB_MODE_ACCUMULATE, +
+  KNOB_MODE_APPEND, +
+  KNOB_MODE_LAST +
+ }
enum  LOGTYPE {
+  LOGTYPE_CONSOLE, +
+  LOGTYPE_LOGFILE, +
+  LOGTYPE_CONSOLE_AND_LOGFILE +
+ }
enum  PIN_LOAD_STATUS {
+  PIN_LOAD_STATUS_INVALID, +
+  PIN_LOAD_STATUS_INJECTOR, +
+  PIN_LOAD_STATUS_ATTACHED, +
+  PIN_LOAD_STATUS_CLEAR, +
+  PIN_LOAD_STATUS_CHILD_RUNS_APP, +
+  PIN_LOAD_STATUS_PARENT_RUNS_APP, +
+  PIN_LOAD_STATUS_SELF_RUNS_APP, +
+  PIN_LOAD_STATUS_DETACHED_LITE, +
+  PIN_LOAD_STATUS_DETACHED_FULL +
+ }
enum  REGALLOC_HINT_TYPE {
+  REGALLOC_HINT_INVALID, +
+  REGALLOC_HINT_FREEBEFORE, +
+  REGALLOC_HINT_FREEAFTER, +
+  REGALLOC_HINT_REG_IN_PREG_AFTER, +
+  REGALLOC_HINT_REG_IN_MEM_AFTER +
+ }
enum  STAT_TYPE {
+  STAT_TYPE_INVALID, +
+  STAT_TYPE_SINGLE, +
+  STAT_TYPE_SD, +
+  STAT_TYPE_BA, +
+  STAT_TYPE_NORM, +
+  STAT_TYPE_DIST +
+ }
enum  PREDICATE_IA32 {
+  PREDICATE_ALWAYS_TRUE, +
+  PREDICATE_INVALID, +
+  PREDICATE_BELOW, +
+  PREDICATE_BELOW_OR_EQUAL, +
+  PREDICATE_LESS, +
+  PREDICATE_LESS_OR_EQUAL, +
+  PREDICATE_NOT_BELOW, +
+  PREDICATE_NOT_BELOW_OR_EQUAL, +
+  PREDICATE_NOT_LESS, +
+  PREDICATE_NOT_LESS_OR_EQUAL, +
+  PREDICATE_NOT_OVERFLOW, +
+  PREDICATE_NOT_PARITY, +
+  PREDICATE_NOT_SIGN, +
+  PREDICATE_NOT_ZERO, +
+  PREDICATE_OVERFLOW, +
+  PREDICATE_PARITY, +
+  PREDICATE_SIGN, +
+  PREDICATE_ZERO, +
+  PREDICATE_CX_NON_ZERO, +
+  PREDICATE_ECX_NON_ZERO, +
+  PREDICATE_RCX_NON_ZERO, +
+  PREDICATE_SAVED_GCX_NON_ZERO, +
+  PREDICATE_LAST +
+ }
enum  CPU_FEATURE {
+  CPU_FEATURE_FIRST = 0, +
+  CPU_FEATURE_SSE = CPU_FEATURE_FIRST, +
+  CPU_FEATURE_SSE2, +
+  CPU_FEATURE_SSE3, +
+  CPU_FEATURE_EST, +
+  CPU_FEATURE_PBE, +
+  CPU_FEATURE_FXSR, +
+  CPU_FEATURE_CX8, +
+  CPU_FEATURE_CMOV, +
+  CPU_FEATURE_LAHF_SAHF, +
+  CPU_FEATURE_AVX, +
+  CPU_FEATURE_AVX2, +
+  CPU_FEATURE_AVX512F, +
+  CPU_FEATURE_AVX512BW, +
+  CPU_FEATURE_LAST = CPU_FEATURE_AVX512BW +
+ }
enum  CPU_XFEATURE {
+  CPU_XFEATURE_X87 = 0, +
+  CPU_XFEATURE_SSE = 1, +
+  CPU_XFEATURE_AVX = 2, +
+  CPU_XFEATURE_FIRST = CPU_XFEATURE_AVX, +
+  CPU_XFEATURE_BNDREGS = 3, +
+  CPU_XFEATURE_BNDCSR = 4, +
+  CPU_XFEATURE_OPMASK = 5, +
+  CPU_XFEATURE_ZMM_HI256 = 6, +
+  CPU_XFEATURE_HI16_ZMM = 7, +
+  CPU_XFEATURE_LAST = CPU_XFEATURE_ZMM_HI256 +
+ }
enum  CPU_XFEATURE_BIT {
+  CPU_XFEATURE_BIT_X87 = (1 << CPU_XFEATURE_X87), +
+  CPU_XFEATURE_BIT_SSE = (1 << CPU_XFEATURE_SSE), +
+  CPU_XFEATURE_BIT_AVX = (1 << CPU_XFEATURE_AVX), +
+  CPU_XFEATURE_BIT_BNDREGS = (1 << CPU_XFEATURE_BNDREGS), +
+  CPU_XFEATURE_BIT_BNDCSR = (1 << CPU_XFEATURE_BNDCSR), +
+  CPU_XFEATURE_BIT_OPMASK = (1 << CPU_XFEATURE_OPMASK), +
+  CPU_XFEATURE_BIT_ZMM_HI256 = (1 << CPU_XFEATURE_ZMM_HI256), +
+  CPU_XFEATURE_BIT_HI16_ZMM = (1 << CPU_XFEATURE_HI16_ZMM), +
+  CPU_XFEATURE_BIT_AVX512F, +
+  CPU_XFEATURE_BIT_LEGACY = CPU_XFEATURE_BIT_X87 | CPU_XFEATURE_BIT_SSE, +
+  CPU_XFEATURE_BIT_ALL +
+ }
enum  VECTOR_REGISTER_SET {
+  VECTOR_REGISTER_SET_NONE, +
+  VECTOR_REGISTER_SET_AVX, +
+  VECTOR_REGISTER_SET_AVX512 +
+ }
enum  REG {
+  REG_INVALID_ = 0, +
+  REG_GR_BASE = REG_RBASE, +
+  REG_EDI = REG_GR_BASE, +
+  REG_GDI = REG_EDI, +
+  REG_ESI, +
+  REG_GSI = REG_ESI, +
+  REG_EBP, +
+  REG_GBP = REG_EBP, +
+  REG_ESP, +
+  REG_STACK_PTR = REG_ESP, +
+  REG_EBX, +
+  REG_GBX = REG_EBX, +
+  REG_EDX, +
+  REG_GDX = REG_EDX, +
+  REG_ECX, +
+  REG_GCX = REG_ECX, +
+  REG_EAX, +
+  REG_GAX = REG_EAX, +
+  REG_GR_LAST = REG_EAX, +
+  REG_SEG_BASE, +
+  REG_SEG_CS = REG_SEG_BASE, +
+  REG_SEG_SS, +
+  REG_SEG_DS, +
+  REG_SEG_ES, +
+  REG_SEG_FS, +
+  REG_SEG_GS, +
+  REG_SEG_LAST = REG_SEG_GS, +
+  REG_EFLAGS, +
+  REG_GFLAGS = REG_EFLAGS, +
+  REG_EIP, +
+  REG_INST_PTR = REG_EIP, +
+  REG_AL, +
+  REG_AH, +
+  REG_AX, +
+  REG_CL, +
+  REG_CH, +
+  REG_CX, +
+  REG_DL, +
+  REG_DH, +
+  REG_DX, +
+  REG_BL, +
+  REG_BH, +
+  REG_BX, +
+  REG_BP, +
+  REG_SI, +
+  REG_DI, +
+  REG_SP, +
+  REG_FLAGS, +
+  REG_IP, +
+  REG_MM_BASE, +
+  REG_MM0 = REG_MM_BASE, +
+  REG_MM1, +
+  REG_MM2, +
+  REG_MM3, +
+  REG_MM4, +
+  REG_MM5, +
+  REG_MM6, +
+  REG_MM7, +
+  REG_MM_LAST = REG_MM7, +
+  REG_XMM_BASE, +
+  REG_FIRST_FP_REG = REG_XMM_BASE, +
+  REG_XMM0 = REG_XMM_BASE, +
+  REG_XMM1, +
+  REG_XMM2, +
+  REG_XMM3, +
+  REG_XMM4, +
+  REG_XMM5, +
+  REG_XMM6, +
+  REG_XMM7, +
+  REG_XMM_SSE_LAST = REG_XMM7, +
+  REG_XMM_AVX_LAST = REG_XMM_SSE_LAST, +
+  REG_XMM_AVX512_LAST = REG_XMM_AVX_LAST, +
+  REG_XMM_LAST = REG_XMM_AVX512_LAST, +
+  REG_YMM_BASE, +
+  REG_YMM0 = REG_YMM_BASE, +
+  REG_YMM1, +
+  REG_YMM2, +
+  REG_YMM3, +
+  REG_YMM4, +
+  REG_YMM5, +
+  REG_YMM6, +
+  REG_YMM7, +
+  REG_YMM_AVX_LAST = REG_YMM7, +
+  REG_YMM_AVX512_LAST = REG_YMM_AVX_LAST, +
+  REG_YMM_LAST = REG_YMM_AVX512_LAST, +
+  REG_ZMM_BASE, +
+  REG_ZMM0 = REG_ZMM_BASE, +
+  REG_ZMM1, +
+  REG_ZMM2, +
+  REG_ZMM3, +
+  REG_ZMM4, +
+  REG_ZMM5, +
+  REG_ZMM6, +
+  REG_ZMM7, +
+  REG_ZMM_AVX512_SPLIT_LAST = REG_ZMM7, +
+  REG_ZMM_AVX512_LAST = REG_ZMM_AVX512_SPLIT_LAST, +
+  REG_ZMM_LAST = REG_ZMM_AVX512_LAST, +
+  REG_K_BASE, +
+  REG_K0 = REG_K_BASE, +
+  REG_IMPLICIT_FULL_MASK = REG_K0, +
+  REG_K1, +
+  REG_K2, +
+  REG_K3, +
+  REG_K4, +
+  REG_K5, +
+  REG_K6, +
+  REG_K7, +
+  REG_K_LAST = REG_K7, +
+  REG_MXCSR, +
+  REG_MXCSRMASK, +
+  REG_ORIG_EAX, +
+  REG_ORIG_GAX = REG_ORIG_EAX, +
+  REG_FPST_BASE, +
+  REG_FPSTATUS_BASE = REG_FPST_BASE, +
+  REG_FPCW = REG_FPSTATUS_BASE, +
+  REG_FPSW, +
+  REG_FPTAG, +
+  REG_FPIP_OFF, +
+  REG_FPIP_SEL, +
+  REG_FPOPCODE, +
+  REG_FPDP_OFF, +
+  REG_FPDP_SEL, +
+  REG_FPSTATUS_LAST = REG_FPDP_SEL, +
+  REG_FPTAG_FULL, +
+  REG_ST_BASE, +
+  REG_ST0 = REG_ST_BASE, +
+  REG_ST1, +
+  REG_ST2, +
+  REG_ST3, +
+  REG_ST4, +
+  REG_ST5, +
+  REG_ST6, +
+  REG_ST7, +
+  REG_ST_LAST = REG_ST7, +
+  REG_FPST_LAST = REG_ST_LAST, +
+  REG_DR_BASE, +
+  REG_DR0 = REG_DR_BASE, +
+  REG_DR1, +
+  REG_DR2, +
+  REG_DR3, +
+  REG_DR4, +
+  REG_DR5, +
+  REG_DR6, +
+  REG_DR7, +
+  REG_DR_LAST = REG_DR7, +
+  REG_CR_BASE, +
+  REG_CR0 = REG_CR_BASE, +
+  REG_CR1, +
+  REG_CR2, +
+  REG_CR3, +
+  REG_CR4, +
+  REG_CR_LAST = REG_CR4, +
+  REG_TSSR, +
+  REG_LDTR, +
+  REG_TR_BASE, +
+  REG_TR = REG_TR_BASE, +
+  REG_TR3, +
+  REG_TR4, +
+  REG_TR5, +
+  REG_TR6, +
+  REG_TR7, +
+  REG_TR_LAST = REG_TR7, +
+  REG_SEG_GS_BASE = REG_TOOL_BASE, +
+  REG_SEG_FS_BASE, +
+  REG_INST_BASE, +
+  REG_INST_SCRATCH_BASE = REG_INST_BASE, +
+  REG_INST_G0 = REG_INST_SCRATCH_BASE, +
+  REG_INST_G1, +
+  REG_INST_G2, +
+  REG_INST_G3, +
+  REG_INST_G4, +
+  REG_INST_G5, +
+  REG_INST_G6, +
+  REG_INST_G7, +
+  REG_INST_G8, +
+  REG_INST_G9, +
+  REG_INST_G10, +
+  REG_INST_G11, +
+  REG_INST_G12, +
+  REG_INST_G13, +
+  REG_INST_G14, +
+  REG_INST_G15, +
+  REG_INST_G16, +
+  REG_INST_G17, +
+  REG_INST_G18, +
+  REG_INST_G19, +
+  REG_INST_G20, +
+  REG_INST_G21, +
+  REG_INST_G22, +
+  REG_INST_G23, +
+  REG_INST_G24, +
+  REG_INST_G25, +
+  REG_INST_G26, +
+  REG_INST_G27, +
+  REG_INST_G28, +
+  REG_INST_G29, +
+  REG_INST_TOOL_FIRST = REG_INST_G0, +
+  REG_INST_TOOL_LAST = REG_INST_G29, +
+  REG_BUF_BASE0, +
+  REG_BUF_BASE1, +
+  REG_BUF_BASE2, +
+  REG_BUF_BASE3, +
+  REG_BUF_BASE4, +
+  REG_BUF_BASE5, +
+  REG_BUF_BASE6, +
+  REG_BUF_BASE7, +
+  REG_BUF_BASE8, +
+  REG_BUF_BASE9, +
+  REG_BUF_BASE_LAST = REG_BUF_BASE9, +
+  REG_BUF_END0, +
+  REG_BUF_END1, +
+  REG_BUF_END2, +
+  REG_BUF_END3, +
+  REG_BUF_END4, +
+  REG_BUF_END5, +
+  REG_BUF_END6, +
+  REG_BUF_END7, +
+  REG_BUF_END8, +
+  REG_BUF_END9, +
+  REG_BUF_ENDLAST = REG_BUF_END9, +
+  REG_BUF_LAST = REG_BUF_ENDLAST, +
+  REG_INST_SCRATCH_LAST = REG_BUF_LAST, +
+  REG_TOOL_LAST = REG_BUF_LAST, +
+  REG_LAST +
+ }
enum  REGNAME { REGNAME_LAST + }
enum  REGWIDTH {
+  REGWIDTH_8 = 0, +
+  REGWIDTH_16 = 1, +
+  REGWIDTH_32 = 2, +
+  REGWIDTH_64 = 3, +
+  REGWIDTH_80, +
+  REGWIDTH_128, +
+  REGWIDTH_256, +
+  REGWIDTH_512, +
+  REGWIDTH_INVALID, +
+  REGWIDTH_NATIVE = REGWIDTH_64 +
+ }
enum  REG_CLASS {
+  REG_CLASS_NONE = 0, +
+  REG_CLASS_PSEUDO, +
+  REG_CLASS_GR, +
+  REG_CLASS_GRU8, +
+  REG_CLASS_GRL8, +
+  REG_CLASS_GRH16, +
+  REG_CLASS_GRH32, +
+  REG_CLASS_SEG, +
+  REG_CLASS_MM, +
+  REG_CLASS_XMM, +
+  REG_CLASS_YMM, +
+  REG_CLASS_ZMM, +
+  REG_CLASS_K, +
+  REG_CLASS_FPST, +
+  REG_CLASS_ST, +
+  REG_CLASS_CR, +
+  REG_CLASS_DR, +
+  REG_CLASS_TR, +
+  REG_CLASS_FLAGS, +
+  REG_CLASS_FLAGS16, +
+  REG_CLASS_FLAGS32, +
+  REG_CLASS_STATUS_FLAGS, +
+  REG_CLASS_DFLAG, +
+  REG_CLASS_MXCSR, +
+  REG_CLASS_MXCSRMASK, +
+  REG_CLASS_IP, +
+  REG_CLASS_IP16, +
+  REG_CLASS_IP32, +
+  REG_CLASS_ARCH, +
+  REG_CLASS_PIN_GR, +
+  REG_CLASS_PIN_GRU8, +
+  REG_CLASS_PIN_GRL8, +
+  REG_CLASS_PIN_GRH16, +
+  REG_CLASS_PIN_GRH32, +
+  REG_CLASS_PIN_XMM, +
+  REG_CLASS_PIN_YMM, +
+  REG_CLASS_PIN_ZMM, +
+  REG_CLASS_PIN_K, +
+  REG_CLASS_PIN_MXCSR, +
+  REG_CLASS_PIN_FLAGS, +
+  REG_CLASS_PIN_STATUS_FLAGS, +
+  REG_CLASS_PIN_DFLAG +
+ }
enum  REG_SUBCLASS {
+  REG_SUBCLASS_NONE = 0, +
+  REG_SUBCLASS_REX, +
+  REG_SUBCLASS_FULL_STACKPTR, +
+  REG_SUBCLASS_PIN_FULL_STACKPTR, +
+  REG_SUBCLASS_PIN_TMP, +
+  REG_SUBCLASS_PIN_INST_GR, +
+  REG_SUBCLASS_PIN_INST_GR_H32, +
+  REG_SUBCLASS_PIN_INST_BUF, +
+  REG_SUBCLASS_PIN_INST_COND +
+ }

Functions

+LOCALFUN INT32 MEGA (INT32 v)
+LOCALFUN INT32 KILO (INT32 v)
LOCALVAR STAT_NORM StatStripeBytes ("mem","bytes","stripe","",&StatRawMmapBytes)
+LOCALVAR STAT_UINT64 STAT_ArrayBaseAlloc ("pin","array_base","alloc","")
+LOCALVAR STAT_UINT64 STAT_ArrayBaseFree ("pin","array_base","free","")
STAT_UINT64 STAT_TotalAttempts_COMPLEXLOCK ("pin","complexlock","attempts","")
STAT_UINT64 STAT_TotalSpins_COMPLEXLOCK ("pin","complexlock","spins_total","")
STAT_UINT64 STAT_MaxSpins_COMPLEXLOCK ("pin","complexlock","spins_max","")
STAT_NORM STAT_WaitTime_COMPLEXLOCK ("pin","time","complexlock_wait","",&TimerApp)
ATOMIC_STATS STAT_Backoff_COMPLEXLOCK ("pin","complexlock")
+NATIVE_TID SlowGetTid ()
+LOCALCONST char * SeverityToString (int num)
+LOCALFUN string StripNewline (const string &cstr)
+LOCALFUN VOID XML_encode (const string &source, string &destination)
+LOCALFUN string LowerDash (const string &s)
+LOCALFUN int cmp (const void *x1, const void *x2)
+LOCALVAR KNOB_COMMENT KnobUserAndPintoolFamily ("user&pintool","General switches (available in pin and tool)")
+LOCALVAR KNOB_COMMENT KnobMemoryConstraintsFamily ("user:memory","Knobs for constraining memory usage")
KNOB< BOOL > KnobSlowAsserts (KNOB_MODE_WRITEONCE,"user&pintool","slow_asserts","0","Perform expensive sanity checks")
KNOB< BOOL > KnobIFeelLucky (KNOB_MODE_WRITEONCE,"user","ifeellucky","0","skip warning message for unsupported platforms and convert some errors to warnings")
KNOB< BOOL > KnobAllowMt (KNOB_MODE_WRITEONCE,"user","mt","1","Allow multithreaded programs")
KNOB< UINT32 > KnobAttachToProcessPid (KNOB_MODE_WRITEONCE,"user","pid","0","Attach to process with PID")
KNOB< BOOL > KnobDetachReattachActive (KNOB_MODE_WRITEONCE,"user","detach_reattach","0","Allow detach and reattach in probe mode")
KNOB< UINT32 > KnobWaitingProcess (KNOB_MODE_WRITEONCE,"internal","waiting_process","0","Attach to waiting process with PID")
KNOB< UINT32 > KnobWaitingInjector (KNOB_MODE_WRITEONCE,"internal","waiting_injector","0","PID of waiting injector process")
KNOB< UINT32 > KnobSigChildHandler (KNOB_MODE_WRITEONCE,"internal","sigchld_handler","0","PID of waiting injector process")
KNOB< string > KnobErrorFile (KNOB_MODE_WRITEONCE,"user","error_file","","The error file name")
KNOB< BOOL > KnobUniqueErrorFile (KNOB_MODE_WRITEONCE,"user","unique_error_file","0","The error file name will contain the pid")
KNOB< string > KnobLogFile (KNOB_MODE_WRITEONCE,"user","logfile","pin.log","The log file path and file name")
KNOB< BOOL > KnobUniqueLogFiles (KNOB_MODE_WRITEONCE,"user","unique_logfile","0","The log file names will contain the pid")
KNOB< BOOL > KnobAppendLogFile (KNOB_MODE_WRITEONCE,"supported","append_logfile","0","Append to the end of the log file if it already exists")
KNOB< string > P64Knob (KNOB_MODE_WRITEONCE,"user","p64","","Specify Pin binary for Intel(R) 64 architecture")
KNOB< string > P32Knob (KNOB_MODE_WRITEONCE,"user","p32","","Specify Pin binary for IA-32 architecture")
KNOB< string > T64Knob (KNOB_MODE_WRITEONCE,"user","t64","","Specify tool binary for Intel(R) 64 architecture")
KNOB< BOOL > KnobFollowChild (KNOB_MODE_WRITEONCE,"user","follow_execv","0","Execute with Pin all processes spawned by execv class system calls")
KNOB< BOOL > KnobLateInjection (KNOB_MODE_WRITEONCE,"supported","late_injection","0","Late injection (after initialization APC) on Windows")
KNOB< BOOL > KnobDebugInstrumentedProcesses (KNOB_MODE_WRITEONCE,"user","debug_instrumented_processes","0","Print message to allow debugger attach to instrumented processes")
KNOB< BOOL > KnobHelp (KNOB_MODE_WRITEONCE,"user","help","0","Print help message")
KNOB< BOOL > KnobVersion (KNOB_MODE_WRITEONCE,"user","version","0","Print version message")
VOID PIN_InitLock (PIN_LOCK *lock)
VOID PIN_GetLock (PIN_LOCK *lock, INT32 val)
INT32 PIN_ReleaseLock (PIN_LOCK *lock)
BOOL PIN_MutexInit (PIN_MUTEX *lock)
VOID PIN_MutexFini (PIN_MUTEX *lock)
VOID PIN_MutexLock (PIN_MUTEX *lock)
VOID PIN_MutexUnlock (PIN_MUTEX *lock)
BOOL PIN_MutexTryLock (PIN_MUTEX *lock)
BOOL PIN_RWMutexInit (PIN_RWMUTEX *lock)
VOID PIN_RWMutexFini (PIN_RWMUTEX *lock)
VOID PIN_RWMutexReadLock (PIN_RWMUTEX *lock)
VOID PIN_RWMutexWriteLock (PIN_RWMUTEX *lock)
VOID PIN_RWMutexUnlock (PIN_RWMUTEX *lock)
BOOL PIN_RWMutexTryReadLock (PIN_RWMUTEX *lock)
BOOL PIN_RWMutexTryWriteLock (PIN_RWMUTEX *lock)
BOOL PIN_SemaphoreInit (PIN_SEMAPHORE *sem)
VOID PIN_SemaphoreFini (PIN_SEMAPHORE *sem)
VOID PIN_SemaphoreSet (PIN_SEMAPHORE *sem)
VOID PIN_SemaphoreClear (PIN_SEMAPHORE *sem)
BOOL PIN_SemaphoreIsSet (PIN_SEMAPHORE *sem)
VOID PIN_SemaphoreWait (PIN_SEMAPHORE *sem)
BOOL PIN_SemaphoreTimedWait (PIN_SEMAPHORE *sem, unsigned timeout)
MESSAGE_TYPE MessageTypeNonFatalError ("non_fatal_error","NFE: ", false, false, true, false, LOGTYPE_CONSOLE_AND_LOGFILE,"errors")
MESSAGE_TYPE MessageTypeError ("error","E: ", true, false, true, false, LOGTYPE_CONSOLE_AND_LOGFILE,"errors")
MESSAGE_TYPE MessageTypeCriticalError ("critical_error","E: ", false, false, true, false, LOGTYPE_CONSOLE_AND_LOGFILE,"errors")
MESSAGE_TYPE MessageTypeWarning ("warning","W: ", false, false, true, false, LOGTYPE_LOGFILE,"warnings")
MESSAGE_TYPE MessageTypeConsole ("console","C: ", false, false, true, false, LOGTYPE_CONSOLE,"console")
MESSAGE_TYPE MessageTypeConsoleNoPrefix ("console_noprefix","", false, false, true, false, LOGTYPE_CONSOLE,"console")
MESSAGE_TYPE_ALWAYS_ON MessageTypeAssert ("assert","A: ", true, true, false, LOGTYPE_CONSOLE_AND_LOGFILE,"assert")
MESSAGE_TYPE MessageTypePhase ("phase","P: ", false, false, true, true, LOGTYPE_CONSOLE,"phase")
MESSAGE_TYPE MessageTypeKnown ("known","K: ", false, false, true, false, LOGTYPE_CONSOLE,"known problem")
MESSAGE_TYPE MessageTypeInfo ("info","I: ", false, false, true, false, LOGTYPE_CONSOLE,"info")
MESSAGE_TYPE MessageTypeDebug ("debug","D: ", false, false, false, false, LOGTYPE_CONSOLE,"generic debug")
MESSAGE_TYPE MessageTypeOpportunity ("opportunity","O: ", false, false, true, false, LOGTYPE_CONSOLE,"generic optimization opportunity")
MESSAGE_TYPE MessageTypeStats ("stats","S: ", false, false, true, false, LOGTYPE_CONSOLE,"statistic")
MESSAGE_TYPE MessageTypeLog ("log","", false, false, true, false, LOGTYPE_LOGFILE,"generic log")
const string Line1 (80,'#')
const string Line2 (80,'=')
const string Line3 (80,'-')
const string Line4 (80,'.')
UINT64 MilliSecondsElapsed ()
UINT64 KiloBytesUsed ()
string ResourceInfo ()
string AssertString (const char *fileName, const char *functionName, unsigned line, const std::string &message)
+LOCALVAR KNOB< UINT32 > PauseAbortKnob (KNOB_MODE_WRITEONCE,"supported:basic","pause_abort","0","Pause and print pid so gdb can attach before pin aborts")
+GLOBALCFUN VOID PrintPinStackTrace (ostream &os)
VOID BreakMe ()
UINT32 DivZero (UINT32 x)
VOID SegFault ()
LOCALFUN VOID SignalHandler (int arg)
VOID InstallSignalHandlers ()
BOOL SlowAssertsEnabled ()
KNOB< string > KnobMesgOn (KNOB_MODE_APPEND,"supported:message","mesgon","","enable given message type")
KNOB< string > KnobMesgOff (KNOB_MODE_APPEND,"supported:message","mesgoff","","disable given message type")
PIN_LOAD_STATUS PinStatusGetLoadStatus ()
VOID PinStatusSetLoadStatus (PIN_LOAD_STATUS ls)
PIN_LOAD_STATUS PinStatusGetInjectionType ()
string LoadStatusString (PIN_LOAD_STATUS load_status)
string PinStatusString (PIN_STATUS *ps)
KNOB< BOOL > KnobSeparatelyHandledXmm (KNOB_MODE_WRITEONCE,"supported","separately_handled_xmm","1","separtely handled xmm")
string REGALLOCHINT_String (const REGALLOC_HINT_TYPE hint)
+LOCALVAR KNOB_COMMENT KnobStatFamily ("supported:stat","Statistic switches")
KNOB< BOOL > KnobStatistics (KNOB_MODE_WRITEONCE,"supported:stat","statistic","0","print general statistics")
+LOCALFUN int cmp (const VOID *x1, const VOID *x2)
+LOCALFUN VOID TestStringForBadChars (const string &s)
STAT_NORM TimerApp ("pin","time","total","", 0)
+LOCALVAR STAT_NORM TimerOtherApp ("pin","time","cc+tool","",&TimerApp, TRUE)
STAT_NORM TimerVm ("pin","time","vm","",&TimerApp)
STAT_NORM STAT_vm_enter_count ("pin","time_vm","vmenter_count","", NULL)
STAT_NORM STAT_time_vm_enter_to_leave ("pin","time_vm","time_in_vm","",&STAT_vm_enter_count)
STAT_NORM STAT_time_vm_past_enter ("pin","time_vm","time_in_vm_past_enter","",&STAT_time_vm_enter_to_leave)
STAT_NORM STAT_time_vm_locked ("pin","time_vm","time_locked","",&STAT_time_vm_enter_to_leave)
STAT_NORM STAT_acquire_vm_lock_count ("pin","time_vm","get_lock_count","", NULL)
STAT_NORM STAT_time_wait_for_vm_lock ("pin","time_vm","time_wait_for_lock","",&STAT_acquire_vm_lock_count)
STAT_NORM STAT_time_vm_threads ("pin","time_vm","time_all_threads","",&STAT_time_vm_enter_to_leave)
STAT_NORM STAT_time_VMSVC_EMU ("pin","time_vm","VMSVC_EMU","",&STAT_time_vm_enter_to_leave)
STAT_NORM STAT_time_VMSVC_XFER ("pin","time_vm","VMSVC_XFER","",&STAT_time_vm_enter_to_leave)
STAT_NORM STAT_time_VMSVC_XFER_INDIRECT ("pin","time_vm","VMSVC_XFER_INDIRECT","",&STAT_time_vm_enter_to_leave)
STAT_NORM STAT_time_VMSVC_XFER_NATIVE ("pin","time_vm","VMSVC_XFER_NATIVE","",&STAT_time_vm_enter_to_leave)
STAT_NORM STAT_time_VMSVC_SMC ("pin","time_vm","VMSVC_SMC","",&STAT_time_vm_enter_to_leave)
STAT_NORM STAT_time_VMSVC_SELF_HANDLER ("pin","time_vm","VMSVC_SELF_HANDLER","",&STAT_time_vm_enter_to_leave)
STAT_NORM STAT_time_VMSVC_XFER_BRIDGE ("pin","time_vm","VMSVC_XFER_BRIDGE","",&STAT_time_vm_enter_to_leave)
STAT_NORM TimerCompile ("pin","time","Compile","",&TimerVm)
STAT_NORM TimerMakeRegion ("pin","time","MakeRegion","",&TimerCompile)
STAT_NORM TimerMakeApplication ("pin","time","MakeApplication","",&TimerMakeRegion)
STAT_NORM TimerFetchRegion ("pin","time","FetchRegion","",&TimerMakeApplication)
VOID StartApplicationTimer ()
VOID StopApplicationTimer ()
CHAR * GetCmdArg (const CHAR *cmdPtr, BOOL isFile, CHAR *buf, size_t bufSize, size_t *pArgSize, const CHAR **pNextPtr)
CHAR * GetAppCmdLine (const CHAR *pinCmdLine)
string SplitString (string *input, const string &delimiter=" ")
BOOL EndsWith (const CHAR *in, const CHAR *post)
BOOL StartsWith (const CHAR *in, const CHAR *pre)
VOID SetAddress0x (BOOL val)
BOOL CharIsSpace (CHAR c)
CHAR CharToUpper (CHAR c)
string ptrstr (const VOID *val)
string StringFromAddrint (ADDRINT l)
string StringFromUint64 (UINT64 l)
string StringDec (UINT64 l, UINT32 digits, CHAR padding)
string StringDecSigned (INT64 l, UINT32 digits, CHAR padding)
string StringBignum (INT64 l, UINT32 digits, CHAR padding)
string Reformat (const string &s, const string &prefix, UINT32 min_line, UINT32 max_line)
string StringHex32 (UINT32 l, UINT32 digits, BOOL prefix_0x)
+LOCALFUN VOID InsertCommas (CHAR *buffer, INT32 width)
string StringFlt (FLT64 val, UINT32 precision, UINT32 width)
string StringBool (BOOL b)
string StringTri (TRI t)
INT32 Int32FromString (const string &s)
UINT32 Uint32FromString (const string &s)
INT64 Int64FromString (const string &s)
UINT64 Uint64FromString (const string &s)
FLT64 FLT64FromString (const string &s)
INT CharToHexDigit (CHAR c)
ADDRINT AddrintFromString (const string &str)
UINT32 BitCount (ADDRINT val)
string ReadLine (istream &inputFile, UINT32 *lineNum)
UINT32 Tokenize (const string &line, string *array, UINT32 n)
string StringHex (UINT32 l, UINT32 digits, BOOL prefix_0x=TRUE)
string decstr (INT64 val, UINT32 width=0)
string decstr (INT32 val, UINT32 width=0)
string decstr (INT16 val, UINT32 width=0)
string decstr (UINT64 val, UINT32 width=0)
string decstr (UINT32 val, UINT32 width=0)
string decstr (UINT16 val, UINT32 width=0)
string hexstr (INT64 val, UINT32 width=0)
string hexstr (INT32 val, UINT32 width=0)
string hexstr (INT16 val, UINT32 width=0)
string hexstr (UINT64 val, UINT32 width=0)
string hexstr (VOID *p, UINT32 width=0)
string hexstr (const VOID *p, UINT32 width=0)
string hexstr (UINT32 val, UINT32 width=0)
string hexstr (UINT16 val, UINT32 width=0)
string fltstr (FLT64 val, UINT32 prec=0, UINT32 width=0)
string ljstr (const string &s, UINT32 width, CHAR padding= ' ')
template<typename ITER, typename CONV>
GLOBALTEMPLATEFUN string StringSequence (ITER begin, ITER end, const CONV &conv, const string &delimiter=string(" "))
VOID * Addrint2VoidStar (ADDRINT addr)
ADDRINT VoidStar2Addrint (const VOID *addr)
ADDRINT VoidStar2Addrint (VOID *addr)
template<typename T>
GLOBALTEMPLATEFUN BOOL IsPowerOf2 (T value)
template<typename T>
GLOBALTEMPLATEFUN T RoundToNextPower2 (T value)
template<typename T>
GLOBALTEMPLATEFUN T RoundUp (T value, size_t alignment)
template<typename T>
GLOBALTEMPLATEFUN T * RoundUp (T *ptr, size_t alignment)
template<typename T>
GLOBALTEMPLATEFUN T RoundUpPowerOf2 (T value, size_t alignment)
template<typename T>
GLOBALTEMPLATEFUN T * RoundUpPowerOf2 (T *ptr, size_t alignment)
template<typename T>
GLOBALTEMPLATEFUN T RoundDown (T value, size_t alignment)
template<typename T>
GLOBALTEMPLATEFUN T * RoundDown (T *ptr, size_t alignment)
template<typename T>
GLOBALTEMPLATEFUN T RoundDownPowerOf2 (T value, size_t alignment)
template<typename T>
GLOBALTEMPLATEFUN T * RoundDownPowerOf2 (T *ptr, size_t alignment)
template<typename T>
GLOBALTEMPLATEFUN ADDRINT PointerToInt (const T *ptr)
template<typename T>
GLOBALTEMPLATEFUN T * IntToPointer (ADDRINT addr)
INT64 VoidStar2Int (VOID *addr)
BOOL UnsignedImmediateFits (const UINT64 value, const UINT32 bits)
void RangeCheck (const UINT32 value, const UINT32 bits)
BOOL SignedImmediateFits (const INT64 value, const UINT32 origSize, const UINT32 extendedSize)
BOOL SignedImmediateFits (const INT64 value, const UINT32 origSize)
template<UINT32 size>
GLOBALTEMPLATEFUN UINT32 internalHashData (UINT32 prevHash, const CHAR *bytes)
template<>
GLOBALTEMPLATEFUN UINT32 internalHashData< 1 > (UINT32 prevHash, const CHAR *bytes)
template<>
GLOBALTEMPLATEFUN UINT32 internalHashData< 2 > (UINT32 prevHash, const CHAR *bytes)
template<>
GLOBALTEMPLATEFUN UINT32 internalHashData< 4 > (UINT32 prevHash, const CHAR *bytes)
template<>
GLOBALTEMPLATEFUN UINT32 internalHashData< 8 > (UINT32 prevHash, const CHAR *bytes)
template<typename T>
GLOBALTEMPLATEFUN UINT32 HashData (UINT32 oldHash, const T &data)
BOOL HasBaseName (const char *fileName, const char *baseNameToCheckFor)
+INT32 MEMORY_ReadInt32 (ADDRINT address)
+VOID MEMORY_WriteInt32 (ADDRINT address, INT32 value)
+UINT32 MEMORY_ReadUint32 (ADDRINT address)
+VOID MEMORY_WriteUint32 (ADDRINT address, UINT32 value)
+INT64 MEMORY_ReadInt64 (ADDRINT address)
+VOID MEMORY_WriteInt64 (ADDRINT address, INT64 value)
+UINT64 MEMORY_ReadUint64 (ADDRINT address)
+VOID MEMORY_WriteUint64 (ADDRINT address, UINT32 value)
ADDRINT GetPageOfAddr (ADDRINT addr)
ADDRINT ProgramEntry (const ImageLoaderInfo *mainImage, const ImageLoaderInfo *loader)
string Joinpath (string s1, string s2)
string Basename (const string &path)
CHAR * CreateTmpFileName (const CHAR *fnameTemplate)
const VOID * GetSp ()
size_t PtrDiff (const VOID *ptr1, const VOID *ptr2)
VOID * PtrAtOffset (VOID *ptr, size_t offset)
const VOID * PtrAtOffset (const VOID *ptr, size_t offset)
template<typename T>
GLOBALTEMPLATEFUN VOID * PushDataToStack (VOID *stack, const T *data, size_t alignment=1, size_t size=sizeof(T))
VOID * PushAddrintToStack (VOID *stack, ADDRINT value)
string MemRangeToString (const MemRange &range)
MemRange MemPageRange (ADDRINT addr)
MemRange MemPageRange (const VOID *addr)
STAT_NORM StatRawMmapBytes ("mem","bytes","RawMmap","",&StatReservedBytes)
STAT_NORM StatReservedBytes ("mem","bytes","Reserved","", 0)
LOCALVAR STAT_NORM StatOtherBytes ("mem","bytes","other","",&StatRawMmapBytes, TRUE)
VOID UpdateRawMmapBytes ()
VOID PullinPinMalloc ()
const CHAR * GetEnvFromArray (const CHAR *envArray[], const CHAR *name)
const string & ReleaseFamily ()
const char * PinCommitHash ()
GLOBALDLLCFUN const char * PinCommitHashC ()
const string & CommitCounter ()
LOCALFUN const string & CopyRight ()
const string & PrintablePinVersion ()
VOID * FunctionCodeAddress (void(*fp)())
+LOCALVAR KNOB< BOOL > KnobAllowAvxSupport (KNOB_MODE_WRITEONCE,"supported","allow_AVX_support","1","allow AVX support")
+LOCALVAR KNOB< BOOL > KnobAllowAvx512Support (KNOB_MODE_WRITEONCE,"supported","allow_AVX512_support","1","Allow using AVX-512 instructions")
CPU_INFO & Cpu ()
+LOCALVAR KNOB< BOOL > KnobNoCmov (KNOB_MODE_WRITEONCE,"supported","nocmov","0","disable the use of CMOV even on machines which support it")
BOOL CanUseCMOV ()
BOOL CpuSupportsLahfSahf ()
GLOBALCFUN ADDRINT HaveAvxSupport ()
GLOBALCFUN ADDRINT HaveAvx2Support ()
GLOBALCFUN ADDRINT HaveAvx512FSupport ()
GLOBALCFUN ADDRINT HaveAvx512BWSupport ()
LOCALFUN VECTOR_REGISTER_SET DetermineVectorRegisterSet ()
VECTOR_REGISTER_SET SupportedVectorRegisterSet ()
+BOOL REG_is_reg (REG reg)
+BOOL REG_is_pseudo (REG reg)
BOOL REG_is_gr (REG reg)
BOOL REG_is_fr (REG reg)
BOOL REG_is_br (REG reg)
BOOL REG_is_gr64 (REG reg)
REG operator++ (REG &r)
BOOL REG_is_gr32 (REG reg)
BOOL REG_is_pin_gr32 (REG reg)
BOOL REG_is_gr16 (REG reg)
BOOL REG_is_gr8 (REG reg)
BOOL REG_is_seg (REG reg)
BOOL REG_is_fr_for_get_context (REG reg)
+BOOL REG_is_fr_or_x87 (REG reg)
BOOL REG_is_mxcsr (REG reg)
BOOL REG_is_any_mxcsr (REG reg)
+BOOL REG_is_any_x87 (REG reg)
+REG REG_st_return_reg ()
BOOL REG_is_mm (REG reg)
BOOL REG_is_xmm (REG reg)
BOOL REG_is_ymm (REG reg)
BOOL REG_is_zmm (REG reg)
BOOL REG_is_xmm_ymm_zmm (REG reg)
BOOL REG_is_any_vector_reg (REG reg)
BOOL REG_is_k_mask (REG reg)
BOOL REG_is_any_mask (REG reg)
REG REG_corresponding_ymm_reg (REG reg)
REG REG_corresponding_zmm_reg (REG reg)
+REG REG_corresponding_zmm_from_ymm (REG reg)
+BOOL REG_is_dr (REG reg)
+BOOL REG_is_cr (REG reg)
+BOOL REG_is_tr (REG reg)
BOOL REG_is_st (REG reg)
BOOL REG_is_in_X87 (REG reg)
BOOL REG_is_machine (REG reg)
BOOL REG_is_application (REG reg)
BOOL REG_is_pin (REG reg)
BOOL REG_is_subclass_none (REG reg)
BOOL REG_is_pin_gpr (REG reg)
BOOL REG_is_seg_base (REG reg)
BOOL REG_valid_for_iarg_reg_value (REG reg)
BOOL REG_is_pin_gr (REG reg)
BOOL REG_is_pin_gr_half32 (REG reg)
BOOL REG_is_pin_xmm (REG reg)
BOOL REG_is_pin_ymm (REG reg)
BOOL REG_is_pin_zmm (REG reg)
BOOL REG_is_pin_xmm_ymm_zmm (REG reg)
BOOL REG_is_pin_k_mask (REG reg)
BOOL REG_is_avx512_hi16_xmm (const REG xmm)
BOOL REG_is_avx512_hi16_ymm (const REG ymm)
BOOL REG_is_gr_type (REG reg)
REG REG_AppFlags ()
BOOL REG_is_flags (REG reg)
BOOL REG_is_pin_flags (REG reg)
BOOL REG_is_status_flags (REG reg)
BOOL REG_is_pin_status_flags (REG reg)
BOOL REG_is_df_flag (REG reg)
BOOL REG_is_pin_df_flag (REG reg)
BOOL REG_is_flags_type (REG reg)
BOOL REG_is_flags_any_size_type (REG reg)
BOOL REG_is_status_flags_type (REG reg)
BOOL REG_is_app_status_flags_type (REG reg)
BOOL REG_is_df_flag_type (REG reg)
BOOL REG_is_app_df_flag_type (REG reg)
BOOL REG_is_any_flags_type (REG reg)
BOOL REG_is_any_pin_flags (REG reg)
BOOL REG_is_any_app_flags (REG reg)
REG REG_get_status_flags_reg_of_type (REG reg)
REG REG_get_df_flag_reg_of_type (REG reg)
REG REG_get_full_flags_reg_of_type (REG reg)
BOOL REG_is_stackptr_type (REG reg)
BOOL REG_is_representative_reg (REG reg)
+BOOL REG_is_x87_reg (REG reg)
BOOL REG_is_pin_inst (REG reg)
BOOL REG_is_buffer (REG reg)
BOOL REG_is_inst_scratch (REG reg)
ADDRINT REG_regSubClassBitMapTable ()
ADDRINT REG_regDefTable ()
BOOL REG_is_pin_tmp (REG reg)
REG REG_INVALID ()
BOOL REG_valid (REG reg)
UINT32 REG_SpilledSize (const REG reg)
UINT32 REG_SpilledAlignment (const REG reg)
REG REG_PinToMachine (const REG reg, BOOL strict)
+REG REG_MachineToPin (const REG reg)
BOOL REG_is_pin64 (REG reg)
BOOL REG_RequiresRex (const REG reg)
REGWIDTH REG_WidthOfGr (REG reg)
REGWIDTH REGWIDTH_FromByteWidth (UINT32 byteWidth)
INT32 BitWidth_FromREGWIDTH (REGWIDTH regWidth)
BOOL REG_needs_identical_phys_reg (REG vreg)
+LOCALFUN REG REG_DetermineLastSupportedXmm ()
REG REG_LastSupportedXmm ()
+LOCALFUN REG REG_DetermineLastSupportedYmm ()
REG REG_LastSupportedYmm ()
+LOCALFUN REG REG_DetermineLastSupportedZmm ()
REG REG_LastSupportedZmm ()
+LOCALFUN REG REG_DetermineLastSupportedPinXmm ()
REG REG_LastSupportedPinXmm ()
+LOCALFUN REG REG_DetermineLastSupportedPinYmm ()
REG REG_LastSupportedPinYmm ()
+LOCALFUN REG REG_DetermineLastSupportedPinZmm ()
REG REG_LastSupportedPinZmm ()
BOOL REG_IsVectorRegSupported (const REG reg)
UINT32 REG_Size (REG reg)
REG REG_FullRegName (const REG reg)
string REG_StringShort (REG reg)
BOOL REG_SameType (const REG vreg, const REG preg)
REG REG_IdentityCopy (const REG reg)
REG REG_SpillPtr ()
+REG REG_PinToMachineAndSpillPtr (const REG reg, BOOL strict)
UINT32 REG_SizeFromREGWIDTH (REGWIDTH width)
INT32 REG_NmCondCallThenExtraReadRegs ()
INT32 REG_NmCondCallThenExtraWriteRegs ()
REG REG_GetCondCallExtraRegRead (INT32 index)
REG REG_GetCondCallExtraRegWritten (INT32 index)
BOOL REG_is_Half16 (const REG reg)
REGWIDTH REG_Width (REG reg)
BOOL REG_is_Half32 (const REG reg)
BOOL REG_is_Lower8 (const REG reg)
BOOL REG_is_Upper8 (const REG reg)
BOOL REG_is_Any8 (const REG reg)
REG REG_Half16 (const REG reg, const BOOL must_success)
REG REG_Half32 (const REG reg, const BOOL must_success)
REG REG_Lower8 (const REG reg, const BOOL must_succeed)
REG REG_Upper8 (const REG reg, const BOOL must_succeed)
REG REG_Xmm (const REG reg, const BOOL must_succeed)
REG REG_Ymm (const REG reg, const BOOL must_succeed)
BOOL REG_is_partialreg (const REG reg)
VOID SanityCheckPartialRegisters ()
VOID REG_SetHalf16 (ADDRINT &fullvalue, ADDRINT half16)
VOID REG_SetLower8 (ADDRINT &fullvalue, ADDRINT lower8)
VOID REG_SetUpper8 (ADDRINT &fullvalue, ADDRINT upper8)

Variables

+LOCALCONST INT32 MEMORY_CHUNK_ALLOCATION_SIZE = GetMemoryAllocationGranularity()
+LOCALCONST PIN_ERROR_DESCRIPTOR PinErrorDescriptors []
LOCALCONST string ArgumentNumber []
LOCALVAR PINVM::PINSYNC_SAFEPOD_LOCK MessageLock
+LOCALVAR PIN_STATUS PinStatus = {PIN_LOAD_STATUS_INJECTOR, PIN_LOAD_STATUS_INJECTOR}
+LOCALVAR STAT_TIMER AppTimer
GLOBALCONST TLS_KEY INVALID_TLS_KEY = (-1)
+LOCALVAR BOOL Address0x = false
+LOCALVAR const CHAR HexTab [] = "0123456789abcdef"
GLOBALCONST XSAVE_LAYOUT FPSTATE_layout
+LOCALVAR BOOL cpuSupportsCMOV = Cpu().Supports(CPU_FEATURE_CMOV)
+LOCALVAR BOOL cpuSupportsLahfSahf = Cpu().Supports(CPU_FEATURE_LAHF_SAHF)
+LOCALVAR BOOL cpuSupportsAVX = Cpu().Supports(CPU_FEATURE_AVX)
+LOCALVAR BOOL cpuSupportsAVX2 = Cpu().Supports(CPU_FEATURE_AVX2)
+LOCALVAR BOOL cpuSupportsAVX512F = Cpu().Supports(CPU_FEATURE_AVX512F)
+LOCALVAR BOOL cpuSupportsAVX512BW = Cpu().Supports(CPU_FEATURE_AVX512BW)
+GLOBALCONST ADDRINT AC_FLAG_BIT = 0x40000
+GLOBALCONST ADDRINT NUM_PHYSICAL_REGS = REG_PHYSICAL_INTEGER_END - REG_PHYSICAL_INTEGER_BASE + 1
+GLOBALCONST ADDRINT NUM_SCRATCH_REGS = REG_INST_SCRATCH_LAST - REG_INST_SCRATCH_BASE + 1
GLOBALCONST ADDRINT NUM_SPECIAL_REGS = 2 + NUM_SCRATCH_REGS
GLOBALCONST ADDRINT NUM_CONTEXT_INT_REGS = NUM_PHYSICAL_REGS + NUM_SPECIAL_REGS
GLOBALCONST ADDRINT NUM_CONTEXT_REGS = REG_LAST_CONTEXT_REG + 1
GLOBALCONST ADDRINT ARCH_STATE_SIZE
GLOBALCONST UINT32 NUM_BUFFER_REGS = REG_BUF_LAST - REG_BUF_BASE0 + 1
const REGDEF_ENTRY _regDefTable []
GLOBALCONST UINT32 OPCODE_TABLE_NREADS = (11)
GLOBALCONST UINT32 OPCODE_TABLE_NWRITES = (9)
GLOBALCONST REG_CLASS_BITS REGCBIT_APP_FLAGS
GLOBALCONST REG_CLASS_BITS REGCBIT_PIN_FLAGS
GLOBALCONST REG_CLASS_BITS REGCBIT_PARTIAL
GLOBALCONST REG_SUBCLASS_BITS REGSBIT_PIN_INST_ALL
GLOBALCONST REG_SUBCLASS_BITS REGSBIT_PIN_SCRATCH_ALL
GLOBALCONST REG_SUBCLASS_BITS REGSBIT_STACKPTR_ALL
GLOBALCONST UINT32 PIN_INFINITE_TIMEOUT = static_cast<UINT32>(-1)
GLOBALCONST UINT32 PIN_MAX_THREADS = 2048
+


Detailed Description

+This file defines an object which collects statistics about the various ATOMIC objects. +

+


Typedef Documentation

+

+ + + + +
+ + + + +
typedef BOOL(* LEVEL_BASE::MESSAGE_CALLBACK)(const string &message, PIN_ERRTYPE type, INT32 userType, INT32 severity, INT32 numArgs, va_list ap)
+
+ + + + + +
+   + + +

+A call-back function that is called whenever a MESSAGE_TYPE object prints a message.

+

Parameters:
+ + + + + +
[in] messageName Name of the MESSAGE_TYPE object. This is empty for messages printed via PrintMessageAndExit().
[in] message The text of the message.
[in] type The type of the message.
[in] ap A variable list of additional arguments for the message.
+
+
Returns:
When TRUE is returned, the message is also printed to the console if the MESSAGE_TYPE would normally do this. When FALSE is returned, the message is not printed to the console.
+
+

+ + + + +
+ + + + +
typedef STAT_FLT64 LEVEL_BASE::STAT1
+
+ + + + + +
+   + + +

+FLT64 single value stat. +

+

+

+ + + + +
+ + + + +
typedef STAT_SINGLE<FLT32> LEVEL_BASE::STAT_FLT32
+
+ + + + + +
+   + + +

+FLT32 single value stat. +

+

+

+ + + + +
+ + + + +
typedef STAT_SINGLE<FLT64> LEVEL_BASE::STAT_FLT64
+
+ + + + + +
+   + + +

+FLT64 single value stat. +

+

+

+ + + + +
+ + + + +
typedef STAT_INTEGRAL<INT64> LEVEL_BASE::STAT_INT64
+
+ + + + + +
+   + + +

+INT64 single value stat. +

+

+

+ + + + +
+ + + + +
typedef STAT_INTEGRAL<SIZE> LEVEL_BASE::STAT_SIZE
+
+ + + + + +
+   + + +

+SIZE single value stat. +

+

+

+ + + + +
+ + + + +
typedef STAT_INTEGRAL<UINT32> LEVEL_BASE::STAT_UINT32
+
+ + + + + +
+   + + +

+UINT32 single value stat. +

+

+

+ + + + +
+ + + + +
typedef STAT_INTEGRAL<UINT64> LEVEL_BASE::STAT_UINT64
+
+ + + + + +
+   + + +

+UINT64 single value stat. +

+

+


Enumeration Type Documentation

+

+ + + + +
+ + + + +
enum LEVEL_BASE::CPU_FEATURE
+
+ + + + + +
+   + + +

+Types of CPU features

+

+ + + + +
+ + + + +
enum LEVEL_BASE::CPU_XFEATURE
+
+ + + + + +
+   + + +

+These values specify processor states that are enabled on the processor. They are related to parts of the extended state that should be saved/restored by XSAVE/XRSTORE instructions. See IA-32 manual, vol.3, section 2.6. and vol 2B. XSAVE/XRSTOR

+

+ + + + +
+ + + + +
enum LEVEL_BASE::CPU_XFEATURE_BIT
+
+ + + + + +
+   + + +

+Bits of the XFEATURE_ENABLED_MASK in the extended control register XCR0. These bits specify processor states that are enabled on the processor. A combination of these bits also specifies which part of the extended state should be saved/restored by XSAVE/XRSTORE instructions. See IA-32 manual, vol.3, section 2.6. and vol 2B. XSAVE/XRSTOR

+

+ + + + +
+ + + + +
enum LEVEL_BASE::LOGTYPE
+
+ + + + + +
+   + + +

+Type that represents where to put the log.

Enumerator:
+ + + + +
LOGTYPE_CONSOLE  +log only to the console
LOGTYPE_LOGFILE  +log only to the log file
LOGTYPE_CONSOLE_AND_LOGFILE  +log to both the log file and console
+
+
+

+ + + + +
+ + + + +
enum LEVEL_BASE::PIN_LOAD_STATUS
+
+ + + + + +
+   + + +

+this reflects the state of the pin process which is part of the application process. There maybe another pin process, the injector. The state of this latter process will always be PIN_LOAD_STATUS_INJECTOR.

Enumerator:
+ + + + + + + + + +
PIN_LOAD_STATUS_INJECTOR  +initial state on virgin pin injecting process
PIN_LOAD_STATUS_ATTACHED  +the application is running under pin control
PIN_LOAD_STATUS_CLEAR  +cannot read this variable from remote process
PIN_LOAD_STATUS_CHILD_RUNS_APP  +pin forks child who execs app (-injection child)
PIN_LOAD_STATUS_PARENT_RUNS_APP  +parent execs app. child ptraces (-injection parent)
PIN_LOAD_STATUS_SELF_RUNS_APP  +pin will load the app manually (-injection self)
PIN_LOAD_STATUS_DETACHED_LITE  +pin has been detached but its memory has not been freed
PIN_LOAD_STATUS_DETACHED_FULL  +pin has been detached and almost all pin memory has been freed
+
+
+

+ + + + +
+ + + + +
enum LEVEL_BASE::REGALLOC_HINT_TYPE
+
+ + + + + +
+   + + +

+Types of hints for guiding the register allocator. They need to be defined in level_base as they are used in val.C

+

+ + + + +
+ + + + +
enum LEVEL_BASE::STAT_TYPE
+
+ + + + + +
+   + + +

+Types of STAT's

+Functions that need to iterate over all stats can use this to determine the type

Enumerator:
+ + + + + + + +
STAT_TYPE_INVALID  +Invalid.
STAT_TYPE_SINGLE  +Simple stat with a single value.
STAT_TYPE_SD  +Holds static and dynamic count.
STAT_TYPE_BA  +Holds a before and after count.
STAT_TYPE_NORM  +Holds a count normalized to another stat, displayed as a ratio.
STAT_TYPE_DIST  +Holds a distribution.
+
+
+


Function Documentation

+

+ + + + +
+ + + + + + + + + +
VOID* LEVEL_BASE::Addrint2VoidStar ADDRINT  addr  ) 
+
+ + + + + +
+   + + +

+Convert ADDRINT to "void *"

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
string LEVEL_BASE::AssertString const char *  fileName,
const char *  functionName,
unsigned  line,
const std::string &  message
+
+ + + + + +
+   + + +

+Create a string for an assertion failure.

+

Parameters:
+ + + + + +
[in] fileName Name of the file containing the assertion failure or the empty string.
[in] functionName Name of the function containing the assertion failure.
[in] line Line number of the assertion failure.
[in] message Message describing the failure.
+
+
+

+ + + + +
+ + + + + + + + + +
string LEVEL_BASE::Basename const string &  path  ) 
+
+ + + + + +
+   + + +

+Strip the path information

+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_BASE::BitCount ADDRINT  val  ) 
+
+ + + + + +
+   + + +

+popcount/bitcount code using the usual trick

+

+ + + + +
+ + + + + + + + + +
INT32 LEVEL_BASE::BitWidth_FromREGWIDTH REGWIDTH  regWidth  ) 
+
+ + + + + +
+   + + +

+return the width in bits given the REGWIDTH

+

+ + + + +
+ + + + + + + + +
VOID LEVEL_BASE::BreakMe  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + +
BOOL LEVEL_BASE::CanUseCMOV  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE, if pin can use CMOV instructions
+
+

+ + + + +
+ + + + + + + + +
const string& LEVEL_BASE::CommitCounter  ) 
+
+ + + + + +
+   + + +

+Returns the number of commits in the current branch with an adjustment of 90000 to differentiate from SVN revisions. This is not a unique identifier of a Pin version, it may appear in multiple branches. For a full-blown version identifier, this number should be combined with the major and minor numbers (see PinVersion). Example: pin-3.3-98765: 8765 commits in the Pin 3.3 branch (since the beginning of time). pin-3.4-98765: 8765 commits in the Pin 3.4 branch (since the beginning of time). Alternatively one can use the git commit hash as a truly unique identifier.

+

+ + + + +
+ + + + + + + + +
LOCALFUN const string& LEVEL_BASE::CopyRight  ) 
+
+ + + + + +
+   + + +

+Returns Pin's copyright string.

+

+ + + + +
+ + + + + + + + +
CPU_INFO& LEVEL_BASE::Cpu  ) 
+
+ + + + + +
+   + + +

+Return reference to the CPU_INFO instance.

+

+ + + + +
+ + + + + + + + +
BOOL LEVEL_BASE::CpuSupportsLahfSahf  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE if this CPU supports lahf/sahf instructions
+
+

+ + + + +
+ + + + + + + + + +
CHAR* LEVEL_BASE::CreateTmpFileName const CHAR *  fnameTemplate  ) 
+
+ + + + + +
+   + + +

+Create a temporary file name

+

+ + + + +
+ + + + + + + + +
LOCALFUN VECTOR_REGISTER_SET LEVEL_BASE::DetermineVectorRegisterSet  ) 
+
+ + + + + +
+   + + +

+

Returns:
Returns the widest register set supported by the host CPU.
+
+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_BASE::DivZero UINT32  x  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_BASE::EndsWith const CHAR *  in,
const CHAR *  post
+
+ + + + + +
+   + + +

+Find if string ends with another string

+

Parameters:
+ + + +
[in] in - input string.
[in] post - the postfix the we check
+
+
Returns:
TRUE/FALSE
+
+

+ + + + +
+ + + + + + + + + +
VOID* LEVEL_BASE::FunctionCodeAddress void(*)()  fp  ) 
+
+ + + + + +
+   + + +

+

Returns:
Address of the code, given a function pointer
+
+

+ + + + +
+ + + + + + + + + +
CHAR* LEVEL_BASE::GetAppCmdLine const CHAR *  pinCmdLine  ) 
+
+ + + + + +
+   + + +

+Given pin's command line, return substring containing application's command line.

Parameters:
+ + +
[in] pinCmdLine command line of pin exe process.
+
+
Returns:
pointer to substring containing application's command line; NULL, if application's command line is not found
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CHAR* LEVEL_BASE::GetCmdArg const CHAR *  cmdPtr,
BOOL  isFile,
CHAR *  buf,
size_t  bufSize,
size_t *  pArgSize,
const CHAR **  pNextPtr
+
+ + + + + +
+   + + +

+Given a command line (sub)string, find and parse its first argument. Parsing rules (see MS CRT): File names =========== Quoted string -> non-quoted string (quotes are not copied)

+Regular argument ================ 2N backslashes + " -> N backslashes + begin/end quoted string (quote is not copied) 2N+1 backslashes + " -> N backslashes + literal " " + " in a quoted string -> single literal " all other combinations of symbols are copied as is

+

Parameters:
+ + + + + + + +
[in] cmdPtr pointer to the command line (sub)string
[in] isFile TRUE - use parsing rules for file name FALSE - use parsing rules for regular argument
[out] buf buffer that receives argument after parsing. If this parameter is NULL, the argument is not copied. If the buffer is too small, the terminating NULL is not copied into the buffer.
[in] bufSize size of the buffer; ignored if <buf> is NULL.
[out] pArgSize pointer to variable that receives size of the argument to be copied into the buffer, not including terminating NULL. If this parameter is NULL, the argument size is not returned. Otherwise, the size value is returned even if <buf> is NULL.
[out] pNextPtr pointer to variable that receives pointer to the command line substring following the found attribute. If this parameter is NULL, the pointer is not returned.
+
+
Returns:
pointer to the first argument found in the specified command line (sub)string or NULL.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
const CHAR* LEVEL_BASE::GetEnvFromArray const CHAR *  envArray[],
const CHAR *  name
+
+ + + + + +
+   + + +

+Find value of environment variable

+

+ + + + +
+ + + + + + + + + +
ADDRINT LEVEL_BASE::GetPageOfAddr ADDRINT  addr  ) 
+
+ + + + + +
+   + + +

+Get the address of the page that addr is in

+

+ + + + +
+ + + + + + + + +
const VOID* LEVEL_BASE::GetSp  ) 
+
+ + + + + +
+   + + +

+

Returns:
current stack pointer
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_BASE::HasBaseName const char *  fileName,
const char *  baseNameToCheckFor
+
+ + + + + +
+   + + +

+Determine if the fileName has the BaseName baseNameToCheckFor On Windows comparison is case-insensitive, others are case sensitive

Parameters:
+ + + +
[in] fileName The file name that is to be checked
[in] baseNameToCheckFor Check if the file name has this name as it's filename
    +
  • e.g. "kernel32.dll"
+
+
+
Returns:
true if the file name has specified baseNameToCheckFor as it's base name
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + +
+template<typename T>
GLOBALTEMPLATEFUN UINT32 LEVEL_BASE::HashData UINT32  oldHash,
const T &  data
[inline]
+
+ + + + + +
+   + + +

+Function to incrementally construct a hash value.

+

Parameters:
+ + + +
[in] prevHash Previous hash value (or zero)
[in] data New data item to include in hash value.
+
+
Returns:
Returns the new hash value.
+
+

+ + + + +
+ + + + + + + + +
GLOBALCFUN ADDRINT LEVEL_BASE::HaveAvx2Support  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE if this CPU supports AVX2 and Pin is prepared to support AVX2
+
Note:
it is called from assembly routines also - so it is a GLOBALCFUN
+
+

+ + + + +
+ + + + + + + + +
GLOBALCFUN ADDRINT LEVEL_BASE::HaveAvx512BWSupport  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE if this CPU supports AVX512 Byte and Word instructions and Pin is prepared to support AVX512
+
Note:
it may be called from assembly routines also - so it is a GLOBALCFUN
+
+

+ + + + +
+ + + + + + + + +
GLOBALCFUN ADDRINT LEVEL_BASE::HaveAvx512FSupport  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE if this CPU supports AVX512 foundation and Pin is prepared to support AVX512
+
Note:
it may be called from assembly routines also - so it is a GLOBALCFUN
+
+

+ + + + +
+ + + + + + + + +
GLOBALCFUN ADDRINT LEVEL_BASE::HaveAvxSupport  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE if this CPU supports AVX and Pin is prepared to support AVX
+
Note:
it is called from assembly routines also - so it is a GLOBALCFUN
+
+

+ + + + +
+ + + + + + + + +
VOID LEVEL_BASE::InstallSignalHandlers  ) 
+
+ + + + + +
+   + + +

+install signal handler for SIGSEGV,SIGBUS,SIGILL that will behave like an assert

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + +
+template<UINT32 size>
GLOBALTEMPLATEFUN UINT32 LEVEL_BASE::internalHashData UINT32  prevHash,
const CHAR *  bytes
+
+ + + + + +
+   + + +

+Internal helper for HashData().

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + +
+template<>
GLOBALTEMPLATEFUN UINT32 LEVEL_BASE::internalHashData< 1 > UINT32  prevHash,
const CHAR *  bytes
[inline]
+
+ + + + + +
+   + + +

+Specialization for optimization (1 byte data size).

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + +
+template<>
GLOBALTEMPLATEFUN UINT32 LEVEL_BASE::internalHashData< 2 > UINT32  prevHash,
const CHAR *  bytes
[inline]
+
+ + + + + +
+   + + +

+Specialization for optimization (2 byte data size).

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + +
+template<>
GLOBALTEMPLATEFUN UINT32 LEVEL_BASE::internalHashData< 4 > UINT32  prevHash,
const CHAR *  bytes
[inline]
+
+ + + + + +
+   + + +

+Specialization for optimization (4 byte data size).

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + +
+template<>
GLOBALTEMPLATEFUN UINT32 LEVEL_BASE::internalHashData< 8 > UINT32  prevHash,
const CHAR *  bytes
[inline]
+
+ + + + + +
+   + + +

+Specialization for optimization (8 byte data size).

+

+ + + + +
+ + + + + + + + + + + + +
+template<typename T>
GLOBALTEMPLATEFUN T* LEVEL_BASE::IntToPointer ADDRINT  addr  ) 
+
+ + + + + +
+   + + +

+Convert an ADDRINT to a pointer.

+

+ + + + +
+ + + + + + + + + + + + +
+template<typename T>
GLOBALTEMPLATEFUN BOOL LEVEL_BASE::IsPowerOf2 value  ) 
+
+ + + + + +
+   + + +

+Determine whether a value is a power of 2

Parameters:
+ + +
[in] value any input value
+
+
Returns:
true if value is a power of 2
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
string LEVEL_BASE::Joinpath string  s1,
string  s2
+
+ + + + + +
+   + + +

+Concatenate two strings with a path delimiter

+

+ + + + +
+ + + + + + + + +
UINT64 LEVEL_BASE::KiloBytesUsed  ) 
+
+ + + + + +
+   + + +

+KiloBytes used by program according to /proc/self/status

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KNOB<BOOL> LEVEL_BASE::KnobAllowMt KNOB_MODE_WRITEONCE ,
"user" ,
"mt" ,
"1" ,
"Allow multithreaded programs" 
+
+ + + + + +
+   + + +

+Allow multithreading. When the automatic cache flush is implemented, we can delete this

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KNOB<BOOL> LEVEL_BASE::KnobAppendLogFile KNOB_MODE_WRITEONCE ,
"supported" ,
"append_logfile" ,
"0" ,
"Append to the end of the log file if it already exists" 
+
+ + + + + +
+   + + +

+Indicates that new log messages should be appended to the end of the log file if it already exists. This is particularly useful on Unix when using -follow_execv because the log messages after the exec are appended to any messages that happen before the exec.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KNOB<UINT32> LEVEL_BASE::KnobAttachToProcessPid KNOB_MODE_WRITEONCE ,
"user" ,
"pid" ,
"0" ,
"Attach to process with PID" 
+
+ + + + + +
+   + + +

+pin attach/detach knobs

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KNOB<BOOL> LEVEL_BASE::KnobDebugInstrumentedProcesses KNOB_MODE_WRITEONCE ,
"user" ,
"debug_instrumented_processes" ,
"0" ,
"Print message to allow debugger attach to instrumented processes" 
+
+ + + + + +
+   + + +

+Pop-up debug message to allow debugger attach to instrumented processes. In follow child scenario, active only if parent is being debugged

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KNOB<BOOL> LEVEL_BASE::KnobDetachReattachActive KNOB_MODE_WRITEONCE ,
"user" ,
"detach_reattach" ,
"0" ,
"Allow detach and reattach in probe mode" 
+
+ + + + + +
+   + + +

+pin attach/detach knobs

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KNOB<string> LEVEL_BASE::KnobErrorFile KNOB_MODE_WRITEONCE ,
"user" ,
"error_file" ,
"" ,
"The error file name" 
+
+ + + + + +
+   + + +

+specifies the error file name.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KNOB<BOOL> LEVEL_BASE::KnobFollowChild KNOB_MODE_WRITEONCE ,
"user" ,
"follow_execv" ,
"0" ,
"Execute with Pin all processes spawned by execv class system calls" 
+
+ + + + + +
+   + + +

+Should the VM follow spawned processes?

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KNOB<BOOL> LEVEL_BASE::KnobHelp KNOB_MODE_WRITEONCE ,
"user" ,
"help" ,
"0" ,
"Print help message" 
+
+ + + + + +
+   + + +

+Print help message

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KNOB<BOOL> LEVEL_BASE::KnobIFeelLucky KNOB_MODE_WRITEONCE ,
"user" ,
"ifeellucky" ,
"0" ,
"skip warning message for unsupported platforms and convert some errors to warnings" 
+
+ + + + + +
+   + + +

+Knob for skipping a warning message about unsupported platforms; It also converts some error messages to warnings to try to allow further progress.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KNOB<BOOL> LEVEL_BASE::KnobLateInjection KNOB_MODE_WRITEONCE ,
"supported" ,
"late_injection" ,
"0" ,
"Late injection (after initialization APC) on Windows" 
+
+ + + + + +
+   + + +

+Late injection vs. early injection

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KNOB<string> LEVEL_BASE::KnobLogFile KNOB_MODE_WRITEONCE ,
"user" ,
"logfile" ,
"pin.log" ,
"The log file path and file name" 
+
+ + + + + +
+   + + +

+specifies the log file name.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KNOB<string> LEVEL_BASE::KnobMesgOff KNOB_MODE_APPEND ,
"supported:message" ,
"mesgoff" ,
"" ,
"disable given message type" 
+
+ + + + + +
+   + + +

+disable specific message type

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KNOB<string> LEVEL_BASE::KnobMesgOn KNOB_MODE_APPEND ,
"supported:message" ,
"mesgon" ,
"" ,
"enable given message type" 
+
+ + + + + +
+   + + +

+enable specific message type

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KNOB<BOOL> LEVEL_BASE::KnobSeparatelyHandledXmm KNOB_MODE_WRITEONCE ,
"supported" ,
"separately_handled_xmm" ,
"1" ,
"separtely handled xmm" 
+
+ + + + + +
+   + + +

+Knob to control the handling of xmm regs as separately-handled-partial-regs when Pin is running on a system with AVX

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KNOB<UINT32> LEVEL_BASE::KnobSigChildHandler KNOB_MODE_WRITEONCE ,
"internal" ,
"sigchld_handler" ,
"0" ,
"PID of waiting injector process" 
+
+ + + + + +
+   + + +

+parent injector process that waits for injection completion

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KNOB<BOOL> LEVEL_BASE::KnobSlowAsserts KNOB_MODE_WRITEONCE ,
"user&pintool" ,
"slow_asserts" ,
"0" ,
"Perform expensive sanity checks" 
+
+ + + + + +
+   + + +

+Knob for deciding whether using expensive sanity checks.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KNOB<BOOL> LEVEL_BASE::KnobStatistics KNOB_MODE_WRITEONCE ,
"supported:stat" ,
"statistic" ,
"0" ,
"print general statistics" 
+
+ + + + + +
+   + + +

+Print general statistic info

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KNOB<BOOL> LEVEL_BASE::KnobUniqueErrorFile KNOB_MODE_WRITEONCE ,
"user" ,
"unique_error_file" ,
"0" ,
"The error file name will contain the pid" 
+
+ + + + + +
+   + + +

+indicates that the pid should be added to the error file name.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KNOB<BOOL> LEVEL_BASE::KnobUniqueLogFiles KNOB_MODE_WRITEONCE ,
"user" ,
"unique_logfile" ,
"0" ,
"The log file names will contain the pid" 
+
+ + + + + +
+   + + +

+indicates that the pid should be added to the log file name.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KNOB<BOOL> LEVEL_BASE::KnobVersion KNOB_MODE_WRITEONCE ,
"user" ,
"version" ,
"0" ,
"Print version message" 
+
+ + + + + +
+   + + +

+Print version message

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KNOB<UINT32> LEVEL_BASE::KnobWaitingInjector KNOB_MODE_WRITEONCE ,
"internal" ,
"waiting_injector" ,
"0" ,
"PID of waiting injector process" 
+
+ + + + + +
+   + + +

+parent injector process that waits for injection completion

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KNOB<UINT32> LEVEL_BASE::KnobWaitingProcess KNOB_MODE_WRITEONCE ,
"internal" ,
"waiting_process" ,
"0" ,
"Attach to waiting process with PID" 
+
+ + + + + +
+   + + +

+pin attach/detach knobs

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
const string LEVEL_BASE::Line1 80 ,
'#' 
+
+ + + + + +
+   + + +

+line of 80 '#' characters

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
const string LEVEL_BASE::Line2 80 ,
= '
+
+ + + + + +
+   + + +

+line of 80 '=' characters

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
const string LEVEL_BASE::Line3 80 ,
'-' 
+
+ + + + + +
+   + + +

+line of 80 '-' characters

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
const string LEVEL_BASE::Line4 80 ,
'.' 
+
+ + + + + +
+   + + +

+line of 80 '.' characters

+

+ + + + +
+ + + + + + + + + +
string LEVEL_BASE::LoadStatusString PIN_LOAD_STATUS  load_status  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
MemRange LEVEL_BASE::MemPageRange const VOID *  addr  ) 
+
+ + + + + +
+   + + +

+Get the page that contains the specified address

Parameters:
+ + +
[in] addr address inside the requested page
+
+
Returns:
one-page range that contains the specified address
+
+

+ + + + +
+ + + + + + + + + +
MemRange LEVEL_BASE::MemPageRange ADDRINT  addr  ) 
+
+ + + + + +
+   + + +

+Get the page that contains the specified address

Parameters:
+ + +
[in] addr address inside the requested page
+
+
Returns:
one-page range that contains the specified address
+
+

+ + + + +
+ + + + + + + + + +
string LEVEL_BASE::MemRangeToString const MemRange &  range  ) 
+
+ + + + + +
+   + + +

+

Returns:
string representation of the specified memory range
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MESSAGE_TYPE_ALWAYS_ON LEVEL_BASE::MessageTypeAssert "assert" ,
"A: " ,
true ,
true ,
false ,
LOGTYPE_CONSOLE_AND_LOGFILE ,
"assert" 
+
+ + + + + +
+   + + +

+Assert message object

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MESSAGE_TYPE LEVEL_BASE::MessageTypeConsole "console" ,
"C: " ,
false ,
false ,
true ,
false ,
LOGTYPE_CONSOLE ,
"console" 
+
+ + + + + +
+   + + +

+Console message object

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MESSAGE_TYPE LEVEL_BASE::MessageTypeConsoleNoPrefix "console_noprefix" ,
"" ,
false ,
false ,
true ,
false ,
LOGTYPE_CONSOLE ,
"console" 
+
+ + + + + +
+   + + +

+Console message object - No prefix

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MESSAGE_TYPE LEVEL_BASE::MessageTypeCriticalError "critical_error" ,
"E: " ,
false ,
false ,
true ,
false ,
LOGTYPE_CONSOLE_AND_LOGFILE ,
"errors" 
+
+ + + + + +
+   + + +

+Error message object for fatal errors that require post-logging handling. These errors do not cause the process termination in the MESSAGE_TYPE::Message() function.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MESSAGE_TYPE LEVEL_BASE::MessageTypeDebug "debug" ,
"D: " ,
false ,
false ,
false ,
false ,
LOGTYPE_CONSOLE ,
"generic debug" 
+
+ + + + + +
+   + + +

+Debug message object

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MESSAGE_TYPE LEVEL_BASE::MessageTypeError "error" ,
"E: " ,
true ,
false ,
true ,
false ,
LOGTYPE_CONSOLE_AND_LOGFILE ,
"errors" 
+
+ + + + + +
+   + + +

+Error message object (terminates)

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MESSAGE_TYPE LEVEL_BASE::MessageTypeInfo "info" ,
"I: " ,
false ,
false ,
true ,
false ,
LOGTYPE_CONSOLE ,
"info" 
+
+ + + + + +
+   + + +

+Info message object

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MESSAGE_TYPE LEVEL_BASE::MessageTypeKnown "known" ,
"K: " ,
false ,
false ,
true ,
false ,
LOGTYPE_CONSOLE ,
"known problem" 
+
+ + + + + +
+   + + +

+Known-warning message object

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MESSAGE_TYPE LEVEL_BASE::MessageTypeLog "log" ,
"" ,
false ,
false ,
true ,
false ,
LOGTYPE_LOGFILE ,
"generic log" 
+
+ + + + + +
+   + + +

+Log message object

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MESSAGE_TYPE LEVEL_BASE::MessageTypeNonFatalError "non_fatal_error" ,
"NFE: " ,
false ,
false ,
true ,
false ,
LOGTYPE_CONSOLE_AND_LOGFILE ,
"errors" 
+
+ + + + + +
+   + + +

+Error message object for non-fatal error.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MESSAGE_TYPE LEVEL_BASE::MessageTypeOpportunity "opportunity" ,
"O: " ,
false ,
false ,
true ,
false ,
LOGTYPE_CONSOLE ,
"generic optimization opportunity" 
+
+ + + + + +
+   + + +

+Optimization opportunity message object

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MESSAGE_TYPE LEVEL_BASE::MessageTypePhase "phase" ,
"P: " ,
false ,
false ,
true ,
true ,
LOGTYPE_CONSOLE ,
"phase" 
+
+ + + + + +
+   + + +

+Phase message object

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MESSAGE_TYPE LEVEL_BASE::MessageTypeStats "stats" ,
"S: " ,
false ,
false ,
true ,
false ,
LOGTYPE_CONSOLE ,
"statistic" 
+
+ + + + + +
+   + + +

+Statistcis message object

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MESSAGE_TYPE LEVEL_BASE::MessageTypeWarning "warning" ,
"W: " ,
false ,
false ,
true ,
false ,
LOGTYPE_LOGFILE ,
"warnings" 
+
+ + + + + +
+   + + +

+Warning message object

+

+ + + + +
+ + + + + + + + +
UINT64 LEVEL_BASE::MilliSecondsElapsed  ) 
+
+ + + + + +
+   + + +

+MilliSeconds elapsed since last invocation of this function

+

+ + + + +
+ + + + + + + + + +
REG LEVEL_BASE::operator++ REG r  ) 
+
+ + + + + +
+   + + +

+reg++ is convenient for loops over registers

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KNOB<string> LEVEL_BASE::P32Knob KNOB_MODE_WRITEONCE ,
"user" ,
"p32" ,
"" ,
"Specify Pin binary for IA-32 architecture" 
+
+ + + + + +
+   + + +

+Specify Pin binary for 32-bit applications

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KNOB<string> LEVEL_BASE::P64Knob KNOB_MODE_WRITEONCE ,
"user" ,
"p64" ,
"" ,
"Specify Pin binary for Intel(R) 64 architecture" 
+
+ + + + + +
+   + + +

+Specify Pin binary for 64-bit (IA32E) applications

+

+ + + + +
+ + + + + + + + +
const char* LEVEL_BASE::PinCommitHash  ) 
+
+ + + + + +
+   + + +

+Returns the git commit hash of the current (unmodified) source code.

+

+ + + + +
+ + + + + + + + +
GLOBALDLLCFUN const char* LEVEL_BASE::PinCommitHashC  ) 
+
+ + + + + +
+   + + +

+Returns the git commit hash of the current (unmodified) source code.

+C-style version of this function.

+

+ + + + +
+ + + + + + + + +
PIN_LOAD_STATUS LEVEL_BASE::PinStatusGetInjectionType  ) 
+
+ + + + + +
+   + + +

+Return the type of injection used by Pin

+

+ + + + +
+ + + + + + + + +
PIN_LOAD_STATUS LEVEL_BASE::PinStatusGetLoadStatus  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_BASE::PinStatusSetLoadStatus PIN_LOAD_STATUS  ls  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
string LEVEL_BASE::PinStatusString PIN_STATUS *  ps  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + +
+template<typename T>
GLOBALTEMPLATEFUN ADDRINT LEVEL_BASE::PointerToInt const T *  ptr  ) 
+
+ + + + + +
+   + + +

+Convert a pointer to an ADDRINT.

+

+ + + + +
+ + + + + + + + +
const string& LEVEL_BASE::PrintablePinVersion  ) 
+
+ + + + + +
+   + + +

+Returns a fully descriptive Pin version and copyright notice.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
ADDRINT LEVEL_BASE::ProgramEntry const ImageLoaderInfo *  mainImage,
const ImageLoaderInfo *  loader
+
+ + + + + +
+   + + +

+Return the entry point of a program (either that of the main image or of the dynamic loader)

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
GLOBALTEMPLATEFUN const T * LEVEL_BASE::PtrAtOffset const VOID *  ptr,
size_t  offset
+
+ + + + + +
+   + + +

+Return const pointer whose offset, in bytes, from <ptr> is <offset>

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
GLOBALTEMPLATEFUN T * LEVEL_BASE::PtrAtOffset VOID *  ptr,
size_t  offset
+
+ + + + + +
+   + + +

+Return pointer whose offset, in bytes, from <ptr> is <offset>

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
size_t LEVEL_BASE::PtrDiff const VOID *  ptr1,
const VOID *  ptr2
+
+ + + + + +
+   + + +

+Return offset, in bytes, of <ptr1> from <ptr2>

+

+ + + + +
+ + + + + + + + +
VOID LEVEL_BASE::PullinPinMalloc  ) 
+
+ + + + + +
+   + + +

+A function calling all malloc-related functions. Calling PullinPinMalloc() in pin and pinclient forces the dynamic loader to pull in the Pin's malloc.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID* LEVEL_BASE::PushAddrintToStack VOID *  stack,
ADDRINT  value
+
+ + + + + +
+   + + +

+Push ADDRINT value into stack and return updated value of top of stack

Parameters:
+ + + +
[in] stack top of stack
[in] value value to be pushed
+
+
Returns:
updated value of top of stack
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+template<typename T>
GLOBALTEMPLATEFUN VOID* LEVEL_BASE::PushDataToStack VOID *  stack,
const T *  data,
size_t  alignment = 1,
size_t  size = sizeof(T)
+
+ + + + + +
+   + + +

+Push data into stack and return updated value of top of stack the stack is growing to the lower addresses

Parameters:
+ + + + + +
[in] stack top of stack
[in] data pointer to the data to be copied
[in] alignment new value of top of stack suppose to be aligned on "alignment" value, in bytes. the value has to be power of 2
[in] size size of the data, in bytes
+
+
Returns:
updated value of top of stack
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void LEVEL_BASE::RangeCheck const UINT32  value,
const UINT32  bits
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
REG LEVEL_BASE::REG_GetCondCallExtraRegRead INT32  index  ) 
+
+ + + + + +
+   + + +

+No such regs - only write regs

+

+ + + + +
+ + + + + + + + + +
REG LEVEL_BASE::REG_GetCondCallExtraRegWritten INT32  index  ) 
+
+ + + + + +
+   + + +

+Will write the REG_PIN_DF_FLAGS

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
REG LEVEL_BASE::REG_Half16 const REG  reg,
const BOOL  must_success
+
+ + + + + +
+   + + +

+Return the lower 16-bit version of reg

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
REG LEVEL_BASE::REG_Half32 const REG  reg,
const BOOL  must_success
+
+ + + + + +
+   + + +

+Return the lower 32-bit version of reg

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_is_in_X87 REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if reg is ST0-7, MM0-7(MMX) or ST control/status register
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_IsVectorRegSupported const REG  reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE iff the given register is a vector register i.e. xmm/ymm/zmm and it is supported on the current CPU.
+
+

+ + + + +
+ + + + + + + + +
REG LEVEL_BASE::REG_LastSupportedPinXmm  ) 
+
+ + + + + +
+   + + +

+

Returns:
the highest Pin xmm register supported on the current CPU
+
+

+ + + + +
+ + + + + + + + +
REG LEVEL_BASE::REG_LastSupportedPinYmm  ) 
+
+ + + + + +
+   + + +

+

Returns:
the highest Pin ymm register supported on the current CPU
+
+

+ + + + +
+ + + + + + + + +
REG LEVEL_BASE::REG_LastSupportedPinZmm  ) 
+
+ + + + + +
+   + + +

+

Returns:
the highest Pin zmm register supported on the current CPU
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
REG LEVEL_BASE::REG_Lower8 const REG  reg,
const BOOL  must_succeed
+
+ + + + + +
+   + + +

+Return the lower 8-bit version of reg

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_needs_identical_phys_reg REG  vreg  ) 
+
+ + + + + +
+   + + +

+Return TRUE iff the vreg is required to be allocated to it's corresponding preg

+

+ + + + +
+ + + + + + + + +
INT32 LEVEL_BASE::REG_NmCondCallThenExtraReadRegs  ) 
+
+ + + + + +
+   + + +

+No such regs - only write regs

+

+ + + + +
+ + + + + + + + +
INT32 LEVEL_BASE::REG_NmCondCallThenExtraWriteRegs  ) 
+
+ + + + + +
+   + + +

+Will write the REG_PIN_DF_FLAGS

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
REG LEVEL_BASE::REG_PinToMachine const REG  reg,
BOOL  strict
+
+ + + + + +
+   + + +

+Return the identity copy of reg. If it is not a Pin reg and strict is not set, its physical copy is simply reg itself. If strict is set, its physical copy is REG_INVALID().

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_BASE::REG_RequiresRex const REG  reg  ) 
+
+ + + + + +
+   + + +

+Does this register require a REX prefix when encoded on Intel(R) 64 architecture?

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_BASE::REG_SameType const REG  vreg,
const REG  preg
+
+ + + + + +
+   + + +

+Return true if reg can replace orig during register re-allocation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_BASE::REG_SetHalf16 ADDRINT &  fullvalue,
ADDRINT  half16
+
+ + + + + +
+   + + +

+Set the bottom 16 bits of the register without changing the rest of the register's bits.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_BASE::REG_SetLower8 ADDRINT &  fullvalue,
ADDRINT  lower8
+
+ + + + + +
+   + + +

+Set the bottom 8 bits of the register without changing the rest of the register's bits.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_BASE::REG_SetUpper8 ADDRINT &  fullvalue,
ADDRINT  upper8
+
+ + + + + +
+   + + +

+Set the upper 8 bits (of the bottom 16) of the register without changing the rest of the register's bits. Note - All instances of upper 8 in the documentation below refers to the upper 8 bits of the lower 16.

+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_BASE::REG_SizeFromREGWIDTH REGWIDTH  width  ) 
+
+ + + + + +
+   + + +

+return the register size in bytes given a REGWIDTH

+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_BASE::REG_SpilledAlignment const REG  reg  ) 
+
+ + + + + +
+   + + +

+Return the size (in bytes) of the alignment of the the spill slot dedicated for reg

+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_BASE::REG_SpilledSize const REG  reg  ) 
+
+ + + + + +
+   + + +

+Return the size (in bytes) of a spill slot dedicated for reg

+

+ + + + +
+ + + + + + + + +
REG LEVEL_BASE::REG_SpillPtr  ) 
+
+ + + + + +
+   + + +

+The physical register assigned to hold the spill pointer

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
REG LEVEL_BASE::REG_Upper8 const REG  reg,
const BOOL  must_succeed
+
+ + + + + +
+   + + +

+Return the upper 8-bit version of reg

+

+ + + + +
+ + + + + + + + + +
REGWIDTH LEVEL_BASE::REG_WidthOfGr REG  reg  ) 
+
+ + + + + +
+   + + +

+return the register width for GRs only.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
REG LEVEL_BASE::REG_Xmm const REG  reg,
const BOOL  must_succeed
+
+ + + + + +
+   + + +

+Return the xmm reg part of the ymm/zmm reg (or the xmm itself).

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
REG LEVEL_BASE::REG_Ymm const REG  reg,
const BOOL  must_succeed
+
+ + + + + +
+   + + +

+Return the ymm reg part of the zmm reg (or the ymm itself).

+

+ + + + +
+ + + + + + + + + +
string LEVEL_BASE::REGALLOCHINT_String const REGALLOC_HINT_TYPE  hint  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
REGWIDTH LEVEL_BASE::REGWIDTH_FromByteWidth UINT32  byteWidth  ) 
+
+ + + + + +
+   + + +

+return the register width given a width in bytes

+

+ + + + +
+ + + + + + + + +
const string& LEVEL_BASE::ReleaseFamily  ) 
+
+ + + + + +
+   + + +

+Returns the Pin release family number. The release family includes the initial release and all subsequent patch releases with the same major and minor numbers.

+

+ + + + +
+ + + + + + + + +
string LEVEL_BASE::ResourceInfo  ) 
+
+ + + + + +
+   + + +

+stringified resource info for use with phase messages

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + +
+template<typename T>
GLOBALTEMPLATEFUN T* LEVEL_BASE::RoundDown T *  ptr,
size_t  alignment
+
+ + + + + +
+   + + +

+Specialization of the RoundDown function for pointer type

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + +
+template<typename T>
GLOBALTEMPLATEFUN T LEVEL_BASE::RoundDown value,
size_t  alignment
+
+ + + + + +
+   + + +

+Round integer of type <T> down to given alignment.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + +
+template<typename T>
GLOBALTEMPLATEFUN T* LEVEL_BASE::RoundDownPowerOf2 T *  ptr,
size_t  alignment
+
+ + + + + +
+   + + +

+Specialization of the RoundDownPowerOf2 function for pointer type

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + +
+template<typename T>
GLOBALTEMPLATEFUN T LEVEL_BASE::RoundDownPowerOf2 value,
size_t  alignment
+
+ + + + + +
+   + + +

+Round integer of type <T> down to given alignment. The alignment must be power of two.

+

+ + + + +
+ + + + + + + + + + + + +
+template<typename T>
GLOBALTEMPLATEFUN T LEVEL_BASE::RoundToNextPower2 value  ) 
+
+ + + + + +
+   + + +

+Round integer of type <T> up to the next power of two.

+

Parameters:
+ + +
[in] size the integer (in bytes).
+
+
Returns:
Returns the smallest power of two which is greater than or equal to size.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + +
+template<typename T>
GLOBALTEMPLATEFUN T* LEVEL_BASE::RoundUp T *  ptr,
size_t  alignment
+
+ + + + + +
+   + + +

+Specialization of the RoundUp function for pointer type

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + +
+template<typename T>
GLOBALTEMPLATEFUN T LEVEL_BASE::RoundUp value,
size_t  alignment
+
+ + + + + +
+   + + +

+Round integer of type <T> up to given alignment.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + +
+template<typename T>
GLOBALTEMPLATEFUN T* LEVEL_BASE::RoundUpPowerOf2 T *  ptr,
size_t  alignment
+
+ + + + + +
+   + + +

+Specialization of the RoundUpPowerOf2 function for pointer type

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + +
+template<typename T>
GLOBALTEMPLATEFUN T LEVEL_BASE::RoundUpPowerOf2 value,
size_t  alignment
+
+ + + + + +
+   + + +

+Round integer of type <T> up to given alignment. The alignment must be power of two.

+

+ + + + +
+ + + + + + + + +
VOID LEVEL_BASE::SanityCheckPartialRegisters  ) 
+
+ + + + + +
+   + + +

+Ensure that we don't re-create Mantis 1903, where a register was short but not partial. This function checks that the partial register information is internally consistent.

+It is called when we have the -slow_asserts flag.

+

+ + + + +
+ + + + + + + + +
VOID LEVEL_BASE::SegFault  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
LOCALFUN VOID LEVEL_BASE::SignalHandler int  arg  ) 
+
+ + + + + +
+   + + +

+install signal handler for SIGSEGV,SIGBUS,SIGILL that will behave like an assert

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_BASE::SignedImmediateFits const INT64  value,
const UINT32  origSize
+
+ + + + + +
+   + + +

+Wrapper for 3-arg SignedImmediateFits()

+

Parameters:
+ + + +
value the value to whose size we are checking
origSize where to look for the sign bit (typically 8,16,32 or 64)
+
+
Returns:
true if sign extending from origSize to extendedSize will not change value
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
BOOL LEVEL_BASE::SignedImmediateFits const INT64  value,
const UINT32  origSize,
const UINT32  extendedSize
+
+ + + + + +
+   + + +

+Sign extend from origSize to extendedSize and check if it fits in a field of extendedSize

+

Parameters:
+ + + + +
[in] value - value to whose size we are checking
[in] origSize - position of sign bit in value
[in] extendedSize - size extend to this size, if 0 then extendedSize is origSize
+
+
+

+ + + + +
+ + + + + + + + +
BOOL LEVEL_BASE::SlowAssertsEnabled  ) 
+
+ + + + + +
+   + + +

+Return TRUE if slow-asserts are enabled.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
string LEVEL_BASE::SplitString string *  input,
const string &  delimiter = " "
+
+ + + + + +
+   + + +

+Split string into 2 sub strings. Example1: prefix = SplitString(input = "aaa bbb ccc", " ") -> prefix = "aaa", input = "bbb ccc" Example2: prefix = SplitString(input = "aaa", " ") -> prefix = "aaa", input = ""

+

Parameters:
+ + + +
inout] input - input string. remove prefix and set the new string into input.
[in] delimiter - delimiter
+
+
Returns:
prefix string
+
+

+ + + + +
+ + + + + + + + +
VOID LEVEL_BASE::StartApplicationTimer  ) 
+
+ + + + + +
+   + + +

+Start the application timer

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_BASE::StartsWith const CHAR *  in,
const CHAR *  pre
+
+ + + + + +
+   + + +

+Find if string starts with another string

+

Parameters:
+ + + +
[in] in - input string.
[in] pre - the prefix the we check
+
+
Returns:
TRUE/FALSE
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
STAT_NORM LEVEL_BASE::STAT_acquire_vm_lock_count "pin" ,
"time_vm" ,
"get_lock_count" ,
"" ,
NULL 
+
+ + + + + +
+   + + +

+A counter for the number of times acquiring the VM lock

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
ATOMIC_STATS LEVEL_BASE::STAT_Backoff_COMPLEXLOCK "pin" ,
"complexlock" 
+
+ + + + + +
+   + + +

+Exponential backoff statistics while incrementing recursive count.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
STAT_UINT64 LEVEL_BASE::STAT_MaxSpins_COMPLEXLOCK "pin" ,
"complexlock" ,
"spins_max" ,
"" 
+
+ + + + + +
+   + + +

+Max number of Yield() spins for a single lock attempt.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
STAT_NORM LEVEL_BASE::STAT_time_vm_enter_to_leave "pin" ,
"time_vm" ,
"time_in_vm" ,
"" ,
STAT_vm_enter_count
+
+ + + + + +
+   + + +

+The time spent in the VM including the time waiting for the VM lock

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
STAT_NORM LEVEL_BASE::STAT_time_vm_locked "pin" ,
"time_vm" ,
"time_locked" ,
"" ,
STAT_time_vm_enter_to_leave
+
+ + + + + +
+   + + +

+The time spent in the VM executing code while being locked under the VM lock

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
STAT_NORM LEVEL_BASE::STAT_time_vm_past_enter "pin" ,
"time_vm" ,
"time_in_vm_past_enter" ,
"" ,
STAT_time_vm_enter_to_leave
+
+ + + + + +
+   + + +

+The time spent in the VM excluding the time waiting for the VM lock

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
STAT_NORM LEVEL_BASE::STAT_time_vm_threads "pin" ,
"time_vm" ,
"time_all_threads" ,
"" ,
STAT_time_vm_enter_to_leave
+
+ + + + + +
+   + + +

+The total time spent by all VM threads

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
STAT_NORM LEVEL_BASE::STAT_time_VMSVC_EMU "pin" ,
"time_vm" ,
"VMSVC_EMU" ,
"" ,
STAT_time_vm_enter_to_leave
+
+ + + + + +
+   + + +

+The time spent executing the EMU flow

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
STAT_NORM LEVEL_BASE::STAT_time_VMSVC_SELF_HANDLER "pin" ,
"time_vm" ,
"VMSVC_SELF_HANDLER" ,
"" ,
STAT_time_vm_enter_to_leave
+
+ + + + + +
+   + + +

+The time spent executing the SELF_HANDLER flow

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
STAT_NORM LEVEL_BASE::STAT_time_VMSVC_SMC "pin" ,
"time_vm" ,
"VMSVC_SMC" ,
"" ,
STAT_time_vm_enter_to_leave
+
+ + + + + +
+   + + +

+The time spent executing the SMC flow

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
STAT_NORM LEVEL_BASE::STAT_time_VMSVC_XFER "pin" ,
"time_vm" ,
"VMSVC_XFER" ,
"" ,
STAT_time_vm_enter_to_leave
+
+ + + + + +
+   + + +

+The time spent executing the XFER flow

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
STAT_NORM LEVEL_BASE::STAT_time_VMSVC_XFER_BRIDGE "pin" ,
"time_vm" ,
"VMSVC_XFER_BRIDGE" ,
"" ,
STAT_time_vm_enter_to_leave
+
+ + + + + +
+   + + +

+The time spent executing the XFER_BRIDGE flow

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
STAT_NORM LEVEL_BASE::STAT_time_VMSVC_XFER_INDIRECT "pin" ,
"time_vm" ,
"VMSVC_XFER_INDIRECT" ,
"" ,
STAT_time_vm_enter_to_leave
+
+ + + + + +
+   + + +

+The time spent executing the XFER_INDIRECT flow

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
STAT_NORM LEVEL_BASE::STAT_time_VMSVC_XFER_NATIVE "pin" ,
"time_vm" ,
"VMSVC_XFER_NATIVE" ,
"" ,
STAT_time_vm_enter_to_leave
+
+ + + + + +
+   + + +

+The time spent executing the NATIVE flow

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
STAT_NORM LEVEL_BASE::STAT_time_wait_for_vm_lock "pin" ,
"time_vm" ,
"time_wait_for_lock" ,
"" ,
STAT_acquire_vm_lock_count
+
+ + + + + +
+   + + +

+The time spent while waiting for the VM lock

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
STAT_UINT64 LEVEL_BASE::STAT_TotalAttempts_COMPLEXLOCK "pin" ,
"complexlock" ,
"attempts" ,
"" 
+
+ + + + + +
+   + + +

+Total number of attempts to acquire lock.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
STAT_UINT64 LEVEL_BASE::STAT_TotalSpins_COMPLEXLOCK "pin" ,
"complexlock" ,
"spins_total" ,
"" 
+
+ + + + + +
+   + + +

+Total number of Yield() spins while waiting for lock to be free.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
STAT_NORM LEVEL_BASE::STAT_vm_enter_count "pin" ,
"time_vm" ,
"vmenter_count" ,
"" ,
NULL 
+
+ + + + + +
+   + + +

+A counter for the number of times entering the VM

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
STAT_NORM LEVEL_BASE::STAT_WaitTime_COMPLEXLOCK "pin" ,
"time" ,
"complexlock_wait" ,
"" ,
TimerApp
+
+ + + + + +
+   + + +

+Total time waiting for all Yield() spins.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LOCALVAR STAT_NORM LEVEL_BASE::StatOtherBytes "mem" ,
"bytes" ,
"other" ,
"" ,
StatRawMmapBytes,
TRUE 
+
+ + + + + +
+   + + +

+Unattributed allocations

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
STAT_NORM LEVEL_BASE::StatRawMmapBytes "mem" ,
"bytes" ,
"RawMmap" ,
"" ,
StatReservedBytes
+
+ + + + + +
+   + + +

+Total net bytes allocated by RawMmap and RawMunmap. This must be global because another stats are normalized to this value. The actual value is kept as a local variable in sysfuncs_* and updated by UpdateRawMmapBytes to avoid accessing this variable before the constructor has run.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
STAT_NORM LEVEL_BASE::StatReservedBytes "mem" ,
"bytes" ,
"Reserved" ,
"" ,
+
+ + + + + +
+   + + +

+Total net bytes reserved.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LOCALVAR STAT_NORM LEVEL_BASE::StatStripeBytes "mem" ,
"bytes" ,
"stripe" ,
"" ,
StatRawMmapBytes
+
+ + + + + +
+   + + +

+allocate a memory region of "size" bytes at location address

+not used with the single mmap approach

+

+ + + + +
+ + + + + + + + +
VOID LEVEL_BASE::StopApplicationTimer  ) 
+
+ + + + + +
+   + + +

+Stop the application timer

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+template<typename ITER, typename CONV>
GLOBALTEMPLATEFUN string LEVEL_BASE::StringSequence ITER  begin,
ITER  end,
const CONV &  conv,
const string &  delimiter = string(" ")
+
+ + + + + +
+   + + +

+Convert the sequence [begin, end) to string. Use the <conv> object to convert the elements. Separate the elements by <delimiter>.

+

+ + + + +
+ + + + + + + + +
VECTOR_REGISTER_SET LEVEL_BASE::SupportedVectorRegisterSet  ) 
+
+ + + + + +
+   + + +

+

Returns:
The supported vector instruction set extension.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KNOB<string> LEVEL_BASE::T64Knob KNOB_MODE_WRITEONCE ,
"user" ,
"t64" ,
"" ,
"Specify tool binary for Intel(R) 64 architecture" 
+
+ + + + + +
+   + + +

+Specify Tool for 64-bit (IA32E) applications

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
STAT_NORM LEVEL_BASE::TimerApp "pin" ,
"time" ,
"total" ,
"" ,
+
+ + + + + +
+   + + +

+Entire time that Pin is running.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
STAT_NORM LEVEL_BASE::TimerCompile "pin" ,
"time" ,
"Compile" ,
"" ,
TimerVm
+
+ + + + + +
+   + + +

+Timer for Compilation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
STAT_NORM LEVEL_BASE::TimerFetchRegion "pin" ,
"time" ,
"FetchRegion" ,
"" ,
TimerMakeApplication
+
+ + + + + +
+   + + +

+Time spent fetching while MakeApplication.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
STAT_NORM LEVEL_BASE::TimerMakeApplication "pin" ,
"time" ,
"MakeApplication" ,
"" ,
TimerMakeRegion
+
+ + + + + +
+   + + +

+Timer for MakeApplication

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
STAT_NORM LEVEL_BASE::TimerMakeRegion "pin" ,
"time" ,
"MakeRegion" ,
"" ,
TimerCompile
+
+ + + + + +
+   + + +

+Timer for compiler

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
STAT_NORM LEVEL_BASE::TimerVm "pin" ,
"time" ,
"vm" ,
"" ,
TimerApp
+
+ + + + + +
+   + + +

+Timer for VM

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_BASE::UnsignedImmediateFits const UINT64  value,
const UINT32  bits
+
+ + + + + +
+   + + +

+integer bit width check

+

+ + + + +
+ + + + + + + + +
VOID LEVEL_BASE::UpdateRawMmapBytes  ) 
+
+ + + + + +
+   + + +

+Update StatRawMmapBytes from a local variable. We can't update the stat directly in RawMmap because it might be called before the constructor for the stat has been executed.

+

+ + + + +
+ + + + + + + + + +
ADDRINT LEVEL_BASE::VoidStar2Addrint VOID *  addr  ) 
+
+ + + + + +
+   + + +

+Convert "void *" to ADDRINT

+

+ + + + +
+ + + + + + + + + +
ADDRINT LEVEL_BASE::VoidStar2Addrint const VOID *  addr  ) 
+
+ + + + + +
+   + + +

+Convert "void *" to ADDRINT.

+

+ + + + +
+ + + + + + + + + +
INT64 LEVEL_BASE::VoidStar2Int VOID *  addr  ) 
+
+ + + + + +
+   + + +

+convert "void *" to int

+


Variable Documentation

+

+ + + + +
+ + + + +
GLOBALCONST ADDRINT LEVEL_BASE::ARCH_STATE_SIZE
+
+ + + + + +
+   + + +

+Initial value:

 (NUM_PHYSICAL_REGS + NUM_SPECIAL_REGS)*sizeof(ADDRINT) +
+                                      (FPSTATE_SIZE // because CONTEXT size must
+                                                         // be at least as big as
+                                                         // CONTEXT_CANONICAL size,
+                                                         // and CONTEXT_CANONICAL._fpstate is used
+                                      + FPSTATE_ALIGNMENT)
+
Size of the CONTEXT's architectural state in bytes
+

+ + + + +
+ + + + +
LOCALCONST string LEVEL_BASE::ArgumentNumber[]
+
+ + + + + +
+   + + +

+Initial value:

+{
+    "1", "2", "3", "4", "5", "6", "7", "8", "9", "10",
+}
+
+

+ + + + +
+ + + + +
GLOBALCONST XSAVE_LAYOUT LEVEL_BASE::FPSTATE_layout
+
+ + + + + +
+   + + +

+Initial value:

+{
+    sizeof(FPSTATE),    
+    {
+        { offsetof(FPSTATE::XSTATE, _ymmUpper),
+          sizeof(((FPSTATE::XSTATE *)0)->_ymmUpper) }, 
+        { offsetof(FPSTATE::VSTATE, _bndRegs) + offsetof(FPSTATE, _vstate) - offsetof(FPSTATE, _xstate),
+          sizeof(((FPSTATE::VSTATE *)0)->_bndRegs) },  
+        { offsetof(FPSTATE::VSTATE, _bndCSR) + offsetof(FPSTATE, _vstate) - offsetof(FPSTATE, _xstate),
+          sizeof(((FPSTATE::VSTATE *)0)->_bndCSR) },   
+        { offsetof(FPSTATE::VSTATE, _kmasks) + offsetof(FPSTATE, _vstate) - offsetof(FPSTATE, _xstate),
+          sizeof(((FPSTATE::VSTATE *)0)->_kmasks) },   
+        { offsetof(FPSTATE::VSTATE, _zmmUpper) + offsetof(FPSTATE, _vstate) - offsetof(FPSTATE, _xstate),
+          sizeof(((FPSTATE::VSTATE *)0)->_zmmUpper) }, 
+
+
+
+
+    }
+}
+
XSAVE layout representing FPSTATE structure
+

+ + + + +
+ + + + +
LOCALVAR PINVM::PINSYNC_SAFEPOD_LOCK LEVEL_BASE::MessageLock
+
+ + + + + +
+   + + +

+Lock that serializes message logging

+

+ + + + +
+ + + + +
GLOBALCONST UINT32 LEVEL_BASE::NUM_BUFFER_REGS = REG_BUF_LAST - REG_BUF_BASE0 + 1
+
+ + + + + +
+   + + +

+Total number of buffer registers, which is also the maximum number of buf ids.

+

+ + + + +
+ + + + +
GLOBALCONST ADDRINT LEVEL_BASE::NUM_CONTEXT_INT_REGS = NUM_PHYSICAL_REGS + NUM_SPECIAL_REGS
+
+ + + + + +
+   + + +

+Total number of integer registers in CONTEXT

+

+ + + + +
+ + + + +
GLOBALCONST ADDRINT LEVEL_BASE::NUM_CONTEXT_REGS = REG_LAST_CONTEXT_REG + 1
+
+ + + + + +
+   + + +

+Total number of registers in CONTEXT (app registers + tool registers + special)

+

+ + + + +
+ + + + +
GLOBALCONST ADDRINT LEVEL_BASE::NUM_SPECIAL_REGS = 2 + NUM_SCRATCH_REGS
+
+ + + + + +
+   + + +

+REG_SEG_FS_BASE and REG_SEG_GS_BASE are represented as special IA-32/Intel(R) 64 architecture registers

+

+ + + + +
+ + + + +
GLOBALCONST UINT32 LEVEL_BASE::OPCODE_TABLE_NREADS = (11)
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
GLOBALCONST UINT32 LEVEL_BASE::OPCODE_TABLE_NWRITES = (9)
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
GLOBALCONST UINT32 LEVEL_BASE::PIN_INFINITE_TIMEOUT = static_cast<UINT32>(-1)
+
+ + + + + +
+   + + +

+Timeout interval that never elapses.

+

+ + + + +
+ + + + +
GLOBALCONST UINT32 LEVEL_BASE::PIN_MAX_THREADS = 2048
+
+ + + + + +
+   + + +

+Maximum number of threads supported by PIN.

+


Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespaceLEVEL__CORE.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespaceLEVEL__CORE.html new file mode 100644 index 0000000..e33ee2d --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespaceLEVEL__CORE.html @@ -0,0 +1,41690 @@ + + +Pin: LEVEL_CORE Namespace Reference + + + + +
+
+ +

LEVEL_CORE Namespace Reference

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Typedefs

typedef EXT * EXTLIST
typedef size_t(* INS_BYTES_FETCHER )(VOID *buf, const VOID *insAddr, size_t size, EXCEPTION_INFO *pExceptInfo)
typedef INDEX< 202 > PREG
typedef ADDR< 200 > REGVALUE
typedef vector< ADDRINT > INS_REUSER_ID_VEC
typedef ADDRINT INS_REUSER_HANDLE
typedef ADDRINT INS_REUSER_STORE_HANDLE
typedef REGISTER_SET< REG_FirstInRegset,
+ REG_LastInRegset
REGSET
typedef REGISTER_SET< REG_FirstInRegsetPhyContext,
+ REG_LastInRegsetPhyContext
REGSET_CONTEXT
typedef FAST_REGISTER_SET<
+ REG_FirstInRegset, REG_LastInRegset
FAST_REGSET

Enumerations

enum  BBL_TYPE {
+  BBL_TYPE_INVALID, +
+  BBL_TYPE_UBREAK, +
+  BBL_TYPE_CBREAK, +
+  BBL_TYPE_STOP, +
+  BBL_TYPE_UCALL_UNKNOWN, +
+  BBL_TYPE_UCALL_FUN, +
+  BBL_TYPE_UCALL_OS, +
+  BBL_TYPE_CCALL_OS, +
+  BBL_TYPE_CCALL_UNKNOWN, +
+  BBL_TYPE_CCALL_FUN, +
+  BBL_TYPE_NORMAL, +
+  BBL_TYPE_CBRANCH, +
+  BBL_TYPE_UBRANCH, +
+  BBL_TYPE_COUNTED, +
+  BBL_TYPE_SWPIPELINED, +
+  BBL_TYPE_CHECK, +
+  BBL_TYPE_PREFETCH, +
+  BBL_TYPE_UJUMP, +
+  BBL_TYPE_UJUMP_DYNLINK, +
+  BBL_TYPE_UJUMP_THUNK, +
+  BBL_TYPE_UJUMP_TRAMPOLINE, +
+  BBL_TYPE_UBRANCH_TRAMPOLINE, +
+  BBL_TYPE_CJUMP, +
+  BBL_TYPE_CJUMP_SWITCH, +
+  BBL_TYPE_STUB, +
+  BBL_TYPE_URETURN, +
+  BBL_TYPE_CRETURN, +
+  BBL_TYPE_DATA, +
+  BBL_TYPE_DATA_IADDR, +
+  BBL_TYPE_DATA_ARGBLOCK, +
+  BBL_TYPE_DATA_SWITCH1, +
+  BBL_TYPE_DATA_UNWIND, +
+  BBL_TYPE_DATA_LAST, +
+  BBL_TYPE_CONTAINER, +
+  BBL_TYPE_UNKNOWN, +
+  BBL_TYPE_VMSVC, +
+  BBL_TYPE_IBRANCH_LOOKUP, +
+  BBL_TYPE_EMU_FT, +
+  BBL_TYPE_UCALL_NATIVE_TARGET, +
+  BBL_TYPE_LAST +
+ }
enum  BBL_STATE {
+  BBL_STATE_INVALID, +
+  BBL_STATE_LAST +
+ }
enum  CALLING_STANDARD {
+  CALLING_STANDARD_INVALID, +
+  CALLING_STANDARD_IA32_CDECL, +
+  CALLING_STANDARD_IA32_REGPARM, +
+  CALLING_STANDARD_IA32E_WINDOWS, +
+  CALLING_STANDARD_IA32E_UNIX, +
+  CALLING_STANDARD_IA32_FASTCALL_WINDOWS, +
+  CALLING_STANDARD_IA32_STDCALL_WINDOWS, +
+  CALLING_STANDARD_IA32E_ART, +
+  CALLING_STANDARD_IA32_ART +
+ }
enum  FUNCTION_TYPE {
+  FUNCTION_TYPE_INVALID, +
+  FUNCTION_TYPE_ALL_LONG +
+ }
enum  CHUNK_STATE {
+  CHUNK_STATE_INVALID, +
+  CHUNK_STATE_LAST +
+ }
enum  CHUNK_TYPE {
+  CHUNK_TYPE_INVALID, +
+  CHUNK_TYPE_DATA, +
+  CHUNK_TYPE_CODE, +
+  CHUNK_TYPE_THUMB, +
+  CHUNK_TYPE_LAST +
+ }
enum  EDG_TYPE {
+  EDG_TYPE_INVALID, +
+  EDG_TYPE_RETURN, +
+  EDG_TYPE_CALL, +
+  EDG_TYPE_LINK, +
+  EDG_TYPE_COMP, +
+  EDG_TYPE_FALSE, +
+  EDG_TYPE_BRANCH, +
+  EDG_TYPE_SWITCH, +
+  EDG_TYPE_PREFETCH, +
+  EDG_TYPE_EXCEPTION, +
+  EDG_TYPE_NORMAL, +
+  EDG_TYPE_IBRANCH, +
+  EDG_TYPE_LAST +
+ }
enum  EDG_STATE {
+  EDG_STATE_INVALID, +
+  EDG_STATE_LAST +
+ }
enum  EXT_ATTR_MODE {
+  EXT_ATTR_MODE_INVALID, +
+  EXT_ATTR_MODE_SINGLE, +
+  EXT_ATTR_MODE_MULTIPLE +
+ }
enum  IMG_TYPE {
+  IMG_TYPE_INVALID, +
+  IMG_TYPE_STATIC, +
+  IMG_TYPE_SHARED, +
+  IMG_TYPE_SHAREDLIB, +
+  IMG_TYPE_RELOCATABLE, +
+  IMG_TYPE_DYNAMIC_CODE, +
+  IMG_TYPE_API_CREATED, +
+  IMG_TYPE_LAST +
+ }
enum  IMG_STATE {
+  IMG_STATE_INVALID, +
+  IMG_STATE_LAST +
+ }
enum  IMG_BUILDER {
+  IMG_BUILDER_INVALID, +
+  IMG_BUILDER_UNKNOWN, +
+  IMG_BUILDER_GNU3, +
+  IMG_BUILDER_ELECTRON_OLD, +
+  IMG_BUILDER_ELECTRON, +
+  IMG_BUILDER_LAST = IMG_BUILDER_ELECTRON +
+ }
enum  MEMORY_TYPE {
+  MEMORY_TYPE_READ, +
+  MEMORY_TYPE_WRITE, +
+  MEMORY_TYPE_READ2 +
+ }
enum  SYSCALL_STANDARD {
+  SYSCALL_STANDARD_INVALID, +
+  SYSCALL_STANDARD_IA32_LINUX, +
+  SYSCALL_STANDARD_IA32_LINUX_SYSENTER, +
+  SYSCALL_STANDARD_IA32E_LINUX, +
+  SYSCALL_STANDARD_IA32_MAC, +
+  SYSCALL_STANDARD_IA32E_MAC, +
+  SYSCALL_STANDARD_IA32_WINDOWS_FAST, +
+  SYSCALL_STANDARD_IA32E_WINDOWS_FAST, +
+  SYSCALL_STANDARD_IA32_WINDOWS_ALT, +
+  SYSCALL_STANDARD_WOW64, +
+  SYSCALL_STANDARD_WINDOWS_INT +
+ }
enum  REL_TYPE {
+  REL_TYPE_INVALID, +
+  REL_TYPE_CHUNK_ABS32, +
+  REL_TYPE_CHUNK_ABS64, +
+  REL_TYPE_INS_PCREL, +
+  REL_TYPE_INS_IA32IMM +
+ }
enum  RTN_TYPE {
+  RTN_TYPE_INVALID, +
+  RTN_TYPE_CLONE, +
+  RTN_TYPE_STUB, +
+  RTN_TYPE_LINKER_TRAMPOLINE, +
+  RTN_TYPE_REGULAR, +
+  RTN_TYPE_LAST +
+ }
enum  RTN_STATE {
+  RTN_STATE_INVALID, +
+  RTN_STATE_LAST +
+ }
enum  SACT_TYPE {
+  SACT_INVALID, +
+  SACT_MAX_OUTPUTS, +
+  SACT_TARGET_INDIRECT_REG, +
+  SACT_CHAIN_LENGTH, +
+  SACT_IBLT, +
+  SACT_CLEAR_IBRANCH, +
+  SACT_NATIVE_CALL_TARGET, +
+  SACT_ACALL, +
+  SACT_AC_ON, +
+  SACT_ALIGN_REPLACEMENT, +
+  SACT_IS_BEFORE_CALL, +
+  SACT_VERSION, +
+  SACT_TARGET_VERSION, +
+  SACT_PUSH_CALLSITE, +
+  SACT_POP_CALLSITE, +
+  SACT_INSTRUMENTATION_ADDR +
+ }
enum  SEGMENT_TYPE {
+  SEGMENT_TYPE_INVALID, +
+  SEGMENT_TYPE_TEXT, +
+  SEGMENT_TYPE_DATA, +
+  SEGMENT_TYPE_BSS, +
+  SEGMENT_TYPE_STACK, +
+  SEGMENT_TYPE_THREAD, +
+  SEGMENT_TYPE_COMMENT, +
+  SEGMENT_TYPE_LAST +
+ }
enum  SEC_STATE {
+  SEC_STATE_INVALID, +
+  SEC_STATE_RAW_I, +
+  SEC_STATE_CHUNKED_I, +
+  SEC_STATE_DISASSEMBLED, +
+  SEC_STATE_CHUNKED_O, +
+  SEC_STATE_COOKED, +
+  SEC_STATE_RAW_O, +
+  SEC_STATE_LAST +
+ }
enum  SEC_TYPE {
+  SEC_TYPE_INVALID, +
+  SEC_TYPE_UNUSED, +
+  SEC_TYPE_REGREL, +
+  SEC_TYPE_DYNREL, +
+  SEC_TYPE_EXEC, +
+  SEC_TYPE_DATA, +
+  SEC_TYPE_DYNAMIC, +
+  SEC_TYPE_OPD, +
+  SEC_TYPE_GOT, +
+  SEC_TYPE_STACK, +
+  SEC_TYPE_PLTOFF, +
+  SEC_TYPE_HASH, +
+  SEC_TYPE_LSDA, +
+  SEC_TYPE_UNWIND, +
+  SEC_TYPE_UNWINDINFO, +
+  SEC_TYPE_REGSYM, +
+  SEC_TYPE_DYNSYM, +
+  SEC_TYPE_DEBUG, +
+  SEC_TYPE_BSS, +
+  SEC_TYPE_SYMSTR, +
+  SEC_TYPE_DYNSTR, +
+  SEC_TYPE_SECSTR, +
+  SEC_TYPE_COMMENT, +
+  SEC_TYPE_LOOS, +
+  SEC_TYPE_USER, +
+  SEC_TYPE_LAST +
+ }
enum  SYM_STATE {
+  SYM_STATE_INVALID, +
+  SYM_STATE_RAW, +
+  SYM_STATE_LINKED, +
+  SYM_STATE_LAST +
+ }
enum  SYM_IFUNC_TYPE {
+  SYM_TYPE_NO_IFUNC = 0, +
+  SYM_TYPE_IFUNC_RESOLVER, +
+  SYM_TYPE_IFUNC_IMPL, +
+  SYM_TYPE_IFUNC_IMPL_ARTIFICIAL +
+ }
enum  VAL_TYPE {
+  VAL_TYPE_INVALID, +
+  VAL_TYPE_NONE, +
+  VAL_TYPE_INS, +
+  VAL_TYPE_BBL, +
+  VAL_TYPE_EDG, +
+  VAL_TYPE_REL, +
+  VAL_TYPE_RTN, +
+  VAL_TYPE_SEC, +
+  VAL_TYPE_SYM, +
+  VAL_TYPE_FILE, +
+  VAL_TYPE_META, +
+  VAL_TYPE_DATA, +
+  VAL_TYPE_IADDR, +
+  VAL_TYPE_GOT, +
+  VAL_TYPE_OPD, +
+  VAL_TYPE_LDEF, +
+  VAL_TYPE_CHUNK, +
+  VAL_TYPE_PLTOFF, +
+  VAL_TYPE_FLT64, +
+  VAL_TYPE_UINT64, +
+  VAL_TYPE_UINT32, +
+  VAL_TYPE_TWO_UINT32, +
+  VAL_TYPE_INT32, +
+  VAL_TYPE_SECOFF, +
+  VAL_TYPE_SYMOFF, +
+  VAL_TYPE_CHUNKOFF, +
+  VAL_TYPE_ZERO, +
+  VAL_TYPE_TRANSPARENT, +
+  VAL_TYPE_GP, +
+  VAL_TYPE_STRING, +
+  VAL_TYPE_REGUSE, +
+  VAL_TYPE_REG_INT32, +
+  VAL_TYPE_VERSIONCASE, +
+  VAL_TYPE_REGALLOCHINT, +
+  VAL_TYPE_SACT, +
+  VAL_TYPE_IADDR_INT32, +
+  VAL_TYPE_CONST_PTR, +
+  VAL_TYPE_PTR, +
+  VAL_TYPE_AFUNPTR, +
+  VAL_TYPE_LAST +
+ }
enum  FLAGS {
+  FLAGS_NONE = 0x00000000, +
+  FLAGS_CF = 0x00000001, +
+  FLAGS_PF = 0x00000004, +
+  FLAGS_AF = 0x00000010, +
+  FLAGS_ZF = 0x00000040, +
+  FLAGS_SF = 0x00000080, +
+  FLAGS_DF = 0x00000400, +
+  FLAGS_OF = 0x00000800, +
+  FLAGS_STATUS = FLAGS_CF|FLAGS_PF|FLAGS_AF|FLAGS_ZF|FLAGS_SF|FLAGS_OF, +
+  FLAGS_STATUS_ALL_BUT_ZF = FLAGS_CF|FLAGS_PF|FLAGS_AF|FLAGS_SF|FLAGS_OF, +
+  FLAGS_RF = (1<<16), +
+  FLAGS_AC = (1<<18), +
+  FLAGS_ID = (1<<21), +
+  FLAGS_ALL = 0xffffffff, +
+  FLAGS_LAST = FLAGS_ALL +
+ }
enum  XED_OPERAND_NUMBER {
+  XED_OPERAND_NUMBER_0 = 0, +
+  XED_OPERAND_NUMBER_1 = 1, +
+  XED_OPERAND_NUMBER_2 = 2, +
+  XED_OPERAND_NUMBER_3 = 3 +
+ }
enum  INS_REUSER_TYPE {
+  INS_REUSER_TYPE_FIRST, +
+  INS_REUSER_TYPE_MM_INSERT_OP = INS_REUSER_TYPE_FIRST, +
+  INS_REUSER_TYPE_MM_EXTRACT_OP, +
+  INS_REUSER_TYPE_LOAD_MEM_OP, +
+  INS_REUSER_TYPE_STORE_MEM_OP, +
+  INS_REUSER_TYPE_REG_REG_OP, +
+  INS_REUSER_TYPE_REG_IMM_OP, +
+  INS_REUSER_TYPE_REG_OP, +
+  INS_REUSER_TYPE_SDISP_OP, +
+  INS_REUSER_TYPE_IMM_OP, +
+  INS_REUSER_TYPE_NO_REG_OP, +
+  INS_REUSER_TYPE_VZEROUPPER, +
+  INS_REUSER_TYPE_MEM_IMM_OP, +
+  INS_REUSER_TYPE_CHANGE_TO_IMM_OP, +
+  INS_REUSER_TYPE_SIZED_NOP, +
+  INS_REUSER_TYPE_MM_LOAD, +
+  INS_REUSER_TYPE_MM_STORE, +
+  INS_REUSER_TYPE_MM_REG_REG_OP, +
+  INS_REUSER_TYPE_YMM_REG_OP, +
+  INS_REUSER_TYPE_YMM_REG_REG_REG_OP, +
+  INS_REUSER_TYPE_RET_IMM, +
+  INS_REUSER_TYPE_WIDTH_REG_IMM_OP, +
+  INS_REUSER_TYPE_REG_WORD_REG_BYTE_OP, +
+  INS_REUSER_TYPE_REG_WIDTH_REG_OP, +
+  INS_REUSER_TYPE_LAST +
+ }
enum  SYSCALL_TYPE {
+  SYSCALL_TYPE_NONE = 0, +
+  SYSCALL_TYPE_SYSCALL = 1, +
+  OS_SYSCALL_TYPE_SYSENTER = 2, +
+  SYSCALL_TYPE_FARCALL = 3, +
+  OS_SYSCALL_TYPE_INT80 = 4, +
+  OS_SYSCALL_TYPE_INT81 = 5, +
+  OS_SYSCALL_TYPE_INT82 = 6, +
+  OS_SYSCALL_TYPE_INT83 = 7 +
+ }

Functions

ARRAYBASE AppArrayBase ("app pool", 1024)
STRIPE< APP_STRUCT_BASE > AppStripeBase ("app stripe base","core",&AppArrayBase)
INT32 APP_no (APP x)
APP APP_INVALID ()
BOOL APP_valid (APP x)
BOOL APP_allocated (APP x)
+string str (APP app)
+VOID APP_allocated_set (APP x, BOOL y)
+VOID APP_next_set (APP x, APP y)
+VOID APP_prev_set (APP x, APP y)
+IMG APP_img_head (APP x)
+VOID APP_img_head_set (APP x, IMG y)
+IMG APP_img_tail (APP x)
+VOID APP_img_tail_set (APP x, IMG y)
+ADDRINT * APP_misc_addr (APP x)
VOID APP_GarbageCollect ()
APP APP_Alloc ()
VOID APP_Free (APP app)
ARRAYBASE BblArrayBase ("bbl pool", 1024 *1024)
STRIPE< BBL_STRUCT_BASE > BblStripeBase ("bbl stripe base","core",&BblArrayBase)
STRIPE< BBL_STRUCT_MAP > BblStripeMap ("bbl stripe map ","map",&BblArrayBase)
+BBL BBL_INVALID ()
+BOOL BBL_valid (BBL x)
+INT32 BBL_no (BBL x)
+BOOL BBL_allocated (BBL x)
+BOOL BBL_original (BBL x)
+BOOL BBL_mark (BBL x)
+VOID BBL_mark_set (BBL x, BOOL y)
+BOOL BBL_mark2 (BBL x)
+VOID BBL_mark2_set (BBL x, BOOL y)
+BOOL BBL_has_fallthru (BBL x)
+VOID BBL_has_fallthru_set (BBL x, BOOL y)
+BOOL BBL_hot (BBL x)
+VOID BBL_hot_set (BBL x, BOOL y)
+BOOL BBL_is_instrumentable (BBL x)
+VOID BBL_is_instrumentable_set (BBL x, BOOL y)
+BBL_TYPE BBL_type (BBL x)
+RTN BBL_rtn (BBL x)
+VOID BBL_rtn_set (BBL x, RTN y)
+BBL BBL_next (BBL x)
+BBL BBL_prev (BBL x)
+INS BBL_ins_head (BBL x)
+VOID BBL_ins_head_set (BBL x, INS y)
+INS BBL_ins_tail (BBL x)
+VOID BBL_ins_tail_set (BBL x, INS y)
+EDG BBL_edg_pred (BBL x)
+VOID BBL_edg_pred_set (BBL x, EDG y)
+EDG BBL_edg_succ (BBL x)
+VOID BBL_edg_succ_set (BBL x, EDG y)
+EXT BBL_ext (BBL x)
+BOOL BBL_IsData (BBL bbl)
+VOID BBL_pos_set (BBL x, ADDRINT y)
+ADDRINT BBL_pos (BBL x)
+VOID BBL_type_set (BBL x, BBL_TYPE y)
+BOOL BBL_persistent (BBL x)
+VOID BBL_persistent_set (BBL x)
+LOCALINLINE VOID BBL_allocated_set (BBL x, BOOL y)
+LOCALINLINE VOID BBL_original_set (BBL x, BOOL y)
+LOCALINLINE VOID BBL_next_set (BBL x, BBL y)
+LOCALINLINE VOID BBL_prev_set (BBL x, BBL y)
VOID BBL_GarbageCollect ()
BOOL BBL_MarkBblStarts (BBL containerBbl)
BBL BBL_Alloc ()
VOID BBL_Free (BBL bbl)
VOID BBL_InsertBefore (BBL bbl, BBL before, RTN parent)
VOID BBL_Append (BBL bbl, RTN parent)
VOID BBL_InsertAfter (BBL bbl, BBL after, RTN parent)
VOID BBL_Prepend (BBL bbl, RTN parent)
VOID BBL_Unlink (BBL bbl)
VOID BBL_MoveInsToBefore (const BBL src, const BBL dst, INS before)
VOID BBL_MoveInsToAfter (const BBL src, const BBL dst, INS after)
BBL BBL_Clone (BBL bbl)
VOID BBL_InitOriginal (BBL bbl)
LOCALFUN UINT32 BBL_NumAttrRegsym (BBL bbl)
+LOCALFUN UINT32 BBL_NumAttrDynsym (BBL bbl)
UINT32 BBL_NumAttrCrosslink (BBL bbl)
VOID BBL_MoveAllAttributes (BBL fromBbl, BBL toBbl)
UINT32 BBL_NumIns (BBL bbl)
UINT32 BBL_ByteSize (BBL bbl)
+LOCALVAR const ATTRIBUTE ATTR_bbl_entry_point ("entry","cfg","entry_point", EXT_ATTR_MODE_SINGLE, VAL_TYPE_NONE, FALSE, FALSE,"is image entry poiny")
BOOL BBL_IsImageEntryPoint (BBL bbl)
VOID BBL_SetImageEntryPoint (BBL bbl)
BOOL BBL_ContainsCall (BBL bbl)
BOOL BBL_ContainsUnconditionalCall (BBL bbl)
BOOL BBL_ContainsConditionalCall (BBL bbl)
BOOL BBL_ContainsIndirectCall (BBL bbl)
BOOL BBL_ContainsDirectCall (BBL bbl)
BOOL BBL_ContainsConditionalControlTransfer (BBL bbl)
BOOL BBL_ContainsDirectControlTransfer (BBL bbl)
BOOL BBL_ContainsIndirectControlTransfer (BBL bbl)
BOOL BBL_IsReturnSite (BBL bbl)
BOOL BBL_HasUnmodeledSuccEdges (BBL bbl)
BOOL BBL_ContainsUnresolvedIndirectJump (BBL bbl)
BOOL BBL_ContainsReturn (BBL bbl)
+LOCALFUN BOOL CHUNK_IsSwitchTable (CHUNK chunk)
BOOL BBL_HasUnmodeledPredEdges (BBL bbl, BOOL switch_ok)
BBL BBL_UniquePredecessor (BBL bbl)
BOOL BBL_CanBeEntryPoint (BBL bbl, BOOL switch_ok)
VOID BBL_TypeSet (BBL bbl, BBL_TYPE type)
string BBL_StringShort (BBL_TYPE type)
+string str (BBL bbl)
+string BBL_str (BBL bbl)
+LOCALVAR const ATTRIBUTE ATTR_bbl_chunk ("chunk","bbl","bbl_chunk", EXT_ATTR_MODE_SINGLE, VAL_TYPE_CHUNK, B_CROSSLINK, FALSE,"chunk crosslinked with a type data bbl")
CHUNK BBL_DataChunk (BBL bbl)
VOID BBL_DataLinkWithChunk (BBL bbl, CHUNK chunk)
VOID BBL_DataUnlinkChunk (BBL bbl)
string BBL_StringLong (BBL bbl)
+LOCALFUN string BBL_dotName (BBL bbl)
+LOCALFUN string BBL_dotEdge (BBL bbl, EDG edg)
string BBL_generateDotCFG (BBL bbl)
OADDR BBL_GetOaddr (BBL target)
string BBL_StringLongFancy (BBL bbl)
VOID BBL_DeleteIns (BBL bbl)
VOID BBL_FreeSuccEdges (BBL bbl)
VOID BBL_FreePredEdges (BBL bbl)
VOID BBL_FreeContents (BBL bbl)
VOID BBL_UnlinkFreeCode (BBL bbl)
VOID BBL_UnlinkFreeData (BBL bbl)
BBL BBL_SplitAtIns (BBL firstBbl, INS splitIns)
VOID BBL_CheckFree ()
UINT32 CallingStd_DefaultArgSize (CALLING_STANDARD cstype)
+BOOL CallingStd_IsArt (CALLING_STANDARD cstype)
string CallingStd_String (CALLING_STANDARD cstype)
+BOOL INS_startbbl (INS x)
+LOCALINLINE VOID INS_startbbl_set (INS x, BOOL y)
+LOCALINLINE VOID INS_startrtn_set (INS x, BOOL y)
VOID INS_MarkBblStart (INS ins)
VOID INS_MarkRtnStart (INS ins)
+LOCALFUN VOID SEC_MarkPcRelativeControlFlow (SEC sec)
VOID IMG_MarkPcRelativeControlFlow (IMG img)
UINT32 RTN_VerifyFallthroughs (RTN rtn)
VOID IMG_VerifyFallthroughs (IMG img)
VOID RTN_TypifyBblsAndCreateEdgs (RTN rtn)
VOID IMG_TypifyBblsAndCreateEdgs (IMG img)
VOID BBL_AddLinkEdge (BBL bbl, INS call)
BOOL BBL_IsCycle (BBL bbl)
BBL_TYPE BBL_TYPE_Unconditionalize (BBL_TYPE type)
+LOCALVAR KNOB_COMMENT KnobCheckFamily ("supported:check","Self-checking done inside Pin")
BOOL CheckFree ()
VOID CheckAll ()
ARRAYBASE ChunkArrayBase ("chunk pool", 128 *1024)
STRIPE< CHUNK_STRUCT_BASE > ChunkStripeBase ("chunk stripe base","core",&ChunkArrayBase)
+CHUNK CHUNK_INVALID ()
+BOOL CHUNK_valid (CHUNK x)
+INT32 CHUNK_no (CHUNK x)
+BOOL CHUNK_allocated (CHUNK x)
+BOOL CHUNK_original (CHUNK x)
+CHUNK_TYPE CHUNK_type (CHUNK x)
+VOID CHUNK_type_set (CHUNK x, CHUNK_TYPE y)
+CHUNK_STATE CHUNK_state (CHUNK x)
+VOID CHUNK_state_set (CHUNK x, CHUNK_STATE y)
+SEC CHUNK_sec (CHUNK x)
+VOID CHUNK_sec_set (CHUNK x, SEC y)
+BBL CHUNK_bbl (CHUNK x)
+VOID CHUNK_bbl_set (CHUNK x, BBL y)
+CHUNK CHUNK_next (CHUNK x)
+CHUNK CHUNK_prev (CHUNK x)
+UINT32 CHUNK_alignment (CHUNK x)
+VOID CHUNK_alignment_set (CHUNK x, UINT32 y)
+const VOID * CHUNK_data_i (CHUNK x)
+VOID * CHUNK_data_o (CHUNK x)
+REL CHUNK_rel_head (CHUNK x)
+VOID CHUNK_rel_head_set (CHUNK x, REL y)
+REL CHUNK_rel_tail (CHUNK x)
+VOID CHUNK_rel_tail_set (CHUNK x, REL y)
+USIZE CHUNK_size_i (CHUNK x)
+USIZE CHUNK_size_o (CHUNK x)
+IADDR CHUNK_vaddr_i (CHUNK x)
+VOID CHUNK_vaddr_i_set (CHUNK x, IADDR y)
+OADDR CHUNK_vaddr_o (CHUNK x)
+EXT CHUNK_ext (CHUNK x)
+string str (CHUNK chunk)
+LOCALINLINE VOID CHUNK_allocated_set (CHUNK x, BOOL y)
+LOCALINLINE VOID CHUNK_original_set (CHUNK x, BOOL y)
+LOCALINLINE VOID CHUNK_data_i_set (CHUNK x, const VOID *y)
+LOCALINLINE VOID CHUNK_size_i_set (CHUNK x, UINT32 y)
+LOCALINLINE VOID CHUNK_next_set (CHUNK x, CHUNK y)
+LOCALINLINE VOID CHUNK_prev_set (CHUNK x, CHUNK y)
+LOCALINLINE VOID CHUNK_size_o_set (CHUNK x, USIZE y)
+LOCALINLINE VOID CHUNK_data_o_set (CHUNK x, VOID *y)
+LOCALINLINE VOID CHUNK_vaddr_o_set (CHUNK x, OADDR y)
+LOCALINLINE VOID CHUNK_size_max_set (CHUNK x, USIZE y)
+LOCALINLINE USIZE CHUNK_size_max (CHUNK x)
VOID CHUNK_GarbageCollect ()
CHUNK CHUNK_Alloc ()
VOID CHUNK_Free (CHUNK chunk)
VOID CHUNK_InsertBefore (CHUNK chunk, CHUNK before, SEC parent)
VOID CHUNK_Append (CHUNK chunk, SEC parent)
VOID CHUNK_InsertAfter (CHUNK chunk, CHUNK after, SEC parent)
VOID CHUNK_Prepend (CHUNK chunk, SEC parent)
VOID CHUNK_Unlink (CHUNK chunk)
+VOID CHUNK_Init (CHUNK chunk, CHUNK_TYPE type, USIZE size, const VOID *data, UINT32 alignment)
VOID CHUNK_InitOriginal (CHUNK chunk, CHUNK_TYPE type, IADDR vaddr, USIZE size, const VOID *data, UINT32 alignment)
+LOCALFUN REL CHUNK_FindRelWithTargetOffAboveThreshold (CHUNK chunk, UINT32 offset)
+LOCALFUN REL CHUNK_FindRelWithValueOffAboveThreshold (CHUNK chunk, UINT32 offset)
VOID CHUNK_SplitData (CHUNK chunk, UINT32 offset)
BOOL CHUNK_ContainsIaddr (CHUNK chunk, IADDR iaddr)
BOOL CHUNK_ContainsIaddrEndInclusive (CHUNK chunk, IADDR iaddr)
BOOL CHUNK_ContainsOaddr (CHUNK chunk, OADDR oaddr)
BOOL CHUNK_ContainsOaddrEndInclusive (CHUNK chunk, OADDR oaddr)
VOID CHUNK_PutODataByOffsetUINT32 (CHUNK chunk, USIZE offset, UINT32 value)
VOID CHUNK_PutODataByOffsetUINT64 (CHUNK chunk, USIZE offset, UINT64 value)
VOID CHUNK_PutIDataByOffsetUINT32 (CHUNK chunk, USIZE offset, UINT32 value)
VOID CHUNK_PutIDataByOffsetUINT64 (CHUNK chunk, USIZE offset, UINT64 value)
VOID CHUNK_PutUnalignedIDataByOffsetUINT64 (CHUNK chunk, USIZE offset, UINT64 value)
UINT32 CHUNK_GetUnalignedIDataByOffsetUINT32 (CHUNK chunk, USIZE offset)
UINT32 CHUNK_GetIDataByOffsetUINT32 (CHUNK chunk, USIZE offset)
UINT64 CHUNK_GetIDataByOffsetUINT64 (CHUNK chunk, USIZE offset)
UINT32 CHUNK_GetUnalignedIDataByOffsetUINT64 (CHUNK chunk, USIZE offset)
VOID CHUNK_SetNewSizeAndAddress (CHUNK chunk, USIZE size, OADDR oaddr)
VOID CHUNK_SetNewData (CHUNK chunk, VOID *data)
+LOCALFUN string ChunkTypeString (CHUNK_TYPE type)
string CHUNK_StringShort (CHUNK chunk)
string CHUNK_StringLong (CHUNK chunk)
REL CHUNK_FindRelForOffset (CHUNK chunk, UINT32 offset)
USIZE CHUNK_AppendData (CHUNK chunk, USIZE num_bytes)
VOID CHUNK_Check (CHUNK chunk)
VOID IMG_SetNewChunkSizesAndAddresses (IMG img)
KNOB< BOOL > KnobAttachComment (KNOB_MODE_WRITEONCE,"supported","comment","0","Attach comments to data structures")
const ATTRIBUTE AttrComment ("comment:","core","comment", EXT_ATTR_MODE_SINGLE, VAL_TYPE_STRING, FALSE, FALSE,"comment")
VOID INS_AttachComment (const INS ins, string comment)
string INS_Comment (INS ins)
VOID INS_CopyComment (INS toIns, INS fromIns)
ARRAYBASE EdgArrayBase ("edg pool", 64 *1024)
STRIPE< EDG_STRUCT_BASE > EdgStripeBase ("edg stripe base","core",&EdgArrayBase)
+EDG EDG_INVALID ()
+BOOL EDG_valid (EDG x)
+INT32 EDG_no (EDG x)
+BOOL EDG_allocated (EDG x)
+BOOL EDG_mark (EDG x)
+VOID EDG_mark_set (EDG x, BOOL y)
+BOOL EDG_mark2 (EDG x)
+VOID EDG_mark2_set (EDG x, BOOL y)
+EDG_TYPE EDG_type (EDG x)
+VOID EDG_type_set (EDG x, EDG_TYPE y)
+BOOL EDG_linked (EDG x)
+BBL EDG_bbl_src (EDG x)
+BBL EDG_bbl_dst (EDG x)
+EDG EDG_next_succ (EDG x)
+EDG EDG_next_pred (EDG x)
+EXT EDG_ext (EDG x)
+INT32 EDG_weight (EDG x)
+VOID EDG_weight_set (EDG x, INT32 y)
+LOCALINLINE VOID EDG_allocated_set (EDG x, BOOL y)
+LOCALINLINE VOID EDG_linked_set (EDG x, BOOL y)
+LOCALINLINE VOID EDG_next_succ_set (EDG x, EDG y)
+LOCALINLINE VOID EDG_next_pred_set (EDG x, EDG y)
+LOCALINLINE VOID EDG_bbl_dst_set (EDG x, BBL y)
+LOCALINLINE VOID EDG_bbl_src_set (EDG x, BBL y)
VOID EDG_GarbageCollect ()
EDG EDG_Alloc ()
VOID EDG_Free (EDG edg)
EDG EDG_AllocAndLink (BBL src, BBL dst, EDG_TYPE type)
VOID EDG_PredInsertAfter (EDG edg, EDG after, BBL parent)
VOID EDG_PredPrepend (EDG edg, BBL parent)
VOID EDG_SuccInsertAfter (EDG edg, EDG after, BBL parent)
VOID EDG_SuccPrepend (EDG edg, BBL parent)
VOID EDG_Unlink (EDG edg)
LOCALFUN VOID EDG_UnlinkPred (EDG edg)
VOID EDG_UnlinkSucc (EDG edg)
BOOL BBL_CheckSuccEdgType (BBL bbl, EDG_TYPE et)
EDG BBL_SuccEdgFind (BBL src, EDG_TYPE type)
UINT32 BBL_AllowableSuccEdgCount (BBL bbl, UINT32 max)
+LOCALFUN VOID EDG_UpdateBranchTargetField (EDG edg)
BOOL EDG_InterProcedural (EDG e)
VOID EDG_Link (EDG edg, BBL src, BBL dst)
VOID EDG_MoveSuccEdges (BBL a, BBL b)
VOID EDG_MovePredEdges (BBL bbl_from, BBL bbl_to)
string EDG_StringShort (EDG_TYPE type)
+string str (EDG edg)
string EDG_StringShort (EDG edg)
BOOL EDG_IsFallthrough (EDG edg)
EDG BBL_PredEdgFind (BBL dst, EDG_TYPE type)
EDG BBL_SuccEdgFind (BBL src, BBL dst)
EDG BBL_SuccEdgFindWithType (BBL src, BBL dst, EDG_TYPE type)
EDG BBL_SuccEdgFindPcRelative (BBL bbl)
UINT32 BBL_NumPreds (BBL bbl)
UINT32 BBL_NumPredsInterproc (BBL bbl)
UINT32 BBL_NumPredsInterprocNonCall (BBL bbl)
UINT32 BBL_NumSuccs (BBL bbl)
+VOID EDG_Check (EDG edg)
ARRAYBASE ExtArrayBase ("ext pool", 32 *1024)
STRIPE< EXT_STRUCT_BASE > ExtStripeBase ("ext stripe base","core",&ExtArrayBase)
+EXT EXT_INVALID ()
+BOOL EXT_valid (EXT x)
+UINT32 EXT_number (EXT x)
+UINT32 EXT_tag (EXT x)
+EXT EXT_next (EXT n)
+VOID EXT_next_set (EXT n, EXT v)
+BOOL EXT_has_attribute (EXT n, const ATTRIBUTE *attr)
+BOOL EXT_is_crosslink (EXT n)
+BOOL EXT_is_hidden (EXT n)
+VAL * EXT_value_val (EXT x)
+VAL_TYPE EXT_value_type (EXT x)
+SYM EXT_value_sym (EXT x)
+CHUNK EXT_value_chunk (EXT x)
+string * EXT_value_string (EXT x)
+VOID EXT_value_string_set (EXT x, string *v)
+REL EXT_value_rel (EXT x)
+INT32 EXT_value_int32 (EXT x)
+VOID EXT_value_int32_set (EXT x, INT32 v)
+INS EXT_value_ins (EXT x)
+BBL EXT_value_bbl (EXT x)
+VOID EXT_value_bbl_set (EXT x, BBL v)
+EDG EXT_value_edg (EXT x)
+GOT EXT_value_got (EXT x)
+FLT64 EXT_value_flt64 (EXT x)
+VOID EXT_value_flt64_set (EXT x, FLT64 v)
+UINT64 EXT_value_uint64 (EXT x)
+VOID EXT_value_uint64_set (EXT x, UINT64 v)
+UINT32 EXT_value_uint32 (EXT x)
+VOID EXT_value_uint32_set (EXT x, UINT32 v)
+REG EXT_value_reguse_reg (EXT x)
+UINT32 EXT_value_reguse_use (EXT x)
+VOID EXT_value_reguse_set (EXT x, REG r, UINT32 u)
+REG EXT_value_regint32_reg (EXT x)
+UINT32 EXT_value_regint32_int (EXT x)
+VOID EXT_value_regint32_set (EXT x, REG r, INT32 u)
+REG EXT_value_versioncase_reg (EXT x)
+INT32 EXT_value_versioncase_casev (EXT x)
+ADDRINT EXT_value_versioncase_version (EXT x)
+VOID EXT_value_versioncase_set (EXT x, REG reg, INT32 casev, ADDRINT version)
+IADDR EXT_value_iaddrint32_iaddr (EXT x)
+INT32 EXT_value_iaddrint32_int32 (EXT x)
+VOID EXT_value_iaddrint32_set (EXT x, IADDR ia, INT32 u)
+REG EXT_value_regallochint_vreg (EXT x)
+REG EXT_value_regallochint_preg (EXT x)
+REGALLOC_HINT_TYPE EXT_value_regallochint_hint (EXT x)
+VOID EXT_value_regallochint_set (EXT x, REG vr, REG pr, REGALLOC_HINT_TYPE h)
+const SACT & EXT_value_sact (EXT x)
+VOID EXT_value_sact_set (EXT x, SACT v)
+IADDR EXT_value_iaddr (EXT x)
+VOID EXT_value_iaddr_set (EXT x, IADDR v)
+const VOID * EXT_value_const_ptr (EXT x)
+VOID EXT_value_const_ptr_set (EXT x, const VOID *v)
+VOID * EXT_value_ptr (EXT x)
+VOID EXT_value_ptr_set (EXT x, VOID *v)
+AFUNPTR EXT_value_afunptr (EXT x)
+VOID EXT_value_afunptr_set (EXT x, AFUNPTR v)
+BOOL EXT_linked (EXT n)
+VOID EXT_linked_set (EXT n, BOOL v)
+BOOL EXT_persistent (EXT x)
+VOID EXT_persistent_set (EXT x)
+VOID EXT_persistent_clear (EXT x)
+LOCALINLINE BOOL EXT_allocated (EXT n)
+LOCALINLINE VOID EXT_allocated_set (EXT n, BOOL v)
+LOCALINLINE VOID INS_ext_set (INS n, EXT ext)
+LOCALINLINE VOID BBL_ext_set (BBL n, EXT ext)
+LOCALINLINE VOID EDG_ext_set (EDG n, EXT ext)
+LOCALINLINE VOID RTN_ext_set (RTN n, EXT ext)
+LOCALINLINE VOID CHUNK_ext_set (CHUNK n, EXT ext)
+LOCALINLINE VOID EXT_number_set (EXT x, UINT32 v)
+LOCALINLINE VOID EXT_tag_set (EXT x, UINT32 v)
+LOCALINLINE VOID EXT_value_edg_set (EXT x, EDG v)
+LOCALINLINE VOID EXT_value_ins_set (EXT x, INS v)
+LOCALINLINE VOID EXT_value_sym_set (EXT x, SYM v)
+LOCALINLINE VOID EXT_value_opd_set (EXT x, int v)
+LOCALINLINE VOID EXT_value_chunk_set (EXT x, CHUNK v)
+LOCALINLINE VOID EXT_value_pltoff_set (EXT x, int v)
+LOCALINLINE VOID EXT_value_rel_set (EXT x, REL v)
+LOCALINLINE VOID EXT_value_got_set (EXT x, GOT v)
+LOCALINLINE INT32 EXT_no (EXT x)
VOID EXT_GarbageCollect ()
EXT EXT_Alloc ()
VOID EXT_Free (EXT ext)
VOID EXT_Copy (EXT ext, EXT clone)
EXT EXT_Clone (EXT ext)
+EXT EXTLIST_ext (EXTLIST x)
+VOID EXTLIST_ext_set (EXTLIST x, EXT y)
VOID EXTLIST_ExtPrepend (EXT ext, EXTLIST &parent)
VOID EXTLIST_ExtInsertAfter (EXT ext, EXT after, EXTLIST &parent)
VOID EXT_ExtlistUnlink (EXT ext, EXTLIST parent)
VOID EXTLIST_MoveInsExtRev (INS src, EXTLIST dst, const ATTRIBUTE *attr)
VOID INS_ExtInsertAfter (EXT ext, EXT after, INS parent)
VOID INS_ExtPrepend (EXT ext, INS parent)
VOID INS_ExtTransfer (INS src, INS dst)
UINT32 INS_NumExt (INS parent)
VOID EXT_InsUnlink (EXT ext, INS parent)
VOID BBL_ExtInsertAfter (EXT ext, EXT after, BBL parent)
VOID BBL_ExtPrepend (EXT ext, BBL parent)
VOID BBL_ExtAppend (EXT ext, BBL parent)
UINT32 BBL_NumExt (BBL parent)
VOID EXT_BblUnlink (EXT ext, BBL parent)
VOID EDG_ExtInsertAfter (EXT ext, EXT after, EDG parent)
VOID EDG_ExtPrepend (EXT ext, EDG parent)
UINT32 EDG_NumExt (EDG parent)
VOID EXT_EdgUnlink (EXT ext, EDG parent)
VOID RTN_ExtInsertAfter (EXT ext, EXT after, RTN parent)
VOID RTN_ExtPrepend (EXT ext, RTN parent)
UINT32 RTN_NumExt (RTN parent)
VOID EXT_RtnUnlink (EXT ext, RTN parent)
VOID CHUNK_ExtInsertAfter (EXT ext, EXT after, CHUNK parent)
VOID CHUNK_ExtPrepend (EXT ext, CHUNK parent)
UINT32 CHUNK_NumExt (CHUNK parent)
VOID EXT_ChunkUnlink (EXT ext, CHUNK parent)
EXT EXT_AllocAndLinkChunkGot (CHUNK chunk, const ATTRIBUTE *attribute, UINT32 number, GOT got)
EXT EXT_AllocAndLinkChunkSym (CHUNK chunk, const ATTRIBUTE *attribute, UINT32 number, SYM sym)
EXT EXT_AllocAndLinkChunkRel (CHUNK chunk, const ATTRIBUTE *attribute, UINT32 number, REL rel)
EXT EXT_AllocInsNone (const ATTRIBUTE *attribute, UINT32 number)
EXT EXT_AllocAndLinkInsNone (INS ins, const ATTRIBUTE *attribute, UINT32 number)
EXT EXT_AllocAndLinkInsUint32 (INS ins, const ATTRIBUTE *attribute, UINT32 number, UINT32 value)
EXT EXT_AllocAndLinkInsInt32 (INS ins, const ATTRIBUTE *attribute, UINT32 number, INT32 value)
EXT EXT_AllocAndLinkInsString (INS ins, const ATTRIBUTE *attribute, UINT32 number, string *value)
EXT EXT_AllocAndLinkInsFlt64 (INS ins, const ATTRIBUTE *attribute, UINT32 number, FLT64 value)
EXT EXT_AllocAndLinkInsUint64 (INS ins, const ATTRIBUTE *attribute, UINT32 number, UINT64 value)
EXT EXT_AllocAndLinkInsBbl (INS ins, const ATTRIBUTE *attribute, UINT32 number, BBL value)
EXT EXT_AllocAndLinkInsReguse (INS ins, const ATTRIBUTE *attribute, UINT32 number, REG reg, UINT32 use)
EXT EXT_AllocRegInt32 (const ATTRIBUTE *attribute, UINT32 number, REG reg, INT32 use)
EXT EXT_AllocVersionCase (const ATTRIBUTE *attribute, UINT32 number, REG reg, INT32 casev, ADDRINT version)
EXT EXT_AllocAndLinkInsRegInt32 (INS ins, const ATTRIBUTE *attribute, UINT32 number, REG reg, INT32 use)
EXT EXT_AllocIaddrInt32 (const ATTRIBUTE *attribute, UINT32 number, IADDR iaddr, INT32 val)
EXT EXT_AllocAndLinkInsRegallochint (INS ins, const ATTRIBUTE *attribute, UINT32 number, REG vreg, REG preg, REGALLOC_HINT_TYPE hint)
EXT EXT_AllocAndLinkBblRegallochint (BBL bbl, const ATTRIBUTE *attribute, UINT32 number, REG vreg, REG preg, REGALLOC_HINT_TYPE hint)
EXT EXT_AllocAndLinkInsRel (INS ins, const ATTRIBUTE *attribute, UINT32 number, REL rel)
EXT EXT_AllocAndLinkBblBbl (BBL bbl, const ATTRIBUTE *attribute, UINT32 number, BBL value)
EXT EXT_AllocAndLinkBblInt32 (BBL bbl, const ATTRIBUTE *attribute, UINT32 number, INT32 value)
EXT EXT_AllocAndLinkBblUint32 (BBL bbl, const ATTRIBUTE *attribute, UINT32 number, UINT32 value)
EXT EXT_AllocAndLinkBblIns (BBL bbl, const ATTRIBUTE *attribute, UINT32 number, INS value)
EXT EXT_AllocAndLinkBblGot (BBL bbl, const ATTRIBUTE *attribute, UINT32 number, GOT got)
EXT EXT_AllocAndLinkBblNone (BBL bbl, const ATTRIBUTE *attribute, UINT32 number)
EXT EXT_AllocAndLinkBblOpd (BBL bbl, const ATTRIBUTE *attribute, UINT32 number, UINT32 index)
EXT EXT_AllocAndLinkBblPltoff (BBL bbl, const ATTRIBUTE *attribute, UINT32 number, UINT32 index)
EXT EXT_AllocAndLinkBblFlt64 (BBL bbl, const ATTRIBUTE *attribute, UINT32 number, FLT64 value)
EXT EXT_AllocAndLinkBblRel (BBL bbl, const ATTRIBUTE *attribute, UINT32 number, REL rel)
EXT EXT_AllocAndLinkBblSym (BBL bbl, const ATTRIBUTE *attribute, UINT32 number, SYM sym)
EXT EXT_AllocAndLinkBblChunk (BBL bbl, const ATTRIBUTE *attribute, UINT32 number, CHUNK chunk)
EXT EXT_AllocAndLinkRtnSym (RTN rtn, const ATTRIBUTE *attribute, UINT32 number, SYM sym)
EXT EXT_AllocAndLinkRtnInt32 (RTN rtn, const ATTRIBUTE *attribute, UINT32 number, int value)
EXT EXT_AllocAndLinkRtnBbl (RTN rtn, const ATTRIBUTE *attribute, UINT32 number, BBL value)
EXT EXT_AllocAndLinkEdgEdg (EDG edg, const ATTRIBUTE *attribute, UINT32 number, EDG value)
EXT EXT_AllocAndLinkEdgFlt64 (EDG edg, const ATTRIBUTE *attribute, UINT32 number, FLT64 value)
EXT EXT_AllocAndLinkBblSact (BBL bbl, const ATTRIBUTE *attribute, UINT32 number, SACT act)
EXT EXT_AllocAndLinkInsSact (INS ins, const ATTRIBUTE *attribute, UINT32 number, SACT act)
EXT EXT_AllocAndLinkInsConstPtr (INS ins, const ATTRIBUTE *attribute, UINT32 number, const VOID *ptr)
EXT EXT_AllocAndLinkInsPtr (INS ins, const ATTRIBUTE *attribute, UINT32 number, VOID *ptr)
EXT EXT_AllocAndLinkBblConstPtr (BBL bbl, const ATTRIBUTE *attribute, UINT32 number, const VOID *ptr)
EXT EXT_AllocAndLinkInsIaddr (INS ins, const ATTRIBUTE *attribute, UINT32 number, IADDR iaddr)
EXT EXT_AllocAndLinkInsAfunptr (INS ins, const ATTRIBUTE *attribute, UINT32 number, AFUNPTR fptr)
+LOCALFUN EXT ext_FindExt (EXT ext, UINT16 tag)
EXT EXT_FindFirst (EXT ext, const ATTRIBUTE *attribute)
EXT EXT_FindNext (EXT ext)
string EXT_StringShort (EXT ext, BOOL tiny)
string EXT_ListString (EXT ext)
VOID EXT_Check (EXT ext)
VOID EXT_CheckFree ()
const ATTRIBUTE ATTR_ins_delete ("ins_delete","inst","ins_delete", EXT_ATTR_MODE_SINGLE, VAL_TYPE_NONE, FALSE, FALSE,"Delete instruction")
ARRAYBASE ImgArrayBase ("img pool", 1024)
STRIPE< IMG_STRUCT_BASE > ImgStripeBase ("img stripe base","core",&ImgArrayBase)
+IMG IMG_INVALID ()
+INT32 IMG_no (IMG x)
+IMG_BUILDER IMG_builder (IMG x)
+void IMG_builder_set (IMG x, IMG_BUILDER t)
+IMG_TYPE IMG_type (IMG x)
+void IMG_type_set (IMG x, IMG_TYPE y)
+BOOL IMG_valid (IMG x)
+IMG IMG_next (IMG x)
+VOID IMG_next_set (IMG x, IMG y)
+IMG IMG_prev (IMG x)
+VOID IMG_prev_set (IMG x, IMG y)
+SEC IMG_first_original_sec (IMG x)
+VOID IMG_first_original_sec_set (IMG x, SEC y)
+SEC IMG_sec_head (IMG x)
+VOID IMG_sec_head_set (IMG x, SEC y)
+SEC IMG_sec_tail (IMG x)
+VOID IMG_sec_tail_set (IMG x, SEC y)
+SYM IMG_first_original_symtab (IMG x)
+VOID IMG_first_original_symtab_set (IMG x, SYM y)
+SYM IMG_regsym_head (IMG x)
+VOID IMG_regsym_head_set (IMG x, SYM y)
+SYM IMG_regsym_tail (IMG x)
+VOID IMG_regsym_tail_set (IMG x, SYM y)
+SYM IMG_first_original_dynsym (IMG x)
+VOID IMG_first_original_dynsym_set (IMG x, SYM y)
+SYM IMG_dynsym_head (IMG x)
+VOID IMG_dynsym_head_set (IMG x, SYM y)
+SYM IMG_dynsym_tail (IMG x)
+VOID IMG_dynsym_tail_set (IMG x, SYM y)
+BBL IMG_entry (IMG x)
+VOID IMG_entry_set (IMG x, BBL y)
+const string & IMG_filename_i (IMG x)
+VOID IMG_filename_i_set (IMG x, const string *y)
+const VOID * IMG_data_i (IMG x)
+VOID IMG_data_i_set (IMG x, const VOID *y)
+USIZE IMG_size_i (IMG x)
+VOID IMG_size_i_set (IMG x, UINT32 y)
+UINT32 IMG_numpltoffentries (IMG x)
+VOID IMG_numpltoffentries_set (IMG x, UINT32 y)
+UINT64 IMG_pv_delta (IMG x)
+VOID IMG_pv_delta_set (IMG x, UINT64 y)
+IADDR IMG_gp_i (IMG x)
+VOID IMG_gp_i_set (IMG x, IADDR y)
+IADDR IMG_init (IMG x)
+VOID IMG_init_set (IMG x, IADDR y)
+IADDR IMG_seg_text_vaddr_i (IMG x)
+IADDR IMG_seg_data_vaddr_i (IMG x)
+OADDR IMG_seg_text_vaddr_o (IMG x)
+OADDR IMG_seg_data_vaddr_o (IMG x)
+USIZE IMG_seg_text_vsize_i (IMG x)
+USIZE IMG_seg_data_vsize_i (IMG x)
+USIZE IMG_seg_text_vsize_o (IMG x)
+USIZE IMG_seg_data_vsize_o (IMG x)
+USIZE IMG_seg_text_fsize_i (IMG x)
+USIZE IMG_seg_data_fsize_i (IMG x)
+USIZE IMG_seg_text_fsize_o (IMG x)
+USIZE IMG_seg_data_fsize_o (IMG x)
+USIZE IMG_seg_text_foffset_i (IMG x)
+USIZE IMG_seg_data_foffset_i (IMG x)
+USIZE IMG_seg_text_foffset_o (IMG x)
+USIZE IMG_seg_data_foffset_o (IMG x)
+VOID IMG_seg_text_vaddr_i_set (IMG x, IADDR y)
+VOID IMG_seg_data_vaddr_i_set (IMG x, IADDR y)
+VOID IMG_seg_text_vaddr_o_set (IMG x, OADDR y)
+VOID IMG_seg_data_vaddr_o_set (IMG x, OADDR y)
+VOID IMG_seg_text_vsize_i_set (IMG x, USIZE y)
+VOID IMG_seg_data_vsize_i_set (IMG x, USIZE y)
+VOID IMG_seg_text_vsize_o_set (IMG x, USIZE y)
+VOID IMG_seg_data_vsize_o_set (IMG x, USIZE y)
+VOID IMG_seg_text_fsize_i_set (IMG x, USIZE y)
+VOID IMG_seg_data_fsize_i_set (IMG x, USIZE y)
+VOID IMG_seg_text_fsize_o_set (IMG x, USIZE y)
+VOID IMG_seg_data_fsize_o_set (IMG x, USIZE y)
+VOID IMG_seg_text_foffset_i_set (IMG x, USIZE y)
+VOID IMG_seg_data_foffset_i_set (IMG x, USIZE y)
+VOID IMG_seg_text_foffset_o_set (IMG x, USIZE y)
+VOID IMG_seg_data_foffset_o_set (IMG x, USIZE y)
+OADDR IMG_gp_o (IMG x)
+VOID IMG_gp_o_set (IMG x, OADDR y)
+const VOID * IMG_fileheader_i (IMG x)
+const VOID * IMG_progheaders_i (IMG x)
+string str (IMG img)
+ADDRINT IMG_load_offset (IMG x)
+VOID IMG_load_offset_set (IMG x, ADDRINT y)
+ADDRINT IMG_low_address (IMG x)
+VOID IMG_low_address_set (IMG x, ADDRINT y)
+ADDRINT IMG_high_address (IMG x)
+VOID IMG_high_address_set (IMG x, ADDRINT y)
+BOOL IMG_runtime (IMG x)
+VOID IMG_runtime_set (IMG x, BOOL y)
+BOOL IMG_text_from_image (IMG x)
+VOID IMG_text_from_image_set (IMG x, BOOL y)
+UINT32 IMG_unique_id (IMG x)
+VOID IMG_unique_id_set (IMG x, UINT32 y)
+IADDR IMG_entry_addr_i (IMG x)
+VOID IMG_entry_addr_i_set (IMG x, IADDR y)
+BOOL IMG_is_main_executable (IMG x)
+VOID IMG_is_main_executable_set (IMG x, BOOL y)
+BOOL IMG_x32 (IMG x)
+VOID IMG_x32_set (IMG x, BOOL y)
+VOID IMG_elf_object_set (IMG x, VOID *obj)
+VOID * IMG_elf_object (IMG x)
+BOOL IMG_found_in_memory (IMG x)
+VOID IMG_found_in_memory_set (IMG x, BOOL y)
+BOOL IMG_allocated (IMG x)
+UINT32 IMG_num_regions (IMG x)
+VOID IMG_num_regions_set (IMG x, UINT32 y)
+IMG_REGION * IMG_regions (IMG x)
+VOID IMG_regions_set (IMG x, IMG_REGION *y)
+VOID IMG_is_loader_set (IMG x, BOOL y)
+BOOL IMG_is_loader (IMG x)
+VOID IMG_is_vdso_set (IMG x, BOOL y)
+BOOL IMG_is_vdso (IMG x)
+VOID IMG_loader_info_set (IMG x, VOID *y)
+VOID * IMG_loader_info (IMG x)
+VOID IMG_x32_shs_set (IMG x, const VOID *y)
+const VOID * IMG_x32_shs (IMG x)
+IMG_REGION CreateNewRegion (ADDRINT low, ADDRINT high)
+LOCALINLINE VOID IMG_allocated_set (IMG x, BOOL y)
+LOCALINLINE VOID IMG_app_set (IMG x, APP y)
+LOCALINLINE APP IMG_app (IMG x)
+VOID IMG_GarbageCollect ()
IMG IMG_Alloc ()
SEC IMG_FindSecByName (IMG img, const string &name)
SEC IMG_FindSecByNameWithType (IMG img, const string &name, SEC_TYPE type)
SYM IMG_FindRegsymByOriginalIndex (IMG img, UINT32 index)
SYM IMG_FindDynsymByOriginalIndex (IMG img, UINT32 index)
SEC IMG_FindSecByOriginalIndex (IMG img, UINT32 index)
SEC IMG_FindSecByIaddrEndInclusive (IMG img, IADDR iaddr)
SEC IMG_FindSecByIaddr (IMG img, IADDR iaddr)
SEC IMG_FindSecByOaddrEndInclusive (IMG img, OADDR oaddr)
SEC IMG_FindSecByOaddr (IMG img, OADDR oaddr)
UINT32 IMG_NumSec (IMG img)
UINT32 IMG_NumRegsym (IMG img)
SYM IMG_FindRegsymByName (IMG img, const CHAR *name)
UINT32 IMG_NumDynsym (IMG img)
+LOCALFUN int cmp_secs_foffset (const void *p1, const void *p2)
VOID IMG_SortSecsByVaddr (IMG img)
VOID IMG_ComputeNewSecSizeUncooked (IMG img)
VOID IMG_InitOriginalImg (IMG img, const string &filename, const void *start, USIZE size)
VOID IMG_ComputeNewSecDataUncooked (IMG img)
string IMG_StringLong (IMG img)
VOID IMG_Check (IMG img)
VOID FreeImageLoaderInfo (VOID *arg)
VOID * CopyImageLoaderInfo (VOID *arg)
void IMG_load_offset_propagate (IMG img, void *loaderInfo)
VOID IMG_Free (IMG img)
VOID IMG_CookExecutableSections (IMG img)
VOID IMG_Append (IMG img, APP parent)
VOID IMG_Unlink (IMG img)
VOID IMG_InsertAfter (IMG img, IMG after, APP parent)
VOID IMG_InsertBefore (IMG img, IMG before, APP parent)
BOOL IMG_IsMainImage (IMG img)
BOOL IMG_IsAddressInImage (IMG img, ADDRINT addr)
ARRAYBASE InsArrayBase ("ins pool", 1024 *1024)
STRIPE< INS_STRUCT_BASE > InsStripeBase ("ins stripe base","core",&InsArrayBase)
+INS INS_INVALID ()
+BOOL INS_valid (INS x)
+INT32 INS_no (INS x)
+BOOL INS_allocated (INS x)
+BOOL INS_original (INS x)
+VOID INS_original_set (INS x, BOOL y)
+BOOL INS_preserve (INS x)
+VOID INS_preserve_set (INS x, BOOL y)
+BOOL INS_unwind (INS x)
+VOID INS_unwind_set (INS x, BOOL y)
+BOOL INS_resolved (INS x)
+VOID INS_resolved_set (INS x, BOOL y)
+BOOL INS_emuft (INS x)
+VOID INS_emuft_set (INS x, BOOL y)
+BOOL INS_needscondcallextraregs (INS x)
+VOID INS_needscondcallextraregs_set (INS x, BOOL y)
+BOOL INS_needsrepextraregs (INS x)
+VOID INS_needsrepextraregs_set (INS x, BOOL y)
+BOOL INS_analysisarg (INS x)
+VOID INS_analysisarg_set (INS x, BOOL y)
+BOOL INS_interruptable (INS x)
+VOID INS_interruptable_set (INS x, BOOL y)
+BOOL INS_placeholder (INS x)
+VOID INS_placeholder_set (INS x, BOOL y)
+BOOL INS_skipValueOpt (INS x)
+VOID INS_skipValueOpt_set (INS x, BOOL y)
+BOOL INS_isLastInsOfAddressCalculation (INS x)
+VOID INS_isLastInsOfAddressCalculation_set (INS x, BOOL y)
+BOOL INS_needsSegmentTranslation (INS x)
+VOID INS_needsSegmentTranslation_set (INS x, BOOL y)
+BOOL INS_insertedSegmentWrite (INS x)
+VOID INS_insertedSegmentWrite_set (INS x, BOOL y)
+BOOL INS_isJzOverThen (INS x)
+VOID INS_isJzOverThen_set (INS x, BOOL y)
+VOID INS_ret_in_xymm0_set (INS x, BOOL y)
+BOOL INS_ret_in_xymm0 (INS x)
+VOID INS_liveness_computed_set (INS x, BOOL y)
+BOOL INS_liveness_computed (INS x)
+VOID INS_first_ins_of_inlined_analysis_code_set (INS x, BOOL y)
+BOOL INS_first_ins_of_inlined_analysis_code (INS x)
+VOID INS_is_switch_to_pin_code_marker_set (INS x, BOOL y)
+BOOL INS_is_switch_to_app_code_marker (INS x)
+VOID INS_is_switch_to_app_code_marker_set (INS x, BOOL y)
+BOOL INS_is_call_bridge (INS x)
+VOID INS_is_call_bridge_set (INS x, BOOL y)
+BOOL INS_is_switch_to_pin_code_marker (INS x)
+VOID INS_inlined_analysis_code_set (INS x, BOOL y)
+BOOL INS_inlined_analysis_code (INS x)
+VOID INS_is_target_set (INS x, BOOL y)
+BOOL INS_is_target (INS x)
+VOID INS_encoded_with_corresponding_app_reg_set (INS x, BOOL y)
+BOOL INS_encoded_with_corresponding_app_reg (INS x)
BBL INS_bbl (INS x)
INS INS_next (INS x)
INS INS_prev (INS x)
+EXT INS_ext (INS x)
+string str (INS ins)
+REL INS_rel (INS x)
+VOID INS_rel_set (INS x, REL y)
+IADDR INS_iaddr (INS x)
+VOID INS_iaddr_set (INS x, IADDR y)
+LOCALINLINE VOID INS_allocated_set (INS x, BOOL y)
+LOCALINLINE VOID INS_bbl_set (INS x, BBL y)
+LOCALINLINE VOID INS_next_set (INS x, INS y)
+LOCALINLINE VOID INS_prev_set (INS x, INS y)
VOID INS_GarbageCollect ()
LOCALFUN void INS_Initialize (INS ins)
INS INS_Alloc ()
INS INS_AllocLocked ()
VOID INS_Free (INS ins)
VOID INS_FreeLocked (INS ins)
VOID INS_FreeRel (INS ins)
VOID INS_InsertBefore (INS ins, INS before, BBL parent)
VOID INS_Append (INS ins, BBL parent)
VOID INS_InsertAfter (INS ins, INS after, BBL parent)
VOID INS_Prepend (INS ins, BBL parent)
VOID INS_Unlink (INS ins)
UINT32 INS_NumAttrCrosslink (INS ins)
+VOID IMG_AllocateNewSecDataExec (IMG img)
VOID INS_Copy (INS ins, INS clone)
+INS INS_Clone (INS ins)
BOOL INS_MarkedForDeletion (INS ins)
VOID INS_MarkForDeletion (INS ins)
VOID INS_ExtMoveRev (INS src, INS dst, const ATTRIBUTE *attr)
VOID INS_ExtMove (INS src, INS dst, const ATTRIBUTE *attr)
STRIPE< INS_STRUCT_MAP > InsStripeMap ("ins stripe map","map",&InsArrayBase)
STRIPE< INS_STRUCT_SPARSE > InsStripeSparse ("ins stripe sparse","pincore",&InsArrayBase)
+USIZE INS_pos (INS x)
+VOID INS_pos_set (INS x, USIZE y)
+BBL INS_bbl_target (INS x)
+VOID INS_bbl_target_set (INS x, BBL y)
+INT32 INS_bbl_target_weight (INS x)
+VOID INS_bbl_target_weight_set (INS x, INT32 y)
+INS INS_ins_target (INS x)
+VOID INS_ins_target_set (INS x, INS y)
OADDR INS_GetOaddr (INS ins)
VOID IMG_ComputeNewSecSizeExecAndAddressMapping (IMG img)
VOID IMG_ComputeNewSecDataExec (IMG img)
ADDRINT SEC_ComputeOutputSizeOfExecutableSec (SEC sec, const ADDRINT secStart)
VOID INS_CheckFree ()
PINVM::PINSYNC_RWLOCK * GetINSResizeLock ()
VOID InitializeINSSupplementaryResizeLock (PINVM::ILOCK *lock)
VOID INS_CopyXlateAttributes (INS insNew, INS insOrig)
PREG MAKE_PREG (INT32 y)
REG PREG_2_REG (PREG pr)
REGVALUE MAKE_REGVALUE (ADDRINT y)
REGVALUE MAKE_PTR_REGVALUE (const VOID *y)
REGVALUE MemoryLoadRegvalue (REGVALUE address)
REGVALUE128 MemoryLoadRegvalue128 (ADDRINT address, UINT32 sizeInBytes)
REGVALUE256 MemoryLoadRegvalue256 (ADDRINT address, UINT32 sizeInBytes)
REGVALUE512 MemoryLoadRegvalue512 (ADDRINT address, UINT32 sizeInBytes)
VOID MemoryStoreRegvalue (REGVALUE address, REGVALUE value)
VOID MemoryStoreRegvalue128 (ADDRINT address, const REGVALUE128 &value, UINT32 sizeInBytes)
VOID MemoryStoreRegvalue256 (ADDRINT address, const REGVALUE256 &value, UINT32 sizeInBytes)
VOID MemoryStoreRegvalue512 (ADDRINT address, const REGVALUE512 &value, UINT32 sizeInBytes)
ARRAYBASE RelArrayBase ("rel pool", 1024 *1024)
STRIPE< REL_STRUCT_BASE > RelStripeBase ("rel stripe base","core",&RelArrayBase)
+REL REL_INVALID ()
+BOOL REL_valid (REL x)
+BOOL REL_allocated (REL x)
+REL_TYPE REL_type (REL x)
+INT32 REL_no (REL x)
+REL REL_target_next (REL x)
+REL REL_target_prev (REL x)
+CHUNK REL_target_chunk (REL x)
+UINT32 REL_target_off (REL x)
+INS REL_target_ins (REL x)
+VAL_TYPE REL_value_type (REL x)
+VAL * REL_value_val (REL x)
+SEC REL_value_val_secoff_sec (REL x)
+UINT32 REL_value_val_secoff_off (REL x)
+SYM REL_value_val_symoff_sym (REL x)
+UINT32 REL_value_val_symoff_off (REL x)
+GOT REL_value_val_got (REL x)
+UINT32 REL_value_val_opd (REL x)
+CHUNK REL_value_val_chunk (REL x)
+UINT32 REL_value_val_pltoff (REL x)
+UINT64 REL_value_val_uint64 (REL x)
+BBL REL_value_val_bbl (REL x)
+INS REL_value_val_ins (REL x)
+CHUNK REL_value_val_chunkoff_chunk (REL x)
+UINT32 REL_value_val_chunkoff_off (REL x)
+string str (REL rel)
+VOID REL_target_ins_set (REL x, INS y)
+BOOL REL_IsChunkType (REL rel)
+BOOL REL_IsInsType (REL rel)
+LOCALINLINE VOID REL_allocated_set (REL x, BOOL y)
+LOCALINLINE VOID REL_target_next_set (REL x, REL y)
+LOCALINLINE VOID REL_target_prev_set (REL x, REL y)
+LOCALINLINE VOID REL_type_set (REL x, REL_TYPE y)
+LOCALINLINE VOID REL_value_type_set (REL x, VAL_TYPE y)
+LOCALINLINE VOID REL_target_chunk_set (REL x, CHUNK y)
+LOCALINLINE VOID REL_target_off_set (REL x, UINT32 y)
const ATTRIBUTE ATTR_bbl_rel ("rel","rel","bbl_rel", EXT_ATTR_MODE_MULTIPLE, VAL_TYPE_REL, B_CROSSLINK, FALSE,"")
const ATTRIBUTE ATTR_ins_rel ("rel","rel","ins_rel", EXT_ATTR_MODE_MULTIPLE, VAL_TYPE_REL, B_CROSSLINK, FALSE,"")
const ATTRIBUTE ATTR_chunk_rel ("rel","rel","chunk_rel", EXT_ATTR_MODE_MULTIPLE, VAL_TYPE_REL, B_CROSSLINK, FALSE,"")
REL REL_Alloc ()
REL REL_First ()
REL REL_Next (REL rel)
VOID REL_Free (REL rel)
LOCALFUN VOID REL_LinkChunkoff (REL rel, CHUNK parent, UINT32 offset)
VOID REL_TargetSetAndLinkChunkoff (REL rel, REL_TYPE type, CHUNK parent, UINT32 offset)
VOID REL_UnlinkChunk (REL rel)
VOID REL_TargetSetAndLinkIns (REL rel, REL_TYPE type, INS ins)
+VOID REL_UnlinkIns (REL rel)
+VOID REL_ValueSetVal (REL rel, VAL_TYPE type, const VAL *val)
VOID REL_ValueSetChunk (REL rel, CHUNK chunk)
VOID REL_ValueSetChunkoff (REL rel, CHUNK chunk, USIZE off)
VOID REL_ValueSetBbl (REL rel, BBL bbl)
VOID REL_ValueSetIns (REL rel, INS ins)
VOID REL_ValueSetLdef (REL rel, LDEF ldef)
VOID REL_ValueSetGot (REL rel, GOT got)
VOID REL_ValueSetUint32 (REL rel, UINT32 v)
VOID REL_ValueSetUint64 (REL rel, UINT64 v)
VOID REL_ValueSetZero (REL rel)
VOID REL_ValueSetSymoff (REL rel, SYM sym, UINT32 off)
+LOCALFUN EXT FindRelInExtChain (EXT head, const ATTRIBUTE *attr, REL rel)
VOID REL_ValueUnlink (REL rel, BOOL relax)
VOID REL_MoveoverBblValues (const BBL src, const BBL dst)
VOID REL_MoveoverInsValues (const INS src, const INS dst)
BOOL REL_ValueEqual (REL rel, REL master)
BOOL HasSpecialOffsetForGotPcAccess (RTN rtn)
VOID CHUNK_ApplyRels (CHUNK chunk)
+LOCALFUN string RELTYPE_StringShort (REL_TYPE type)
string REL_StringShort (REL rel)
VOID REL_Check (REL rel)
ARRAYBASE RtnArrayBase ("rtn pool", 64 *1024)
STRIPE< RTN_STRUCT_BASE > RtnStripeBase ("rtn stripe base","core",&RtnArrayBase)
+RTN RTN_INVALID ()
+BOOL RTN_valid (RTN x)
+INT32 RTN_no (RTN x)
+BOOL RTN_allocated (RTN x)
+RTN_TYPE RTN_type (RTN x)
+VOID RTN_type_set (RTN x, RTN_TYPE y)
+BOOL RTN_marked (RTN x)
+VOID RTN_marked_set (RTN x, BOOL y)
+BOOL RTN_trampoline (RTN x)
+VOID RTN_trampoline_set (RTN x, BOOL y)
+BOOL RTN_optimizable (RTN x)
+VOID RTN_optimizable_set (RTN x, BOOL y)
+BOOL RTN_inssFetched (RTN x)
+VOID RTN_inssFetched_set (RTN x, BOOL y)
+BOOL RTN_hasOutsideBranch (RTN x)
+VOID RTN_hasOutsideBranch_set (RTN x, BOOL y)
+BOOL RTN_dynamic (RTN x)
+VOID RTN_dynamic_set (RTN x, BOOL y)
+SEC RTN_sec (RTN x)
+VOID RTN_sec_set (RTN x, SEC y)
+RTN RTN_next (RTN x)
+RTN RTN_prev (RTN x)
+BBL RTN_bbl_head (RTN x)
+VOID RTN_bbl_head_set (RTN x, BBL y)
+BBL RTN_bbl_tail (RTN x)
+VOID RTN_bbl_tail_set (RTN x, BBL y)
+BBL RTN_bbl_ins_head_only (RTN x)
+VOID RTN_bbl_ins_head_only_set (RTN x, BBL y)
+const string & RTN_name (RTN x)
+const string & RTN_file (RTN x)
+SYM RTN_sym (RTN x)
+VOID RTN_sym_set (RTN x, SYM y)
+IADDR RTN_vaddr_i (RTN x)
+OADDR RTN_vaddr_o (RTN x)
+VOID RTN_vaddr_o_set (RTN x, OADDR y)
+USIZE RTN_size (RTN x)
+VOID RTN_size_set (RTN x, USIZE y)
+VOID RTN_aoti_set (RTN x, BOOL y)
+BOOL RTN_aoti (RTN x)
+EXT RTN_ext (RTN x)
+string str (RTN rtn)
+string longstr (RTN rtn)
+IADDR * RTN_unprobed_function (RTN x)
+VOID RTN_artificial_set (RTN x, BOOL y)
+BOOL RTN_artificial (RTN x)
+RTN RTN_ifunc_impl (RTN x)
+VOID RTN_ifunc_impl_set (RTN x, RTN impl)
+RTN RTN_ifunc_resolver (RTN x)
+VOID RTN_ifunc_resolver_set (RTN x, RTN resolver)
+LOCALINLINE VOID RTN_allocated_set (RTN x, BOOL y)
+LOCALINLINE VOID RTN_vaddr_i_set (RTN x, IADDR y)
+LOCALINLINE VOID RTN_next_set (RTN x, RTN y)
+LOCALINLINE VOID RTN_prev_set (RTN x, RTN y)
+LOCALINLINE VOID RTN_fileptr_set (RTN x, const string *y)
+LOCALINLINE VOID RTN_nameptr_set (RTN x, const string *y)
+LOCALINLINE const string * RTN_nameptr (RTN x)
+LOCALINLINE const string * RTN_fileptr (RTN x)
+LOCALINLINE VOID RTN_sym_init (RTN x)
+VOID RTN_GarbageCollect ()
+LOCALCONST string StringNoname ("*noname*")
+LOCALCONST string StringNofile ("*nofile*")
RTN RTN_Alloc ()
VOID RTN_Free (RTN rtn)
VOID RTN_InsertBefore (RTN rtn, RTN before, SEC parent)
VOID RTN_Append (RTN rtn, SEC parent)
VOID RTN_InsertAfter (RTN rtn, RTN after, SEC parent)
VOID RTN_Prepend (RTN rtn, SEC parent)
VOID RTN_Unlink (RTN rtn)
VOID RTN_SetVaddr (RTN rtn, IADDR iaddr)
+VOID RTN_SetName (RTN rtn, const string &name)
UINT32 RTN_numIns (RTN rtn)
UINT32 RTN_ByteSize (RTN rtn)
UINT32 RTN_NumBbl (RTN rtn)
UINT32 RTN_NumAttrCrosslink (RTN rtn)
BOOL RTN_IsLeaf (RTN rtn)
+BOOL RTN_ShouldNotBeChanged (RTN rtn)
+VOID RTN_Check (RTN rtn)
string RTN_StringLong (RTN rtn)
string RTN_StringLongFancy (RTN rtn)
string RTN_StringLongDataFancy (RTN rtn)
VOID RTN_Unmark1Bbls (RTN rtn)
VOID RTN_Mark1Bbls (RTN rtn)
VOID RTN_MoveBbls (RTN src, RTN dst)
VOID RTN_MakeBbls (RTN rtn)
VOID RTN_UnmakeBbls (RTN rtn)
VOID RTN_RemoveAllExt (RTN rtn)
ARRAYBASE SecArrayBase ("sec pool", 1024)
STRIPE< SEC_STRUCT_BASE > SecStripeBase ("sec stripe base","core",&SecArrayBase)
+SEC SEC_INVALID ()
+BOOL SEC_valid (SEC x)
+INT32 SEC_no (SEC x)
+BOOL SEC_allocated (SEC x)
+BOOL SEC_mapped (SEC x)
+BOOL SEC_original (SEC x)
+BOOL SEC_readonly (SEC x)
+VOID SEC_readonly_set (SEC x, BOOL y)
+BOOL SEC_rel_processed (SEC x)
+BOOL SEC_sparse (SEC x)
+VOID SEC_sparse_set (SEC x, BOOL y)
+BOOL SEC_on_disk (SEC x)
+VOID SEC_on_disk_set (SEC x, BOOL y)
+BOOL SEC_cooked (SEC x)
+VOID SEC_cooked_set (SEC x, BOOL y)
+SEC_TYPE SEC_type (SEC x)
+VOID SEC_type_set (SEC x, SEC_TYPE y)
+SEGMENT_TYPE SEC_segment (SEC x)
+VOID SEC_segment_set (SEC x, SEGMENT_TYPE y)
+SEC_STATE SEC_state (SEC x)
+IMG SEC_img (SEC x)
+SYM SEC_regsym (SEC x)
+VOID SEC_regsym_set (SEC x, SYM y)
+SYM SEC_dynsym (SEC x)
+VOID SEC_dynsym_set (SEC x, SYM y)
+INS SEC_first_original_ins (SEC x)
+VOID SEC_first_original_ins_set (SEC x, INS y)
+SEC SEC_next (SEC x)
+SEC SEC_prev (SEC x)
+RTN SEC_rtn_head (SEC x)
+VOID SEC_rtn_head_set (SEC x, RTN y)
+RTN SEC_rtn_tail (SEC x)
+VOID SEC_rtn_tail_set (SEC x, RTN y)
+CHUNK SEC_chunk_head (SEC x)
+VOID SEC_chunk_head_set (SEC x, CHUNK y)
+CHUNK SEC_chunk_tail (SEC x)
+VOID SEC_chunk_tail_set (SEC x, CHUNK y)
+const string & SEC_name (SEC x)
+const CHAR * SEC_seg_name (SEC x)
+VOID SEC_seg_name_set (SEC x, CHAR *y)
+UINT32 SEC_alignment (SEC x)
+VOID SEC_alignment_set (SEC x, UINT32 y)
+const VOID * SEC_data_i (SEC x)
+VOID SEC_data_i_set (SEC x, const VOID *y)
+VOID * SEC_data_o (SEC x)
+USIZE SEC_foffset_i (SEC x)
+USIZE SEC_foffset_o (SEC x)
+USIZE SEC_size_o (SEC x)
+USIZE SEC_size_i (SEC x)
+const VOID * SEC_sectheader_i (SEC x)
+VOID SEC_sectheader_i_set (SEC x, const VOID *y)
+VOID * SEC_sectheader_o (SEC x)
+IADDR SEC_vaddr_i (SEC x)
+OADDR SEC_vaddr_o (SEC x)
+SEC SEC_sec_dynrel (SEC x)
+SEC SEC_sec_regrel (SEC x)
+UINT32 SEC_index_i (SEC x)
+VOID SEC_name_set (SEC x, const string *y)
+string str (SEC sec)
+string longstr (SEC sec)
+VOID SEC_vaddr_o_set (SEC x, OADDR y)
+LOCALINLINE VOID SEC_allocated_set (SEC x, BOOL y)
+LOCALINLINE VOID SEC_mapped_set (SEC x, BOOL y)
+LOCALINLINE VOID SEC_original_set (SEC x, BOOL y)
+LOCALINLINE VOID SEC_size_i_set (SEC x, UINT32 y)
+LOCALINLINE VOID SEC_index_i_set (SEC x, UINT32 y)
+LOCALINLINE VOID SEC_next_set (SEC x, SEC y)
+LOCALINLINE VOID SEC_prev_set (SEC x, SEC y)
+LOCALINLINE VOID SEC_size_o_set (SEC x, USIZE y)
+LOCALINLINE VOID SEC_data_o_set (SEC x, VOID *y)
+LOCALINLINE VOID SEC_state_set (SEC x, SEC_STATE y)
+LOCALINLINE VOID SEC_img_set (SEC x, IMG y)
+LOCALINLINE VOID SEC_foffset_i_set (SEC x, USIZE y)
+LOCALINLINE VOID SEC_foffset_o_set (SEC x, USIZE y)
+LOCALINLINE VOID SEC_vaddr_i_set (SEC x, IADDR y)
VOID SEC_GarbageCollect ()
SEC SEC_Alloc ()
VOID SEC_Free (SEC sec)
VOID SEC_InsertBefore (SEC sec, SEC before, IMG parent)
VOID SEC_Append (SEC sec, IMG parent)
VOID SEC_InsertAfter (SEC sec, SEC after, IMG parent)
VOID SEC_Prepend (SEC sec, IMG parent)
VOID SEC_Unlink (SEC sec)
VOID SEC_InitOriginalSec (SEC sec, const string &name, UINT32 index, IADDR iaddr, USIZE offset, USIZE size, const VOID *data, UINT32 alignment, BOOL mapped, BOOL on_disk, const VOID *sectheader)
VOID SEC_InitDynamicCodeSection (SEC newSec, IADDR iaddr, USIZE size)
RTN SEC_FindRtnByName (SEC sec, const string &name)
RTN SEC_FindRtnByIaddr (SEC sec, IADDR iaddr)
CHUNK SEC_FindChunkByIaddr (SEC sec, IADDR iaddr)
BOOL SEC_ContainsIaddr (SEC sec, IADDR iaddr)
BOOL SEC_ContainsIaddrEndInclusive (SEC sec, IADDR iaddr)
BOOL SEC_ContainsOaddr (SEC sec, OADDR oaddr)
BOOL SEC_ContainsOaddrEndInclusive (SEC sec, OADDR oaddr)
+LOCALFUN SEC_STATE FindNextState (SEC_STATE state, const SEC_STATE *list)
VOID SEC_StateSet (SEC sec, SEC_STATE state)
UINT64 SEC_GetUnalignedIDataByOffsetUINT64 (SEC sec, USIZE offset)
UINT64 SEC_GetIDataByOffsetUINT64 (SEC sec, UINT64 offset)
UINT64 SEC_GetIDataUINT64 (SEC sec, IADDR iaddr)
INT32 SEC_GetUnalignedIDataByOffsetINT32 (SEC sec, UINT64 offset)
INT32 SEC_GetIDataByOffsetUINT32 (SEC sec, UINT64 offset)
INT32 SEC_GetIDataINT32 (SEC sec, IADDR iaddr)
UINT32 SEC_NumRtn (SEC sec)
string SEC_String (SEC_TYPE type)
string SEC_String (SEC_STATE state)
string SEGMENT_StringShort (SEGMENT_TYPE segment)
string SEC_StringLong (SEC sec)
string SEC_StringLongWithChunks (SEC sec)
string SEC_StringDataDumpI (SEC sec, UINT32 width)
VOID SEC_SetNewSize (SEC sec, USIZE size)
VOID SEC_SetNewAddressAndOffset (SEC sec, OADDR oaddr, USIZE offset)
VOID SEC_IncNewSize (SEC sec, USIZE size)
VOID SEC_SetNewData (SEC sec, VOID *data)
VOID SEC_SetDataCopy (SEC sec)
VOID SEC_Check (SEC sec)
+LOCALVAR KNOB< UINT32 > KnobMaxIns (KNOB_MODE_WRITEONCE,"supported:debug","max_ins","16384","Maximum number of INS allowed")
+LOCALVAR KNOB< UINT32 > KnobMaxRtn (KNOB_MODE_WRITEONCE,"supported:debug","max_rtn","16384","Maximum number of RTN allowed")
+LOCALVAR KNOB< UINT32 > KnobMaxSym (KNOB_MODE_WRITEONCE,"supported:debug","max_sym","16384","Maximum number of SYM allowed")
+LOCALVAR KNOB< UINT32 > KnobMaxSec (KNOB_MODE_WRITEONCE,"supported:debug","max_sec","16384","Maximum number of SEC allowed")
+LOCALVAR KNOB< BOOL > KnobRecycle (KNOB_MODE_WRITEONCE,"supported:debug","recycle","1","Reuse freed stripe elements")
+LOCALVAR KNOB< BOOL > KnobRecycleRtn (KNOB_MODE_WRITEONCE,"supported:debug","recycle_rtn","1","Reuse freed rtn")
VOID InitializeStripes ()
ARRAYBASE SymArrayBase ("sym pool", 128 *1024)
STRIPE< SYM_STRUCT_BASE > SymStripeBase ("sym stripe base","core",&SymArrayBase)
+SYM SYM_INVALID ()
+BOOL SYM_valid (SYM x)
+INT32 SYM_no (SYM x)
+BOOL SYM_allocated (SYM x)
+BOOL SYM_original (SYM x)
+BOOL SYM_global (SYM x)
+BOOL SYM_dynamic (SYM x)
+SYM_IFUNC_TYPE SYM_ifunc_type (SYM x)
+VAL_TYPE SYM_type (SYM x)
+BOOL SYM_ifunc_resolver (SYM x)
+BOOL SYM_ifunc_impl (SYM x)
+BOOL SYM_is_generated_by_pin (SYM x)
+SYM_STATE SYM_state (SYM x)
+IMG SYM_img (SYM x)
+SYM SYM_next (SYM x)
+SYM SYM_prev (SYM x)
+const string & SYM_name (SYM x)
+UINT32 SYM_index_i (SYM x)
+VOID SYM_index_i_set (SYM x, UINT32 y)
+UINT32 SYM_string_offset (SYM x)
+IADDR SYM_vaddr_i (SYM x)
+UINT32 SYM_size_i (SYM x)
+const VOID * SYM_symbheader_i (SYM x)
+VAL * SYM_val (SYM x)
+IADDR SYM_val_iaddr (SYM x)
+BBL SYM_val_bbl (SYM x)
+RTN SYM_val_rtn (SYM x)
+SEC SYM_val_sec (SYM x)
+LDEF SYM_val_ldef (SYM x)
+CHUNK SYM_val_chunkoff_chunk (SYM x)
+UINT32 SYM_val_chunkoff_off (SYM x)
+VOID SYM_val_iaddr_set (SYM x, IADDR y)
+VOID SYM_val_bbl_set (SYM x, BBL y)
+VOID SYM_val_rtn_set (SYM x, RTN y)
+VOID SYM_val_sec_set (SYM x, SEC y)
+VOID SYM_val_ldef_set (SYM x, LDEF y)
+VOID SYM_val_chunkoff_chunk_set (SYM x, CHUNK y)
+VOID SYM_val_chunkoff_off_set (SYM x, UINT32 y)
+string str (SYM sym)
+string longstr (SYM sym)
+VOID SYM_ifunc_type_set (SYM x, SYM_IFUNC_TYPE y)
+SYM SYM_contained_symbols (SYM x)
+LOCALINLINE VOID SYM_symbheader_i_set (SYM x, const VOID *y)
+LOCALINLINE VOID SYM_nameptr_set (SYM x, const string *y)
+LOCALINLINE const string * SYM_nameptr (SYM x)
+LOCALINLINE VOID SYM_dynamic_set (SYM x, BOOL y)
+LOCALINLINE VOID SYM_global_set (SYM x, BOOL y)
+LOCALINLINE VOID SYM_allocated_set (SYM x, BOOL y)
+LOCALINLINE VOID SYM_original_set (SYM x, BOOL y)
+LOCALINLINE VOID SYM_img_set (SYM x, IMG y)
+LOCALINLINE VOID SYM_next_set (SYM x, SYM y)
+LOCALINLINE VOID SYM_prev_set (SYM x, SYM y)
+LOCALINLINE VOID SYM_type_set (SYM x, VAL_TYPE y)
+LOCALINLINE VOID SYM_vaddr_i_set (SYM x, IADDR y)
+LOCALINLINE VOID SYM_size_i_set (SYM x, UINT32 y)
+LOCALINLINE VOID SYM_state_set (SYM x, SYM_STATE y)
+LOCALINLINE VOID SYM_string_offset_set (SYM x, UINT32 y)
+LOCALINLINE VOID SYM_contained_symbols_set (SYM x, SYM y)
const ATTRIBUTE ATTR_bbl_regsym ("reg","sym","bbl_regsym", EXT_ATTR_MODE_MULTIPLE, VAL_TYPE_SYM, B_CROSSLINK, FALSE,"")
const ATTRIBUTE ATTR_bbl_dynsym ("dyn","sym","bbl_dynsym", EXT_ATTR_MODE_MULTIPLE, VAL_TYPE_SYM, B_CROSSLINK, FALSE,"")
const ATTRIBUTE ATTR_chunk_regsym ("reg","sym","chunk_regsym", EXT_ATTR_MODE_MULTIPLE, VAL_TYPE_SYM, B_CROSSLINK, FALSE,"")
const ATTRIBUTE ATTR_chunk_dynsym ("dyn","sym","chunk_dynsym", EXT_ATTR_MODE_MULTIPLE, VAL_TYPE_SYM, B_CROSSLINK, FALSE,"")
VOID SYM_GarbageCollect ()
VOID SYM_SetSize (SYM sym, UINT32 size)
SYM SYM_Alloc ()
VOID SYM_Free (SYM sym)
VOID REGSYM_InsertBefore (SYM sym, SYM before, IMG parent)
+VOID REGSYM_Append (SYM sym, IMG parent)
+VOID REGSYM_InsertAfter (SYM sym, SYM after, IMG parent)
+VOID REGSYM_Prepend (SYM sym, IMG parent)
+VOID DYNSYM_InsertBefore (SYM sym, SYM before, IMG parent)
+VOID DYNSYM_Append (SYM sym, IMG parent)
+VOID DYNSYM_InsertAfter (SYM sym, SYM after, IMG parent)
+VOID DYNSYM_Prepend (SYM sym, IMG parent)
VOID DYNSYM_Unlink (SYM sym)
VOID REGSYM_Unlink (SYM sym)
VOID SYM_Init (SYM sym, VAL_TYPE type, BOOL dynamic, SYM_IFUNC_TYPE ifunc_type, const string &name, UINT32 index, IADDR iaddr, UINT32 isize, const VOID *symbheader, BOOL global, BOOL original, UINT32 string_offset)
+LOCALFUN SYM_STATE FindNextState (SYM_STATE state, const SYM_STATE *list)
+VOID SYM_StateSet (SYM sym, SYM_STATE state)
+VOID SYM_ValueSetAndLinkSec (SYM sym, SEC sec)
+VOID SYM_ValueSetLdef (SYM sym, LDEF ldef)
+VOID SYM_ValueSetAndLinkBbl (SYM sym, BBL bbl)
+VOID SYM_ValueSetIaddr (SYM sym, IADDR x)
+VOID SYM_ValueSetAndLinkChunkoff (SYM sym, CHUNK chunk, UINT32 offset)
VOID BBL_RemoveRegsyms (BBL bbl)
VOID CHUNK_RemoveRegsyms (CHUNK chunk)
+LOCALFUN VOID SYM_LinkWithTarget (SYM sym, IMG img)
VOID IMG_LinkRegsymWithTarget (IMG img)
SYM IMG_AllocAndAppendNewUndefDynsym (IMG img, const string &name)
SYM IMG_AllocAndAppendNewBblDynsym (IMG img, const string &name, BBL bbl)
SYM IMG_AllocAndAppendNewRtnRegsym (IMG img, const string &name, BBL bbl)
SYM IMG_AllocAndAppendNewChunkDynsym (IMG img, const string &name, CHUNK chunk, UINT32 chunk_offset)
SYM IMG_AllocAndAppendNewChunkRegsym (IMG img, const string &name, CHUNK chunk, UINT32 chunk_offset)
VOID IMG_LinkDynsymWithTarget (IMG img)
string SYM_StringShort (SYM sym)
string IMG_PrintRegSyms (IMG img)
VOID SYM_Check (SYM sym)
VOID SYM_AddContainedSymbol (SYM sym, SYM contained_sym)
+SACT VAL_sact (VAL_TYPE t, const VAL *val)
+RTN VAL_rtn (VAL_TYPE t, const VAL *val)
+BBL VAL_bbl (VAL_TYPE t, const VAL *val)
+EDG VAL_edg (VAL_TYPE t, const VAL *val)
+INS VAL_ins (VAL_TYPE t, const VAL *val)
+SEC VAL_sec (VAL_TYPE t, const VAL *val)
+LDEF VAL_ldef (VAL_TYPE t, const VAL *val)
+CHUNK VAL_chunk (VAL_TYPE t, const VAL *val)
+SYM VAL_sym (VAL_TYPE t, const VAL *val)
+GOT VAL_got (VAL_TYPE t, const VAL *val)
+IADDR VAL_iaddr (VAL_TYPE t, const VAL *val)
+SYM VAL_symoff_sym (VAL_TYPE t, const VAL *val)
+UINT32 VAL_symoff_off (VAL_TYPE t, const VAL *val)
+SEC VAL_secoff_sec (VAL_TYPE t, const VAL *val)
+UINT32 VAL_secoff_off (VAL_TYPE t, const VAL *val)
+CHUNK VAL_chunkoff_chunk (VAL_TYPE t, const VAL *val)
+UINT32 VAL_chunkoff_off (VAL_TYPE t, const VAL *val)
+UINT32 VAL_opd (VAL_TYPE t, const VAL *val)
+UINT32 VAL_pltoff (VAL_TYPE t, const VAL *val)
+UINT64 VAL_uint64 (VAL_TYPE t, const VAL *val)
+UINT32 VAL_uint32 (VAL_TYPE t, const VAL *val)
+UINT32 VAL_two_int_i1 (VAL_TYPE t, const VAL *val)
+UINT32 VAL_two_int_i2 (VAL_TYPE t, const VAL *val)
+REG VAL_regallochint_vreg (VAL_TYPE t, const VAL *val)
+REG VAL_regallochint_preg (VAL_TYPE t, const VAL *val)
+REGALLOC_HINT_TYPE VAL_regallochint_hint (VAL_TYPE t, const VAL *val)
+VOID VAL_sact_set (VAL_TYPE t, VAL *val, SACT act)
+VOID VAL_rtn_set (VAL_TYPE t, VAL *val, RTN y)
+VOID VAL_bbl_set (VAL_TYPE t, VAL *val, BBL y)
+VOID VAL_edg_set (VAL_TYPE t, VAL *val, EDG y)
+VOID VAL_ins_set (VAL_TYPE t, VAL *val, INS y)
+VOID VAL_sec_set (VAL_TYPE t, VAL *val, SEC y)
+VOID VAL_sym_set (VAL_TYPE t, VAL *val, SYM y)
+VOID VAL_ldef_set (VAL_TYPE t, VAL *val, LDEF y)
+VOID VAL_chunk_set (VAL_TYPE t, VAL *val, CHUNK y)
+VOID VAL_iaddr_set (VAL_TYPE t, VAL *val, IADDR y)
+VOID VAL_secoff_sec_set (VAL_TYPE t, VAL *val, SEC y)
+VOID VAL_secoff_off_set (VAL_TYPE t, VAL *val, UINT32 y)
+VOID VAL_symoff_sym_set (VAL_TYPE t, VAL *val, SYM y)
+VOID VAL_symoff_off_set (VAL_TYPE t, VAL *val, UINT32 y)
+VOID VAL_chunkoff_chunk_set (VAL_TYPE t, VAL *val, CHUNK y)
+VOID VAL_chunkoff_off_set (VAL_TYPE t, VAL *val, UINT32 y)
+VOID VAL_opd_set (VAL_TYPE t, VAL *val, UINT32 y)
+VOID VAL_pltoff_set (VAL_TYPE t, VAL *val, UINT32 y)
+VOID VAL_got_set (VAL_TYPE t, VAL *val, GOT y)
+VOID VAL_uint64_set (VAL_TYPE t, VAL *val, UINT64 y)
+VOID VAL_uint32_set (VAL_TYPE t, VAL *val, UINT32 y)
+VOID VAL_two_int_i1_set (VAL_TYPE t, VAL *val, UINT32 y)
+VOID VAL_two_int_i2_set (VAL_TYPE t, VAL *val, UINT32 y)
+VOID VAL_regallochint_vreg_set (VAL_TYPE t, VAL *val, REG y)
+VOID VAL_regallochint_preg_set (VAL_TYPE t, VAL *val, REG y)
+VOID VAL_regallochint_hint_set (VAL_TYPE t, VAL *val, REGALLOC_HINT_TYPE y)
string VAL_StringShort (VAL_TYPE type, const VAL *val, BOOL tiny)
OADDR VAL_Oaddr (VAL_TYPE type, const VAL *val, IMG img)
BOOL VAL_Equal (VAL_TYPE t1, const VAL *v1, VAL_TYPE t2, const VAL *v2)
VOID AddBranchEdgeToBbl (BBL bbl, BBL target_bbl, INS branch, EDG_TYPE type)
VOID AddFallthruEdgeToBbl (BBL bbl, BBL target_bbl, EDG_TYPE type)
VOID BBL_TypifyAndCreateEdgsFromBblToBbl (BBL src_bbl, BBL dst_bbl)
+LOCALFUN VOID AddBranchEdge (SEC sec, BBL bbl, INS branch, EDG_TYPE type)
+LOCALFUN VOID AddIndirectBranchEdge (SEC sec, BBL bbl, INS branch, EDG_TYPE type)
+LOCALFUN VOID AddFallthruEdge (BBL bbl, EDG_TYPE type)
VOID BBL_TypifyAndCreateEdgs (SEC sec, BBL bbl)
VOID IMG_RetypifyBbls (IMG img)
VOID IMG_ChunkifySecs (IMG img)
string FLAGS_StringShort (const FLAGS x)
FLAGS FLAGS_Or (const FLAGS x, const FLAGS y)
FLAGS FLAGS_Subtract (const FLAGS x, const FLAGS y)
FLAGS FLAGS_And (const FLAGS x, const FLAGS y)
BOOL FLAGS_IsSubset (const FLAGS subset, const FLAGS superset)
KNOB< BOOL > KnobRegUseSahf (KNOB_MODE_WRITEONCE,"supported:regalloc","use_sahf","1","use sahf lahf to save restore eflags")
KNOB< BOOL > KnobRegFlagsSplit (KNOB_MODE_WRITEONCE,"supported:regalloc","flags_split","1","split eflags representation")
BOOL UseSahfLahfSequence ()
BOOL DoFlagsSplit ()
KNOB< BOOL > KnobVirtualSegments (KNOB_MODE_OVERWRITE,"supported:region","virtual_segments", KNOB_ONLY_ON_UNIX,"Virtual access to segment registers\n")
KNOB< BOOL > KnobSegmentEffectiveAddresses (KNOB_MODE_WRITEONCE,"supported:region","segment_ea","1","Computation of effective addresses with seg override\n")
+UINT INS_ImmediateWidthBytes (INS ins)
BOOL REG_IsRewrittenSegmentReg (REG reg)
REG INS_IsSimpleRegIndirectWrite (INS ins)
+LOCALINLINE xed_iclass_enum_t INS_Iclass (const INS ins)
+LOCALINLINE BOOL INS_IclassTest (const INS ins, xed_iclass_enum_t iclass)
+LOCALINLINE BOOL INS_IclassTest (const INS ins, xed_iclass_enum_t iclass1, xed_iclass_enum_t iclass2)
+LOCALINLINE BOOL INS_CategoryTest (const INS ins, xed_category_enum_t category)
+LOCALINLINE BOOL INS_CategoryTest (const INS ins, xed_category_enum_t category1, xed_category_enum_t category2)
INT32 INS_Category (const INS ins)
INT32 INS_Extension (const INS ins)
REG INS_IsSimpleRegIndirectRead (INS ins)
BOOL INS_HasImplicitFullMask (INS ins)
UINT32 INS_EffectiveAddressWidth (INS ins)
USIZE INS_MemoryOperandSize (INS ins, UINT32 memoryOp)
USIZE INS_MemoryWriteSize (INS ins)
PREDICATE INS_GetPredicate (INS ins)
USIZE INS_MemoryReadSize (INS ins)
BOOL INS_IsMemoryRead (INS ins)
BOOL INS_IsMemoryWrite (INS ins)
BOOL INS_HasMemoryRead2 (INS ins)
BOOL INS_HasFallThrough (INS ins)
BOOL INS_IsSysenter (INS ins)
BOOL INS_IsXbegin (INS ins)
BOOL INS_IsXend (INS ins)
BOOL INS_IsLea (INS ins)
BOOL INS_IsNop (INS ins)
string OPCODE_StringShort (UINT32 opcode)
string INS_Mnemonic (INS ins)
BOOL INS_IsBblTerminator (INS ins)
BOOL INS_IsBranch (INS ins)
BOOL INS_IsDirectBranch (INS ins)
BOOL INS_IsDirectCall (INS ins)
BOOL INS_IsDirectBranchOrCall (INS ins)
BOOL INS_IsHalt (INS ins)
BOOL INS_IsBranchOrCall (INS ins)
BOOL INS_Stutters (INS ins)
BOOL INS_IsPcMaterialization (INS ins)
BOOL INS_IsCall (INS ins)
BOOL INS_IsFarCall (INS ins)
BOOL INS_IsFarJump (INS ins)
BOOL INS_IsDirectFarJump (INS ins)
BOOL INS_IsXsaveFamily (INS ins)
BOOL INS_IsAvx (INS ins)
BOOL INS_IsAvxOrXSave (INS ins)
BOOL INS_IsVgather (INS ins)
BOOL INS_IsVscatter (INS ins)
BOOL INS_HasMemoryVector (INS ins)
BOOL INS_IsSse (INS ins)
BOOL INS_IsMmx (INS ins)
VOID INS_GetFarPointer (INS ins, UINT16 &segment_selector, UINT32 &displacement)
BOOL INS_IsProcedureCall (INS ins)
BOOL XED_INS_IsMultimedia (INS ins)
BOOL INS_IsFloat (INS ins)
BOOL INS_IsFxsave (INS ins)
BOOL INS_IsFxrestore (INS ins)
BOOL INS_IsXsave (INS ins)
BOOL INS_IsXsavec (INS ins)
BOOL INS_IsXsaveopt (INS ins)
BOOL INS_IsXrestore (INS ins)
BOOL INS_IsCmov (INS ins)
BOOL INS_IsSetCC (INS ins)
BOOL INS_IsFCmov (INS ins)
BOOL INS_IsBitTest (INS ins)
BOOL INS_IsEnter (INS ins)
BOOL INS_IsCmps (INS ins)
BOOL INS_IsScas (INS ins)
BOOL INS_IsJZ (INS ins)
BOOL INS_IsJNZ (INS ins)
BOOL INS_IsJCXZ (INS ins)
BOOL INS_IsLoopType (const INS ins)
BOOL INS_IsLoop (INS ins)
BOOL INS_IsLoope (INS ins)
BOOL INS_IsLoopne (INS ins)
BOOL INS_IsLeave (INS ins)
BOOL INS_IsBsr (INS ins)
BOOL INS_IsUJmp (INS ins)
BOOL INS_IsCJmp (INS ins)
BOOL INS_IsInterrupt (INS ins)
BOOL INS_IsCondWrite (INS ins)
BOOL INS_IsRet (INS ins)
BOOL INS_IsSysret (INS ins)
BOOL INS_IsFarRet (INS ins)
BOOL INS_IsPrefetch (INS ins)
BOOL INS_IsShift (INS ins)
BOOL INS_IsStringOp (INS ins)
BOOL INS_IsIOStringOp (INS ins)
BOOL INS_IsPush (const INS ins)
BOOL INS_IsPop (const INS ins)
BOOL INS_IsPopF (const INS ins)
BOOL INS_IsPopFD (const INS ins)
BOOL INS_IsPopFQ (const INS ins)
BOOL INS_IsAnyPopF (const INS ins)
BOOL INS_IsInc (const INS ins)
BOOL INS_IsDec (const INS ins)
BOOL INS_IsAdd (const INS ins)
BOOL INS_IsSub (const INS ins)
BOOL INS_IsMov (const INS ins)
BOOL INS_IsMovFullRegRegSame (const INS ins)
BOOL INS_IsMovImmToReg (const INS ins, ADDRINT &imm, REG &reg)
BOOL INS_IsMMXorXMM (const INS ins)
BOOL INS_IsAtomicUpdate (const INS ins)
BOOL INS_IsRDTSC (const INS ins)
BOOL INS_IsMaskMov (const INS ins)
REG INS_CountRegister (INS ins)
REG INS_RepCountRegister (INS ins)
FLAGS INS_PhyFlagsMustWritten (const INS ins)
FLAGS INS_PhyFlagsMayWritten (const INS ins)
FLAGS INS_PhyFlagsRead (const INS ins)
BOOL INS_IsIpRelAddr (INS ins)
BOOL INS_IsXlat (INS ins)
BOOL INS_IsCpuid (INS ins)
BOOL INS_IsIndirectBranchOrCall (INS ins)
BOOL INS_CallOrBranchIsRegisterIndirect (INS ins)
BOOL INS_HasFixed8BitBranchDisplacement (INS ins)
REG INS_SegmentRegPrefix (INS ins)
BOOL INS_HasMemoryDisplacement (INS ins)
ADDRDELTA INS_GetMemoryDisplacement (INS ins)
BOOL INS_IsPushAll32 (INS ins)
BOOL INS_IsPushAll16 (INS ins)
BOOL INS_IsPopAll32 (INS ins)
BOOL INS_IsPopAll16 (INS ins)
UINT32 INS_BranchDisplacementWidthBytes (INS ins)
ADDRINT INS_MemoryDisplacementWidthBytes (INS ins)
UINT32 INS_BranchDisplacementWidthBits (INS ins)
LOCALFUN REG INS_GetRoleReg (INS ins, xed_operand_enum_t role)
REG INS_GetIndexReg (INS ins)
REG INS_GetBaseReg (INS ins)
+BOOL INS_RegIsBaseReg (INS ins, int readRegNum)
REG INS_GetBaseRegOne (INS ins)
BOOL INS_MemopDisplacementOnly (INS ins)
VOID INS_DisableSegmentPrefix (INS ins)
PIN_DEPRECATED_API BOOL INS_IsRewritableMemOpBaseLimited (INS ins, MEMORY_TYPE mtype, REG &base)
PIN_DEPRECATED_API BOOL INS_IsRewritableMemOpBase (INS ins, MEMORY_TYPE mtype, REG &base)
PIN_DEPRECATED_API BOOL INS_IsDynamicRewritableMemOpBase (INS ins, MEMORY_TYPE mtype, REG &reg)
VOID XED_RAWINS_ReplaceReg (const INS ins, const REG oldreg, const REG newreg)
VOID XED_RAWINS_ReplacePinRegsByAppRegs (const INS ins, const UINT32 num_pinregs, REG *pin_regs, REG *app_regs)
VOID INS_scan_for_memop_info (INS ins, REG &base0, REG &index, ADDRINT &offset, ADDRINT &scale, REG &base1, REG &seg0, REG &seg1)
INS INS_ConvertLoadToMoveHack (INS jmp)
VOID INS_ConvertCallToBranch (INS ins)
VOID INS_ConvertToIndirectJumpHack (INS ins)
VOID INS_MakeAbsolute32Address (INS ins, IADDR target)
VOID INS_SetIndexRegister (INS ins, REG newIndex)
VOID INS_SetRegisterOperand (INS ins, UINT32 operand, REG newReg)
VOID INS_SetMemoryDisplacement (INS ins, ADDRDELTA disp, UINT length_bytes)
VOID INS_SetBranchDisplacement (INS ins, ADDRDELTA disp, UINT length_bytes)
+LOCALFUN UINT FieldWidthToSize (const unsigned int width)
VOID INS_SetImmediate (INS ins, ADDRINT imm)
VOID INS_RemoveRep (INS ins)
+LOCALFUN INS_XED_STRUCT_DECODE * INS_get_arch (INS x)
VOID INS_CopyArchFields (INS ins, INS clone)
BOOL INS_EqualArchFields (INS ins1, INS ins2)
ADDRINT INS_GetImmediate (INS ins)
ADDRINT INS_IsSignedImmediate (INS ins)
ADDRDELTA INS_GetSignedImmediate (INS ins)
ADDRINT INS_GetSecondImmediate (INS ins)
ADDRDELTA INS_GetBranchDisplacement (INS ins)
BOOL INS_HasImmediateOperand (INS ins)
BOOL INS_HasImplicitMemoryReference (INS ins)
BOOL INS_HasExplicitMemoryReference (INS ins)
BOOL INS_HasImplicitStackReference (INS ins)
UINT32 INS_GetScale (INS ins)
BOOL INS_ReadsAllMMRegisters (INS ins)
BOOL INS_WritesAllMMRegisters (INS ins)
BOOL INS_ReadsAllMmxRegisterss (INS ins)
BOOL INS_WritesAllMmxRegisters (INS ins)
BOOL INS_MayWriteAllMMRegisters (INS ins)
BOOL INS_AccessesManyFPRegisters (INS ins)
+BOOL INS_IsFpop (INS ins)
+LOCALVAR KNOB_COMMENT KnobDisassemblyFamily (knobfamily,"IA-32 architecture and Intel(R) 64 architecture disassembly format")
+LOCALVAR KNOB< BOOL > KnobXedDisassembly (KNOB_MODE_WRITEONCE, knobfamily,"xedprint","0","Disassemble using Intel(R) X86 Encoder Decoder format")
+LOCALVAR KNOB< BOOL > KnobATTDisassembly (KNOB_MODE_WRITEONCE, knobfamily,"attprint","0","Disassemble using ATT format")
+LOCALVAR KNOB< BOOL > KnobIntelDisassembly (KNOB_MODE_WRITEONCE, knobfamily,"intelprint","0","Disassemble using Intel format (default)")
+LOCALFUN VOID INS_SetSyntaxFromKnobs ()
VOID PIN_SetSyntaxIntel ()
VOID PIN_SetSyntaxATT ()
VOID PIN_SetSyntaxXED ()
string INS_PrintString (INS ins, ADDRINT addr)
VOID INS_RegRSet (INS x, UINT32 k, REG r)
VOID INS_RegWSet (INS x, UINT32 k, REG r)
REG INS_RegR (INS x, UINT32 k)
REG INS_RegW (INS x, UINT32 k)
REG INS_GetFirstAluSourceReg (INS ins)
BOOL INS_CallOrBranchIsMemoryIndirect (INS ins)
BOOL INS_IsExplicitReadOnly (const INS ins, const UINT32 pos)
BOOL INS_IsExplicit (const INS ins, const UINT32 pos)
BOOL INS_IsImplicitRead (const INS ins, const UINT32 pos)
BOOL INS_IsImplicitWrite (const INS ins, const UINT32 pos)
REG INS_CallOrBranchGetIndirectRegister (INS ins)
BOOL INS_HasRepEqual (INS ins)
OPCODE INS_Opcode (INS ins)
string CATEGORY_StringShort (UINT32 num)
string EXTENSION_StringShort (UINT32 num)
VOID INS_ZeroExtend (BBL bbl, REG src, REG dst)
VOID INS_SignExtend (BBL bbl, REG src, REG dst)
BOOL INS_SegPrefixIsMemoryRead (INS ins)
BOOL INS_SegPrefixIsMemoryWrite (INS ins)
BOOL INS_AddressSizePrefix (INS ins)
BOOL INS_BranchNotTakenPrefix (INS ins)
BOOL INS_BranchTakenPrefix (INS ins)
BOOL INS_LockPrefix (INS ins)
BOOL INS_OperandSizePrefix (INS ins)
BOOL INS_RepPrefix (INS ins)
BOOL INS_RepnePrefix (INS ins)
BOOL INS_SegmentPrefix (INS ins)
BOOL INS_HasSegmentRegPrefix (INS ins)
BOOL INS_IsXchg (INS ins)
BOOL INS_IsStringop (INS ins)
BOOL INS_IsIRet (INS ins)
+LOCALTYPE BOOL operator< (const ENCODING_ADDRESS_RANGE_KEY &left, const ENCODING_ADDRESS_RANGE_KEY &right)
LOCALVAR MESSAGE_TYPE MessageTypeLogEncoding ("log_encoding","", false, false, false, true, LOGTYPE_LOGFILE,"pin log: encodings")
VOID ThreadAwareMemcpy (VOID *dst, const VOID *src, USIZE size)
USIZE ThreadAwareInsEncoder (INS ins, ADDRINT address)
+LOCALFUN BOOL BranchDisplacementFits (INS ins, INT64 delta)
+LOCALFUN char NibbleToAsciHex (UINT8 i)
+LOCALFUN void PrintHexLine (char *buf, const UINT8 *array, const int length)
+LOCALFUN string Disassemble (ADDRINT start, ADDRINT stop)
BBL SimulateRetPush (INS call)
USIZE INS_MaxProbeSize (BOOL requestRipAndAddrProbe)
BBL SimulateRetPopToMem (INS ret, ADDRINT offset)
USIZE INS_EncodeAtAddr (INS ins, ADDRINT address)
VOID INS_InitBranch (INS ins, BBL target)
UINT32 INS_MaxNumRRegs (INS x)
UINT32 INS_MaxNumWRegs (INS x)
BOOL INS_RegRContain (const INS ins, const REG reg)
BOOL INS_RegWContain (const INS ins, const REG reg)
BOOL INS_FullRegRContain (const INS ins, const REG reg)
BOOL INS_FullRegWContain (const INS ins, const REG reg)
+BOOL BBL_TypeIsSane (BBL bbl)
VOID SetDecoderExceptionInfo (EXCEPTION_INFO *pExceptInfo, EXCEPTION_CODE exceptCode, ADDRINT addr, size_t size)
INSDECODE INS_DecodeIns (INS ins, const VOID **address, UINT32 size, EXCEPTION_CODE *excCode)
BOOL INS_InitOriginalIns (INS ins, const VOID **address, UINT32 maxSize, EXCEPTION_INFO *pExceptInfo=0)
template<typename FETCHER_>
GLOBALTEMPLATEFUN BOOL INS_Fetch (INS ins, const VOID **address, const FETCHER_ &insBytesFetcher, UINT32 maxSize, EXCEPTION_INFO *pExceptInfo=0)
int INS_MaxDecodedBytes ()
UINT64 INS_Id (INS ins)
BOOL INS_ValidateEncoding (const INS ins)
IADDR INS_CallRetIaddr (INS ins)
VOID INS_Check (INS ins)
VOID BBL_Check (BBL bbl)
+LOCALFUN VOID OverwriteDisplacement (INS ins, INT64 value, UINT32 valueLen)
+LOCALFUN VOID ApplyPcRelRelocation (INS ins, REL rel, IMG img)
+LOCALFUN VOID ApplyImmRelocation (INS ins, REL rel, IMG img)
+LOCALFUN VOID ApplyRelocation (INS ins, IMG img)
VOID SEC_ComputeNewSecDataExec (SEC sec, VOID *data)
string SEC_StringDis (SEC sec)
BOOL INS_Equal (INS ins, INS ins2)
USIZE INS_SizeOfDirectJmp ()
USIZE INS_SizeOfIpRelativeMemJmp ()
USIZE INS_InitDirectJmp (INS ins, ADDRINT brAddr, ADDRINT tgtAddr)
BOOL INS_IsMTSafeToPatch (ADDRINT addr, USIZE size)
ADDRINT INS_GetMTSafePatchLocation (ADDRINT addr, USIZE size)
LOCALFUN BOOL INS_MTSafeOverwrite (INS ins, ADDRINT addr, USIZE size)
+LOCALFUN BOOL INS_MTSafeOverwriteDisplacement (INS ins, ADDRINT addr, USIZE size, UINT curDisplacementBytes, UINT newDisplacementBytes, ADDRDELTA displacement)
+LOCALVAR STAT_UINT64 PinPatchedInssStat ("pin","insts","fetched_for_patch","")
BOOL INS_MTSafePatchBranch (OADDR brAddr, OADDR tgtAddr)
+LOCALVAR STAT_UINT64 PinOverwriteWithJmpInssStat ("pin","insts","fetched_for_jmp_overwrite","")
BOOL INS_MTSafeWriteJmp (OADDR insAddr, OADDR tgtAddr)
OADDR INS_NextInsOaddr (INS ins, OADDR addr)
IADDR INS_NextInsIaddr (INS ins)
ADDRDELTA SignedOffset (ADDRINT imm)
IADDR INS_DirectBranchOrCallTargetIaddr (INS ins, IADDR iaddr)
IADDR INS_DirectBranchOrCallTargetIaddr (INS ins)
OADDR INS_DirectBranchOrCallTargetOaddr (INS ins, OADDR oaddr)
IADDR INS_IpRelTargetIaddr (INS ins)
BOOL INS_IsStackRead (const INS ins)
BOOL INS_IsStackWrite (const INS ins)
BOOL INS_IsIpRelRead (const INS ins)
BOOL INS_IsIpRelWrite (const INS ins)
BOOL INS_IsPredicated (INS ins)
BOOL INS_HasRealRep (INS ins)
REL_TYPE REL_AddrintRel ()
VOID INS_InitEncodeDecoder ()
VOID SEC_CreateOriginalIns (SEC sec)
VOID IMG_ConvertWeirdBranches (IMG img)
LOCALFUN string INS_RawInstBytes (INS ins)
+LOCALVAR KNOB< BOOL > KnobPrintRawInstruction (KNOB_MODE_WRITEONCE,"supported","rawinst","0","Print raw instruction encoding in string conversions")
+LOCALVAR KNOB< BOOL > KnobPrintPinRegs (KNOB_MODE_WRITEONCE,"supported","printpinreg","0","Print Pin registers in disassembly")
+LOCALVAR KNOB< BOOL > KnobPrintBranch (KNOB_MODE_WRITEONCE,"supported","printbr","0","Print branch information in disassembly")
+LOCALFUN string INS_RegsRead (INS ins)
+LOCALFUN string INS_RegsWritten (INS ins)
string INS_StringShorter (INS ins)
string INS_StringShort (INS ins)
BOOL INS_IsOriginal (INS ins)
string INS_Disassemble (INS ins)
string INS_StringShortFancy (INS ins)
string INS_StringLong (INS ins)
BOOL INS_IsSimpleStackOffsetRead (INS ins, INT32 *offset)
BOOL INS_IsSimpleStackOffsetWrite (INS ins, INT32 *offset)
BOOL INS_IsPatchable (INS ins)
REG REG_RenameAppReg (const REG reg)
REG REG_RenamePinReg (const REG reg)
BOOL REG_ShouldBeRenamed (CALLING_STANDARD std, REG reg)
VOID INS_RenameRegsForInlining (CALLING_STANDARD std, INS ins)
PIN_DEPRECATED_API ADDRINT INS_MemoryOffset (INS ins)
ADDRDELTA INS_MemoryDisplacement (INS ins)
PIN_DEPRECATED_API ADDRDELTA INS_MemoryDisplacementSigned (INS ins)
REG INS_MemoryBaseReg (INS ins)
REG INS_MemoryIndexReg (INS ins)
UINT32 INS_MemoryScale (INS ins)
BOOL INS_IsStandardMemop (INS ins)
BOOL INS_hasKnownMemorySize (INS ins)
BOOL INS_ChangeReg (const INS ins, const REG old_reg, const REG new_reg, const BOOL as_read)
REG INS_ChangeToPinFlagsReg (const INS ins, const BOOL as_read)
+LOCALFUN VOID ChangeStackPtr (INS ins, UINT32 num, BOOL read, BOOL *changed)
BOOL INS_ChangeStackPtr (INS ins)
BOOL INS_ChangeToUsePinFlags (const INS ins)
BOOL INS_RegsReadBeforeWritten (INS ins)
+BOOL INS_ReadsAndWritesDestReg (INS ins)
+BOOL INS_IsRegWrittenByIns (INS ins, REG reg)
BOOL INS_IsCacheLineFlush (INS ins)
+LOCALFUN REGWIDTH GetRegWidthOfEaWidth (INT32 ea_width)
+LOCALFUN UINT GetBitSizeOfRegWidth (REGWIDTH reg_width)
+LOCALFUN INT32 GetEffectiveAddressBitWidth (REG base, REG index)
+VOID validate_displacement (INT32 signed_displacement, UINT32 bytes, UINT8 legal_displacement_bytewidths_bitmap)
+LOCALFUN VOID INS_ChangeImmediate (INS ins, UINT64 immed)
+UINT INS_VerifyScale (UINT scale)
+LOCALFUN VOID XED_modify_legal_bytewidths_bitmap (xed_reg_enum_t dummy_base, UINT8 &legal_bytewidths_bitmap)
+LOCALFUN UINT INS_compute_memop_width (UINT opwidth, REGWIDTH reg_width, UINT membytes=0)
+LOCALFUN UINT8 ComputeNumBytesNeededForSignedImmediate (UINT64 immed, UINT32 legal_immed_bytewidths_bitmap, UINT32 extendedSize=8 *sizeof(ADDRINT), UINT32 destination_bit_size=0)
LOCALFUN xed_encoder_operand_t GetShortestWidthSignedImmediate (UINT64 immed, UINT32 legal_immed_bytewidths_bitmap, UINT32 extendedSize=8 *sizeof(ADDRINT), UINT32 destination_bit_size=0)
+LOCALFUN VOID ClearOperand (xed_encoder_request_t *xed_enc, UINT32 operandIndex)
+LOCALFUN VOID UpdateRegs (BOOL read, INS origIns, INS newIns, UINT32 origNum, UINT32 newNum)
+LOCALFUN UINT32 MaxImmediate (INS ins)
+LOCALFUN UINT8 INS_GetMemoryDisplacementLengthBits (INS ins)
LOCALFUN UINT8 GetLegalByteWidthsBitmapForEaWidth (INT32 ea_width)
+LOCALFUN VOID VerifySameEncoding (INS checkIns, INS insOrig, int fromWhere)
+LOCALFUN BOOL INS_CompareReadAndWriteRegs (INS ins1, INS ins2)
+LOCALVAR STAT_UINT64 INSInitNoRegOpStat ("pin","insts","inssNoRegOp_via_xed","")
+LOCALVAR STAT_UINT64 INSInitRegOpStat ("pin","insts","inssRegOp_via_xed","")
+LOCALVAR STAT_UINT64 INSInitRegRegOpStat ("pin","insts","inssRegRegOp_via_xed","")
+LOCALVAR STAT_UINT64 INSInitYmmRegRegRegOp ("pin","insts","inssYmmRegRegRegOp_via_xed","")
+LOCALVAR STAT_UINT64 INSInitRegWordRegByteOp ("pin","insts","inssegWordRegByteOp_via_xed","")
+LOCALVAR STAT_UINT64 INSInitRegWidthRegOp ("pin","insts","inssRegWidthRegOp_via_xed","")
+LOCALVAR STAT_UINT64 INSInitRegImmOp ("pin","insts","inssRegImmOp_via_xed","")
+LOCALVAR STAT_UINT64 INSInitImmOp ("pin","insts","inssImmOp_via_xed","")
+LOCALVAR STAT_UINT64 INSInitWidthRegImmOp ("pin","insts","inssWidthRegImmOp_via_xed","")
+LOCALVAR STAT_UINT64 INSInitFarDirectOp ("pin","insts","inssFarDirectOp_via_xed","")
+LOCALVAR STAT_UINT64 INSInitSDispOp ("pin","insts","inssSDispOp_via_xed","")
+LOCALVAR STAT_UINT64 INSInitMemImmOp ("pin","insts","inssMemImmOp_via_xed","")
+LOCALVAR STAT_UINT64 INSInitMMRegRegOp ("pin","insts","inssMMRegRegOp_via_xed","")
+LOCALVAR STAT_UINT64 INSInitMMLoad ("pin","insts","inssMMLoad_via_xed","")
+LOCALVAR STAT_UINT64 INSInitMMStore ("pin","insts","inssMMStore_via_xed","")
+LOCALVAR STAT_UINT64 INSInitYMMInsertOp ("pin","insts","inssYMMInsertOp_via_xed","")
+LOCALVAR STAT_UINT64 INSInitLoadMemop ("pin","insts","inssLoadMemop_via_xed","")
+LOCALVAR STAT_UINT64 INSInitStoreMemop ("pin","insts","inssStoreMemop_via_xed","")
+LOCALVAR STAT_UINT64 INSInitRetImm ("pin","insts","inssRetImm_via_xed","")
+LOCALVAR STAT_UINT64 INSInitSizedNop ("pin","insts","inssSizedNop_via_xed","")
+LOCALVAR STAT_UINT64 INSInitYMMRegOp ("pin","insts","inssYMMRegOp_via_xed","")
+LOCALVAR STAT_UINT64 INSInitChangeOperandToImmediate ("pin","insts","ChangeOpToImm_via_xed","")
+LOCALVAR STAT_UINT64 PinReusedInssStat ("pin","insts","generated_inss_via_reuse","")
+LOCALVAR STAT_NORM TimerINS_Init ("pin","time","INS_Init","",&TimerCompile)
+LOCALFUN VOID INS_XedProcessInstAndUpdateStripe (INS ins, xed_encoder_instruction_t *xed_inst, int ea_width=0)
+LOCALFUN VOID INS_XedInst0 (INS ins, xed_iclass_enum_t iclass, xed_uint_t effective_operand_width)
+LOCALFUN VOID INS_XedInst1 (INS ins, xed_iclass_enum_t iclass, xed_uint_t effective_operand_width, const xed_encoder_operand_t &op0, int ea_width=0)
+LOCALFUN VOID INS_XedInst2 (INS ins, xed_iclass_enum_t iclass, xed_uint_t effective_operand_width, const xed_encoder_operand_t &op0, const xed_encoder_operand_t &op1)
+LOCALFUN VOID INS_XedInst3 (INS ins, xed_iclass_enum_t iclass, xed_uint_t effective_operand_width, const xed_encoder_operand_t &op0, const xed_encoder_operand_t &op1, const xed_encoder_operand_t &op2)
+LOCALFUN VOID INS_XedInst4 (INS ins, xed_iclass_enum_t iclass, xed_uint_t effective_operand_width, const xed_encoder_operand_t &op0, const xed_encoder_operand_t &op1, const xed_encoder_operand_t &op2, const xed_encoder_operand_t &op3)
+LOCALFUN VOID INS_XedInst5 (INS ins, xed_iclass_enum_t iclass, xed_uint_t effective_operand_width, const xed_encoder_operand_t &op0, const xed_encoder_operand_t &op1, const xed_encoder_operand_t &op2, const xed_encoder_operand_t &op3, const xed_encoder_operand_t &op4)
+LOCALFUN VOID INS_InitSizedNopOriginal (INS ins, UINT requested_length_bytes)
VOID INS_InitSizedNop (INS ins, UINT requested_length_bytes)
+LOCALFUN VOID INS_InitNoRegOpOriginal (INS ins, xed_iclass_enum_t iclass)
LOCALFUN VOID INS_InitNoRegOp (INS ins, xed_iclass_enum_t iclass)
LOCALINLINE xed_reg_enum_t get_dummy_reg_native (UINT i)
LOCALINLINE xed_reg_enum_t get_dummy_reg (UINT i, REGWIDTH reg_width)
LOCALINLINE xed_reg_enum_t get_dummy_index_reg (UINT i, REGWIDTH reg_width)
LOCALINLINE xed_reg_enum_t get_dummy_base_reg (UINT i, REGWIDTH reg_width)
+LOCALINLINE VOID INS_InitRegOpGetDummyRegs (REG reg, xed_reg_enum_t *dummy_reg, REGWIDTH regWidth)
+LOCALFUN VOID INS_InitRegOpReplaceDummyRegs (INS ins, xed_reg_enum_t dummy_reg, REG reg)
+LOCALFUN VOID INS_InitRegOpOriginal (INS ins, REG reg, xed_iclass_enum_t iclass, REGWIDTH regWidth, BOOL replaceXedRegs)
+LOCALFUN VOID INS_InitRegOp (INS ins, REG reg, xed_iclass_enum_t iclass, REGWIDTH regWidth)
+LOCALFUN VOID INS_InitRegRegOpGetDummyRegsAndWidths (REG dst, xed_reg_enum_t *dummy_dst, xed_reg_enum_t *dummy_src, unsigned int *op_width, REGWIDTH *reg_width)
+LOCALFUN VOID INS_InitRegRegOpReplaceDummyRegs (INS ins, xed_reg_enum_t dummy_dst, REG dst, xed_reg_enum_t dummy_src, REG src)
+LOCALFUN VOID INS_InitRegRegOpOriginal (INS ins, REG src_reg, REG dst_reg, xed_iclass_enum_t iclass, BOOL replaceXedRegs, xed_reg_enum_t dummy_src=XED_REG_ECX, xed_reg_enum_t dummy_dst=XED_REG_EDX, unsigned int op_width=32)
LOCALFUN VOID INS_InitRegRegOp (INS ins, REG src, REG dst, xed_iclass_enum_t iclass, xed_reg_enum_t dummy_src=XED_REG_ECX, xed_reg_enum_t dummy_dst=XED_REG_EDX, unsigned int op_width=32)
+LOCALFUN VOID INS_InitYmmRegRegRegOpReplaceDummyRegs (INS ins, REG dest, xed_reg_enum_t dummy_dest, REG src1, xed_reg_enum_t dummy_src1, REG src2, xed_reg_enum_t dummy_src2)
+LOCALFUN VOID INS_InitYmmRegRegRegOpOriginal (INS ins, REG src2, REG src1, REG dest, xed_iclass_enum_t iclass, BOOL replaceXedRegs, xed_reg_enum_t dummy_src2=XED_REG_YMM0, xed_reg_enum_t dummy_src1=XED_REG_YMM0, xed_reg_enum_t dummy_dest=XED_REG_YMM0)
+LOCALFUN VOID INS_InitYmmRegRegRegOp (INS ins, REG src2, REG src1, REG dest, xed_iclass_enum_t iclass, xed_reg_enum_t dummy_src2=XED_REG_YMM0, xed_reg_enum_t dummy_src1=XED_REG_YMM0, xed_reg_enum_t dummy_dest=XED_REG_YMM0)
+LOCALFUN VOID INS_InitRegWordRegByteOpOriginal (INS ins, REG srcByte, REG dstWord, xed_iclass_enum_t iclass, BOOL replaceXedRegs, xed_reg_enum_t dummy_src=XED_REG_CL, xed_reg_enum_t dummy_dst=XED_REG_DX, unsigned int op_width=16)
+LOCALFUN VOID INS_InitRegWordRegByteOpReplaceDummyRegs (INS ins, REG dstWord, xed_reg_enum_t dummy_dst, REG srcByte, xed_reg_enum_t dummy_src)
+LOCALFUN VOID INS_InitRegWordRegByteOp (INS ins, REG srcByte, REG dstWord, xed_iclass_enum_t iclass, xed_reg_enum_t dummy_src=XED_REG_CL, xed_reg_enum_t dummy_dst=XED_REG_DX, unsigned int op_width=16)
+LOCALFUN VOID INS_InitRegWidthRegOpOriginal (INS ins, REG src, REG dst, xed_iclass_enum_t iclass, REGWIDTH regWidth, BOOL replaceXedRegs, unsigned int op_width=32)
+LOCALFUN VOID INS_InitRegWidthRegOpGetDummyRegs (xed_reg_enum_t *dummy_dst, xed_reg_enum_t *dummy_src, REGWIDTH regWidth)
+LOCALFUN VOID INS_InitRegWidthRegOpReplaceDummyRegs (INS ins, REG dst, xed_reg_enum_t dummy_dst, REG src, xed_reg_enum_t dummy_src)
+LOCALFUN VOID INS_InitRegWidthRegOp (INS ins, REG src, REG dst, xed_iclass_enum_t iclass, REGWIDTH regWidth, unsigned int op_width=32)
+LOCALFUN VOID INS_InitRegImmOpReplaceDummyRegs (INS ins, xed_reg_enum_t dummy_reg, REG reg)
+LOCALFUN VOID INS_InitRegImmOpOriginal (INS ins, REG reg, UINT64 immed, xed_iclass_enum_t iclass, UINT8 legal_immed_bytewidths_bitmap, BOOL replaceXedRegs)
+LOCALFUN VOID INS_InitRegImmOp (INS ins, REG reg, UINT64 immed, xed_iclass_enum_t iclass, UINT8 legal_immed_bytewidths_bitmap)
+LOCALFUN VOID INS_InitImmOpOriginal (INS ins, UINT64 immed, xed_iclass_enum_t iclass, UINT8 legal_immed_bytewidths_bitmap=7)
+LOCALFUN VOID INS_InitImmOp (INS ins, UINT64 immed, xed_iclass_enum_t iclass, UINT8 legal_immed_bytewidths_bitmap=7)
+LOCALFUN VOID INS_InitWidthRegImmOpOriginal (INS ins, REG reg, UINT64 immed, xed_iclass_enum_t iclass, UINT8 legal_immed_bytewidths_bitmap, REGWIDTH regWidth, BOOL replaceXedRegs)
+LOCALFUN VOID INS_InitWidthRegImmOp (INS ins, REG reg, UINT64 immed, xed_iclass_enum_t iclass, UINT8 legal_immed_bytewidths_bitmap, REGWIDTH regWidth)
+LOCALFUN VOID INS_InitSDispOpOriginal (INS ins, INT64 disp, xed_iclass_enum_t iclass, INT32 ea_width, INS orig)
LOCALFUN VOID INS_InitSDispOp (INS ins, INT64 disp, xed_iclass_enum_t iclass, INT32 ea_width=sizeof(VOID *)*8, INS orig=INS_INVALID())
+VOID INS_InitSDispOpGlobal (INS ins, INT64 disp, OPCODE iclass)
+LOCALFUN VOID INS_InitXbeginOriginal (INS ins)
VOID INS_InitXbegin (INS ins)
+LOCALFUN VOID INS_InitMemImmOpGetDummyRegs (REG base, xed_reg_enum_t *dummy_base, REG index, xed_reg_enum_t *dummy_index, INT32 ea_width, BOOL exactCopy, BOOL *ins_encoded_with_corresponding_app_reg)
+LOCALFUN VOID INS_InitMemImmOpReplaceDummyRegs (INS ins, REG base, xed_reg_enum_t dummy_base, REG index, xed_reg_enum_t dummy_index)
+LOCALFUN VOID INS_InitMemImmOpOriginal (INS ins, REG base, ADDRINT displacement, REG index, ADDRINT scale, REG pinseg, OPCODE op, UINT64 immed, UINT8 legal_immed_bytewidths_bitmap, REGWIDTH reg_width, BOOL replaceXedRegs, BOOL exactCopy)
VOID INS_InitMemImmOp (INS ins, REG base, ADDRINT displacement, REG index, ADDRINT scale, REG pinseg, OPCODE op, UINT64 immed, UINT8 legal_immed_bytewidths_bitmap, REGWIDTH reg_width, BOOL exactCopy)
+LOCALFUN VOID INS_InitMMRegRegOpOriginal (INS ins, REG mmdst, REG mmsrc, xed_iclass_enum_t iclass, BOOL replaceXedRegs, xed_reg_enum_t dummy_dst, xed_reg_enum_t dummy_src, REGWIDTH regWidth=REGWIDTH_NATIVE)
+LOCALFUN VOID INS_InitMMRegRegOpReplaceDummyRegs (INS ins, REG mmsrc, xed_reg_enum_t dummy_src, REG mmdst, xed_reg_enum_t dummy_dst)
LOCALFUN VOID INS_InitMMRegRegOp (INS ins, REG mmdst, REG mmsrc, xed_iclass_enum_t iclass, xed_reg_enum_t dummy_dst, xed_reg_enum_t dummy_src, REGWIDTH regWidth=REGWIDTH_NATIVE)
+LOCALFUN VOID INS_InitMMLoadGetDummyRegs (REG base, xed_reg_enum_t *dummy_base, REG index, xed_reg_enum_t *dummy_index, REG mm_dst, xed_reg_enum_t *dummy_mm_dst, xed_reg_enum_t dummy_dst_param, REG maskReg, xed_reg_enum_t *dummy_mask, xed_reg_enum_t dummy_mask_param, INT32 ea_width, BOOL exactCopy)
+LOCALFUN VOID INS_InitMMLoadReplaceDummyRegs (INS ins, REG mmdst, xed_reg_enum_t dummy_dst, REG maskReg, xed_reg_enum_t dummy_mask, REG base, xed_reg_enum_t dummy_base, REG index, xed_reg_enum_t dummy_index)
+LOCALFUN VOID INS_InitMMLoadOriginal (INS ins, REG mmdst, REG maskReg, REG base, INT32 displacement, UINT disp_bytes, REG index, UINT scale, REG pinseg, xed_iclass_enum_t iclass, UINT32 memop_byte_length, xed_reg_enum_t dummy_dst_param, xed_reg_enum_t dummy_mask_param, BOOL replaceXedRegs, BOOL exactCopy)
LOCALFUN VOID INS_InitMMLoad (INS ins, REG mmdst, REG maskReg, REG base, INT32 displacement, UINT disp_bytes, REG index, UINT scale, REG pinseg, xed_iclass_enum_t iclass, UINT32 memop_byte_length, xed_reg_enum_t dummy_dst_param, xed_reg_enum_t dummy_mask_param, BOOL exactCopy)
+LOCALFUN VOID INS_InitMMStoreGetDummyRegs (REG base, xed_reg_enum_t *dummy_base, REG index, xed_reg_enum_t *dummy_index, REG mmsrc, xed_reg_enum_t *dummy_mmsrc, xed_reg_enum_t dummy_mmsrc_param, REG maskReg, xed_reg_enum_t *dummy_mask, xed_reg_enum_t dummy_mask_param, INT32 ea_width, BOOL exactCopy)
+LOCALFUN VOID INS_InitMMStoreReplaceDummyRegs (INS ins, REG base, xed_reg_enum_t dummy_base, REG index, xed_reg_enum_t dummy_index, REG mmsrc, xed_reg_enum_t dummy_src, REG maskReg, xed_reg_enum_t dummy_mask, xed_operand_enum_t xedreg_op, xed_operand_enum_t maskreg_op, const UINT memop_pos, const UINT regop_pos, const UINT maskop_pos)
+LOCALFUN VOID INS_InitMMStoreOriginal (INS ins, REG mmsrc, REG maskReg, REG base, INT32 displacement, UINT disp_bytes, REG index, UINT scale, REG pinseg, xed_iclass_enum_t iclass, UINT32 memop_byte_length, xed_reg_enum_t dummy_src_param, xed_reg_enum_t dummy_mask_param, BOOL replaceXedRegs, BOOL exactCopy)
+LOCALFUN VOID INS_InitMMStore (INS ins, REG mmsrc, REG maskReg, REG base, INT32 displacement, UINT disp_bytes, REG index, UINT scale, REG pinseg, xed_iclass_enum_t iclass, UINT32 memop_byte_length, xed_reg_enum_t dummy_src_param, xed_reg_enum_t dummy_mask_param, BOOL exactCopy)
+LOCALFUN VOID INS_InitMMInsertOpGetDummyRegs (REG base, xed_reg_enum_t *dummy_base, REG index, xed_reg_enum_t *dummy_index, REG mm_src, xed_reg_enum_t *dummy_mmsrc, REG mm_dst, xed_reg_enum_t *dummy_mmdst, REG maskReg, xed_reg_enum_t *dummy_maskReg)
+LOCALFUN VOID INS_InitMMInsertOpReplaceDummyRegs (INS ins, REG base, xed_reg_enum_t dummy_base, REG index, xed_reg_enum_t dummy_index, REG mmsrc, xed_reg_enum_t dummy_src, REG mmdst, xed_reg_enum_t dummy_dst, REG maskReg, xed_reg_enum_t dummy_mask)
LOCALFUN VOID INS_InitMMInsertOpOriginal (INS ins, REG mmDest, REG mmSrc, REG maskReg, REG base, INT32 displacement, UINT disp_bytes, REG index, UINT scale, REG seg, UINT32 imm8, xed_iclass_enum_t iclass, UINT32 operandWidthBits, BOOL replaceXedRegs)
+LOCALFUN VOID INS_InitMMInsertOp (INS ins, REG mmDest, REG mmSrc, REG maskReg, REG base, INT32 displacement, UINT disp_bytes, REG index, UINT scale, REG seg, UINT32 imm8, xed_iclass_enum_t iclass, UINT32 operandWidthBits)
+LOCALFUN VOID INS_InitMMExtractOpGetDummyRegs (REG base, xed_reg_enum_t *dummy_base, REG index, xed_reg_enum_t *dummy_index, REG mm_src, xed_reg_enum_t *dummy_mmsrc, REG maskReg, xed_reg_enum_t *dummy_maskReg)
+LOCALFUN VOID INS_InitMMExtractOpReplaceDummyRegs (INS ins, REG base, xed_reg_enum_t dummy_base, REG index, xed_reg_enum_t dummy_index, REG mmsrc, xed_reg_enum_t dummy_src, REG maskReg, xed_reg_enum_t dummy_mask)
LOCALFUN VOID INS_InitMMExtractOpOriginal (INS ins, REG mmSrc, REG maskReg, REG base, INT32 displacement, UINT disp_bytes, REG index, UINT scale, REG seg, UINT32 imm8, xed_iclass_enum_t iclass, UINT32 operandWidthBits, BOOL replaceXedRegs)
+LOCALFUN VOID INS_InitMMExtractOp (INS ins, REG mmSrc, REG maskReg, REG base, INT32 displacement, UINT disp_bytes, REG index, UINT scale, REG seg, UINT32 imm8, xed_iclass_enum_t iclass, UINT32 operandWidthBits, BOOL replaceXedRegs)
+LOCALFUN VOID INS_InitLoadMemopGetDummyRegs (REG dst, xed_reg_enum_t *dummy_dst, REG index, xed_reg_enum_t *dummy_index, REG base, xed_reg_enum_t *dummy_base, INT32 ea_width, REGWIDTH reg_width, BOOL exactCopy, xed_iclass_enum_t iclass)
+LOCALFUN VOID INS_InitLoadmemopReplaceDummyRegs (INS ins, REG dst, xed_reg_enum_t dummy_dst, REG base, xed_reg_enum_t dummy_base, REG index, xed_reg_enum_t dummy_index, UINT memop_pos)
+LOCALFUN VOID INS_InitLoadMemopOriginal (INS ins, REG dst, REG base, ADDRINT displacement, REG index, ADDRINT scale, REG pinseg, xed_iclass_enum_t iclass, BOOL replaceXedRegs, BOOL exactCopy, xed_operand_enum_t xed_op=XED_OPERAND_MEM0, UINT8 legal_displacement_bytewidths_bitmap=5, REGWIDTH reg_width=REGWIDTH_NATIVE, INT32 ea_width=sizeof(VOID *)*8, UINT load_bytes=0)
LOCALFUN VOID INS_InitLoadMemop (INS ins, REG dst, REG base, ADDRINT displacement, REG index, ADDRINT scale, REG pinseg, xed_iclass_enum_t iclass, BOOL exactCopy, xed_operand_enum_t xed_op=XED_OPERAND_MEM0, UINT8 legal_displacement_bytewidths_bitmap=5, REGWIDTH reg_width=REGWIDTH_NATIVE, INT32 ea_width=sizeof(VOID *)*8, UINT load_bytes=0)
+LOCALFUN VOID INS_InitStoreMemopGetDummyRegs (REG src, xed_reg_enum_t *dummy_src, REG base, xed_reg_enum_t *dummy_base, REG index, xed_reg_enum_t *dummy_index, REGWIDTH reg_width, INT32 ea_width, BOOL exactCopy, xed_iclass_enum_t iclass)
+LOCALFUN VOID INS_InitStoreMemopReplaceDummyRegs (INS ins, REG src, xed_reg_enum_t dummy_src, REG base, xed_reg_enum_t dummy_base, REG index, xed_reg_enum_t dummy_index)
+LOCALFUN VOID INS_InitStoreMemopOriginal (INS ins, REG src, REG base, ADDRINT displacement, REG index, ADDRINT scale, REG pinseg, xed_iclass_enum_t iclass, BOOL replaceXedRegs, BOOL exactCopy, UINT8 legal_displacement_bytewidths_bitmap=5, REGWIDTH reg_width=REGWIDTH_NATIVE, UINT store_bytes=0)
+LOCALFUN VOID INS_InitStoreMemop (INS ins, REG src, REG base, ADDRINT displacement, REG index, ADDRINT scale, REG pinseg, xed_iclass_enum_t iclass, BOOL exactCopy, REGWIDTH reg_width=REGWIDTH_NATIVE, UINT store_bytes=0)
+LOCALFUN VOID INS_InitRetImmOriginal (INS ins, UINT64 imm)
VOID INS_InitRetImm (INS ins, UINT64 imm)
VOID INS_ReplaceMemop (INS ins, unsigned int operand_index, REG base, ADDRDELTA displacement, REG index, ADDRINT scale, REG pinseg, REGWIDTH ea_width)
+LOCALFUN VOID INS_ChangeOperandToImmediateReplaceDummyRegs (INS ins, INS origIns)
+LOCALFUN VOID INS_ChangeOperandToImmediateOriginal (INS ins, UINT32 operandIndex, UINT64 immediate, REG regBeingReplaced, BOOL replaceXedRegs)
VOID INS_ChangeOperandToImmediate (INS ins, UINT32 operandIndex, REG regBeingReplaced, UINT64 immediate)
LOCALFUN VOID INS_InitFarDirectOp (INS ins, UINT32 displacement, UINT16 segment_selector, xed_iclass_enum_t iclass)
+VOID INS_GenRegRegOp (INS ins, REG src_reg, REG dst_reg, OPCODE opcode)
+VOID INS_GenRegRegWordOp (INS ins, REG src_reg, REG dst_reg, OPCODE opcode)
+VOID INS_GenRegRegDwordOp (INS ins, REG src_reg, REG dst_reg, OPCODE opcode)
+VOID INS_GenRegRegByteOp (INS ins, REG src_reg, REG dst_reg, OPCODE opcode)
+VOID INS_GenRegImmOp (INS ins, REG reg, UINT64 immed, OPCODE opcode)
+VOID INS_GenRegImmByteOp (INS ins, REG reg, UINT64 immed, OPCODE opcode)
+VOID INS_GenRegImmWordOp (INS ins, REG reg, UINT64 immed, OPCODE opcode)
+VOID INS_GenRegImmDwordOp (INS ins, REG reg, UINT64 immed, OPCODE opcode)
VOID INS_InitHalt (INS ins)
VOID INS_InitMovMemImmOp (INS ins, REG base, ADDRINT displacement, REG index, ADDRINT scale, REG pinseg, UINT64 immed, UINT8 legal_immed_bytewidths_bitmap, BOOL exactCopy)
VOID INS_InitMovMemImmOpWidth (INS ins, REG base, ADDRINT displacement, REG index, ADDRINT scale, REG pinseg, UINT64 immed, UINT8 legal_immed_bytewidths_bitmap, REGWIDTH reg_width)
VOID INS_InitStoreMaskReg (INS ins, REG src, REG base, ADDRINT displacement, REG index, UINT32 scale, REG seg, BOOL exactCopy)
VOID INS_InitLoadMaskReg (INS ins, REG dst, REG base, ADDRINT displacement, REG index, UINT32 scale, REG seg, BOOL exactCopy)
VOID INS_GenMemImmOpWidth (INS ins, REG base, ADDRINT displacement, REG index, ADDRINT scale, UINT64 immed, OPCODE opcode, UINT8 legal_immed_bytewidths_bitmap, REGWIDTH reg_width)
VOID INS_GenSizedNop (INS ins, UINT requested_length_bytes)
+LOCALFUN UINT GetSimpleDisplacementWidthForAVX512 (const INT32 displacement)
VOID INS_InitUnalignedStoreXMM (INS ins, REG src, REG base, INT32 displacement, REG index, UINT scale, REG seg, BOOL exactCopy)
VOID INS_InitUnalignedStoreXMMUsingAvx (INS ins, REG src, REG base, INT32 displacement, REG index, UINT scale, REG seg, BOOL exactCopy)
VOID INS_InitUnalignedStoreYMM (INS ins, REG src, REG base, INT32 displacement, REG index, UINT scale, REG seg, BOOL exactCopy)
VOID INS_InitAlignedStoreXMM (INS ins, REG src, REG base, INT32 displacement, REG index, UINT scale, REG seg)
VOID INS_InitAlignedStoreZMM (INS ins, REG src, REG mask, REG base, INT32 displacement, REG index, UINT scale, REG seg, BOOL exactCopy)
VOID INS_InitUnalignedStoreZMM (INS ins, REG src, REG mask, REG base, INT32 displacement, REG index, UINT scale, REG seg, BOOL exactCopy)
VOID INS_InitUnalignedLoadXMM (INS ins, REG dst, REG base, INT32 displacement, REG index, UINT scale, REG seg, BOOL exactCopy)
VOID INS_InitUnalignedLoadYMM (INS ins, REG dst, REG base, INT32 displacement, REG index, UINT scale, REG seg, BOOL exactCopy)
VOID INS_InitAlignedLoadXMM (INS ins, REG dst, REG base, INT32 displacement, REG index, UINT scale, REG seg)
VOID INS_InitAlignedLoadZMM (INS ins, REG dst, REG mask, REG base, INT32 displacement, REG index, UINT scale, REG seg, BOOL exactCopy)
VOID INS_InitUnalignedLoadZMM (INS ins, REG dst, REG mask, REG base, INT32 displacement, REG index, UINT scale, REG seg, BOOL exactCopy)
LOCALFUN VOID INS_InitXMMLoadOp (INS ins, REG dst, REG base, INT32 displacement, REG index, UINT scale, REG seg, xed_iclass_enum_t iclass)
LOCALFUN VOID INS_InitXMMRegRegOp (INS ins, REG dst, REG src, xed_iclass_enum_t iclass)
LOCALFUN VOID INS_InitGPR32XMMOp (INS ins, REG dst, REG src, xed_iclass_enum_t iclass)
VOID INS_InitVxorpd (INS ins, REG ymmDest, REG ymmSrc1, REG ymmSrc2)
VOID INS_Vinsertf128FromMem (INS ins, REG ymmDest, REG ymmSrc1, REG base, INT32 displacement, REG index, UINT scale, REG seg, UINT8 imm8)
VOID INS_Vinsertf32x4FromMem (INS ins, REG zmmDest, REG zmmSrc1, REG maskReg, REG base, INT32 displacement, REG index, UINT scale, REG seg, UINT8 imm8)
VOID INS_InitPCMPEQBRegMem (INS ins, REG dst, REG base, INT32 displacement, REG index, UINT scale, REG seg)
VOID INS_InitPCMPEQDRegMem (INS ins, REG dst, REG base, INT32 displacement, REG index, UINT scale, REG seg)
VOID INS_InitPORRegMem (INS ins, REG dst, REG base, INT32 displacement, REG index, UINT scale, REG seg)
VOID INS_InitMOVDQARegReg (INS ins, REG dst, REG src)
VOID INS_InitPANDRegReg (INS ins, REG dst, REG src)
VOID INS_InitPMOVMSKB (INS ins, REG dst, REG src)
VOID INS_InitLoadMMX (INS ins, REG dst, REG base, INT32 displacement, REG index, UINT scale, REG seg)
VOID INS_InitStoreMMX (INS ins, REG src, REG base, INT32 displacement, REG index, UINT scale, REG seg)
VOID INS_InitLoad (INS ins, REG dst, REG base, ADDRINT displacement, REG index, ADDRINT scale, REG seg, BOOL exactCopy)
VOID INS_InitLoadWidth (INS ins, REG dst, REG base, ADDRINT displacement, REG index, ADDRINT scale, REG seg, REGWIDTH reg_width)
VOID INS_InitLoadEaWidth (INS ins, REG dst, REG base, ADDRINT displacement, REG index, ADDRINT scale, REG seg, INT32 ea_width)
VOID INS_InitStore (INS ins, REG src, REG base, ADDRINT displacement, REG index, UINT32 scale, REG seg, BOOL exactCopy)
VOID INS_InitStore (INS ins, REG src, REG base, ADDRINT displacement, REG index, UINT32 scale, BOOL exactCopy)
VOID INS_InitStoreWidth (INS ins, REG src, REG base, ADDRINT displacement, REG index, UINT32 scale, REG seg, REGWIDTH reg_width, BOOL exactCopy)
VOID INS_InitStoreNTIWidth (INS ins, REG src, REG base, ADDRINT displacement, REG index, UINT32 scale, REG seg, REGWIDTH reg_width)
VOID INS_InitLea (INS ins, REG dst, REG base, ADDRINT displacement, REG index, UINT32 scale)
VOID INS_InitLea (INS ins, REG dst, REG base, REG seg)
VOID INS_InitLeaEaWidth (INS ins, REG dst, REG base, ADDRINT displacement, REG index, UINT32 scale, INT32 ea_width)
VOID INS_InitLeaEaWidth (INS ins, REG dst, REG base, ADDRINT displacement, REG index, UINT32 scale, INT32 ea_width, REGWIDTH reg_width)
VOID INS_InitStoreMxcsr (INS ins, REG base, ADDRINT displacement, REG index, UINT32 scale, BOOL useAvxVersion)
VOID INS_InitLoadMxcsr (INS ins, REG base, ADDRINT displacement, REG index, UINT32 scale, BOOL useAvxVersion)
VOID INS_InitFxsave (INS ins, REG base, ADDRINT displacement, REG index, UINT32 scale)
VOID INS_InitXsave (INS ins, REG base, ADDRINT displacement, REG index, UINT32 scale)
VOID INS_InitFxrstor (INS ins, REG base, ADDRINT displacement, REG index, UINT32 scale)
VOID INS_InitXrstor (INS ins, REG base, ADDRINT displacement, REG index, UINT32 scale)
VOID INS_InitPush (INS ins, REG reg)
+LOCALFUN VOID INS_InitVZeroUpperOriginal (INS ins)
VOID INS_InitVZeroUpper (INS ins)
VOID INS_InitPop (INS ins, REG reg)
VOID INS_InitPushF (INS ins)
VOID INS_InitLods (INS ins)
VOID INS_InitStos (INS ins)
VOID INS_InitRepStos (INS ins)
VOID INS_InitPopF (INS ins)
VOID INS_InitSAHF (INS ins)
VOID INS_InitLAHF (INS ins)
VOID INS_InitPushAL (INS ins)
VOID INS_InitPopAL (INS ins)
VOID INS_InitPush (INS ins, REG base, ADDRINT displacement, REG index, UINT32 scale, REG seg)
VOID INS_InitPushWidth (INS ins, REG base, ADDRINT displacement, REG index, UINT32 scale, REG seg, REGWIDTH reg_width)
VOID INS_InitPop (INS ins, REG base, ADDRINT displacement, REG index, UINT32 scale)
VOID INS_InitFarDirectJmp (INS ins, UINT32 displacement, UINT16 segment_selector)
VOID INS_InitFarDirectCall (INS ins, UINT32 displacement, UINT16 segment_selector)
VOID INS_InitIntx86 (INS ins, UINT64 num)
VOID INS_InitAndI (INS ins, REG reg, UINT64 imm)
VOID INS_InitAnd (INS ins, REG src, REG dst)
VOID INS_InitOrI (INS ins, REG reg, UINT64 imm)
VOID INS_InitShlI (INS ins, REG reg, UINT64 imm)
VOID INS_InitBsr (INS ins, REG src, REG dst)
VOID INS_InitShrI (INS ins, REG reg, UINT64 imm)
VOID INS_InitAddI (INS ins, REG reg, UINT64 imm)
VOID INS_InitAddCI (INS ins, REG reg, UINT64 imm)
VOID INS_InitSubI (INS ins, REG reg, UINT64 imm)
VOID INS_InitNeg (INS ins, REG reg)
VOID INS_InitNot (INS ins, REG reg)
VOID INS_InitCld (INS ins)
VOID INS_InitStd (INS ins)
VOID INS_InitPushI (INS ins, UINT64 imm)
VOID INS_InitJmpL (INS ins, UINT64 imm)
VOID INS_InitJmpR (INS ins, REG src)
VOID INS_InitJxMemoryFromOtherIns (INS ins, INS other, REG base, ADDRINT displacement, REG index, UINT32 scale)
VOID INS_InitJmpM (INS ins, REG base, ADDRINT displacement, REG index, UINT32 scale, REG segreg)
VOID INS_InitJxBLFromOtherIns (INS ins, INS other, UINT64 imm)
+VOID INS_InitJNZ (INS ins, INT32 imm)
+VOID INS_InitJZ (INS ins, INT32 imm)
+VOID INS_InitJAE (INS ins, INT32 imm)
+VOID INS_InitJMP (INS ins, INT32 imm)
VOID INS_InitJCXZ (INS ins, UINT64 imm, REG countReg)
VOID INS_GenRetImm (INS ins, UINT64 imm)
VOID INS_InitCall (INS ins, UINT64 imm)
VOID INS_InitCallIndirectMemory (INS ins, REG segment, REG base, ADDRINT displacement, REG index, UINT32 scale)
VOID INS_InitCallIndirectRegister (INS ins, REG target)
VOID INS_InitRet (INS ins)
VOID INS_InitInt (INS ins, UINT8 imm)
VOID INS_InitInt3 (INS ins)
VOID INS_InitUD2 (INS ins)
VOID INS_InitTest (INS ins, REG src, REG dst)
VOID INS_InitTestI (INS ins, REG reg, UINT64 imm)
VOID INS_InitTestMI (INS ins, REG base, ADDRINT displacement, REG index, ADDRINT scale, REG pinseg, UINT64 immed)
VOID INS_InitAndMI (INS ins, REG base, ADDRINT displacement, REG index, ADDRINT scale, REG pinseg, UINT64 immed)
VOID INS_InitOrMI (INS ins, REG base, ADDRINT displacement, REG index, ADDRINT scale, REG pinseg, UINT64 immed)
VOID INS_InitXor (INS ins, REG src, REG dst)
VOID INS_InitNop (INS ins)
VOID INS_InitMov (INS ins, REG src, REG dst)
VOID INS_InitMov32 (INS ins, REG src, REG dst)
VOID INS_InitMov16 (INS ins, REG src, REG dst)
VOID INS_InitMov8 (INS ins, REG src, REG dst)
VOID INS_InitMovzx (INS ins, REG src, REG dst)
VOID INS_InitMovsx (INS ins, REG src, REG dst)
VOID INS_InitMovsxMemop (INS ins, REG dst, REG base, ADDRINT displacement, REG index, UINT32 scale, REG seg, UINT32 memWidth)
VOID INS_InitMovSW (INS ins)
VOID INS_InitMovRegMem (INS ins, REG src, REG base, ADDRINT displacement, REG index, UINT32 scale)
VOID INS_InitMovMemReg (INS ins, REG segment, REG base, ADDRINT displacement, REG index, UINT32 scale, REG dst)
VOID INS_InitMovI (INS ins, UINT64 imm, REG dst, BOOL denyImm32SignExtension=FALSE)
VOID INS_InitMovAddrint (INS ins, ADDRINT imm, REG dst)
VOID INS_InitCmpI (INS ins, REG reg, UINT64 imm)
VOID INS_InitCmpBI (INS ins, REG reg, UINT64 imm)
VOID INS_InitCmpWI (INS ins, REG reg, UINT64 imm)
VOID INS_InitCmp (INS ins, REG src_reg, REG dst_reg)
VOID INS_InitXchg (INS ins, REG src_reg, REG dst_reg)
VOID INS_InitSubR (INS ins, REG src, REG dst)
VOID INS_InitAddR (INS ins, REG src, REG dst)
VOID INS_InitAddCR (INS ins, REG src, REG dst)
VOID INS_InitCmpMR (INS ins, REG base, ADDRINT displacement, REG index, UINT32 scale, REG reg)
VOID INS_InitRdtsc (INS ins)
VOID INS_GenRegMemOpWidth (INS ins, REG base, ADDRINT displacement, REG index, UINT32 scale, REG reg, OPCODE opcode, UINT8 legal_displacement_bytewidths_bitmap, REGWIDTH reg_width)
VOID INS_GenMemRegOpWidth (INS ins, REG base, ADDRINT displacement, REG index, UINT32 scale, REG src, OPCODE opcode, REGWIDTH reg_width, UINT store_bytes)
VOID INS_InitCmovccFromJcc (INS ins, INS jcc, REG src, REG dst)
VOID INS_InitCmov (INS ins, REG src, REG dst, PREDICATE_IA32 cond)
VOID INS_InitSetCC (INS ins, REG reg, PREDICATE_IA32 cond)
VOID INS_InitAAA (INS ins)
VOID INS_InitSeto (INS ins, REG reg)
VOID INS_InvertBr (INS ins)
VOID INS_InitIncMem (INS ins, REG base, ADDRINT disp, BOOL lock)
VOID INS_EmbedValue (INS ins, VOID *valuePtr, UINT32 valueSize)
VOID INS_MakeBaseAddress (INS ins, REG base)
+UINT32 INS_min_alignment ()
INS SEC_FindOriginalTargetIns (SEC sec, INS ins)
BBL SEC_FindTargetBbl (SEC sec, INS ins)
IADDR SEC_MapOriginalInsToIaddr (SEC sec, INS ins)
INS SEC_MapIaddrToOriginalIns (SEC sec, IADDR iaddr)
LOCALVAR MESSAGE_TYPE MessageTypeLogInsReuse ("log_ins_reuse","", false, false, false, false, LOGTYPE_LOGFILE,"pin log: ins_reusing")
INS_REUSERS_MANAGER & InsReusersManager ()
KNOB< BOOL > KnobUseInsReusing (KNOB_MODE_WRITEONCE,"supported:regalloc","ins_reusing","1","Enable ins reusing")
+LOCALVAR STAT_NORM StatInReusingStoreBytes ("mem","bytes","ins_reusing","",&StatRawMmapBytes)
+LOCALVAR MESSAGE_TYPE MessageTypeLogXEDIa32 ("log_xed","", false, false, false, false, LOGTYPE_LOGFILE,"pin log: Intel(R) X86 Encoder Decoder ")
+LOCALVAR STAT_UINT64 XEDStatDecode ("pin","xed","decoded_insts_by_xed","")
+LOCALVAR STAT_UINT64 XEDStatDecodeForDecodeIns ("pin","xed","decoded_insts_for_DecodeIns","")
+LOCALVAR STAT_UINT64 XEDStatDecodeForValidation ("pin","xed","decoded_insts_for_Validation","")
+LOCALVAR STAT_UINT64 XEDStatDecodeFor_update_stripe ("pin","insts","decoded_for_update_stripe","")
+LOCALVAR STAT_UINT64 XEDStatEncode ("pin","insts","encoded_insts_by_xed","")
+LOCALVAR STAT_UINT64 XEDStatReencodeAndDecode ("pin","insts","encoded_decode_reencode","")
+LOCALVAR STAT_UINT64 PinFetchedInssStat ("pin","insts","fetched_total","")
+LOCALVAR STAT_UINT64 PinGeneratedInssStat ("pin","insts","generated_inss_via_xed","")
+LOCALVAR STAT_NORM TimerXEDStatEncodeAndDecode ("pin","time","XED_e_d_updt_strp","",&TimerCompile)
+LOCALVAR STAT_UINT64 XEDStatInsEncode ("pin","insts","encode_INS_Encode_total","")
+LOCALVAR STAT_UINT64 XEDStatInsEncodeUsedCachedEncode ("pin","insts","encode_INS_Encode_used_cached","")
+LOCALVAR STAT_UINT64 XEDStatCachedReencode ("pin","insts","cached_reencoded_insts","")
+LOCALVAR KNOB_COMMENT knob_xed_family ("supported:xed","Intel(R) X86 Encoder Decoder switches")
KNOB< BOOL > knob_mpx_mode (KNOB_MODE_WRITEONCE,"supported:xed","xed_mpx_mode","0","Enable Intel(R) MPX instruction decoding")
KNOB< BOOL > knob_cet_mode (KNOB_MODE_WRITEONCE,"supported:xed","xed_cet_mode","0","Enable Intel(R) CET instruction decoding")
+LOCALVAR KNOB< BOOL > KnobXedValidateEncoding (KNOB_MODE_WRITEONCE,"supported","xedvalidateencoding","0","Check the encoding by decoding and comparing")
+LOCALVAR KNOB< BOOL > KnobXedReencodeTest (KNOB_MODE_WRITEONCE,"supported","xedreencodetest","0","Intel(R) X86 Encoder Decoder reencode test")
+LOCALVAR KNOB< BOOL > KnobXedReencodeCache (KNOB_MODE_WRITEONCE,"supported","xedreencodecache","1","Intel(R) X86 Encoder Decoder reencode cache")
+LOCALVAR KNOB< BOOL > KnobXedEncoderTest (KNOB_MODE_WRITEONCE,"supported","xedenc","0","Intel(R) X86 Encoder Decoder encoder testing")
+LOCALVAR KNOB< UINT32 > KnobXedLog (KNOB_MODE_WRITEONCE,"supported","xedlog","0","Intel(R) X86 Encoder Decoder log messages levels 0-5")
+LOCALVAR KNOB< string > KnobXedLogfile (KNOB_MODE_WRITEONCE,"supported","xedlogfile","xed.log","The Intel(R) X86 Encoder Decoder logfile prefix")
+LOCALVAR KNOB< BOOL > KnobXedDecodeLog (KNOB_MODE_WRITEONCE,"supported","log_xed_decode","0","log all decodes")
+LOCALVAR KNOB< BOOL > KnobXedEncodeLog (KNOB_MODE_WRITEONCE,"supported","log_xed_encode","0","log all encodes")
STRIPE< INS_XED_STRUCT_DECODE > InsStripeXEDDecode ("ins stripe Intel(R) X86 Encoder Decoder ia32 decoded","core",&InsArrayBase)
STRIPE< INS_XED_STRUCT_ENCODE > InsStripeXEDEncode ("ins stripe Intel(R) X86 Encoder Decoder ia32 encoded","core",&InsArrayBase)
UINT32 INS_orig_size (INS x)
VOID INS_orig_size_set (INS x, UINT32 y)
xed_decoded_inst_t * INS_xed_dec (INS ins)
xed_operand_values_t * INS_xed_operand_values (INS ins)
VOID INS_SetDirty (INS ins)
xed_decoded_inst_t * INS_XedDec (INS ins)
+LOCALINLINE VOID INS_ClearDirty (INS ins)
VOID INS_ClearDirtyG (INS ins)
+LOCALINLINE BOOL INS_Dirty (INS ins)
BOOL INS_DirtyG (INS ins)
+LOCALINLINE VOID INS_EncodeSizeSet (INS ins, UINT32 size)
VOID INS_EncodeSizeSetG (INS ins, UINT32 size)
+LOCALINLINE UINT32 INS_EncodeSize (INS ins)
UINT32 INS_EncodeSizeG (INS ins)
+LOCALINLINE UINT8 * INS_EncodeBuffer (INS ins)
UINT8 * INS_EncodeBufferG (INS ins)
VOID INS_set_reg_r (INS x, UINT i, REG r)
VOID INS_set_reg_w (INS x, UINT i, REG r)
REG INS_get_reg_r (INS x, UINT i)
REG INS_get_reg_w (INS x, UINT i)
xed_operand_enum_t INS_get_role_r (INS x, UINT i)
xed_operand_enum_t INS_get_role_w (INS x, UINT i)
UINT INS_get_pos_r (INS x, UINT i)
UINT INS_get_pos_w (INS x, UINT i)
xed_operand_enum_t INS_GetRole (INS ins, UINT i, BOOL read)
UINT INS_GetPos (INS ins, UINT i, BOOL read)
REG INS_GetReg (INS ins, UINT i, BOOL read)
VOID INS_SetReg (INS ins, UINT i, REG r, BOOL read)
UINT8 INS_get_num_reads (INS x)
UINT8 INS_get_num_writes (INS x)
UINT8 INS_set_num_reads (INS x, UINT v)
UINT8 INS_set_num_writes (INS x, UINT v)
+LOCALFUN VOID INS_set_role_r (INS x, UINT i, xed_operand_enum_t r)
+LOCALFUN VOID INS_set_role_w (INS x, UINT i, xed_operand_enum_t r)
+LOCALFUN VOID INS_set_pos_r (INS x, UINT i, UINT r)
+LOCALFUN VOID INS_set_pos_w (INS x, UINT i, UINT r)
+LOCALFUN string XED_StringXed (xed_decoded_inst_t *xedd)
string INS_StringXed (INS ins)
+LOCALFUN string BeforeAfter (xed_decoded_inst_t *before, xed_decoded_inst_t *after)
+LOCALFUN VOID RecordMismatch (BOOL &mismatch, ostringstream &ostr, const string reason)
+LOCALVAR STAT_NORM TimerDecode ("pin","time","decode_(overlaps)","",&TimerVm)
+LOCALFUN VOID XED_print_bytes (ostream &os, const UINT8 *buf, UINT len)
+LOCALFUN xed_error_enum_t XedDecode (xed_decoded_inst_t *output, const UINT8 *buffer, UINT32 size)
+LOCALVAR STAT_NORM TimerEncode ("pin","time","encode_(overlaps)","",&TimerVm)
+LOCALFUN BOOL XedEncode (xed_encoder_request_t *xed_enc, UINT8 *new_bits, const UINT itext_length, UINT *olen)
+LOCALFUN VOID ValidateEncoding (INS inputIns, UINT len, UINT8 *buffer)
LOCALFUN VOID XED_decode_update_stripe (INS ins, const xed_operand_values_t *enc_operands, UINT itext_buf_len, UINT enc_len, UINT8 *itext_buf)
LOCALFUN string StrXedEnc (const xed_encoder_request_t *r)
VOID XED_reencode_decode_update_stripe (INS ins)
VOID XED_encode_decode_update_stripe (INS ins, xed_encoder_request_t *xed_enc)
REG xed_reg_to_pin_reg (xed_reg_enum_t xedreg, INS ins)
REG XED_BaseOnly (INS ins, BOOL filterWrites, BOOL filterReads, BOOL filterImplicit)
VOID XED_logger (INS ins, char *msg)
+LOCALFUN VOID init_xed_pin_reg_arrays ()
REG INS_XedExactMapToPinReg (unsigned int r)
REG xed_exact_map_to_pin_reg (xed_reg_enum_t xed_reg)
REG xed_map_to_pin_reg (xed_reg_enum_t xed_reg)
xed_reg_enum_t xed_exact_map_from_pin_reg (REG pin_reg)
VOID XED_RegRolePosToXED (INS ins)
FLAGS XED_PhyFlagsWritten (const xed_decoded_inst_t *xedd, BOOL onlyDefinite)
FLAGS XED_PhyFlagsRead (const xed_decoded_inst_t *xedd)
+LOCALINLINE VOID AddRegToRegsRead (INS ins, UINT &nr, REG pinRegR, xed_operand_enum_t xed_operand, UINT xed_operand_index)
+LOCALINLINE VOID AddRegToRegsWritten (INS ins, UINT &nw, REG pinRegW, xed_operand_enum_t xed_operand, UINT xed_operand_index)
+LOCALFUN VOID XED_add_reg_to_stripe (INS ins, const xed_decoded_inst_t *xedd, const xed_operand_action_enum_t rw, xed_operand_enum_t xed_operand, UINT xed_operand_index, UINT &nr, UINT &nw)
+LOCALFUN UINT find_or_bump_pos_write (INS ins, const xed_operand_enum_t xed_operand, UINT &n)
+LOCALFUN UINT find_or_bump_pos_read (INS ins, const xed_operand_enum_t xed_operand, UINT &n)
+LOCALFUN VOID XED_update_reg_in_stripe (INS ins, const xed_decoded_inst_t *xedd, const xed_operand_action_enum_t rw, xed_operand_enum_t xed_operand, UINT xed_operand_index, UINT &nr, UINT &nw)
+LOCALINLINE BOOL IsMultiSourceOperand (const xed_operand_type_enum_t otype)
+LOCALINLINE REG GetBaseVectorReg (const REG reg)
+LOCALINLINE REG GetLastVectorReg (const REG reg)
+LOCALINLINE UINT32 GetMultiSourceOperandVectorMask (const xed_operand_type_enum_t otype)
+LOCALINLINE UINT32 NumOfRegsInMultiSourceOperand (const xed_operand_type_enum_t otype)
+LOCALFUN VOID XED_add_multisource_reg_to_stripe (INS ins, const xed_decoded_inst_t *xedd, const xed_operand_type_enum_t otype, xed_operand_enum_t xed_operand, UINT xed_operand_index, UINT &nr)
VOID XED_RegRolePosFromXED (INS ins)
VOID INS_XED_replace_dummy (INS ins, xed_reg_enum_t xedreg, REG pin_virt_reg, xed_operand_enum_t role, UINT xedpos)
VOID XED_log_init ()
+LOCALFUN VOID InitJccConvertTable ()
xed_iclass_enum_t JccIclassToCmovcc (INS ins)
PREDICATE_IA32 INS_TestedCondition (INS ins)
+LOCALFUN VOID pin_abort_for_xed (const char *msg, const char *file, int line, void *)
VOID XED_init ()
INT32 INS_RawEncodeIns (INS ins, UINT8 *buffer)
UINT32 INS_EncodeIns (INS ins, VOID *buffer)
+LOCALFUN VOID ReencodeTest (xed_decoded_inst_t *xedd, UINT orig_len, const UINT8 *bytes, INS ins)
LOCALFUN EXCEPTION_CODE XedError2ExceptionCode (xed_error_enum_t xed_error)
UINT32 INS_OperandCount (INS ins)
+UINT32 INS_OperandNameId (INS ins, UINT32 n)
BOOL INS_OperandIsMemory (INS ins, UINT32 n)
REG INS_OperandMemoryBaseReg (INS ins, UINT32 n)
REG INS_OperandMemoryIndexReg (INS ins, UINT32 n)
REG INS_OperandMemorySegmentReg (INS ins, UINT32 n)
UINT32 INS_OperandMemoryScale (INS ins, UINT32 n)
ADDRDELTA INS_OperandMemoryDisplacement (INS ins, UINT32 n)
BOOL INS_OperandIsFixedMemop (INS ins, UINT32 n)
+VOID GetNumberAndSizeOfMemAccesses (INS ins, int *numAccesses, int *accessSize, int *indexSize)
UINT32 INS_MemoryOperandCount (INS ins)
BOOL INS_OperandIsAddressGenerator (INS ins, UINT32 n)
BOOL INS_OperandIsBranchDisplacement (INS ins, UINT32 n)
BOOL INS_OperandIsReg (INS ins, UINT32 n)
REG INS_OperandReg (INS ins, UINT32 n)
BOOL INS_OperandIsImmediate (INS ins, UINT32 n)
UINT64 INS_OperandImmediate (INS ins, UINT32 n)
BOOL INS_OperandIsImplicit (INS ins, UINT32 n)
BOOL INS_RegIsImplicit (INS ins, REG reg)
UINT32 INS_OperandWidth (INS ins, UINT32 n)
BOOL INS_OperandRead (INS ins, UINT32 n)
BOOL INS_OperandWritten (INS ins, UINT32 n)
BOOL INS_OperandReadOnly (INS ins, UINT32 n)
BOOL INS_OperandWrittenOnly (INS ins, UINT32 n)
BOOL INS_OperandReadAndWritten (INS ins, UINT32 n)
PIN_DEPRECATED_API BOOL INS_OperandReadAndWriten (INS ins, UINT32 n)
BOOL INS_OperandIsGsOrFsReg (INS ins)
BOOL INS_PrefixIsGsOrFsReg (INS ins)
BOOL INS_MemoryOperandIsRead (INS ins, UINT32 memopIdx)
BOOL INS_MemoryOperandIsWritten (INS ins, UINT32 memopIdx)
UINT32 INS_MemoryOperandIndexToOperandIndex (INS ins, UINT32 memopIdx)
BOOL REGSET_Contains (const REGSET &regset, REG reg)
VOID REGSET_Insert (REGSET &regset, REG reg)
VOID REGSET_Remove (REGSET &regset, REG reg)
VOID REGSET_Clear (REGSET &regset)
VOID REGSET_AddAll (REGSET &regset)
REG REGSET_PopNext (REGSET &regset)
UINT32 REGSET_PopCount (const REGSET &regset)
BOOL REGSET_PopCountIsZero (const REGSET &regset)
string REGSET_StringShort (const REGSET &regset)
string REGSET_StringList (const REGSET &regset)
+UINT32 REGSET_HashKey (const REGSET &regset)
+BOOL REGSET_CONTEXT_Contains (const REGSET_CONTEXT regset, REG reg)
+VOID REGSET_CONTEXT_Insert (REGSET_CONTEXT &regset, REG reg)
+VOID REGSET_CONTEXT_Remove (REGSET_CONTEXT &regset, REG reg)
+VOID REGSET_CONTEXT_Clear (REGSET_CONTEXT &regset)
+REG REGSET_CONTEXT_PopNext (REGSET_CONTEXT &regset)
+UINT32 REGSET_CONTEXT_PopCount (const REGSET_CONTEXT &regset)
+BOOL REGSET_CONTEXT_PopCountIsZero (const REGSET_CONTEXT &regset)
+string REGSET_CONTEXT_StringShort (const REGSET_CONTEXT &regset)
+string REGSET_CONTEXT_StringList (const REGSET &regset)
+LOCALINLINE VOID SetX87Bit (FPSTATE *fpstate)
+LOCALINLINE VOID SetSseBit (FPSTATE *fpstate)
+LOCALINLINE VOID SetAvxBit (FPSTATE *fpstate)
+LOCALINLINE VOID SetOpmaskBit (FPSTATE *fpstate)
+LOCALINLINE VOID SetZmmHi256Bit (FPSTATE *fpstate)
VOID REG_StoreXmmToFxsave (const REG xmm, const REGVALUE128 &val, FPSTATE *fpstate)
VOID REG_StoreXmmToFxsave (const REG xmm, const VOID *val, FPSTATE *fpstate)
VOID REG_StoreYmmToFxsave (const REG ymm, const REGVALUE256 &val, FPSTATE *fpstate)
VOID REG_StoreYmmToFxsave (const REG ymm, const VOID *val, FPSTATE *fpstate)
VOID REG_StoreZmmToFxsave (const REG zmm, const REGVALUE512 &val, FPSTATE *fpstate)
VOID REG_StoreZmmToFxsave (const REG zmm, const VOID *val, FPSTATE *fpstate)
VOID REG_StoreKMaskToFxsave (const REG kmask, const UINT64 &val, FPSTATE *fpstate)
const REGVALUE128 & REG_ReadXmmFromFxsave (const REG xmm, const FPSTATE *fpstate)
VOID REG_ReadXmmFromFxsave (const REG xmm, const FPSTATE *fpstate, VOID *val)
VOID REG_ReadYmmFromFxsave (const REG ymm, const FPSTATE *fpstate, VOID *val)
REGVALUE256 REG_ReadYmmFromFxsave (const REG ymm, const FPSTATE *fpstate)
VOID REG_ReadZmmFromFxsave (const REG zmm, const FPSTATE *fpstate, VOID *val)
const REGVALUE512 REG_ReadZmmFromFxsave (const REG zmm, const FPSTATE *fpstate)
const UINT64 & REG_ReadKMaskFromFxsave (const REG kmask, const FPSTATE *fpstate)
VOID REG_StoreShortFpToFxsave (REG reg, const REGVALUE val, FXSAVE *fxsave)
VOID REG_StoreShortFpToFpstate (REG reg, const REGVALUE val, FPSTATE *fpstate)
REGVALUE REG_ReadShortFpFromFxsave (REG reg, const FXSAVE *fxsave)
REGVALUE REG_ReadShortFpFromFpstate (REG reg, const FPSTATE *fpstate)
VOID REG_StoreStToFxsave (REG reg, const VOID *val, FXSAVE *fxsave)
VOID REG_StoreStToFpstate (REG reg, const VOID *val, FPSTATE *fpstate)
VOID REG_StoreStToFxsave (REG reg, const REGVALUE128 &val, FXSAVE *fxsave)
VOID REG_StoreStToFpstate (REG reg, const REGVALUE128 &val, FPSTATE *fpstate)
VOID REG_ReadStFromFxsave (REG reg, const FXSAVE *fxsave, VOID *val)
VOID REG_ReadStFromFpstate (REG reg, const FPSTATE *fpstate, VOID *val)
const REGVALUE128 & REG_ReadStFromFxsave (REG reg, const FXSAVE *fxsave)
const REGVALUE128 & REG_ReadStFromFpstate (REG reg, const FPSTATE *fpstate)
REGVALUE REG_ReadPseudo (REG reg)
VOID REG_StorePseudo (REG reg, REGVALUE val)
VOID CopyCompFpStateToStandard (ADDRINT compFpState, FPSTATE *standardFpState, UINT64 compMask)
SYSCALL_STANDARD NativeSysCallStd ()
REG REG_SysCallResult (SYSCALL_STANDARD std=NativeSysCallStd())
REG REG_SysCallErrno (SYSCALL_STANDARD std=NativeSysCallStd())
REG REG_SysCallNumber (SYSCALL_STANDARD std=NativeSysCallStd())
UINT32 InvalidSysCallNumber ()
INT32 REG_NumSysCallArgRegs (SYSCALL_STANDARD std=NativeSysCallStd())
REGSET REGSET_SyscalleeSavedGr (SYSCALL_STANDARD std=NativeSysCallStd())
REG REG_SysCallArgReg (INT32 ith_arg, SYSCALL_STANDARD std=NativeSysCallStd())
BOOL GetSysCallArgMem (INT32 ith_arg, MEM_ADDR_EXP *pExp, SYSCALL_STANDARD std=NativeSysCallStd())
LOCALFUN INT32 INT_Immediate (xed_decoded_inst_t *xedd)
BOOL INS_IsSyscall (INS ins)
SYSCALL_STANDARD INS_SyscallStd (INS ins)
LOCALFUN SYSCALL_TYPE INS_SyscallType (INS ins)
BOOL INS_SyscallHasFallThrough (INS ins)
BOOL INS_SyscallIsTakenBranch (INS ins)

Variables

LOCALVAR BBL last_nonreturning_fun = BBL_INVALID()
GLOBALCONST BOOL B_HIDDEN = 1
GLOBALCONST BOOL B_CROSSLINK = 1
GLOBALCONST PIN_DEPRECATED_API
+UINT32 
VARIABLE_MEMORY_REFERENCE_SIZE = ~0U
+LOCALVAR PINVM::PINSYNC_RWLOCK InsResizeLock
LOCALVAR const SEC_STATE SEC_StateMachineExe []
LOCALVAR const SEC_STATE SEC_StateMachineData []
LOCALVAR const SEC_STATE SEC_StateMachineCooked []
LOCALVAR const SYM_STATE SYM_StateMachine []
+LOCALVAR CHAR const * knobfamily = "supported:disassembly"
+LOCALVAR xed_syntax_enum_t syntax = XED_SYNTAX_INTEL
GLOBALCONST UINT32 MAX_INSTRUCTION_SIZE = 15
GLOBALCONST USIZE SIZE_OF_RIP_AND_ADDR_PROBE = 14
GLOBALCONST USIZE SIZE_OF_RIP_PROBE = 6
GLOBALCONST USIZE SIZE_OF_MEMOFFSET_PROBE = 7
GLOBALCONST USIZE SIZE_OF_OFFSET_PROBE = 5
+LOCALTYPE set< ENCODING_ADDRESS_RANGE_KEY > _dir
LOCALVAR USIZE sizeOfDirectJmp = 0
LOCALVAR USIZE sizeOfIpRelativeMemJmp = 0
GLOBALCONST USIZE INS_PATCH_UNIT = 8
+LOCALCONST UINT AUTO_DISP_BYTES = 0
+LOCALCONST INT32 DEFAULT_EA_WIDTH = sizeof(VOID*) * 8
LOCALCONST xed_state_t DSTATE
+LOCALCONST UINT NATIVE_REG_WIDTH_IN_BITS = GetBitSizeOfRegWidth(REGWIDTH_NATIVE)
+LOCALCONST UINT MAX_DUMMY_REGS = 3
+LOCALCONST UINT MAX_DUMMY_REG_WIDTHS = 4
+LOCALCONST REGWIDTH MAX_DUMMY_REGWIDTH = REGWIDTH_64
LOCALVAR const xed_reg_enum_t dummy_regs_native_table [MAX_DUMMY_REGS]
LOCALVAR const xed_reg_enum_t dummy_regs_width_table [MAX_DUMMY_REGS][MAX_DUMMY_REG_WIDTHS]
+struct {
   xed_iclass_enum_t   cmovOp
   xed_iclass_enum_t   setOp
   xed_iclass_enum_t   _cmov
   xed_iclass_enum_t   _brinv
   PREDICATE_IA32   _condition
predicateToOp []
LOCALVAR string reuserTypeStr []
+LOCALVAR BOOL xed_decode_log
+LOCALVAR BOOL xed_encode_log
+GLOBALCONST UINT32 MAX_XED_REG_TO_PIN_REG = XED_REG_LAST
+GLOBALCONST UINT32 MAX_PIN_REG_TO_XED_REG = REG_MACHINE_LAST+1
+LOCALVAR REG xed_reg_to_pin_reg_exact [MAX_XED_REG_TO_PIN_REG]
+LOCALVAR xed_reg_enum_t pin_reg_to_xed_reg_exact [MAX_PIN_REG_TO_XED_REG]
+struct {
   xed_iclass_enum_t   cmovOp
   xed_iclass_enum_t   setOp
   xed_iclass_enum_t   _cmov
   xed_iclass_enum_t   _brinv
   PREDICATE_IA32   _condition
JccToCMOVcc [XED_ICLASS_LAST]
GLOBALCONST REG REG_FirstInRegset = REG_RBASE
GLOBALCONST REG REG_LastInRegset = REG(REG_LAST-1)
GLOBALCONST REG REG_FirstInRegsetPhyContext = REG_PHYSICAL_INTEGER_BASE
GLOBALCONST REG REG_LastInRegsetPhyContext = REG_PHYSICAL_INTEGER_END
const REGSET REGSET_NONE
const REGSET_CONTEXT REGSET_CONTEXT_NONE
+const FAST_REGSET FAST_REGSET_NONE
+


Detailed Description

+This file contains APP primitives +

+


Typedef Documentation

+

+ + + + +
+ + + + +
typedef EXT* LEVEL_CORE::EXTLIST
+
+ + + + + +
+   + + +

+This is a handle for a list of EXT. This is useful if you don't have a container to hold them (e.g. INS, BBL, ...)

+

+ + + + +
+ + + + +
typedef class FAST_REGISTER_SET< REG_FirstInRegset, REG_LastInRegset > LEVEL_CORE::FAST_REGSET
+
+ + + + + +
+   + + +

+A regset type that contains all registers

+

+ + + + +
+ + + + +
typedef size_t(* LEVEL_CORE::INS_BYTES_FETCHER)(VOID *buf, const VOID *insAddr, size_t size, EXCEPTION_INFO *pExceptInfo)
+
+ + + + + +
+   + + +

+Prototype of a function that reads raw bytes of an instruction to be decoded.

+

Note:
The INS_BYTES_FETCHER type is an example of a generic type <T> that provides the following function-call operator: size_t T::operator() (VOID *buf, const VOID *insAddr, size_t size, EXCEPTION_INFO *pExceptInfo) const; We will use the term "INS_BYTES_FETCHER functor" to denote types that provide this operator.
+
Parameters:
+ + + + + +
[out] buf A buffer which receives the instruction bytes. This buffer is at least size bytes long.
[in] insAddr Address of the first instruction's byte to be read.
[in] size The number of bytes to be read
[out] pExceptInfo If less than size bytes are fetched, pExceptInfo receives an exception that describes why more bytes could not be fetched. If Pin needs more bytes to decode the next instruction, this exception will be delivered to the application.
+
+
Returns:
The number of bytes successfully fetched into the buffer.
+
+

+ + + + +
+ + + + +
typedef ADDRINT LEVEL_CORE::INS_REUSER_HANDLE
+
+ + + + + +
+   + + +

+opaque type of INS_REUSER passed to client of ins_reuse_ia32.cpp as handle

+

+ + + + +
+ + + + +
typedef vector<ADDRINT> LEVEL_CORE::INS_REUSER_ID_VEC
+
+ + + + + +
+   + + +

+The contents of this vector uniquely identify the INS within an INS_REUSER_TYPE. This vector will hold the values of the third and following parameters of the *GetCopy function.

+

+ + + + +
+ + + + +
typedef ADDRINT LEVEL_CORE::INS_REUSER_STORE_HANDLE
+
+ + + + + +
+   + + +

+opaque type

+

+ + + + +
+ + + + +
typedef class INDEX< 202 > LEVEL_CORE::PREG
+
+ + + + + +
+   + + +

+Type that represents a physical register. Note the difference: PREG is a physical register REG is a virtual register

+

+ + + + +
+ + + + +
typedef class REGISTER_SET< REG_FirstInRegsetPhyContext, REG_LastInRegsetPhyContext > LEVEL_CORE::REGSET_CONTEXT
+
+ + + + + +
+   + + +

+A regset type that contains registers in the physical context

+

+ + + + +
+ + + + +
typedef class ADDR< 200 > LEVEL_CORE::REGVALUE
+
+ + + + + +
+   + + +

+Type that represents a value of an ADDRINT-size register

+


Enumeration Type Documentation

+

+ + + + +
+ + + + +
enum LEVEL_CORE::BBL_STATE
+
+ + + + + +
+   + + +

+bbl state enumeration - not used

+

+ + + + +
+ + + + +
enum LEVEL_CORE::BBL_TYPE
+
+ + + + + +
+   + + +

+BBL types enumeration

Enumerator:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BBL_TYPE_INVALID  +illegal type, to indicate unknown type use BBL_TYPE_UNKNOWN instead
BBL_TYPE_UBREAK  +break (no go)
BBL_TYPE_CBREAK  +conditional break
BBL_TYPE_STOP  +stop (no go)
BBL_TYPE_UCALL_UNKNOWN  +(indirect) call to unknown target
BBL_TYPE_UCALL_FUN  +call to known target
BBL_TYPE_UCALL_OS  +os call
BBL_TYPE_CCALL_OS  +conditional os call
BBL_TYPE_CCALL_UNKNOWN  +conditonal (indirect) call to unknown target
BBL_TYPE_CCALL_FUN  +conditonal call to known target
BBL_TYPE_NORMAL  +fallthrough bbl
BBL_TYPE_CBRANCH  +conditional branch
BBL_TYPE_UBRANCH  +unconditional branch
BBL_TYPE_COUNTED  +conditional branch (counted)
BBL_TYPE_SWPIPELINED  +conditional branch (counted,register rotation)
BBL_TYPE_CHECK  +check
BBL_TYPE_PREFETCH  +prefetch
BBL_TYPE_UJUMP  +jump
BBL_TYPE_UJUMP_DYNLINK  +jump into the dynamic linker (in .plt)
BBL_TYPE_UJUMP_THUNK  +call of dynamically linked code
BBL_TYPE_UJUMP_TRAMPOLINE  +jump through a trampoline
BBL_TYPE_UBRANCH_TRAMPOLINE  +jump through a trampoline
BBL_TYPE_CJUMP  +conditional jump
BBL_TYPE_CJUMP_SWITCH  +conditional jump
BBL_TYPE_STUB  +jump bbl that implements a shared lib stub
BBL_TYPE_URETURN  +return
BBL_TYPE_CRETURN  +conditional return
BBL_TYPE_DATA  +data -- NB: data entries must be contiguous. see BBL_IsData
BBL_TYPE_DATA_IADDR  +data -- pin IADDR for ip relative branch on the Intel(R) 64 architecture
BBL_TYPE_DATA_ARGBLOCK  +data -- pin argument block for VM
BBL_TYPE_DATA_SWITCH1  +data
BBL_TYPE_DATA_UNWIND  +data -- unwind data of type UNWIND_INFO linked to portion of code in RTN
BBL_TYPE_DATA_LAST  +data
BBL_TYPE_CONTAINER  +initial container
BBL_TYPE_UNKNOWN  +unknown type
BBL_TYPE_VMSVC  +vm service request
BBL_TYPE_IBRANCH_LOOKUP  +indirect branch lookup code
BBL_TYPE_EMU_FT  +invoke pin emulator on instruction with a fall through path
BBL_TYPE_UCALL_NATIVE_TARGET  +bbl generated by SetNativeTarget
+
+
+

+ + + + +
+ + + + +
enum LEVEL_CORE::CALLING_STANDARD
+
+ + + + + +
+   + + +

+Names of calling standards Following names in Agner Fog's document

+

+ + + + +
+ + + + +
enum LEVEL_CORE::CHUNK_STATE
+
+ + + + + +
+   + + +

+CHUNK state, to be used for consitency checking

+

+ + + + +
+ + + + +
enum LEVEL_CORE::CHUNK_TYPE
+
+ + + + + +
+   + + +

+CHUNK types

+

+ + + + +
+ + + + +
enum LEVEL_CORE::EDG_STATE
+
+ + + + + +
+   + + +

+EDG state enumeration - not used

+

+ + + + +
+ + + + +
enum LEVEL_CORE::EDG_TYPE
+
+ + + + + +
+   + + +

+EDG type enumeration

Enumerator:
+ + + + + + + + + + + + + +
EDG_TYPE_INVALID  +illegal type,
EDG_TYPE_RETURN  +return edge (not used)
EDG_TYPE_CALL  +call edge (callsite -> callee)
EDG_TYPE_LINK  +link edge (callsite->returnsite)
EDG_TYPE_COMP  +compensation edge (not used)
EDG_TYPE_FALSE  +generic fall through edge (predicated)
EDG_TYPE_BRANCH  +branch edge
EDG_TYPE_SWITCH  +switch edge
EDG_TYPE_PREFETCH  +prefetch edge
EDG_TYPE_EXCEPTION  +EH edge (callsite -> landing pad ).
EDG_TYPE_NORMAL  +fall through edge (not predicated)
EDG_TYPE_IBRANCH  +indirect branch (lookup -> target)
+
+
+

+ + + + +
+ + + + +
enum LEVEL_CORE::EXT_ATTR_MODE
+
+ + + + + +
+   + + +

+EXT attribute mode

Enumerator:
+ + + +
EXT_ATTR_MODE_SINGLE  +attribute can only occure once
EXT_ATTR_MODE_MULTIPLE  +attribute can occure multiple times
+
+
+

+ + + + +
+ + + + +
enum LEVEL_CORE::FLAGS
+
+ + + + + +
+   + + +

+Enumeration type for individual flags

+

+ + + + +
+ + + + +
enum LEVEL_CORE::FUNCTION_TYPE
+
+ + + + + +
+   + + +

+Function type is a description of the types of the arguments and return value. Function type + calling standard determines the argument location. This is a placeholder; the real function type cannot be an enumeration, probably use an array of arguments types + return type.

+

+ + + + +
+ + + + +
enum LEVEL_CORE::IMG_STATE
+
+ + + + + +
+   + + +

+not used

+

+ + + + +
+ + + + +
enum LEVEL_CORE::INS_REUSER_TYPE
+
+ + + + + +
+   + + +

+These are the types of INSs maintained for use in generating new INSs. In ins_initis_api_xed_ia32.cpp there is an a INS_Init* function which implicitly uses the corresponding type when calling the *GetCopy function defined in this file. For each INS_REUSER_TYPE_* there can be multiple INSs recorded - according to values specified by the third and following parameters to the *GetCopy function.

+

+ + + + +
+ + + + +
enum LEVEL_CORE::REL_TYPE
+
+ + + + + +
+   + + +

+Relocation types

Enumerator:
+ + + + + +
REL_TYPE_CHUNK_ABS32  +32-bit value in the chunk
REL_TYPE_CHUNK_ABS64  +64-bit value in the chunk
REL_TYPE_INS_PCREL  +PC-relative operand.
REL_TYPE_INS_IA32IMM  +"immediate" operand of an ia32 instruction
+
+
+

+ + + + +
+ + + + +
enum LEVEL_CORE::RTN_STATE
+
+ + + + + +
+   + + +

+not used

+

+ + + + +
+ + + + +
enum LEVEL_CORE::RTN_TYPE
+
+ + + + + +
+   + + +

+RTN type

+

+ + + + +
+ + + + +
enum LEVEL_CORE::SACT_TYPE
+
+ + + + + +
+   + + +

+x

Enumerator:
+ + + +
SACT_VERSION  +Applies to this bbl and successor.
SACT_TARGET_VERSION  +Applies to bbl that is branch target.
+
+
+

+ + + + +
+ + + + +
enum LEVEL_CORE::SEC_STATE
+
+ + + + + +
+   + + +

+SEC state, used for consitency checking

+

+ + + + +
+ + + + +
enum LEVEL_CORE::SEGMENT_TYPE
+
+ + + + + +
+   + + +

+SEC Each elf program header describes a segment, which may contain multiple sections

Enumerator:
+ + + + +
SEGMENT_TYPE_TEXT  +text segment
SEGMENT_TYPE_DATA  +initialized data segment
SEGMENT_TYPE_BSS  +uninitialized data segment
+
+
+

+ + + + +
+ + + + +
enum LEVEL_CORE::SYM_IFUNC_TYPE
+
+ + + + + +
+   + + +

+Symbols Ifunc type indicates about the symbol role in resolving ifunc.

+

+ + + + +
+ + + + +
enum LEVEL_CORE::SYM_STATE
+
+ + + + + +
+   + + +

+used for consistency checking

+

+ + + + +
+ + + + +
enum LEVEL_CORE::SYSCALL_TYPE
+
+ + + + + +
+   + + +

+enum describing how the system call is delivered to the kernel. these values are also used is baresyscall assembly file (on mac), modifications should be done in both places.

Enumerator:
+ + + + + + + + + +
SYSCALL_TYPE_NONE  +not a system call
SYSCALL_TYPE_SYSCALL  +system call delivered via syscall
OS_SYSCALL_TYPE_SYSENTER  +system call delivered via sysenter
SYSCALL_TYPE_FARCALL  +system call delivered via far call (lcall)
OS_SYSCALL_TYPE_INT80  +system call delivered via int 0x80
OS_SYSCALL_TYPE_INT81  +system call delivered via int 0x81
OS_SYSCALL_TYPE_INT82  +system call delivered via int 0x82
OS_SYSCALL_TYPE_INT83  +system call delivered via int 0x83
+
+
+

+ + + + +
+ + + + +
enum LEVEL_CORE::VAL_TYPE
+
+ + + + + +
+   + + +

+VAL types

+


Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::AddBranchEdgeToBbl BBL  bbl,
BBL  target_bbl,
INS  branch,
EDG_TYPE  type
+
+ + + + + +
+   + + +

+Add a branch edge from bbl to target_bbl. The edge will have type EDG_TYPE type ==================================================================

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::AddFallthruEdgeToBbl BBL  bbl,
BBL  target_bbl,
EDG_TYPE  type
+
+ + + + + +
+   + + +

+Add a fallthru edge from bbl to target_bbl. The edge will have type EDG_TYPE type ==================================================================

+

+ + + + +
+ + + + + + + + +
APP LEVEL_CORE::APP_Alloc  ) 
+
+ + + + + +
+   + + +

+Allocate new APP, some initialization

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::APP_allocated APP  x  ) 
+
+ + + + + +
+   + + +

+APP object is allocated

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::APP_Free APP  app  ) 
+
+ + + + + +
+   + + +

+Free APP - must be unlinked and not contain any other objects

+

+ + + + +
+ + + + + + + + +
VOID LEVEL_CORE::APP_GarbageCollect  ) 
+
+ + + + + +
+   + + +

+APP garbage collector, currently not used

+

+ + + + +
+ + + + + + + + +
APP LEVEL_CORE::APP_INVALID  ) 
+
+ + + + + +
+   + + +

+returns an invalid APP object

+

+ + + + +
+ + + + + + + + + +
INT32 LEVEL_CORE::APP_no APP  x  ) 
+
+ + + + + +
+   + + +

+return unique number of APP object

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::APP_valid APP  x  ) 
+
+ + + + + +
+   + + +

+test validity of APP object

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
ARRAYBASE LEVEL_CORE::AppArrayBase "app pool" ,
1024 
+
+ + + + + +
+   + + +

+The root for all APP stripes

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
STRIPE<APP_STRUCT_BASE> LEVEL_CORE::AppStripeBase "app stripe base" ,
"core" ,
AppArrayBase
+
+ + + + + +
+   + + +

+The base stripe for APP

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
const ATTRIBUTE LEVEL_CORE::ATTR_bbl_dynsym "dyn" ,
"sym" ,
"bbl_dynsym" ,
EXT_ATTR_MODE_MULTIPLE ,
VAL_TYPE_SYM ,
B_CROSSLINK ,
FALSE ,
"" 
+
+ + + + + +
+   + + +

+attribute to hold dynamic SYMs that have this BBL as value

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
const ATTRIBUTE LEVEL_CORE::ATTR_bbl_regsym "reg" ,
"sym" ,
"bbl_regsym" ,
EXT_ATTR_MODE_MULTIPLE ,
VAL_TYPE_SYM ,
B_CROSSLINK ,
FALSE ,
"" 
+
+ + + + + +
+   + + +

+attribute to hold SYMs regular that have this BBL as value FIXME: upon deletion of this bbl the symbol value should be set to zero (the last crosslink parameter should be set)

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
const ATTRIBUTE LEVEL_CORE::ATTR_bbl_rel "rel" ,
"rel" ,
"bbl_rel" ,
EXT_ATTR_MODE_MULTIPLE ,
VAL_TYPE_REL ,
B_CROSSLINK ,
FALSE ,
"" 
+
+ + + + + +
+   + + +

+attribute to hold RELs that have this BBL as value

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
const ATTRIBUTE LEVEL_CORE::ATTR_chunk_dynsym "dyn" ,
"sym" ,
"chunk_dynsym" ,
EXT_ATTR_MODE_MULTIPLE ,
VAL_TYPE_SYM ,
B_CROSSLINK ,
FALSE ,
"" 
+
+ + + + + +
+   + + +

+attribute to hold dynamic SYMs that have this BBL as value

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
const ATTRIBUTE LEVEL_CORE::ATTR_chunk_regsym "reg" ,
"sym" ,
"chunk_regsym" ,
EXT_ATTR_MODE_MULTIPLE ,
VAL_TYPE_SYM ,
B_CROSSLINK ,
FALSE ,
"" 
+
+ + + + + +
+   + + +

+attribute to hold SYMs regular that have this BBL as value FIXME: upon deletion of this bbl the symbol value should be set to zero (the last crosslink parameter should be set)

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
const ATTRIBUTE LEVEL_CORE::ATTR_chunk_rel "rel" ,
"rel" ,
"chunk_rel" ,
EXT_ATTR_MODE_MULTIPLE ,
VAL_TYPE_REL ,
B_CROSSLINK ,
FALSE ,
"" 
+
+ + + + + +
+   + + +

+attribute to hold RELs that have this CHUNKS as value

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
const ATTRIBUTE LEVEL_CORE::ATTR_ins_delete "ins_delete" ,
"inst" ,
"ins_delete" ,
EXT_ATTR_MODE_SINGLE ,
VAL_TYPE_NONE ,
FALSE ,
FALSE ,
"Delete instruction" 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
const ATTRIBUTE LEVEL_CORE::ATTR_ins_rel "rel" ,
"rel" ,
"ins_rel" ,
EXT_ATTR_MODE_MULTIPLE ,
VAL_TYPE_REL ,
B_CROSSLINK ,
FALSE ,
"" 
+
+ + + + + +
+   + + +

+attribute to hold RELs that have this INS as value

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
const ATTRIBUTE LEVEL_CORE::AttrComment "comment:" ,
"core" ,
"comment" ,
EXT_ATTR_MODE_SINGLE ,
VAL_TYPE_STRING ,
FALSE ,
FALSE ,
"comment" 
+
+ + + + + +
+   + + +

+Attribute for attaching comments to data structures

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::BBL_AddLinkEdge BBL  bbl,
INS  call
+
+ + + + + +
+   + + +

+Add a link edge to a call BBL

+

+ + + + +
+ + + + + + + + +
BBL LEVEL_CORE::BBL_Alloc  ) 
+
+ + + + + +
+   + + +

+Allocate new BBL, some initialization

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
UINT32 LEVEL_CORE::BBL_AllowableSuccEdgCount BBL  bbl,
UINT32  max
+
+ + + + + +
+   + + +

+verify that number of successor EDGs is compatible with originating BBL type

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::BBL_Append BBL  bbl,
RTN  parent
+
+ + + + + +
+   + + +

+Append a BBL to RTN

+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_CORE::BBL_ByteSize BBL  bbl  ) 
+
+ + + + + +
+   + + +

+size of a bbl in bytes

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::BBL_CanBeEntryPoint BBL  bbl,
BOOL  switch_ok
+
+ + + + + +
+   + + +

+Check whether BBL can be routine entry point

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::BBL_Check BBL  bbl  ) 
+
+ + + + + +
+   + + +

+check consistency

+

+ + + + +
+ + + + + + + + +
VOID LEVEL_CORE::BBL_CheckFree  ) 
+
+ + + + + +
+   + + +

+ASSERT if an BBL has not been freed. This function is expensive so it cannot be called for normal runs.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::BBL_CheckSuccEdgType BBL  bbl,
EDG_TYPE  et
+
+ + + + + +
+   + + +

+verify that successor EDG is compatible with originating BBL type

+

+ + + + +
+ + + + + + + + + +
BBL LEVEL_CORE::BBL_Clone BBL  bbl  ) 
+
+ + + + + +
+   + + +

+Make an exact copy of all the instructions in a bbl and return the bbl

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::BBL_ContainsCall BBL  bbl  ) 
+
+ + + + + +
+   + + +

+Check whether BBL is call (based on BBL_TYPE)

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::BBL_ContainsConditionalCall BBL  bbl  ) 
+
+ + + + + +
+   + + +

+Check whether BBL is conditional call (based on BBL_TYPE)

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::BBL_ContainsConditionalControlTransfer BBL  bbl  ) 
+
+ + + + + +
+   + + +

+Check whether BBL is conditional call/branch (based on outgoing EDG info) equivalent to a BBL having an outgoing FALSE edge

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::BBL_ContainsDirectCall BBL  bbl  ) 
+
+ + + + + +
+   + + +

+Check whether BBL is a direct call (based on BBL_TYPE)

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::BBL_ContainsDirectControlTransfer BBL  bbl  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::BBL_ContainsIndirectCall BBL  bbl  ) 
+
+ + + + + +
+   + + +

+Check whether BBL is indirect call (based on BBL_TYPE)

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::BBL_ContainsIndirectControlTransfer BBL  bbl  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::BBL_ContainsReturn BBL  bbl  ) 
+
+ + + + + +
+   + + +

+Check whether BBL is a return (based on BBL_TYPE)

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::BBL_ContainsUnconditionalCall BBL  bbl  ) 
+
+ + + + + +
+   + + +

+Check whether BBL is unconditional call (based on BBL_TYPE)

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::BBL_ContainsUnresolvedIndirectJump BBL  bbl  ) 
+
+ + + + + +
+   + + +

+Check whether BBL has indirect jumps to unknown locations, i.e. not a switch and not a return - this may not be 100% accurate (based on BBL_TYPE)

+

+ + + + +
+ + + + + + + + + +
CHUNK LEVEL_CORE::BBL_DataChunk BBL  bbl  ) 
+
+ + + + + +
+   + + +

+return data CHUNK associated with a data BBL

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::BBL_DataLinkWithChunk BBL  bbl,
CHUNK  chunk
+
+ + + + + +
+   + + +

+cross link a data bbl with a data chunck

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::BBL_DataUnlinkChunk BBL  bbl  ) 
+
+ + + + + +
+   + + +

+unlink a data bbl and the corresponding data chunk

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::BBL_DeleteIns BBL  bbl  ) 
+
+ + + + + +
+   + + +

+delete all the instructions in a basic block

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::BBL_ExtAppend EXT  ext,
BBL  parent
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::BBL_ExtInsertAfter EXT  ext,
EXT  after,
BBL  parent
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::BBL_ExtPrepend EXT  ext,
BBL  parent
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::BBL_Free BBL  bbl  ) 
+
+ + + + + +
+   + + +

+Free BBL - must be unlinked and not contain any other objects

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::BBL_FreeContents BBL  bbl  ) 
+
+ + + + + +
+   + + +

+Unlink the contents of a code bbl. Does not ulink or free the BBL itself

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::BBL_FreePredEdges BBL  bbl  ) 
+
+ + + + + +
+   + + +

+Free the predecessor edges of the bbl

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::BBL_FreeSuccEdges BBL  bbl  ) 
+
+ + + + + +
+   + + +

+Free the successor edges of the bbl

+

+ + + + +
+ + + + + + + + +
VOID LEVEL_CORE::BBL_GarbageCollect  ) 
+
+ + + + + +
+   + + +

+BBL garbage collector, currently not used

+

+ + + + +
+ + + + + + + + + +
string LEVEL_CORE::BBL_generateDotCFG BBL  bbl  ) 
+
+ + + + + +
+   + + +

+Generate the string describing the CFG rooted at this BBL as a dot graph, suitable for feeding into dot to draw it.

+

Parameters:
+ + +
[in] bbl - Root of the CFG tree.
+
+
Returns:
Return a string which is a dot representation of the CFG.
+
+

+ + + + +
+ + + + + + + + + +
OADDR LEVEL_CORE::BBL_GetOaddr BBL  target  ) 
+
+ + + + + +
+   + + +

+get BBL OADDR (based on pos stripe)

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::BBL_HasUnmodeledPredEdges BBL  bbl,
BOOL  switch_ok
+
+ + + + + +
+   + + +

+Has unknown incoming flow which is not modeled by edges if switch_ok is true: relocations stemming from switch tables are ignored

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::BBL_HasUnmodeledSuccEdges BBL  bbl  ) 
+
+ + + + + +
+   + + +

+Check whether BBL has ougoing flow not modeled by EDGs (based on BBL_TYPE)

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::BBL_InitOriginal BBL  bbl  ) 
+
+ + + + + +
+   + + +

+initialize a BBL as an original bbl, an original BBL is a BBL that existed in the incoming image as opposed to a BBL that was generated by optimizations

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::BBL_InsertAfter BBL  bbl,
BBL  after,
RTN  parent
+
+ + + + + +
+   + + +

+Insert BBL after another BBL within an RTN

Parameters:
+ + + + +
bbl block to be inserted after
after block to insert after, if BBL_INVALID, prepend to parent
parent rtn that contains after bbl
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::BBL_InsertBefore BBL  bbl,
BBL  before,
RTN  parent
+
+ + + + + +
+   + + +

+Insert BBL before another BBL within an RTN

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::BBL_IsCycle BBL  bbl  ) 
+
+ + + + + +
+   + + +

+Test whether a bbl is part of a single BBL loop

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::BBL_IsImageEntryPoint BBL  bbl  ) 
+
+ + + + + +
+   + + +

+Test whether BBL carries a special marker identifying it as the entry point

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::BBL_IsReturnSite BBL  bbl  ) 
+
+ + + + + +
+   + + +

+Check whether BBL is return site (based on incoming EDG info)

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::BBL_MarkBblStarts BBL  containerBbl  ) 
+
+ + + + + +
+   + + +

+Marks all the instructions in a container bbl that are bbl terminating instructions and returns false if no marks were set to indicate that the container bbl has to be split

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::BBL_MoveInsToAfter const BBL  src,
const BBL  dst,
INS  after
+
+ + + + + +
+   + + +

+Move all inss from src to dst following "after"

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::BBL_MoveInsToBefore const BBL  src,
const BBL  dst,
INS  before
+
+ + + + + +
+   + + +

+Move all inss from src to dst preceeding "before"

+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_CORE::BBL_NumAttrCrosslink BBL  bbl  ) 
+
+ + + + + +
+   + + +

+if a bbl has any of these atributes it cannot be freed

+

+ + + + +
+ + + + + + + + + +
LOCALFUN UINT32 LEVEL_CORE::BBL_NumAttrRegsym BBL  bbl  ) 
+
+ + + + + +
+   + + +

+Number of RELs and other data structures that point to a BBL. If the number is > 1, this means there is potially additional control flow not modeled by EDGs.

+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_CORE::BBL_NumExt BBL  parent  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_CORE::BBL_NumPreds BBL  bbl  ) 
+
+ + + + + +
+   + + +

+number of predecessor EDGs

+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_CORE::BBL_NumPredsInterproc BBL  bbl  ) 
+
+ + + + + +
+   + + +

+number of predecessor EDGs which originate from a different RTN

+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_CORE::BBL_NumPredsInterprocNonCall BBL  bbl  ) 
+
+ + + + + +
+   + + +

+number of predecessor EDGs which originate from a different RTN and which are not calls

+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_CORE::BBL_NumSuccs BBL  bbl  ) 
+
+ + + + + +
+   + + +

+number of successor EDGs

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
EDG LEVEL_CORE::BBL_PredEdgFind BBL  dst,
EDG_TYPE  type
+
+ + + + + +
+   + + +

+find successor EDG based on type

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::BBL_Prepend BBL  bbl,
RTN  parent
+
+ + + + + +
+   + + +

+Prepend a BBL to RTN

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::BBL_RemoveRegsyms BBL  bbl  ) 
+
+ + + + + +
+   + + +

+Remove crosslinked SYM from BBL

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::BBL_SetImageEntryPoint BBL  bbl  ) 
+
+ + + + + +
+   + + +

+add special marked identifying BBL as the entry point

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BBL LEVEL_CORE::BBL_SplitAtIns BBL  firstBbl,
INS  splitIns
+
+ + + + + +
+   + + +

+Split the bbl in two at a INS. Does not update EDG

+

Parameters:
+ + + +
[in] firstBbl - BBL to split
[in] splitIns - Move this INS and all that follow into new bbl
+
+
Returns:
Return the new BBL
+
+

+ + + + +
+ + + + + + + + + +
string LEVEL_CORE::BBL_StringLong BBL  bbl  ) 
+
+ + + + + +
+   + + +

+convert a BBL into a printable string - long version

+

+ + + + +
+ + + + + + + + + +
string LEVEL_CORE::BBL_StringLongFancy BBL  bbl  ) 
+
+ + + + + +
+   + + +

+produce string for BBL including INS

+

+ + + + +
+ + + + + + + + + +
string LEVEL_CORE::BBL_StringShort BBL_TYPE  type  ) 
+
+ + + + + +
+   + + +

+convert a BBL type into a printable string - 4 characters

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
EDG LEVEL_CORE::BBL_SuccEdgFind BBL  src,
BBL  dst
+
+ + + + + +
+   + + +

+find successor EDG based on traget BBL

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
EDG LEVEL_CORE::BBL_SuccEdgFind BBL  src,
EDG_TYPE  type
+
+ + + + + +
+   + + +

+find successor EDG based on type

+

+ + + + +
+ + + + + + + + + +
EDG LEVEL_CORE::BBL_SuccEdgFindPcRelative BBL  bbl  ) 
+
+ + + + + +
+   + + +

+find successor EDG based on traget BBL

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
EDG LEVEL_CORE::BBL_SuccEdgFindWithType BBL  src,
BBL  dst,
EDG_TYPE  type
+
+ + + + + +
+   + + +

+find successor EDG based on traget BBL

+

+ + + + +
+ + + + + + + + + +
BBL_TYPE LEVEL_CORE::BBL_TYPE_Unconditionalize BBL_TYPE  type  ) 
+
+ + + + + +
+   + + +

+transform a conditional BBL_TYPE in the corresponding unconditional type

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::BBL_TypeSet BBL  bbl,
BBL_TYPE  type
+
+ + + + + +
+   + + +

+change BBL type with extra sanity checks

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::BBL_TypifyAndCreateEdgs SEC  sec,
BBL  bbl
+
+ + + + + +
+   + + +

+Set initial type and outgoing edges for bbl. We have to pass in the sec parameter as well to look up branch targets TODO: Do we need to duplicate this function?

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::BBL_TypifyAndCreateEdgsFromBblToBbl BBL  src_bbl,
BBL  dst_bbl
+
+ + + + + +
+   + + +

+Set initial type and outgoing edges for a given source bbl to a given destination bbl

+

+ + + + +
+ + + + + + + + + +
BBL LEVEL_CORE::BBL_UniquePredecessor BBL  bbl  ) 
+
+ + + + + +
+   + + +

+return unique predecessor BBL if it exists or BBL_INVALID() otherwise

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::BBL_Unlink BBL  bbl  ) 
+
+ + + + + +
+   + + +

+Unlink a BBL from an RTN

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::BBL_UnlinkFreeCode BBL  bbl  ) 
+
+ + + + + +
+   + + +

+unlink and free non-data BBL, also unlink free all other objects contained in it

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::BBL_UnlinkFreeData BBL  bbl  ) 
+
+ + + + + +
+   + + +

+unlink and free data BBL, also unlink free all other objects contained in it

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
ARRAYBASE LEVEL_CORE::BblArrayBase "bbl pool" ,
1024 *  1024
+
+ + + + + +
+   + + +

+The root for all BBL stripes

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
STRIPE<BBL_STRUCT_BASE> LEVEL_CORE::BblStripeBase "bbl stripe base" ,
"core" ,
BblArrayBase
+
+ + + + + +
+   + + +

+The base stripe for BBL

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
STRIPE<BBL_STRUCT_MAP> LEVEL_CORE::BblStripeMap "bbl stripe map " ,
"map" ,
BblArrayBase
+
+ + + + + +
+   + + +

+The map stripe for BBL used to hold information reflecting the out address of the BBL

+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_CORE::CallingStd_DefaultArgSize CALLING_STANDARD  cstype  ) 
+
+ + + + + +
+   + + +

+Return a string for the calling standard.

+

+ + + + +
+ + + + + + + + + +
string LEVEL_CORE::CallingStd_String CALLING_STANDARD  cstype  ) 
+
+ + + + + +
+   + + +

+Return a string for the calling standard.

+

+ + + + +
+ + + + + + + + +
VOID LEVEL_CORE::CheckAll  ) 
+
+ + + + + +
+   + + +

+perform sanity checks on all basic charm objects ever allocated

+

+ + + + +
+ + + + + + + + +
BOOL LEVEL_CORE::CheckFree  ) 
+
+ + + + + +
+   + + +

+ASSERT if an object has not been freed. This function is expensive so it cannot be called for normal runs.

+

+ + + + +
+ + + + + + + + +
CHUNK LEVEL_CORE::CHUNK_Alloc  ) 
+
+ + + + + +
+   + + +

+Allocate a new CHUNK and clear some of its fields. FIXME: fields clearing needs to be more extensive

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::CHUNK_Append CHUNK  chunk,
SEC  parent
+
+ + + + + +
+   + + +

+append a CHUNK to SEC

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
USIZE LEVEL_CORE::CHUNK_AppendData CHUNK  chunk,
USIZE  num_bytes
+
+ + + + + +
+   + + +

+allocate extra region at the end of an uncooked SEC and return region start as an offset from the section beginning do not deallocate the old data since someone might be pointing there (string tables).

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::CHUNK_ApplyRels CHUNK  chunk  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::CHUNK_Check CHUNK  chunk  ) 
+
+ + + + + +
+   + + +

+perform sanity checking for given CHUNK

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::CHUNK_ContainsIaddr CHUNK  chunk,
IADDR  iaddr
+
+ + + + + +
+   + + +

+Test whether a CHUNK's virtual address space includes an IADDR

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::CHUNK_ContainsIaddrEndInclusive CHUNK  chunk,
IADDR  iaddr
+
+ + + + + +
+   + + +

+get a piece of data directly from the incoming CHUNK data

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::CHUNK_ContainsOaddr CHUNK  chunk,
OADDR  oaddr
+
+ + + + + +
+   + + +

+Test whether a CHUNK's outgoing virtual address space includes an OADDR

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::CHUNK_ContainsOaddrEndInclusive CHUNK  chunk,
OADDR  oaddr
+
+ + + + + +
+   + + +

+Test whether a CHUNK's outgoing virtual address space includes an OADDR

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::CHUNK_ExtInsertAfter EXT  ext,
EXT  after,
CHUNK  parent
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::CHUNK_ExtPrepend EXT  ext,
CHUNK  parent
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
REL LEVEL_CORE::CHUNK_FindRelForOffset CHUNK  chunk,
UINT32  offset
+
+ + + + + +
+   + + +

+Find REL targeting a given CHUNK and offset, return REL_INVALID() if none can be found

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::CHUNK_Free CHUNK  chunk  ) 
+
+ + + + + +
+   + + +

+Free chunk object

+

+ + + + +
+ + + + + + + + +
VOID LEVEL_CORE::CHUNK_GarbageCollect  ) 
+
+ + + + + +
+   + + +

+The not yet implemented CHUNK garbage collector. It is supposed to add all unallocated CHUNKs to the CHUNK freelist

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
UINT32 LEVEL_CORE::CHUNK_GetIDataByOffsetUINT32 CHUNK  chunk,
USIZE  offset
+
+ + + + + +
+   + + +

+get a piece of data directly from the incoming CHUNK data

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
UINT64 LEVEL_CORE::CHUNK_GetIDataByOffsetUINT64 CHUNK  chunk,
USIZE  offset
+
+ + + + + +
+   + + +

+get a piece of data directly from the incoming CHUNK data

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
UINT32 LEVEL_CORE::CHUNK_GetUnalignedIDataByOffsetUINT32 CHUNK  chunk,
USIZE  offset
+
+ + + + + +
+   + + +

+get an unaligned piece of data directly from the incoming CHUNK data

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
UINT32 LEVEL_CORE::CHUNK_GetUnalignedIDataByOffsetUINT64 CHUNK  chunk,
USIZE  offset
+
+ + + + + +
+   + + +

+get an unaligned piece of data directly from the incoming CHUNK data

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::CHUNK_InitOriginal CHUNK  chunk,
CHUNK_TYPE  type,
IADDR  vaddr,
USIZE  size,
const VOID *  data,
UINT32  alignment
+
+ + + + + +
+   + + +

+initialize an original CHUNK after is has been allocated. An original CHUNK is one the corresponds to a Section in the input Image.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::CHUNK_InsertAfter CHUNK  chunk,
CHUNK  after,
SEC  parent
+
+ + + + + +
+   + + +

+insert CHUNK after another chunk within an SEC

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::CHUNK_InsertBefore CHUNK  chunk,
CHUNK  before,
SEC  parent
+
+ + + + + +
+   + + +

+insert CHUNK before another chunk within an SEC

+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_CORE::CHUNK_NumExt CHUNK  parent  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::CHUNK_Prepend CHUNK  chunk,
SEC  parent
+
+ + + + + +
+   + + +

+prepend a CHUNK to SEC

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::CHUNK_PutIDataByOffsetUINT32 CHUNK  chunk,
USIZE  offset,
UINT32  value
+
+ + + + + +
+   + + +

+write a piece of data directly do the outgoing CHUNK data

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::CHUNK_PutIDataByOffsetUINT64 CHUNK  chunk,
USIZE  offset,
UINT64  value
+
+ + + + + +
+   + + +

+write an unaligned piece of data directly do the outgoing CHUNK data

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::CHUNK_PutODataByOffsetUINT32 CHUNK  chunk,
USIZE  offset,
UINT32  value
+
+ + + + + +
+   + + +

+write a piece of data directly to the outgoing CHUNK data

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::CHUNK_PutODataByOffsetUINT64 CHUNK  chunk,
USIZE  offset,
UINT64  value
+
+ + + + + +
+   + + +

+write an unaligned piece of data directly to the outgoing CHUNK data

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::CHUNK_PutUnalignedIDataByOffsetUINT64 CHUNK  chunk,
USIZE  offset,
UINT64  value
+
+ + + + + +
+   + + +

+write an unaligned piece of data directly do the outgoing CHUNK data

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::CHUNK_RemoveRegsyms CHUNK  chunk  ) 
+
+ + + + + +
+   + + +

+Remove crosslinked SYM from CHUNK

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::CHUNK_SetNewData CHUNK  chunk,
VOID *  data
+
+ + + + + +
+   + + +

+set CHUNK's new outgoing data, this can be done only once per CHUNK

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::CHUNK_SetNewSizeAndAddress CHUNK  chunk,
USIZE  size,
OADDR  oaddr
+
+ + + + + +
+   + + +

+set CHUNK's new outgoing size and address, this can be done only once per CHUNK

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::CHUNK_SplitData CHUNK  chunk,
UINT32  offset
+
+ + + + + +
+   + + +

+This is rather ugly and could be avoided by proper meta symbols emited by the tool chain.

+

+ + + + +
+ + + + + + + + + +
string LEVEL_CORE::CHUNK_StringLong CHUNK  chunk  ) 
+
+ + + + + +
+   + + +

+convert a CHUNK into a printable string - short version (no newline)

+

+ + + + +
+ + + + + + + + + +
string LEVEL_CORE::CHUNK_StringShort CHUNK  chunk  ) 
+
+ + + + + +
+   + + +

+convert a CHUNK into a printable string - short version (no newline)

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::CHUNK_Unlink CHUNK  chunk  ) 
+
+ + + + + +
+   + + +

+unlink a CHUNK from an IMG

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
ARRAYBASE LEVEL_CORE::ChunkArrayBase "chunk pool" ,
128 *  1024
+
+ + + + + +
+   + + +

+The root for all CHUNK stripes

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
STRIPE<CHUNK_STRUCT_BASE> LEVEL_CORE::ChunkStripeBase "chunk stripe base" ,
"core" ,
ChunkArrayBase
+
+ + + + + +
+   + + +

+The base stripe for CHUNK

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::CopyCompFpStateToStandard ADDRINT  compFpState,
FPSTATE *  standardFpState,
UINT64  compMask
+
+ + + + + +
+   + + +

+Function to generate standard fpState from compacted fpState using the compacted mask.

+

Parameters:
+ + + + +
[in] compFpState Base pointer of the compacted XSAVE Area.
[out] standardFpState Pointer of the Output FpState.
[in] compMask Compacted mask of the supported bits.
+
+
+

+ + + + +
+ + + + + + + + + +
VOID* LEVEL_CORE::CopyImageLoaderInfo VOID *  arg  ) 
+
+ + + + + +
+   + + +

+Copy image loader info used for PINADX debugger to PIN managed buffer

+

+ + + + +
+ + + + + + + + +
BOOL LEVEL_CORE::DoFlagsSplit  ) 
+
+ + + + + +
+   + + +

+

Returns:
if the flags splitting should be done
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::DYNSYM_Unlink SYM  sym  ) 
+
+ + + + + +
+   + + +

+unlink a SYM from an IMG

+

+ + + + +
+ + + + + + + + +
EDG LEVEL_CORE::EDG_Alloc  ) 
+
+ + + + + +
+   + + +

+allocate an EDG, it is not recommended to call this directly

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
EDG LEVEL_CORE::EDG_AllocAndLink BBL  src,
BBL  dst,
EDG_TYPE  type
+
+ + + + + +
+   + + +

+allocate and link an EDG to the two specified BBLS

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::EDG_ExtInsertAfter EXT  ext,
EXT  after,
EDG  parent
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::EDG_ExtPrepend EXT  ext,
EDG  parent
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::EDG_Free EDG  edg  ) 
+
+ + + + + +
+   + + +

+deallocate unlinked EDG

+

+ + + + +
+ + + + + + + + +
VOID LEVEL_CORE::EDG_GarbageCollect  ) 
+
+ + + + + +
+   + + +

+EDG garbage colletor

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::EDG_InterProcedural EDG  e  ) 
+
+ + + + + +
+   + + +

+determing whether EDG is interprocedural. call EDGs are always considered to be interprocedural

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::EDG_IsFallthrough EDG  edg  ) 
+
+ + + + + +
+   + + +

+Determing whether an EDG is a fallthru EDG using the type

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::EDG_Link EDG  edg,
BBL  src,
BBL  dst
+
+ + + + + +
+   + + +

+link an EDG to the two specified BBLS

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::EDG_MovePredEdges BBL  bbl_from,
BBL  bbl_to
+
+ + + + + +
+   + + +

+Move the predecessor edges from bbl_from to bbl_to

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::EDG_MoveSuccEdges BBL  a,
BBL  b
+
+ + + + + +
+   + + +

+Move the successor edges from a to b

+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_CORE::EDG_NumExt EDG  parent  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::EDG_PredInsertAfter EDG  edg,
EDG  after,
BBL  parent
+
+ + + + + +
+   + + +

+Insert predecessor EDG after another such EDG

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::EDG_PredPrepend EDG  edg,
BBL  parent
+
+ + + + + +
+   + + +

+Prepend predecessor EDG to list of predecessor EDGs

+

+ + + + +
+ + + + + + + + + +
string LEVEL_CORE::EDG_StringShort EDG  edg  ) 
+
+ + + + + +
+   + + +

+convert a EDG into a printable string - short version

+

+ + + + +
+ + + + + + + + + +
string LEVEL_CORE::EDG_StringShort EDG_TYPE  type  ) 
+
+ + + + + +
+   + + +

+convert a EDG type into a printable string

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::EDG_SuccInsertAfter EDG  edg,
EDG  after,
BBL  parent
+
+ + + + + +
+   + + +

+Insert successor EDG after another such EDG

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::EDG_SuccPrepend EDG  edg,
BBL  parent
+
+ + + + + +
+   + + +

+Prepend successor EDG to list of predecessor EDGs

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::EDG_Unlink EDG  edg  ) 
+
+ + + + + +
+   + + +

+Unlink EDG

+

+ + + + +
+ + + + + + + + + +
LOCALFUN VOID LEVEL_CORE::EDG_UnlinkPred EDG  edg  ) 
+
+ + + + + +
+   + + +

+Unlink EDG from Dst only

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::EDG_UnlinkSucc EDG  edg  ) 
+
+ + + + + +
+   + + +

+Unlink EDG from Src only

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
ARRAYBASE LEVEL_CORE::EdgArrayBase "edg pool" ,
64 *  1024
+
+ + + + + +
+   + + +

+The root for all EDG stripes

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
STRIPE<EDG_STRUCT_BASE> LEVEL_CORE::EdgStripeBase "edg stripe base" ,
"core" ,
EdgArrayBase
+
+ + + + + +
+   + + +

+The base stripe for REL

+

+ + + + +
+ + + + + + + + +
EXT LEVEL_CORE::EXT_Alloc  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EXT LEVEL_CORE::EXT_AllocAndLinkBblBbl BBL  bbl,
const ATTRIBUTE *  attribute,
UINT32  number,
BBL  value
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EXT LEVEL_CORE::EXT_AllocAndLinkBblChunk BBL  bbl,
const ATTRIBUTE *  attribute,
UINT32  number,
CHUNK  chunk
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EXT LEVEL_CORE::EXT_AllocAndLinkBblConstPtr BBL  bbl,
const ATTRIBUTE *  attribute,
UINT32  number,
const VOID *  ptr
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EXT LEVEL_CORE::EXT_AllocAndLinkBblFlt64 BBL  bbl,
const ATTRIBUTE *  attribute,
UINT32  number,
FLT64  value
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EXT LEVEL_CORE::EXT_AllocAndLinkBblGot BBL  bbl,
const ATTRIBUTE *  attribute,
UINT32  number,
GOT  got
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EXT LEVEL_CORE::EXT_AllocAndLinkBblIns BBL  bbl,
const ATTRIBUTE *  attribute,
UINT32  number,
INS  value
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EXT LEVEL_CORE::EXT_AllocAndLinkBblInt32 BBL  bbl,
const ATTRIBUTE *  attribute,
UINT32  number,
INT32  value
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
EXT LEVEL_CORE::EXT_AllocAndLinkBblNone BBL  bbl,
const ATTRIBUTE *  attribute,
UINT32  number
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EXT LEVEL_CORE::EXT_AllocAndLinkBblOpd BBL  bbl,
const ATTRIBUTE *  attribute,
UINT32  number,
UINT32  index
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EXT LEVEL_CORE::EXT_AllocAndLinkBblPltoff BBL  bbl,
const ATTRIBUTE *  attribute,
UINT32  number,
UINT32  index
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EXT LEVEL_CORE::EXT_AllocAndLinkBblRegallochint BBL  bbl,
const ATTRIBUTE *  attribute,
UINT32  number,
REG  vreg,
REG  preg,
REGALLOC_HINT_TYPE  hint
+
+ + + + + +
+   + + +

+Link register allocation hint to basic block

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EXT LEVEL_CORE::EXT_AllocAndLinkBblRel BBL  bbl,
const ATTRIBUTE *  attribute,
UINT32  number,
REL  rel
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EXT LEVEL_CORE::EXT_AllocAndLinkBblSact BBL  bbl,
const ATTRIBUTE *  attribute,
UINT32  number,
SACT  act
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EXT LEVEL_CORE::EXT_AllocAndLinkBblSym BBL  bbl,
const ATTRIBUTE *  attribute,
UINT32  number,
SYM  sym
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EXT LEVEL_CORE::EXT_AllocAndLinkBblUint32 BBL  bbl,
const ATTRIBUTE *  attribute,
UINT32  number,
UINT32  value
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EXT LEVEL_CORE::EXT_AllocAndLinkChunkGot CHUNK  chunk,
const ATTRIBUTE *  attribute,
UINT32  number,
GOT  got
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EXT LEVEL_CORE::EXT_AllocAndLinkChunkRel CHUNK  chunk,
const ATTRIBUTE *  attribute,
UINT32  number,
REL  rel
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EXT LEVEL_CORE::EXT_AllocAndLinkChunkSym CHUNK  chunk,
const ATTRIBUTE *  attribute,
UINT32  number,
SYM  sym
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EXT LEVEL_CORE::EXT_AllocAndLinkEdgEdg EDG  edg,
const ATTRIBUTE *  attribute,
UINT32  number,
EDG  value
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EXT LEVEL_CORE::EXT_AllocAndLinkEdgFlt64 EDG  edg,
const ATTRIBUTE *  attribute,
UINT32  number,
FLT64  value
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EXT LEVEL_CORE::EXT_AllocAndLinkInsAfunptr INS  ins,
const ATTRIBUTE *  attribute,
UINT32  number,
AFUNPTR  fptr
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EXT LEVEL_CORE::EXT_AllocAndLinkInsBbl INS  ins,
const ATTRIBUTE *  attribute,
UINT32  number,
BBL  value
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EXT LEVEL_CORE::EXT_AllocAndLinkInsConstPtr INS  ins,
const ATTRIBUTE *  attribute,
UINT32  number,
const VOID *  ptr
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EXT LEVEL_CORE::EXT_AllocAndLinkInsFlt64 INS  ins,
const ATTRIBUTE *  attribute,
UINT32  number,
FLT64  value
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EXT LEVEL_CORE::EXT_AllocAndLinkInsIaddr INS  ins,
const ATTRIBUTE *  attribute,
UINT32  number,
IADDR  iaddr
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EXT LEVEL_CORE::EXT_AllocAndLinkInsInt32 INS  ins,
const ATTRIBUTE *  attribute,
UINT32  number,
INT32  value
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
EXT LEVEL_CORE::EXT_AllocAndLinkInsNone INS  ins,
const ATTRIBUTE *  attribute,
UINT32  number
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EXT LEVEL_CORE::EXT_AllocAndLinkInsPtr INS  ins,
const ATTRIBUTE *  attribute,
UINT32  number,
VOID *  ptr
+
+ + + + + +
+   + + +

+Allocate and initialize an EXT to hold a pointer. Link it to an INS

+

Returns:
Returns the new EXT
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EXT LEVEL_CORE::EXT_AllocAndLinkInsRegallochint INS  ins,
const ATTRIBUTE *  attribute,
UINT32  number,
REG  vreg,
REG  preg,
REGALLOC_HINT_TYPE  hint
+
+ + + + + +
+   + + +

+Link register allocation hint to instruction

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EXT LEVEL_CORE::EXT_AllocAndLinkInsRegInt32 INS  ins,
const ATTRIBUTE *  attribute,
UINT32  number,
REG  reg,
INT32  use
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EXT LEVEL_CORE::EXT_AllocAndLinkInsReguse INS  ins,
const ATTRIBUTE *  attribute,
UINT32  number,
REG  reg,
UINT32  use
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EXT LEVEL_CORE::EXT_AllocAndLinkInsRel INS  ins,
const ATTRIBUTE *  attribute,
UINT32  number,
REL  rel
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EXT LEVEL_CORE::EXT_AllocAndLinkInsSact INS  ins,
const ATTRIBUTE *  attribute,
UINT32  number,
SACT  act
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EXT LEVEL_CORE::EXT_AllocAndLinkInsString INS  ins,
const ATTRIBUTE *  attribute,
UINT32  number,
string *  value
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EXT LEVEL_CORE::EXT_AllocAndLinkInsUint32 INS  ins,
const ATTRIBUTE *  attribute,
UINT32  number,
UINT32  value
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EXT LEVEL_CORE::EXT_AllocAndLinkInsUint64 INS  ins,
const ATTRIBUTE *  attribute,
UINT32  number,
UINT64  value
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EXT LEVEL_CORE::EXT_AllocAndLinkRtnBbl RTN  rtn,
const ATTRIBUTE *  attribute,
UINT32  number,
BBL  value
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EXT LEVEL_CORE::EXT_AllocAndLinkRtnInt32 RTN  rtn,
const ATTRIBUTE *  attribute,
UINT32  number,
int  value
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EXT LEVEL_CORE::EXT_AllocAndLinkRtnSym RTN  rtn,
const ATTRIBUTE *  attribute,
UINT32  number,
SYM  sym
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EXT LEVEL_CORE::EXT_AllocIaddrInt32 const ATTRIBUTE *  attribute,
UINT32  number,
IADDR  iaddr,
INT32  val
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
EXT LEVEL_CORE::EXT_AllocInsNone const ATTRIBUTE *  attribute,
UINT32  number
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EXT LEVEL_CORE::EXT_AllocRegInt32 const ATTRIBUTE *  attribute,
UINT32  number,
REG  reg,
INT32  use
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EXT LEVEL_CORE::EXT_AllocVersionCase const ATTRIBUTE *  attribute,
UINT32  number,
REG  reg,
INT32  casev,
ADDRINT  version
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::EXT_BblUnlink EXT  ext,
BBL  parent
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::EXT_Check EXT  ext  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + +
VOID LEVEL_CORE::EXT_CheckFree  ) 
+
+ + + + + +
+   + + +

+ASSERT if an EXT has not been freed. This function is expensive so it cannot be called for normal runs.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::EXT_ChunkUnlink EXT  ext,
CHUNK  parent
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
EXT LEVEL_CORE::EXT_Clone EXT  ext  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::EXT_Copy EXT  ext,
EXT  clone
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::EXT_EdgUnlink EXT  ext,
EDG  parent
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::EXT_ExtlistUnlink EXT  ext,
EXTLIST  parent
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
EXT LEVEL_CORE::EXT_FindFirst EXT  ext,
const ATTRIBUTE *  attribute
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
EXT LEVEL_CORE::EXT_FindNext EXT  ext  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::EXT_Free EXT  ext  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + +
VOID LEVEL_CORE::EXT_GarbageCollect  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::EXT_InsUnlink EXT  ext,
INS  parent
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
string LEVEL_CORE::EXT_ListString EXT  ext  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::EXT_RtnUnlink EXT  ext,
RTN  parent
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
string LEVEL_CORE::EXT_StringShort EXT  ext,
BOOL  tiny
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
ARRAYBASE LEVEL_CORE::ExtArrayBase "ext pool" ,
32 *  1024
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::EXTLIST_ExtInsertAfter EXT  ext,
EXT  after,
EXTLIST &  parent
+
+ + + + + +
+   + + +

+Insert ext after 'after'

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::EXTLIST_ExtPrepend EXT  ext,
EXTLIST &  parent
+
+ + + + + +
+   + + +

+Prepend an EXT to EXTLIST

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::EXTLIST_MoveInsExtRev INS  src,
EXTLIST  dst,
const ATTRIBUTE *  attr
+
+ + + + + +
+   + + +

+Move EXT's of a particular attribute to a list with dst as head. The order of the EXT will be reversed.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
STRIPE<EXT_STRUCT_BASE> LEVEL_CORE::ExtStripeBase "ext stripe base" ,
"core" ,
ExtArrayBase
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAGS LEVEL_CORE::FLAGS_And const FLAGS  x,
const FLAGS  y
+
+ + + + + +
+   + + +

+Return the bitwise and of two flags

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::FLAGS_IsSubset const FLAGS  subset,
const FLAGS  superset
+
+ + + + + +
+   + + +

+Return TRUE if "subset" is a subset of "superset"

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAGS LEVEL_CORE::FLAGS_Or const FLAGS  x,
const FLAGS  y
+
+ + + + + +
+   + + +

+Return the bitwise or of two flags

+

+ + + + +
+ + + + + + + + + +
string LEVEL_CORE::FLAGS_StringShort const FLAGS  x  ) 
+
+ + + + + +
+   + + +

+produce a string for flags

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAGS LEVEL_CORE::FLAGS_Subtract const FLAGS  x,
const FLAGS  y
+
+ + + + + +
+   + + +

+Return the flags that are in x but not in y

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::FreeImageLoaderInfo VOID *  arg  ) 
+
+ + + + + +
+   + + +

+Free image loader info used for PINADX debugger

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
LOCALINLINE xed_reg_enum_t LEVEL_CORE::get_dummy_base_reg UINT  i,
REGWIDTH  reg_width
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
LOCALINLINE xed_reg_enum_t LEVEL_CORE::get_dummy_index_reg UINT  i,
REGWIDTH  reg_width
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
LOCALINLINE xed_reg_enum_t LEVEL_CORE::get_dummy_reg UINT  i,
REGWIDTH  reg_width
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
LOCALINLINE xed_reg_enum_t LEVEL_CORE::get_dummy_reg_native UINT  i  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + +
PINVM::PINSYNC_RWLOCK* LEVEL_CORE::GetINSResizeLock  ) 
+
+ + + + + +
+   + + +

+Returns the readers-writer lock of the INS stripe.

+

+ + + + +
+ + + + + + + + + +
LOCALFUN UINT8 LEVEL_CORE::GetLegalByteWidthsBitmapForEaWidth INT32  ea_width  ) 
+
+ + + + + +
+   + + +

+Get the appropriate legal_bytewidths_bitmap, which determines the legal size for displacements, given the effective address width.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LOCALFUN xed_encoder_operand_t LEVEL_CORE::GetShortestWidthSignedImmediate UINT64  immed,
UINT32  legal_immed_bytewidths_bitmap,
UINT32  extendedSize = 8*sizeof(ADDRINT),
UINT32  destination_bit_size = 0
[inline]
+
+ + + + + +
+   + + +

+returns an immediate operand to the instruction. Find the shortest possible immediate representation. Assume that the immediate will be sign extended to an ADDRINT by the instruction.

Parameters:
+ + + + + +
immed Value of immediate
legal_immed_bytewidths_bitmap Legal immediate field widths (bitmap)
extendedSize Size (in bits) the immediate is expanded to.
destination_bit_size size of the destination operand in bits
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::GetSysCallArgMem INT32  ith_arg,
MEM_ADDR_EXP *  pExp,
SYSCALL_STANDARD  std = NativeSysCallStd()
+
+ + + + + +
+   + + +

+Return expression for calculating memory address of the specified argument of a system call.

Parameters:
+ + + + +
[in] ith_arg argument number (0 - first argument).
[out] pExp pointer to variable that receives expression for calculating memory address of the argument.
[in] std syscall standard.
+
+
Returns:
TRUE - success, FALSE - argument is not located in memory
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::HasSpecialOffsetForGotPcAccess RTN  rtn  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + +
IMG LEVEL_CORE::IMG_Alloc  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
SYM LEVEL_CORE::IMG_AllocAndAppendNewBblDynsym IMG  img,
const string &  name,
BBL  bbl
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SYM LEVEL_CORE::IMG_AllocAndAppendNewChunkDynsym IMG  img,
const string &  name,
CHUNK  chunk,
UINT32  chunk_offset
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SYM LEVEL_CORE::IMG_AllocAndAppendNewChunkRegsym IMG  img,
const string &  name,
CHUNK  chunk,
UINT32  chunk_offset
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
SYM LEVEL_CORE::IMG_AllocAndAppendNewRtnRegsym IMG  img,
const string &  name,
BBL  bbl
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
SYM LEVEL_CORE::IMG_AllocAndAppendNewUndefDynsym IMG  img,
const string &  name
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::IMG_Append IMG  img,
APP  parent
+
+ + + + + +
+   + + +

+Append an IMG to APP

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::IMG_Check IMG  img  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::IMG_ChunkifySecs IMG  img  ) 
+
+ + + + + +
+   + + +

+subdivide SECs into chunks

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::IMG_ComputeNewSecDataExec IMG  img  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::IMG_ComputeNewSecDataUncooked IMG  img  ) 
+
+ + + + + +
+   + + +

+Compute new section data for uncooked sections regardless whether they are mapped or not. This is simple since the new data is equal to the old one except for some changes due to relocations which is done in a separate step

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::IMG_ComputeNewSecSizeExecAndAddressMapping IMG  img  ) 
+
+ + + + + +
+   + + +

+Iterate over executable section and compute the addresses for the instructions

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::IMG_ComputeNewSecSizeUncooked IMG  img  ) 
+
+ + + + + +
+   + + +

+Compute new section sizes for uncooked sections regardless whether they are mapped or not. This is simple since the new sizes are equal to the old ones

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::IMG_ConvertWeirdBranches IMG  img  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::IMG_CookExecutableSections IMG  img  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
SYM LEVEL_CORE::IMG_FindDynsymByOriginalIndex IMG  img,
UINT32  index
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
SYM LEVEL_CORE::IMG_FindRegsymByName IMG  img,
const CHAR *  name
+
+ + + + + +
+   + + +

+Find regular symbol by name

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
SYM LEVEL_CORE::IMG_FindRegsymByOriginalIndex IMG  img,
UINT32  index
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
SEC LEVEL_CORE::IMG_FindSecByIaddr IMG  img,
IADDR  iaddr
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
SEC LEVEL_CORE::IMG_FindSecByIaddrEndInclusive IMG  img,
IADDR  iaddr
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
SEC LEVEL_CORE::IMG_FindSecByName IMG  img,
const string &  name
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
SEC LEVEL_CORE::IMG_FindSecByNameWithType IMG  img,
const string &  name,
SEC_TYPE  type
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
SEC LEVEL_CORE::IMG_FindSecByOaddr IMG  img,
OADDR  oaddr
+
+ + + + + +
+   + + +

+Find section containing the gived OADDR. Can only be invoked after addresses have been recomputed and the map family of stripes is active

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
SEC LEVEL_CORE::IMG_FindSecByOaddrEndInclusive IMG  img,
OADDR  oaddr
+
+ + + + + +
+   + + +

+Find section containing the gived OADDR. Can only be invoked after addresses have been recomputed and the map family of stripes is active

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
SEC LEVEL_CORE::IMG_FindSecByOriginalIndex IMG  img,
UINT32  index
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::IMG_Free IMG  img  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::IMG_InitOriginalImg IMG  img,
const string &  filename,
const void *  start,
USIZE  size
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::IMG_InsertAfter IMG  img,
IMG  after,
APP  parent
+
+ + + + + +
+   + + +

+Insert IMG after another IMG within an APP

Parameters:
+ + + + +
img block to be inserted after
after block to insert after, if IMG_INVALID, prepend to parent
parent rtn that contains after bbl
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::IMG_InsertBefore IMG  img,
IMG  before,
APP  parent
+
+ + + + + +
+   + + +

+Insert IMG before another IMG within an APP

Parameters:
+ + + + +
img block to be inserted before
before to insert after, if IMG_INVALID, prepend to parent
parent rtn that contains after bbl
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::IMG_IsAddressInImage IMG  img,
ADDRINT  addr
+
+ + + + + +
+   + + +

+Check if address is within image addresses

Parameters:
+ + +
addr address to check.
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::IMG_IsMainImage IMG  img  ) 
+
+ + + + + +
+   + + +

+Check if img is a main image

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::IMG_LinkDynsymWithTarget IMG  img  ) 
+
+ + + + + +
+   + + +

+Crosslink dynamic SYMs with the objects they're describing

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::IMG_LinkRegsymWithTarget IMG  img  ) 
+
+ + + + + +
+   + + +

+Crosslink regular SYMs with the objects they're describing

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void LEVEL_CORE::IMG_load_offset_propagate IMG  img,
void *  loaderInfo
+
+ + + + + +
+   + + +

+Propagate the load offset from the supplied loader info to PIN reported load offset.

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::IMG_MarkPcRelativeControlFlow IMG  img  ) 
+
+ + + + + +
+   + + +

+mark targets of pc relative branches as BBL and RTN beginning

+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_CORE::IMG_NumDynsym IMG  img  ) 
+
+ + + + + +
+   + + +

+Return the number of dynamic symbols in the image

+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_CORE::IMG_NumRegsym IMG  img  ) 
+
+ + + + + +
+   + + +

+Return the number of regulsr symbols in the image

+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_CORE::IMG_NumSec IMG  img  ) 
+
+ + + + + +
+   + + +

+Return the number of SECs in an IMG

+

+ + + + +
+ + + + + + + + + +
string LEVEL_CORE::IMG_PrintRegSyms IMG  img  ) 
+
+ + + + + +
+   + + +

+Put all regular symbols in img

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::IMG_RetypifyBbls IMG  img  ) 
+
+ + + + + +
+   + + +

+the initial BBL typidication may be a little corse. For exaple we can sometimes not distinguish between an indirect junp and a return. This routine tries to refine the BBL types.

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::IMG_SetNewChunkSizesAndAddresses IMG  img  ) 
+
+ + + + + +
+   + + +

+Set new (outgoing) size and address of all CHUNKS in image. this can be done only once. NB: only data chunks are considered, because the code chunks have become irrelevant after INS creation

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::IMG_SortSecsByVaddr IMG  img  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
string LEVEL_CORE::IMG_StringLong IMG  img  ) 
+
+ + + + + +
+   + + +

+produce string for IMG

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::IMG_TypifyBblsAndCreateEdgs IMG  img  ) 
+
+ + + + + +
+   + + +

+determing BBL type based on last INS and create sucessor EDGs

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::IMG_Unlink IMG  img  ) 
+
+ + + + + +
+   + + +

+Unlink an IMG from the APP

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::IMG_VerifyFallthroughs IMG  img  ) 
+
+ + + + + +
+   + + +

+Verify that all LINK, FALSE, and NORMAL EDGs are pointing to the next BBL Includes ugly hackery for two (conditional) calls in one bundle

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
ARRAYBASE LEVEL_CORE::ImgArrayBase "img pool" ,
1024 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
STRIPE<IMG_STRUCT_BASE> LEVEL_CORE::ImgStripeBase "img stripe base" ,
"core" ,
ImgArrayBase
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::InitializeINSSupplementaryResizeLock PINVM::ILOCK *  lock  ) 
+
+ + + + + +
+   + + +

+Initialize the resize lock for the INS stripe

+

+ + + + +
+ + + + + + + + +
VOID LEVEL_CORE::InitializeStripes  ) 
+
+ + + + + +
+   + + +

+Initialize the stripes

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_AccessesManyFPRegisters INS  ins  ) 
+
+ + + + + +
+   + + +

+Several instructions touch big swaths of the FPstate. These FP registers are not modeled in regr/regw of the INS

+

+ + + + +
+ + + + + + + + +
INS LEVEL_CORE::INS_Alloc  ) 
+
+ + + + + +
+   + + +

+Allocate new INS, some initialization

+

+ + + + +
+ + + + + + + + +
INS LEVEL_CORE::INS_AllocLocked  ) 
+
+ + + + + +
+   + + +

+Allocate new INS, some initialization The readers lock for the INS stripe is acquired when this function returns. This guarantees the validity of the INS object in a MT environment when the VM lock is not held by the calling thread. It is the responsibility of the caller to unlock the INS stripe readers lock after he's calling INS_Free() on the allocated INS.

+

Note:
Use this function to allocate an instruction without holding the VM lock.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_Append INS  ins,
BBL  parent
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_AttachComment const INS  ins,
string  comment
+
+ + + + + +
+   + + +

+Attach a comment to an ins. Should only be called if KnobAttachComment is TRUE.

+

Parameters:
+ + + +
[in] ins Attach comment to this INS
[in] comment Makes copy of this string for comment
+
+
+

+ + + + +
+ + + + + + + + + +
BBL LEVEL_CORE::INS_bbl INS  x  ) 
+
+ + + + + +
+   + + +

+return BBL containing the INS, an invalid BBL indicates that the INS is unlinked

+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_CORE::INS_BranchDisplacementWidthBits INS  ins  ) 
+
+ + + + + +
+   + + +

+Return width of branch offset in BITS

+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_CORE::INS_BranchDisplacementWidthBytes INS  ins  ) 
+
+ + + + + +
+   + + +

+Return width of branch offset in BYTES.

+

+ + + + +
+ + + + + + + + + +
REG LEVEL_CORE::INS_CallOrBranchGetIndirectRegister INS  ins  ) 
+
+ + + + + +
+   + + +

+assert that this is a Branch or call indirect though register: get the register

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_CallOrBranchIsMemoryIndirect INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if this branch or call indirect through memory
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_CallOrBranchIsRegisterIndirect INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if the instruction is a branch or call indirect through a register.
+
+

+ + + + +
+ + + + + + + + + +
IADDR LEVEL_CORE::INS_CallRetIaddr INS  ins  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_ChangeOperandToImmediate INS  ins,
UINT32  operandIndex,
REG  regBeingReplaced,
UINT64  immediate
+
+ + + + + +
+   + + +

+Replace an operand with an immediate. Caller is responsible for checking that the ISA allows an immediate as this operand and that the immediate fits.

+

Parameters:
+ + + + +
[in] ins Instruction
[in] operandIndex Index of operand to change
[in] immediate Value of immediate
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_ChangeStackPtr INS  ins  ) 
+
+ + + + + +
+   + + +

+Change stack pointers:

+REG_STACK_PTR -> REG_PIN_STACK_PTR REG_PIN_BRIDGE_ORIG_SP -> REG_STACK_PTR

+

Returns:
Returns true if at least one register was changed
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
REG LEVEL_CORE::INS_ChangeToPinFlagsReg const INS  ins,
const BOOL  as_read
+
+ + + + + +
+   + + +

+Change all occurrences of types of the flags register to be the corresponding pin flags register in the r/w sets of the ins. Return the pin register used in the replacement.

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_ChangeToUsePinFlags const INS  ins  ) 
+
+ + + + + +
+   + + +

+Change all occurrences of app flags to corresponding pin flags in ins. Return TRUE if at least one occurrence changed.

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::INS_Check INS  ins  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + +
VOID LEVEL_CORE::INS_CheckFree  ) 
+
+ + + + + +
+   + + +

+ASSERT if an INS has not been freed. This function is expensive so it cannot be called for normal runs.

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::INS_ClearDirtyG INS  ins  ) 
+
+ + + + + +
+   + + +

+Global version of INS_DirtyG(). Used for accessing the dirty bits from another file.

+

+ + + + +
+ + + + + + + + + +
string LEVEL_CORE::INS_Comment INS  ins  ) 
+
+ + + + + +
+   + + +

+Get the comment string from an instruction.

+

Parameters:
+ + +
[in] ins INS whose comment string is wanted.
+
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::INS_ConvertCallToBranch INS  ins  ) 
+
+ + + + + +
+   + + +

+Convert a call instruction to a branch

+

+ + + + +
+ + + + + + + + + +
INS LEVEL_CORE::INS_ConvertLoadToMoveHack INS  jmp  ) 
+
+ + + + + +
+   + + +

+Convert a JMP/CALL indirect through memory to a load(mov) of the value indicated by the jmp memop to REG_PIN_INDIRREG

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::INS_ConvertToIndirectJumpHack INS  ins  ) 
+
+ + + + + +
+   + + +

+Convert Jump/call through memory to a jump/call indirect through register (REG_PIN_INDIREG).

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_Copy INS  ins,
INS  clone
+
+ + + + + +
+   + + +

+Copy ins to clone. Allocate and create new rel for clone if necessary.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_CopyArchFields INS  ins,
INS  clone
+
+ + + + + +
+   + + +

+Copy everything to the clone.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_CopyComment INS  toIns,
INS  fromIns
+
+ + + + + +
+   + + +

+Copy any comment on fromIns to toIns.

+

Parameters:
+ + + +
in/out] toIns
[in] fromIns 
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_CopyXlateAttributes INS  insNew,
INS  insOrig
+
+ + + + + +
+   + + +

+This method is used when Pin translates an original application instruction into a different instruction or into a sequence of instructions. It copies attributes from the original INS to the new (translated) INS.

+

Parameters:
+ + + +
[out] insNew The new instruction that Pin generates (receives the new attributes).
[in] insOrig The original application instruction.
+
+
+

+ + + + +
+ + + + + + + + + +
REG LEVEL_CORE::INS_CountRegister INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
register used as the counter by this instruction The instruction can be a loop instruction, a REP prefixed instruction, or a jecxz instruction. If it is any other instruction the result is REG_INVALID()
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
INSDECODE LEVEL_CORE::INS_DecodeIns INS  ins,
const VOID **  address,
UINT32  size,
EXCEPTION_CODE excCode
+
+ + + + + +
+   + + +

+Forward declaration of the Intel(R) X86 Encoder Decoder decoding function. It must be declared in this file to resolve references in the following inline functions.

+

+ + + + +
+ + + + + + + + + +
IADDR LEVEL_CORE::INS_DirectBranchOrCallTargetIaddr INS  ins  ) 
+
+ + + + + +
+   + + +

+Compute the target of an ip relative jmp

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
IADDR LEVEL_CORE::INS_DirectBranchOrCallTargetIaddr INS  ins,
IADDR  iaddr
+
+ + + + + +
+   + + +

+Compute the target of an ip relative jmp

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
OADDR LEVEL_CORE::INS_DirectBranchOrCallTargetOaddr INS  ins,
OADDR  oaddr
+
+ + + + + +
+   + + +

+Compute the target of an ip relative jmp

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_DirtyG INS  ins  ) 
+
+ + + + + +
+   + + +

+Global version of INS_DirtyG(). Used for accessing the dirty bits from another file.

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::INS_DisableSegmentPrefix INS  ins  ) 
+
+ + + + + +
+   + + +

+INS_DisableSegmentPrefix() - remove segment prefix

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_EmbedValue INS  ins,
VOID *  valuePtr,
UINT32  valueSize
+
+ + + + + +
+   + + +

+Embed an immediate value into the code as an INS

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
USIZE LEVEL_CORE::INS_EncodeAtAddr INS  ins,
ADDRINT  address
+
+ + + + + +
+   + + +

+Encode an instruction at a given address

+

+ + + + +
+ + + + + + + + + +
UINT8* LEVEL_CORE::INS_EncodeBufferG INS  ins  ) 
+
+ + + + + +
+   + + +

+Make the INS_EncodeBuffer available for external use

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
UINT32 LEVEL_CORE::INS_EncodeIns INS  ins,
VOID *  buffer
+
+ + + + + +
+   + + +

+

Returns:
size of instruction
+
+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_CORE::INS_EncodeSizeG INS  ins  ) 
+
+ + + + + +
+   + + +

+Global version of INS_EncodeSize(). Used for accessing the encode size from another file.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_EncodeSizeSetG INS  ins,
UINT32  size
+
+ + + + + +
+   + + +

+Make the INS_EncodeSizeSet available for external use

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::INS_Equal INS  ins,
INS  ins2
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::INS_EqualArchFields INS  ins1,
INS  ins2
+
+ + + + + +
+   + + +

+Compare the architecture fields. BEWARE: this is somewhat flaky, since if xed_decoded_inst contains padding, this comparison could fail.

+Since the only use of this function is in an assertion which checks that a cloned instruction is the same as its original, (where the copy has been done using INS_CopyArchFields) it's probably OK, but beware if you want to use this elsewhere. It would be safer if Intel(R) X86 Encoder Decoder exposed a comparison function so we can avoid a byte-wise comparison of structures.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_ExtInsertAfter EXT  ext,
EXT  after,
INS  parent
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_ExtMove INS  src,
INS  dst,
const ATTRIBUTE *  attr
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_ExtMoveRev INS  src,
INS  dst,
const ATTRIBUTE *  attr
+
+ + + + + +
+   + + +

+Move EXT's of a particular attribute to another ins. The order of the EXT will be reversed.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_ExtPrepend EXT  ext,
INS  parent
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_ExtTransfer INS  src,
INS  dst
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+template<typename FETCHER_>
GLOBALTEMPLATEFUN BOOL LEVEL_CORE::INS_Fetch INS  ins,
const VOID **  address,
const FETCHER_ &  insBytesFetcher,
UINT32  maxSize,
EXCEPTION_INFO pExceptInfo = 0
+
+ + + + + +
+   + + +

+Decode an original instruction and initialize the specified INS object. Use the specified INS_BYTES_FETCHER functor to fetch bytes of the instruction.

Parameters:
+ + + + + +
[out] ins the instruction object to be initialized
[in] out] address on input: address of the instruction to be decoded on output: address of the instruction immediately following the decoded one [in] insBytesFetcher the INS_BYTES_FETCHER functor to be used for fetching the instruction's bytes
[in] maxSize the maximum size of the instruction to be decoded. MAX_INSTRUCTION_SIZE if the input is 0.
[out] pExceptInfo optional pointer to the structure that receives the exception information if the function fails
+
+
Returns:
TRUE for success, FALSE for failure.
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::INS_Free INS  ins  ) 
+
+ + + + + +
+   + + +

+Free INS

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::INS_FreeLocked INS  ins  ) 
+
+ + + + + +
+   + + +

+Free INS which was allocated by INS_AllocLocked(). This function also releases the INS stripe lock acquired by INS_AllocLocked().

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::INS_FreeRel INS  ins  ) 
+
+ + + + + +
+   + + +

+Free INS and possibly attached reloc

+

+ + + + +
+ + + + + + + + +
VOID LEVEL_CORE::INS_GarbageCollect  ) 
+
+ + + + + +
+   + + +

+INS garbage collector, currently not used

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_GenMemImmOpWidth INS  ins,
REG  base,
ADDRINT  displacement,
REG  index,
ADDRINT  scale,
UINT64  immed,
OPCODE  opcode,
UINT8  legal_immed_bytewidths_bitmap,
REGWIDTH  reg_width
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_GenMemRegOpWidth INS  ins,
REG  base,
ADDRINT  displacement,
REG  index,
UINT32  scale,
REG  src,
OPCODE  opcode,
REGWIDTH  reg_width,
UINT  store_bytes
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_GenRegMemOpWidth INS  ins,
REG  base,
ADDRINT  displacement,
REG  index,
UINT32  scale,
REG  reg,
OPCODE  opcode,
UINT8  legal_displacement_bytewidths_bitmap,
REGWIDTH  reg_width
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_GenRetImm INS  ins,
UINT64  imm
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_GenSizedNop INS  ins,
UINT  requested_length_bytes
+
+ + + + + +
+   + + +

+Create a "nop" instruction witha requested size

+

+ + + + +
+ + + + + + + + + +
UINT8 LEVEL_CORE::INS_get_num_reads INS  x  ) 
+
+ + + + + +
+   + + +

+

Returns:
Returns the number of registers read by this instruction
+
+

+ + + + +
+ + + + + + + + + +
UINT8 LEVEL_CORE::INS_get_num_writes INS  x  ) 
+
+ + + + + +
+   + + +

+

Returns:
Returns the number of registers written by this instruction
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
UINT LEVEL_CORE::INS_get_pos_r INS  x,
UINT  i
+
+ + + + + +
+   + + +

+

Returns:
Returns Intel(R) X86 Encoder Decoder operand position of ith read register
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
UINT LEVEL_CORE::INS_get_pos_w INS  x,
UINT  i
+
+ + + + + +
+   + + +

+

Returns:
Returns Intel(R) X86 Encoder Decoder operand position of ith written register
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
REG LEVEL_CORE::INS_get_reg_r INS  x,
UINT  i
+
+ + + + + +
+   + + +

+

Returns:
Returns the ith read register
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
REG LEVEL_CORE::INS_get_reg_w INS  x,
UINT  i
+
+ + + + + +
+   + + +

+

Returns:
Returns the ith written register
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
xed_operand_enum_t LEVEL_CORE::INS_get_role_r INS  x,
UINT  i
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
xed_operand_enum_t LEVEL_CORE::INS_get_role_w INS  x,
UINT  i
+
+ + + + + +
+   + + +

+

Returns:
Returns role of ith written register
+
+

+ + + + +
+ + + + + + + + + +
REG LEVEL_CORE::INS_GetBaseReg INS  ins  ) 
+
+ + + + + +
+   + + +

+Note: this only works for the 1st (0-index) base reg. Not the second base register in string ops & calls

+

+ + + + +
+ + + + + + + + + +
REG LEVEL_CORE::INS_GetBaseRegOne INS  ins  ) 
+
+ + + + + +
+   + + +

+Note: this gets the second base register, only useful for string ops & calls.

+

+ + + + +
+ + + + + + + + + +
ADDRDELTA LEVEL_CORE::INS_GetBranchDisplacement INS  ins  ) 
+
+ + + + + +
+   + + +

+

Note:
the displacement is a signed number.
+
+

+ + + + +
+ + + + + + + + + +
REG LEVEL_CORE::INS_GetFirstAluSourceReg INS  ins  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
ADDRINT LEVEL_CORE::INS_GetImmediate INS  ins  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
REG LEVEL_CORE::INS_GetIndexReg INS  ins  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
ADDRDELTA LEVEL_CORE::INS_GetMemoryDisplacement INS  ins  ) 
+
+ + + + + +
+   + + +

+Return the displacement as a signed integral number in the size of pointer (i.e. ADDRDELTA). This will return 0 if the memory operation does not have a displacement or if the displacement is zero.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
ADDRINT LEVEL_CORE::INS_GetMTSafePatchLocation ADDRINT  addr,
USIZE  size
+
+ + + + + +
+   + + +

+Given an original instruction location, get the nearest next address at which this instruction should be placed if it needs to be safely patched

+

Precondition:
The instruction size should not exceed INS_PATCH_UNIT bytes
+
Parameters:
+ + + +
[in] addr original address of the instruction This could be an absolute address of the instruction or it could be an offset relative to any INS_PATCH_UNIT-aligned address
[in] size size of the instruction
+
+
Returns:
new location for the instruction that needs to be safely patched
+
+

+ + + + +
+ + + + + + + + + +
OADDR LEVEL_CORE::INS_GetOaddr INS  ins  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
UINT LEVEL_CORE::INS_GetPos INS  ins,
UINT  i,
BOOL  read
+
+ + + + + +
+   + + +

+If read is TRUE, returns the operand position of the ith read register, otherwise the ith written register

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
REG LEVEL_CORE::INS_GetReg INS  ins,
UINT  i,
BOOL  read
+
+ + + + + +
+   + + +

+If read is TRUE, gets the ith read register, otherwise the ith written register

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
xed_operand_enum_t LEVEL_CORE::INS_GetRole INS  ins,
UINT  i,
BOOL  read
+
+ + + + + +
+   + + +

+If read is TRUE, returns the role of the ith read register, otherwise the ith written register

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
LOCALFUN REG LEVEL_CORE::INS_GetRoleReg INS  ins,
xed_operand_enum_t  role
+
+ + + + + +
+   + + +

+

Returns:
the read register which fulfils the requested role.
+
+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_CORE::INS_GetScale INS  ins  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
ADDRINT LEVEL_CORE::INS_GetSecondImmediate INS  ins  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
ADDRDELTA LEVEL_CORE::INS_GetSignedImmediate INS  ins  ) 
+
+ + + + + +
+   + + +

+

Note:
Return the immediate operand as a sign number.
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_HasFixed8BitBranchDisplacement INS  ins  ) 
+
+ + + + + +
+   + + +

+Return true if the branch has an 8b displacement. Relative/direct branches only! This ignores the Jb branches (opcodes 0x70..0x7F).

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_HasImmediateOperand INS  ins  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_HasImplicitFullMask INS  ins  ) 
+
+ + + + + +
+   + + +

+Returns true only if this is k0 masked vector that is ignored (ie. in EVEX instruction) A bit hacky code till better xed API

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_HasImplicitMemoryReference INS  ins  ) 
+
+ + + + + +
+   + + +

+Test if this instruction has an implicit memory operand. We include the memory operand in lea, even though that doesn't access memory.

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_HasImplicitStackReference INS  ins  ) 
+
+ + + + + +
+   + + +

+Test if this instruction has an implicit stack reference.

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_HasMemoryDisplacement INS  ins  ) 
+
+ + + + + +
+   + + +

+Return true if the operation really has a memory displacement.

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_HasRepEqual INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if this is a REPE
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_HasSegmentRegPrefix INS  ins  ) 
+
+ + + + + +
+   + + +

+Just calls INS_SegmentPrefix()

+

+ + + + +
+ + + + + + + + + +
UINT64 LEVEL_CORE::INS_Id INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
Unique identifier of instruction
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::INS_InitAAA INS  ins  ) 
+
+ + + + + +
+   + + +

+CPUID

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitAddCI INS  ins,
REG  reg,
UINT64  imm
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitAddCR INS  ins,
REG  src,
REG  dst
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitAddI INS  ins,
REG  reg,
UINT64  imm
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitAddR INS  ins,
REG  src,
REG  dst
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitAlignedLoadXMM INS  ins,
REG  dst,
REG  base,
INT32  displacement,
REG  index,
UINT  scale,
REG  seg
+
+ + + + + +
+   + + +

+Load a 128-bit value from an aligned memory location into the given dst register. In case the xmm destination is a partial register (AVX and above), the high bits of the full register will be preserved.

+

Note:
On AVX and above, a preceding vzeroupper instruction may be needed to avoid performance penalties. It is the caller's responsibility to do so.

+The given dst register is expected to be a xmm register.

+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitAlignedLoadZMM INS  ins,
REG  dst,
REG  mask,
REG  base,
INT32  displacement,
REG  index,
UINT  scale,
REG  seg,
BOOL  exactCopy
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitAlignedStoreXMM INS  ins,
REG  src,
REG  base,
INT32  displacement,
REG  index,
UINT  scale,
REG  seg
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitAlignedStoreZMM INS  ins,
REG  src,
REG  mask,
REG  base,
INT32  displacement,
REG  index,
UINT  scale,
REG  seg,
BOOL  exactCopy
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitAnd INS  ins,
REG  src,
REG  dst
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitAndI INS  ins,
REG  reg,
UINT64  imm
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitAndMI INS  ins,
REG  base,
ADDRINT  displacement,
REG  index,
ADDRINT  scale,
REG  pinseg,
UINT64  immed
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitBranch INS  ins,
BBL  target
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitBsr INS  ins,
REG  src,
REG  dst
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitCall INS  ins,
UINT64  imm
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitCallIndirectMemory INS  ins,
REG  segment,
REG  base,
ADDRINT  displacement,
REG  index,
UINT32  scale
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitCallIndirectRegister INS  ins,
REG  target
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::INS_InitCld INS  ins  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitCmov INS  ins,
REG  src,
REG  dst,
PREDICATE_IA32  cond
+
+ + + + + +
+   + + +

+Generate a CMOV for the given predicate.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitCmovccFromJcc INS  ins,
INS  jcc,
REG  src,
REG  dst
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitCmp INS  ins,
REG  src_reg,
REG  dst_reg
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitCmpBI INS  ins,
REG  reg,
UINT64  imm
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitCmpI INS  ins,
REG  reg,
UINT64  imm
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitCmpMR INS  ins,
REG  base,
ADDRINT  displacement,
REG  index,
UINT32  scale,
REG  reg
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitCmpWI INS  ins,
REG  reg,
UINT64  imm
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
USIZE LEVEL_CORE::INS_InitDirectJmp INS  ins,
ADDRINT  brAddr,
ADDRINT  tgtAddr
+
+ + + + + +
+   + + +

+Initialize an unconditional, direct jump instruction with the 32-bit displacement

Parameters:
+ + + + +
[in] ins instruction to be initialized
[in] brAddr address of the branch
[in] tgtAddr target address of the branch
+
+
Precondition:
the signed distance between <tgtAddr> and <brAddr> should fit 32 bits.
+
Returns:
size of the jump instruction
+
+

+ + + + +
+ + + + + + + + +
VOID LEVEL_CORE::INS_InitEncodeDecoder  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitFarDirectCall INS  ins,
UINT32  displacement,
UINT16  segment_selector
+
+ + + + + +
+   + + +

+Make a far direct call

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitFarDirectJmp INS  ins,
UINT32  displacement,
UINT16  segment_selector
+
+ + + + + +
+   + + +

+Make a far direct jump

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LOCALFUN VOID LEVEL_CORE::INS_InitFarDirectOp INS  ins,
UINT32  displacement,
UINT16  segment_selector,
xed_iclass_enum_t  iclass
+
+ + + + + +
+   + + +

+Create far jumps and calls

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitFxrstor INS  ins,
REG  base,
ADDRINT  displacement,
REG  index,
UINT32  scale
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitFxsave INS  ins,
REG  base,
ADDRINT  displacement,
REG  index,
UINT32  scale
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LOCALFUN VOID LEVEL_CORE::INS_InitGPR32XMMOp INS  ins,
REG  dst,
REG  src,
xed_iclass_enum_t  iclass
+
+ + + + + +
+   + + +

+Create an GPR32/ XMM operation

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::INS_InitHalt INS  ins  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
LOCALFUN void LEVEL_CORE::INS_Initialize INS  ins  ) 
+
+ + + + + +
+   + + +

+Initializate a newly allocated INS

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitIncMem INS  ins,
REG  base,
ADDRINT  disp,
BOOL  lock
+
+ + + + + +
+   + + +

+x -- Dynamic profile - produce "inc [base+disp]" INS (with or without lock)

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitInt INS  ins,
UINT8  imm
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::INS_InitInt3 INS  ins  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitIntx86 INS  ins,
UINT64  num
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitJCXZ INS  ins,
UINT64  imm,
REG  countReg
+
+ + + + + +
+   + + +

+Initialize a JCXZ, ensuring that it accesses the correct register (which must be one of CX,ECX,RCX or their Pin equivalents).

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitJmpL INS  ins,
UINT64  imm
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitJmpM INS  ins,
REG  base,
ADDRINT  displacement,
REG  index,
UINT32  scale,
REG  segreg
+
+ + + + + +
+   + + +

+Indirect unconditional jump through memory

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitJmpR INS  ins,
REG  src
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitJxBLFromOtherIns INS  ins,
INS  other,
UINT64  imm
+
+ + + + + +
+   + + +

+Copy the branch. Change the displacement to 32 bits if the instruction allows it. Convert indirect to direct.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitJxMemoryFromOtherIns INS  ins,
INS  other,
REG  base,
ADDRINT  displacement,
REG  index,
UINT32  scale
+
+ + + + + +
+   + + +

+Indirect conditional jump through memory, copying the opcode from another instruction

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::INS_InitLAHF INS  ins  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitLea INS  ins,
REG  dst,
REG  base,
REG  seg
+
+ + + + + +
+   + + +

+Create an lea that uses default address width, with a simple register + SEG register source (useful for string op operands).

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitLea INS  ins,
REG  dst,
REG  base,
ADDRINT  displacement,
REG  index,
UINT32  scale
+
+ + + + + +
+   + + +

+Create an lea that uses default address width

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitLeaEaWidth INS  ins,
REG  dst,
REG  base,
ADDRINT  displacement,
REG  index,
UINT32  scale,
INT32  ea_width,
REGWIDTH  reg_width
+
+ + + + + +
+   + + +

+Create an lea specifying the ea_width (16, 32 or 64) and destination reg_width

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitLeaEaWidth INS  ins,
REG  dst,
REG  base,
ADDRINT  displacement,
REG  index,
UINT32  scale,
INT32  ea_width
+
+ + + + + +
+   + + +

+Create an lea specifying the ea_width (16, 32 or 64)

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitLoad INS  ins,
REG  dst,
REG  base,
ADDRINT  displacement,
REG  index,
ADDRINT  scale,
REG  seg,
BOOL  exactCopy
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitLoadEaWidth INS  ins,
REG  dst,
REG  base,
ADDRINT  displacement,
REG  index,
ADDRINT  scale,
REG  seg,
INT32  ea_width
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitLoadMaskReg INS  ins,
REG  dst,
REG  base,
ADDRINT  displacement,
REG  index,
UINT32  scale,
REG  seg,
BOOL  exactCopy
+
+ + + + + +
+   + + +

+This function loads the value of a mask register directly from memory.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LOCALFUN VOID LEVEL_CORE::INS_InitLoadMemop INS  ins,
REG  dst,
REG  base,
ADDRINT  displacement,
REG  index,
ADDRINT  scale,
REG  pinseg,
xed_iclass_enum_t  iclass,
BOOL  exactCopy,
xed_operand_enum_t  xed_op = XED_OPERAND_MEM0,
UINT8  legal_displacement_bytewidths_bitmap = 5,
REGWIDTH  reg_width = REGWIDTH_NATIVE,
INT32  ea_width = sizeof(VOID*) * 8,
UINT  load_bytes = 0
+
+ + + + + +
+   + + +

+Generate a load memop.

Parameters:
+ + + + + + + + + + + + + + +
ins The ins we are creating.
[in] dst The register destination.
[in] base The address computation base register
[in] displacement The displacement for the memory address computation
[in] index The index register for the memory address computation
[in] scale The scale value for the memory address computation
[in] pinseg The segment register name for the memory address computation
[in] iclass The instruction iclass of type xed_iclass_enum_t that we want to create.
[in] xed_op Either XED_OPERAND_AGEN (for LEA instructions) or XED_OPERAND_MEM0 for everything else.
[in] legal_displacement_bytewidths_bitmap A bit vector of legal displacment(displacement) widths. bit0=1 byte, bit1=2 bytes, bit2=4 bytes and bit3=8 bytes.
[in] reg_width The width of the operation. This determines the destination register width.
[in] ea_width The width in bits of the effective address computation.
[in] load_bytes If we are doing sign-extending loads, the width of the data is different than the width of the destination register. Here is where one specifies the with of the data if it is not the same as the destination register width. The default is zero implying that the memory operand width is the same as the destination register width. This value is in bytes.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitLoadMMX INS  ins,
REG  dst,
REG  base,
INT32  displacement,
REG  index,
UINT  scale,
REG  seg
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitLoadMxcsr INS  ins,
REG  base,
ADDRINT  displacement,
REG  index,
UINT32  scale,
BOOL  useAvxVersion
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitLoadWidth INS  ins,
REG  dst,
REG  base,
ADDRINT  displacement,
REG  index,
ADDRINT  scale,
REG  seg,
REGWIDTH  reg_width
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::INS_InitLods INS  ins  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitMemImmOp INS  ins,
REG  base,
ADDRINT  displacement,
REG  index,
ADDRINT  scale,
REG  pinseg,
OPCODE  op,
UINT64  immed,
UINT8  legal_immed_bytewidths_bitmap,
REGWIDTH  reg_width,
BOOL  exactCopy
+
+ + + + + +
+   + + +

+Operate with an immediate and a memory operand.

+

Parameters:
+ + + + + + + + + + + +
[in] ins Instruction to build
[in] base Base register
[in] displacement Constant displacement from base
[in] index Index register
[in] scale Index register multiplier
[in] pinseg Segment register
[in] opcode The operation to be performed
[in] immed The immediate value to use.
[in] legal_immed_bytewidths_bitmap Valid widths for the immediate
[in] reg_width Size of the operation
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LOCALFUN VOID LEVEL_CORE::INS_InitMMExtractOpOriginal INS  ins,
REG  mmSrc,
REG  maskReg,
REG  base,
INT32  displacement,
UINT  disp_bytes,
REG  index,
UINT  scale,
REG  seg,
UINT32  imm8,
xed_iclass_enum_t  iclass,
UINT32  operandWidthBits,
BOOL  replaceXedRegs
+
+ + + + + +
+   + + +

+set up the memory resource

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LOCALFUN VOID LEVEL_CORE::INS_InitMMInsertOpOriginal INS  ins,
REG  mmDest,
REG  mmSrc,
REG  maskReg,
REG  base,
INT32  displacement,
UINT  disp_bytes,
REG  index,
UINT  scale,
REG  seg,
UINT32  imm8,
xed_iclass_enum_t  iclass,
UINT32  operandWidthBits,
BOOL  replaceXedRegs
+
+ + + + + +
+   + + +

+set up the memory resource

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LOCALFUN VOID LEVEL_CORE::INS_InitMMLoad INS  ins,
REG  mmdst,
REG  maskReg,
REG  base,
INT32  displacement,
UINT  disp_bytes,
REG  index,
UINT  scale,
REG  pinseg,
xed_iclass_enum_t  iclass,
UINT32  memop_byte_length,
xed_reg_enum_t  dummy_dst_param,
xed_reg_enum_t  dummy_mask_param,
BOOL  exactCopy
+
+ + + + + +
+   + + +

+Create a MMX/XMM load. The dummy_dst must be an MMX/XMM register as appropriate

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LOCALFUN VOID LEVEL_CORE::INS_InitMMRegRegOp INS  ins,
REG  mmdst,
REG  mmsrc,
xed_iclass_enum_t  iclass,
xed_reg_enum_t  dummy_dst,
xed_reg_enum_t  dummy_src,
REGWIDTH  regWidth = REGWIDTH_NATIVE
+
+ + + + + +
+   + + +

+Create a reg/reg operation. This version differs from INS_InitRegRegOp in that it takes the dummy registers in the arg list so you can supply MMX, XMM or GPR registers as dummy registers.

+In 64b mode, if you have a 32b GPR as a destination, you should set the regWidth to REGWIDTH_32.

+If you have an XMM source/dest the dummy reg should be a valid XMM register such as XED_REG_XMM0. Use different dummy registers for src & dest.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitMov INS  ins,
REG  src,
REG  dst
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitMov16 INS  ins,
REG  src,
REG  dst
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitMov32 INS  ins,
REG  src,
REG  dst
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitMov8 INS  ins,
REG  src,
REG  dst
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitMovAddrint INS  ins,
ADDRINT  imm,
REG  dst
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitMOVDQARegReg INS  ins,
REG  dst,
REG  src
+
+ + + + + +
+   + + +

+Create a MOVDQA reg/reg

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitMovI INS  ins,
UINT64  imm,
REG  dst,
BOOL  denyImm32SignExtension = FALSE
+
+ + + + + +
+   + + +

+

Parameters:
+ + +
[in] denyImm32SignExtension Deny attempt to check if the 32 immediate (if such) can be extended to 64 bit without loosing its value. See Mantis #4323 for more details.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitMovMemImmOp INS  ins,
REG  base,
ADDRINT  displacement,
REG  index,
ADDRINT  scale,
REG  pinseg,
UINT64  immed,
UINT8  legal_immed_bytewidths_bitmap,
BOOL  exactCopy
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitMovMemImmOpWidth INS  ins,
REG  base,
ADDRINT  displacement,
REG  index,
ADDRINT  scale,
REG  pinseg,
UINT64  immed,
UINT8  legal_immed_bytewidths_bitmap,
REGWIDTH  reg_width
+
+ + + + + +
+   + + +

+allow non-native reg_width

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitMovMemReg INS  ins,
REG  segment,
REG  base,
ADDRINT  displacement,
REG  index,
UINT32  scale,
REG  dst
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitMovRegMem INS  ins,
REG  src,
REG  base,
ADDRINT  displacement,
REG  index,
UINT32  scale
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::INS_InitMovSW INS  ins  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitMovsx INS  ins,
REG  src,
REG  dst
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitMovsxMemop INS  ins,
REG  dst,
REG  base,
ADDRINT  displacement,
REG  index,
UINT32  scale,
REG  seg,
UINT32  memWidth
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitMovzx INS  ins,
REG  src,
REG  dst
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitNeg INS  ins,
REG  reg
+
+ + + + + +
+   + + +

+Negate the value in the given register.

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::INS_InitNop INS  ins  ) 
+
+ + + + + +
+   + + +

+Create a "nop" instruction.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
LOCALFUN VOID LEVEL_CORE::INS_InitNoRegOp INS  ins,
xed_iclass_enum_t  iclass
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitNot INS  ins,
REG  reg
+
+ + + + + +
+   + + +

+Bitwise not the value in the given register.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitOrI INS  ins,
REG  reg,
UINT64  imm
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::INS_InitOriginalIns INS  ins,
const VOID **  address,
UINT32  maxSize,
EXCEPTION_INFO pExceptInfo = 0
+
+ + + + + +
+   + + +

+Decode an original instruction and initialize the specified INS object.

Parameters:
+ + + + + +
[out] ins the instruction object to be initialized
[in] out] address on input: address of the instruction to be decoded on output: address of the instruction immediately following the decoded one
[in] maxSize the maximum size of the instruction to be decoded. MAX_INSTRUCTION_SIZE if the input is 0.
[out] pExceptInfo optional pointer to the structure that receives the exception information if the function fails
+
+
Returns:
TRUE for success, FALSE for failure.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitOrMI INS  ins,
REG  base,
ADDRINT  displacement,
REG  index,
ADDRINT  scale,
REG  pinseg,
UINT64  immed
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitPANDRegReg INS  ins,
REG  dst,
REG  src
+
+ + + + + +
+   + + +

+Create a PAND reg/reg

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitPCMPEQBRegMem INS  ins,
REG  dst,
REG  base,
INT32  displacement,
REG  index,
UINT  scale,
REG  seg
+
+ + + + + +
+   + + +

+Create a PCMPEQB reg, mem

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitPCMPEQDRegMem INS  ins,
REG  dst,
REG  base,
INT32  displacement,
REG  index,
UINT  scale,
REG  seg
+
+ + + + + +
+   + + +

+Create a PCMPEQD reg, mem

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitPMOVMSKB INS  ins,
REG  dst,
REG  src
+
+ + + + + +
+   + + +

+Create a PMOVMSKB r32, xmm

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitPop INS  ins,
REG  base,
ADDRINT  displacement,
REG  index,
UINT32  scale
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitPop INS  ins,
REG  reg
+
+ + + + + +
+   + + +

+Create a POP instruction that pops a register. The instruction is chosed to suit the size of the register.

+

Parameters:
+ + + +
[in] ins The instruction, which is constructed as a POP.
[in] reg The register that is popped.
+
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::INS_InitPopAL INS  ins  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::INS_InitPopF INS  ins  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitPORRegMem INS  ins,
REG  dst,
REG  base,
INT32  displacement,
REG  index,
UINT  scale,
REG  seg
+
+ + + + + +
+   + + +

+Create a POR reg, mem

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitPush INS  ins,
REG  base,
ADDRINT  displacement,
REG  index,
UINT32  scale,
REG  seg
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitPush INS  ins,
REG  reg
+
+ + + + + +
+   + + +

+Create a PUSH instruction that pushes a register. The instruction is chosen to suit the size of the register.

+

Parameters:
+ + + +
[in] ins The instruction, which is constructed as a PUSH.
[in] reg The register that is pushed.
+
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::INS_InitPushAL INS  ins  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::INS_InitPushF INS  ins  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitPushI INS  ins,
UINT64  imm
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitPushWidth INS  ins,
REG  base,
ADDRINT  displacement,
REG  index,
UINT32  scale,
REG  seg,
REGWIDTH  reg_width
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::INS_InitRdtsc INS  ins  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LOCALFUN VOID LEVEL_CORE::INS_InitRegRegOp INS  ins,
REG  src,
REG  dst,
xed_iclass_enum_t  iclass,
xed_reg_enum_t  dummy_src = XED_REG_ECX,
xed_reg_enum_t  dummy_dst = XED_REG_EDX,
unsigned int  op_width = 32
+
+ + + + + +
+   + + +

+Generate a register <OP> register operation. If you're trying to generate non-ADDRINT-width operation you need to use one of the higher level functions, or explicitly pass the appropriate widths and dummy registers in the optional arguments.

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::INS_InitRepStos INS  ins  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::INS_InitRet INS  ins  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitRetImm INS  ins,
UINT64  imm
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::INS_InitSAHF INS  ins  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LOCALFUN VOID LEVEL_CORE::INS_InitSDispOp INS  ins,
INT64  disp,
xed_iclass_enum_t  iclass,
INT32  ea_width = sizeof(VOID*) * 8,
INS  orig = INS_INVALID()
+
+ + + + + +
+   + + +

+Initialize CONTROL TRANSFERS with displacements.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitSetCC INS  ins,
REG  reg,
PREDICATE_IA32  cond
+
+ + + + + +
+   + + +

+Generate a SETcc instruction for the given predicate. The register must be a one byte register since those are the only valid register targets for setCC

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitSeto INS  ins,
REG  reg
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitShlI INS  ins,
REG  reg,
UINT64  imm
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitShrI INS  ins,
REG  reg,
UINT64  imm
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitSizedNop INS  ins,
UINT  requested_length_bytes
+
+ + + + + +
+   + + +

+Create a "nop" instruction witha requested size

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::INS_InitStd INS  ins  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitStore INS  ins,
REG  src,
REG  base,
ADDRINT  displacement,
REG  index,
UINT32  scale,
BOOL  exactCopy
+
+ + + + + +
+   + + +

+INS_InitStore with the default segment register

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitStore INS  ins,
REG  src,
REG  base,
ADDRINT  displacement,
REG  index,
UINT32  scale,
REG  seg,
BOOL  exactCopy
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitStoreMaskReg INS  ins,
REG  src,
REG  base,
ADDRINT  displacement,
REG  index,
UINT32  scale,
REG  seg,
BOOL  exactCopy
+
+ + + + + +
+   + + +

+This function stores the value of a mask register directly to memory.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitStoreMMX INS  ins,
REG  src,
REG  base,
INT32  displacement,
REG  index,
UINT  scale,
REG  seg
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitStoreMxcsr INS  ins,
REG  base,
ADDRINT  displacement,
REG  index,
UINT32  scale,
BOOL  useAvxVersion
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitStoreNTIWidth INS  ins,
REG  src,
REG  base,
ADDRINT  displacement,
REG  index,
UINT32  scale,
REG  seg,
REGWIDTH  reg_width
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitStoreWidth INS  ins,
REG  src,
REG  base,
ADDRINT  displacement,
REG  index,
UINT32  scale,
REG  seg,
REGWIDTH  reg_width,
BOOL  exactCopy
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::INS_InitStos INS  ins  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitSubI INS  ins,
REG  reg,
UINT64  imm
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitSubR INS  ins,
REG  src,
REG  dst
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitTest INS  ins,
REG  src,
REG  dst
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitTestI INS  ins,
REG  reg,
UINT64  imm
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitTestMI INS  ins,
REG  base,
ADDRINT  displacement,
REG  index,
ADDRINT  scale,
REG  pinseg,
UINT64  immed
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::INS_InitUD2 INS  ins  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitUnalignedLoadXMM INS  ins,
REG  dst,
REG  base,
INT32  displacement,
REG  index,
UINT  scale,
REG  seg,
BOOL  exactCopy
+
+ + + + + +
+   + + +

+Load a 128-bit value from an unaligned memory location into the given dst register. In case the xmm destination is a partial register (AVX and above), the high bits of the full register will be preserved.

+

Note:
On AVX and above, a preceding vzeroupper instruction may be needed to avoid performance penalties. It is the caller's responsibility to do so.

+The given dst register is expected to be a xmm register.

+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitUnalignedLoadYMM INS  ins,
REG  dst,
REG  base,
INT32  displacement,
REG  index,
UINT  scale,
REG  seg,
BOOL  exactCopy
+
+ + + + + +
+   + + +

+Load a 256-bit value from an unaligned memory location into the given dst register. In case the ymm destination is a partial register (AVX512 and above), the high bits of the full register will be preserved.

+

Note:
The given dst register is expected to be a ymm register.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitUnalignedLoadZMM INS  ins,
REG  dst,
REG  mask,
REG  base,
INT32  displacement,
REG  index,
UINT  scale,
REG  seg,
BOOL  exactCopy
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitUnalignedStoreXMM INS  ins,
REG  src,
REG  base,
INT32  displacement,
REG  index,
UINT  scale,
REG  seg,
BOOL  exactCopy
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitUnalignedStoreXMMUsingAvx INS  ins,
REG  src,
REG  base,
INT32  displacement,
REG  index,
UINT  scale,
REG  seg,
BOOL  exactCopy
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitUnalignedStoreYMM INS  ins,
REG  src,
REG  base,
INT32  displacement,
REG  index,
UINT  scale,
REG  seg,
BOOL  exactCopy
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitUnalignedStoreZMM INS  ins,
REG  src,
REG  mask,
REG  base,
INT32  displacement,
REG  index,
UINT  scale,
REG  seg,
BOOL  exactCopy
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitVxorpd INS  ins,
REG  ymmDest,
REG  ymmSrc1,
REG  ymmSrc2
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::INS_InitVZeroUpper INS  ins  ) 
+
+ + + + + +
+   + + +

+Create a VZEROUPPER instruction

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::INS_InitXbegin INS  ins  ) 
+
+ + + + + +
+   + + +

+Generate the Xbegin.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitXchg INS  ins,
REG  src_reg,
REG  dst_reg
+
+ + + + + +
+   + + +

+Initialize an xchg instruction

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LOCALFUN VOID LEVEL_CORE::INS_InitXMMLoadOp INS  ins,
REG  dst,
REG  base,
INT32  displacement,
REG  index,
UINT  scale,
REG  seg,
xed_iclass_enum_t  iclass
+
+ + + + + +
+   + + +

+Create a XMM/MEM load-type operation. Assumes you are loading 16B quantities.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LOCALFUN VOID LEVEL_CORE::INS_InitXMMRegRegOp INS  ins,
REG  dst,
REG  src,
xed_iclass_enum_t  iclass
+
+ + + + + +
+   + + +

+Create an XMM reg/reg operation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitXor INS  ins,
REG  src,
REG  dst
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitXrstor INS  ins,
REG  base,
ADDRINT  displacement,
REG  index,
UINT32  scale
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitXsave INS  ins,
REG  base,
ADDRINT  displacement,
REG  index,
UINT32  scale
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InsertAfter INS  ins,
INS  after,
BBL  parent
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InsertBefore INS  ins,
INS  before,
BBL  parent
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::INS_InvertBr INS  ins  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
IADDR LEVEL_CORE::INS_IpRelTargetIaddr INS  ins  ) 
+
+ + + + + +
+   + + +

+Compute the target of an ip-relative data address

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsAdd const INS  ins  ) 
+
+ + + + + +
+   + + +

+returns true if this instruction is an add.

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsAnyPopF const INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
if ins is any type of popf
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsAvx INS  ins  ) 
+
+ + + + + +
+   + + +

+Return TRUE iff the ins is an AVX instruction

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsAvxOrXSave INS  ins  ) 
+
+ + + + + +
+   + + +

+Return TRUE iff the ins is an AVX or xsave-family instruction

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsBblTerminator INS  ins  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsBitTest INS  ins  ) 
+
+ + + + + +
+   + + +

+Return TRUE if the INS is a BT, or BT[CRS] instruction. These instructions have the interesting property that if they're operating on memory with a register bit-index, the bit-index can be larger than the number of bits in the memory operand, in which case the high bits are added (with suitable scaling) to the memory address.

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsBsr INS  ins  ) 
+
+ + + + + +
+   + + +

+Return TRUE if the INS is a BSR instruction

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsCJmp INS  ins  ) 
+
+ + + + + +
+   + + +

+Return TRUE if the INS is a Conditional branch instruction

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsCmov INS  ins  ) 
+
+ + + + + +
+   + + +

+Return TRUE if the INS is an integer conditional move instruction

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsCmps INS  ins  ) 
+
+ + + + + +
+   + + +

+Return TRUE if the INS is a CMPS

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsCondWrite INS  ins  ) 
+
+ + + + + +
+   + + +

+Return TRUE if the INS is does a conditional write.

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsCpuid INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if the instruction is CPUID.
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsDec const INS  ins  ) 
+
+ + + + + +
+   + + +

+returns true if this instruction is a decrement.

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsEnter INS  ins  ) 
+
+ + + + + +
+   + + +

+Return TRUE if the INS is an ENTER instruction.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::INS_IsExplicit const INS  ins,
const UINT32  pos
+
+ + + + + +
+   + + +

+Test if a reg read in "ins" at "pos" is explicit (changeable)

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::INS_IsExplicitReadOnly const INS  ins,
const UINT32  pos
+
+ + + + + +
+   + + +

+Test if a reg read in "ins" at "pos" is explicit (changeable) and read only

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsFCmov INS  ins  ) 
+
+ + + + + +
+   + + +

+Return TRUE if the INS is a float conditional move instruction

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsFloat INS  ins  ) 
+
+ + + + + +
+   + + +

+Return TRUE if the INS is an x87 floating point instruction

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsFxrestore INS  ins  ) 
+
+ + + + + +
+   + + +

+Return TRUE if the INS is an fxrstor instruction

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsFxsave INS  ins  ) 
+
+ + + + + +
+   + + +

+Return TRUE if the INS is an fxsave instruction

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::INS_IsImplicitRead const INS  ins,
const UINT32  pos
+
+ + + + + +
+   + + +

+Test if a reg read in "ins" at "pos" is implicit (i.e. can't be changed to another reg)

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::INS_IsImplicitWrite const INS  ins,
const UINT32  pos
+
+ + + + + +
+   + + +

+Test if a reg written in "ins" at "pos" is implicit (i.e. can't be changed to another reg)

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsInc const INS  ins  ) 
+
+ + + + + +
+   + + +

+returns true if this instruction is a increment.

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsIOStringOp INS  ins  ) 
+
+ + + + + +
+   + + +

+returns true if this instruction is an I/O string op.

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsIpRelAddr INS  ins  ) 
+
+ + + + + +
+   + + +

+This returns true for RIP-relative memops, NOT relative branches or calls.

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsJCXZ INS  ins  ) 
+
+ + + + + +
+   + + +

+Return TRUE if the INS is a JrCXZ instruction.

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsJNZ INS  ins  ) 
+
+ + + + + +
+   + + +

+Return TRUE if the INS is a JNZ instruction.

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsJZ INS  ins  ) 
+
+ + + + + +
+   + + +

+Return TRUE if the INS is a JZ instruction.

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsLeave INS  ins  ) 
+
+ + + + + +
+   + + +

+Return TRUE if the INS is a LEAVE instruction

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsLoop INS  ins  ) 
+
+ + + + + +
+   + + +

+Return TRUE if the INS is a LOOP instruction.

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsLoope INS  ins  ) 
+
+ + + + + +
+   + + +

+Return TRUE if the INS is a LOOPE instruction.

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsLoopne INS  ins  ) 
+
+ + + + + +
+   + + +

+Return TRUE if the INS is a LOOPNE instruction.

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsLoopType const INS  ins  ) 
+
+ + + + + +
+   + + +

+Return TRUE if the INS is a LOOP/LOOPE/LOOPNE instruction.

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsMmx INS  ins  ) 
+
+ + + + + +
+   + + +

+Return TRUE if the ins is an MMX instruction

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsMMXorXMM const INS  ins  ) 
+
+ + + + + +
+   + + +

+This is just for falcon bug compability. called by encoder -> can lead to infinite recursion

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::INS_IsMovImmToReg const INS  ins,
ADDRINT &  imm,
REG reg
+
+ + + + + +
+   + + +

+return true if the mov reads an immediate and writes a register. Also return the immediate in the reference param imm

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::INS_IsMTSafeToPatch ADDRINT  addr,
USIZE  size
+
+ + + + + +
+   + + +

+Check to see if an instruction, located in the specified range can be safely patched. The instruction is considered to be safe for patching if a) it is a one-byte instruction or b) it is fully contained in a single INS_PATCH_UNIT and its address is 2-byte aligned.

Note:
Patching multi-byte instructions involves overwriting the first 2 bytes of the instruction with a short jump to itself. The 2-byte alignment guarantees atomicity of this operation.
+
Parameters:
+ + + +
[in] addr address of the instruction
[in] size size of the instruction
+
+
Returns:
TRUE, if the instruction can be safely patched
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsPatchable INS  ins  ) 
+
+ + + + + +
+   + + +

+Return TRUE if the instruction is patchable

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsPop const INS  ins  ) 
+
+ + + + + +
+   + + +

+returns true if this instruction is a pop.

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsPopAll16 INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE if ins is a 16-bit popa instruction.
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsPopAll32 INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE if ins is a 32-bit popa instruction.
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsPopF const INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
if ins is popf
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsPopFD const INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
if ins is popfd
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsPopFQ const INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
if ins is popfd
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsPush const INS  ins  ) 
+
+ + + + + +
+   + + +

+returns true if this instruction is a push.

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsPushAll16 INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE if ins is a 16-bit pusha instruction.
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsPushAll32 INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE if ins is a 32-bit pusha instruction.
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsScas INS  ins  ) 
+
+ + + + + +
+   + + +

+Return TRUE if the INS is a SCAS

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsSetCC INS  ins  ) 
+
+ + + + + +
+   + + +

+Return TRUE if the INS is a setcc instruction

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsShift INS  ins  ) 
+
+ + + + + +
+   + + +

+returns true if this instruction is a shift.

+

+ + + + +
+ + + + + + + + + +
ADDRINT LEVEL_CORE::INS_IsSignedImmediate INS  ins  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
REG LEVEL_CORE::INS_IsSimpleRegIndirectRead INS  ins  ) 
+
+ + + + + +
+   + + +

+Does ins use simple register indirect addressing mode for the read operand?

+

Returns:
The register being indirected, or REG_INVALID() if the instruction doesn't use a simple register indirect address mode.
+
+

+ + + + +
+ + + + + + + + + +
REG LEVEL_CORE::INS_IsSimpleRegIndirectWrite INS  ins  ) 
+
+ + + + + +
+   + + +

+ins use simple register indirect addressing mode for its write operand. This is to flag instructions whose EA can be determined with a simple register mov Since this is for the write operand we know that we can't allow pop, since that pre-increments.

+

Returns:
The register being indirected, or REG_INVALID() if the instruction doesn't use a simple register indirect address mode.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::INS_IsSimpleStackOffsetRead INS  ins,
INT32 *  offset
+
+ + + + + +
+   + + +

+ins use simple stack indirect plus offset addressing mode

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::INS_IsSimpleStackOffsetWrite INS  ins,
INT32 *  offset
+
+ + + + + +
+   + + +

+ins use simple stack indirect plus offset addressing mode

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsSse INS  ins  ) 
+
+ + + + + +
+   + + +

+Return TRUE iff the ins is an SSE instruction

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsStringOp INS  ins  ) 
+
+ + + + + +
+   + + +

+returns true if this instruction is a string op.

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsUJmp INS  ins  ) 
+
+ + + + + +
+   + + +

+Return TRUE if the INS is a Unconditional branch instruction

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsXlat INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if the instruction is XLAT.
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsXrestore INS  ins  ) 
+
+ + + + + +
+   + + +

+Return TRUE if the INS is an xrstor instruction

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsXsave INS  ins  ) 
+
+ + + + + +
+   + + +

+Return TRUE if the INS is an xsave instruction

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsXsavec INS  ins  ) 
+
+ + + + + +
+   + + +

+Return TRUE if the INS is an xsavec instruction

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsXsaveFamily INS  ins  ) 
+
+ + + + + +
+   + + +

+Return TRUE iff the ins is an instruction from the xsave family

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_IsXsaveopt INS  ins  ) 
+
+ + + + + +
+   + + +

+Return TRUE if the INS is an xsaveopt instruction

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_MakeAbsolute32Address INS  ins,
IADDR  target
+
+ + + + + +
+   + + +

+rewrite the memory operand to be a memory reference using just a 32b displacement

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_MakeBaseAddress INS  ins,
REG  base
+
+ + + + + +
+   + + +

+Rewrite memop to use base register address mode

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::INS_MarkBblStart INS  ins  ) 
+
+ + + + + +
+   + + +

+Before BBLs and RTNs are created all INSs are stored in one long list. This routine marks an INS as beginning a new BBL

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_MarkedForDeletion INS  ins  ) 
+
+ + + + + +
+   + + +

+Is this instruction marked for deletion?

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::INS_MarkForDeletion INS  ins  ) 
+
+ + + + + +
+   + + +

+Mark this instruction for deletion,

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::INS_MarkRtnStart INS  ins  ) 
+
+ + + + + +
+   + + +

+Before BBLs and RTNs are created all INSs are stored in one long list. This routine marks an INS as beginning a new RTN

+

+ + + + +
+ + + + + + + + +
int LEVEL_CORE::INS_MaxDecodedBytes  ) 
+
+ + + + + +
+   + + +

+return the maximum bytes that are accessed b decoding one instruction

+

+ + + + +
+ + + + + + + + + +
USIZE LEVEL_CORE::INS_MaxProbeSize BOOL  requestRipAndAddrProbe  ) 
+
+ + + + + +
+   + + +

+

Returns:
Maximum size in bytes of a probe
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_MayWriteAllMMRegisters INS  ins  ) 
+
+ + + + + +
+   + + +

+Returns true if the ins conditionally writes all the (X/Y)MM registers.

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_MemopDisplacementOnly INS  ins  ) 
+
+ + + + + +
+   + + +

+Only displacement may be in memory operand for this opcode For example, mov eax, gs:0x8

+

+ + + + +
+ + + + + + + + + +
ADDRINT LEVEL_CORE::INS_MemoryDisplacementWidthBytes INS  ins  ) 
+
+ + + + + +
+   + + +

+Return width of memory offset in BYTES

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
LOCALFUN BOOL LEVEL_CORE::INS_MTSafeOverwrite INS  ins,
ADDRINT  addr,
USIZE  size
+
+ + + + + +
+   + + +

+Safely write (encode) the specified instruction in place of another instruction, while taking in account that other threads may concurrently execute code in this location. These threads will execute either the original instruction or the new one but never fetch a partially updated instruction.

+

Precondition:
The original instruction should be in a patch-safe location (see INS_IsMTSafeToPatch())

+The size of the new instruction should not exceed the size of the original instruction

+The new instruction must be an unconditional jump if it overwrites the original instruction partially

+
Parameters:
+ + + + +
[in] ins instruction to be written in place of the original one
[in] addr address of the original instruction
[in] size size of the original instruction
+
+
Returns:
TRUE/FALSE - success/failure
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::INS_MTSafePatchBranch OADDR  brAddr,
OADDR  tgtAddr
+
+ + + + + +
+   + + +

+Change the target of a direct branch instruction, while preserving all other instruction attributes (opcode, etc.). This operation is safe, even if another thread is executing the branch while this thread is modifying it. Other threads will jump to either the original address or the new target address but never fetch a partially updated branch.

+

Precondition:
The instruction should be in a patch-safe location (see INS_IsMTSafeToPatch())
+
Parameters:
+ + + +
[in] brAddr address of the branch
[in] tgtAddr new target address of the branch
+
+
Returns:
TRUE/FALSE - success/failure
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::INS_MTSafeWriteJmp OADDR  insAddr,
OADDR  tgtAddr
+
+ + + + + +
+   + + +

+Safely write (encode) an unconditional direct jump in place of another instruction, while taking in account that other threads may concurrently execute code in this location. These threads will execute either the original instruction or jump to the new target but never fetch a partially updated instruction.

+

Precondition:
The original instruction should be in a patch-safe location (see INS_IsMTSafeToPatch())

+The size of the original instruction should be at least the size of the unconditional direct jump (see INS_SizeOfDirectJmp())

+
Parameters:
+ + + +
[in] insAddr address of the original instruction
[in] tgtAddr target address of the branch
+
+
Returns:
TRUE/FALSE - success/failure
+
+

+ + + + +
+ + + + + + + + + +
INS LEVEL_CORE::INS_next INS  x  ) 
+
+ + + + + +
+   + + +

+return next INS in the (doubly) linked list of INSs, a common idiom to (forward) iterate over all INSs in BBL is

+for(INS ins = BBL_ins_head(bbl); INS_valid(ins); ins = INS_next(ins)

+

+ + + + +
+ + + + + + + + + +
IADDR LEVEL_CORE::INS_NextInsIaddr INS  ins  ) 
+
+ + + + + +
+   + + +

+Compute the address of the next isntruction

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
OADDR LEVEL_CORE::INS_NextInsOaddr INS  ins,
OADDR  addr
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_CORE::INS_NumAttrCrosslink INS  ins  ) 
+
+ + + + + +
+   + + +

+if an INS has any of these atributes it cannot be freed

+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_CORE::INS_NumExt INS  parent  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_OperandIsGsOrFsReg INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE if one of the instruction operands is explicitly FS or GS This does not include access via a segment register prefix used for addressing, even though that does implicitly read the segment register (and so appears in the read register set of the instruction).
+
+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_CORE::INS_orig_size INS  x  ) 
+
+ + + + + +
+   + + +

+

Returns:
Returns original size of instruction in bytes
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_orig_size_set INS  x,
UINT32  y
+
+ + + + + +
+   + + +

+Sets original size of instruction in bytes

+

+ + + + +
+ + + + + + + + + +
FLAGS LEVEL_CORE::INS_PhyFlagsMayWritten const INS  ins  ) 
+
+ + + + + +
+   + + +

+Return the physical flags (DF, OF, SF, ZF, AF, pf, CF) that this ins must or may write. Even if the ins does not always write one of these flags, it will be set in the returned FLAGS

+

Parameters:
+ + +
[in] ins The INS whose phys flags written are to be obtained
+
+
Returns:
the FLAGS the ins may or must write
+
+

+ + + + +
+ + + + + + + + + +
FLAGS LEVEL_CORE::INS_PhyFlagsMustWritten const INS  ins  ) 
+
+ + + + + +
+   + + +

+Return the physical flags (DF, OF, SF, ZF, AF, pf, CF) that this ins always (must) write. If the ins does not always write one of these flags, it will not be set in the returned FLAGS

+

Parameters:
+ + +
[in] ins The INS whose phys flags written are to be obtained
+
+
Returns:
the FLAGS the ins definitely (must) writes
+
+

+ + + + +
+ + + + + + + + + +
FLAGS LEVEL_CORE::INS_PhyFlagsRead const INS  ins  ) 
+
+ + + + + +
+   + + +

+Return the physical flags (DF, OF, SF, ZF, AF, pf, CF) that this ins reads.

+

Parameters:
+ + +
[in] ins The INS whose phys flags read are to be obtained
+
+
Returns:
the FLAGS the ins reads
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_PrefixIsGsOrFsReg INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE if instruction prefix is GS or FS
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_Prepend INS  ins,
BBL  parent
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
INS LEVEL_CORE::INS_prev INS  x  ) 
+
+ + + + + +
+   + + +

+return previous INS in the (doubly) linked list of INSs, a common idiom to (backward) iterate over all INSs in BBL is

+for(INS ins = BBL_ins_tail(bbl); INS_valid(ins); ins = INS_prev(ins)

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
string LEVEL_CORE::INS_PrintString INS  ins,
ADDRINT  addr
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
INT32 LEVEL_CORE::INS_RawEncodeIns INS  ins,
UINT8 *  buffer
+
+ + + + + +
+   + + +

+

Returns:
The encoded length in bytes, or 0 on invalid encodings.
+
+

+ + + + +
+ + + + + + + + + +
LOCALFUN string LEVEL_CORE::INS_RawInstBytes INS  ins  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_ReadsAllMMRegisters INS  ins  ) 
+
+ + + + + +
+   + + +

+Returns true if the ins reads all the (X/Y)MM registers.

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_ReadsAllMmxRegisterss INS  ins  ) 
+
+ + + + + +
+   + + +

+Returns true if the ins writes all the mmx registers.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_RegRSet INS  x,
UINT32  k,
REG  r
+
+ + + + + +
+   + + +

+set kth read register of instruction x

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_RegsReadBeforeWritten INS  ins  ) 
+
+ + + + + +
+   + + +

+Return TRUE if all registers read by the ins are read before any register is set. Currently used for optimization, so it is OK to return a false negative.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_RegWSet INS  x,
UINT32  k,
REG  r
+
+ + + + + +
+   + + +

+set kth write register of instruction x

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::INS_RemoveRep INS  ins  ) 
+
+ + + + + +
+   + + +

+Remove a (real) rep prefix from an instruction. The instruction better have one, or this will assert!

+

Parameters:
+ + +
[in] ins The instruction to change.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_RenameRegsForInlining CALLING_STANDARD  std,
INS  ins
+
+ + + + + +
+   + + +

+Rename application regs to their corresponding pin regs in ins.

+FIXME: RM REWRITE TO USE THE REGR/REGW ARRAYS

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_ReplaceMemop INS  ins,
unsigned int  operand_index,
REG  base,
ADDRDELTA  displacement,
REG  index,
ADDRINT  scale,
REG  pinseg,
REGWIDTH  ea_width
+
+ + + + + +
+   + + +

+INS_ReplaceMemop() - replace all components of memory operand

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_scan_for_memop_info INS  ins,
REG base0,
REG index,
ADDRINT &  offset,
ADDRINT &  scale,
REG base1,
REG seg0,
REG seg1
+
+ + + + + +
+   + + +

+Pull out all the operands of a memory references

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
UINT8 LEVEL_CORE::INS_set_num_reads INS  x,
UINT  v
+
+ + + + + +
+   + + +

+Sets the number of registers read by this instruction

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
UINT8 LEVEL_CORE::INS_set_num_writes INS  x,
UINT  v
+
+ + + + + +
+   + + +

+Sets the number of registers written by this instruction

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_set_reg_r INS  x,
UINT  i,
REG  r
+
+ + + + + +
+   + + +

+Sets the ith read register. This function uses INS_get_pos_r on the same register, make sure to set it (using INS_set_pos_r) before calling this function.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_set_reg_w INS  x,
UINT  i,
REG  r
+
+ + + + + +
+   + + +

+Sets the ith written register. This function uses INS_get_pos_w on the same register, make sure to set it (using INS_set_pos_w) before calling this function.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_SetBranchDisplacement INS  ins,
ADDRDELTA  disp,
UINT  length_bytes
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::INS_SetDirty INS  ins  ) 
+
+ + + + + +
+   + + +

+mark that the instruction encoding in the cache is not valid

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_SetImmediate INS  ins,
ADDRINT  imm
+
+ + + + + +
+   + + +

+Change the immediate field of an instruction. The new immediate value must fit in the existing field's width.

+

Parameters:
+ + + +
[in] ins The instruction to change.
[in] imm The new immediate value.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_SetIndexRegister INS  ins,
REG  newIndex
+
+ + + + + +
+   + + +

+rewrite the memory operand to use the given index register, rather than whatever was already there.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_SetMemoryDisplacement INS  ins,
ADDRDELTA  disp,
UINT  length_bytes
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_SetReg INS  ins,
UINT  i,
REG  r,
BOOL  read
+
+ + + + + +
+   + + +

+If read is TRUE, sets the ith read register, otherwise the ith written register

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_SetRegisterOperand INS  ins,
UINT32  operand,
REG  newReg
+
+ + + + + +
+   + + +

+rewrite a register operand to use the given register.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_SignExtend BBL  bbl,
REG  src,
REG  dst
+
+ + + + + +
+   + + +

+Append code to sign extend src to dst

+

+ + + + +
+ + + + + + + + +
USIZE LEVEL_CORE::INS_SizeOfDirectJmp  ) 
+
+ + + + + +
+   + + +

+

Returns:
size of the unconditional, direct jump instruction with a 32-bit displacement
+
+

+ + + + +
+ + + + + + + + +
USIZE LEVEL_CORE::INS_SizeOfIpRelativeMemJmp  ) 
+
+ + + + + +
+   + + +

+

Returns:
size of the unconditional, jmp [gip]offset
+
+

+ + + + +
+ + + + + + + + + +
string LEVEL_CORE::INS_StringLong INS  ins  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
string LEVEL_CORE::INS_StringShort INS  ins  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
string LEVEL_CORE::INS_StringShorter INS  ins  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
string LEVEL_CORE::INS_StringShortFancy INS  ins  ) 
+
+ + + + + +
+   + + +

+produce a string for INS extended by profile and exception information

+

+ + + + +
+ + + + + + + + + +
string LEVEL_CORE::INS_StringXed INS  ins  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_SyscallHasFallThrough INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if specified syscall instruction is modeled as a fallthrough instruction
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_SyscallIsTakenBranch INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
true if specified syscall instruction is modeled as a taken branch
+
+

+ + + + +
+ + + + + + + + + +
LOCALFUN SYSCALL_TYPE LEVEL_CORE::INS_SyscallType INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
the syscall type
+
+

+ + + + +
+ + + + + + + + + +
PREDICATE_IA32 LEVEL_CORE::INS_TestedCondition INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
the condition tested by an instruction (should only be used on instructions which do test a condition).
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::INS_Unlink INS  ins  ) 
+
+ + + + + +
+   + + +

+Unlink INS from BBL

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_ValidateEncoding const INS  ins  ) 
+
+ + + + + +
+   + + +

+Validate the encoding of ins.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_Vinsertf128FromMem INS  ins,
REG  ymmDest,
REG  ymmSrc1,
REG  base,
INT32  displacement,
REG  index,
UINT  scale,
REG  seg,
UINT8  imm8
+
+ + + + + +
+   + + +

+Generate a Vinsertf128 from memory.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_Vinsertf32x4FromMem INS  ins,
REG  zmmDest,
REG  zmmSrc1,
REG  maskReg,
REG  base,
INT32  displacement,
REG  index,
UINT  scale,
REG  seg,
UINT8  imm8
+
+ + + + + +
+   + + +

+Generate a Vinsertf32x4 from memory.

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_WritesAllMMRegisters INS  ins  ) 
+
+ + + + + +
+   + + +

+Returns true if the ins writes all the (X/Y)MM registers.

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::INS_WritesAllMmxRegisters INS  ins  ) 
+
+ + + + + +
+   + + +

+Returns true if the ins writes all the mmx registers.

+

+ + + + +
+ + + + + + + + + +
xed_decoded_inst_t* LEVEL_CORE::INS_xed_dec INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
This provides the pointer to the decoded Intel(R) X86 Encoder Decoder instruction.
+
+

+ + + + +
+ + + + + + + + + +
xed_operand_values_t* LEVEL_CORE::INS_xed_operand_values INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
This provides the pointer to the decoded Intel(R) X86 Encoder Decoder instruction operand values.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_XED_replace_dummy INS  ins,
xed_reg_enum_t  xedreg,
REG  pin_virt_reg,
xed_operand_enum_t  role,
UINT  xedpos
+
+ + + + + +
+   + + +

+Replace xedreg with pinreg in the flat regs

Returns:
foo
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_ZeroExtend BBL  bbl,
REG  src,
REG  dst
+
+ + + + + +
+   + + +

+Append code to zero extend src to dst

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
ARRAYBASE LEVEL_CORE::InsArrayBase "ins pool" ,
1024 *  1024
+
+ + + + + +
+   + + +

+The root for all BBL stripes

+

+ + + + +
+ + + + + + + + +
INS_REUSERS_MANAGER& LEVEL_CORE::InsReusersManager  ) 
+
+ + + + + +
+   + + +

+Return the single instance (object) of the INS_REUSERS_MANAGER class

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
STRIPE<INS_STRUCT_BASE> LEVEL_CORE::InsStripeBase "ins stripe base" ,
"core" ,
InsArrayBase
+
+ + + + + +
+   + + +

+The base stripe for INS

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
STRIPE<INS_STRUCT_MAP> LEVEL_CORE::InsStripeMap "ins stripe map" ,
"map" ,
InsArrayBase
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
STRIPE<INS_STRUCT_SPARSE> LEVEL_CORE::InsStripeSparse "ins stripe sparse" ,
"pincore" ,
InsArrayBase
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
STRIPE<INS_XED_STRUCT_DECODE> LEVEL_CORE::InsStripeXEDDecode "ins stripe Intel(R) X86 Encoder Decoder ia32 decoded" ,
"core" ,
InsArrayBase
+
+ + + + + +
+   + + +

+The stripe data structure for Intel(R) X86 Encoder Decoder decoded instructions.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
STRIPE<INS_XED_STRUCT_ENCODE> LEVEL_CORE::InsStripeXEDEncode "ins stripe Intel(R) X86 Encoder Decoder ia32 encoded" ,
"core" ,
InsArrayBase
+
+ + + + + +
+   + + +

+The stripe data structure for Intel(R) X86 Encoder Decoder encoded instructions.

+

+ + + + +
+ + + + + + + + + +
LOCALFUN INT32 LEVEL_CORE::INT_Immediate xed_decoded_inst_t *  xedd  ) 
+
+ + + + + +
+   + + +

+Return the immediate field of an INT instruction.

+

Parameters:
+ + +
[in] xedd The INT instruction
+
+
Returns:
Returns the immediate field.
+
+

+ + + + +
+ + + + + + + + +
UINT32 LEVEL_CORE::InvalidSysCallNumber  ) 
+
+ + + + + +
+   + + +

+Return integer that represents invalid syscall number

+

+ + + + +
+ + + + + + + + + +
xed_iclass_enum_t LEVEL_CORE::JccIclassToCmovcc INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
cmov with equivalent test as jmp
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KNOB<BOOL> LEVEL_CORE::knob_cet_mode KNOB_MODE_WRITEONCE ,
"supported:xed" ,
"xed_cet_mode" ,
"0" ,
"Enable Intel(R) CET instruction decoding" 
+
+ + + + + +
+   + + +

+Determines if Intel(R) CET instructions are enabled: 0 - Some CET instructions decode as NOPs 1 - Some NOPs decode as Intel CET instructions

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KNOB<BOOL> LEVEL_CORE::knob_mpx_mode KNOB_MODE_WRITEONCE ,
"supported:xed" ,
"xed_mpx_mode" ,
"0" ,
"Enable Intel(R) MPX instruction decoding" 
+
+ + + + + +
+   + + +

+Determines if Intel(R) MPX instructions are enabled: 0 - the instructions decode as NOPs 1 - the instructions decode as Intel MPX instructions

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KNOB<BOOL> LEVEL_CORE::KnobAttachComment KNOB_MODE_WRITEONCE ,
"supported" ,
"comment" ,
"0" ,
"Attach comments to data structures" 
+
+ + + + + +
+   + + +

+When TRUE, attach comments to data structures

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KNOB<BOOL> LEVEL_CORE::KnobRegFlagsSplit KNOB_MODE_WRITEONCE ,
"supported:regalloc" ,
"flags_split" ,
"1" ,
"split eflags representation" 
+
+ + + + + +
+   + + +

+Knob to control whether split flags representation into two: DF Other status regs Note - if KnobRegUseSahf is set to 0, then this knob has no effect - and flags reg is NOT split

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KNOB<BOOL> LEVEL_CORE::KnobRegUseSahf KNOB_MODE_WRITEONCE ,
"supported:regalloc" ,
"use_sahf" ,
"1" ,
"use sahf lahf to save restore eflags" 
+
+ + + + + +
+   + + +

+Knob to control whether to use sahf and lahf in flag fill/spill code sequence

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KNOB<BOOL> LEVEL_CORE::KnobSegmentEffectiveAddresses KNOB_MODE_WRITEONCE ,
"supported:region" ,
"segment_ea" ,
"1" ,
"Computation of effective addresses with seg override\n" 
+
+ + + + + +
+   + + +

+Switches on/off support for IARG_MEMORY_{READ,WRITE}_EA for segmented addresses

    +
  • currently supported only on Windows Linux and BSD
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KNOB<BOOL> LEVEL_CORE::KnobUseInsReusing KNOB_MODE_WRITEONCE ,
"supported:regalloc" ,
"ins_reusing" ,
"1" ,
"Enable ins reusing" 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KNOB<BOOL> LEVEL_CORE::KnobVirtualSegments KNOB_MODE_OVERWRITE ,
"supported:region" ,
"virtual_segments" ,
KNOB_ONLY_ON_UNIX ,
"Virtual access to segment registers\n" 
+
+ + + + + +
+   + + +

+Switches on/off emulation of GDT/LDT tables and access to memory through segments selectors

+

+ + + + +
+ + + + + + + + + +
PREG LEVEL_CORE::MAKE_PREG INT32  y  ) 
+
+ + + + + +
+   + + +

+Convert integer into PREG

+

+ + + + +
+ + + + + + + + + +
REGVALUE LEVEL_CORE::MAKE_PTR_REGVALUE const VOID *  y  ) 
+
+ + + + + +
+   + + +

+Convert pointer into REGVALUE

+

+ + + + +
+ + + + + + + + + +
REGVALUE LEVEL_CORE::MAKE_REGVALUE ADDRINT  y  ) 
+
+ + + + + +
+   + + +

+Convert integer into REGVALUE

+

+ + + + +
+ + + + + + + + + +
REGVALUE LEVEL_CORE::MemoryLoadRegvalue REGVALUE  address  ) 
+
+ + + + + +
+   + + +

+Read REGVALUE from the specified memory location

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
REGVALUE128 LEVEL_CORE::MemoryLoadRegvalue128 ADDRINT  address,
UINT32  sizeInBytes
+
+ + + + + +
+   + + +

+Read REGVALUE128 from the specified memory location. Truncate or zero-extend the sequence of bytes, if necessary.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
REGVALUE256 LEVEL_CORE::MemoryLoadRegvalue256 ADDRINT  address,
UINT32  sizeInBytes
+
+ + + + + +
+   + + +

+Read REGVALUE256 from the specified memory location. Truncate or zero-extend the sequence of bytes, if necessary.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
REGVALUE512 LEVEL_CORE::MemoryLoadRegvalue512 ADDRINT  address,
UINT32  sizeInBytes
+
+ + + + + +
+   + + +

+Read REGVALUE512 from the specified memory location. Truncate or zero-extend the sequence of bytes, if necessary.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::MemoryStoreRegvalue REGVALUE  address,
REGVALUE  value
+
+ + + + + +
+   + + +

+Write the specified REGVALUE into the specified memory location.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::MemoryStoreRegvalue128 ADDRINT  address,
const REGVALUE128 &  value,
UINT32  sizeInBytes
+
+ + + + + +
+   + + +

+Write the specified REGVALUE128 into the specified memory location. Truncate or zero-extend the register value, if necessary.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::MemoryStoreRegvalue256 ADDRINT  address,
const REGVALUE256 &  value,
UINT32  sizeInBytes
+
+ + + + + +
+   + + +

+Write the specified REGVALUE256 into the specified memory location. Truncate or zero-extend the register value, if necessary.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::MemoryStoreRegvalue512 ADDRINT  address,
const REGVALUE512 &  value,
UINT32  sizeInBytes
+
+ + + + + +
+   + + +

+Write the specified REGVALUE512 into the specified memory location. Truncate or zero-extend the register value, if necessary.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LOCALVAR MESSAGE_TYPE LEVEL_CORE::MessageTypeLogEncoding "log_encoding" ,
"" ,
false ,
false ,
false ,
true ,
LOGTYPE_LOGFILE ,
"pin log: encodings" 
+
+ + + + + +
+   + + +

+messages associated with fast buffering API

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LOCALVAR MESSAGE_TYPE LEVEL_CORE::MessageTypeLogInsReuse "log_ins_reuse" ,
"" ,
false ,
false ,
false ,
false ,
LOGTYPE_LOGFILE ,
"pin log: ins_reusing" 
+
+ + + + + +
+   + + +

+messages associated with fast buffering API

+

+ + + + +
+ + + + + + + + +
SYSCALL_STANDARD LEVEL_CORE::NativeSysCallStd  ) 
+
+ + + + + +
+   + + +

+Return (single) system call standard for the current OS and architecture.

+

+ + + + +
+ + + + + + + + + +
REG LEVEL_CORE::PREG_2_REG PREG  pr  ) 
+
+ + + + + +
+   + + +

+Convert a physical register into the corresponding virtual register

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::REG_IsRewrittenSegmentReg REG  reg  ) 
+
+ + + + + +
+   + + +

+Feels as if there should be a better group for this? Is the register a rewritten segment register?

+

+ + + + +
+ + + + + + + + + +
INT32 LEVEL_CORE::REG_NumSysCallArgRegs SYSCALL_STANDARD  std = NativeSysCallStd()  ) 
+
+ + + + + +
+   + + +

+Number of syscall arguments passed in registers.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
const UINT64& LEVEL_CORE::REG_ReadKMaskFromFxsave const REG  kmask,
const FPSTATE *  fpstate
+
+ + + + + +
+   + + +

+Read an K mask register value from an 'fxsave' data structure.

+

Parameters:
+ + + +
[in] kmask The K mask register number.
[in] fpstate The 'fxsave' data structure where the K mask register value is read from.
+
+
Returns:
The value of the K mask register.
+
+

+ + + + +
+ + + + + + + + + +
REGVALUE LEVEL_CORE::REG_ReadPseudo REG  reg  ) 
+
+ + + + + +
+   + + +

+Read the value of a pseudo register.

+

Parameters:
+ + +
[in] reg The pseudo register number.
+
+
Returns:
The value of the pseudo register.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
REGVALUE LEVEL_CORE::REG_ReadShortFpFromFpstate REG  reg,
const FPSTATE *  fpstate
+
+ + + + + +
+   + + +

+Read a short FP register value from an 'fxsave' data structure.

+

Parameters:
+ + + +
[in] reg The FP register number.
[in] fpstate The 'fxsave' data structure where the FP register value is read from.
+
+
Returns:
The value of the FP register.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
REGVALUE LEVEL_CORE::REG_ReadShortFpFromFxsave REG  reg,
const FXSAVE *  fxsave
+
+ + + + + +
+   + + +

+Read a short FP register value from an 'fxsave' data structure.

+

Parameters:
+ + + +
[in] reg The FP register number.
[in] fpstate The 'fxsave' data structure where the FP register value is read from.
+
+
Returns:
The value of the FP register.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
const REGVALUE128& LEVEL_CORE::REG_ReadStFromFpstate REG  reg,
const FPSTATE *  fpstate
+
+ + + + + +
+   + + +

+Read a stacked FP register value from an 'fpstate' data structure.

+

Parameters:
+ + + +
[in] reg The FP register number.
[in] fpstate The 'fpstate' data structure where the FP register value is read from.
+
+
Returns:
The value of the FP register.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::REG_ReadStFromFpstate REG  reg,
const FPSTATE *  fpstate,
VOID *  val
+
+ + + + + +
+   + + +

+Read a stacked FP register value from an 'fxsave' data structure.

+

Parameters:
+ + + + +
[in] reg The FP register number.
[in] fpstate The 'fxsave' data structure where the FP register value is read from.
[out] val The value of the FP register.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
const REGVALUE128& LEVEL_CORE::REG_ReadStFromFxsave REG  reg,
const FXSAVE *  fxsave
+
+ + + + + +
+   + + +

+Read a stacked FP register value from an 'fxsave' data structure.

+

Parameters:
+ + + +
[in] reg The FP register number.
[in] fxsave The legacy 'fxsave' data structure where the FP register value is read from.
+
+
Returns:
The value of the FP register.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::REG_ReadStFromFxsave REG  reg,
const FXSAVE *  fxsave,
VOID *  val
+
+ + + + + +
+   + + +

+Read a stacked FP register value from an 'fxsave' data structure.

+

Parameters:
+ + + + +
[in] reg The FP register number.
[in] fxsave The legacy 'fxsave' data structure where the FP register value is read from.
[out] val The value of the FP register.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::REG_ReadXmmFromFxsave const REG  xmm,
const FPSTATE *  fpstate,
VOID *  val
+
+ + + + + +
+   + + +

+Read an XMM register value from an 'fxsave' data structure.

+

Parameters:
+ + + + +
[in] xmm The XMM register number.
[in] fpstate The 'fxsave' data structure where the XMM register value is read from.
[out] val The value of the XMM register.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
const REGVALUE128& LEVEL_CORE::REG_ReadXmmFromFxsave const REG  xmm,
const FPSTATE *  fpstate
+
+ + + + + +
+   + + +

+Read an XMM register value from an 'fxsave' data structure.

+

Parameters:
+ + + +
[in] xmm The XMM register number.
[in] fpstate The 'fxsave' data structure where the XMM register value is read from.
+
+
Returns:
The value of the XMM register.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
REGVALUE256 LEVEL_CORE::REG_ReadYmmFromFxsave const REG  ymm,
const FPSTATE *  fpstate
+
+ + + + + +
+   + + +

+Read an YMM register value from an 'xsave' data structure.

+

Parameters:
+ + + +
[in] ymm The YMM register number.
[in] fpstate The 'xsave' data structure where the YMM register value is read from.
+
+
Returns:
The value of the YMM register.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::REG_ReadYmmFromFxsave const REG  ymm,
const FPSTATE *  fpstate,
VOID *  val
+
+ + + + + +
+   + + +

+Read an YMM register value from an 'xsave' data structure.

+

Parameters:
+ + + + +
[in] ymm The YMM register number.
[in] fpstate The 'xsave' data structure where the YMM register value is read from.
[out] val The value of the YMM register.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
const REGVALUE512 LEVEL_CORE::REG_ReadZmmFromFxsave const REG  zmm,
const FPSTATE *  fpstate
+
+ + + + + +
+   + + +

+Read an ZMM register value from an 'fxsave' data structure.

+

Parameters:
+ + + +
[in] zmm The ZMM register number.
[in] fpstate The 'fxsave' data structure where the ZMM register value is read from.
+
+
Returns:
The value of the ZMM register.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::REG_ReadZmmFromFxsave const REG  zmm,
const FPSTATE *  fpstate,
VOID *  val
+
+ + + + + +
+   + + +

+Read an ZMM register value from an 'fxsave' data structure.

+

Parameters:
+ + + + +
[in] zmm The ZMM register number.
[in] fpstate The 'fxsave' data structure where the ZMM register value is read from.
[out] val The value of the ZMM register.
+
+
+

+ + + + +
+ + + + + + + + + +
REG LEVEL_CORE::REG_RenameAppReg const REG  reg  ) 
+
+ + + + + +
+   + + +

+Given an application reg return its corresponding pin register

+

+ + + + +
+ + + + + + + + + +
REG LEVEL_CORE::REG_RenamePinReg const REG  reg  ) 
+
+ + + + + +
+   + + +

+Give a pin reg return its corresponding application register

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::REG_ShouldBeRenamed CALLING_STANDARD  std,
REG  reg
+
+ + + + + +
+   + + +

+Find out if reg should be renamed in the inlined analysis routine.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::REG_StoreKMaskToFxsave const REG  kmask,
const UINT64 &  val,
FPSTATE *  fpstate
+
+ + + + + +
+   + + +

+Store an K mask register value to an 'fxsave' data structure.

+

Parameters:
+ + + + +
[in] kmask The K mask register number.
[in] val The value of the K mask register.
[out] fpstate The 'fxsave' data structure which receives the K mask register value.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::REG_StorePseudo REG  reg,
REGVALUE  val
+
+ + + + + +
+   + + +

+Write the value of a pseudo register.

+

Parameters:
+ + + +
[in] reg The pseudo register number.
[in] val The value.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::REG_StoreShortFpToFpstate REG  reg,
const REGVALUE  val,
FPSTATE *  fpstate
+
+ + + + + +
+   + + +

+Store a short FP register value to an 'fxsave' data structure.

+

Parameters:
+ + + + +
[in] reg The FP register number.
[in] val The value of the FP register.
[out] fpstate The 'fpstate' data structure which receives the FP register value.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::REG_StoreShortFpToFxsave REG  reg,
const REGVALUE  val,
FXSAVE *  fxsave
+
+ + + + + +
+   + + +

+Store a short FP register value to an 'fxsave' data structure.

+

Parameters:
+ + + + +
[in] reg The FP register number.
[in] val The value of the FP register.
[out] fxsave The 'fxsave' data structure which receives the FP register value.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::REG_StoreStToFpstate REG  reg,
const REGVALUE128 &  val,
FPSTATE *  fpstate
+
+ + + + + +
+   + + +

+Store a stacked FP register value to an 'fxsave' data structure.

+

Parameters:
+ + + + +
[in] reg The FP register number.
[in] val The value of the FP register.
[out] fpstate The 'fpstate' data structure which receives the FP register value.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::REG_StoreStToFpstate REG  reg,
const VOID *  val,
FPSTATE *  fpstate
+
+ + + + + +
+   + + +

+Store a stacked FP register value to an 'fxsave' data structure.

+

Parameters:
+ + + + +
[in] reg The FP register number.
[in] val The value of the FP register.
[out] fpstate The 'fpstate' data structure which receives the FP register value.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::REG_StoreStToFxsave REG  reg,
const REGVALUE128 &  val,
FXSAVE *  fxsave
+
+ + + + + +
+   + + +

+Store a stacked FP register value to an 'fxsave' data structure.

+

Parameters:
+ + + + +
[in] reg The FP register number.
[in] val The value of the FP register.
[out] fxsave The 'fxsave' data structure which receives the FP register value.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::REG_StoreStToFxsave REG  reg,
const VOID *  val,
FXSAVE *  fxsave
+
+ + + + + +
+   + + +

+Store a stacked FP register value to an 'fxsave' data structure.

+

Parameters:
+ + + + +
[in] reg The FP register number.
[in] val The value of the FP register.
[out] fxsave The 'fxsave' data structure which receives the FP register value.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::REG_StoreXmmToFxsave const REG  xmm,
const VOID *  val,
FPSTATE *  fpstate
+
+ + + + + +
+   + + +

+Store an XMM register value to an 'fxsave' data structure.

+

Parameters:
+ + + + +
[in] xmm The XMM register number.
[in] val The value of the XMM register.
[out] fpstate The 'fxsave' data structure which receives the XMM register value.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::REG_StoreXmmToFxsave const REG  xmm,
const REGVALUE128 &  val,
FPSTATE *  fpstate
+
+ + + + + +
+   + + +

+Store an XMM register value to an 'fxsave' data structure.

+

Parameters:
+ + + + +
[in] xmm The XMM register number.
[in] val The value of the XMM register.
[out] fpstate The 'fxsave' data structure which receives the XMM register value.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::REG_StoreYmmToFxsave const REG  ymm,
const VOID *  val,
FPSTATE *  fpstate
+
+ + + + + +
+   + + +

+Store an YMM register value to an 'xsave' data structure.

+

Parameters:
+ + + + +
[in] ymm The YMM register number.
[in] val The value of the YMM register.
[out] fpstate The 'xsave' data structure which receives the YMM register value.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::REG_StoreYmmToFxsave const REG  ymm,
const REGVALUE256 &  val,
FPSTATE *  fpstate
+
+ + + + + +
+   + + +

+Store an YMM register value to an 'xsave' data structure.

+

Parameters:
+ + + + +
[in] ymm The YMM register number.
[in] val The value of the YMM register.
[out] fpstate The 'xsave' data structure which receives the YMM register value.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::REG_StoreZmmToFxsave const REG  zmm,
const VOID *  val,
FPSTATE *  fpstate
+
+ + + + + +
+   + + +

+Store an ZMM register value to an 'fxsave' data structure.

+

Parameters:
+ + + + +
[in] zmm The ZMM register number.
[in] val The value of the ZMM register.
[out] fpstate The 'fxsave' data structure which receives the ZMM register value.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::REG_StoreZmmToFxsave const REG  zmm,
const REGVALUE512 &  val,
FPSTATE *  fpstate
+
+ + + + + +
+   + + +

+Store an ZMM register value to an 'fxsave' data structure.

+

Parameters:
+ + + + +
[in] zmm The ZMM register number.
[in] val The value of the ZMM register.
[out] fpstate The 'fxsave' data structure which receives the ZMM register value.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
REG LEVEL_CORE::REG_SysCallArgReg INT32  ith_arg,
SYSCALL_STANDARD  std = NativeSysCallStd()
+
+ + + + + +
+   + + +

+Return the register that holds the ith syscall argument

+

+ + + + +
+ + + + + + + + + +
REG LEVEL_CORE::REG_SysCallErrno SYSCALL_STANDARD  std = NativeSysCallStd()  ) 
+
+ + + + + +
+   + + +

+Return the register that holds the errno value from a system call.

+

+ + + + +
+ + + + + + + + + +
REG LEVEL_CORE::REG_SysCallNumber SYSCALL_STANDARD  std = NativeSysCallStd()  ) 
+
+ + + + + +
+   + + +

+Return the register that holds the syscall number

+

+ + + + +
+ + + + + + + + + +
REG LEVEL_CORE::REG_SysCallResult SYSCALL_STANDARD  std = NativeSysCallStd()  ) 
+
+ + + + + +
+   + + +

+Return the register that holds the syscall result

+

+ + + + +
+ + + + + + + + + +
REGSET LEVEL_CORE::REGSET_SyscalleeSavedGr SYSCALL_STANDARD  std = NativeSysCallStd()  ) 
+
+ + + + + +
+   + + +

+Registers saved in syscall

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::REGSYM_InsertBefore SYM  sym,
SYM  before,
IMG  parent
+
+ + + + + +
+   + + +

+Insert Before

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::REGSYM_Unlink SYM  sym  ) 
+
+ + + + + +
+   + + +

+unlink a SYM from an IMG

+

+ + + + +
+ + + + + + + + +
REL_TYPE LEVEL_CORE::REL_AddrintRel  ) 
+
+ + + + + +
+   + + +

+rel type for an address

+

+ + + + +
+ + + + + + + + +
REL LEVEL_CORE::REL_Alloc  ) 
+
+ + + + + +
+   + + +

+Allocate a REL

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::REL_Check REL  rel  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + +
REL LEVEL_CORE::REL_First  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::REL_Free REL  rel  ) 
+
+ + + + + +
+   + + +

+Deallocate an unlinked REL

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
LOCALFUN VOID LEVEL_CORE::REL_LinkChunkoff REL  rel,
CHUNK  parent,
UINT32  offset
+
+ + + + + +
+   + + +

+Unlink REL from CHUNK

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::REL_MoveoverBblValues const BBL  src,
const BBL  dst
+
+ + + + + +
+   + + +

+Move over all relocations that have values pointing to src to become pointing to dst.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::REL_MoveoverInsValues const INS  src,
const INS  dst
+
+ + + + + +
+   + + +

+Move over all relocations that have values pointing to src to become pointing to dst.

+

+ + + + +
+ + + + + + + + + +
REL LEVEL_CORE::REL_Next REL  rel  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
string LEVEL_CORE::REL_StringShort REL  rel  ) 
+
+ + + + + +
+   + + +

+convert a REL into a printable string - short version (no newline)

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::REL_TargetSetAndLinkChunkoff REL  rel,
REL_TYPE  type,
CHUNK  parent,
UINT32  offset
+
+ + + + + +
+   + + +

+Append REL to SEC

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::REL_TargetSetAndLinkIns REL  rel,
REL_TYPE  type,
INS  ins
+
+ + + + + +
+   + + +

+Initialize the specified relocation element and link it to the specified instruction

Parameters:
+ + + + +
[in] rel relocation element to be initialized
[in] type type of the relocation. This must be a REL_TYPE_INS_* type
[in] ins istruction to be patched by the relocation
+
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::REL_UnlinkChunk REL  rel  ) 
+
+ + + + + +
+   + + +

+Unlink REL from CHUNK

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::REL_ValueEqual REL  rel,
REL  master
+
+ + + + + +
+   + + +

+compare the value of two relocations this contains a little hack as we do not want to switch through the value types

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::REL_ValueSetBbl REL  rel,
BBL  bbl
+
+ + + + + +
+   + + +

+set the value of a REL (to SYM)

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::REL_ValueSetChunk REL  rel,
CHUNK  chunk
+
+ + + + + +
+   + + +

+set the value of a REL (to SYM)

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::REL_ValueSetChunkoff REL  rel,
CHUNK  chunk,
USIZE  off
+
+ + + + + +
+   + + +

+set the value of a REL (to SYM) this is the third step after allocating a REL

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::REL_ValueSetGot REL  rel,
GOT  got
+
+ + + + + +
+   + + +

+set the value of a REL (to GP)

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::REL_ValueSetIns REL  rel,
INS  ins
+
+ + + + + +
+   + + +

+set the value of a REL (to SYM)

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::REL_ValueSetLdef REL  rel,
LDEF  ldef
+
+ + + + + +
+   + + +

+set the value of a REL (to GP)

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::REL_ValueSetSymoff REL  rel,
SYM  sym,
UINT32  off
+
+ + + + + +
+   + + +

+set the value of a REL (to SEC + offset)

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::REL_ValueSetUint32 REL  rel,
UINT32  v
+
+ + + + + +
+   + + +

+set the value of a REL (to 32 bit constant)

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::REL_ValueSetUint64 REL  rel,
UINT64  v
+
+ + + + + +
+   + + +

+set the value of a REL (to 64 bit constant)

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::REL_ValueSetZero REL  rel  ) 
+
+ + + + + +
+   + + +

+set the value of a REL (to ZERO)

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::REL_ValueUnlink REL  rel,
BOOL  relax
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
ARRAYBASE LEVEL_CORE::RelArrayBase "rel pool" ,
1024 *  1024
+
+ + + + + +
+   + + +

+The root for all REL stripes

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
STRIPE<REL_STRUCT_BASE> LEVEL_CORE::RelStripeBase "rel stripe base" ,
"core" ,
RelArrayBase
+
+ + + + + +
+   + + +

+The base stripe for REL

+

+ + + + +
+ + + + + + + + +
RTN LEVEL_CORE::RTN_Alloc  ) 
+
+ + + + + +
+   + + +

+Allocate a new RTN

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::RTN_Append RTN  rtn,
SEC  parent
+
+ + + + + +
+   + + +

+Append RTN to SEC

+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_CORE::RTN_ByteSize RTN  rtn  ) 
+
+ + + + + +
+   + + +

+Compute number of static INSs inside RTN

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::RTN_ExtInsertAfter EXT  ext,
EXT  after,
RTN  parent
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::RTN_ExtPrepend EXT  ext,
RTN  parent
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::RTN_Free RTN  rtn  ) 
+
+ + + + + +
+   + + +

+Deallocate unlinked RTN

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::RTN_InsertAfter RTN  rtn,
RTN  after,
SEC  parent
+
+ + + + + +
+   + + +

+Insert RTN after another RTN within a SEC

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::RTN_InsertBefore RTN  rtn,
RTN  before,
SEC  parent
+
+ + + + + +
+   + + +

+Insert RTN before another RTN within a SEC

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::RTN_IsLeaf RTN  rtn  ) 
+
+ + + + + +
+   + + +

+Does the given routine have a call? If not it is a 'leaf'. Look for basic block of type BBL_TYPE_CALL*

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::RTN_MakeBbls RTN  rtn  ) 
+
+ + + + + +
+   + + +

+Build basic blocks inside routine

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::RTN_Mark1Bbls RTN  rtn  ) 
+
+ + + + + +
+   + + +

+Set the First marker on all bbls

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::RTN_MoveBbls RTN  src,
RTN  dst
+
+ + + + + +
+   + + +

+Move bbls from one container to another container routine

+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_CORE::RTN_NumAttrCrosslink RTN  rtn  ) 
+
+ + + + + +
+   + + +

+if a bbl has any of these atributes it cannot be freed

+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_CORE::RTN_NumBbl RTN  rtn  ) 
+
+ + + + + +
+   + + +

+Compute number of static BBLs inside RTN

+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_CORE::RTN_NumExt RTN  parent  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_CORE::RTN_numIns RTN  rtn  ) 
+
+ + + + + +
+   + + +

+Compute number of static INSs inside RTN

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::RTN_Prepend RTN  rtn,
SEC  parent
+
+ + + + + +
+   + + +

+Prepend RTN to SEC

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::RTN_RemoveAllExt RTN  rtn  ) 
+
+ + + + + +
+   + + +

+Removes all extensions from the received routine.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::RTN_SetVaddr RTN  rtn,
IADDR  iaddr
+
+ + + + + +
+   + + +

+set the vaddr of the RTN

+

+ + + + +
+ + + + + + + + + +
string LEVEL_CORE::RTN_StringLong RTN  rtn  ) 
+
+ + + + + +
+   + + +

+produce string for RTN

+

+ + + + +
+ + + + + + + + + +
string LEVEL_CORE::RTN_StringLongDataFancy RTN  rtn  ) 
+
+ + + + + +
+   + + +

+produce string for RTN also listing BBLs

+

+ + + + +
+ + + + + + + + + +
string LEVEL_CORE::RTN_StringLongFancy RTN  rtn  ) 
+
+ + + + + +
+   + + +

+produce string for RTN also listing BBLs

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::RTN_TypifyBblsAndCreateEdgs RTN  rtn  ) 
+
+ + + + + +
+   + + +

+determing BBL type based on last INS and create sucessor EDGs

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::RTN_Unlink RTN  rtn  ) 
+
+ + + + + +
+   + + +

+Unlink RTN from a SEC

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::RTN_UnmakeBbls RTN  rtn  ) 
+
+ + + + + +
+   + + +

+Put all routine instructions in one basic block

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::RTN_Unmark1Bbls RTN  rtn  ) 
+
+ + + + + +
+   + + +

+Reset all the markers on all the bbls

+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_CORE::RTN_VerifyFallthroughs RTN  rtn  ) 
+
+ + + + + +
+   + + +

+Verify that all LINK, FALSE, and NORMAL EDGs are pointing to the next BBL Includes ugly hackery for two (conditional) calls in one bundle

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
ARRAYBASE LEVEL_CORE::RtnArrayBase "rtn pool" ,
64 *  1024
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
STRIPE<RTN_STRUCT_BASE> LEVEL_CORE::RtnStripeBase "rtn stripe base" ,
"core" ,
RtnArrayBase
+
+ + + + + +
+   + + +

+X

+

+ + + + +
+ + + + + + + + +
SEC LEVEL_CORE::SEC_Alloc  ) 
+
+ + + + + +
+   + + +

+Allocate a new SEC and clear some of its fields. FIXME: fields clearing needs to be more extensive

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::SEC_Append SEC  sec,
IMG  parent
+
+ + + + + +
+   + + +

+append a SEC to IMG

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::SEC_Check SEC  sec  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::SEC_ComputeNewSecDataExec SEC  sec,
VOID *  data
+
+ + + + + +
+   + + +

+This function does the final encoding into the code cache

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
ADDRINT LEVEL_CORE::SEC_ComputeOutputSizeOfExecutableSec SEC  sec,
const ADDRINT  secStart
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::SEC_ContainsIaddr SEC  sec,
IADDR  iaddr
+
+ + + + + +
+   + + +

+Test whether a SEC's virtual address space includes an IADDR

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::SEC_ContainsIaddrEndInclusive SEC  sec,
IADDR  iaddr
+
+ + + + + +
+   + + +

+get a piece of data directly from the incoming SEC data

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::SEC_ContainsOaddr SEC  sec,
OADDR  oaddr
+
+ + + + + +
+   + + +

+Test whether a SEC's outgoing virtual address space includes an OADDR

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::SEC_ContainsOaddrEndInclusive SEC  sec,
OADDR  oaddr
+
+ + + + + +
+   + + +

+Test whether a SEC's outgoing virtual address space includes an OADDR

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::SEC_CreateOriginalIns SEC  sec  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
CHUNK LEVEL_CORE::SEC_FindChunkByIaddr SEC  sec,
IADDR  iaddr
+
+ + + + + +
+   + + +

+Find a particular routine by iaddr in the given section

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
INS LEVEL_CORE::SEC_FindOriginalTargetIns SEC  sec,
INS  ins
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
RTN LEVEL_CORE::SEC_FindRtnByIaddr SEC  sec,
IADDR  iaddr
+
+ + + + + +
+   + + +

+Find a particular routine by iaddr in the given section

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
RTN LEVEL_CORE::SEC_FindRtnByName SEC  sec,
const string &  name
+
+ + + + + +
+   + + +

+Find a particular routine by name in the given section

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BBL LEVEL_CORE::SEC_FindTargetBbl SEC  sec,
INS  ins
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::SEC_Free SEC  sec  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + +
VOID LEVEL_CORE::SEC_GarbageCollect  ) 
+
+ + + + + +
+   + + +

+The not yet implemented SEC garbage collector. It is supposed to add all unallocated SECs to the SEC freelist

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
INT32 LEVEL_CORE::SEC_GetIDataByOffsetUINT32 SEC  sec,
UINT64  offset
+
+ + + + + +
+   + + +

+get a piece of data directly from the incoming SEC data

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
UINT64 LEVEL_CORE::SEC_GetIDataByOffsetUINT64 SEC  sec,
UINT64  offset
+
+ + + + + +
+   + + +

+get a piece of data directly from the incoming SEC data

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
INT32 LEVEL_CORE::SEC_GetIDataINT32 SEC  sec,
IADDR  iaddr
+
+ + + + + +
+   + + +

+get a piece of data directly from the incoming SEC data

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
UINT64 LEVEL_CORE::SEC_GetIDataUINT64 SEC  sec,
IADDR  iaddr
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
INT32 LEVEL_CORE::SEC_GetUnalignedIDataByOffsetINT32 SEC  sec,
UINT64  offset
+
+ + + + + +
+   + + +

+get an unaligned piece of data directly from the incoming SEC data

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
UINT64 LEVEL_CORE::SEC_GetUnalignedIDataByOffsetUINT64 SEC  sec,
USIZE  offset
+
+ + + + + +
+   + + +

+get an unaligned piece of data directly from the incoming SEC data

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::SEC_IncNewSize SEC  sec,
USIZE  size
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::SEC_InitDynamicCodeSection SEC  newSec,
IADDR  iaddr,
USIZE  size
+
+ + + + + +
+   + + +

+Initialize an dynamic code section after it has been allocated. An dynamic code section contains dynamically created code, e.g. Jitted functions.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::SEC_InitOriginalSec SEC  sec,
const string &  name,
UINT32  index,
IADDR  iaddr,
USIZE  offset,
USIZE  size,
const VOID *  data,
UINT32  alignment,
BOOL  mapped,
BOOL  on_disk,
const VOID *  sectheader
+
+ + + + + +
+   + + +

+initialize an original SEC after it has been allocated. An original SEC is one the corresponds to a Section in the input Image.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::SEC_InsertAfter SEC  sec,
SEC  after,
IMG  parent
+
+ + + + + +
+   + + +

+insert SEC after another sec within an IMG

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::SEC_InsertBefore SEC  sec,
SEC  before,
IMG  parent
+
+ + + + + +
+   + + +

+insert SEC before another sec within an IMG

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
INS LEVEL_CORE::SEC_MapIaddrToOriginalIns SEC  sec,
IADDR  iaddr
+
+ + + + + +
+   + + +

+Map an IADDR to an original INS This routine should only be called up to the point where the Image is being modified

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
IADDR LEVEL_CORE::SEC_MapOriginalInsToIaddr SEC  sec,
INS  ins
+
+ + + + + +
+   + + +

+Map an original INS to its IADDR.

+

+ + + + +
+ + + + + + + + + +
UINT32 LEVEL_CORE::SEC_NumRtn SEC  sec  ) 
+
+ + + + + +
+   + + +

+return the number of RTNs for SEC

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::SEC_Prepend SEC  sec,
IMG  parent
+
+ + + + + +
+   + + +

+prepend a SEC to IMG

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::SEC_SetDataCopy SEC  sec  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::SEC_SetNewAddressAndOffset SEC  sec,
OADDR  oaddr,
USIZE  offset
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::SEC_SetNewData SEC  sec,
VOID *  data
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::SEC_SetNewSize SEC  sec,
USIZE  size
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::SEC_StateSet SEC  sec,
SEC_STATE  state
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
string LEVEL_CORE::SEC_String SEC_STATE  state  ) 
+
+ + + + + +
+   + + +

+convert a SEC_STATE into a printable string

+

+ + + + +
+ + + + + + + + + +
string LEVEL_CORE::SEC_String SEC_TYPE  type  ) 
+
+ + + + + +
+   + + +

+convert a SEC_TYPE into a printable string

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
string LEVEL_CORE::SEC_StringDataDumpI SEC  sec,
UINT32  width
+
+ + + + + +
+   + + +

+convert a SECs incoming data into a printable string

+

+ + + + +
+ + + + + + + + + +
string LEVEL_CORE::SEC_StringDis SEC  sec  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
string LEVEL_CORE::SEC_StringLong SEC  sec  ) 
+
+ + + + + +
+   + + +

+convert a SEC into a printable string

+

+ + + + +
+ + + + + + + + + +
string LEVEL_CORE::SEC_StringLongWithChunks SEC  sec  ) 
+
+ + + + + +
+   + + +

+convert a SEC into a printable string -

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::SEC_Unlink SEC  sec  ) 
+
+ + + + + +
+   + + +

+unlink a SEC from an IMG

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
ARRAYBASE LEVEL_CORE::SecArrayBase "sec pool" ,
1024 
+
+ + + + + +
+   + + +

+The root for all SEC stripes

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
STRIPE<SEC_STRUCT_BASE> LEVEL_CORE::SecStripeBase "sec stripe base" ,
"core" ,
SecArrayBase
+
+ + + + + +
+   + + +

+The base stripe for SEC

+

+ + + + +
+ + + + + + + + + +
string LEVEL_CORE::SEGMENT_StringShort SEGMENT_TYPE  segment  ) 
+
+ + + + + +
+   + + +

+convert a SEGMENT_TYPE into a printable string

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::SetDecoderExceptionInfo EXCEPTION_INFO pExceptInfo,
EXCEPTION_CODE  exceptCode,
ADDRINT  addr,
size_t  size
+
+ + + + + +
+   + + +

+Store the exception information that describes the specified failure in decoding of an instruction.

Parameters:
+ + + + + +
[out] pExceptInfo pointer to the structure that receives the exception information
[in] exceptCode exception code that specifies the cause of the failure
[in] addr address of the first byte of an invalid/inaccessible instruction
[in] size number of successfully fetched instruction's bytes that were passed to the decoder
+
+
+

+ + + + +
+ + + + + + + + + +
ADDRDELTA LEVEL_CORE::SignedOffset ADDRINT  imm  ) 
+
+ + + + + +
+   + + +

+return imm as a signed offset

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BBL LEVEL_CORE::SimulateRetPopToMem INS  ret,
ADDRINT  offset
+
+ + + + + +
+   + + +

+Simulate a return for the passed call instruction

+

+ + + + +
+ + + + + + + + + +
BBL LEVEL_CORE::SimulateRetPush INS  call  ) 
+
+ + + + + +
+   + + +

+Simulate a return for the passed call instruction

+

+ + + + +
+ + + + + + + + + +
LOCALFUN string LEVEL_CORE::StrXedEnc const xed_encoder_request_t *  r  ) 
+
+ + + + + +
+   + + +

+

Returns:
a string for the encode request
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::SYM_AddContainedSymbol SYM  sym,
SYM  contained_sym
+
+ + + + + +
+   + + +

+Concatenates a symbol to the list of contained symbol for this symbol

+

+ + + + +
+ + + + + + + + +
SYM LEVEL_CORE::SYM_Alloc  ) 
+
+ + + + + +
+   + + +

+Allocate a SYM

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::SYM_Check SYM  sym  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::SYM_Free SYM  sym  ) 
+
+ + + + + +
+   + + +

+Deallocate a SYM

+

+ + + + +
+ + + + + + + + +
VOID LEVEL_CORE::SYM_GarbageCollect  ) 
+
+ + + + + +
+   + + +

+SYM garbage collector

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::SYM_Init SYM  sym,
VAL_TYPE  type,
BOOL  dynamic,
SYM_IFUNC_TYPE  ifunc_type,
const string &  name,
UINT32  index,
IADDR  iaddr,
UINT32  isize,
const VOID *  symbheader,
BOOL  global,
BOOL  original,
UINT32  string_offset
+
+ + + + + +
+   + + +

+Init SYM (does not have to be original)

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::SYM_SetSize SYM  sym,
UINT32  size
+
+ + + + + +
+   + + +

+Set the size of an SYM

+

+ + + + +
+ + + + + + + + + +
string LEVEL_CORE::SYM_StringShort SYM  sym  ) 
+
+ + + + + +
+   + + +

+Convert a SYM into a printable string - short version (no newline)

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
ARRAYBASE LEVEL_CORE::SymArrayBase "sym pool" ,
128 *  1024
+
+ + + + + +
+   + + +

+The root for all SYM stripes

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
STRIPE<SYM_STRUCT_BASE> LEVEL_CORE::SymStripeBase "sym stripe base" ,
"core" ,
SymArrayBase
+
+ + + + + +
+   + + +

+The base stripe for SYM

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
USIZE LEVEL_CORE::ThreadAwareInsEncoder INS  ins,
ADDRINT  address
+
+ + + + + +
+   + + +

+Encode an instruction at a given address safely by corrupting the first byte to trap if executed while encoding the instruction backwards Thread safe encoding prototype

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::ThreadAwareMemcpy VOID *  dst,
const VOID *  src,
USIZE  size
+
+ + + + + +
+   + + +

+Before writing over a piece of memory, first fill it with trap instructions to fault to a signal handler while the bits are being overwritten from the last byte to the first. This is needed for a threaded program that might fetch the first few bytes of the instruction while another thread is modifying the bits at that same point

+

+ + + + +
+ + + + + + + + +
BOOL LEVEL_CORE::UseSahfLahfSequence  ) 
+
+ + + + + +
+   + + +

+

Returns:
if the lahf/sahf sequence should be used
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::VAL_Equal VAL_TYPE  t1,
const VAL *  v1,
VAL_TYPE  t2,
const VAL *  v2
+
+ + + + + +
+   + + +

+compare two values for equality this is currently a hack which needs some work

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
OADDR LEVEL_CORE::VAL_Oaddr VAL_TYPE  type,
const VAL *  val,
IMG  img
+
+ + + + + +
+   + + +

+generate new outigoing address/value for val

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
string LEVEL_CORE::VAL_StringShort VAL_TYPE  type,
const VAL *  val,
BOOL  tiny
+
+ + + + + +
+   + + +

+convert a value component into a printable string - short version (no newline)

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
REG LEVEL_CORE::XED_BaseOnly INS  ins,
BOOL  filterWrites,
BOOL  filterReads,
BOOL  filterImplicit
+
+ + + + + +
+   + + +

+If the supplied INS is a memory access that is using only base register in the memory Operand, this functin returns this base register, otherwise REG_INVALID() is returned.

+

Parameters:
+ + + + + +
[in] ins - the instruction to inspect
[in] filterWrites - filter all operands that are memory write operands
[in] filterReads - filter all operands that are memory read operands
[in] filterImplicit - filter memory operands that are implicit
+
+
Returns:
The base register
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LOCALFUN VOID LEVEL_CORE::XED_decode_update_stripe INS  ins,
const xed_operand_values_t *  enc_operands,
UINT  itext_buf_len,
UINT  enc_len,
UINT8 *  itext_buf
+
+ + + + + +
+   + + +

+Decode with Intel(R) X86 Encoder Decoder. Then update the stripe

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::XED_encode_decode_update_stripe INS  ins,
xed_encoder_request_t *  xed_enc
+
+ + + + + +
+   + + +

+Encode a new instruction with Intel(R) X86 Encoder Decoder. Then decode with Intel(R) XED. Then update the stripe.

+

+ + + + +
+ + + + + + + + + +
xed_reg_enum_t LEVEL_CORE::xed_exact_map_from_pin_reg REG  pin_reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
xed reg mapping to pin reg. if no map returns XED_REG_INVALID
+
+

+ + + + +
+ + + + + + + + + +
REG LEVEL_CORE::xed_exact_map_to_pin_reg xed_reg_enum_t  xed_reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
a valid pin register, but never an invalid one
+
+

+ + + + +
+ + + + + + + + +
VOID LEVEL_CORE::XED_init  ) 
+
+ + + + + +
+   + + +

+

Returns:
Nothing
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_CORE::XED_INS_IsMultimedia INS  ins  ) 
+
+ + + + + +
+   + + +

+Checks if instruction is MMX, SSE, SSE2, SSE3, ...

+

+ + + + +
+ + + + + + + + +
VOID LEVEL_CORE::XED_log_init  ) 
+
+ + + + + +
+   + + +

+

Returns:
Nothing
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::XED_logger INS  ins,
char *  msg
+
+ + + + + +
+   + + +

+This function allows writing to the Intel(R) X86 Encoder Decoder log from other source files.

Returns:
nothing
+
+

+ + + + +
+ + + + + + + + + +
REG LEVEL_CORE::xed_map_to_pin_reg xed_reg_enum_t  xed_reg  ) 
+
+ + + + + +
+   + + +

+

Returns:
a valid pin register or REG_INVALID().
+
+

+ + + + +
+ + + + + + + + + +
FLAGS LEVEL_CORE::XED_PhyFlagsRead const xed_decoded_inst_t *  xedd  ) 
+
+ + + + + +
+   + + +

+Return the physical flags (DF, OF, SF, ZF, AF, PF, CF) that are read according to the Intel(R) X86 Encoder Decoder decode info.

+

Parameters:
+ + +
[in] xedd The Intel(R) XED decode info
+
+
Returns:
the FLAGS read according to the Intel(R) XED decode info
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAGS LEVEL_CORE::XED_PhyFlagsWritten const xed_decoded_inst_t *  xedd,
BOOL  onlyDefinite
+
+ + + + + +
+   + + +

+Return the physical flags (DF, OF, SF, ZF, AF, PF, CF) that are written according to the Intel(R) X86 Encoder Decoder decode info. Specify whether to return only the flags that are definitely (must) written

+

Parameters:
+ + + +
[in] xedd The Intel(R) X86 Encoder Decoder decode info
[in] onlyDefinite Specify TRUE if only the flags that are definitely written should be returned
+
+
Returns:
the FLAGS written according to the Intel(R) XED decode info, and the onlyDefinite specification
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::XED_RAWINS_ReplacePinRegsByAppRegs const INS  ins,
const UINT32  num_pinregs,
REG pin_regs,
REG app_regs
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::XED_RAWINS_ReplaceReg const INS  ins,
const REG  oldreg,
const REG  newreg
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::XED_reencode_decode_update_stripe INS  ins  ) 
+
+ + + + + +
+   + + +

+Reencode modified (previously-decoded) instruction with Intel(R) X86 Encoder Decoder. Then decode with Intel(R) XED. Then update the stripe.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
REG LEVEL_CORE::xed_reg_to_pin_reg xed_reg_enum_t  xedreg,
INS  ins
+
+ + + + + +
+   + + +

+

Returns:
the PIN register name for a given Intel(R) X86 Encoder Decoder register name
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::XED_RegRolePosFromXED INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
nothing
+Fill in the reg/role/pos arrays in the stripe using information from the Intel(R) X86 Encoder Decoder decoded instruction.
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_CORE::XED_RegRolePosToXED INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
nothing
+Take the reg/role/pos arrays from the stripe and pack them back in to Intel(R) X86 Encoder Decoder decoded instruction.
+

+ + + + +
+ + + + + + + + + +
LOCALFUN EXCEPTION_CODE LEVEL_CORE::XedError2ExceptionCode xed_error_enum_t  xed_error  ) 
+
+ + + + + +
+   + + +

+Convert the specified Intel(R) X86 Encoder Decoder error code into the corresponding EXCEPTION_CODE value.

Note:
the XED_ERROR_BUFFER_TOO_SHORT error is converted into EXCEPTCODE_ACCESS_FAULT.
+
+


Variable Documentation

+

+ + + + +
+ + + + +
GLOBALCONST BOOL LEVEL_CORE::B_CROSSLINK = 1
+
+ + + + + +
+   + + +

+a crosslinked attributed requires extra work during linking and linking since the object addressed by the value of the extension is "crosslinked"

+

+ + + + +
+ + + + +
GLOBALCONST BOOL LEVEL_CORE::B_HIDDEN = 1
+
+ + + + + +
+   + + +

+a hidden attribute will be omitted from printing

+

+ + + + +
+ + + + +
LOCALCONST xed_state_t LEVEL_CORE::DSTATE
+
+ + + + + +
+   + + +

+Initial value:

+
+
+ 
+    { XED_MACHINE_MODE_LEGACY_32, XED_ADDRESS_WIDTH_32b}
+
+

+ + + + +
+ + + + +
LOCALVAR const xed_reg_enum_t LEVEL_CORE::dummy_regs_native_table[MAX_DUMMY_REGS]
+
+ + + + + +
+   + + +

+Initial value:

+{
+
+
+ 
+    XED_REG_EDX, XED_REG_EBX, XED_REG_ECX
+
+}
+
+

+ + + + +
+ + + + +
LOCALVAR const xed_reg_enum_t LEVEL_CORE::dummy_regs_width_table[MAX_DUMMY_REGS][MAX_DUMMY_REG_WIDTHS]
+
+ + + + + +
+   + + +

+Initial value:

+{
+
+
+
+
+ 
+    { XED_REG_DL, XED_REG_DX, XED_REG_EDX, XED_REG_INVALID},
+    { XED_REG_CL, XED_REG_CX, XED_REG_ECX, XED_REG_INVALID},
+    { XED_REG_BL, XED_REG_BX, XED_REG_EBX, XED_REG_INVALID}
+
+}
+
+

+ + + + +
+ + + + +
GLOBALCONST USIZE LEVEL_CORE::INS_PATCH_UNIT = 8
+
+ + + + + +
+   + + +

+The size and alignment of a memory range, each patchable instruction must be fully contained in. Usually, instruction patching involves multiple code modifications, while ordering of this modifications in ICACHE is guaranteed only if they are performed in the same cache line. So, all instruction bytes should be located in a single cache line to allow thread-safe patching of the instruction. Taking in account that neither patchable instruction (branch) in Pin exceeds 8 bytes, we use a requirement which is even stronger than the cache line containment: each patchable instruction must be fully contained in a single INS_PATCH_UNIT. When choosing the INS_PATCH_UNIT value, consider the following:

    +
  • INS_PATCH_UNIT should not exceed the cache line size
  • INS_PATCH_UNIT should be large enough to contain any patchable instruction in Pin
  • Larger INS_PATCH_UNIT value may reduce padding for individual instructions but increase alignment requirement for code sections (traces) that contain these instructions
+
+

+ + + + +
+ + + + +
LOCALVAR BBL LEVEL_CORE::last_nonreturning_fun = BBL_INVALID()
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
GLOBALCONST UINT32 LEVEL_CORE::MAX_INSTRUCTION_SIZE = 15
+
+ + + + + +
+   + + +

+Maximum instruction size in IA-32 and Intel(R) 64 architectures.

+

+ + + + +
+ + + + +
GLOBALCONST REG LEVEL_CORE::REG_FirstInRegsetPhyContext = REG_PHYSICAL_INTEGER_BASE
+
+ + + + + +
+   + + +

+REG represented by the first bit in the physical context regset vector. +

+

+

+ + + + +
+ + + + +
GLOBALCONST REG LEVEL_CORE::REG_LastInRegsetPhyContext = REG_PHYSICAL_INTEGER_END
+
+ + + + + +
+   + + +

+REG represented by the last bit in the physical context regset vector. +

+

+

+ + + + +
+ + + + +
const REGSET_CONTEXT LEVEL_CORE::REGSET_CONTEXT_NONE
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
const REGSET LEVEL_CORE::REGSET_NONE
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
LOCALVAR string LEVEL_CORE::reuserTypeStr[]
+
+ + + + + +
+   + + +

+Initial value:

+{
+    "INS_REUSER_TYPE_MM_INSERT_OP",
+    "INS_REUSER_TYPE_MM_EXTRACT_OP",
+    "INS_REUSER_TYPE_LOAD_MEM_OP",
+    "INS_REUSER_TYPE_STORE_MEM_OP",
+    "INS_REUSER_TYPE_REG_REG_OP",
+    "INS_REUSER_TYPE_REG_IMM_OP",
+    "INS_REUSER_TYPE_REG_OP",
+    "INS_REUSER_TYPE_SDISP_OP",
+    "INS_REUSER_TYPE_IMM_OP",
+    "INS_REUSER_TYPE_NO_REG_OP",
+    "INS_REUSER_TYPE_VZEROUPPER",
+    "INS_REUSER_TYPE_MEM_IMM_OP",
+    "INS_REUSER_TYPE_CHANGE_TO_IMM_OP",
+    "INS_REUSER_TYPE_SIZED_NOP",
+    "INS_REUSER_TYPE_MM_LOAD",
+    "INS_REUSER_TYPE_MM_STORE",
+    "INS_REUSER_TYPE_MM_REG_REG_OP",
+    "INS_REUSER_TYPE_YMM_REG_OP",
+    "INS_REUSER_TYPE_YMM_REG_REG_REG_OP",
+    "INS_REUSER_TYPE_RET_IMM",
+    "INS_REUSER_TYPE_WIDTH_REG_IMM_OP",
+    "INS_REUSER_TYPE_REG_WORD_REG_BYTE_OP",
+    "INS_REUSER_TYPE_REG_WIDTH_REG_OP",
+    "INS_REUSER_TYPE_LAST"
+}
+
+

+ + + + +
+ + + + +
LOCALVAR const SEC_STATE LEVEL_CORE::SEC_StateMachineCooked[]
+
+ + + + + +
+   + + +

+Initial value:

 {SEC_STATE_INVALID, SEC_STATE_RAW_I, SEC_STATE_COOKED,
+                                                     SEC_STATE_RAW_O,  SEC_STATE_LAST}
+
+

+ + + + +
+ + + + +
LOCALVAR const SEC_STATE LEVEL_CORE::SEC_StateMachineData[]
+
+ + + + + +
+   + + +

+Initial value:

 {SEC_STATE_INVALID, SEC_STATE_RAW_I, SEC_STATE_CHUNKED_I,
+                                                  SEC_STATE_CHUNKED_O, SEC_STATE_RAW_O,  SEC_STATE_LAST}
+
+

+ + + + +
+ + + + +
LOCALVAR const SEC_STATE LEVEL_CORE::SEC_StateMachineExe[]
+
+ + + + + +
+   + + +

+Initial value:

 {SEC_STATE_INVALID, SEC_STATE_RAW_I, SEC_STATE_CHUNKED_I, SEC_STATE_DISASSEMBLED,
+                                                  SEC_STATE_CHUNKED_O, SEC_STATE_RAW_O,  SEC_STATE_LAST}
+
+

+ + + + +
+ + + + +
GLOBALCONST USIZE LEVEL_CORE::SIZE_OF_MEMOFFSET_PROBE = 7
+
+ + + + + +
+   + + +

+size of the type of the probe

+

+ + + + +
+ + + + +
GLOBALCONST USIZE LEVEL_CORE::SIZE_OF_OFFSET_PROBE = 5
+
+ + + + + +
+   + + +

+size of the type of the probe

+

+ + + + +
+ + + + +
GLOBALCONST USIZE LEVEL_CORE::SIZE_OF_RIP_AND_ADDR_PROBE = 14
+
+ + + + + +
+   + + +

+size of the type of the probe

+

+ + + + +
+ + + + +
GLOBALCONST USIZE LEVEL_CORE::SIZE_OF_RIP_PROBE = 6
+
+ + + + + +
+   + + +

+size of the type of the probe

+

+ + + + +
+ + + + +
LOCALVAR USIZE LEVEL_CORE::sizeOfDirectJmp = 0
+
+ + + + + +
+   + + +

+Size of the unconditional, direct jump instruction with a 32-bit displacement

+

+ + + + +
+ + + + +
LOCALVAR USIZE LEVEL_CORE::sizeOfIpRelativeMemJmp = 0
+
+ + + + + +
+   + + +

+Size of the unconditional, direct jjmp [gip]offset

+

+ + + + +
+ + + + +
LOCALVAR const SYM_STATE LEVEL_CORE::SYM_StateMachine[]
+
+ + + + + +
+   + + +

+Initial value:

+{
+    SYM_STATE_INVALID,SYM_STATE_RAW,SYM_STATE_LINKED,SYM_STATE_LAST
+}
+
+


Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespaceLEVEL__PINCLIENT.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespaceLEVEL__PINCLIENT.html new file mode 100644 index 0000000..cb06179 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespaceLEVEL__PINCLIENT.html @@ -0,0 +1,10285 @@ + + +Pin: LEVEL_PINCLIENT Namespace Reference + + + + +
+
+ +

LEVEL_PINCLIENT Namespace Reference

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Typedefs

typedef map< SYM, ADDRINT > SYM_RESOLVER_VS_ACTUAL_ADDRESS_IFUNC_MAP
typedef LEVEL_BASE::CHILD_PROCESS_CLASS * CHILD_PROCESS
typedef BOOL(* FOLLOW_CHILD_PROCESS_CALLBACK )(CHILD_PROCESS childProcess, VOID *val)
typedef BOOL(* DEBUG_INTERPRETER_CALLBACK )(THREADID threadIndex, CONTEXT *ctxt, const std::string &cmd, std::string *reply, VOID *v)
typedef BOOL(* DEBUG_BREAKPOINT_CALLBACK )(ADDRINT addr, UINT size, BOOL insert, VOID *v)
typedef BOOL(* INTERCEPT_DEBUGGING_EVENT_CALLBACK )(THREADID tid, DEBUGGING_EVENT eventType, CONTEXT *ctxt, VOID *arg)
typedef VOID(* GET_EMULATED_REGISTER_CALLBACK )(unsigned toolRegId, THREADID tid, CONTEXT *ctxt, VOID *data, VOID *v)
typedef VOID(* SET_EMULATED_REGISTER_CALLBACK )(unsigned toolRegId, THREADID tid, CONTEXT *ctxt, const VOID *data, VOID *v)
typedef USIZE(* GET_TARGET_DESCRIPTION_CALLBACK )(const std::string &name, USIZE size, VOID *buf, VOID *v)
typedef VOID(* SIGNAL_BEFORE_CALLBACK )(THREADID threadIndex, INT32 sig, const CONTEXT *ctxtFrom, const CONTEXT *ctxtTo, VOID *v)
typedef VOID(* SIGNAL_AFTER_CALLBACK )(THREADID threadIndex, const CONTEXT *ctxtFrom, const CONTEXT *ctxtTo, VOID *v)
typedef VOID(* THREAD_BEGIN_CALLBACK )(THREADID threadIndex, VOID *sp, int flags, VOID *v)
typedef VOID(* THREAD_END_CALLBACK )(THREADID threadIndex, INT32 code, VOID *v)
typedef BOOL(* SIGNAL_INTERCEPT_CALLBACK )(THREADID threadIndex, INT32 sig, CONTEXT *ctxt, BOOL hasHndlr, VOID *v)
typedef VOID(* IMAGECALLBACK )(IMG, VOID *)
typedef map< ADDRINT, USIZE > CODE_RANGES
typedef EXCEPT_HANDLING_RESULT(* INTERNAL_EXCEPTION_CALLBACK )(THREADID tid, EXCEPTION_INFO *pExceptInfo, PHYSICAL_CONTEXT *pPhysCtxt, VOID *v)
typedef VOID(* TRACEGENCODE_CALLBACK )(TRACE trace, VOID *v)
typedef TRACE_CLASS * TRACE
typedef VOID * PIN_CONFIGURATION_INFO
typedef COMPLEX_CALLBACKVAL_BASE * PIN_CALLBACK
typedef VOID(* REMOVE_INSTRUMENTATION_CALLBACK )(VOID *v)
typedef VOID(* DETACH_CALLBACK )(VOID *v)
typedef VOID(* DETACH_PROBED_CALLBACK )(VOID *v)
typedef VOID(* ATTACH_PROBED_CALLBACK )(VOID *v)
typedef VOID(* ATTACH_CALLBACK )(VOID *v)
typedef VOID(* APPLICATION_START_CALLBACK )(VOID *v)
typedef VOID(* PREPARE_FOR_FINI_CALLBACK )(VOID *v)
typedef VOID(* FINI_CALLBACK )(INT32 code, VOID *v)
typedef size_t(* FETCH_CALLBACK )(void *buf, ADDRINT addr, size_t size, EXCEPTION_INFO *pExceptInfo, VOID *v)
typedef VOID(* OUT_OF_MEMORY_CALLBACK )(size_t size, VOID *v)
typedef ADDRINT(PIN_FAST_ANALYSIS_CALL * MEMORY_ADDR_TRANS_CALLBACK )(PIN_MEM_TRANS_INFO *memTransInfo, VOID *v)
typedef VOID(* SMC_CALLBACK )(ADDRINT traceStartAddress, ADDRINT traceEndAddress, VOID *v)
typedef VOID(* FORK_CALLBACK )(THREADID threadid, const CONTEXT *ctxt, VOID *v)
typedef VOID(* THREAD_START_CALLBACK )(THREADID threadIndex, CONTEXT *ctxt, INT32 flags, VOID *v)
typedef VOID(* THREAD_ATTACH_PROBED_CALLBACK )(VOID *sigmask, VOID *v)
typedef VOID(* THREAD_DETACH_PROBED_CALLBACK )(VOID *v)
typedef VOID(* THREAD_ATTACH_CALLBACK )(THREADID threadIndex, CONTEXT *ctxt, VOID *v)
typedef VOID(* THREAD_DETACH_CALLBACK )(THREADID threadIndex, const CONTEXT *ctxt, VOID *v)
typedef VOID(* THREAD_FINI_CALLBACK )(THREADID threadIndex, const CONTEXT *ctxt, INT32 code, VOID *v)
typedef VOID(* CONTEXT_CHANGE_CALLBACK )(THREADID threadIndex, CONTEXT_CHANGE_REASON reason, const CONTEXT *from, CONTEXT *to, INT32 info, VOID *v)
typedef VOID(* SYSCALL_ENTRY_CALLBACK )(THREADID threadIndex, CONTEXT *ctxt, SYSCALL_STANDARD std, VOID *v)
typedef VOID(* SYSCALL_EXIT_CALLBACK )(THREADID threadIndex, CONTEXT *ctxt, SYSCALL_STANDARD std, VOID *v)
typedef BOOL(* INTERCEPT_SIGNAL_CALLBACK )(THREADID tid, INT32 sig, CONTEXT *ctxt, BOOL hasHandler, const EXCEPTION_INFO *pExceptInfo, VOID *v)
typedef VOID(* PROBES_INSERTED_CALLBACK )(IMG img, VOID *v)
typedef VOID *(* TRACE_BUFFER_CALLBACK )(BUFFER_ID id, THREADID tid, const CONTEXT *ctxt, VOID *buf, UINT64 numElements, VOID *v)
typedef VOID(* INS_INSTRUMENT_CALLBACK )(INS ins, VOID *v)
typedef VOID(* TRACE_INSTRUMENT_CALLBACK )(TRACE trace, VOID *v)
typedef VOID(* RTN_INSTRUMENT_CALLBACK )(RTN rtn, VOID *v)

Enumerations

enum  UNDECORATION {
+  UNDECORATION_COMPLETE, +
+  UNDECORATION_NAME_ONLY +
+ }
enum  SYMBOL_INFO_MODE {
+  NO_SYMBOLS = 0, +
+  EXPORT_SYMBOLS = (1<<0), +
+  DEBUG_SYMBOLS = (1<<1), +
+  IFUNC_SYMBOLS = (1<<2), +
+  DEBUG_OR_EXPORT_SYMBOLS = (DEBUG_SYMBOLS | EXPORT_SYMBOLS) +
+ }
enum  IMAGE_LOAD_FLAGS {
+  IMAGE_LOAD_NONE = 0x00, +
+  IMAGE_LOAD_MAINEXECUTABLE = 0x01, +
+  IMAGE_LOAD_FOUNDINMEMORY = 0x02, +
+  IMAGE_LOAD_RUNTIME = 0x04, +
+  IMAGE_LOAD_TEXTFROMIMAGE = 0x08, +
+  IMAGE_LOAD_INTERPRETER = 0x10 +
+ }
enum  PROBE_TAG {
+  PROBE_TAG_OK, +
+  PROBE_TAG_BRANCH_TARGET, +
+  PROBE_TAG_POSSIBLE_UNIDENTIFIED_BRANCH_TARGET, +
+  PROBE_TAG_BRANCH_PAST_END, +
+  PROBE_TAG_TOO_SMALL, +
+  PROBE_TAG_PREV_PROBE, +
+  PROBE_TAG_RUNTIME_FIXUP, +
+  PROBE_TAG_RELOCATE, +
+  PROBE_TAG_NOT_RELOCATABLE, +
+  PROBE_TAG_UNKNOWN +
+ }
enum  REPLAY_MODE {
+  REPLAY_MODE_NONE = 0x00, +
+  REPLAY_MODE_IMAGEOPS = 0x01, +
+  REPLAY_MODE_ALL = REPLAY_MODE_IMAGEOPS +
+ }
enum  PROBE_MODE {
+  PROBE_MODE_DEFAULT = 0, +
+  PROBE_MODE_ALLOW_RELOCATION = (1<<0) +
+ }
enum  SMC_ENABLE_DISABLE_TYPE {
+  SMC_ENABLE, +
+  SMC_DISABLE +
+ }
enum  FPOINT {
+  FPOINT_BEFORE, +
+  FPOINT_AFTER_IN_PARENT, +
+  FPOINT_AFTER_IN_CHILD +
+ }
enum  ATTACH_STATUS {
+  ATTACH_INITIATED, +
+  ATTACH_FAILED_DETACH +
+ }
enum  CONDINSTSTATE {
+  CONDINST_NORMAL, +
+  CONDINST_IF, +
+  CONDINST_THEN +
+ }
enum  REPLAY_IMAGE_TYPE {
+  REPLAY_IMAGE_TYPE_REGULAR = 0, +
+  REPLAY_IMAGE_TYPE_MAIN_EXE = 1, +
+  REPLAY_IMAGE_TYPE_INTERPRETER = 2 +
+ }
enum  {
+  TLS_KEY_INTERNAL_EXCEPTION, +
+  TLS_KEY_CLIENT_FIRST, +
+  TLS_KEY_CLIENT_LAST = TLS_KEY_CLIENT_FIRST + 63 +
+ }

Functions

+LOCALFUN UINT32 calc32CRC (const CHAR *start, UINT32 size)
string FindGnuDebugLinkFile (IMG img, CHAR **imageStart, size_t *imageSize)
+LOCALINLINE IMAGE_INIT_SESSION * ImageInitSession ()
BOOL IMG_IsStandardLoaderLibrary (IMG img)
BOOL IMG_IsStandardSystemLibrary (IMG img)
BOOL IMG_IsStandardThreadLibrary (IMG img)
BOOL IMG_IsStandardGccLibrary (IMG img)
+LOCALFUN AUXTYPE * FindAuxBase (CHAR **argv)
+LOCALFUN ADDRINT AppAuxValue (UINT64 type)
+LOCALFUN ADDRINT LoaderAddress ()
LOCALFUN ADDRINT VdsoAddress ()
+template<typename LOADERINFO>
LOCALTEMPLATEFUN BOOL ValidateLoaderInfo (LOADERINFO loaderInfo)
VOID NotifyDebuggerOnImageLoad (BOOL isMain, VOID *loaderInfo)
VOID NotifyDebuggerOnImageUnload (VOID *loaderInfo)
+LOCALFUN LINUX_LOADER_IMAGE_INFO * MakeLoaderInfoFromLinkMap (const string &name, struct link_map *lm)
+LOCALFUN IMG ImageByName (const string &name)
+LOCALFUN LINUX_LOADER_IMAGE_INFO * NotifyDebuggerOnElfImageLoad (BOOL isMain, BOOL isInterp, const string &name, struct link_map *lm)
+LOCALFUN VOID ProcessLoadedImage (IMG img, LINUX_LOADER_IMAGE_INFO *li)
+template<typename PTR>
LOCALTEMPLATEFUN PTR TranslateMemoryPointer (PTR ptr)
LOCALFUN VOID ScanLibrariesUnlocked ()
LOCALFUN VOID ScanLibrariesLocked ()
+LOCALFUN VOID OnLoaderBreak (THREADID threadid, const CONTEXT *ctxt)
ADDRINT ResolveIFunc (ADDRINT resolver)
+LOCALFUN VOID OnLoaderBreakProbe ()
LOCALFUN VOID ReadElfHeader (CHAR const *file, EHDR *ehdr)
+LOCALFUN ADDRINT MainImageLoadOffset (CHAR const *file)
LOCALFUN VOID ScanLibraries ()
VOID ImageInitialize (BOOL forReplay)
VOID ImageUnInitialize ()
BOOL RTN_CheckFixups (RTN rtn, INS target_ins, UINT32 probe_size)
VOID ImageInstrument (TRACE trace)
VOID IMG_UnmapImage (IMG img)
VOID IMG_FreeDebugInfo (IMG img)
VOID NotifyDataRanges (IMG img, CODE_RANGES *rangeMap)
BOOL IMG_GetSubprogramsInfo (IMG img, map< ADDRINT, SymbolDebugInfo > &routines)
+LOCALVAR KNOB< BOOL > KnobDisablePLTSyms (KNOB_MODE_WRITEONCE,"supported","disable_plt_syms","0","Disable synthesizing symbols for PLT entries")
+LOCALNSFUN BOOL operator< (const SYM_BASIC_INFO &lhs, const SYM_BASIC_INFO &rhs)
VOID PIN_InitSymbols ()
+BOOL PIN_SymbolsInit ()
BOOL PIN_InitSymbolsAlt (SYMBOL_INFO_MODE mode)
+LOCALFUN VOID AddSym (SYM sym, IMG img, BOOL dynamic, const CHAR *sym_name, const SYMREC *rawsym, UINT32 imgsize, IADDR iaddr, SYM_IFUNC_TYPE Ifunc_type)
+template<typename SYMBOL_TYPE>
LOCALTEMPLATEFUN VOID ConvertSym (SYMREC *sym_dst, const SYMBOL_TYPE *sym_src)
+LOCALFUN VOID CookSymIfuncSec (IMG img, SYM ifunc_resolver, const SYMREC *symrec, SYM_RESOLVER_VS_ACTUAL_ADDRESS_IFUNC_MAP *sym_resolver_vs_actual_address_ifunc_map)
+LOCALFUN BOOL GetPltSec (IMG img, SEC *plt_sec, SEC *relocation_Sec)
+template<typename SYMBOL_TYPE>
LOCALTEMPLATEFUN VOID CookSymPltSec (IMG img, const SYMBOL_TYPE *array, const CHAR *string_table)
+template<typename SYMBOL_TYPE>
LOCALTEMPLATEFUN VOID CookSymSec (set< SYM_BASIC_INFO > &symbolSet, SEC sec_symtab, SEC sec_strtab, BOOL dynamic, SYM_RESOLVER_VS_ACTUAL_ADDRESS_IFUNC_MAP *sym_resolver_vs_actual_address_ifunc_map)
+LOCALFUN BOOL CompareSyms (const SYM &s1, const SYM &s2)
+LOCALFUN VOID IMG_SortRegsymsByIaddr (IMG img)
VOID CookRegsym (IMG img, SYM_RESOLVER_VS_ACTUAL_ADDRESS_IFUNC_MAP *sym_resolver_vs_actual_address_ifunc_map)
ADDRINT IMG_FindDataSymbolAddress (IMG origImg, const CHAR *symname)
BOOL SYM_IsDataMarker (SYM sym)
+LOCALFUN string SYM_NameNoVersion (const string &symbolName)
+LOCALFUN size_t skipBackwardsMatchedPair (const string &undecoratedName, size_t pos, char openBra, char closeBra)
+LOCALFUN size_t skipBackwardsTemplatedName (const string &undecoratedName, size_t pos)
+LOCALFUN string sanitize (const string &original)
+LOCALFUN string cplus_demangle (const string &name, UNDECORATION style)
string SYM_UndecorateName (const string &symbolName, UNDECORATION style)
VOID AotiRecordCall (IPOINT action, INS ins, ACALL const *acall)
VOID AotiRecordMutation (INS ins, EXT ext)
VOID AotiPlaybackCall (INS ins)
BOOL AotiInstrumentationExists ()
VOID AotiRemoveImageInstrumentation (IMG img)
PIN_CALLBACK PIN_AddFollowChildProcessFunction (FOLLOW_CHILD_PROCESS_CALLBACK fun, VOID *val)
VOID PIN_RemoveFollowChildProcessFunctions ()
LOCALFUN BOOL CallFollowChildProcess (CHILD_PROCESS childProcess, const char **toolAppend)
VOID InitializeFollowChildClient ()
OS_PROCESS_ID CHILD_PROCESS_GetId (CHILD_PROCESS childProcess)
VOID CHILD_PROCESS_GetCommandLine (CHILD_PROCESS childProcess, INT *pArgc, const CHAR *const **pArgv)
VOID CHILD_PROCESS_SetPinCommandLine (CHILD_PROCESS childProcess, INT argc, const CHAR *const *argv)
void PIN_GetSourceLocation (ADDRINT address, INT32 *column, INT32 *line, string *fileName)
LOCALFUN BOOL CallDebugInterpreters (THREADID, CONTEXT *, const char *, const char **)
LOCALFUN BOOL CallBreakpointHandlers (ADDRINT, USIZE, BOOL)
LOCALFUN BOOL CallInterceptedDebuggingEvent (THREADID, DEBUGGING_EVENT, CONTEXT *)
LOCALFUN VOID GetEmulatedRegister (unsigned, THREADID, CONTEXT *, VOID *)
LOCALFUN VOID SetEmulatedRegister (unsigned, THREADID, CONTEXT *, const VOID *)
LOCALFUN USIZE GetTargetDescription (const std::string &, USIZE, VOID *)
VOID DebuggerClientInitialize ()
PIN_CALLBACK PIN_AddDebugInterpreter (DEBUG_INTERPRETER_CALLBACK fun, VOID *val)
VOID PIN_RemoveDebugInterpreter (DEBUG_INTERPRETER_CALLBACK fun)
PIN_CALLBACK PIN_AddBreakpointHandler (DEBUG_BREAKPOINT_CALLBACK fun, VOID *val)
VOID PIN_RemoveBreakpointHandler (DEBUG_BREAKPOINT_CALLBACK fun)
VOID PIN_ResetBreakpointAt (ADDRINT addr)
VOID PIN_ApplicationBreakpoint (const CONTEXT *ctxt, THREADID tid, BOOL waitIfNoDebugger, const std::string &msg)
BOOL PIN_SetDebugMode (const DEBUG_MODE *mode)
DEBUG_STATUS PIN_GetDebugStatus ()
BOOL PIN_GetDebugConnectionInfo (DEBUG_CONNECTION_INFO *info)
DEBUGGER_TYPE PIN_GetDebuggerType ()
BOOL PIN_WaitForDebuggerToConnect (unsigned timeout)
BOOL PIN_GetStoppedThreadPendingToolBreakpoint (THREADID tid, std::string *msg)
BOOL PIN_ChangePendingToolBreakpointOnStoppedThread (THREADID tid, BOOL squash, const std::string &msg)
VOID PIN_InterceptDebuggingEvent (DEBUGGING_EVENT eventType, INTERCEPT_DEBUGGING_EVENT_CALLBACK fun, VOID *arg)
VOID PIN_AddDebuggerRegisterEmulator (unsigned numRegisters, const DEBUGGER_REG_DESCRIPTION *registerDescriptions, GET_EMULATED_REGISTER_CALLBACK getFun, SET_EMULATED_REGISTER_CALLBACK setFun, GET_TARGET_DESCRIPTION_CALLBACK getDescriptionFun, VOID *val)
VOID DeprecatedCallSignalBefores (THREADID threadIndex, INT32 sig, const CONTEXT *from, const CONTEXT *to)
VOID DeprecatedCallSignalAfters (THREADID threadIndex, const CONTEXT *from, const CONTEXT *to)
VOID DeprecatedCallThreadBegins (THREADID threadIndex, VOID *sp, int flags)
VOID DeprecatedCallThreadEnds (THREADID threadIndex, INT32 code)
+LOCALFUN BOOL CallSignalIntercept (THREADID tid, INT32 sig, CONTEXT *ctxt, BOOL hasHandler, const EXCEPTION_INFO *pExceptInfo, VOID *v)
PIN_DEPRECATED_API BOOL PIN_AddSignalBeforeFunction (SIGNAL_BEFORE_CALLBACK fun, VOID *val)
PIN_DEPRECATED_API BOOL PIN_AddSignalAfterFunction (SIGNAL_AFTER_CALLBACK fun, VOID *val)
PIN_DEPRECATED_API BOOL PIN_AddSignalInterceptFunction (INT32 sig, SIGNAL_INTERCEPT_CALLBACK fun, VOID *val)
PIN_DEPRECATED_API VOID PIN_AddThreadBeginFunction (THREAD_BEGIN_CALLBACK fun, VOID *val)
PIN_DEPRECATED_API VOID PIN_AddThreadEndFunction (THREAD_END_CALLBACK fun, VOID *val)
PIN_DEPRECATED_API VOID PIN_StartProbedProgram ()
PIN_DEPRECATED_API BOOL RTN_IsSafeForProbe (RTN rtn)
PIN_DEPRECATED_API VOID RTN_ReplaceWithUninstrumentedRoutine (RTN replacedRtn, AFUNPTR replacementFun)
PIN_DEPRECATED_API BOOL CODECACHE_FlushCache ()
PIN_DEPRECATED_API UINT32 CODECACHE_InvalidateTraceAtProgramAddress (ADDRINT app_pc)
PIN_DEPRECATED_API UINT32 CODECACHE_InvalidateRange (ADDRINT start, ADDRINT end)
PIN_DEPRECATED_API BOOL TRACE_Original (TRACE trace)
+LOCALVAR KNOB_COMMENT KnobSymFamily ("pintool:sym","Symbols controls")
+LOCALVAR KNOB< BOOL > KnobUnrestrictedRtnSize (KNOB_MODE_WRITEONCE,"pintool:sym","unrestricted_rtn_size","0","Use the unrestricted RTN size. ""When set the RTN size defined by the distance between RTN start to the beginning of next RTN.")
+LOCALVAR KNOB< BOOL > KnobShortName (KNOB_MODE_WRITEONCE,"pintool:sym","short_name","0","Use the shortest name for the RTN. ""Names with version substrings are preferred over the same name without the substring.")
+LOCALVAR KNOB< BOOL > KnobIgnoreDebugInfo (KNOB_MODE_WRITEONCE,"pintool:sym","ignore_debug_info","0","Ignore debug info for the image. Symbols are taken from the symbol tables.")
+LOCALVAR KNOB< string > KnobReduceRtnSizeMode (KNOB_MODE_WRITEONCE,"pintool:sym","reduce_rtn_size_mode","auto","Mode for RTN size reduction: delete trailing instructions after RET if there is no ""jump to the rtn part after the RET. ""Possible modes are: auto/never/always")
KNOB< BOOL > KnobJitApi (KNOB_MODE_WRITEONCE,"pintool:sym","support_jit_api","0","Enables the Jitted Functions Support")
+LOCALFUN BOOL IMG_is_shadow_img (IMG img)
IMG IMG_Next (IMG img)
IMG IMG_Prev (IMG img)
IMG IMG_Invalid ()
BOOL IMG_Valid (IMG img)
SEC IMG_SecHead (IMG img)
SEC IMG_SecTail (IMG img)
SYM IMG_RegsymHead (IMG img)
ADDRINT IMG_Entry (IMG img)
const string & IMG_Name (IMG img)
ADDRINT IMG_Gp (IMG img)
ADDRINT IMG_LoadOffset (IMG img)
ADDRINT IMG_LowAddress (IMG img)
ADDRINT IMG_HighAddress (IMG img)
ADDRINT IMG_StartAddress (IMG img)
USIZE IMG_SizeMapped (IMG img)
IMG_TYPE IMG_Type (IMG img)
BOOL IMG_IsMainExecutable (IMG x)
BOOL IMG_IsInterpreter (IMG x)
BOOL IMG_IsStaticExecutable (IMG x)
BOOL IMG_IsVDSO (IMG img)
UINT32 IMG_NumRegions (IMG img)
ADDRINT IMG_RegionHighAddress (IMG img, UINT32 n)
ADDRINT IMG_RegionLowAddress (IMG img, UINT32 n)
RTN IMG_FindRtnByName (IMG img, const string &name)
+LOCALFUN RTN FinalizeRtn (RTN rtn, USIZE size)
+LOCALFUN VOID AddRtnsToMap (IMG img)
IMG IMG_CreateAt (const char *filename, ADDRINT start, USIZE size, ADDRINT loadOffset, BOOL mainExecutable)
IMG SEC_Img (SEC sec)
SEC SEC_Next (SEC sec)
SEC SEC_Prev (SEC sec)
SEC SEC_Invalid ()
BOOL SEC_Valid (SEC x)
RTN SEC_RtnHead (SEC sec)
RTN SEC_RtnTail (SEC sec)
const string & SEC_Name (SEC sec)
SEC_TYPE SEC_Type (SEC sec)
BOOL SEC_Mapped (SEC sec)
const VOID * SEC_Data (SEC sec)
SEC RTN_Sec (RTN x)
RTN RTN_Next (RTN x)
RTN RTN_Prev (RTN x)
RTN RTN_Invalid ()
BOOL RTN_Valid (RTN x)
+LOCALINLINE RTN_OUTSIDE_RANGES & RtnOutsideRangesManager ()
LOCALFUN VOID DisassembleRegion (RTN rtn, BBL bbl, const VOID *current, const VOID *end, ADDRINT rtnStart, ADDRINT rtnEnd, ADDRINT rtnLimit, ADDRINT virtual_offset)
+LOCALFUN INS DisassembleFirstIns (const VOID *current, const VOID *end, ADDRINT limit, ADDRINT virtual_offset)
+LOCALFUN VOID FetchRtnIns (RTN rtn)
+LOCALFUN INS FetchRtnInsFirstOnly (RTN rtn)
PIN_DEPRECATED_API BBL RTN_BblHead (RTN x)
PIN_DEPRECATED_API BBL RTN_BblTail (RTN x)
const string & RTN_Name (RTN x)
BOOL RTN_IsArtificial (RTN x)
SYM RTN_Sym (RTN x)
AFUNPTR RTN_Funptr (RTN x)
LOCALFUN VOID RTN_Destroy (RTN rtn)
UINT32 RTN_Id (RTN x)
PIN_DEPRECATED_API INT32 RTN_No (RTN x)
INS BBL_InsHead (BBL x)
INS BBL_InsTail (BBL x)
BBL BBL_Next (BBL x)
BBL BBL_Prev (BBL x)
BOOL BBL_Valid (BBL x)
BBL_TYPE BBL_Type (BBL x)
EDG EDG_NextSucc (EDG x)
EDG EDG_INVALID ()
BOOL EDG_Valid (EDG x)
EDG_TYPE EDG_Type (EDG x)
RTN INS_Rtn (INS x)
INS INS_Next (INS x)
INS INS_Prev (INS x)
INS INS_Invalid ()
BOOL INS_Valid (INS x)
ADDRINT INS_Address (INS ins)
USIZE INS_Size (INS ins)
ADDRINT INS_DirectBranchOrCallTargetAddress (INS ins)
ADDRINT INS_NextAddress (INS ins)
SYM SYM_Next (SYM x)
SYM SYM_Prev (SYM x)
const string & SYM_Name (SYM x)
SYM SYM_Invalid ()
BOOL SYM_Valid (SYM x)
BOOL SYM_Dynamic (SYM x)
BOOL SYM_GeneratedByPin (SYM x)
BOOL SYM_IFuncImplementation (SYM x)
BOOL SYM_IFuncResolver (SYM x)
ADDRINT SYM_Value (SYM x)
UINT32 SYM_Index (SYM x)
ADDRINT SYM_Address (SYM x)
IMG GetOpenImg ()
VOID ResetOpenRtn ()
VOID ResetOpenImg ()
VOID InitializeApp ()
VOID UnInitializeApp ()
UINT32 IMG_Id (IMG x)
IMG IMG_FindImgById (UINT32 id)
IMG IMG_FindByUnloadAddress (ADDRINT startAddress)
IMG IMG_FindByAddress (ADDRINT address)
IMG IMG_FindBySectionsAddress (ADDRINT address)
PIN_CALLBACK RTN_AddInstrumentFunction (RTN_INSTRUMENT_CALLBACK fun, VOID *val)
+LOCALFUN BOOL operator< (const RTN_KEY &p1, const RTN_KEY &p2)
PIN_CALLBACK IMG_AddInstrumentFunction (IMAGECALLBACK fun, VOID *v)
VOID IMG_RemoveToolCallbacks ()
PIN_CALLBACK IMG_AddUnloadFunction (IMAGECALLBACK fun, VOID *v)
+LOCALFUN VOID IMG_Destroy (IMG img)
VOID ProcessImageUnload (IMG img, BOOL copyBits)
VOID PIN_UnloadAllImages (BOOL copyBits)
VOID ProcessModuleUnload (ADDRINT base)
USIZE RTN_Range (RTN rtn)
USIZE RTN_Size (RTN rtn)
RTN RTN_IFuncResolver (RTN rtn)
RTN RTN_IFuncImplementation (RTN rtn)
+LOCALFUN VOID InitRtnToSym (RTN rtn, SYM sym)
+LOCALFUN VOID UseShortName (RTN rtn, SYM sym)
+LOCALFUN VOID BestFit (RTN rtn, SYM sym)
+LOCALFUN INT SymPosition (SYM sym, const MemRange &range)
LOCALFUN VOID FindCodeRanges (IMG img, CODE_RANGES *rangeMap)
VOID NotifyDataRange (CODE_RANGES *rangeMap, ADDRINT base, USIZE size)
+LOCALFUN VOID MakeRtns (IMG img)
VOID CallRtnCallbacks (RTN rtn)
+LOCALFUN VOID CallRtnCallbacks (IMG img)
+LOCALFUN VOID DsUpdatesDueRtnfuncCreation (RTN rtnToSplit, RTN originatedFromIfunc, ADDRINT rtnToSplitAddr, ADDRINT rtnToSplitSize, ADDRINT newRtnAddr)
+LOCALFUN RTN handleIfuncSymbol (ADDRINT actualFuncAddr, SYM resolver, IMG img)
+LOCALFUN VOID FixSymbolsFromDebugInfo (IMG img)
+LOCALFUN IMG ImgLoad (const string &filename, const CHAR *trueFilename, ADDRINT load_offset, UINT32 flags, BOOL *unmapAfterProcessing, void *arg)
VOID IMG_RecordLoadOp (const string &imageName, const char *fileName, ADDRINT lo, UINT32 fl)
VOID IMG_RecordLoadOp (IMG img)
VOID IMG_ExecuteRecordedLoadOps ()
IMG IMG_Open (const string &filename)
VOID IMG_Close (IMG img)
+LOCALFUN VOID ImageLoadProbes (IMG img)
IMG ProcessImageLoad (const string &filename, const CHAR *trueFilename, ADDRINT load_offset, UINT32 flags, void *loaderInfo, void *arg)
IMG ProcessImageLoad (const string &filename, const CHAR *trueFilename, ADDRINT load_offset, UINT32 flags, void *arg)
VOID IMG_ReplayImageLoad (IMG img)
VOID * IMG_GetLoaderInfo (IMG img)
VOID IMG_SetLoaderInfo (IMG img, VOID *loaderInfo)
VOID CompleteImageLoad (IMG img, void *arg)
VOID InitDynamicCodeImage (IMG newImg)
BOOL IsPinLoaded (const string &name)
string RTN_FindNameByAddress (ADDRINT address)
RTN RTN_FindByAddress (ADDRINT address)
RTN RTN_FindByName (IMG img, const CHAR *name)
VOID RTN_Open (RTN rtn)
VOID RTN_OpenAndFetch (RTN rtn)
VOID RTN_Close (RTN rtn)
INS RTN_InsHead (RTN rtn)
INS RTN_InsHeadOnly (RTN rtn)
INS RTN_InsTail (RTN rtn)
UINT32 RTN_NumIns (RTN rtn)
VOID RTN_InsertCall (RTN rtn, IPOINT action, AFUNPTR funptr,...)
ADDRINT RTN_Address (RTN rtn)
RTN RTN_CreateAt (ADDRINT address, string name)
RTN RTN_CreateJitFunction (IMG img, ADDRINT address, const string &name, USIZE size)
VOID RTN_DestroyJitFunction (ADDRINT address)
BOOL RTN_IsDynamic (RTN rtn)
ADDRINT SEC_Address (SEC sec)
BOOL SEC_IsReadable (SEC sec)
BOOL SEC_IsWriteable (SEC sec)
BOOL SEC_IsExecutable (SEC sec)
USIZE SEC_Size (SEC sec)
BOOL BBL_Original (BBL bbl)
ADDRINT BBL_Address (BBL bbl)
USIZE BBL_Size (BBL bbl)
IMG APP_ImgHead ()
IMG APP_ImgTail ()
BOOL ToolUseImageAPI ()
string PIN_UndecorateSymbolName (const string &symbolName, UNDECORATION style)
PIN_CALLBACK PIN_AddInternalExceptionHandler (INTERNAL_EXCEPTION_CALLBACK fun, VOID *val)
VOID PIN_TryStart (THREADID tid, INTERNAL_EXCEPTION_CALLBACK fun, VOID *val)
VOID PIN_TryEnd (THREADID tid)
+LOCALFUN string ProbeTag_String (PROBE_TAG tag)
BBL TRACE_AddInlineReturnEdg (TRACE trace)
BBL TRACE_AddInlineCallEdg (TRACE trace)
BBL TRACE_AddBranchEdg (TRACE trace)
BBL TRACE_AddFallthroughEdg (TRACE trace)
VOID TRACE_StraightenControlFlow (TRACE trace)
+LOCALFUN BOOL PIN_InsertProbeImp (ADDRINT src_addr, ADDRINT dst_addr, USIZE probeSize)
BOOL PIN_InsertProbe (ADDRINT src_addr, ADDRINT dst_addr)
VOID PIN_RemoveProbe (ADDRINT address)
ADDRINT TRACE_GenerateCode (TRACE trace)
BOOL INS_IsPinXfer (INS ins)
BOOL INS_IsNativeXfer (INS ins)
VOID INS_SetNativeXfer (INS ins)
VOID INS_skip_xlate_set (INS ins, BOOL b)
VOID TRACE_ExitsXferToNative (TRACE trace)
VOID INS_SetPinXfer (INS ins)
BOOL INS_IsNativeCall (INS ins)
BOOL INS_IsXlateCall (INS ins)
VOID INS_SetXlateCall (INS ins)
VOID INS_SetNativeCall (INS ins)
BOOL PIN_IsProbeMode ()
BOOL PIN_IsAttaching ()
+LOCALFUN BOOL CheckInsSequenceForProbe (INS ins, UINT32 probe_size)
BOOL BBL_InvalidForProbe (BBL bbl)
LOCALFUN BOOL RTN_CheckRtnSizeForProbe (RTN rtn, INS target_ins, BOOL checkForPadding, UINT32 probe_size)
LOCALFUN BOOL ProbeMayOverwriteBranchTarget (INS target_ins, UINT32 probe_size, BOOL *mayOverwriteUnidentifiedBranchTarget)
LOCALFUN PROBE_TAG CheckProbeSafetyStatically (INS ins, RTN rtn, BOOL checkForPadding, UINT32 probe_size)
+LOCALFUN PROBE_TAG RTN_IsRelocatable (RTN rtn)
LOCALFUN PROBE_TAG CheckForProbeOverlap (INS ins, USIZE probe_size, BOOL allowPOP)
LOCALFUN PROBE_TAG CheckForSafeProbe (INS ins, BOOL allowPOP, USIZE *probe_size, USIZE suggested_probe_size, PROBE_MODE mode, BOOL checkForPadding)
+LOCALFUN BOOL RTN_CheckForSafeProbe (RTN rtn, BOOL allowPOP, PROBE_TAG *tagptr, USIZE *probe_size, USIZE suggested_probe_size, PROBE_MODE mode, BOOL checkForPadding)
BOOL RTN_IsSafeForProbedInsertion (RTN rtn)
BOOL RTN_IsSafeForProbedInsertionEx (RTN rtn, PROBE_MODE mode)
BOOL RTN_IsSafeForProbedReplacement (RTN rtn)
BOOL RTN_IsSafeForProbedReplacementEx (RTN rtn, PROBE_MODE mode)
+LOCALFUN IARGLIST CookArguments (va_list argList, ADDRINT instAddress, BOOL addReturnReg)
+LOCALFUN IARGLIST CookArgumentsRTN (va_list argList, RTN rtn)
+LOCALFUN IARGLIST CookArgumentsINS (va_list argList, INS ins)
+LOCALFUN AFUNPTR RTN_ReplaceSignatureProbedImpl (RTN orgRtn, AFUNPTR replacement, PROBE_MODE mode, va_list argList)
AFUNPTR RTN_ReplaceSignatureProbed (RTN replacedRtn, AFUNPTR replacementFun,...)
AFUNPTR RTN_ReplaceSignatureProbedEx (RTN replacedRtn, PROBE_MODE mode, AFUNPTR replacementFun,...)
VOID INS_ReplaceSignatureProbed (INS orgIns, AFUNPTR replacementFunptr,...)
LOCALFUN ADDRINT TRACE_Oaddr (TRACE trace)
AFUNPTR RTN_InsertProbe (RTN rtn, AFUNPTR replacement, PROBE_MODE mode)
LOCALFUN VOID RTN_InsertCallProbedImpl (RTN rtn, IPOINT action, AFUNPTR funptr, PROBE_MODE mode, va_list argList)
VOID RTN_InsertCallProbed (RTN orgRtn, IPOINT action, AFUNPTR funptr,...)
VOID RTN_InsertCallProbedEx (RTN orgRtn, IPOINT action, PROBE_MODE mode, AFUNPTR funptr,...)
+LOCALFUN BOOL INS_CheckForProbeInsertion (INS ins)
BOOL PIN_IsSafeForProbedInsertion (ADDRINT addr)
VOID INS_InsertCallProbed (INS orgIns, IPOINT action, AFUNPTR funPtr,...)
VOID PIN_InsertCallProbed (ADDRINT addr, AFUNPTR funptr,...)
INT32 RTN_CodeRangesProbed (RTN rtn, INT32 num, PIN_CODE_RANGE *buffer)
VOID CompleteProbesInstrumentationForCurrentModule (IMG img)
VOID Open_Rtn (RTN rtn)
VOID Close_Rtn (RTN rtn)
PROTO PROTO_Allocate (PARG_T returnArg, CALLINGSTD_TYPE cstype, const char *name,...)
VOID PROTO_Free (PROTO proto)
GLOBALCONST PIN_CALLBACK PIN_CALLBACK_INVALID (0)
VOID VmFunctionNotInitialized ()
+LOCALFUN VOID PIN_RemoveToolCallbacks ()
+LOCALVAR KNOB< BOOL > KnobProfile (KNOB_MODE_WRITEONCE,"supported:stat","profile","0","print amount of memory dynamically allocated but not yet freed by the tool")
BOOL IsThreadInFiniCallback (OS_THREAD_ID sysId)
LOCALFUN VOID Shutdown (INT32 exitCode)
+LOCALFUN VOID DoInstructions (TRACE trace)
+LOCALFUN BOOL CheckNoJITCallbacks ()
+LOCALFUN BOOL CheckNoProbeCallbacks ()
LOCALINLINE OS_THREAD_ID GetCurrentSysId ()
OS_THREAD_ID GetCurrentSysIdById (THREADID tid)
+LOCALVAR KNOB< BOOL > KnobCheckLocks (KNOB_MODE_WRITEONCE,"supported:message","checklocks","1","Check locks are used correctly")
+LOCALFUN VOID InitClientLock ()
VOID CheckPinClientLock (const CHAR *funname)
VOID PIN_LockClient ()
VOID PIN_UnlockClient ()
BOOL PIN_TryClientLock ()
BOOL PIN_CallerOwnsClientMutex (OS_THREAD_ID osid)
BOOL PIN_CallerOwnsClientMutex ()
VOID EnterPinClientMasterMode ()
VOID ExitPinClientMasterMode ()
+LOCALFUN BOOL TraceWithFunctionReplacement (TRACE trace)
LOCALFUN size_t InstFetcher (void *copyBuf, const VOID *address, size_t maxSizeToCopy, EXCEPTION_INFO *pExceptInfo)
+LOCALFUN VOID SetInTraceCallbacks ()
+LOCALFUN VOID ReSetInTraceCallbacks ()
BOOL GetInTraceCallbacks ()
VOID CallTraceCallbacks (REGION *region)
INS TraceFirstIns (ADDRINT currTraceAddr)
LOCALFUN VOID CallFinis (INT32 code)
LOCALFUN VOID NotifyOutOfMemory (size_t size)
LOCALFUN VOID NotifyPrepareForFini ()
LOCALFUN ADDRINT PIN_FAST_ANALYSIS_CALL CallMemoryAddrTrans (PIN_MEM_TRANS_INFO *memTransInfo, void *)
LOCALFUN VOID CallForksBefore (THREADID threadId, const CONTEXT *ctxt)
LOCALFUN VOID CallForksAfterInParent (THREADID threadId, const CONTEXT *ctxt)
LOCALFUN VOID CallForksAfterInChild (THREADID threadId, const CONTEXT *ctxt)
VOID DoDetachs ()
VOID NotifyDetachCompletedJitMode ()
LOCALFUN VOID ImageInitializeFirst ()
LOCALFUN VOID CallApplicationStart ()
VOID DoDetachsProbed ()
VOID CallDetachCompletionCallback ()
VOID DoAttachsProbed ()
LOCALFUN VOID InitializeClientTls (THREADID threadIndex)
LOCALFUN VOID DestroyClientTls (THREADID threadIndex)
LOCALFUN VOID CallThreadStarts (THREADID threadIndex, CONTEXT *ctxt, INT32 flags)
LOCALFUN VOID CallThreadFinis (THREADID threadIndex, const CONTEXT *ctxt, INT32 code)
LOCALFUN VOID CallContextChanges (THREADID threadIndex, CONTEXT_CHANGE_REASON reason, const CONTEXT *from, CONTEXT *to, INT32 info)
LOCALFUN VOID CallSyscallEntry (THREADID threadIndex, CONTEXT *ctxt, SYSCALL_STANDARD std)
LOCALFUN VOID CallSyscallExit (THREADID threadIndex, CONTEXT *ctxt, SYSCALL_STANDARD std)
LOCALFUN VOID CallSmcCallbacks (ADDRINT traceStartAddress, ADDRINT traceEndAddress)
LOCALFUN BOOL CallInterceptSignal (THREADID tid, INT32 sig, CONTEXT *ctxt, BOOL hasHandler, const EXCEPTION_INFO *pExceptInfo)
LOCALFUN VOID CallThreadAttachInProbeMode (VOID *sigmask)
LOCALFUN VOID CallThreadDetachInProbeMode ()
LOCALFUN VOID CallThreadAttachInJitMode (THREADID threadIndex, CONTEXT *ctxt)
LOCALFUN VOID CallThreadDetachInJitMode (THREADID threadIndex, const CONTEXT *ctxt)
VOID CallProbesInserted (IMG img)
VOID PIN_WriteErrorMessage (const char *msg, INT32 type, PIN_ERR_SEVERITY_TYPE severity, INT32 num,...)
+LOCALFUN VOID DoReplaceFunByNativeCall (INS ins, VOID *v)
+LOCALFUN VOID DoInstrumentForFunReplacement (REGION *region, BOOL firstInstIsReplaceable)
AFUNPTR RTN_Replace (RTN replacedRtn, AFUNPTR replacementFun)
AFUNPTR RTN_ReplaceSignature (RTN replacedRtn, AFUNPTR replacementFun,...)
AFUNPTR RTN_ReplaceProbed (RTN replacedRtn, AFUNPTR replacementFun)
AFUNPTR RTN_ReplaceProbedEx (RTN replacedRtn, PROBE_MODE mode, AFUNPTR replacementFun)
VOID CheckNotInCallback (THREADID tid, const char *function)
VOID PIN_CallApplicationFunction (const CONTEXT *ctxt, THREADID tid, CALLINGSTD_TYPE cstype, AFUNPTR origFunPtr, CALL_APPLICATION_FUNCTION_PARAM *param,...)
VOID CallApplicationFunctionUnchecked (const CONTEXT *ctxt, THREADID tid, CALLINGSTD_TYPE cstype, AFUNPTR origFunPtr, CALL_APPLICATION_FUNCTION_PARAM *param,...)
BOOL INS_IsAddedForFunctionReplacement (INS ins)
PIN_DEPRECATED_API VOID PIN_RegisterItcAuxCallBackPushFun (AFUNPTR callBackPushFun)
PIN_DEPRECATED_API VOID RTN_ComplexReplaceWithUninstrumentedRoutine (RTN replacedRtn, AFUNPTR replacementFun)
PIN_DEPRECATED_API ADDRINT PIN_FindAlternateAppStack ()
VOID CALLBACK_SetExecutionPriority (PIN_CALLBACK callback, INT32 priority)
INT32 CALLBACK_GetExecutionPriority (PIN_CALLBACK callback)
PIN_CALLBACK TRACE_AddInstrumentFunction (TRACE_INSTRUMENT_CALLBACK fun, VOID *val)
PIN_CALLBACK INS_AddInstrumentFunction (INS_INSTRUMENT_CALLBACK fun, VOID *val)
PIN_CALLBACK PIN_AddFiniFunction (FINI_CALLBACK fun, VOID *val)
PIN_CALLBACK PIN_AddPrepareForFiniFunction (PREPARE_FOR_FINI_CALLBACK fun, VOID *val)
VOID PIN_AddFetchFunction (FETCH_CALLBACK fun, VOID *val)
size_t PIN_FetchCode (void *copyBuf, const VOID *address, size_t maxSize, EXCEPTION_INFO *pExceptInfo)
VOID PIN_AddOutOfMemoryFunction (OUT_OF_MEMORY_CALLBACK fun, VOID *val)
VOID PIN_AddMemoryAddressTransFunction (MEMORY_ADDR_TRANS_CALLBACK fun, VOID *val)
VOID TRACE_AddSmcDetectedFunction (SMC_CALLBACK fun, VOID *val)
MEMORY_ADDR_TRANS_CALLBACK PIN_GetMemoryAddressTransFunction ()
PIN_CALLBACK PIN_AddDetachFunction (DETACH_CALLBACK fun, VOID *val)
PIN_CALLBACK PIN_AddDetachFunctionProbed (DETACH_PROBED_CALLBACK fun, VOID *val)
PIN_CALLBACK PIN_AddThreadStartFunction (THREAD_START_CALLBACK fun, VOID *val)
PIN_CALLBACK PIN_AddThreadAttachProbedFunction (THREAD_ATTACH_PROBED_CALLBACK fun, VOID *val)
PIN_CALLBACK PIN_AddThreadAttachFunction (THREAD_ATTACH_CALLBACK fun, VOID *val)
PIN_CALLBACK PIN_AddThreadDetachProbedFunction (THREAD_DETACH_PROBED_CALLBACK fun, VOID *val)
PIN_CALLBACK PIN_AddThreadDetachFunction (THREAD_DETACH_CALLBACK fun, VOID *val)
PIN_CALLBACK PIN_AddApplicationStartFunction (APPLICATION_START_CALLBACK fun, VOID *val)
PIN_CALLBACK PIN_AddThreadFiniFunction (THREAD_FINI_CALLBACK fun, VOID *val)
PIN_CALLBACK PIN_AddContextChangeFunction (CONTEXT_CHANGE_CALLBACK fun, VOID *val)
PIN_CALLBACK PIN_AddSyscallEntryFunction (SYSCALL_ENTRY_CALLBACK fun, VOID *val)
PIN_CALLBACK PIN_AddSyscallExitFunction (SYSCALL_EXIT_CALLBACK fun, VOID *val)
BOOL PIN_InterceptSignal (INT32 sig, INTERCEPT_SIGNAL_CALLBACK fun, VOID *val)
BOOL PIN_UnblockSignal (INT32 sig, BOOL enable)
VOID PIN_SetSmcSupport (SMC_ENABLE_DISABLE_TYPE enable_disable)
PIN_CALLBACK PIN_AddProbesInsertedFunction (PROBES_INSERTED_CALLBACK fun, VOID *val)
PIN_CALLBACK PIN_AddForkFunction (FPOINT point, FORK_CALLBACK fun, VOID *val)
VOID PIN_RemoveInstrumentation ()
VOID PIN_RemoveInstrumentationInRange (ADDRINT start, ADDRINT end)
VOID PIN_RemoveFiniFunctions ()
VOID PIN_Detach ()
ATTACH_STATUS PIN_Attach (ATTACH_CALLBACK fun, VOID *val)
VOID PIN_DetachProbed ()
ATTACH_STATUS PIN_AttachProbed (ATTACH_PROBED_CALLBACK fun, VOID *val)
+LOCALFUN VOID CheckAndUpdateCondInstState (char const *typeName, CONDINSTSTATE &lastState, CONDINSTSTATE currState)
VOID INS_InsertPredicatedCall (INS ins, IPOINT ipoint, AFUNPTR funptr,...)
VOID INS_InsertCall (INS ins, IPOINT action, AFUNPTR funptr,...)
VOID INS_InsertIfCall (INS ins, IPOINT action, AFUNPTR funptr,...)
VOID INS_InsertThenCall (INS ins, IPOINT action, AFUNPTR funptr,...)
VOID INS_InsertIfPredicatedCall (INS ins, IPOINT action, AFUNPTR funptr,...)
VOID INS_InsertThenPredicatedCall (INS ins, IPOINT action, AFUNPTR funptr,...)
VOID AInsertCall (INS ins, IPOINT ipoint, PREDICATE pred, COND_CALL_TYPE condCallType, AFUNPTR funptr, va_list ap)
VOID AInsertVersionCase (INS ins, REG reg, INT32 case_value, ADDRINT version, va_list ap)
+LOCALFUN VOID StartProgram ()
PIN_CONFIGURATION_INFO PIN_CreateDefaultConfigurationInfo ()
VOID PIN_SetAllowedConcurrentCallbacks (PIN_CONFIGURATION_INFO options, PIN_CALLBACK_TYPE callbackType)
VOID PIN_StartProgram (PIN_CONFIGURATION_INFO options=PIN_CreateDefaultConfigurationInfo())
VOID PIN_StartProgramProbed ()
+LOCALFUN VOID DumpPinVersion ()
+LOCALVAR KNOB_COMMENT KnobPintoolFamily ("pintool","Pin tools switches")
+LOCALVAR KNOB_COMMENT KnobGeneralFamily ("supported","General developer switches")
+LOCALVAR KNOB_COMMENT KnobBasicFamily ("supported:basic","Basic switches")
+LOCALVAR KNOB_COMMENT KnobDebugFamily ("supported:debug","General switches")
+LOCALVAR KNOB_COMMENT KnobMessageFamily ("supported:message","Message switches")
+LOCALVAR KNOB_COMMENT KnobRegionFamily ("supported:region","Region generation switches")
+LOCALVAR KNOB_COMMENT KnobRegAllocFamily ("supported:regalloc","Register allocation switches")
+LOCALVAR KNOB< string > KnobLogFile (KNOB_MODE_WRITEONCE,"pintool","logfile","pintool.log","The log file path and file name")
+LOCALVAR KNOB< BOOL > KnobUniqueLogFiles (KNOB_MODE_WRITEONCE,"pintool","unique_logfile","0","The log file names will contain the pid")
+LOCALVAR KNOB< BOOL > KnobHelp1 (KNOB_MODE_WRITEONCE,"pintool","help","0","Print help message (Return failure of PIN_Init() in order to allow the tool\ + to print help message)")
+LOCALVAR KNOB< BOOL > KnobHelp2 (KNOB_MODE_WRITEONCE,"pintool","h","0","Print help message (Return failure of PIN_Init() in order to allow the tool\ + to print help message)")
KNOB< BOOL > KnobAppendLogFile (KNOB_MODE_WRITEONCE,"supported","append_logfile","0","Append to the end of the log file if it already exists")
MESSAGE_TYPE MessageTypeLogImage ("log_image","", false, false, false, false, LOGTYPE_LOGFILE,"pin log: image API")
MESSAGE_TYPE MessageTypeLogSym ("log_sym","", false, false, false, false, LOGTYPE_LOGFILE,"pin log: symbol API")
MESSAGE_TYPE MessageTypeLogProbe ("log_probe","", false, false, false, false, LOGTYPE_LOGFILE,"pin log: probe information")
MESSAGE_TYPE MessageTypeLogBuffer ("log_buffer","", false, false, false, true, LOGTYPE_LOGFILE,"pin log: buffering")
MESSAGE_TYPE MessageTypeLogUnwind ("log_unwind","", false, false, false, false, LOGTYPE_LOGFILE,"pin log: unwind")
MESSAGE_TYPE MessageTypeLogFetchRtnIns ("log_fetch_rtn_ins","", false, false, false, false, LOGTYPE_LOGFILE,"pin log: fetch rtn ins information")
PIN_DEPRECATED_API BOOL ParseCommandLine (int xargc, CHAR **xargv)
+LOCALFUN BOOL PIN_ParseCommandLine (int xargc, CHAR **xargv, BOOL standAlone)
+LOCALFUN VOID InitializeCallBacks ()
SECTION_END GLOBALDLLFUN PINCLIENTINT * ClientInt ()
GLOBALDLLCFUN PINCLIENTINT * ClientIntC ()
BOOL PIN_Init (INT32 argc, CHAR **argv)
VOID PIN_SetReplayMode (UINT32 flags)
TRACE TRACE_Allocate (ADDRINT addr)
TRACE TRACE_AllocateForProbe (PROBE_TYPE probeType, ADDRINT addr, RTN rtn, USIZE probeSize, BOOL mustReadAtLeastProbesizeBytes)
ADDRINT TRACE_RelocateOriginalInsAddr (ADDRINT addr)
VOID TRACE_Deallocate (TRACE trace)
RTN TRACE_CodeRtn (TRACE trace)
VOID TRACE_InsertCall (TRACE trace, IPOINT action, AFUNPTR funptr,...)
VOID TRACE_InsertIfCall (TRACE trace, IPOINT action, AFUNPTR funptr,...)
VOID TRACE_InsertThenCall (TRACE trace, IPOINT action, AFUNPTR funptr,...)
BBL TRACE_BblHead (TRACE trace)
BBL TRACE_BblTail (TRACE trace)
ADDRINT TRACE_Address (TRACE trace)
USIZE TRACE_Size (TRACE trace)
RTN TRACE_Rtn (TRACE trace)
BOOL TRACE_HasFallThrough (TRACE trace)
UINT32 TRACE_NumBbl (TRACE trace)
UINT32 TRACE_NumIns (TRACE trace)
VOID BBL_InsertCall (BBL bbl, IPOINT action, AFUNPTR funptr,...)
VOID BBL_InsertIfCall (BBL bbl, IPOINT action, AFUNPTR funptr,...)
VOID BBL_InsertThenCall (BBL bbl, IPOINT action, AFUNPTR funptr,...)
BOOL BBL_HasFallThrough (BBL bbl)
BOOL PIN_SupportsProcessorState (PROCESSOR_STATE state)
BOOL PIN_ContextContainsState (CONTEXT *ctxt, PROCESSOR_STATE state)
VOID PIN_SetContextRegval (CONTEXT *ctxt, REG reg, const UINT8 *val)
VOID PIN_GetContextRegval (const CONTEXT *ctxt, REG reg, UINT8 *val)
VOID PIN_SetContextReg (CONTEXT *ctxt, REG reg, ADDRINT val)
ADDRINT PIN_GetContextReg (const CONTEXT *ctxt, REG reg)
VOID PIN_SetContextFPState (CONTEXT *ctxt, const FPSTATE *fpstate)
VOID PIN_GetContextFPState (const CONTEXT *ctxt, FPSTATE *fpstate)
REGSET PIN_GetFullContextRegsSet ()
VOID PIN_SaveContext (const CONTEXT *ctxtFrom, CONTEXT *ctxtTo)
VOID PIN_ExecuteAt (const CONTEXT *ctxt)
VOID PIN_SetSyscallArgument (CONTEXT *ctxt, SYSCALL_STANDARD std, UINT32 argNum, ADDRINT val)
ADDRINT PIN_GetSyscallArgument (const CONTEXT *ctxt, SYSCALL_STANDARD std, UINT32 argNum)
VOID PIN_SetSyscallNumber (CONTEXT *ctxt, SYSCALL_STANDARD std, ADDRINT val)
ADDRINT PIN_GetSyscallNumber (const CONTEXT *ctxt, SYSCALL_STANDARD std)
ADDRINT PIN_GetSyscallReturn (const CONTEXT *ctxt, SYSCALL_STANDARD std)
ADDRINT PIN_GetSyscallErrno (const CONTEXT *ctxt, SYSCALL_STANDARD std)
VOID PIN_SetPhysicalContextReg (PHYSICAL_CONTEXT *pPhysCtxt, REG reg, ADDRINT val)
ADDRINT PIN_GetPhysicalContextReg (const PHYSICAL_CONTEXT *pPhysCtxt, REG reg)
VOID PIN_SetPhysicalContextFPState (PHYSICAL_CONTEXT *pPhysCtxt, const VOID *fpstate)
VOID PIN_GetPhysicalContextFPState (const PHYSICAL_CONTEXT *pPhysCtxt, VOID *fpstate)
VOID PIN_RaiseException (const CONTEXT *ctxt, THREADID tid, const EXCEPTION_INFO *pExceptInfo)
OS_THREAD_ID PIN_ClientFork ()
BOOL PIN_SpawnApplicationThread (const CONTEXT *ctxt)
+LOCALFUN VOID RecordInstructionMutation (INS ins, EXT ext, BOOL noDuplicates)
PIN_DEPRECATED_API BOOL INS_ChangeMemOpToBaseRegisterAddressMode (INS ins, MEMORY_TYPE mtype, REG newBase)
PIN_DEPRECATED_API BOOL INS_RewriteMemoryAddressingToBaseRegisterOnly (INS ins, MEMORY_TYPE mtype, REG newBase)
VOID INS_RewriteMemoryOperand (INS ins, UINT32 memindex, REG reg)
VOID INS_InsertIndirectJump (INS ins, IPOINT ipoint, REG reg)
VOID INS_InsertDirectJump (INS ins, IPOINT ipoint, ADDRINT tgt)
VOID GetVmLock ()
VOID ReleaseVmLock ()
REG PIN_ClaimToolRegister ()
CHAR * PIN_VmFullPath ()
const CHAR * PIN_ToolFullPath ()
BOOL IsProcessExiting ()
NORETURN VOID PIN_ExitProcess (INT32 exitCode)
INT PIN_GetPid ()
VOID INS_Delete (INS ins)
VOID IARGLIST_AddArguments (IARGLIST args,...)
IARGLIST IARGLIST_Alloc ()
VOID IARGLIST_Free (IARGLIST args)
size_t PIN_SafeCopy (VOID *dst, const VOID *src, size_t size)
size_t PIN_SafeCopyEx (VOID *dst, const VOID *src, size_t size, EXCEPTION_INFO *pExceptInfo)
VOID CheckPinInitialized ()
VOID INS_InsertFillBuffer (INS ins, IPOINT action, BUFFER_ID id,...)
VOID INS_InsertFillBufferPredicated (INS ins, IPOINT action, BUFFER_ID id,...)
VOID INS_InsertFillBufferThen (INS ins, IPOINT action, BUFFER_ID id,...)
VOID BBL_InsertFillBuffer (BBL bbl, IPOINT action, BUFFER_ID id,...)
VOID RTN_InsertFillBuffer (RTN rtn, IPOINT action, BUFFER_ID id,...)
VOID * CallBufferFullCallback (BUFFER_ID id, THREADID tid, CONTEXT *ctxt, VOID *buf, UINT64 numElts)
VOID CallAllBufferFullCallbacks (THREADID tid, CONTEXT *ctxt)
BUFFER_ID PIN_DefineTraceBuffer (size_t recordSize, UINT32 numPages, TRACE_BUFFER_CALLBACK fun, VOID *val)
VOID * PIN_AllocateBuffer (BUFFER_ID id)
VOID PIN_DeallocateBuffer (BUFFER_ID id, VOID *buf)
BOOL PIN_IsActionPending (THREADID tid)
UINT32 PIN_GetInitialThreadCount ()
VOID * PIN_GetBufferPointer (CONTEXT *const ctxt, BUFFER_ID id)
BOOL PIN_CheckReadAccess (VOID *addr)
BOOL PIN_CheckWriteAccess (VOID *addr)
ADDRINT PIN_GetAuxVectorValue (ADDRINT type, bool *found)
VOID PIN_ReplaySyscallEntry (THREADID tid, CONTEXT *ctxt, SYSCALL_STANDARD std)
VOID PIN_ReplaySyscallExit (THREADID tid, CONTEXT *ctxt, SYSCALL_STANDARD std)
NORETURN VOID PIN_ExitApplication (INT32 status)
+LOCALFUN const char * ContextChangeReasonName (CONTEXT_CHANGE_REASON r)
VOID PIN_ReplayContextChange (THREADID tid, const CONTEXT *from, CONTEXT *to, CONTEXT_CHANGE_REASON reason, INT32 info)
IMG PIN_ReplayImageLoad (const char *imageName, const char *fileName, ADDRINT loadOffset, REPLAY_IMAGE_TYPE imageType)
VOID PIN_ReplayImageUnload (IMG img)
BOOL PIN_WasMemoryReservedInLoadTime ()
PIN_CLIENT_STATE & PinClientState ()
+LOCALFUN VOID PinJitApiNotifyEvent (iJIT_JVM_EVENT event_type, void *eventSpecificData)
BOOL PIN_StopApplicationThreads (THREADID tid)
BOOL PIN_IsThreadStoppedInDebugger (THREADID tid)
VOID PIN_ResumeApplicationThreads (THREADID tid)
UINT32 PIN_GetStoppedThreadCount ()
THREADID PIN_GetStoppedThreadId (UINT32 i)
const CONTEXTPIN_GetStoppedThreadContext (THREADID tid)
CONTEXTPIN_GetStoppedThreadWriteableContext (THREADID tid)
OS_THREAD_ID PIN_GetTid ()
THREADID PIN_ThreadId ()
PIN_THREAD_UID PIN_ThreadUid ()
OS_THREAD_ID PIN_GetParentTid ()
VOID PIN_Sleep (UINT32 milliseconds)
VOID PIN_Yield ()
THREADID PIN_SpawnInternalThread (ROOT_THREAD_FUNC *pThreadFunc, VOID *arg, size_t stackSize, PIN_THREAD_UID *pThreadUid)
VOID PIN_ExitThread (INT32 exitCode)
BOOL PIN_IsApplicationThread ()
BOOL PIN_WaitForThreadTermination (const PIN_THREAD_UID &threadUid, UINT32 milliseconds, INT32 *pExitCode)
TLS_KEY PIN_CreateThreadDataKey (DESTRUCTFUN destruct_func)
BOOL PIN_DeleteThreadDataKey (TLS_KEY key)
BOOL PIN_SetThreadData (TLS_KEY key, const VOID *data)
BOOL PIN_SetThreadData (TLS_KEY key, const VOID *data, THREADID threadId)
VOID * PIN_GetThreadData (TLS_KEY key)
VOID * PIN_GetThreadData (TLS_KEY key, THREADID threadId)
VOID BBL_SetTargetVersion (BBL bbl, ADDRINT version)
ADDRINT TRACE_Version (TRACE trace)
VOID INS_InsertVersionCase (INS ins, REG reg, INT32 case_value, ADDRINT version,...)

Variables

+LOCALCONST UINT32 crc32table []
+LOCALVAR const CHAR * debug_state_func = "_dl_debug_state"
+LOCALVAR const CHAR * debug_state_var = "_r_debug"
+LOCALTYPE typedef void *(* rbrk_ft )(void)
+LOCALVAR BOOL threadInScan = FALSE
+LOCALVAR BOOL SymInit = false
+LOCALVAR SYMBOL_INFO_MODE SymMode = NO_SYMBOLS
+LOCALTYPE typedef pair< string,
+ ADDRINT > 
SYM_BASIC_INFO
+LOCALTYPE typedef set< SYM_BASIC_INFO
+>::const_iterator 
SYMSET_CONST_ITERATOR
+LOCALVAR const INT PLT0_ENTRY_SIZE = 16
+LOCALVAR const INT PLT_ENTRY_SIZE = 16
+LOCALVAR const INT RELC_INDEX_OFFSET = 7
+struct {
   const string   name
   const string   replacement
   size_t   length
sanitizations []
+LOCALTYPE typedef list< INSTR > ILIST
+LOCALTYPE typedef map< ADDRINT,
+ INSTR_INFO > 
IMAP
+LOCALVAR IMAP imap
+LOCALTYPE typedef COMPLEX_CALLBACKVAL<
+ FOLLOW_CHILD_PROCESS_CALLBACK
FOLLOW_CHILD_PROCESS_CALLBACKVAL
+LOCALTYPE typedef FOLLOW_CHILD_PROCESS_CALLBACKVAL::FUNS FOLLOW_CHILD_PROCESS_CALLBACKVALFUNS
+LOCALVAR FOLLOW_CHILD_PROCESS_CALLBACKVALFUNS followChildProcessList
+LOCALTYPE typedef COMPLEX_CALLBACKVAL<
+ DEBUG_INTERPRETER_CALLBACK
DEBUG_INTERPRETER_CALLBACKVAL
+LOCALTYPE typedef DEBUG_INTERPRETER_CALLBACKVAL::FUNS DEBUG_INTERPRETER_CALLBACKFUNS
+LOCALVAR DEBUG_INTERPRETER_CALLBACKFUNS debugInterpreterList
+LOCALTYPE typedef COMPLEX_CALLBACKVAL<
+ DEBUG_BREAKPOINT_CALLBACK
DEBUG_BREAKPOINT_CALLBACKVAL
+LOCALTYPE typedef DEBUG_BREAKPOINT_CALLBACKVAL::FUNS DEBUG_BREAKPOINT_CALLBACKFUNS
+LOCALVAR DEBUG_BREAKPOINT_CALLBACKFUNS debugBreakpointList
+LOCALTYPE typedef SIMPLE_CALLBACKVAL<
+ INTERCEPT_DEBUGGING_EVENT_CALLBACK
INTERCEPT_DEBUGGING_EVENT_CALLBACKVAL
+LOCALVAR INTERCEPT_DEBUGGING_EVENT_CALLBACKVAL InterceptDebuggingEventBreakpoint
+LOCALVAR INTERCEPT_DEBUGGING_EVENT_CALLBACKVAL InterceptDebuggingEventSingleStep
+LOCALVAR INTERCEPT_DEBUGGING_EVENT_CALLBACKVAL InterceptDebuggingEventAsyncBreak
+LOCALVAR GET_EMULATED_REGISTER_CALLBACK GetEmulatedRegisterCallback
+LOCALVAR SET_EMULATED_REGISTER_CALLBACK SetEmulatedRegisterCallback
+LOCALVAR GET_TARGET_DESCRIPTION_CALLBACK GetTargetDescriptionCallback
+LOCALVAR VOID * EmulatedRegisterCallbackVal
+LOCALTYPE typedef SIMPLE_CALLBACKVAL<
+ SIGNAL_BEFORE_CALLBACK
SIGNAL_BEFORE_CALLBACKVAL
+LOCALTYPE typedef SIGNAL_BEFORE_CALLBACKVAL::FUNS SIGNAL_BEFORE_CALLBACKFUNS
+LOCALVAR SIGNAL_BEFORE_CALLBACKFUNS signalBeforeList
+LOCALTYPE typedef SIMPLE_CALLBACKVAL<
+ SIGNAL_AFTER_CALLBACK
SIGNAL_AFTER_CALLBACKVAL
+LOCALTYPE typedef SIGNAL_AFTER_CALLBACKVAL::FUNS SIGNAL_AFTER_CALLBACKFUNS
+LOCALVAR SIGNAL_AFTER_CALLBACKFUNS signalAfterList
+LOCALTYPE typedef SIMPLE_CALLBACKVAL<
+ THREAD_BEGIN_CALLBACK
THREAD_BEGIN_CALLBACKVAL
+LOCALTYPE typedef THREAD_BEGIN_CALLBACKVAL::FUNS THREAD_BEGIN_CALLBACKFUNS
+LOCALVAR THREAD_BEGIN_CALLBACKFUNS threadBeginList
+LOCALTYPE typedef SIMPLE_CALLBACKVAL<
+ THREAD_END_CALLBACK
THREAD_END_CALLBACKVAL
+LOCALTYPE typedef THREAD_END_CALLBACKVAL::FUNS THREAD_END_CALLBACKFUNS
+LOCALVAR THREAD_END_CALLBACKFUNS threadEndList
+LOCALTYPE typedef std::map<
+ int, SIGNAL_INTERCEPT_CALLBACK
SIGNAL_INTERCEPT_MAP
+LOCALVAR SIGNAL_INTERCEPT_MAP signalInterceptMap
+LOCALTYPE typedef pair< RTN_KEY,
+ RTN > 
RTN_PAIR
+LOCALTYPE typedef map< RTN_KEY,
+ RTN > 
RTN_MAP
+LOCALVAR RTN_MAP rtn_map
+LOCALTYPE typedef list< MemRange > RTN_OUTSIDE_RANGES_LIST
+LOCALTYPE typedef map< ADDRINT,
+ OUTSIDE_TARGET_MEM_RANGE,
+ std::less< ADDRINT > > 
RTN_OUTSIDE_RANGES_MAP
+LOCALTYPE typedef map< ADDRINT,
+ OUTSIDE_TARGET, std::less<
+ ADDRINT > > 
RTN_OUTSIDE_TARGETS_MAP
+LOCALTYPE typedef map< ADDRINT,
+ BBL, std::less< ADDRINT > > 
RTN_OUTSIDE_PREV_BBLS_MAP
+LOCALTYPE typedef vector<
+ INS > 
RTN_UJMP_VECTOR
+LOCALVAR const char * WHOLE_TEXT_SECTION = ".text"
+LOCALVAR const char * UNNAMED_IMAGE_ENTRY_POINT = "unnamedImageEntryPoint"
+LOCALTYPE typedef COMPLEX_CALLBACKVAL<
+ IMAGECALLBACK
IMAGECALLBACKVAL
+LOCALTYPE typedef IMAGECALLBACKVAL::FUNS IMAGECALLBACKFUNS
+LOCALVAR IMAGECALLBACKFUNS imageLoadList
+LOCALVAR IMAGECALLBACKFUNS imageUnloadList
+LOCALVAR APP app
+LOCALVAR RTN OpenRtn
+LOCALVAR IMG OpenImg
+LOCALTYPE typedef COMPLEX_CALLBACKVAL<
+ RTN_INSTRUMENT_CALLBACK
RTN_INSTRUMENT_CALLBACKVAL
+LOCALTYPE typedef RTN_INSTRUMENT_CALLBACKVAL::FUNS RTN_INSTRUMENT_CALLBACKFUNS
+LOCALVAR RTN_INSTRUMENT_CALLBACKFUNS rtnList
+LOCALVAR std::list< IMAGE_LOAD_OP > savedImageLoadOps
+LOCALVAR std::list< IMAGE_LOAD_OP2 > savedImageLoadOps2
GLOBALCONST UINT32 MAX_IEH_CALLBACKS = 32
+LOCALVAR PINVM::PINSYNC_RWLOCK syscallCallbacksRWLock
+LOCALTYPE typedef COMPLEX_CALLBACKVAL<
+ INS_INSTRUMENT_CALLBACK
INS_INSTRUMENT_CALLBACKVAL
+LOCALTYPE typedef INS_INSTRUMENT_CALLBACKVAL::FUNS INS_INSTRUMENT_CALLBACKFUNS
+LOCALVAR INS_INSTRUMENT_CALLBACKFUNS insList
+LOCALTYPE typedef COMPLEX_CALLBACKVAL<
+ TRACE_INSTRUMENT_CALLBACK
TRACE_INSTRUMENT_CALLBACKVAL
+LOCALTYPE typedef TRACE_INSTRUMENT_CALLBACKVAL::FUNS TRACE_INSTRUMENT_CALLBACKFUNS
+LOCALVAR TRACE_INSTRUMENT_CALLBACKFUNS traceList
+LOCALVAR OUT_OF_MEMORY_CALLBACK outOfMemoryFun = 0
+LOCALVAR VOID * outOfMemoryVal = 0
+LOCALVAR MEMORY_ADDR_TRANS_CALLBACK memoryAddrTransFun = 0
+LOCALVAR VOID * memoryAddrTransVal = 0
+LOCALTYPE typedef COMPLEX_CALLBACKVAL<
+ SMC_CALLBACK
SMC_CALLBACKVAL
+LOCALTYPE typedef SMC_CALLBACKVAL::FUNS SMC_CALLBACKFUNS
+LOCALVAR SMC_CALLBACKFUNS smcCallbackList
+LOCALTYPE typedef COMPLEX_CALLBACKVAL<
+ PREPARE_FOR_FINI_CALLBACK
PREPARE_FOR_FINI_CALLBACKVAL
+LOCALTYPE typedef PREPARE_FOR_FINI_CALLBACKVAL::FUNS PREPARE_FOR_FINI_CALLBACKFUNS
+LOCALVAR PREPARE_FOR_FINI_CALLBACKFUNS prepareForFiniList
+LOCALTYPE typedef COMPLEX_CALLBACKVAL<
+ FINI_CALLBACK
FINI_CALLBACKVAL
+LOCALTYPE typedef FINI_CALLBACKVAL::FUNS FINI_CALLBACKFUNS
+LOCALVAR FINI_CALLBACKFUNS finiList
+LOCALVAR FETCH_CALLBACK fetchCallbackFun = 0
+LOCALVAR VOID * fetchCallbackVal = 0
+LOCALTYPE typedef COMPLEX_CALLBACKVAL<
+ FORK_CALLBACK
FORK_CALLBACKVAL
+LOCALTYPE typedef FORK_CALLBACKVAL::FUNS FORK_CALLBACKFUNS
+LOCALVAR FORK_CALLBACKFUNS forkListBefore
+LOCALVAR FORK_CALLBACKFUNS forkListAfterInParent
+LOCALVAR FORK_CALLBACKFUNS forkListAfterInChild
+LOCALTYPE typedef COMPLEX_CALLBACKVAL<
+ DETACH_CALLBACK
DETACH_CALLBACKVAL
+LOCALTYPE typedef DETACH_CALLBACKVAL::FUNS DETACH_CALLBACKFUNS
+LOCALVAR DETACH_CALLBACKFUNS detachList
+LOCALTYPE typedef COMPLEX_CALLBACKVAL<
+ DETACH_PROBED_CALLBACK
DETACH_PROBED_CALLBACKVAL
+LOCALTYPE typedef DETACH_PROBED_CALLBACKVAL::FUNS DETACH_PROBED_CALLBACKFUNS
+LOCALVAR DETACH_PROBED_CALLBACKFUNS detachProbedList
+LOCALVAR ATTACH_PROBED_CALLBACK attachProbedFun = 0
+LOCALVAR VOID * attachProbedVal = 0
+LOCALTYPE typedef COMPLEX_CALLBACKVAL<
+ APPLICATION_START_CALLBACK
APPLICATION_START_CALLBACKVAL
+LOCALTYPE typedef APPLICATION_START_CALLBACKVAL::FUNS APPLICATION_START_CALLBACKFUNS
+LOCALVAR APPLICATION_START_CALLBACKFUNS appStartList
+LOCALTYPE typedef COMPLEX_CALLBACKVAL<
+ THREAD_START_CALLBACK
THREAD_START_CALLBACKVAL
+LOCALTYPE typedef THREAD_START_CALLBACKVAL::FUNS THREAD_START_CALLBACKFUNS
+LOCALVAR THREAD_START_CALLBACKFUNS threadStartList
+LOCALTYPE typedef COMPLEX_CALLBACKVAL<
+ THREAD_ATTACH_PROBED_CALLBACK
THREAD_ATTACH_PROBED_CALLBACKVAL
+LOCALTYPE typedef THREAD_ATTACH_PROBED_CALLBACKVAL::FUNS THREAD_ATTACH_PROBED_CALLBACKFUNS
+LOCALVAR THREAD_ATTACH_PROBED_CALLBACKFUNS threadAttachProbedList
+LOCALTYPE typedef COMPLEX_CALLBACKVAL<
+ THREAD_DETACH_PROBED_CALLBACK
THREAD_DETACH_PROBED_CALLBACKVAL
+LOCALTYPE typedef THREAD_DETACH_PROBED_CALLBACKVAL::FUNS THREAD_DETACH_PROBED_CALLBACKFUNS
+LOCALVAR THREAD_DETACH_PROBED_CALLBACKFUNS threadDetachProbedList
+LOCALTYPE typedef COMPLEX_CALLBACKVAL<
+ THREAD_ATTACH_CALLBACK
THREAD_ATTACH_CALLBACKVAL
+LOCALTYPE typedef THREAD_ATTACH_CALLBACKVAL::FUNS THREAD_ATTACH_CALLBACKFUNS
+LOCALVAR THREAD_ATTACH_CALLBACKFUNS threadAttachJitList
+LOCALTYPE typedef COMPLEX_CALLBACKVAL<
+ THREAD_DETACH_CALLBACK
THREAD_DETACH_CALLBACKVAL
+LOCALTYPE typedef THREAD_DETACH_CALLBACKVAL::FUNS THREAD_DETACH_CALLBACKFUNS
+LOCALVAR THREAD_DETACH_CALLBACKFUNS threadDetachJitList
+LOCALTYPE typedef COMPLEX_CALLBACKVAL<
+ THREAD_FINI_CALLBACK
THREAD_FINI_CALLBACKVAL
+LOCALTYPE typedef THREAD_FINI_CALLBACKVAL::FUNS THREAD_FINI_CALLBACKFUNS
+LOCALVAR THREAD_FINI_CALLBACKFUNS threadFiniList
+LOCALTYPE typedef COMPLEX_CALLBACKVAL<
+ CONTEXT_CHANGE_CALLBACK
CONTEXT_CHANGE_CALLBACKVAL
+LOCALTYPE typedef CONTEXT_CHANGE_CALLBACKVAL::FUNS CONTEXT_CHANGE_CALLBACKFUNS
+LOCALVAR CONTEXT_CHANGE_CALLBACKFUNS contextChangeList
+LOCALTYPE typedef COMPLEX_CALLBACKVAL<
+ SYSCALL_ENTRY_CALLBACK
SYSCALL_ENTRY_CALLBACKVAL
+LOCALTYPE typedef SYSCALL_ENTRY_CALLBACKVAL::FUNS SYSCALL_ENTRY_CALLBACKFUNS
+LOCALVAR SYSCALL_ENTRY_CALLBACKFUNS syscallEntryList
+LOCALTYPE typedef COMPLEX_CALLBACKVAL<
+ SYSCALL_EXIT_CALLBACK
SYSCALL_EXIT_CALLBACKVAL
+LOCALTYPE typedef SYSCALL_EXIT_CALLBACKVAL::FUNS SYSCALL_EXIT_CALLBACKFUNS
+LOCALVAR SYSCALL_EXIT_CALLBACKFUNS syscallExitList
+LOCALTYPE typedef SIMPLE_CALLBACKVAL<
+ INTERCEPT_SIGNAL_CALLBACK
INTERCEPT_SIGNAL_CALLBACKVAL
+LOCALTYPE typedef std::map<
+ int, INTERCEPT_SIGNAL_CALLBACKVAL > 
INTERCEPT_SIGNAL_MAP
+LOCALVAR INTERCEPT_SIGNAL_MAP interceptSignalMap
+LOCALTYPE typedef COMPLEX_CALLBACKVAL<
+ PROBES_INSERTED_CALLBACK
PROBES_INSERTED_CALLBACKVAL
+LOCALTYPE typedef PROBES_INSERTED_CALLBACKVAL::FUNS PROBES_INSERTED_CALLBACKFUNS
+LOCALVAR PROBES_INSERTED_CALLBACKFUNS probesInsertedList
+LOCALTYPE typedef SIMPLE_CALLBACKVAL<
+ TRACE_BUFFER_CALLBACK
TRACE_BUFFER_CALLBACKVAL
+LOCALTYPE typedef std::map<
+ BUFFER_ID, TRACE_BUFFER_CALLBACKVAL > 
TRACE_BUFFER_CALLBACK_MAP
+LOCALVAR TRACE_BUFFER_CALLBACK_MAP traceBufferCallbackMap
+LOCALTYPE typedef COMPLEX_CALLBACKVAL<
+ DEBUG_INTERPRETER_CALLBACK
DEBUG_INTERPRETER_CALLBACKVAL
+LOCALTYPE typedef DEBUG_INTERPRETER_CALLBACKVAL::FUNS DEBUG_INTERPRETER_CALLBACKFUNS
+LOCALVAR DEBUG_INTERPRETER_CALLBACKFUNS debugInterpreterList
+LOCALVAR set< ADDRINT, less<
+ ADDRINT > > 
addrReferences
+LOCALVAR UINT32 replayModeFlags
+LOCALVAR INT32 ToolArgc
+LOCALVAR CHAR ** ToolArgv
+LOCALVAR PIN_CONFIGURATION pinStartOptions
+LOCALVAR volatile BOOL processExiting = FALSE
+LOCALVAR OS_THREAD_ID IdOfThreadInFiniCallback = 0
+LOCALVAR PIN_CLIENT_MUTEX PinClientMutex
+LOCALVAR BOOL inTraceCallbacks = FALSE
+LOCALVAR REPLACEDFUN::LIST replacedFunList
+LOCALVAR CONDINSTSTATE condInstStateForIns = CONDINST_NORMAL
+LOCALVAR PREDICATE insLastIfPredicate = PREDICATE_ALWAYS_TRUE
LOCALVAR PINCLIENTINT ClientIntData
+LOCALVAR CONDINSTSTATE condInstStateForTrace = CONDINST_NORMAL
+LOCALVAR CONDINSTSTATE condInstStateForBbl = CONDINST_NORMAL
GLOBALCONST UINT32 MAX_CLIENT_TLS_KEYS = (TLS_KEY_CLIENT_LAST - TLS_KEY_CLIENT_FIRST + 1)
LOCALTYPE typedef TLS_KEY_ALLOCATOR<
+ TLS_KEY_CLIENT_FIRST, TLS_KEY_CLIENT_LAST > 
CLIENT_TLS_KEY_ALLOCATOR
LOCALVAR CLIENT_TLS_KEY_ALLOCATORpClientTlsKeyAllocator
+


Detailed Description

+PIN DWARF debugging information using libpindwarf (LLVM based) library +

+


Typedef Documentation

+

+ + + + +
+ + + + +
typedef map<ADDRINT, USIZE> LEVEL_PINCLIENT::CODE_RANGES
+
+ + + + + +
+   + + +

+Map of code ranges in image. Key is base address of code range, Value is size of the range.

+

+ + + + +
+ + + + +
typedef VOID(* LEVEL_PINCLIENT::GET_EMULATED_REGISTER_CALLBACK)(unsigned toolRegId, THREADID tid, CONTEXT *ctxt, VOID *data, VOID *v)
+
+ + + + + +
+   + + +

+Call-back function that Pin calls to get the value of a register emulated by the tool.

+

Parameters:
+ + + + + + +
[in] toolRegId Identifies the emulated register (from the registerDescriptions parameter to PIN_AddDebuggerRegisterEmulator()).
[in] tid Identifies the thread whose register is read.
[in] ctxt Architected register state for the thread.
[out] data Points to a buffer that receives the value of the register. The value must be stored in little-endian format (least significant bytes first). If the register size is not an even multiple of bytes, the upper bits of the last byte (most significant byte) are unused. If the register size is 2, 4, or 8 bytes, data is naturally aligned, so it may be cast to a pointer of the appropriate type.
[in] v The tool's call-back value.
+
+
+

+ + + + +
+ + + + +
typedef USIZE(* LEVEL_PINCLIENT::GET_TARGET_DESCRIPTION_CALLBACK)(const std::string &name, USIZE size, VOID *buf, VOID *v)
+
+ + + + + +
+   + + +

+Call-back function that Pin calls to get the content of a document that describes an emulated target processor to an application-level debugger. This is useful, for example, when a Pin tool emulates additional registers beyond those defined by the native CPU. A debugger can use this document to understand the emulated registers and how to display them.

+The format of the returned document varies depending on the debugger that is connected to Pin. Tools can use PIN_GetDebuggerType() to tell which debugger is connected.

+When used with GDB, the description should be an XML "target feature" document, as described in the GDB user manual, "Debugging With GDB". See the appendix titled "Target Descriptions" for details of the XML document format. GDB starts by asking for a document titled "target.xml". However, this document may reference other documents via "include" statements. If so, GDB will ask for those additional documents by their names.

+

Parameters:
+ + + + + +
[in] name The name of the requested document.
[in] size Size (bytes) of the buf buffer.
[out] buf Points to a buffer that receives the content of the document. If the document requires more than size bytes, the tool need not write anything into buf. Instead, the tool should return the required size.
[in] v The tool's call-back value.
+
+
Returns:
If the tool knows how to provide the document named name, it returns the size (bytes) of that document. If that size is less than or equal to size, the tool should also write the content of the document to buf. If the tool does not know how to provide this document, it should return zero.
+
+

+ + + + +
+ + + + +
typedef BOOL(* LEVEL_PINCLIENT::INTERCEPT_DEBUGGING_EVENT_CALLBACK)(THREADID tid, DEBUGGING_EVENT eventType, CONTEXT *ctxt, VOID *arg)
+
+ + + + + +
+   + + +

+Call-back function when the tool intercepts a debugging event with PIN_InterceptDebuggingEvent().

+

Parameters:
+ + + + + +
[in] tid The Pin thread ID of the thread that received the debugging event.
[in] eventType Tells the debugging event.
[in,out] ctxt On input, gives the register state at the point the thread received the event. The tool may change ctxt. If the event is passed on to the debugger, the debugger sees the modified register state. If the event is not passed on to the debugger, the thread resumes execution at the new register state.
[in] arg The tool's call-back value.
+
+
Returns:
Returning TRUE tells Pin to pass the debugging event on to the debugger. Returning FALSE tells Pin to squash the event and the thread resumes without stopping in the debugger.
+The following scenarios are not allowed:

+

    +
  • The call-back may not return FALSE for DEBUGGING_EVENT_ASYNC_BREAK.
  • If the call-back returns TRUE for DEBUGGING_EVENT_BREAKPOINT or DEBUGGING_EVENT_SINGLE_STEP, it may not change the value of REG_INST_PC in ctxt. This restriction exists because debuggers typically make assumptions on the PC value when these events trigger.
+
+

+ + + + +
+ + + + +
typedef VOID(* LEVEL_PINCLIENT::SET_EMULATED_REGISTER_CALLBACK)(unsigned toolRegId, THREADID tid, CONTEXT *ctxt, const VOID *data, VOID *v)
+
+ + + + + +
+   + + +

+Call-back function that Pin calls to set the value of a register emulated by the tool.

+

Parameters:
+ + + + + + +
[in] toolRegId Identifies the emulated register (from the registerDescriptions parameter to PIN_AddDebuggerRegisterEmulator()).
[in] tid Identifies the thread whose register is written.
[in] ctxt Architected register state for the thread.
[in] data Points to the new value for the register. The value is stored in the same format as described in GET_EMULATED_REGISTER_CALLBACK.
[in] v The tool's call-back value.
+
+
+

+ + + + +
+ + + + +
typedef map<SYM, ADDRINT> LEVEL_PINCLIENT::SYM_RESOLVER_VS_ACTUAL_ADDRESS_IFUNC_MAP
+
+ + + + + +
+   + + +

+This map is used during the ifunc symbol processing. It maps between ifunc symbol names and the actual function addresses which doesn't have a symbol associated with them.

+

+ + + + +
+ + + + +
typedef VOID(* LEVEL_PINCLIENT::TRACEGENCODE_CALLBACK)(TRACE trace, VOID *v)
+
+ + + + + +
+   + + +

+Call back function when Pin has to generate a rogue trace for an exit

+


Enumeration Type Documentation

+

+ + + + +
+ + + + +
anonymous enum
+
+ + + + + +
+   + + +

+Keys to access client data in the thread local storage

+

+ + + + +
+ + + + +
enum LEVEL_PINCLIENT::IMAGE_LOAD_FLAGS
+
+ + + + + +
+   + + +

+Names for flags to construct the arguments to ProcessImageLoad and ImgLoad Without these you get a list of cryptic BOOL arguments; by using these you see what the arguments being passed mean.

Enumerator:
+ + + + + + +
IMAGE_LOAD_MAINEXECUTABLE  +Set for the main executable.
IMAGE_LOAD_FOUNDINMEMORY  +Set if the image was found in memory during Pin initalization (only Windows at present)
IMAGE_LOAD_RUNTIME  +Set if the image was loaded at runtime.
IMAGE_LOAD_TEXTFROMIMAGE  +Set if RTNs should get their code from Pin's copy of the image, rather than the one mapped by the OS. (For replay where the OS' one may not exist yet).
IMAGE_LOAD_INTERPRETER  +Set for the program's interpreter (loader).
+
+
+

+ + + + +
+ + + + +
enum LEVEL_PINCLIENT::REPLAY_IMAGE_TYPE
+
+ + + + + +
+   + + +

+Image types for PIN_ReplayImageLoad()

Enumerator:
+ + + + +
REPLAY_IMAGE_TYPE_REGULAR  +Regular image.
REPLAY_IMAGE_TYPE_MAIN_EXE  +Main executable image.
REPLAY_IMAGE_TYPE_INTERPRETER  +The image of the interpreter (loader).
+
+
+

+ + + + +
+ + + + +
enum LEVEL_PINCLIENT::REPLAY_MODE
+
+ + + + + +
+   + + +

+Flags passed to PIN_SetReplayMode.

Enumerator:
+ + +
REPLAY_MODE_IMAGEOPS  +Replayer will handle image ops.
+
+
+


Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::AInsertCall INS  ins,
IPOINT  ipoint,
PREDICATE  pred,
COND_CALL_TYPE  condCallType,
AFUNPTR  funptr,
va_list  ap
+
+ + + + + +
+   + + +

+If "condFun" is non-zero, then this analysis call will be invoked only if condFun (which is an analysis function called immediately before "funptr") returns a non-zero value.

+

Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::AInsertVersionCase INS  ins,
REG  reg,
INT32  case_value,
ADDRINT  version,
va_list  ap
+
+ + + + + +
+   + + +

+

Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + +
BOOL LEVEL_PINCLIENT::AotiInstrumentationExists  ) 
+
+ + + + + +
+   + + +

+TRUE if there are any AOTI requests. Only used for an assertion to check that all AOTI has been cleared when all images are unloaded.

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::AotiPlaybackCall INS  ins  ) 
+
+ + + + + +
+   + + +

+x internal

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::AotiRecordCall IPOINT  action,
INS  ins,
ACALL const *  acall
+
+ + + + + +
+   + + +

+x internal

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::AotiRecordMutation INS  ins,
EXT  ext
+
+ + + + + +
+   + + +

+x internal

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::AotiRemoveImageInstrumentation IMG  img  ) 
+
+ + + + + +
+   + + +

+Remove any AOTI that has been applied to instructions in the given image.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::BBL_InsertFillBuffer BBL  bbl,
IPOINT  action,
BUFFER_ID  id,
  ...
+
+ + + + + +
+   + + +

+Insert analysis code to fill one record in a trace buffer, relative to a BBL.

+

Parameters:
+ + + + + +
[in] bbl The application BBL
[in] action Whether the record is filled before or after the BBL
[in] id The ID of the buffer whose record is filled
[in] ... IARG_TYPE. Additional arguments to specify the fields of the trace buffer.
+
+Certain IARG_TYPEs cannot be used with the *_InsertFillBuffer APIs. The unsupported IARG_TYPEs are: IARG_CONTEXT, IARG_REG_REFERENCE, and IARG_REG_CONST_REFERENCE.

+

Availability:
Mode: JIT
+ O/S: Linux & Windows
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::BBL_InvalidForProbe BBL  bbl  ) 
+
+ + + + + +
+   + + +

+This routine tests whether the basic block can be replaced with probe The function return TRUE when the basic block has a problem

    +
  • bb size < probe size
  • a call instruction is inside bbl and its return address is inside the probe
+
+

+ + + + +
+ + + + + + + + + +
BBL_TYPE LEVEL_PINCLIENT::BBL_Type BBL  x  ) 
+
+ + + + + +
+   + + +

+

Returns:
The type of the basic block
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::CallAllBufferFullCallbacks THREADID  tid,
CONTEXT ctxt
+
+ + + + + +
+   + + +

+Calls all of the buffer full functions in turn. Generally, this is useful when a thread terminates, since that's the only time we definitely will call all of the buffer full callbacks.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::CallApplicationFunctionUnchecked const CONTEXT ctxt,
THREADID  tid,
CALLINGSTD_TYPE  cstype,
AFUNPTR  origFunPtr,
CALL_APPLICATION_FUNCTION_PARAM param,
  ...
+
+ + + + + +
+   + + +

+Equivalent version of PIN_CallApplicationFunction() to be used internally by Pin. This function doesn't perform the checks that PIN_CallApplicationFunction() does so it allows Pin to call an application function in cases where Pin tool cannot. We assume here that if you call this function then you know what you're doing.

+

Parameters:
+ + + + + + + +
[in] ctxt The application register state to use when calling the function. Pin changes the register state in order to pass arguments to the function, but the ctxt parameter isn't changed.
[in] tid The Pin id of the current thread (see IARG_THREAD_ID).
[in] cstype The calling standard used for calling this function (CALLINGSTD_DEFAULT recommended).
[in] origFunPtr The entry point of the application function.
[in] param Additional parameters to define the exact behavior of this function invocation (or NULL for using the defaults). See CALL_APPLICATION_FUNCTION_PARAM .
[in] ... List of function argument type and size.
+
+
+

+ + + + +
+ + + + + + + + +
LOCALFUN VOID LEVEL_PINCLIENT::CallApplicationStart  ) 
+
+ + + + + +
+   + + +

+

    +
  • Notify VM about application start
  • Call application start callback functions
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
LOCALFUN BOOL LEVEL_PINCLIENT::CallBreakpointHandlers ADDRINT  addr,
USIZE  size,
BOOL  insert
+
+ + + + + +
+   + + +

+Call any breakpoint handlers to handle a breakpoint set/delete command.

+

Parameters:
+ + + + +
[in] addr The address of the requested breakpoint.
[in] size The size of the breakpoint (HW/SW)
[in] insert Whether if this is a breakpoint insertion or deletion.
+
+
Returns:
TRUE if any handler takes control over the breakpoint.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID* LEVEL_PINCLIENT::CallBufferFullCallback BUFFER_ID  id,
THREADID  tid,
CONTEXT ctxt,
VOID *  buf,
UINT64  numElts
+
+ + + + + +
+   + + +

+Calls the buffer full function (as specified by PIN_DefineTraceBuffer) when either the buffer is full or the thread terminates.

+

Parameters:
+ + + + + +
[in] id The ID of the trace buffer.
[in] tid The ID of the thread whose buffer filled
[in] buf Pointer to the base of the filled buffer
[in] numElts Number of elements in buffer
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LOCALFUN VOID LEVEL_PINCLIENT::CallContextChanges THREADID  threadIndex,
CONTEXT_CHANGE_REASON  reason,
const CONTEXT from,
CONTEXT to,
INT32  info
+
+ + + + + +
+   + + +

+Call context change callbacks.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LOCALFUN BOOL LEVEL_PINCLIENT::CallDebugInterpreters THREADID  threadIndex,
CONTEXT ctxt,
const char *  cmd,
const char **  reply
+
+ + + + + +
+   + + +

+Call any debug interpreters to handle a debugger command.

+

Parameters:
+ + + + + +
[in] threadIndex Pin thread ID of debugger focus thread.
[in] ctxt Application register state of focus thread, which could be changed.
[in] cmd Debugger command.
[out] reply Receives a pointer to the command's response, if it is handled.
+
+
Returns:
TRUE if any interpreter handles cmd.
+
+

+ + + + +
+ + + + + + + + +
VOID LEVEL_PINCLIENT::CallDetachCompletionCallback  ) 
+
+ + + + + +
+   + + +

+Call detach probed completion callbacks. When this callback function is called, it is guaranteed that Pin removed all probes from the application code and that no other callback function will be called afterwards (except from additional Detach callback functions).

+

+ + + + +
+ + + + + + + + + +
LOCALFUN VOID LEVEL_PINCLIENT::CallFinis INT32  code  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
LOCALFUN BOOL LEVEL_PINCLIENT::CallFollowChildProcess CHILD_PROCESS  childProcess,
const char **  toolAppend
+
+ + + + + +
+   + + +

+Call Follow child process callback

+

Parameters:
+ + + +
[in] childProcess Child process handle
[out] toolAppend If Pin should automatically add the "KnobAppendLogFile" switch to the tool's command line, toolAppend is set to the name of that switch. If the switch should not be automatically added, it is set to NULL.
+
+
Returns:
TRUE If user is interested to inject Pin (and tool) into child/exec-ed process
+ FALSE If user is not interested to inject Pin (and tool) into child/exec-ed process
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
LOCALFUN VOID LEVEL_PINCLIENT::CallForksAfterInChild THREADID  threadId,
const CONTEXT ctxt
+
+ + + + + +
+   + + +

+notify child after fork

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
LOCALFUN VOID LEVEL_PINCLIENT::CallForksAfterInParent THREADID  threadId,
const CONTEXT ctxt
+
+ + + + + +
+   + + +

+notify parent after fork

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
LOCALFUN VOID LEVEL_PINCLIENT::CallForksBefore THREADID  threadId,
const CONTEXT ctxt
+
+ + + + + +
+   + + +

+notify before fork

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
LOCALFUN BOOL LEVEL_PINCLIENT::CallInterceptedDebuggingEvent THREADID  tid,
DEBUGGING_EVENT  eventType,
CONTEXT ctxt
+
+ + + + + +
+   + + +

+Call a client debugging event interceptor function.

+

Parameters:
+ + + + +
[in] tid Thread that received the debugging event.
[in] eventType Tells the debugging event.
[in,out] ctxt Register state when the event was received, which the tool can modify.
+
+
Returns:
TRUE tells Pin to pass the even on to the debugger, FALSE tells Pin to squash the event.
+
Note:
The pin client lock is obtained during the call of this API.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LOCALFUN BOOL LEVEL_PINCLIENT::CallInterceptSignal THREADID  tid,
INT32  sig,
CONTEXT ctxt,
BOOL  hasHandler,
const EXCEPTION_INFO pExceptInfo
+
+ + + + + +
+   + + +

+Call signal "intercept" callbacks. Returns TRUE if signal should be passed on to the application.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
LOCALFUN ADDRINT PIN_FAST_ANALYSIS_CALL LEVEL_PINCLIENT::CallMemoryAddrTrans PIN_MEM_TRANS_INFO *  memTransInfo,
void * 
+
+ + + + + +
+   + + +

+Tools callback function to tell PIN to use a different memory address.

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::CallProbesInserted IMG  img  ) 
+
+ + + + + +
+   + + +

+Call callbacks when Pin is done inserting probes.

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::CallRtnCallbacks RTN  rtn  ) 
+
+ + + + + +
+   + + +

+Calls all rtn callbacks for given routine

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
LOCALFUN VOID LEVEL_PINCLIENT::CallSmcCallbacks ADDRINT  traceStartAddress,
ADDRINT  traceEndAddress
+
+ + + + + +
+   + + +

+Call SMC callbacks.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
LOCALFUN VOID LEVEL_PINCLIENT::CallSyscallEntry THREADID  threadIndex,
CONTEXT ctxt,
SYSCALL_STANDARD  std
+
+ + + + + +
+   + + +

+Call syscall entry callbacks.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
LOCALFUN VOID LEVEL_PINCLIENT::CallSyscallExit THREADID  threadIndex,
CONTEXT ctxt,
SYSCALL_STANDARD  std
+
+ + + + + +
+   + + +

+Call syscall exit callbacks.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
LOCALFUN VOID LEVEL_PINCLIENT::CallThreadAttachInJitMode THREADID  threadIndex,
CONTEXT ctxt
+
+ + + + + +
+   + + +

+Call attached thread callback in JIT mode

Note:
The pin client lock is obtained during the call of this API.
+
+

+ + + + +
+ + + + + + + + + +
LOCALFUN VOID LEVEL_PINCLIENT::CallThreadAttachInProbeMode VOID *  sigmask  ) 
+
+ + + + + +
+   + + +

+Call attached thread callback in probe mode

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
LOCALFUN VOID LEVEL_PINCLIENT::CallThreadDetachInJitMode THREADID  threadIndex,
const CONTEXT ctxt
+
+ + + + + +
+   + + +

+Call detach thread callback in JIT mode

Note:
The pin client lock is obtained during the call of this API.
+
+

+ + + + +
+ + + + + + + + +
LOCALFUN VOID LEVEL_PINCLIENT::CallThreadDetachInProbeMode  ) 
+
+ + + + + +
+   + + +

+Call detach thread callback in probe mode

Note:
The pin client lock is obtained during the call of this API.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
LOCALFUN VOID LEVEL_PINCLIENT::CallThreadFinis THREADID  threadIndex,
const CONTEXT ctxt,
INT32  code
+
+ + + + + +
+   + + +

+Call Thread Fini callbacks

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
LOCALFUN VOID LEVEL_PINCLIENT::CallThreadStarts THREADID  threadIndex,
CONTEXT ctxt,
INT32  flags
+
+ + + + + +
+   + + +

+Call Thread Start callbacks

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::CallTraceCallbacks REGION *  region  ) 
+
+ + + + + +
+   + + +

+Walk the list of trace instrumentors and call them

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
LOCALFUN PROBE_TAG LEVEL_PINCLIENT::CheckForProbeOverlap INS  ins,
USIZE  probe_size,
BOOL  allowPOP
+
+ + + + + +
+   + + +

+CheckForProbeOverlap - Tests if a probe already exists for a code location

+

Parameters:
+ + + + +
ins the instruction where the probe should be inserted
probe_size the size of the probe
allowPOP is POP (probe on probe) allowed
+
+
Returns:
tag which indicates whether code location can be probed Possible values: PROBE_TAG_OK PROBE_TAG_PREV_PROBE
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LOCALFUN PROBE_TAG LEVEL_PINCLIENT::CheckForSafeProbe INS  ins,
BOOL  allowPOP,
USIZE *  probe_size,
USIZE  suggested_probe_size,
PROBE_MODE  mode,
BOOL  checkForPadding
+
+ + + + + +
+   + + +

+Makes the various probe tests.

+

Parameters:
+ + + + + + + +
ins The instruction where the probe should be inserted
allowPOP Probe on probe is allowed
probe_size An output parameter. The size of the probe that was tested for safety.
suggested_probe_size A suggested probe size. If USIZE_INVALID() is passed then PIN will choose the smaller probe size (6 bytes)
mode The probe mode (PROBE_MODE_DEFAULT /PROBE_MODE_ALLOW_RELOCATION)
checkForPadding Check that the bytes which follow the first RTN_Size bytes up to the RTN_Range are all nops
+
+
Returns:
tag The PROBE_TAG is set to describe why the function cannot be probed, or PROBE_OK or PROBE_RELOCATABLE.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::CheckNotInCallback THREADID  tid,
const char *  function
+
+ + + + + +
+   + + +

+Check that a Pin client user interface call has been made from an analysis function, not a callback.

Parameters:
+ + + +
tid Thread ID of the thread making the call
function Name of the interface function being called
+
+
Availability:
Mode: JIT
+ O/S: Linux, Windows, BSD
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::CheckPinClientLock const CHAR *  funname  ) 
+
+ + + + + +
+   + + +

+Check that we have the client lock.

+

Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + +
VOID LEVEL_PINCLIENT::CheckPinInitialized  ) 
+
+ + + + + +
+   + + +

+Raise an error if pin has not been initialized. Call this from pin api functions to ensure that PIN_Init() has been called first.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LOCALFUN PROBE_TAG LEVEL_PINCLIENT::CheckProbeSafetyStatically INS  ins,
RTN  rtn,
BOOL  checkForPadding,
UINT32  probe_size
+
+ + + + + +
+   + + +

+CheckProbeSafetyStatically - Tests if the given RTN is a candidate for function insertion using probes.

+

Parameters:
+ + + + +
ins the instruction where the probe should be inserted
rtn the routine to be checked for replacement
checkForPadding checkForPadding rtn boundaries to its annotated size, otherwise next SYM address defines the size.
+
+
Returns:
tag which indicates whether function can be probed. Possible values: PROBE_TAG_OK PROBE_TAG_TOO_SMALL PROBE_TAG_BRANCH_TARGET PROBE_TAG_POSSIBLE_UNIDENTIFIED_BRANCH_TARGET PROBE_TAG_RUNTIME_FIXUP
+
+

+ + + + +
+ + + + + + + + +
SECTION_END GLOBALDLLFUN PINCLIENTINT* LEVEL_PINCLIENT::ClientInt  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + +
GLOBALDLLCFUN PINCLIENTINT* LEVEL_PINCLIENT::ClientIntC  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::Close_Rtn RTN  rtn  ) 
+
+ + + + + +
+   + + +

+Close the given RTN.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::CompleteImageLoad IMG  img,
void *  arg
+
+ + + + + +
+   + + +

+When the application loads a new image, do some bookkeeping.

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::CompleteProbesInstrumentationForCurrentModule IMG  img  ) 
+
+ + + + + +
+   + + +

+In probes mode, if the user inserted any calls, generate the code now. This was not done during ImageLoad() because users can insert several calls on one RTN. This method restricts users to inserting probes in ImageLoad(). This is OK, because it is the only thread- safe place to do it.

+Register all unwind frames

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::CookRegsym IMG  img,
SYM_RESOLVER_VS_ACTUAL_ADDRESS_IFUNC_MAP *  sym_resolver_vs_actual_address_ifunc_map
+
+ + + + + +
+   + + +

+cook .symtab, like IMG_CookRegsym, but less error checking so it won't assert on valid images name_vs_actual_address_ifunc_map is a temporary data structure which is used during the processing of ifunc symbols. Contains only ifunc symbols that their corresponding actual function addresses don't have a symbol which is associated with them. This map will be processed afterwards by the function: "CreateRtnOriginatedFromIfunc", where an rtn object will be created for each instance in the map.

+

+ + + + +
+ + + + + + + + +
VOID LEVEL_PINCLIENT::DebuggerClientInitialize  ) 
+
+ + + + + +
+   + + +

+Initialize the client library call-backs for the application-level debugger API's.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::DeprecatedCallSignalAfters THREADID  threadIndex,
const CONTEXT from,
const CONTEXT to
+
+ + + + + +
+   + + +

+Call signal "after" callbacks.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::DeprecatedCallSignalBefores THREADID  threadIndex,
INT32  sig,
const CONTEXT from,
const CONTEXT to
+
+ + + + + +
+   + + +

+Call signal "before" callbacks.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::DeprecatedCallThreadBegins THREADID  threadIndex,
VOID *  sp,
int  flags
+
+ + + + + +
+   + + +

+Call thread "begin" callbacks.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::DeprecatedCallThreadEnds THREADID  threadIndex,
INT32  code
+
+ + + + + +
+   + + +

+Call thread "end" callbacks.

+

+ + + + +
+ + + + + + + + + +
LOCALFUN VOID LEVEL_PINCLIENT::DestroyClientTls THREADID  threadIndex  ) 
+
+ + + + + +
+   + + +

+Destroy client TLS in the given thread.

Parameters:
+ + +
[in] threadIndex ID of the target thread
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LOCALFUN VOID LEVEL_PINCLIENT::DisassembleRegion RTN  rtn,
BBL  bbl,
const VOID *  current,
const VOID *  end,
ADDRINT  rtnStart,
ADDRINT  rtnEnd,
ADDRINT  rtnLimit,
ADDRINT  virtual_offset
+
+ + + + + +
+   + + +

+RtnOutsideRangesManager().HaveRet()

+

+ + + + +
+ + + + + + + + +
VOID LEVEL_PINCLIENT::DoAttachsProbed  ) 
+
+ + + + + +
+   + + +

+Perfrom probed attach operations

+

+ + + + +
+ + + + + + + + +
VOID LEVEL_PINCLIENT::DoDetachs  ) 
+
+ + + + + +
+   + + +

+Walk the list of detach functions

+

+ + + + +
+ + + + + + + + +
VOID LEVEL_PINCLIENT::DoDetachsProbed  ) 
+
+ + + + + +
+   + + +

+On Linux distributions, this function is called by the dedicated thread. It is called when all of the thread detach callbacks from all the application threads have been given. On non Linux distributions, this function is called by the dedicated detach thread while all of the application threads are stopped. The function performs:

    +
  • Remove callbacks and probes.
  • Unload all images (and ask to remove probes),
  • Set pin state to be detached.,
  • Call the detach completion callbacks(Only on non linux).
  • Notify about detach completion (Only on non linux).
+
+

+ + + + +
+ + + + + + + + +
EDG LEVEL_PINCLIENT::EDG_INVALID  ) 
+
+ + + + + +
+   + + +

+

Returns:
An invalid edge
+
+

+ + + + +
+ + + + + + + + + +
EDG LEVEL_PINCLIENT::EDG_NextSucc EDG  x  ) 
+
+ + + + + +
+   + + +

+

Returns:
The next successor edge
+
+

+ + + + +
+ + + + + + + + + +
EDG_TYPE LEVEL_PINCLIENT::EDG_Type EDG  x  ) 
+
+ + + + + +
+   + + +

+

Returns:
The type of the edge
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::EDG_Valid EDG  x  ) 
+
+ + + + + +
+   + + +

+

Returns:
True if x is not EDG_INVALID()
+
+

+ + + + +
+ + + + + + + + +
VOID LEVEL_PINCLIENT::EnterPinClientMasterMode  ) 
+
+ + + + + +
+   + + +

+The VM has called into the pin client

+

+ + + + +
+ + + + + + + + +
VOID LEVEL_PINCLIENT::ExitPinClientMasterMode  ) 
+
+ + + + + +
+   + + +

+Returning from pin client to VM

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
LOCALFUN VOID LEVEL_PINCLIENT::FindCodeRanges IMG  img,
CODE_RANGES *  rangeMap
+
+ + + + + +
+   + + +

+Find all code ranges in binary image according to information from image headers.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
string LEVEL_PINCLIENT::FindGnuDebugLinkFile IMG  img,
CHAR **  imageStart,
size_t *  imageSize
+
+ + + + + +
+   + + +

+Find the filename of a .gnu_debug_link section. Return the filename of the debug link and an open file descriptor for it.

+

+ + + + +
+ + + + + + + + +
LOCALINLINE OS_THREAD_ID LEVEL_PINCLIENT::GetCurrentSysId  ) 
+
+ + + + + +
+   + + +

+

Returns:
The OS thread ID for the calling thread.
+
+

+ + + + +
+ + + + + + + + + +
OS_THREAD_ID LEVEL_PINCLIENT::GetCurrentSysIdById THREADID  tid  ) 
+
+ + + + + +
+   + + +

+Get the OS thread ID for the calling thread.

+

Parameters:
+ + +
[in] tid Pin ID for the calling thread.
+
+
Returns:
OS ID for the calling thread.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LOCALFUN VOID LEVEL_PINCLIENT::GetEmulatedRegister unsigned  toolRegId,
THREADID  tid,
CONTEXT ctxt,
VOID *  data
+
+ + + + + +
+   + + +

+Call a client function to get the value of an emulated register.

+

Parameters:
+ + + + + +
[in] toolRegId Tool's ID which identifies the emulated register.
[in] tid The thread whose register is requested.
[in] ctxt Architected register state for the thread.
[out] data Receives the value of the register.
+
+
+

+ + + + +
+ + + + + + + + +
BOOL LEVEL_PINCLIENT::GetInTraceCallbacks  ) 
+
+ + + + + +
+   + + +

+Get the value of inTraceCallbacks

+

+ + + + +
+ + + + + + + + +
IMG LEVEL_PINCLIENT::GetOpenImg  ) 
+
+ + + + + +
+   + + +

+This function provides the IMG structure of the image opened by IMG_Open

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
LOCALFUN USIZE LEVEL_PINCLIENT::GetTargetDescription const std::string &  name,
USIZE  size,
VOID *  buf
+
+ + + + + +
+   + + +

+Call a client function to get a document that describes the target machine's registers.

+

Parameters:
+ + + + +
[in] name The name of the requested document.
[in] size Size (bytes) of the buf buffer.
[out] buf Points to a buffer that receives the content of the document.
+
+
Returns:
The size of the requested document or zero if the tool doesn't know this document.
+
+

+ + + + +
+ + + + + + + + +
VOID LEVEL_PINCLIENT::GetVmLock  ) 
+
+ + + + + +
+   + + +

+Get the vm lock.

+

Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::ImageInitialize BOOL  forReplay  ) 
+
+ + + + + +
+   + + +

+Initialize the image tracking code.

    +
  • Load the main image
  • If we are attaching and the loader has initialized, scan the shared libraries
  • If we are not attaching, find the loader and explicitly scan it
+
+

+ + + + +
+ + + + + + + + +
LOCALFUN VOID LEVEL_PINCLIENT::ImageInitializeFirst  ) 
+
+ + + + + +
+   + + +

+Initialize images before Pin client started.

    +
  • Clear Pin client list of registered images.
  • Enumerate and register all already loaded images.
  • Call image load callback function for every registered image. Called by VM in _startProgram()
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::ImageInstrument TRACE  trace  ) 
+
+ + + + + +
+   + + +

+Called when each trace is instrumented to support code for tracking images.

    +
  • Instruments the shared library loader entry that is called every time an image is loaded The instrumentation will scan for shared libraries
  • Captures the pointer to the LoaderInfo when ld-linux has initialized DT_DEBUG
+
+

+ + + + +
+ + + + + + + + +
VOID LEVEL_PINCLIENT::ImageUnInitialize  ) 
+
+ + + + + +
+   + + +

+Uninitialize the image tracking code.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IMG LEVEL_PINCLIENT::IMG_CreateAt const char *  filename,
ADDRINT  start,
USIZE  size,
ADDRINT  loadOffset,
BOOL  mainExecutable
+
+ + + + + +
+   + + +

+Returns a IMG object for image loaded outside of PIN's loader. Tool should use this IMG object to mark the routines inside it, using RTN_CreateAt(). After all the routines are marked, tool should call IMG_ReplayImageLoad() to finalize the image load procedure.

+

Parameters:
+ + + + + + +
filename name of the image visible to Pin tools
start memory address where first byte of the image is loaded to
size the size of the image in memory. This means that the image region in memory will be at [start .. start+size)
loadOffset the offset between the memory addresses specified in the executable/library files and the memory addresses where this image was actaully loaded
mainImage TRUE if this is the main image
+
+
Returns:
IMG object that represents the image. Please make sure to call IMG_ReplayImageLoad() on the IMG object after you're done creating all the routines in the IMG object.
+
Availability:
Mode: JIT
+ O/S: All
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + +
VOID LEVEL_PINCLIENT::IMG_ExecuteRecordedLoadOps  ) 
+
+ + + + + +
+   + + +

+Execute the list of recorded image load operations and clean the list as we go.

+

+ + + + +
+ + + + + + + + + +
IMG LEVEL_PINCLIENT::IMG_FindBySectionsAddress ADDRINT  address  ) 
+
+ + + + + +
+   + + +

+Find image by address. Given an address, it is considered belonging to an image only if the address equals to one of the following: the start address of the text segment, the start address of the data segment or the lowest address loaded by the image.

Returns:
IMG object, valid or invalid
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
IMG LEVEL_PINCLIENT::IMG_FindByUnloadAddress ADDRINT  startAddress  ) 
+
+ + + + + +
+   + + +

+Find image by the address which the loader uses when it frees the memory of an image. For Linux and OS X*, for each image, check if the address equals to the start address of the text segment. For Windows, for each image, check if the address equals to the start of the Image. This function should be used to determined if ProcessImageUnload should be called when unmapping an address.

+

Returns:
IMG object, valid or invalid
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
ADDRINT LEVEL_PINCLIENT::IMG_FindDataSymbolAddress IMG  origImg,
const CHAR *  symname
+
+ + + + + +
+   + + +

+Find the address of a data symbol in an image. Since that image doesn't have the symbol table in memory anymore (it was unmapped), we need to read the image into a temporary image. This is quite expensive so it is not recommended to expose it to the API or use it frequently.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
RTN LEVEL_PINCLIENT::IMG_FindRtnByName IMG  img,
const string &  name
+
+ + + + + +
+   + + +

+Find a particular routine by name in the given image

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::IMG_FreeDebugInfo IMG  img  ) 
+
+ + + + + +
+   + + +

+Free debug info

+

+ + + + +
+ + + + + + + + + +
VOID* LEVEL_PINCLIENT::IMG_GetLoaderInfo IMG  img  ) 
+
+ + + + + +
+   + + +

+Gets a read-only copy of loader information for the image which is used in PIN ADX debugger.

+

Parameters:
+ + +
img The image object to act on
+
+
Returns:
Pointer to OS specific structure that holds data about loader information. On Linux, this is a pointer to struct LINUX_LOADER_IMAGE_INFO.
+
Availability:
Mode: JIT
+ O/S: Linux
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_PINCLIENT::IMG_GetSubprogramsInfo IMG  img,
map< ADDRINT, SymbolDebugInfo > &  routines
+
+ + + + + +
+   + + +

+Return subprograms debug info for an image.

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::IMG_IsStandardGccLibrary IMG  img  ) 
+
+ + + + + +
+   + + +

+Return TRUE if the specified image is libgcc library

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::IMG_IsStandardLoaderLibrary IMG  img  ) 
+
+ + + + + +
+   + + +

+Return TRUE if the specified image is ld library

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::IMG_IsStandardSystemLibrary IMG  img  ) 
+
+ + + + + +
+   + + +

+Return TRUE if the specified image is libc library

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::IMG_IsStandardThreadLibrary IMG  img  ) 
+
+ + + + + +
+   + + +

+Return TRUE if the specified image is libpthread library

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::IMG_RecordLoadOp IMG  img  ) 
+
+ + + + + +
+   + + +

+Remember an imge load operation so that we can execute it when PIN_StartProgram is called.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::IMG_RecordLoadOp const string &  imageName,
const char *  fileName,
ADDRINT  lo,
UINT32  fl
+
+ + + + + +
+   + + +

+Remember an imge load operation so that we can execute it when PIN_StartProgram is called.

+

+ + + + +
+ + + + + + + + +
VOID LEVEL_PINCLIENT::IMG_RemoveToolCallbacks  ) 
+
+ + + + + +
+   + + +

+Remove all image notification functions

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::IMG_ReplayImageLoad IMG  img  ) 
+
+ + + + + +
+   + + +

+Replays the image load of an IMG object (created by IMG_CreateAt()). This means that all the image load callbacks will be called for the specified IMG object. If PIN_StartProgram() wasn't called yet, PIN will enqueue this request and will process this request after PIN_StartProgram() was called

+

Parameters:
+ + +
[in] img The image object to replay its load
+
+
Note:
The vm and pin client locks are obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: All
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::IMG_SetLoaderInfo IMG  img,
VOID *  loaderInfo
+
+ + + + + +
+   + + +

+Sets the loader information for the image which are used in PIN ADX debugger.

+

Parameters:
+ + + +
img The image object to act on
loaderInfo Points to OS specific structure that holds data about loader information. On Linux, this is a pointer to struct LINUX_LOADER_IMAGE_INFO.
+
+
Availability:
Mode: JIT
+ O/S: Linux
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::IMG_UnmapImage IMG  img  ) 
+
+ + + + + +
+   + + +

+Unmap file

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::InitDynamicCodeImage IMG  newImg  ) 
+
+ + + + + +
+   + + +

+Initialize an dynamic code image after it has been allocated. An dynamic code image contains dynamically created code, e.g. Jitted functions.

+

+ + + + +
+ + + + + + + + +
VOID LEVEL_PINCLIENT::InitializeApp  ) 
+
+ + + + + +
+   + + +

+Initialize app for usage

+

+ + + + +
+ + + + + + + + + +
LOCALFUN VOID LEVEL_PINCLIENT::InitializeClientTls THREADID  threadIndex  ) 
+
+ + + + + +
+   + + +

+Initialize client TLS in the current thread.

Parameters:
+ + +
[in] threadIndex ID of the current thread
+
+
+

+ + + + +
+ + + + + + + + +
VOID LEVEL_PINCLIENT::InitializeFollowChildClient  ) 
+
+ + + + + +
+   + + +

+Initialize follow-child callbacks

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::INS_InsertCallProbed INS  orgIns,
IPOINT  action,
AFUNPTR  funPtr,
  ...
+
+ + + + + +
+   + + +

+This routine inserts a call before/after one instruction

+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::INS_IsNativeCall INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE if a call instruction is marked to be executed natively.
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::INS_IsNativeXfer INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE if a control flow instruction has been setup to transfer control back to the native code on the taken path. This is the default mechanism.
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::INS_IsPinXfer INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE if a control flow instruction has been setup to transfer control to trace generator upon the taken path.
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::INS_IsXlateCall INS  ins  ) 
+
+ + + + + +
+   + + +

+

Returns:
TRUE if a call instruction is marked to be traslated to a push and a jump to the target to ensure transparency to the application as to where the call originated from.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::INS_ReplaceSignatureProbed INS  orgIns,
AFUNPTR  replacementFunptr,
  ...
+
+ + + + + +
+   + + +

+This routine replaces one instruction The caller checks whether the routine CFG allows this replacement.

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::INS_SetNativeCall INS  ins  ) 
+
+ + + + + +
+   + + +

+A call instruction is not translated into a PUSH and a JUMP. This implies that the application might realize that the call is being made from the trace in the code cache and thus any code that depends on the return address at the target site is no longer valid and thus results in program corruption. Doing this implies any instruction following the call in the trace is executed.

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::INS_SetNativeXfer INS  ins  ) 
+
+ + + + + +
+   + + +

+Set a control flow instruction to transfer control back to the native code on the taken path. This is the default mechanism.

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::INS_SetPinXfer INS  ins  ) 
+
+ + + + + +
+   + + +

+Set a control flow instruction to transfer control back to the trace generator upon the taken path.

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::INS_SetXlateCall INS  ins  ) 
+
+ + + + + +
+   + + +

+A call instruction is translated into a return address PUSH and a JMP to ensure that the application does not realize that the call occured in the code cache if it looked at the return address on the stack since we put the original application return address on the stack. This implies that when a return is executed at the call target the control returns to the original application. Any fallthrough instructions in the trace are not executed. Also see INS_SetNativeCall for otherwise.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::INS_skip_xlate_set INS  ins,
BOOL  b
+
+ + + + + +
+   + + +

+mark this instruction so it will not be translated by the VM.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LOCALFUN size_t LEVEL_PINCLIENT::InstFetcher void *  copyBuf,
const VOID *  address,
size_t  maxSizeToCopy,
EXCEPTION_INFO pExceptInfo
+
+ + + + + +
+   + + +

+This is the function that is called to fetch instruction bytes from the tool's registered callback fetch function (if any).

+

Parameters:
+ + + + + +
[out] copyBuf A buffer which receives the fetched instruction bytes. This buffer is at least size bytes long.
[in] address Starting address from which instruction bytes should be fetched.
[in] maxSizeToCopy The number of bytes that should be fetched.
[out] pExceptInfo If less than maxSizeToCopy bytes are fetched, pExceptInfo receives an exception that describes why more bytes could not be fetched. If Pin needs more bytes to decode the next instruction, this exception will be delivered to the application.
+
+
Returns:
The number of bytes successfully fetched into copyBuf. This may be less than maxSizeToCopy (or even zero) if Pin attempts to fetch instructions from an invalid address.
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::IsPinLoaded const string &  name  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + +
BOOL LEVEL_PINCLIENT::IsProcessExiting  ) 
+
+ + + + + +
+   + + +

+Check to see if the current process is about to exit.

+

Returns:
TRUE, if the current process is exiting.
+
Availability:
Mode: JIT
+ O/S: All
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::IsThreadInFiniCallback OS_THREAD_ID  sysId  ) 
+
+ + + + + +
+   + + +

+Tells whether the given thread is currently executing a thread-fini callback.

+

Parameters:
+ + +
[in] sysId O/S ID for a thread.
+
+
Returns:
TRUE if the thread sysId is currently executing a thread-fini callback.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KNOB<BOOL> LEVEL_PINCLIENT::KnobAppendLogFile KNOB_MODE_WRITEONCE ,
"supported" ,
"append_logfile" ,
"0" ,
"Append to the end of the log file if it already exists" 
+
+ + + + + +
+   + + +

+New log messages should be appended to the end of the log file if it already exists.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KNOB<BOOL> LEVEL_PINCLIENT::KnobJitApi KNOB_MODE_WRITEONCE ,
"pintool:sym" ,
"support_jit_api" ,
"0" ,
"Enables the Jitted Functions Support" 
+
+ + + + + +
+   + + +

+This knob enables the Jitted Functions Support.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MESSAGE_TYPE LEVEL_PINCLIENT::MessageTypeLogBuffer "log_buffer" ,
"" ,
false ,
false ,
false ,
true ,
LOGTYPE_LOGFILE ,
"pin log: buffering" 
+
+ + + + + +
+   + + +

+messages associated with fast buffering API

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MESSAGE_TYPE LEVEL_PINCLIENT::MessageTypeLogFetchRtnIns "log_fetch_rtn_ins" ,
"" ,
false ,
false ,
false ,
false ,
LOGTYPE_LOGFILE ,
"pin log: fetch rtn ins information" 
+
+ + + + + +
+   + + +

+Fetch RTN INS log message

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MESSAGE_TYPE LEVEL_PINCLIENT::MessageTypeLogImage "log_image" ,
"" ,
false ,
false ,
false ,
false ,
LOGTYPE_LOGFILE ,
"pin log: image API" 
+
+ + + + + +
+   + + +

+Logging for image api

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MESSAGE_TYPE LEVEL_PINCLIENT::MessageTypeLogProbe "log_probe" ,
"" ,
false ,
false ,
false ,
false ,
LOGTYPE_LOGFILE ,
"pin log: probe information" 
+
+ + + + + +
+   + + +

+Probe log message

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MESSAGE_TYPE LEVEL_PINCLIENT::MessageTypeLogSym "log_sym" ,
"" ,
false ,
false ,
false ,
false ,
LOGTYPE_LOGFILE ,
"pin log: symbol API" 
+
+ + + + + +
+   + + +

+Logging for symbols in image api

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MESSAGE_TYPE LEVEL_PINCLIENT::MessageTypeLogUnwind "log_unwind" ,
"" ,
false ,
false ,
false ,
false ,
LOGTYPE_LOGFILE ,
"pin log: unwind" 
+
+ + + + + +
+   + + +

+messages associated with PinProbes

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::NotifyDataRange CODE_RANGES *  rangeMap,
ADDRINT  base,
USIZE  size
+
+ + + + + +
+   + + +

+Update code range database to take into account the specified data range.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::NotifyDataRanges IMG  img,
CODE_RANGES *  rangeMap
+
+ + + + + +
+   + + +

+Update original map of code ranges in binary image taking into account known data ranges that may overlap with the original code ranges.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::NotifyDebuggerOnImageLoad BOOL  isMain,
VOID *  loaderInfo
+
+ + + + + +
+   + + +

+Notifies the debugger that new image had been loaded

Parameters:
+ + + +
isMain True is the image is the main executable
loaderInfo Points to a LINUX_LOADER_IMAGE_INFO that holds image information for PINADX
+
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::NotifyDebuggerOnImageUnload VOID *  loaderInfo  ) 
+
+ + + + + +
+   + + +

+Notifies the debugger that an image was unloaded

Parameters:
+ + +
loaderInfo Points to a LINUX_LOADER_IMAGE_INFO that holds image information for PINADX
+
+
+

+ + + + +
+ + + + + + + + +
VOID LEVEL_PINCLIENT::NotifyDetachCompletedJitMode  ) 
+
+ + + + + +
+   + + +

+Remove all client callbacks after detach

+

+ + + + +
+ + + + + + + + + +
LOCALFUN VOID LEVEL_PINCLIENT::NotifyOutOfMemory size_t  size  ) 
+
+ + + + + +
+   + + +

+Notify pin / pin tool is out of memory. Do minimal actions in here due to the subtle location (i.e. no memory)

    +
  • Don't serialize the callback
  • Don't use any STL in here
+
+

+ + + + +
+ + + + + + + + +
LOCALFUN VOID LEVEL_PINCLIENT::NotifyPrepareForFini  ) 
+
+ + + + + +
+   + + +

+Notify that Pin is about to detach from terminating process. The function that is registered by this callback may do the following:

    +
  • Force all the internal threads of the tool to finish using return from the main function of the thread or calling PIN_ExitThread.
  • Wait until all the internal threads are finished before it will continue to run.
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::Open_Rtn RTN  rtn  ) 
+
+ + + + + +
+   + + +

+Open the given RTN.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_AddDebuggerRegisterEmulator unsigned  numRegisters,
const DEBUGGER_REG_DESCRIPTION registerDescriptions,
GET_EMULATED_REGISTER_CALLBACK  getFun,
SET_EMULATED_REGISTER_CALLBACK  setFun,
GET_TARGET_DESCRIPTION_CALLBACK  getDescriptionFun,
VOID *  val
+
+ + + + + +
+   + + +

+This API is useful for Pin tools that emulate registers that do not exist in the host machine's ISA. If an application debugger is attached to Pin, this API informs the debugger about the extended registers, allowing users to display and manipulate the emulated registers as though they were native registers. Of course, not all debuggers have this capability. Calling this API for such a non-conforming debugger is legal, but ineffective. A non-conforming debugger will ignore the emulated registers and just display the native ones.

+When using this API, the set of registers presented to the debugger is specified in two redundant ways, and it is the tool's responsibility to ensure that they are consistent. One specification is a text document that the debugger reads. This document can have any format that the tool and the debugger agree upon, and could convey information about the registers, how they should be displayed in the debugger, etc. The tool provides this document via the getDescriptionFun call-back. The second register specification is through the registerDescriptions parameter, which Pin uses when communicating the register values to the debugger.

+If this API is called, it must be called before calling PIN_StartProgram(). Also, a tool can install only one debugger register emulator, so a call to PIN_AddDebuggerRegisterEmulator() will overwrite any previous call.

+When used with GDB, this API is effective only for versions of GDB that support register extensions in the XML "feature document". This includes GDB versions 7.2 and later, as well as some distributions of earlier GDB versions.

+

Parameters:
+ + + + + + + +
[in] numRegisters The number of entries in registerDescriptions.
[in] registerDescriptions An array describing each register that the debugger will know about. This includes both native registers and emulated registers.
[in] getFun Call-back function that Pin calls to get the value of an emulated register.
[in] setFun Call-back function that Pin calls to set the value of an emulated register.
[in] getDescriptionFun Call-back function that Pin calls to get the content of a text document that tells the debugger about the registers defined in registerDescriptions.
[in] val Value passed to the call-back functions.
+
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + +
BOOL LEVEL_PINCLIENT::PIN_CallerOwnsClientMutex  ) 
+
+ + + + + +
+   + + +

+Return TRUE if calling thread is the owner of the lock.

+

Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::PIN_CallerOwnsClientMutex OS_THREAD_ID  osid  ) 
+
+ + + + + +
+   + + +

+Return TRUE if calling thread is the owner of the lock.

+

Parameters:
+ + +
[in] osid OS ID of calling thread.
+
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + +
OS_THREAD_ID LEVEL_PINCLIENT::PIN_ClientFork  ) 
+
+ + + + + +
+   + + +

+Allow a Pintool to safely fork. Call the fork system call and notify the VM appropriately.

Returns:
Parent: ID of the child, child: 0, INVALID_THREADID if fork failed
+
Availability:
Mode: JIT
+ O/S: Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_PINCLIENT::PIN_InsertProbe ADDRINT  src_addr,
ADDRINT  dst_addr
+
+ + + + + +
+   + + +

+This is an internal Pin API. It is not supported for use in general tools. We reserve the right to change or remove this API at any time without advanced notice.

+This API must be used in conjunction with other internal APIs. Do not use this API.

+Inserts a probe at an address.

+

Parameters:
+ + + +
src_addr Address to insert the probe at
dst_addr Target to where the probe should point to
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_InterceptDebuggingEvent DEBUGGING_EVENT  eventType,
INTERCEPT_DEBUGGING_EVENT_CALLBACK  fun,
VOID *  arg
+
+ + + + + +
+   + + +

+Establish an interceptor function for debugging events that Pin sends to an external debugger. This API allows a tool to filter these events before they are visible to the debugger.

+A tool can set only one "intercept" function for a particular event, so a new function overwrites any previous one for the same event. To disable an interceptor, pass a NULL function pointer.

+

Parameters:
+ + + + +
[in] eventType Tells the type of events to intercept.
[in] fun The tool's interceptor function, or NULL.
[in] val Value to pass to the interceptor function.
+
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_RemoveFollowChildProcessFunctions  ) 
+
+ + + + + +
+   + + +

+Remove all follow child notification functions

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_RemoveProbe ADDRINT  address  ) 
+
+ + + + + +
+   + + +

+This is an internal Pin API. It is not supported for use in general tools. We reserve the right to change or remove this API at any time without advanced notice.

+Remove a probe that was previously inserted at address

+

Parameters:
+ + +
src_addr Address at which a probe was previously inserted
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_ReplayContextChange THREADID  tid,
const CONTEXT from,
CONTEXT to,
CONTEXT_CHANGE_REASON  reason,
INT32  info
+
+ + + + + +
+   + + +

+This API is intended for use by tools that replay the execution of an application and need to replay an asynchronous context change that was received by the application at record time. This API is not intended as a general way to send a forced context change (signal, exception, APC) to the application. To do that, see PIN_RaiseException().

+Calling this API causes Pin to call back on the tool's context-changed notification function if one was set up with PIN_AddContextChangeFunction(). Thus, the tool is notified about the context change as though the application really received it. Calling this API may also notify an external debugger if one is attached to Pin via the -appdebug switch, which gives the debugger a chance to stop execution of the application when it receives the replayed context change. (Whether this happens depends on the CONTEXT_CHANGE_REASON, and the expected behavior of the debugger on different platforms).

+PIN_ReplayContextChange() does not return to its caller. If the to parameter is not NULL, execution resumes at that context after it has been potentially modified by the tool's context-changed call-back. If reason is CONTEXT_CHANGE_REASON_FATALSIGNAL, Pin emulates a fatal signal and execution terminates gracefully after calling the tool's Fini functions.

+This API can be called from an analysis routine or a replacement routine, but not from a callback.

+

Parameters:
+ + + + + + +
[in] tid The ID of the calling thread.
[in] from The register state prior to the context change (e.g. the register state at the point when the signal is received for CONTEXT_CHANGE_REASON_SIGNAL).
[in] to The register state immediately after the context change. This should be NULL for CONTEXT_CHANGE_REASON_FATALSIGNAL.
[in] reason The type of the context change.
[in] info Additional information, depending on reason. (Ignored for reason codes not listed below.)
    +
  • CONTEXT_CHANGE_REASON_FATALSIGNAL: The Unix signal number.
  • +
  • CONTEXT_CHANGE_REASON_SIGNAL: The Unix signal number.
  • +
  • CONTEXT_CHANGE_REASON_EXCEPTION: The Windows exception code.
  • +
+
+
+
Returns:
This function does not return.
+
Note:
The vm and pin client locks are obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Linux & Windows
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IMG LEVEL_PINCLIENT::PIN_ReplayImageLoad const char *  imageName,
const char *  fileName,
ADDRINT  loadOffset,
REPLAY_IMAGE_TYPE  imageType
+
+ + + + + +
+   + + +

+Ask Pin to perform all the functions it would normally do when it detects that a new shared library has been loaded. This is intended for use in a replay system, where the replay tool has recorded library load operations, and now wants to replay them.

+The code calling this routine need not ensure that the loaded sections of the image have already been restored. Using this interface causes Pin to use its private copy of the image information to satisfy the IMG, SEC and RTN functions.

+This routine can be called before PIN_StartProgram to set up image load operations for images which were loaded before Pin took control of the program at record time (on Unix systems these are normally the main executable and the dynamic linker; on Windows more system libraries may be present). When called at this point the image load callbacks are remembered internally, and replayed when PIN_StartProgram is called. (This is the same time they would have been made at record time, and ensures that all relevant callbacks have been registered).

+PIN_ReplayImageLoad can also be called from analysis or callback routines, in which case the relevant callbacks are made immediately. If called from an analysis routine, the Pin client lock must be claimed before calling PIN_ReplayImageLoad (the Pin client lock is already held when in a callback routine, so there is no need to claim it again).

+

Parameters:
+ + + + + +
imageName name of the image visible to Pin tools
fileName name of the file from which the image is read
loadOffset offset from the address at which the image is naturally loaded to the address at which it has been loaded
imageType Type of the image to load
+
+
Returns:
the image id of the loaded img, or IMG_INVALID() when called before PIN_StartProgram
+
Note:
The vm and pin client locks are obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Linux (others to follow)
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_ReplayImageUnload IMG  img  ) 
+
+ + + + + +
+   + + +

+Ask Pin to perform all the functions it would normally do when it detects that a shared library has been unloaded. This is intended for use in a replay system, where the replay tool has recorded library unload operations, and now wants to replay them.

+Note that a replay system need not explicitly call this function to cause image unload callbacks at the end of process execution. Pin will generate those callbacks itself provided that images were created using the PIN_ReplayImageLoad call. However, this function is required to handle explicit image unloads (for instance those caused by dlclose() )

+PIN_ReplayImageUnload can be called from analysis or callback routines. If called from an analysis routine, the Pin client lock must be claimed before calling PIN_ReplayImageUnload (the Pin client lock is already held when in a callback routine, so there is no need to claim it again).

+

Parameters:
+ + +
img the IMG to be unloaded
+
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Linux (others to follow)
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_ReplaySyscallEntry THREADID  tid,
CONTEXT ctxt,
SYSCALL_STANDARD  std
+
+ + + + + +
+   + + +

+This API is intended for use by tools that replay the execution of an application and need to behave as if a system call has been made, calling all callbacks registered with PIN_AddSysCallEntry function. However, no system call is actually performed.

+This API can be called from an analysis routine or a replacement routine, but not from a call-back.

+

Parameters:
+ + + + +
[in] tid The ID of the thread in which the system call appears to execute.
[in] from The register state at the point when the system call appears to execute.
[in] std The calling standard of the system call.
+
+
Note:
The vm and pin client locks are obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Linux,Windows,BSD
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_ReplaySyscallExit THREADID  tid,
CONTEXT ctxt,
SYSCALL_STANDARD  std
+
+ + + + + +
+   + + +

+This API is intended for use by tools that replay the execution of an application and need to behave as if a system call has been made, calling all callbacks registered with PIN_AddSysCallExit function. However, no system call is actually performed.

+This API can be called from an analysis routine or a replacement routine, but not from a call-back.

+

Parameters:
+ + + + +
[in] tid The ID of the thread in which the system call appears to execute.
[in] from The register state at the point after the system call has executed.
[in] std The calling standard of the system call.
+
+
Note:
The vm and pin client locks are obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Linux,Windows,BSD
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_SetReplayMode UINT32  flags  ) 
+
+ + + + + +
+   + + +

+Tell Pin to execute different sets of operations in replay mode.

+The only flag currently supported is REPLAY_MODE_IMAGEOPS which disables Pin's normal detection of image load and unload events, which are expected to be replayed through the PIN_ReplayImageLoad and PIN_ReplayImageUnload calls. It also avoids Pin loading information about the initial image given on the command line.

+Other flags may be added as required in the future.

+Must be called before PIN_StartProgram

+

Parameters:
+ + +
flags A mask created from the PIN_REPLAY_MODE_FLAGS enum describing the operations the replayer will take control of.
+
+
Availability:
Mode: JIT
+ O/S: Linux (others later)
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::PIN_SpawnApplicationThread const CONTEXT ctxt  ) 
+
+ + + + + +
+   + + +

+Start a new thread which will begin to execute with the register state from the context. At least the flags register in the context must be sensible (even if all of the thread's registers will be set in the thread start callback).

+This function requires the VM lock to operate, so will acquire and release it if it is not already held.

+

Parameters:
+ + +
[in] ctxt context for the new thread.
+
+
Returns:
TRUE if a new thread was sucessfully spawned, FALSE if not.
+
Note:
The vm lock is obtained during the call of this API.

+This function must be used on applications that are running with the (newer) NPTL version of pthread library. Running this function on an application that is running with the (older) LinuxThreads version of pthread can prevent PIN from shuting down the VM when the application exits.

+
Availability:
Mode: JIT
+ O/S: Linux
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + +
BOOL LEVEL_PINCLIENT::PIN_TryClientLock  ) 
+
+ + + + + +
+   + + +

+Atempts to acquire the client lock, but does not block the caller.

Returns:
Returns TRUE if the lock is acquired, FALSE if not.
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_UnloadAllImages BOOL  copyBits  ) 
+
+ + + + + +
+   + + +

+Destroy all image objects. Remove probes.

+

+ + + + +
+ + + + + + + + +
BOOL LEVEL_PINCLIENT::PIN_WasMemoryReservedInLoadTime  ) 
+
+ + + + + +
+   + + +

+Return TRUE if PIN was successfully reserved the neccessary memory at application load time (specified on the -reserve_memory knob), and was successfully restricted the memory from the loader (specified on the -restrict_memory knob). It is guaranteed this is the return value is FALSE then none the memory specified in the mentioned knobs was reserved/restricted

+

Returns:
TRUE if all the memory was reserved/restricted
+
Availability:
Mode: JIT
+ O/S: Linux
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + +
PIN_CLIENT_STATE& LEVEL_PINCLIENT::PinClientState  ) 
+
+ + + + + +
+   + + +

+Return reference to the instance of the PIN_CLIENT_STATE singleton

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
LOCALFUN BOOL LEVEL_PINCLIENT::ProbeMayOverwriteBranchTarget INS  target_ins,
UINT32  probe_size,
BOOL *  mayOverwriteUnidentifiedBranchTarget
+
+ + + + + +
+   + + +

+This routine tests to see if the probe may overwrite the target of a branch/call

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IMG LEVEL_PINCLIENT::ProcessImageLoad const string &  filename,
const CHAR *  trueFilename,
ADDRINT  load_offset,
UINT32  flags,
void *  arg
+
+ + + + + +
+   + + +

+When the application loads a new image, do some bookeeping.

+

Parameters:
+ + + + + + +
[in] filename The filename seen by the user
[in] trueFilename The file actually read (or NULL if filename should be used)
[in] load_offset The offset from the images linked address to its load address
[in] flags Flags for the new image (an | of values from IMAGE_LOAD_FLAGS enumeration)
[in] arg Argument specific to the image type
+
+
Returns:
New IMG object corresponding to the loaded image. IMG_INVALID() if load was unsuccessful.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IMG LEVEL_PINCLIENT::ProcessImageLoad const string &  filename,
const CHAR *  trueFilename,
ADDRINT  load_offset,
UINT32  flags,
void *  loaderInfo,
void *  arg
+
+ + + + + +
+   + + +

+When the application loads a new image, do some bookkeeping.

+

Parameters:
+ + + + + + + +
[in] filename The filename seen by the user
[in] trueFilename The file actually read (or NULL if filename should be used)
[in] load_offset The offset from the images linked address to its load address
[in] flags Flags for the new image (an | of values from IMAGE_LOAD_FLAGS enumeration)
[in] loaderInfo Points to OS specific struct containing loader information about the image to be used for PINADX debugger.
[in] arg Argument specific to the image type
+
+
Returns:
New IMG object corresponding to the loaded image. IMG_INVALID() if load was unsuccessful.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::ProcessImageUnload IMG  img,
BOOL  copyBits
+
+ + + + + +
+   + + +

+Process image unload notification.

Parameters:
+ + + +
img unloaded image
copyBits should pin restore original probed bits back to the image code
+
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::ProcessModuleUnload ADDRINT  base  ) 
+
+ + + + + +
+   + + +

+Process module unload.

+

Parameters:
+ + +
[in] base base address of the module
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
LOCALFUN VOID LEVEL_PINCLIENT::ReadElfHeader CHAR const *  file,
EHDR *  ehdr
+
+ + + + + +
+   + + +

+Read the elf header of a binary

+

+ + + + +
+ + + + + + + + +
VOID LEVEL_PINCLIENT::ReleaseVmLock  ) 
+
+ + + + + +
+   + + +

+Release the vm lock.

+

Availability:
Mode: JIT
+ O/S: Linux, Windows & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + +
VOID LEVEL_PINCLIENT::ResetOpenImg  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + +
VOID LEVEL_PINCLIENT::ResetOpenRtn  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
ADDRINT LEVEL_PINCLIENT::ResolveIFunc ADDRINT  resolver  ) 
+
+ + + + + +
+   + + +

+Resolve IFUNC address by calling its resolver.

+

Parameters:
+ + +
[in] rtn Handle of RTN object
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
BOOL LEVEL_PINCLIENT::RTN_CheckFixups RTN  rtn,
INS  target_ins,
UINT32  probe_size
+
+ + + + + +
+   + + +

+Return TRUE if fixup bytes intercept replaced bytes of the rtn entry point probe.

+

Parameters:
+ + +
[in] rtn Handle of RTN object
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LOCALFUN BOOL LEVEL_PINCLIENT::RTN_CheckRtnSizeForProbe RTN  rtn,
INS  target_ins,
BOOL  checkForPadding,
UINT32  probe_size
+
+ + + + + +
+   + + +

+This routine tests the size of a function, starting at the probe target instruction, to ensure that a probe will not overflow its bounds. The function returns TRUE in case rtn size is not fit for probe.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
RTN LEVEL_PINCLIENT::RTN_CreateJitFunction IMG  img,
ADDRINT  address,
const string &  name,
USIZE  size
+
+ + + + + +
+   + + +

+Create a Jitted function at the given address.

+

Parameters:
+ + + +
[in] address The start address of the new routine
[in] name The assigned name of the new routine
+
+
Returns:
RTN object The new created routine object.
+
Note:
Close any open routine before calling this interface with RTN_Close().
+
Availability:
Mode: JIT
+ O/S: All
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
LOCALFUN VOID LEVEL_PINCLIENT::RTN_Destroy RTN  rtn  ) 
+
+ + + + + +
+   + + +

+an rtn No RTN can be open when destroying an RTN

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::RTN_DestroyJitFunction ADDRINT  address  ) 
+
+ + + + + +
+   + + +

+Destroy a Jitted function object at the given address.

+

Parameters:
+ + +
[in] address The start address of the routine to destroy
+
+
Note:
Close any open routine before calling this interface with RTN_Close().
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LOCALFUN VOID LEVEL_PINCLIENT::RTN_InsertCallProbedImpl RTN  rtn,
IPOINT  action,
AFUNPTR  funptr,
PROBE_MODE  mode,
va_list  argList
+
+ + + + + +
+   + + +

+Insert a probe at a routine enty

+

Parameters:
+ + + + + + +
orgRtn The application routine to instrument
action Use IPOINT_BEFORE or IPOINT_AFTER to call funptr before or after execution.
funptr The analysis function
mode The probe mode (PROBE_MODE_DEFAULT /PROBE_MODE_ALLOW_RELOCATION)
argList a signature of "replacement" specified as a variable list of arguments
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::RTN_InsertFillBuffer RTN  rtn,
IPOINT  action,
BUFFER_ID  id,
  ...
+
+ + + + + +
+   + + +

+Insert analysis code to fill one record in a trace buffer, relative to a RTN.

+

Parameters:
+ + + + + +
[in] rtn The application RTN
[in] action Whether the record is filled before or after the RTN
[in] id The ID of the bufer whose record is filled
[in] ... IARG_TYPE. Additional arguments to specify the fields of the trace buffer.
+
+Certain IARG_TYPEs cannot be used with the *_InsertFillBuffer APIs. The unsupported IARG_TYPEs are: IARG_CONTEXT, IARG_REG_REFERENCE, and IARG_REG_CONST_REFERENCE.

+

Availability:
Mode: JIT
+ O/S: Linux & Windows
+ CPU: IA-32 and Intel(R) 64 architectures
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
AFUNPTR LEVEL_PINCLIENT::RTN_InsertProbe RTN  rtn,
AFUNPTR  replacement,
PROBE_MODE  mode
+
+ + + + + +
+   + + +

+This is an internal Pin API. It is not supported for use in general tools. We reserve the right to change or remove this API at any time without advanced notice.

+This API must be used in conjunction with other internal APIs. Do not use this API.

+Install a probe at the entry point of a routine

+

Parameters:
+ + + + +
rtn routine to be probed
probe routine to call at the probe point
mode - specifies whether the routine can be relocated if probe insertion is impossible due to small first bb
+
+
Returns:
function pointer that to be called to execute the original unprobed routine
+
Note:
The pin client lock is obtained during the call of this API.
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::RTN_OpenAndFetch RTN  rtn  ) 
+
+ + + + + +
+   + + +

+Open the given rtn and fetch all the instructions

+

Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + +
LOCALFUN VOID LEVEL_PINCLIENT::ScanLibraries  ) 
+
+ + + + + +
+   + + +

+Search for DLLs that Pin hasn't yet seen.

+

+ + + + +
+ + + + + + + + +
LOCALFUN VOID LEVEL_PINCLIENT::ScanLibrariesLocked  ) 
+
+ + + + + +
+   + + +

+Take VM lock and client lock before scan.

+In the probe mode we also take VmLock because in attach mode one thread may be still in Vm and another thread may be in dlopen process.

+

+ + + + +
+ + + + + + + + +
LOCALFUN VOID LEVEL_PINCLIENT::ScanLibrariesUnlocked  ) 
+
+ + + + + +
+   + + +

+All necessary locks are already taken (the function's name is misleading). Search for DLLs that Pin hasn't yet seen.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LOCALFUN VOID LEVEL_PINCLIENT::SetEmulatedRegister unsigned  toolRegId,
THREADID  tid,
CONTEXT ctxt,
const VOID *  data
+
+ + + + + +
+   + + +

+Call a client function to set the value of an emulated register.

+

Parameters:
+ + + + + +
[in] toolRegId Tool's ID which identifies the emulated register.
[in] tid The thread whose register is requested.
[in] ctxt Architected register state for the thread.
[in] data Buffer with the value of the register.
+
+
+

+ + + + +
+ + + + + + + + + +
LOCALFUN VOID LEVEL_PINCLIENT::Shutdown INT32  exitCode  ) 
+
+ + + + + +
+   + + +

+Shutdown the client when the application is about to terminate.

Parameters:
+ + +
[in] exitCode OS specific termination code for the application.
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL LEVEL_PINCLIENT::SYM_IsDataMarker SYM  sym  ) 
+
+ + + + + +
+   + + +

+xxx

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
string LEVEL_PINCLIENT::SYM_UndecorateName const string &  symbolName,
UNDECORATION  style
+
+ + + + + +
+   + + +

+Undecorate symbol name.
+ Provides undecoration of C++ names and decorated C names. The behavior of this function
+ is compiler and OS specific.
+

+C++ decorated name is undecorated either to full signature (UNDECORATION_COMPLETE style)
+ or to [scope::]name form (UNDECORATION_NAME_ONLY style).
+

+Example of undecoration of symbol generated by GCC compiler on Linux:
+

+

  Style                   Original name                      Undecorated name
+  =====================   ==================                 ======================================
+  UNDECORATION_COMPLETE   _ZN1A7method1ERKSt6vectorIiSaIiEE  A::method1(std::vector<int, std::allocator<int> > const&)
+  UNDECORATION_NAME_ONLY                                     A::method1
+

+

Parameters:
+ + + +
[in] symbolName Decorated name
+
[in] style Undecoration style, relevant only to C++ undecoration
+ Values:
+ UNDECORATION_COMPLETE undecorate to full signature
+ UNDECORATION_NAME_ONLY undecorate to [scope::]name
+
+
+
Returns:
string containing undecorated symbol name.
+ If undecoration fails or is not supported, the function returns the unmodified original name.
+
+
+

+ + + + +
+ + + + + + + + +
BOOL LEVEL_PINCLIENT::ToolUseImageAPI  ) 
+
+ + + + + +
+   + + +

+Return TRUE if the Pintool uses any image API support.

+

+ + + + +
+ + + + + + + + + +
BBL LEVEL_PINCLIENT::TRACE_AddBranchEdg TRACE  trace  ) 
+
+ + + + + +
+   + + +

+If the last instruction of the trace is a direct branch then add the target path bbl as the fallthrough path into the trace. TRACE_StraightenControlFlow must be invoked prior to compiling the trace to ensure that the branches are invereted.

+

Parameters:
+ + +
trace Trace to add the new basic block to
+
+
Returns:
bbl A handle to the newly added basic block
+
+

+ + + + +
+ + + + + + + + + +
BBL LEVEL_PINCLIENT::TRACE_AddFallthroughEdg TRACE  trace  ) 
+
+ + + + + +
+   + + +

+Add the fallthrough path bbl of the current last instruction in the trace to the end of the trace.

+

Parameters:
+ + +
trace Trace to add the new basic block to
+
+
Returns:
bbl A handle to the newly added basic block
+
+

+ + + + +
+ + + + + + + + + +
BBL LEVEL_PINCLIENT::TRACE_AddInlineCallEdg TRACE  trace  ) 
+
+ + + + + +
+   + + +

+If the last instruction of the trace is a direct call then inline the call target into the trace.

+

Parameters:
+ + +
trace Trace to add the new basic block to
+
+
Returns:
bbl A handle to the newly added basic block
+
+

+ + + + +
+ + + + + + + + + +
BBL LEVEL_PINCLIENT::TRACE_AddInlineReturnEdg TRACE  trace  ) 
+
+ + + + + +
+   + + +

+Inline the return path of a call that has been previously inlined in this trace using TRACE_AddInlineCallEdg. This requires that the tail instruction of the trace is a return instruction.

+

Parameters:
+ + +
trace Trace to add the new basic block to
+
+
Returns:
bbl A handle to the newly added basic block
+
+

+ + + + +
+ + + + + + + + + +
TRACE LEVEL_PINCLIENT::TRACE_Allocate ADDRINT  addr  ) 
+
+ + + + + +
+   + + +

+Create a new trace. The trace is initialized with a bbl starting at the requested address

+

Parameters:
+ + +
addr The address from where to fetch the initialization bbl
+
+
Returns:
TRACE A handle to a trace initialized with a bbl begining at address
+
Note:
The pin client lock is obtained during the call of this API.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TRACE LEVEL_PINCLIENT::TRACE_AllocateForProbe PROBE_TYPE  probeType,
ADDRINT  addr,
RTN  rtn,
USIZE  probeSize,
BOOL  mustReadAtLeastProbesizeBytes
+
+ + + + + +
+   + + +

+Like TRACE_Allocate, but only fetch enough instructions to cover a probe

+

Parameters:
+ + + +
probeType See PROBE_TYPE
addr The address from where to fetch the initialization bbl
+
+
Returns:
TRACE A handle to a trace initialized with a bbl begining at address
+
Note:
The pin client lock is obtained during the call of this API.
+
+

+ + + + +
+ + + + + + + + + +
RTN LEVEL_PINCLIENT::TRACE_CodeRtn TRACE  trace  ) 
+
+ + + + + +
+   + + +

+x

+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::TRACE_Deallocate TRACE  trace  ) 
+
+ + + + + +
+   + + +

+Deallocate a prev. allocated trace.

+

Note:
The pin client lock is obtained during the call of this API.
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::TRACE_ExitsXferToNative TRACE  trace  ) 
+
+ + + + + +
+   + + +

+All exits from this trace go back to original code

+

+ + + + +
+ + + + + + + + + +
ADDRINT LEVEL_PINCLIENT::TRACE_GenerateCode TRACE  trace  ) 
+
+ + + + + +
+   + + +

+Compile and put trace in the code cache.

+

Returns:
Address where the trace has been placed
+
+

+ + + + +
+ + + + + + + + + +
LOCALFUN ADDRINT LEVEL_PINCLIENT::TRACE_Oaddr TRACE  trace  ) 
+
+ + + + + +
+   + + +

+This routine determines the starting code cache address of a trace (Note: Only valid after code cache space has been allocated for this trace - normally after the instrumentation phase.)

Returns:
Code Cache Address
+
+

+ + + + +
+ + + + + + + + + +
ADDRINT LEVEL_PINCLIENT::TRACE_RelocateOriginalInsAddr ADDRINT  addr  ) 
+
+ + + + + +
+   + + +

+Create a trace from a specified address, Transfer all exits to native generated a code, put in in code cache and return an address

Parameters:
+ + +
addr - trace entry address
+
+
Returns:
address of the generated code in code cache
+
Note:
The pin client lock is obtained during the call of this API.
+
+

+ + + + +
+ + + + + + + + + +
VOID LEVEL_PINCLIENT::TRACE_StraightenControlFlow TRACE  trace  ) 
+
+ + + + + +
+   + + +

+Build the control flow for the trace just generated; allows the traversing of the instructions inserted into the trace. This must be called prior to looking at a trace that has applied TRACE_AddInlineCallEdg or TRACE_AddInlineReturnEdg functions for the adding of basic blocks to the trace. Upon invoking this function, the trace's control flow is fixed up to look as it would in the memory afer compilation.

+

+ + + + +
+ + + + + + + + + +
INS LEVEL_PINCLIENT::TraceFirstIns ADDRINT  currTraceAddr  ) 
+
+ + + + + +
+   + + +

+Returns the first instruction in the given trace.

+

+ + + + +
+ + + + + + + + +
VOID LEVEL_PINCLIENT::UnInitializeApp  ) 
+
+ + + + + +
+   + + +

+Uninitialize app

+

+ + + + +
+ + + + + + + + +
LOCALFUN ADDRINT LEVEL_PINCLIENT::VdsoAddress  ) 
+
+ + + + + +
+   + + +

+Return VDSO image base address

+

+ + + + +
+ + + + + + + + +
VOID LEVEL_PINCLIENT::VmFunctionNotInitialized  ) 
+
+ + + + + +
+   + + +

+If the pintool is executed without a vm, then some of the function pointers in ClientIntData will not be defined. Rather than jump to 0 and segv, we print a message.

+


Variable Documentation

+

+ + + + +
+ + + + +
LOCALTYPE typedef TLS_KEY_ALLOCATOR<TLS_KEY_CLIENT_FIRST, TLS_KEY_CLIENT_LAST> LEVEL_PINCLIENT::CLIENT_TLS_KEY_ALLOCATOR
+
+ + + + + +
+   + + +

+Allocator of TLS keys in client TLS.

+

+ + + + +
+ + + + +
LOCALVAR PINCLIENTINT LEVEL_PINCLIENT::ClientIntData
+
+ + + + + +
+   + + +

+Initial value:

+    {
+    
+    
+    PINCLIENTINT::MAGIC,
+    InitializeCallBacks
+}
+
+

+ + + + +
+ + + + +
GLOBALCONST UINT32 LEVEL_PINCLIENT::MAX_IEH_CALLBACKS = 32
+
+ + + + + +
+   + + +

+Maximum number of internal exception handling callbacks

+

+ + + + +
+ + + + +
LOCALVAR CLIENT_TLS_KEY_ALLOCATOR* LEVEL_PINCLIENT::pClientTlsKeyAllocator
+
+ + + + + +
+   + + +

+Single instance of the allocator of TLS keys in client TLS.

+


Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers.html new file mode 100644 index 0000000..bab21d7 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers.html @@ -0,0 +1,78 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented namespace members with links to the namespaces they belong to: +

+

- _ -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x61.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x61.html new file mode 100644 index 0000000..aee572c --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x61.html @@ -0,0 +1,116 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented namespace members with links to the namespaces they belong to: +

+

- a -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x62.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x62.html new file mode 100644 index 0000000..dddc83f --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x62.html @@ -0,0 +1,216 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented namespace members with links to the namespaces they belong to: +

+

- b -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x63.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x63.html new file mode 100644 index 0000000..ba266d1 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x63.html @@ -0,0 +1,188 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented namespace members with links to the namespaces they belong to: +

+

- c -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x64.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x64.html new file mode 100644 index 0000000..2bb79ac --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x64.html @@ -0,0 +1,98 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented namespace members with links to the namespaces they belong to: +

+

- d -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x65.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x65.html new file mode 100644 index 0000000..03a38aa --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x65.html @@ -0,0 +1,191 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented namespace members with links to the namespaces they belong to: +

+

- e -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x66.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x66.html new file mode 100644 index 0000000..bd19025 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x66.html @@ -0,0 +1,100 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented namespace members with links to the namespaces they belong to: +

+

- f -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x67.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x67.html new file mode 100644 index 0000000..258229e --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x67.html @@ -0,0 +1,99 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented namespace members with links to the namespaces they belong to: +

+

- g -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x68.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x68.html new file mode 100644 index 0000000..5fa51af --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x68.html @@ -0,0 +1,85 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented namespace members with links to the namespaces they belong to: +

+

- h -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x69.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x69.html new file mode 100644 index 0000000..7b3fb97 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x69.html @@ -0,0 +1,765 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented namespace members with links to the namespaces they belong to: +

+

- i -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x6a.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x6a.html new file mode 100644 index 0000000..62a5b2b --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x6a.html @@ -0,0 +1,79 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented namespace members with links to the namespaces they belong to: +

+

- j -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x6b.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x6b.html new file mode 100644 index 0000000..284bbeb --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x6b.html @@ -0,0 +1,115 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented namespace members with links to the namespaces they belong to: +

+

- k -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x6c.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x6c.html new file mode 100644 index 0000000..b565dc9 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x6c.html @@ -0,0 +1,88 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented namespace members with links to the namespaces they belong to: +

+

- l -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x6d.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x6d.html new file mode 100644 index 0000000..3c9bf46 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x6d.html @@ -0,0 +1,120 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented namespace members with links to the namespaces they belong to: +

+

- m -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x6e.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x6e.html new file mode 100644 index 0000000..08b94d8 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x6e.html @@ -0,0 +1,90 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented namespace members with links to the namespaces they belong to: +

+

- n -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x6f.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x6f.html new file mode 100644 index 0000000..546d2d7 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x6f.html @@ -0,0 +1,88 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented namespace members with links to the namespaces they belong to: +

+

- o -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x70.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x70.html new file mode 100644 index 0000000..29feb0f --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x70.html @@ -0,0 +1,323 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented namespace members with links to the namespaces they belong to: +

+

- p -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x72.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x72.html new file mode 100644 index 0000000..d38f172 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x72.html @@ -0,0 +1,429 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented namespace members with links to the namespaces they belong to: +

+

- r -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x73.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x73.html new file mode 100644 index 0000000..fb6e683 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x73.html @@ -0,0 +1,283 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented namespace members with links to the namespaces they belong to: +

+

- s -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x74.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x74.html new file mode 100644 index 0000000..f498f4c --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x74.html @@ -0,0 +1,130 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented namespace members with links to the namespaces they belong to: +

+

- t -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x75.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x75.html new file mode 100644 index 0000000..cc56ffd --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x75.html @@ -0,0 +1,86 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented namespace members with links to the namespaces they belong to: +

+

- u -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x76.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x76.html new file mode 100644 index 0000000..486a3bb --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x76.html @@ -0,0 +1,86 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented namespace members with links to the namespaces they belong to: +

+

- v -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x78.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x78.html new file mode 100644 index 0000000..d5ae8ab --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_0x78.html @@ -0,0 +1,96 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+Here is a list of all documented namespace members with links to the namespaces they belong to: +

+

- x -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_enum.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_enum.html new file mode 100644 index 0000000..5073013 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_enum.html @@ -0,0 +1,143 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+  +

+

- a -

+

- b -

+

- c -

+

- e -

+

- f -

+

- i -

+

- k -

+

- l -

+

- m -

+

- p -

+

- r -

+

- s -

+

- u -

+

- v -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_eval.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_eval.html new file mode 100644 index 0000000..3ab8b18 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_eval.html @@ -0,0 +1,288 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+  +

+

- a -

+

- b -

+

- d -

+

- e -

+

- f -

+

- i -

+

- k -

+

- l -

+

- n -

+

- o -

+

- p -

+

- r -

+

- s -

+

- u -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func.html new file mode 100644 index 0000000..c9cf171 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func.html @@ -0,0 +1,108 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+  +

+

- a -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x62.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x62.html new file mode 100644 index 0000000..058c0f9 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x62.html @@ -0,0 +1,172 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+  +

+

- b -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x63.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x63.html new file mode 100644 index 0000000..3a5b240 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x63.html @@ -0,0 +1,177 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+  +

+

- c -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x64.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x64.html new file mode 100644 index 0000000..ac9e414 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x64.html @@ -0,0 +1,91 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+  +

+

- d -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x65.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x65.html new file mode 100644 index 0000000..40056b8 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x65.html @@ -0,0 +1,171 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+  +

+

- e -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x66.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x66.html new file mode 100644 index 0000000..23c1937 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x66.html @@ -0,0 +1,87 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+  +

+

- f -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x67.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x67.html new file mode 100644 index 0000000..7385387 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x67.html @@ -0,0 +1,96 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+  +

+

- g -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x68.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x68.html new file mode 100644 index 0000000..df0e0f4 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x68.html @@ -0,0 +1,84 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+  +

+

- h -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x69.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x69.html new file mode 100644 index 0000000..914203b --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x69.html @@ -0,0 +1,737 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+  +

+

- i -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x6a.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x6a.html new file mode 100644 index 0000000..66c93a5 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x6a.html @@ -0,0 +1,78 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+  +

+

- j -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x6b.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x6b.html new file mode 100644 index 0000000..e8339b9 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x6b.html @@ -0,0 +1,108 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+  +

+

- k -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x6c.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x6c.html new file mode 100644 index 0000000..2cdcf96 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x6c.html @@ -0,0 +1,82 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+  +

+

- l -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x6d.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x6d.html new file mode 100644 index 0000000..46a5b26 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x6d.html @@ -0,0 +1,112 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+  +

+

- m -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x6e.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x6e.html new file mode 100644 index 0000000..39bce35 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x6e.html @@ -0,0 +1,84 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+  +

+

- n -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x6f.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x6f.html new file mode 100644 index 0000000..aa5157c --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x6f.html @@ -0,0 +1,79 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+  +

+

- o -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x70.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x70.html new file mode 100644 index 0000000..042d2c7 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x70.html @@ -0,0 +1,278 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+  +

+

- p -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x72.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x72.html new file mode 100644 index 0000000..ccea150 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x72.html @@ -0,0 +1,356 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+  +

+

- r -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x73.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x73.html new file mode 100644 index 0000000..721b7aa --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x73.html @@ -0,0 +1,217 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+  +

+

- s -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x74.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x74.html new file mode 100644 index 0000000..8d37cb2 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x74.html @@ -0,0 +1,116 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+  +

+

- t -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x75.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x75.html new file mode 100644 index 0000000..e7ccc94 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x75.html @@ -0,0 +1,82 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+  +

+

- u -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x76.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x76.html new file mode 100644 index 0000000..22afc54 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x76.html @@ -0,0 +1,83 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+  +

+

- v -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x78.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x78.html new file mode 100644 index 0000000..899db8b --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_func_0x78.html @@ -0,0 +1,95 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+  +

+

- x -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_type.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_type.html new file mode 100644 index 0000000..201462a --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_type.html @@ -0,0 +1,164 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+  +

+

- a -

+

- c -

+

- d -

+

- e -

+

- f -

+

- g -

+

- i -

+

- m -

+

- o -

+

- p -

+

- r -

+

- s -

+

- t -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_vars.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_vars.html new file mode 100644 index 0000000..09f62c8 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespacemembers_vars.html @@ -0,0 +1,135 @@ + + +Pin: Class Members + + + + +
+
+ + +
+ +
+ +

+  +

+

- _ -

+

- a -

+

- b -

+

- c -

+

- f -

+

- i -

+

- l -

+

- m -

+

- n -

+

- o -

+

- p -

+

- r -

+

- s -

+

- v -

+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespaces.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespaces.html new file mode 100644 index 0000000..89bd4af --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/namespaces.html @@ -0,0 +1,39 @@ + + +Pin: Namespace Index + + + + +
+
+ +

Pin Namespace List

Here is a list of all documented namespaces with brief descriptions: + + + +
LEVEL_BASE
LEVEL_CORE
LEVEL_PINCLIENT
+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/pin-debugger-attach.png b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/pin-debugger-attach.png new file mode 100644 index 0000000..ab0cef3 Binary files /dev/null and b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/pin-debugger-attach.png differ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/pin-debugger-option-pages-properties.png b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/pin-debugger-option-pages-properties.png new file mode 100644 index 0000000..c73e9a1 Binary files /dev/null and b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/pin-debugger-option-pages-properties.png differ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/pin-debugger-project-properties1.png b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/pin-debugger-project-properties1.png new file mode 100644 index 0000000..3a42fb2 Binary files /dev/null and b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/pin-debugger-project-properties1.png differ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/pin-debugger-project-properties2.png b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/pin-debugger-project-properties2.png new file mode 100644 index 0000000..d4fbf52 Binary files /dev/null and b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/pin-debugger-project-properties2.png differ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/search.idx b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/search.idx new file mode 100644 index 0000000..617b9fd Binary files /dev/null and b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/search.idx differ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/search.php b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/search.php new file mode 100644 index 0000000..ae86dd8 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/search.php @@ -0,0 +1,382 @@ + + +Search + + + + +
+
    +
  • Main Page
  • +
  • Modules
  • +
  • Namespaces
  • +
  • Classes
  • +
  • +
    + + + + +1 document matching your query."; + } + else // $num>1 + { + return "Found $num documents matching your query. Showing best matches first."; + } +} + +function report_matches() +{ + return "Matches: "; +} +function end_form($value) +{ + echo " \n \n
    \n
    \n
  • \n
\n
\n"; +} + +function readInt($file) +{ + $b1 = ord(fgetc($file)); $b2 = ord(fgetc($file)); + $b3 = ord(fgetc($file)); $b4 = ord(fgetc($file)); + return ($b1<<24)|($b2<<16)|($b3<<8)|$b4; +} + +function readString($file) +{ + $result=""; + while (ord($c=fgetc($file))) $result.=$c; + return $result; +} + +function readHeader($file) +{ + $header =fgetc($file); $header.=fgetc($file); + $header.=fgetc($file); $header.=fgetc($file); + return $header; +} + +function computeIndex($word) +{ + // Fast string hashing + //$lword = strtolower($word); + //$l = strlen($lword); + //for ($i=0;$i<$l;$i++) + //{ + // $c = ord($lword{$i}); + // $v = (($v & 0xfc00) ^ ($v << 6) ^ $c) & 0xffff; + //} + //return $v; + + // Simple hashing that allows for substring search + if (strlen($word)<2) return -1; + // high char of the index + $hi = ord($word{0}); + if ($hi==0) return -1; + // low char of the index + $lo = ord($word{1}); + if ($lo==0) return -1; + // return index + return $hi*256+$lo; +} + +function search($file,$word,&$statsList) +{ + $index = computeIndex($word); + if ($index!=-1) // found a valid index + { + fseek($file,$index*4+4); // 4 bytes per entry, skip header + $index = readInt($file); + if ($index) // found words matching the hash key + { + $start=sizeof($statsList); + $count=$start; + fseek($file,$index); + $w = readString($file); + while ($w) + { + $statIdx = readInt($file); + if ($word==substr($w,0,strlen($word))) + { // found word that matches (as substring) + $statsList[$count++]=array( + "word"=>$word, + "match"=>$w, + "index"=>$statIdx, + "full"=>strlen($w)==strlen($word), + "docs"=>array() + ); + } + $w = readString($file); + } + $totalHi=0; + $totalFreqHi=0; + $totalFreqLo=0; + for ($count=$start;$count $idx, + "freq" => $freq>>1, + "rank" => 0.0, + "hi" => $freq&1 + ); + if ($freq&1) // word occurs in high priority doc + { + $totalHi++; + $totalFreqHi+=$freq*$multiplier; + } + else // word occurs in low priority doc + { + $totalFreqLo+=$freq*$multiplier; + } + } + // read name and url info for the doc + for ($i=0;$i<$numDocs;$i++) + { + fseek($file,$docInfo[$i]["idx"]); + $docInfo[$i]["name"]=readString($file); + $docInfo[$i]["url"]=readString($file); + } + $statInfo["docs"]=$docInfo; + } + $totalFreq=($totalHi+1)*$totalFreqLo + $totalFreqHi; + for ($count=$start;$count$key, + "name"=>$di["name"], + "rank"=>$rank + ); + } + $docs[$key]["words"][] = array( + "word"=>$wordInfo["word"], + "match"=>$wordInfo["match"], + "freq"=>$di["freq"] + ); + } + } + return $docs; +} + +function filter_results($docs,&$requiredWords,&$forbiddenWords) +{ + $filteredDocs=array(); + while (list ($key, $val) = each ($docs)) + { + $words = &$docs[$key]["words"]; + $copy=1; // copy entry by default + if (sizeof($requiredWords)>0) + { + foreach ($requiredWords as $reqWord) + { + $found=0; + foreach ($words as $wordInfo) + { + $found = $wordInfo["word"]==$reqWord; + if ($found) break; + } + if (!$found) + { + $copy=0; // document contains none of the required words + break; + } + } + } + if (sizeof($forbiddenWords)>0) + { + foreach ($words as $wordInfo) + { + if (in_array($wordInfo["word"],$forbiddenWords)) + { + $copy=0; // document contains a forbidden word + break; + } + } + } + if ($copy) $filteredDocs[$key]=$docs[$key]; + } + return $filteredDocs; +} + +function compare_rank($a,$b) +{ + if ($a["rank"] == $b["rank"]) + { + return 0; + } + return ($a["rank"]>$b["rank"]) ? -1 : 1; +} + +function sort_results($docs,&$sorted) +{ + $sorted = $docs; + usort($sorted,"compare_rank"); + return $sorted; +} + +function report_results(&$docs) +{ + echo "\n"; + echo " \n"; + echo " \n"; + echo " \n"; + $numDocs = sizeof($docs); + if ($numDocs==0) + { + echo " \n"; + echo " \n"; + echo " \n"; + } + else + { + echo " \n"; + echo " \n"; + echo " \n"; + $num=1; + foreach ($docs as $doc) + { + echo " \n"; + echo " "; + echo "\n"; + echo " \n"; + echo " \n"; + echo " \n"; + $num++; + } + } + echo "

".search_results()."

".matches_text(0)."
".matches_text($numDocs); + echo "\n"; + echo "
$num.".$doc["name"]."
".report_matches()." "; + foreach ($doc["words"] as $wordInfo) + { + $word = $wordInfo["word"]; + $matchRight = substr($wordInfo["match"],strlen($word)); + echo "$word$matchRight(".$wordInfo["freq"].") "; + } + echo "
\n"; +} + +function main() +{ + if(strcmp('4.1.0', phpversion()) > 0) + { + die("Error: PHP version 4.1.0 or above required!"); + } + if (!($file=fopen("search.idx","rb"))) + { + die("Error: Search index file could NOT be opened!"); + } + if (readHeader($file)!="DOXS") + { + die("Error: Header of index file is invalid!"); + } + $query=""; + if (array_key_exists("query", $_GET)) + { + $query=$_GET["query"]; + } + end_form($query); + echo " \n
\n"; + $results = array(); + $requiredWords = array(); + $forbiddenWords = array(); + $foundWords = array(); + $word=strtok($query," "); + while ($word) // for each word in the search query + { + if (($word{0}=='+')) { $word=substr($word,1); $requiredWords[]=$word; } + if (($word{0}=='-')) { $word=substr($word,1); $forbiddenWords[]=$word; } + if (!in_array($word,$foundWords)) + { + $foundWords[]=$word; + search($file,strtolower($word),$results); + } + $word=strtok(" "); + } + $docs = array(); + combine_results($results,$docs); + // filter out documents with forbidden word or that do not contain + // required words + $filteredDocs = filter_results($docs,$requiredWords,$forbiddenWords); + // sort the results based on rank + $sorted = array(); + sort_results($filteredDocs,$sorted); + // report results to the user + report_results($sorted); + echo "
\n"; + fclose($file); +} + +main(); + + +?> +
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/stack-debugger-commands.png b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/stack-debugger-commands.png new file mode 100644 index 0000000..d74e76d Binary files /dev/null and b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/stack-debugger-commands.png differ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/stack-debugger-custom-break.png b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/stack-debugger-custom-break.png new file mode 100644 index 0000000..1513366 Binary files /dev/null and b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/stack-debugger-custom-break.png differ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structCALL__APPLICATION__FUNCTION__PARAM-members.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structCALL__APPLICATION__FUNCTION__PARAM-members.html new file mode 100644 index 0000000..f8e53ea --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structCALL__APPLICATION__FUNCTION__PARAM-members.html @@ -0,0 +1,38 @@ + + +Pin: Member List + + + + +
+
+ +

CALL_APPLICATION_FUNCTION_PARAM Member List

This is the complete list of members for CALL_APPLICATION_FUNCTION_PARAM, including all inherited members.

+ +
nativeCALL_APPLICATION_FUNCTION_PARAM


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structCALL__APPLICATION__FUNCTION__PARAM.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structCALL__APPLICATION__FUNCTION__PARAM.html new file mode 100644 index 0000000..753a8d5 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structCALL__APPLICATION__FUNCTION__PARAM.html @@ -0,0 +1,78 @@ + + +Pin: CALL_APPLICATION_FUNCTION_PARAM Struct Reference + + + + +
+
+ +

CALL_APPLICATION_FUNCTION_PARAM Struct Reference
+ +[Controlling and Initializing] +

#include <types_vmapi.H> +

+List of all members. + + + + +

Public Attributes

UINT32 native:1
+


Detailed Description

+Additional parameters to define how exactly to perform PIN_CallApplicationFunction () +

+


Member Data Documentation

+

+ + + + +
+ + + + +
UINT32 CALL_APPLICATION_FUNCTION_PARAM::native
+
+ + + + + +
+   + + +

+When set, PIN executes the function without instrumenting it (default: FALSE). +

+

+


The documentation for this struct was generated from the following file:
    +
  • types_vmapi.H
+
Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structCONTROLLER_1_1ROIinfoStruct-members.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structCONTROLLER_1_1ROIinfoStruct-members.html new file mode 100644 index 0000000..6e46703 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structCONTROLLER_1_1ROIinfoStruct-members.html @@ -0,0 +1,41 @@ + + +Pin: Member List + + + + +
+
+ +

CONTROLLER::ROIinfoStruct Member List

This is the complete list of members for CONTROLLER::ROIinfoStruct, including all inherited members.

+ + + + +
friendRid (defined in CONTROLLER::ROIinfoStruct)CONTROLLER::ROIinfoStruct
pcregion (defined in CONTROLLER::ROIinfoStruct)CONTROLLER::ROIinfoStruct
startSeen (defined in CONTROLLER::ROIinfoStruct)CONTROLLER::ROIinfoStruct
triggered (defined in CONTROLLER::ROIinfoStruct)CONTROLLER::ROIinfoStruct


Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structCONTROLLER_1_1ROIinfoStruct.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structCONTROLLER_1_1ROIinfoStruct.html new file mode 100644 index 0000000..f78de27 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structCONTROLLER_1_1ROIinfoStruct.html @@ -0,0 +1,64 @@ + + +Pin: CONTROLLER::ROIinfoStruct Struct Reference + + + + +
+
+ + +

CONTROLLER::ROIinfoStruct Struct Reference
+ +[CONTROLLER_PCREGIONS] +

#include <pcregions_control.H> +

+List of all members. + + + + + + + + + + +

Public Attributes

+BOOL startSeen
+BOOL triggered
+UINT32 friendRid
+PCREGIONpcregion
+


Detailed Description

+This class is used for keeping track of ROIs in the incoming pcregions.csv file. +

+


The documentation for this struct was generated from the following file:
    +
  • pcregions_control.H
+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structCONTROLLER_1_1ROIpcinfoStruct-members.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structCONTROLLER_1_1ROIpcinfoStruct-members.html new file mode 100644 index 0000000..2974486 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structCONTROLLER_1_1ROIpcinfoStruct-members.html @@ -0,0 +1,41 @@ + + +Pin: Member List + + + + +
+
+ +

CONTROLLER::ROIpcinfoStruct Member List

This is the complete list of members for CONTROLLER::ROIpcinfoStruct, including all inherited members.

+ + + + +
execcount (defined in CONTROLLER::ROIpcinfoStruct)CONTROLLER::ROIpcinfoStruct
nextEndingRno (defined in CONTROLLER::ROIpcinfoStruct)CONTROLLER::ROIpcinfoStruct
nextStartingRno (defined in CONTROLLER::ROIpcinfoStruct)CONTROLLER::ROIpcinfoStruct
pc (defined in CONTROLLER::ROIpcinfoStruct)CONTROLLER::ROIpcinfoStruct


Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structCONTROLLER_1_1ROIpcinfoStruct.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structCONTROLLER_1_1ROIpcinfoStruct.html new file mode 100644 index 0000000..8f38af3 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structCONTROLLER_1_1ROIpcinfoStruct.html @@ -0,0 +1,64 @@ + + +Pin: CONTROLLER::ROIpcinfoStruct Struct Reference + + + + +
+
+ + +

CONTROLLER::ROIpcinfoStruct Struct Reference
+ +[CONTROLLER_PCREGIONS] +

#include <pcregions_control.H> +

+List of all members. + + + + + + + + + + +

Public Attributes

+ADDRINT pc
+UINT64 * execcount
+UINT32 * nextStartingRno
+UINT32 * nextEndingRno
+


Detailed Description

+This class is used for keeping track of each unique PC in the incoming pcregions.csv file. Initialized at instrumentation time, used/updated during analysis. +

+


The documentation for this struct was generated from the following file:
    +
  • pcregions_control.H
+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structDEBUGGER__REG__DESCRIPTION-members.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structDEBUGGER__REG__DESCRIPTION-members.html new file mode 100644 index 0000000..8381384 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structDEBUGGER__REG__DESCRIPTION-members.html @@ -0,0 +1,42 @@ + + +Pin: Member List + + + + +
+
+ +

DEBUGGER_REG_DESCRIPTION Member List

This is the complete list of members for DEBUGGER_REG_DESCRIPTION, including all inherited members.

+ + + + + +
_gccIdDEBUGGER_REG_DESCRIPTION
_nameDEBUGGER_REG_DESCRIPTION
_pinRegDEBUGGER_REG_DESCRIPTION
_toolRegIdDEBUGGER_REG_DESCRIPTION
_widthInBitsDEBUGGER_REG_DESCRIPTION


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structDEBUGGER__REG__DESCRIPTION.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structDEBUGGER__REG__DESCRIPTION.html new file mode 100644 index 0000000..5a8916e --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structDEBUGGER__REG__DESCRIPTION.html @@ -0,0 +1,179 @@ + + +Pin: DEBUGGER_REG_DESCRIPTION Struct Reference + + + + +
+
+ +

DEBUGGER_REG_DESCRIPTION Struct Reference

#include <types_vmapi.H> +

+List of all members. + + + + + + + + + + + + +

Public Attributes

REG _pinReg
unsigned _toolRegId
unsigned _widthInBits
const char * _name
int _gccId
+


Detailed Description

+Describes a register that is exposed to an application-level debugger. +

+


Member Data Documentation

+

+ + + + +
+ + + + +
int DEBUGGER_REG_DESCRIPTION::_gccId
+
+ + + + + +
+   + + +

+The GCC/Dwarf equivalent register id. +

+

+

+ + + + +
+ + + + +
const char* DEBUGGER_REG_DESCRIPTION::_name
+
+ + + + + +
+   + + +

+The name of the register. +

+

+

+ + + + +
+ + + + +
REG DEBUGGER_REG_DESCRIPTION::_pinReg
+
+ + + + + +
+   + + +

+The Pin register ID, if this is a native Pin register. REG_NONE if the tool will emulate this register.

+

+ + + + +
+ + + + +
unsigned DEBUGGER_REG_DESCRIPTION::_toolRegId
+
+ + + + + +
+   + + +

+Only used if _pinReg is REG_NONE. Gives an ID for this emulated register. +

+

+

+ + + + +
+ + + + +
unsigned DEBUGGER_REG_DESCRIPTION::_widthInBits
+
+ + + + + +
+   + + +

+Width (bits) of the register, as seen by the debugger. Currently, this must be a multiple of 8 bits.

+


The documentation for this struct was generated from the following file:
    +
  • types_vmapi.H
+
Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structDEBUGGER__SHELL_1_1STARTUP__ARGUMENTS-members.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structDEBUGGER__SHELL_1_1STARTUP__ARGUMENTS-members.html new file mode 100644 index 0000000..ba2c96c --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structDEBUGGER__SHELL_1_1STARTUP__ARGUMENTS-members.html @@ -0,0 +1,44 @@ + + +Pin: Member List + + + + +
+
+ +

DEBUGGER_SHELL::STARTUP_ARGUMENTS Member List

This is the complete list of members for DEBUGGER_SHELL::STARTUP_ARGUMENTS, including all inherited members.

+ + + + + + + +
_callOrderAfter (defined in DEBUGGER_SHELL::STARTUP_ARGUMENTS)DEBUGGER_SHELL::STARTUP_ARGUMENTS
_callOrderBeforeDEBUGGER_SHELL::STARTUP_ARGUMENTS
_countPrefetchAsMemOpDEBUGGER_SHELL::STARTUP_ARGUMENTS
_countZeroRepAsMemOpDEBUGGER_SHELL::STARTUP_ARGUMENTS
_customInstrumentorDEBUGGER_SHELL::STARTUP_ARGUMENTS
_enableIcountBreakpointsDEBUGGER_SHELL::STARTUP_ARGUMENTS
STARTUP_ARGUMENTS() (defined in DEBUGGER_SHELL::STARTUP_ARGUMENTS)DEBUGGER_SHELL::STARTUP_ARGUMENTS [inline]


Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structDEBUGGER__SHELL_1_1STARTUP__ARGUMENTS.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structDEBUGGER__SHELL_1_1STARTUP__ARGUMENTS.html new file mode 100644 index 0000000..ad87caf --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structDEBUGGER__SHELL_1_1STARTUP__ARGUMENTS.html @@ -0,0 +1,187 @@ + + +Pin: DEBUGGER_SHELL::STARTUP_ARGUMENTS Struct Reference + + + + +
+
+ + +

DEBUGGER_SHELL::STARTUP_ARGUMENTS Struct Reference
+ +[DEBUGGER_SHELL] +

#include <debugger-shell.H> +

+List of all members. + + + + + + + + + + + + + + +

Public Attributes

CALL_ORDER _callOrderBefore
+CALL_ORDER _callOrderAfter
BOOL _enableIcountBreakpoints
BOOL _countPrefetchAsMemOp
BOOL _countZeroRepAsMemOp
ICUSTOM_INSTRUMENTOR_customInstrumentor
+


Detailed Description

+Arguments that customize the debugger shell. +

+


Member Data Documentation

+

+ + + + +
+ + + + +
CALL_ORDER DEBUGGER_SHELL::STARTUP_ARGUMENTS::_callOrderBefore
+
+ + + + + +
+   + + +

+Tells the relative position of instrumentation added by the debugger shell for "before" and "after" instrumentation.

+

+ + + + +
+ + + + +
BOOL DEBUGGER_SHELL::STARTUP_ARGUMENTS::_countPrefetchAsMemOp
+
+ + + + + +
+   + + +

+Count prefetch instructions as memory operations. +

+

+

+ + + + +
+ + + + +
BOOL DEBUGGER_SHELL::STARTUP_ARGUMENTS::_countZeroRepAsMemOp
+
+ + + + + +
+   + + +

+Count zero-repetition REP instructions as one memory operation. +

+

+

+ + + + +
+ + + + +
ICUSTOM_INSTRUMENTOR* DEBUGGER_SHELL::STARTUP_ARGUMENTS::_customInstrumentor
+
+ + + + + +
+   + + +

+Allows client to override some instrumentation.

+

+ + + + +
+ + + + +
BOOL DEBUGGER_SHELL::STARTUP_ARGUMENTS::_enableIcountBreakpoints
+
+ + + + + +
+   + + +

+Enable instruction-counting breakpoints. +

+

+


The documentation for this struct was generated from the following file:
    +
  • debugger-shell.H
+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structDEBUG__CONNECTION__INFO-members.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structDEBUG__CONNECTION__INFO-members.html new file mode 100644 index 0000000..4c3873d --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structDEBUG__CONNECTION__INFO-members.html @@ -0,0 +1,40 @@ + + +Pin: Member List + + + + +
+
+ +

DEBUG_CONNECTION_INFO Member List

This is the complete list of members for DEBUG_CONNECTION_INFO, including all inherited members.

+ + + +
_stopAtEntryDEBUG_CONNECTION_INFO
_tcpServer (defined in DEBUG_CONNECTION_INFO)DEBUG_CONNECTION_INFO
_typeDEBUG_CONNECTION_INFO


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structDEBUG__CONNECTION__INFO.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structDEBUG__CONNECTION__INFO.html new file mode 100644 index 0000000..7390baa --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structDEBUG__CONNECTION__INFO.html @@ -0,0 +1,108 @@ + + +Pin: DEBUG_CONNECTION_INFO Struct Reference + + + + +
+
+ +

DEBUG_CONNECTION_INFO Struct Reference
+ +[Application Level Debugging API] +

#include <types_vmapi.H> +

+List of all members. + + + + + + + + +

Public Attributes

DEBUG_CONNECTION_TYPE _type
BOOL _stopAtEntry
+_tcpServerStruct _tcpServer
+


Detailed Description

+Information that an external application level debugger needs in order to connect to Pin. +

+


Member Data Documentation

+

+ + + + +
+ + + + +
BOOL DEBUG_CONNECTION_INFO::_stopAtEntry
+
+ + + + + +
+   + + +

+TRUE if Pin stops in debugger at first instruction (-appdebug). +

+

+

+ + + + +
+ + + + +
DEBUG_CONNECTION_TYPE DEBUG_CONNECTION_INFO::_type
+
+ + + + + +
+   + + +

+Tells the type of debugger connection. +

+

+


The documentation for this struct was generated from the following file:
    +
  • types_vmapi.H
+
Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structDEBUG__MODE-members.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structDEBUG__MODE-members.html new file mode 100644 index 0000000..d968349 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structDEBUG__MODE-members.html @@ -0,0 +1,40 @@ + + +Pin: Member List + + + + +
+
+ +

DEBUG_MODE Member List

This is the complete list of members for DEBUG_MODE, including all inherited members.

+ + + +
_optionsDEBUG_MODE
_tcpClientDEBUG_MODE
_typeDEBUG_MODE


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structDEBUG__MODE.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structDEBUG__MODE.html new file mode 100644 index 0000000..c0a193a --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structDEBUG__MODE.html @@ -0,0 +1,130 @@ + + +Pin: DEBUG_MODE Struct Reference + + + + +
+
+ +

DEBUG_MODE Struct Reference
+ +[Application Level Debugging API] +

#include <types_vmapi.H> +

+List of all members. + + + + + + + + +

Public Attributes

DEBUG_CONNECTION_TYPE _type
DEBUG_MODE_OPTIONS _options
_tcpClientStruct _tcpClient
+


Detailed Description

+Information about the application debugging mode. +

+


Member Data Documentation

+

+ + + + +
+ + + + +
DEBUG_MODE_OPTIONS DEBUG_MODE::_options
+
+ + + + + +
+   + + +

+Options which affect application debugging. +

+

+

+ + + + +
+ + + + +
struct _tcpClientStruct DEBUG_MODE::_tcpClient
+
+ + + + + +
+   + + +

+Information for DEBUG_CONNECTION_TYPE_TCP_CLIENT.

+

+ + + + +
+ + + + +
DEBUG_CONNECTION_TYPE DEBUG_MODE::_type
+
+ + + + + +
+   + + +

+Tells the connection type to the application debugger. +

+

+


The documentation for this struct was generated from the following file:
    +
  • types_vmapi.H
+
Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structLEVEL__BASE_1_1ImageLoaderInfo-members.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structLEVEL__BASE_1_1ImageLoaderInfo-members.html new file mode 100644 index 0000000..13700e7 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structLEVEL__BASE_1_1ImageLoaderInfo-members.html @@ -0,0 +1,53 @@ + + +Pin: Member List + + + + +
+
+ +

LEVEL_BASE::ImageLoaderInfo Member List

This is the complete list of members for LEVEL_BASE::ImageLoaderInfo, including all inherited members.

+ + + + + + + + + + + + + + + + +
_brk (defined in LEVEL_BASE::ImageLoaderInfo)LEVEL_BASE::ImageLoaderInfo
_bssAddress (defined in LEVEL_BASE::ImageLoaderInfo)LEVEL_BASE::ImageLoaderInfo
_dataAddress (defined in LEVEL_BASE::ImageLoaderInfo)LEVEL_BASE::ImageLoaderInfo
_dlHandle (defined in LEVEL_BASE::ImageLoaderInfo)LEVEL_BASE::ImageLoaderInfo
_entry (defined in LEVEL_BASE::ImageLoaderInfo)LEVEL_BASE::ImageLoaderInfo
_fpWaitForReady (defined in LEVEL_BASE::ImageLoaderInfo)LEVEL_BASE::ImageLoaderInfo
_loaderFname (defined in LEVEL_BASE::ImageLoaderInfo)LEVEL_BASE::ImageLoaderInfo
_loadOffset (defined in LEVEL_BASE::ImageLoaderInfo)LEVEL_BASE::ImageLoaderInfo
_loadOffsetIndex (defined in LEVEL_BASE::ImageLoaderInfo)LEVEL_BASE::ImageLoaderInfo
_phdr (defined in LEVEL_BASE::ImageLoaderInfo)LEVEL_BASE::ImageLoaderInfo
_phnum (defined in LEVEL_BASE::ImageLoaderInfo)LEVEL_BASE::ImageLoaderInfo
_pinclientint (defined in LEVEL_BASE::ImageLoaderInfo)LEVEL_BASE::ImageLoaderInfo
_pinversion (defined in LEVEL_BASE::ImageLoaderInfo)LEVEL_BASE::ImageLoaderInfo
_textAddress (defined in LEVEL_BASE::ImageLoaderInfo)LEVEL_BASE::ImageLoaderInfo
_toolBaseAddress (defined in LEVEL_BASE::ImageLoaderInfo)LEVEL_BASE::ImageLoaderInfo
_toolFname (defined in LEVEL_BASE::ImageLoaderInfo)LEVEL_BASE::ImageLoaderInfo


Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structLEVEL__BASE_1_1ImageLoaderInfo.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structLEVEL__BASE_1_1ImageLoaderInfo.html new file mode 100644 index 0000000..ae34cc4 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structLEVEL__BASE_1_1ImageLoaderInfo.html @@ -0,0 +1,97 @@ + + +Pin: LEVEL_BASE::ImageLoaderInfo Struct Reference + + + + +
+
+ + +

LEVEL_BASE::ImageLoaderInfo Struct Reference

#include <level_base.H> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Attributes

+ADDRINT _brk
+ADDRINT _phdr
+ADDRINT _entry
+UINT32 _phnum
+const CHAR * _loaderFname
+VOID * _pinclientint
+CHAR * _pinversion
+VOID * _fpWaitForReady
+ADDRINT _loadOffsetIndex
+ADDRINT _loadOffset
+VOID * _dlHandle
+ADDRINT _toolBaseAddress
+ADDRINT _textAddress
+ADDRINT _dataAddress
+ADDRINT _bssAddress
+CHAR * _toolFname
+


Detailed Description

+x +

+


The documentation for this struct was generated from the following file:
    +
  • level_base.H
+
Generated on Sat Nov 4 23:35:53 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structPIN__CODE__RANGE-members.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structPIN__CODE__RANGE-members.html new file mode 100644 index 0000000..11ebcd6 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structPIN__CODE__RANGE-members.html @@ -0,0 +1,39 @@ + + +Pin: Member List + + + + +
+
+ +

PIN_CODE_RANGE Member List

This is the complete list of members for PIN_CODE_RANGE, including all inherited members.

+ + +
size (defined in PIN_CODE_RANGE)PIN_CODE_RANGE
start_address (defined in PIN_CODE_RANGE)PIN_CODE_RANGE


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structPIN__CODE__RANGE.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structPIN__CODE__RANGE.html new file mode 100644 index 0000000..22c2d4f --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structPIN__CODE__RANGE.html @@ -0,0 +1,53 @@ + + +Pin: PIN_CODE_RANGE Struct Reference + + + + +
+
+ +

PIN_CODE_RANGE Struct Reference

#include <types_vmapi.H> +

+List of all members. + + + + + + +

Public Attributes

+ADDRINT start_address
+size_t size
+


Detailed Description

+Dynamic code range (probe mode). +

+


The documentation for this struct was generated from the following file:
    +
  • types_vmapi.H
+
Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structPIN__MEM__ACCESS__INFO-members.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structPIN__MEM__ACCESS__INFO-members.html new file mode 100644 index 0000000..2bbcf12 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structPIN__MEM__ACCESS__INFO-members.html @@ -0,0 +1,41 @@ + + +Pin: Member List + + + + +
+
+ +

PIN_MEM_ACCESS_INFO Member List

This is the complete list of members for PIN_MEM_ACCESS_INFO, including all inherited members.

+ + + + +
bytesAccessed (defined in PIN_MEM_ACCESS_INFO)PIN_MEM_ACCESS_INFO
maskOn (defined in PIN_MEM_ACCESS_INFO)PIN_MEM_ACCESS_INFO
memopType (defined in PIN_MEM_ACCESS_INFO)PIN_MEM_ACCESS_INFO
memoryAddress (defined in PIN_MEM_ACCESS_INFO)PIN_MEM_ACCESS_INFO


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structPIN__MEM__ACCESS__INFO.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structPIN__MEM__ACCESS__INFO.html new file mode 100644 index 0000000..fa7e690 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structPIN__MEM__ACCESS__INFO.html @@ -0,0 +1,62 @@ + + +Pin: PIN_MEM_ACCESS_INFO Struct Reference + + + + +
+
+ +

PIN_MEM_ACCESS_INFO Struct Reference
+ +[Instrumentation arguments] +

#include <types_vmapi.H> +

+List of all members. + + + + + + + + + + +

Public Attributes

+ADDRINT memoryAddress
+PIN_MEMOP_ENUM memopType
+UINT32 bytesAccessed
+BOOL maskOn
+


Detailed Description

+used in the Type whose address is passed to analysis routine when IARG_MULTI_MEMORYACCESS_EA is requested +

+


The documentation for this struct was generated from the following file:
    +
  • types_vmapi.H
+
Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structPIN__MULTI__MEM__ACCESS__INFO-members.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structPIN__MULTI__MEM__ACCESS__INFO-members.html new file mode 100644 index 0000000..77b046c --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structPIN__MULTI__MEM__ACCESS__INFO-members.html @@ -0,0 +1,39 @@ + + +Pin: Member List + + + + +
+
+ +

PIN_MULTI_MEM_ACCESS_INFO Member List

This is the complete list of members for PIN_MULTI_MEM_ACCESS_INFO, including all inherited members.

+ + +
memop (defined in PIN_MULTI_MEM_ACCESS_INFO)PIN_MULTI_MEM_ACCESS_INFO
numberOfMemops (defined in PIN_MULTI_MEM_ACCESS_INFO)PIN_MULTI_MEM_ACCESS_INFO


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structPIN__MULTI__MEM__ACCESS__INFO.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structPIN__MULTI__MEM__ACCESS__INFO.html new file mode 100644 index 0000000..fa3fc28 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/structPIN__MULTI__MEM__ACCESS__INFO.html @@ -0,0 +1,56 @@ + + +Pin: PIN_MULTI_MEM_ACCESS_INFO Struct Reference + + + + +
+
+ +

PIN_MULTI_MEM_ACCESS_INFO Struct Reference
+ +[Instrumentation arguments] +

#include <types_vmapi.H> +

+List of all members. + + + + + + +

Public Attributes

+UINT32 numberOfMemops
+PIN_MEM_ACCESS_INFO memop [MAX_MULTI_MEMOPS]
+


Detailed Description

+address of this Type is passed to analysis routine when IARG_MULTI_MEMORYACCESS_EA is requested +

+


The documentation for this struct was generated from the following file:
    +
  • types_vmapi.H
+
Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/struct__tcpClientStruct-members.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/struct__tcpClientStruct-members.html new file mode 100644 index 0000000..808ddc3 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/struct__tcpClientStruct-members.html @@ -0,0 +1,39 @@ + + +Pin: Member List + + + + +
+
+ +

_tcpClientStruct Member List

This is the complete list of members for _tcpClientStruct, including all inherited members.

+ + +
_ip_tcpClientStruct
_tcpPort_tcpClientStruct


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/struct__tcpClientStruct.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/struct__tcpClientStruct.html new file mode 100644 index 0000000..1be4dcc --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/struct__tcpClientStruct.html @@ -0,0 +1,102 @@ + + +Pin: _tcpClientStruct Struct Reference + + + + +
+
+ +

_tcpClientStruct Struct Reference

#include <types_vmapi.H> +

+List of all members. + + + + + + +

Public Attributes

const char * _ip
int _tcpPort
+


Detailed Description

+Information for DEBUG_CONNECTION_TYPE_TCP_CLIENT. +

+


Member Data Documentation

+

+ + + + +
+ + + + +
const char* _tcpClientStruct::_ip
+
+ + + + + +
+   + + +

+IP address of machine running debugger (dot decimal format). NULL for local machine. +

+

+

+ + + + +
+ + + + +
int _tcpClientStruct::_tcpPort
+
+ + + + + +
+   + + +

+TCP port that debugger is listening on, waiting for a connection from Pin. +

+

+


The documentation for this struct was generated from the following file:
    +
  • types_vmapi.H
+
Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/struct__tcpServerStruct-members.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/struct__tcpServerStruct-members.html new file mode 100644 index 0000000..c628022 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/struct__tcpServerStruct-members.html @@ -0,0 +1,38 @@ + + +Pin: Member List + + + + +
+
+ +

_tcpServerStruct Member List

This is the complete list of members for _tcpServerStruct, including all inherited members.

+ +
_tcpPort_tcpServerStruct


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/struct__tcpServerStruct.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/struct__tcpServerStruct.html new file mode 100644 index 0000000..b15f7d5 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/struct__tcpServerStruct.html @@ -0,0 +1,75 @@ + + +Pin: _tcpServerStruct Struct Reference + + + + +
+
+ +

_tcpServerStruct Struct Reference

#include <types_vmapi.H> +

+List of all members. + + + + +

Public Attributes

int _tcpPort
+


Detailed Description

+Information for DEBUG_CONNECTION_TYPE_TCP_SERVER. +

+


Member Data Documentation

+

+ + + + +
+ + + + +
int _tcpServerStruct::_tcpPort
+
+ + + + + +
+   + + +

+TCP port that Pin listens on waiting for a debugger connection. +

+

+


The documentation for this struct was generated from the following file:
    +
  • types_vmapi.H
+
Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/tab_b.gif b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/tab_b.gif new file mode 100644 index 0000000..0d62348 Binary files /dev/null and b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/tab_b.gif differ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/tab_l.gif b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/tab_l.gif new file mode 100644 index 0000000..9b1e633 Binary files /dev/null and b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/tab_l.gif differ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/tab_r.gif b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/tab_r.gif new file mode 100644 index 0000000..ce9dd9f Binary files /dev/null and b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/tab_r.gif differ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/tabs.css b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/tabs.css new file mode 100644 index 0000000..a61552a --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/tabs.css @@ -0,0 +1,102 @@ +/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */ + +DIV.tabs +{ + float : left; + width : 100%; + background : url("tab_b.gif") repeat-x bottom; + margin-bottom : 4px; +} + +DIV.tabs UL +{ + margin : 0px; + padding-left : 10px; + list-style : none; +} + +DIV.tabs LI, DIV.tabs FORM +{ + display : inline; + margin : 0px; + padding : 0px; +} + +DIV.tabs FORM +{ + float : right; +} + +DIV.tabs A +{ + float : left; + background : url("tab_r.gif") no-repeat right top; + border-bottom : 1px solid #84B0C7; + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + +DIV.tabs A:hover +{ + background-position: 100% -150px; +} + +DIV.tabs A:link, DIV.tabs A:visited, +DIV.tabs A:active, DIV.tabs A:hover +{ + color: #1A419D; +} + +DIV.tabs SPAN +{ + float : left; + display : block; + background : url("tab_l.gif") no-repeat left top; + padding : 5px 9px; + white-space : nowrap; +} + +DIV.tabs INPUT +{ + float : right; + display : inline; + font-size : 1em; +} + +DIV.tabs TD +{ + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + + + +/* Commented Backslash Hack hides rule from IE5-Mac \*/ +DIV.tabs SPAN {float : none;} +/* End IE5-Mac hack */ + +DIV.tabs A:hover SPAN +{ + background-position: 0% -150px; +} + +DIV.tabs LI#current A +{ + background-position: 100% -150px; + border-width : 0px; +} + +DIV.tabs LI#current SPAN +{ + background-position: 0% -150px; + padding-bottom : 6px; +} + +DIV.nav +{ + background : none; + border : none; + border-bottom : 1px solid #84B0C7; +} diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/unionPIN__MEM__TRANS__FLAGS-members.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/unionPIN__MEM__TRANS__FLAGS-members.html new file mode 100644 index 0000000..f59d8e3 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/unionPIN__MEM__TRANS__FLAGS-members.html @@ -0,0 +1,43 @@ + + +Pin: Member List + + + + +
+
+ +

PIN_MEM_TRANS_FLAGS Member List

This is the complete list of members for PIN_MEM_TRANS_FLAGS, including all inherited members.

+ + + + + + +
bits (defined in PIN_MEM_TRANS_FLAGS)PIN_MEM_TRANS_FLAGS
data (defined in PIN_MEM_TRANS_FLAGS)PIN_MEM_TRANS_FLAGS
isAtomic (defined in PIN_MEM_TRANS_FLAGS)PIN_MEM_TRANS_FLAGS
isFromPin (defined in PIN_MEM_TRANS_FLAGS)PIN_MEM_TRANS_FLAGS
isPrefetch (defined in PIN_MEM_TRANS_FLAGS)PIN_MEM_TRANS_FLAGS
isRmw (defined in PIN_MEM_TRANS_FLAGS)PIN_MEM_TRANS_FLAGS


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/unionPIN__MEM__TRANS__FLAGS.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/unionPIN__MEM__TRANS__FLAGS.html new file mode 100644 index 0000000..e554a74 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/unionPIN__MEM__TRANS__FLAGS.html @@ -0,0 +1,66 @@ + + +Pin: PIN_MEM_TRANS_FLAGS Union Reference + + + + +
+
+ +

PIN_MEM_TRANS_FLAGS Union Reference
+ +[Instrumentation arguments] +

#include <types_vmapi.H> +

+List of all members. + + + + + + + + + + + + + + + + +

Public Attributes

+UINT32 data
+struct {
   UINT32   isAtomic:1
   UINT32   isRmw:1
   UINT32   isPrefetch:1
   UINT32   isFromPin:1
bits
+


Detailed Description

+used in for memory address translation callback +

+


The documentation for this union was generated from the following file:
    +
  • types_vmapi.H
+
Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/unionPIN__REGISTER-members.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/unionPIN__REGISTER-members.html new file mode 100644 index 0000000..8eae6ca --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/unionPIN__REGISTER-members.html @@ -0,0 +1,47 @@ + + +Pin: Member List + + + + +
+
+ +

PIN_REGISTER Member List

This is the complete list of members for PIN_REGISTER, including all inherited members.

+ + + + + + + + + + +
byte (defined in PIN_REGISTER)PIN_REGISTER
dbl (defined in PIN_REGISTER)PIN_REGISTER
dword (defined in PIN_REGISTER)PIN_REGISTER
flt (defined in PIN_REGISTER)PIN_REGISTER
qword (defined in PIN_REGISTER)PIN_REGISTER
s_byte (defined in PIN_REGISTER)PIN_REGISTER
s_dword (defined in PIN_REGISTER)PIN_REGISTER
s_qword (defined in PIN_REGISTER)PIN_REGISTER
s_word (defined in PIN_REGISTER)PIN_REGISTER
word (defined in PIN_REGISTER)PIN_REGISTER


Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/unionPIN__REGISTER.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/unionPIN__REGISTER.html new file mode 100644 index 0000000..9ca8c8a --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/doc/html/unionPIN__REGISTER.html @@ -0,0 +1,80 @@ + + +Pin: PIN_REGISTER Union Reference + + + + +
+
+ +

PIN_REGISTER Union Reference
+ +[Context manipulation API] +

#include <types_vmapi.H> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + +

Public Attributes

+UINT8 byte [MAX_BYTES_PER_PIN_REG]
+UINT16 word [MAX_WORDS_PER_PIN_REG]
+UINT32 dword [MAX_DWORDS_PER_PIN_REG]
+UINT64 qword [MAX_QWORDS_PER_PIN_REG]
+INT8 s_byte [MAX_BYTES_PER_PIN_REG]
+INT16 s_word [MAX_WORDS_PER_PIN_REG]
+INT32 s_dword [MAX_DWORDS_PER_PIN_REG]
+INT64 s_qword [MAX_QWORDS_PER_PIN_REG]
+FLT32 flt [MAX_FLOATS_PER_PIN_REG]
+FLT64 dbl [MAX_DOUBLES_PER_PIN_REG]
+


Detailed Description

+A container large enough to hold any architectural register. Implemented as a union to allow viewing the value as different types (signed/unsigned integer or floating point) and allow access in blocks of various sizes. +

+


The documentation for this union was generated from the following file:
    +
  • types_vmapi.H
+
Generated on Sat Nov 4 23:35:52 2017 for Pin by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extlicense/LICENSE-llvm b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extlicense/LICENSE-llvm new file mode 100644 index 0000000..c8ce9bc --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extlicense/LICENSE-llvm @@ -0,0 +1,78 @@ +Pin and its components include modified and unmodified code from the LLVM Compiler Infrastructure. +The source code was downloaded from http://llvm.org/ + +-------------------------------------------------------------------------- + + +============================================================================== +LLVM Release License +============================================================================== +University of Illinois/NCSA +Open Source License + +Copyright (c) 2003-2013 University of Illinois at Urbana-Champaign. +All rights reserved. + +Developed by: + + LLVM Team + + University of Illinois at Urbana-Champaign + + http://llvm.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal with +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimers. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimers in the + documentation and/or other materials provided with the distribution. + + * Neither the names of the LLVM Team, University of Illinois at + Urbana-Champaign, nor the names of its contributors may be used to + endorse or promote products derived from this Software without specific + prior written permission. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE +SOFTWARE. + +============================================================================== +Copyrights and Licenses for Third Party Software Distributed with LLVM: +============================================================================== +The LLVM software contains code written by third parties. Such software will +have its own individual LICENSE.TXT file in the directory in which it appears. +This file will describe the copyrights, license, and restrictions which apply +to that code. + +The disclaimer of warranty in the University of Illinois Open Source License +applies to all code in the LLVM Distribution, and nothing in any of the +other licenses gives permission to use the names of the LLVM Team or the +University of Illinois to endorse or promote products derived from this +Software. + +The following pieces of software have additional or alternate copyrights, +licenses, and/or restrictions: + +Program Directory +------- --------- +Autoconf llvm/autoconf + llvm/projects/ModuleMaker/autoconf + llvm/projects/sample/autoconf +Google Test llvm/utils/unittest/googletest +OpenBSD regex llvm/lib/Support/{reg*, COPYRIGHT.regex} +pyyaml tests llvm/test/YAMLParser/{*.data, LICENSE.TXT} +ARM contributions llvm/lib/Target/ARM/LICENSE.TXT +md5 contributions llvm/lib/Support/MD5.cpp llvm/include/llvm/Support/MD5.h + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extlicense/LICENSE-stlport b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extlicense/LICENSE-stlport new file mode 100644 index 0000000..e116a9e --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extlicense/LICENSE-stlport @@ -0,0 +1,36 @@ +This license pertains to the following files: + ia32/runtime/pincrt/libstlport-dynamic.so + intel64/runtime/pincrt/libstlport-dynamic.so + +These files were generated from modified source files downloaded from http://sourceforge.net/projects/stlport + +-------------------------------------------------------------------------- + + +Boris Fomitchev grants Licensee a non-exclusive, non-transferable, royalty-free license to use STLport and its documentation without fee. + +By downloading, using, or copying STLport or any portion thereof, Licensee agrees to abide by the intellectual property laws and all other applicable laws of the United States of America, and to all of the terms and conditions of this Agreement. + +Licensee shall maintain the following copyright and permission notices on STLport sources and its documentation unchanged : + +Copyright 1999,2000 Boris Fomitchev + +This material is provided "as is", with absolutely no warranty expressed or implied. Any use is at your own risk. +Permission to use or copy this software for any purpose is hereby granted without fee, provided the above notices are retained on all copies. Permission to modify the code and to distribute modified code is granted, provided the above notices are retained, and a notice that the code was modified is included with the above copyright notice. +The Licensee may distribute binaries compiled with STLport (whether original or modified) without any royalties or restrictions. + +The Licensee may distribute original or modified STLport sources, provided that: + +The conditions indicated in the above permission notice are met; +The following copyright notices are retained when present, and conditions provided in accompanying permission notices are met : +Copyright 1994 Hewlett-Packard Company + +Copyright 1996,97 Silicon Graphics Computer Systems, Inc. + +Copyright 1997 Moscow Center for SPARC Technology. + +Permission to use, copy, modify, distribute and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. Hewlett-Packard Company makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. + +Permission to use, copy, modify, distribute and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. Silicon Graphics makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. + +Permission to use, copy, modify, distribute and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. Moscow Center for SPARC Technology makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extlicense/NOTICE-libc b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extlicense/NOTICE-libc new file mode 100644 index 0000000..d78180b --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extlicense/NOTICE-libc @@ -0,0 +1,5215 @@ +This license pertains to the following files: + ia32/runtime/pincrt/crtbegin.o + intel64/runtime/pincrt/crtbegin.o + ia32/runtime/pincrt/crtbeginS.o + intel64/runtime/pincrt/crtbeginS.o + ia32/runtime/pincrt/crtend.o + intel64/runtime/pincrt/crtend.o + ia32/runtime/pincrt/crtendS.o + intel64/runtime/pincrt/crtendS.o + ia32/runtime/pincrt/libc-dynamic.so + intel64/runtime/pincrt/libc-dynamic.so + ia32/runtime/pincrt/libc-static.a + intel64/runtime/pincrt/libc-static.a + +These files were generated from modified source files downloaded from https://github.com/android/platform_bionic + +-------------------------------------------------------------------------- + + + Copyright (c) 2014, Linaro Limited + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the Linaro nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------- + + strchr - find a character in a string + + Copyright (c) 2014, ARM Limited + All rights Reserved. + Copyright (c) 2014, Linaro Ltd. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the company nor the names of its contributors + may be used to endorse or promote products derived from this + software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------- + + Copyright (c) 1993 John Brezak + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. The name of the author may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR `AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------- + +==================================================== +Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + +Developed at SunPro, a Sun Microsystems, Inc. business. +Permission to use, copy, modify, and distribute this +software is freely granted, provided that this notice +is preserved. + +------------------------------------------------------------------- + +Based on the UCB version with the ID appearing below. +This is ANSIish only when "multibyte character == plain character". + +Copyright (c) 1989, 1993 + The Regents of the University of California. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the project nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (C) 2004, 2005, 2008 Internet Systems Consortium, Inc. ("ISC") +Copyright (C) 1995-1999, 2001, 2003 Internet Software Consortium. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + +------------------------------------------------------------------- + +Copyright (C) 2004, 2005, 2008 Internet Systems Consortium, Inc. ("ISC") +Copyright (C) 1997-2001 Internet Software Consortium. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + +------------------------------------------------------------------- + +Copyright (C) 2006 The Android Open Source Project + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +------------------------------------------------------------------- + +Copyright (C) 2006 The Android Open Source Project +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (C) 2008 The Android Open Source Project + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +------------------------------------------------------------------- + +Copyright (C) 2008 The Android Open Source Project +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (C) 2008 The Android Open Source Project +All rights reserved. +Copyright (c) 2013-2014, NVIDIA Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (C) 2008-2010 The Android Open Source Project +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (C) 2009 The Android Open Source Project + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +------------------------------------------------------------------- + +Copyright (C) 2009 The Android Open Source Project +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (C) 2010 The Android Open Source Project + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +------------------------------------------------------------------- + +Copyright (C) 2010 The Android Open Source Project +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (C) 2010 The Android Open Source Project +Copyright (c) 2008 ARM Ltd +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the company may not be used to endorse or promote + products derived from this software without specific prior written + permission. + +THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Android adaptation and tweak by Jim Huang . + +------------------------------------------------------------------- + +Copyright (C) 2011 The Android Open Source Project + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +------------------------------------------------------------------- + +Copyright (C) 2011 The Android Open Source Project +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (C) 2012 The Android Open Source Project + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +------------------------------------------------------------------- + +Copyright (C) 2012 The Android Open Source Project +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (C) 2013 The Android Open Source Project + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +------------------------------------------------------------------- + +Copyright (C) 2013 The Android Open Source Project +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (C) 2013 The Android Open Source Project +All rights reserved. +Copyright (c) 2013-2014 NVIDIA Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (C) 2013 The Android Open Source Project +Copyright (c) 2014, NVIDIA CORPORATION. All rights reserved. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (C) 2014 The Android Open Source Project + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +------------------------------------------------------------------- + +Copyright (C) 2014 The Android Open Source Project +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1980, 1983, 1988, 1993 + The Regents of the University of California. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by the University of + California, Berkeley and its contributors. +4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + + +Portions Copyright (c) 1993 by Digital Equipment Corporation. + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies, and that +the name of Digital Equipment Corporation not be used in advertising or +publicity pertaining to distribution of the document or software without +specific, written prior permission. + +THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL +WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT +CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL +DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR +PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS +ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + +------------------------------------------------------------------- + +Copyright (c) 1982, 1986, 1993 + The Regents of the University of California. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1982, 1986, 1993 + The Regents of the University of California. All rights reserved. +(c) UNIX System Laboratories, Inc. +All or some portions of this file are derived from material licensed +to the University of California by American Telephone and Telegraph +Co. or Unix System Laboratories, Inc. and are reproduced herein with +the permission of UNIX System Laboratories, Inc. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1983, 1987, 1989 + The Regents of the University of California. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1983, 1989 + The Regents of the University of California. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by the University of + California, Berkeley and its contributors. +4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1983, 1989, 1993 + The Regents of the University of California. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1983, 1990, 1993 + The Regents of the University of California. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +Portions Copyright (c) 1993 by Digital Equipment Corporation. + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies, and that +the name of Digital Equipment Corporation not be used in advertising or +publicity pertaining to distribution of the document or software without +specific, written prior permission. + +THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL +WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT +CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL +DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR +PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS +ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + +------------------------------------------------------------------- + +Copyright (c) 1983, 1993 + The Regents of the University of California. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1983, 1993 + The Regents of the University of California. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1985 + The Regents of the University of California. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by the University of + California, Berkeley and its contributors. +4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1985 Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1985, 1988, 1993 + The Regents of the University of California. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +Portions Copyright (c) 1993 by Digital Equipment Corporation. + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies, and that +the name of Digital Equipment Corporation not be used in advertising or +publicity pertaining to distribution of the document or software without +specific, written prior permission. + +THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL +WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT +CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL +DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR +PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS +ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + +------------------------------------------------------------------- + +Copyright (c) 1985, 1989, 1993 + The Regents of the University of California. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by the University of + California, Berkeley and its contributors. +4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1985, 1993 + The Regents of the University of California. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by the University of + California, Berkeley and its contributors. +4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1985, 1993 + The Regents of the University of California. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1987 Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1987, 1993 + The Regents of the University of California. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by the University of + California, Berkeley and its contributors. +4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1987, 1993 + The Regents of the University of California. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1988 Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1988 The Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1988, 1993 + The Regents of the University of California. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by the University of + California, Berkeley and its contributors. +4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1988, 1993 + The Regents of the University of California. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1988, 1993 + The Regents of the University of California. All rights reserved. + +This code is derived from software written by Ken Arnold and +published in UNIX Review, Vol. 6, No. 8. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1989 The Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms are permitted +provided that the above copyright notice and this paragraph are +duplicated in all such forms and that any documentation, +advertising materials, and other materials related to such +distribution and use acknowledge that the software was developed +by the University of California, Berkeley. The name of the +University may not be used to endorse or promote products derived +from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +------------------------------------------------------------------- + +Copyright (c) 1989 The Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1989 The Regents of the University of California. +All rights reserved. +(c) UNIX System Laboratories, Inc. +All or some portions of this file are derived from material licensed +to the University of California by American Telephone and Telegraph +Co. or Unix System Laboratories, Inc. and are reproduced herein with +the permission of UNIX System Laboratories, Inc. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1989, 1993 + The Regents of the University of California. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1989, 1993 + The Regents of the University of California. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1989, 1993 + The Regents of the University of California. All rights reserved. + +This code is derived from software contributed to Berkeley by +Roger L. Snyder. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1989, 1993 + The Regents of the University of California. All rights reserved. +(c) UNIX System Laboratories, Inc. +All or some portions of this file are derived from material licensed +to the University of California by American Telephone and Telegraph +Co. or Unix System Laboratories, Inc. and are reproduced herein with +the permission of UNIX System Laboratories, Inc. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1989, 1993, 1994 + The Regents of the University of California. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1990 Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1990 The Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1990 The Regents of the University of California. +All rights reserved. + +This code is derived from locore.s. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1990 The Regents of the University of California. +All rights reserved. + +This code is derived from software contributed to Berkeley by +Chris Torek. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1990 The Regents of the University of California. +All rights reserved. + +This code is derived from software contributed to Berkeley by +William Jolitz. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1990, 1993 + The Regents of the University of California. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1990, 1993 + The Regents of the University of California. All rights reserved. + +This code is derived from software contributed to Berkeley by +Chris Torek. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1990, 1993 + The Regents of the University of California. All rights reserved. + +This code is derived from software contributed to Berkeley by +Donn Seeley at UUNET Technologies, Inc. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1990, 1993 + The Regents of the University of California. All rights reserved. + +This code is derived from software contributed to Berkeley by +Donn Seeley at UUNET Technologies, Inc. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1990, 1993 + The Regents of the University of California. All rights reserved. +(c) UNIX System Laboratories, Inc. +All or some portions of this file are derived from material licensed +to the University of California by American Telephone and Telegraph +Co. or Unix System Laboratories, Inc. and are reproduced herein with +the permission of UNIX System Laboratories, Inc. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1990, 1993, 1994 + The Regents of the University of California. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1990, 1993, 1994 + The Regents of the University of California. All rights reserved. + +This code is derived from software contributed to Berkeley by +Chris Torek. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1991 The Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1991, 1993 + The Regents of the University of California. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1991, 1993 + The Regents of the University of California. All rights reserved. + +This code is derived from software contributed to Berkeley by +Berkeley Software Design, Inc. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1991, 1993 + The Regents of the University of California. All rights reserved. +(c) UNIX System Laboratories, Inc. +All or some portions of this file are derived from material licensed +to the University of California by American Telephone and Telegraph +Co. or Unix System Laboratories, Inc. and are reproduced herein with +the permission of UNIX System Laboratories, Inc. + +This code is derived from software contributed to Berkeley by +Hugh Smith at The University of Guelph. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1991, 1993, 1995, + The Regents of the University of California. All rights reserved. + +This code is derived from software contributed to Berkeley by +Havard Eidnes. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1992 Henry Spencer. +Copyright (c) 1992, 1993 + The Regents of the University of California. All rights reserved. + +This code is derived from software contributed to Berkeley by +Henry Spencer of the University of Toronto. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1992 The Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1992, 1993 + The Regents of the University of California. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1992, 1993 + The Regents of the University of California. All rights reserved. + +This code is derived from software contributed to Berkeley by +Ralph Campbell. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1992, 1993 + The Regents of the University of California. All rights reserved. + +This code is derived from software contributed to Berkeley by +Ralph Campbell. This file is derived from the MIPS RISC +Architecture book by Gerry Kane. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1992, 1993 + The Regents of the University of California. All rights reserved. + +This software was developed by the Computer Systems Engineering group +at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and +contributed to Berkeley. + +All advertising materials mentioning features or use of this software +must display the following acknowledgement: + This product includes software developed by the University of + California, Lawrence Berkeley Laboratory. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by the University of + California, Berkeley and its contributors. +4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1992, 1993 + The Regents of the University of California. All rights reserved. +(c) UNIX System Laboratories, Inc. +All or some portions of this file are derived from material licensed +to the University of California by American Telephone and Telegraph +Co. or Unix System Laboratories, Inc. and are reproduced herein with +the permission of UNIX System Laboratories, Inc. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1992, 1993, 1994 + The Regents of the University of California. All rights reserved. + +This code is derived from software contributed to Berkeley by +Henry Spencer. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1992, 1993, 1994 Henry Spencer. + +This code is derived from software contributed to Berkeley by +Henry Spencer. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by the University of + California, Berkeley and its contributors. +4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1993 + The Regents of the University of California. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1993 Christopher G. Demetriou +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1993 Martin Birgmeier +All rights reserved. + +You may redistribute unmodified or modified versions of this source +code provided that the above copyright notice and this and the +following conditions are retained. + +This software is provided ``as is'', and comes with no warranties +of any kind. I shall in no event be liable for anything that happens +to anyone/anything when using this software. + +------------------------------------------------------------------- + +Copyright (c) 1994 SigmaSoft, Th. Lockert +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1995, 1996 Carnegie-Mellon University. +All rights reserved. + +Author: Chris G. Demetriou + +Permission to use, copy, modify and distribute this software and +its documentation is hereby granted, provided that both the copyright +notice and this permission notice appear in all copies of the +software, derivative works or modified versions, and any portions +thereof, and that both notices appear in supporting documentation. + +CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" +CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND +FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. + +Carnegie Mellon requests users of this software to return to + + Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU + School of Computer Science + Carnegie Mellon University + Pittsburgh PA 15213-3890 + +any improvements or extensions that they make and grant Carnegie the +rights to redistribute these changes. + +------------------------------------------------------------------- + +Copyright (c) 1996 by Internet Software Consortium. + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS +ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE +CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL +DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR +PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS +ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + +------------------------------------------------------------------- + +Copyright (c) 1996, David Mazieres +Copyright (c) 2008, Damien Miller +Copyright (c) 2013, Markus Friedl + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +------------------------------------------------------------------- + +Copyright (c) 1996-1998, 2008 Theo de Raadt +Copyright (c) 1997, 2008-2009 Todd C. Miller + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +------------------------------------------------------------------- + +Copyright (c) 1996-2004 Per Fogelstrom, Opsycon AB + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS +OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1997 Mark Brinicombe +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by Mark Brinicombe +4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1997 Mark Brinicombe +Copyright (c) 2010 Android Open Source Project. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by Mark Brinicombe +4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1997 Niklas Hallqvist. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1997 Todd C. Miller + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +------------------------------------------------------------------- + +Copyright (c) 1997 Todd C. Miller +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1997, 1998 The NetBSD Foundation, Inc. +All rights reserved. + +This code was contributed to The NetBSD Foundation by Klaus Klein. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by the NetBSD + Foundation, Inc. and its contributors. +4. Neither the name of The NetBSD Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1997, 1998, 1999, 2004 The NetBSD Foundation, Inc. +All rights reserved. + +This code is derived from software contributed to The NetBSD Foundation +by Luke Mewburn. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1997, 1998, 1999, 2004 The NetBSD Foundation, Inc. +All rights reserved. + +This code is derived from software contributed to The NetBSD Foundation +by Luke Mewburn; and by Jason R. Thorpe. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by the NetBSD + Foundation, Inc. and its contributors. +4. Neither the name of The NetBSD Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1997, 2005 Todd C. Miller + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +------------------------------------------------------------------- + +Copyright (c) 1998 Softweyr LLC. All rights reserved. + +strtok_r, from Berkeley strtok +Oct 13, 1998 by Wes Peters + +Copyright (c) 1988, 1993 + The Regents of the University of California. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notices, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notices, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY SOFTWEYR LLC, THE REGENTS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SOFTWEYR LLC, THE +REGENTS, OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1998 The NetBSD Foundation, Inc. +All rights reserved. + +This code is derived from software contributed to The NetBSD Foundation +by Klaus Klein. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by the NetBSD + Foundation, Inc. and its contributors. +4. Neither the name of The NetBSD Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1998 Todd C. Miller + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +------------------------------------------------------------------- + +Copyright (c) 1998 Todd C. Miller +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1999 + David E. O'Brien +Copyright (c) 1988, 1993 + The Regents of the University of California. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2000 Ben Harris. +Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the project nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2000 The NetBSD Foundation, Inc. +All rights reserved. + +This code is derived from software contributed to The NetBSD Foundation +by Atsushi Onoe. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by the NetBSD + Foundation, Inc. and its contributors. +4. Neither the name of The NetBSD Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2000 The NetBSD Foundation, Inc. +All rights reserved. + +This code is derived from software contributed to The NetBSD Foundation +by Dieter Baron and Thomas Klausner. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2001 Mike Barcroft +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2001 Wasabi Systems, Inc. +All rights reserved. + +Written by Frank van der Linden for Wasabi Systems, Inc. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed for the NetBSD Project by + Wasabi Systems, Inc. +4. The name of Wasabi Systems, Inc. may not be used to endorse + or promote products derived from this software without specific prior + written permission. + +THIS SOFTWARE IS PROVIDED BY WASABI SYSTEMS, INC. ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL WASABI SYSTEMS, INC +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2001-2002 Opsycon AB (www.opsycon.se / www.opsycon.com) + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS +OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2001-2002 Opsycon AB (www.opsycon.se / www.opsycon.com) + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of Opsycon AB nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS +OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2002 Daniel Hartmeier +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2002 Marc Espie. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE OPENBSD PROJECT AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBSD +PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2002 Opsycon AB (www.opsycon.se / www.opsycon.com) + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of Opsycon AB nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS +OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2002 The NetBSD Foundation, Inc. +All rights reserved. + +This code is derived from software contributed to The NetBSD Foundation +by Christos Zoulas. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2002 Tim J. Robbins +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2002 Tim J. Robbins. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2002 Todd C. Miller + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +Sponsored in part by the Defense Advanced Research Projects +Agency (DARPA) and Air Force Research Laboratory, Air Force +Materiel Command, USAF, under agreement number F39502-99-1-0512. + +------------------------------------------------------------------- + +Copyright (c) 2002, 2003 Tim J. Robbins. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2002-2004 Tim J. Robbins +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2002-2004 Tim J. Robbins. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2003 Constantin S. Svintsoff + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The names of the authors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2003 David Schultz +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2003 Networks Associates Technology, Inc. +All rights reserved. + +Portions of this software were developed for the FreeBSD Project by +Jacques A. Vidrine, Safeport Network Services, and Network +Associates Laboratories, the Security Research Division of Network +Associates, Inc. under DARPA/SPAWAR contract N66001-01-C-8035 +("CBOSS"), as part of the DARPA CHATS research program. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2003 Todd C. Miller + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +Sponsored in part by the Defense Advanced Research Projects +Agency (DARPA) and Air Force Research Laboratory, Air Force +Materiel Command, USAF, under agreement number F39502-99-1-0512. + +------------------------------------------------------------------- + +Copyright (c) 2004 The NetBSD Foundation, Inc. +All rights reserved. + +This code is derived from software contributed to The NetBSD Foundation +by Christos Zoulas. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by the NetBSD + Foundation, Inc. and its contributors. +4. Neither the name of The NetBSD Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC") +Copyright (c) 1995,1999 by Internet Software Consortium. + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT +OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +------------------------------------------------------------------- + +Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC") +Copyright (c) 1995-1999 by Internet Software Consortium + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT +OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +------------------------------------------------------------------- + +Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC") +Copyright (c) 1995-1999 by Internet Software Consortium. + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT +OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +------------------------------------------------------------------- + +Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC") +Copyright (c) 1996,1999 by Internet Software Consortium. + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT +OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +------------------------------------------------------------------- + +Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC") +Copyright (c) 1996-1999 by Internet Software Consortium + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT +OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +------------------------------------------------------------------- + +Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC") +Copyright (c) 1996-1999 by Internet Software Consortium. + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT +OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +------------------------------------------------------------------- + +Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC") +Copyright (c) 1997,1999 by Internet Software Consortium. + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT +OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +------------------------------------------------------------------- + +Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC") +Copyright (c) 1999 by Internet Software Consortium. + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT +OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +------------------------------------------------------------------- + +Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC") +Portions Copyright (c) 1996-1999 by Internet Software Consortium. + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT +OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +------------------------------------------------------------------- + +Copyright (c) 2004, 2005 David Schultz +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2005 Tim J. Robbins. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2005 by Internet Systems Consortium, Inc. ("ISC") +Copyright (c) 1995-1999 by Internet Software Consortium + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT +OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +------------------------------------------------------------------- + +Copyright (c) 2007-2008 Michael G Schwern + +This software originally derived from Paul Sheer's pivotal_gmtime_r.c. + +The MIT License: + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +------------------------------------------------------------------- + +Copyright (c) 2007-2008 Michael G Schwern + +This software originally derived from Paul Sheer's pivotal_gmtime_r.c. + +The MIT License: + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +Origin: http://code.google.com/p/y2038 +Modified for Bionic by the Android Open Source Project + +------------------------------------------------------------------- + +Copyright (c) 2008 Android Open Source Project (query id randomization) +Copyright (c) 1985, 1993 + The Regents of the University of California. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by the University of + California, Berkeley and its contributors. +4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2008 Todd C. Miller + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +------------------------------------------------------------------- + +Copyright (c) 2008, Damien Miller + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +------------------------------------------------------------------- + +Copyright (c) 2009 + MIPS Technologies, Inc., California. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the MIPS Technologies, Inc., nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE MIPS TECHNOLOGIES, INC. ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE MIPS TECHNOLOGIES, INC. BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2009 David Schultz +All rights reserved. + +Copyright (c) 2011 The FreeBSD Foundation +All rights reserved. +Portions of this software were developed by David Chisnall +under sponsorship from the FreeBSD Foundation. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2009 David Schultz +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2009 The NetBSD Foundation, Inc. + +This code is derived from software contributed to The NetBSD Foundation +by Roy Marples. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2010 MIPS Technologies, Inc. + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with + the distribution. + * Neither the name of MIPS Technologies Inc. nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2010 Todd C. Miller + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +------------------------------------------------------------------- + +Copyright (c) 2010, 2011, 2012, 2013 Intel Corporation +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * Neither the name of Intel Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2010, Intel Corporation +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * Neither the name of Intel Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2011 David Chisnall +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2011 Ed Schouten + David Chisnall +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2011 Intel Corporation +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * Neither the name of Intel Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2011 Martin Pieuchot + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +------------------------------------------------------------------- + +Copyright (c) 2011 Martin Pieuchot +Copyright (c) 2009 Ted Unangst + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +------------------------------------------------------------------- + +Copyright (c) 2011 The Android Open Source Project +Copyright (c) 2008 ARM Ltd +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the company may not be used to endorse or promote + products derived from this software without specific prior written + permission. + +THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2011, 2012, 2013 Intel Corporation +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * Neither the name of Intel Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2011, Intel Corporation +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * Neither the name of Intel Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2011, VMware, Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the VMware, Inc. nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL VMWARE, INC. OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2012, Linaro Limited + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the Linaro nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2012, Linaro Limited + All rights reserved. + Copyright (c) 2014, NVIDIA Corporation. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the Linaro nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2013 ARM Ltd +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the company may not be used to endorse or promote + products derived from this software without specific prior written + permission. + +THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2013 Antoine Jacoutot + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +------------------------------------------------------------------- + +Copyright (c) 2013, Linaro Limited + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + * Neither the name of Linaro Limited nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2014 Theo de Raadt +Copyright (c) 2014 Bob Beck + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +Emulation of getentropy(2) as documented at: +http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man2/getentropy.2 + +------------------------------------------------------------------- + +Copyright (c) 2014, Intel Corporation +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * Neither the name of Intel Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2014, Linaro Limited + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the Linaro nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c)1999 Citrus Project, +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c)1999, 2000, 2001 Citrus Project, +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c)2001 Citrus Project, +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c)2003 Citrus Project, +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright 1997 Niels Provos +Copyright 2008 Damien Miller +All rights reserved. + +Theo de Raadt came up with the idea of using +such a mathematical system to generate more random (yet non-repeating) +ids to solve the resolver/named problem. But Niels designed the +actual system based on the constraints. + +Later modified by Damien Miller to wrap the LCG output in a 15-bit +permutation generator based on a Luby-Rackoff block cipher. This +ensures the output is non-repeating and preserves the MSB twiddle +trick, but makes it more resistant to LCG prediction. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright 2000 David E. O'Brien, John D. Polstra. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright 2008 Android Open Source Project (source port randomization) +Copyright (c) 1985, 1989, 1993 + The Regents of the University of California. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by the University of + California, Berkeley and its contributors. +4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Portions Copyright (C) 2004, 2005, 2008, 2009 Internet Systems Consortium, Inc. ("ISC") +Portions Copyright (C) 1996-2003 Internet Software Consortium. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + +------------------------------------------------------------------- + +Portions Copyright (c) 1993 by Digital Equipment Corporation. + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies, and that +the name of Digital Equipment Corporation not be used in advertising or +publicity pertaining to distribution of the document or software without +specific, written prior permission. + +THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL +WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT +CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL +DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR +PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS +ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + +------------------------------------------------------------------- + +Portions Copyright (c) 1995 by International Business Machines, Inc. + +International Business Machines, Inc. (hereinafter called IBM) grants +permission under its copyrights to use, copy, modify, and distribute this +Software with or without fee, provided that the above copyright notice and +all paragraphs of this notice appear in all copies, and that the name of IBM +not be used in connection with the marketing of any product incorporating +the Software or modifications thereof, without specific, written prior +permission. + +To the extent it has a right to do so, IBM grants an immunity from suit +under its patents, if any, for the use, sale or manufacture of products to +the extent that such products are used for performing Domain Name System +dynamic updates in TCP/IP networks by means of the Software. No immunity is +granted for any product per se or for any other function of any product. + +THE SOFTWARE IS PROVIDED "AS IS", AND IBM DISCLAIMS ALL WARRANTIES, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE. IN NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, +DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER ARISING +OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE, EVEN +IF IBM IS APPRISED OF THE POSSIBILITY OF SUCH DAMAGES. + +------------------------------------------------------------------- + +Portions Copyright(C) 1995, Jason Downs. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS +OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +The author of this software is David M. Gay. + +Copyright (C) 1998 by Lucent Technologies +All Rights Reserved + +Permission to use, copy, modify, and distribute this software and +its documentation for any purpose and without fee is hereby +granted, provided that the above copyright notice appear in all +copies and that both that the copyright notice and this +permission notice and warranty disclaimer appear in supporting +documentation, and that the name of Lucent or any of its entities +not be used in advertising or publicity pertaining to +distribution of the software without specific, written prior +permission. + +LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. +IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY +SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER +IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. + +------------------------------------------------------------------- + +The author of this software is David M. Gay. + +Copyright (C) 1998, 1999 by Lucent Technologies +All Rights Reserved + +Permission to use, copy, modify, and distribute this software and +its documentation for any purpose and without fee is hereby +granted, provided that the above copyright notice appear in all +copies and that both that the copyright notice and this +permission notice and warranty disclaimer appear in supporting +documentation, and that the name of Lucent or any of its entities +not be used in advertising or publicity pertaining to +distribution of the software without specific, written prior +permission. + +LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. +IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY +SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER +IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. + +------------------------------------------------------------------- + +The author of this software is David M. Gay. + +Copyright (C) 1998, 2000 by Lucent Technologies +All Rights Reserved + +Permission to use, copy, modify, and distribute this software and +its documentation for any purpose and without fee is hereby +granted, provided that the above copyright notice appear in all +copies and that both that the copyright notice and this +permission notice and warranty disclaimer appear in supporting +documentation, and that the name of Lucent or any of its entities +not be used in advertising or publicity pertaining to +distribution of the software without specific, written prior +permission. + +LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. +IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY +SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER +IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. + +------------------------------------------------------------------- + +The author of this software is David M. Gay. + +Copyright (C) 1998-2000 by Lucent Technologies +All Rights Reserved + +Permission to use, copy, modify, and distribute this software and +its documentation for any purpose and without fee is hereby +granted, provided that the above copyright notice appear in all +copies and that both that the copyright notice and this +permission notice and warranty disclaimer appear in supporting +documentation, and that the name of Lucent or any of its entities +not be used in advertising or publicity pertaining to +distribution of the software without specific, written prior +permission. + +LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. +IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY +SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER +IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. + +------------------------------------------------------------------- + +The author of this software is David M. Gay. + +Copyright (C) 1998-2001 by Lucent Technologies +All Rights Reserved + +Permission to use, copy, modify, and distribute this software and +its documentation for any purpose and without fee is hereby +granted, provided that the above copyright notice appear in all +copies and that both that the copyright notice and this +permission notice and warranty disclaimer appear in supporting +documentation, and that the name of Lucent or any of its entities +not be used in advertising or publicity pertaining to +distribution of the software without specific, written prior +permission. + +LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. +IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY +SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER +IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. + +------------------------------------------------------------------- + +The author of this software is David M. Gay. + +Copyright (C) 2000 by Lucent Technologies +All Rights Reserved + +Permission to use, copy, modify, and distribute this software and +its documentation for any purpose and without fee is hereby +granted, provided that the above copyright notice appear in all +copies and that both that the copyright notice and this +permission notice and warranty disclaimer appear in supporting +documentation, and that the name of Lucent or any of its entities +not be used in advertising or publicity pertaining to +distribution of the software without specific, written prior +permission. + +LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. +IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY +SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER +IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. + +------------------------------------------------------------------- + +memchr - find a character in a memory zone + +Copyright (c) 2014, ARM Limited +All rights Reserved. +Copyright (c) 2014, Linaro Ltd. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the company nor the names of its contributors + may be used to endorse or promote products derived from this + software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------- + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extlicense/NOTICE-libdl b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extlicense/NOTICE-libdl new file mode 100644 index 0000000..0ed757f --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extlicense/NOTICE-libdl @@ -0,0 +1,25 @@ +This license pertains to the following files: + ia32/runtime/pincrt/libdl-dynamic.so + intel64/runtime/pincrt/libdl-dynamic.so + +These files were generated from modified source files downloaded from https://github.com/android/platform_bionic + +-------------------------------------------------------------------------- + + +Copyright (C) 2007 The Android Open Source Project + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +------------------------------------------------------------------- + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extlicense/NOTICE-libm b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extlicense/NOTICE-libm new file mode 100644 index 0000000..4fc7923 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extlicense/NOTICE-libm @@ -0,0 +1,1024 @@ +This license pertains to the following files: + ia32/runtime/pincrt/libm-dynamic.so + intel64/runtime/pincrt/libm-dynamic.so + +These files were generated from modified source files downloaded from https://github.com/android/platform_bionic + +-------------------------------------------------------------------------- + + +==================================================== +Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + +Developed at SunPro, a Sun Microsystems, Inc. business. +Permission to use, copy, modify, and distribute this +software is freely granted, provided that this notice +is preserved. + +------------------------------------------------------------------- + +==================================================== +Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + +Developed at SunPro, a Sun Microsystems, Inc. business. +Permission to use, copy, modify, and distribute this +software is freely granted, provided that this notice +is preserved. +==================================================== + +Optimized by Bruce D. Evans. + +------------------------------------------------------------------- + +==================================================== +Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + +Developed at SunSoft, a Sun Microsystems, Inc. business. +Permission to use, copy, modify, and distribute this +software is freely granted, provided that this notice +is preserved. + +------------------------------------------------------------------- + +==================================================== +Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + +Developed at SunSoft, a Sun Microsystems, Inc. business. +Permission to use, copy, modify, and distribute this +software is freely granted, provided that this notice +is preserved. +==================================================== + +Optimized by Bruce D. Evans. + +------------------------------------------------------------------- + +==================================================== +Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. +Copyright (c) 2008 Steven G. Kargl, David Schultz, Bruce D. Evans. + +Developed at SunSoft, a Sun Microsystems, Inc. business. +Permission to use, copy, modify, and distribute this +software is freely granted, provided that this notice +is preserved. + +------------------------------------------------------------------- + +==================================================== +Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. +Copyright (c) 2008 Steven G. Kargl, David Schultz, Bruce D. Evans. + +Developed at SunSoft, a Sun Microsystems, Inc. business. +Permission to use, copy, modify, and distribute this +software is freely granted, provided that this notice +is preserved. +==================================================== + +Optimized by Bruce D. Evans. + +------------------------------------------------------------------- + +==================================================== +Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. +Copyright (c) 2009-2011, Bruce D. Evans, Steven G. Kargl, David Schultz. + +Developed at SunPro, a Sun Microsystems, Inc. business. +Permission to use, copy, modify, and distribute this +software is freely granted, provided that this notice +is preserved. +==================================================== + +The argument reduction and testing for exceptional cases was +written by Steven G. Kargl with input from Bruce D. Evans +and David A. Schultz. + +------------------------------------------------------------------- + +==================================================== +Copyright (C) 2004 by Sun Microsystems, Inc. All rights reserved. + +Permission to use, copy, modify, and distribute this +software is freely granted, provided that this notice +is preserved. + +------------------------------------------------------------------- + +==================================================== +Copyright 2004 Sun Microsystems, Inc. All Rights Reserved. + +Permission to use, copy, modify, and distribute this +software is freely granted, provided that this notice +is preserved. + +------------------------------------------------------------------- + +==================================================== +Copyright 2004 Sun Microsystems, Inc. All Rights Reserved. +Copyright (c) 2008 Steven G. Kargl, David Schultz, Bruce D. Evans. + +Permission to use, copy, modify, and distribute this +software is freely granted, provided that this notice +is preserved. + +------------------------------------------------------------------- + +Copyright (C) 2010 The Android Open Source Project +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (C) 2013 The Android Open Source Project + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +------------------------------------------------------------------- + +Copyright (C) 2014 The Android Open Source Project +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1985, 1993 + The Regents of the University of California. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by the University of + California, Berkeley and its contributors. +4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1988, 1993 + The Regents of the University of California. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by the University of + California, Berkeley and its contributors. +4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1990 The Regents of the University of California. +All rights reserved. + +This code is derived from software contributed to Berkeley by +William Jolitz. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 1992, 1993 + The Regents of the University of California. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by the University of + California, Berkeley and its contributors. +4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2001-2011 The FreeBSD Project. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2003 Dag-Erling Smørgrav +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer + in this position and unchanged. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2003 Mike Barcroft +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2003 Mike Barcroft +Copyright (c) 2002 David Schultz +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2003, Steven G. Kargl +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice unmodified, this list of conditions, and the following + disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2004 David Schultz +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2004 Stefan Farfeleder +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2004-2005 David Schultz +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2004-2005 David Schultz +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2004-2011 David Schultz +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2005 Bruce D. Evans and Steven G. Kargl +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice unmodified, this list of conditions, and the following + disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2005 David Schultz +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2005-2008 David Schultz +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2005-2011 David Schultz +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2007 David Schultz +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2007 David Schultz +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2007 David Schultz +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +Derived from s_modf.c, which has the following Copyright: +==================================================== +Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + +Developed at SunPro, a Sun Microsystems, Inc. business. +Permission to use, copy, modify, and distribute this +software is freely granted, provided that this notice +is preserved. + +------------------------------------------------------------------- + +Copyright (c) 2007 Steven G. Kargl +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice unmodified, this list of conditions, and the following + disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2007-2008 David Schultz +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2007-2013 Bruce D. Evans +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice unmodified, this list of conditions, and the following + disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2008 David Schultz +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2009-2013 Steven G. Kargl +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice unmodified, this list of conditions, and the following + disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Optimized by Bruce D. Evans. + +------------------------------------------------------------------- + +Copyright (c) 2010 The NetBSD Foundation, Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2011 David Schultz +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice unmodified, this list of conditions, and the following + disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2011 David Schultz +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (c) 2013 David Chisnall +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +From: @(#)s_ilogb.c 5.1 93/09/24 +==================================================== +Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + +Developed at SunPro, a Sun Microsystems, Inc. business. +Permission to use, copy, modify, and distribute this +software is freely granted, provided that this notice +is preserved. + +------------------------------------------------------------------- + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extlicense/NOTICE-linker b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extlicense/NOTICE-linker new file mode 100644 index 0000000..1d7127f --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extlicense/NOTICE-linker @@ -0,0 +1,225 @@ +This license pertains to the following files: + ia32/runtime/pincrt/linker + intel64/runtime/pincrt/linker + +These files were generated from modified source files downloaded from https://github.com/android/platform_bionic + +-------------------------------------------------------------------------- + + +Copyright (C) 2007 The Android Open Source Project + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +------------------------------------------------------------------- + +Copyright (C) 2008 The Android Open Source Project +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (C) 2008, 2009 The Android Open Source Project +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (C) 2008-2010 The Android Open Source Project +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (C) 2010 The Android Open Source Project +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (C) 2012 The Android Open Source Project +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (C) 2013 The Android Open Source Project + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +------------------------------------------------------------------- + +Copyright (C) 2013 The Android Open Source Project +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------- + +Copyright (C) 2014 The Android Open Source Project + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +------------------------------------------------------------------- + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/asm.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/asm.h new file mode 100644 index 0000000..53756ef --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/asm.h @@ -0,0 +1,161 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +/* +** : asm +** : component public header +*/ + +#ifndef ASM_H +#define ASM_H + + +/* + * This header provides a set of C macros for use in assembly language files. Using + * these macros can help make assembly sources easier to read and can also provide some + * amount of portability between different assembler syntaxes. + * + * Client code can use the following macros: + * + * ASM_FILEBEGIN() + * Use this at the start of the source file. + * + * ASM_FILEEND() + * Use this at the end of the source file. + * + * ASM_FUNCBEGIN(name, rtype, (args)) + * Use this before defining a function. The macro does NOT generate any prolog + * instructions, so you still need to do that yourself. + * + * @param name The name of the function. The macro automatically includes + * any leading underscore, etc. if necessary. + * @param rtype The C / C++ type returned by this function. (Used to auto-generate + * a header file with external declarations.) + * @param (args) A list of C / C++ parameters separated by commas and enclosed in + * parens. (Used to auto-generate a header file.) + * + * When a header file is auto-generated, any comment block that immediately precedes + * the ASM_FUNCBEGIN() is also included in the header. If that comment block + * contains Doxygen style comments, the auto-generated header can be processed with + * Doxygen. + * + * ASM_FUNCEND(name) + * Use this immediately after a function definition. The macro does NOT generate + * any epilog code, so you still need to do that yourself. + * + * @param name The name of the function, exactly as it appeared in the + * ASM_FUNCBEGIN(). + * + * ASM_HEX(val) + * Use this whenever a hex constant is needed. + * + * @param val The value of the constant in base 16, but without any leading 0x. + * + * ASM_LABDEF(n) + * Use this to define a local label in a function. + * + * @param n A number (decimal) which identifies the label. + * + * ASM_LABF(n) + * Use this in an instruction operand when refering to a label that is *forward* + * in the file. + * + * @param n The label's number. + * + * ASM_LABB(n) + * Use this in an instruction operand when refering to a label that is *backward* + * in the file. + * + * @param n The label's number. + * + * ASM_BYTE() + * ASM_WORD() + * ASM_DWORD() + * ASM_QWORD() + * Use these to disambiguate the size of a memory reference in x86 assembly code. + * + * ASM_REGARG0 + * ASM_REGARG1 + * ASM_REGARG2 + * ASM_REGARG3 + * ASM_REGARG4 + * ASM_REGARG5 + * Use these to refer to the register that contains a function argument on the + * Intel(R) 64 architecture. These macros help insulate source code from the differences + * between the Unix and Windows calling standards. + * + * ASM__SIZE + * Size of type in bytes. + * + * ASM__TYPE + * Keyword to declare instance of type + * + * ASM_NAMED_DATA(label, type, value) + * declares a (local) variable with type 'type', name 'label' + * and initial value of 'value' + * + * ASM_PIC_INIT(reg) + * Initialization code for function that reference PIC code/data. + * 'reg' is assigned as the PIC register to be used for later references + * to PIC data/code + * + * ASM_PC_REL_REF(var,reg) + * Reference to a PIC variable using PC relative addressing. + * 'var' is the variable to reference while 'reg' is the PIC register. + * + * Toolchains must define the following macros in order to enable the ASM support: + * + * ASM_TC_GAS, ASM_TC_MASM, ASM_TC_NASM + * Must define one of these, according to the assembler provided by the toolchain. + */ + +#define ASM_BYTE_SIZE 1 +#define ASM_WORD_SIZE 2 +#define ASM_DWORD_SIZE 4 +#define ASM_QWORD_SIZE 8 + + +#if defined(ASM_TC_GAS) +# include "asm/gas-x86.h" +#elif defined(ASM_TC_MASM) +# include "asm/masm-x86.h" +#elif defined(ASM_TC_NASM) +# include "asm/nasm-x86.h" +#else +# error "Must define assembler type and architecture" +#endif + +#if defined(HOST_IA32E) && defined(TARGET_WINDOWS) +# include "asm/windows-intel64.h" +#elif (defined(TARGET_ANDROID) || defined(TARGET_MAC) || defined(TARGET_LINUX)) && defined(HOST_IA32E) +# include "asm/unix-intel64.h" +#endif + +#endif /*file guard*/ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/asm/gas-x86.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/asm/gas-x86.h new file mode 100644 index 0000000..71c00b4 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/asm/gas-x86.h @@ -0,0 +1,113 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +/* +** : asm +** : component public header +*/ + +#ifndef ASM_GAS_X86_H +#define ASM_GAS_X86_H + +/* + * Toolchain should define ASM_WINDOWS for Windows targets, ASM_MAC for OS X* targets. + */ + +#define ASM_FILEBEGIN() .intel_syntax noprefix; .globl _GLOBAL_OFFSET_TABLE_ + +#define ASM_FILEEND() + +#define ASM_NEWLINE ; + +#define ASM_FUNCBEGIN(name, rtype, args) \ + .text; \ + .align 4; \ + .globl ASM_NAME(name); \ + .type ASM_NAME(name), @function; \ + ASM_NAME(name): + +#define ASM_FUNCEND(name) .size name, .-name + +#define ASM_HEX(val) 0x##val + +#if defined(TARGET_WINDOWS) || defined(TARGET_MAC) +# define ASM_NAME(name) _##name +#else +# define ASM_NAME(name) name +#endif + +#define ASM_LABDEF(x) .l##x##: +#define ASM_LABF(x) .l##x +#define ASM_LABB(x) .l##x +#define ASM_GLABDEF(x) .globl ASM_NAME(x); \ + ASM_NAME(x): + +#define ASM_BYTE() BYTE PTR +#define ASM_WORD() WORD PTR +#define ASM_DWORD() DWORD PTR + +/* + * The only legal 64-bit accesses on IA32 are implied by the instruction + * mnemonic, so the assembler does not accept "QWORD PTR". On Intel64, though, + * there are places where the memory size is not implied by the instruction + * mnemonic, and "QWORD PTR" is required. + */ +#if defined(HOST_IA32) +# define ASM_QWORD() +#else +# define ASM_QWORD() QWORD PTR +#endif + +#define ASM_BYTE_TYPE() .byte +#define ASM_WORD_TYPE() .word +#define ASM_DWORD_TYPE() .int +#if defined(HOST_IA32) +# define ASM_QWORD_TYPE() +#else +# define ASM_QWORD_TYPE() .quad +#endif + +#define ASM_NAMED_DATA(label, vtype, value) \ + .data ; \ + .align ASM_##vtype##_SIZE ; \ + .type ASM_NAME(label), @object ; \ + .size ASM_NAME(label), ASM_##vtype##_SIZE ; \ + ASM_NAME(label): ; \ + ASM_##vtype##_TYPE() value + +#if defined(HOST_IA32) +# define ASM_PIC_INIT(reg) call 1f; 1: pop reg; lea reg, [reg + _GLOBAL_OFFSET_TABLE_ + 1] +# define ASM_PC_REL_REF(var,reg) reg + var@GOTOFF +#else +# define ASM_PIC_INIT(reg) +# define ASM_PC_REL_REF(var,dummy) rip + var +#endif + +#endif /*file guard*/ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/asm/masm-x86.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/asm/masm-x86.h new file mode 100644 index 0000000..32eea16 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/asm/masm-x86.h @@ -0,0 +1,74 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +/* +** : asm +** : component public header +*/ + +#ifndef ASM_MASM_X86_H +#define ASM_MASM_X86_H + + +#if defined(HOST_IA32) + +#define ASM_FILEBEGIN() \ +.686 ASM_NEWLINE \ +.xmm ASM_NEWLINE \ +.model flat,c + +#else +# define ASM_FILEBEGIN() +#endif + +#define ASM_FILEEND() END + + +#define ASM_FUNCBEGIN(name, rtype, args) \ + .CODE ASM_NEWLINE \ + ALIGN 4 ASM_NEWLINE \ + ASM_NAME(name) PROC + +#define ASM_FUNCEND(name) ASM_NAME(name) ENDP + +#define ASM_HEX(val) 0##val##h +#define ASM_NAME(name) name + +#define ASM_LABDEF(x) $l##x##: +#define ASM_LABF(x) $l##x +#define ASM_LABB(x) $l##x +#define ASM_GLABDEF(x) ASM_NAME(x): + +#define ASM_BYTE() BYTE PTR +#define ASM_WORD() WORD PTR +#define ASM_DWORD() DWORD PTR +#define ASM_QWORD() QWORD PTR + +#endif /*file guard*/ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/asm/nasm-x86.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/asm/nasm-x86.h new file mode 100644 index 0000000..aee3802 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/asm/nasm-x86.h @@ -0,0 +1,93 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +/* +** : asm +** : component public header +*/ + +#ifndef ASM_NASM_X86_H +#define ASM_NASM_X86_H + + +#define ASM_FILEBEGIN() +#define ASM_FILEEND() + +#define ASM_FUNCBEGIN(name, rtype, args) \ + section .text ASM_NEWLINE \ + global ASM_NAME(name) ASM_NEWLINE \ + ASM_NAME(name): + +#define ASM_FUNCEND(name) + +#define ASM_HEX(val) 0##val##h + +#if defined(TARGET_MAC) +# define ASM_NAME(name) _##name +#else +# define ASM_NAME(name) name +#endif + +#define ASM_LABDEF(x) .l##x##: +#define ASM_LABF(x) .l##x +#define ASM_LABB(x) .l##x +#define ASM_GLABDEF(x) global ASM_NAME(x) ASM_NEWLINE \ + ASM_NAME(x): + +#define ASM_BYTE() byte +#define ASM_WORD() word +#define ASM_DWORD() dword +#define ASM_QWORD() + +#define ASM_BYTE_TYPE() db +#define ASM_WORD_TYPE() dw +#define ASM_DWORD_TYPE() dd +#define ASM_QWORD_TYPE() + +#define ASM_NAMED_DATA(label, type, value) \ + section .data ASM_NEWLINE \ + align ASM_##type##_SIZE ASM_NEWLINE \ + global ASM_NAME(label) ASM_NEWLINE \ + ASM_NAME(label): ASM_##type##_TYPE() value + +#if defined(HOST_IA32) +#define ASM_PIC_INIT_TMP3(line) Ltmp ## line +#define ASM_PIC_INIT_TMP2(line) ASM_PIC_INIT_TMP3(line) +#define ASM_PIC_INIT_TMP ASM_PIC_INIT_TMP2(__LINE__) +# define ASM_PIC_INIT(reg) call ASM_PIC_INIT_TMP ASM_NEWLINE \ + ASM_PIC_INIT_TMP: pop reg ASM_NEWLINE \ + sub reg, ASM_PIC_INIT_TMP +# define ASM_PC_REL_REF(var,reg) reg + ASM_NAME(var) +#else +# define ASM_PIC_INIT(reg) +# define ASM_PC_REL_REF(var,dummy) ASM_NAME(var) wrt rip +#endif + +#endif /*file guard*/ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/asm/unix-intel64.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/asm/unix-intel64.h new file mode 100644 index 0000000..0417713 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/asm/unix-intel64.h @@ -0,0 +1,53 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +/* +** : asm +** : component public header +*/ + +#ifndef ASM_UNIX_INTEL64_H +#define ASM_UNIX_INTEL64_H + +#define ASM_REGARG0 rdi +#define ASM_REGARG1 rsi +#define ASM_REGARG2 rdx +#define ASM_REGARG3 rcx +#define ASM_REGARG4 r8 +#define ASM_REGARG5 r9 + +#define ASM_REGARG0D edi +#define ASM_REGARG1D esi +#define ASM_REGARG2D edx +#define ASM_REGARG3D ecx +#define ASM_REGARG4D r8d +#define ASM_REGARG5D r9d + +#endif /*file guard*/ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/asm/windows-intel64.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/asm/windows-intel64.h new file mode 100644 index 0000000..b467adc --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/asm/windows-intel64.h @@ -0,0 +1,49 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +/* +** : asm +** : component public header +*/ + +#ifndef ASM_WINDOWS_INTEL64_H +#define ASM_WINDOWS_INTEL64_H + +#define ASM_REGARG0 rcx +#define ASM_REGARG1 rdx +#define ASM_REGARG2 r8 +#define ASM_REGARG3 r9 + +#define ASM_REGARG0D ecx +#define ASM_REGARG1D edx +#define ASM_REGARG2D r8d +#define ASM_REGARG3D r9d + +#endif /*file guard*/ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic.hpp new file mode 100644 index 0000000..f452288 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic.hpp @@ -0,0 +1,77 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : atomic +// : component public header + +#ifndef ATOMIC_HPP +#define ATOMIC_HPP + +/*! @mainpage ATOMIC library + * + * The ATOMIC library provides a variety of non-blocking atomic utility routines, such as thread safe queues + * and associative maps. These utilities use hardware primitives such as compare-and-swap to maintain + * atomicity, not locks, which makes them safe even when used in asynchronous interrupt handlers. + * + * All utilities have a C++ template interface, somewhat reminiscent of the STL. As a result, they should + * be easy to customize for use with your own data structures. + * + * Queues: + * - @ref ATOMIC::LIFO_CTR "LIFO_CTR - Last-in-first-out queue" + * - @ref ATOMIC::LIFO_PTR "LIFO_PTR - Last-in-first-out queue" + * - @ref ATOMIC::FIXED_LIFO "FIXED_LIFO - Last-in-first-out queue with pre-allocated elements" + * + * Associative maps and sets: + * - @ref ATOMIC::FIXED_MULTIMAP "FIXED_MULTIMAP - Associative map with pre-allocated elements" + * - @ref ATOMIC::FIXED_MULTISET "FIXED_MULTISET - Unordered set of data with pre-allocated elements" + * + * Fundamental operations, utilities: + * - @ref ATOMIC::OPS "OPS - Fundamental atomic operations" + * - @ref ATOMIC::EXPONENTIAL_BACKOFF "EXPONENTIAL_BACKOFF - Helper object for exponential delays" + * - @ref ATOMIC::IDSET "IDSET - Maintains a set of unique IDs" + * - @ref ATOMIC::NULLSTATS "NULLSTATS - Model for a statistics-gathering object" + * + * Configuration: + * - @ref CONFIG + */ + +/*! @brief The ATOMIC library. */ +namespace ATOMIC {} + +#include "atomic/ops.hpp" +#include "atomic/lifo-ctr.hpp" +#include "atomic/lifo-ptr.hpp" +#include "atomic/fixed-lifo.hpp" +#include "atomic/fixed-multimap.hpp" +#include "atomic/fixed-multiset.hpp" +#include "atomic/idset.hpp" +#include "atomic/exponential-backoff.hpp" + +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/config.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/config.hpp new file mode 100644 index 0000000..611df74 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/config.hpp @@ -0,0 +1,77 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : atomic +// : component public header + +#ifndef ATOMIC_CONFIG_HPP +#define ATOMIC_CONFIG_HPP + + +/*! @defgroup CONFIG Configuration + * + * The ATOMIC library can be configured by redefining the following macros + * prior to including "atomic.hpp". + * + * \par ATOMIC_ASSERT + * The ATOMIC library contains some internal assertion checks in its header + * files. By default, these assertion checks use the implementation. + * In order to override this, define ATOMIC_ASSERT to the name of a macro or + * function that takes a single argument. + * + * \par ATOMIC_NO_ASSERT + * Define this macro in order to disable all internal assertion checks in the + * ATOMIC header files. + * + * \par ATOMIC_NO_ASSERTSLOW + * Some of the ATOMIC assertion checks could be particularly slow. Define this + * macro in order to disable just the slow assertion checks. + */ + +// Define the macro for normal asserts. +// +#if defined(ATOMIC_NO_ASSERT) +# define ATOMIC_CHECK_ASSERT(x) (static_cast(0)) +#elif !defined(ATOMIC_ASSERT) +# include +# define ATOMIC_CHECK_ASSERT(x) assert(x) +#else +# define ATOMIC_CHECK_ASSERT(x) ATOMIC_ASSERT(x) +#endif + +// Define the macro for slow asserts. +// +#if defined(ATOMIC_NO_ASSERTSLOW) +# define ATOMIC_CHECK_ASSERTSLOW(x) ((void)0) +#else +# define ATOMIC_CHECK_ASSERTSLOW(x) ATOMIC_CHECK_ASSERT(x) +#endif + +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/exponential-backoff.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/exponential-backoff.hpp new file mode 100644 index 0000000..67ca2e6 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/exponential-backoff.hpp @@ -0,0 +1,128 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : atomic +// : component public header + +#ifndef ATOMIC_EXPONENTIAL_BACKOFF_HPP +#define ATOMIC_EXPONENTIAL_BACKOFF_HPP + +#include "util.hpp" +#include "atomic/nullstats.hpp" +#include "atomic/private/backoff-impl.hpp" + + +namespace ATOMIC { + + +/*! @brief Helper object for exponential delays. + * + * A helper object that implements an exponential backoff algorithm. This is most often + * used inside a compare-swap loop to prevent thrashing when there is high contention. + * + * @param STATS Type of an object that collects statistics. See NULLSTATS for a model. + * + * @par Example: + * \code + * #include "atomic/exponential-backoff.hpp" + * #include "atomic/ops.hpp" + * + * void Foo() + * { + * ATOMIC::EXPONENTIAL_BACKOFF<> backoff; + * do { + * backoff.Delay(); + * oldVal = .... + * newVal = .... + * } while (!ATOMIC::OPS::CompareAndDidSwap(&val, oldVal, newVal)); + * } + * \endcode + */ +template class /**/ EXPONENTIAL_BACKOFF +{ + public: + /*! + * @param[in] freeIterations Number of times through loop before Delay() does anything. + * @param[in] stats Object to keep track of statistics, or NULL + */ + EXPONENTIAL_BACKOFF(UINT32 freeIterations = 1, STATS *stats = 0) + : + _freeIterations(freeIterations), _iteration(0), _stats(stats) + {} + + ~EXPONENTIAL_BACKOFF() + { + if (_stats && _iteration > _freeIterations) + _stats->Backoff(_iteration - _freeIterations); + } + + /*! + * Reset the object to the first "iteration". + */ + void Reset() + { + if (_stats && _iteration > _freeIterations) + _stats->Backoff(_iteration - _freeIterations); + _iteration = 0; + } + + /*! + * Delay for a short period of time and advance to the next "iteration". The delay + * time typically grows longer for each successive iteration. + */ + void Delay() + { + if (_iteration++ < _freeIterations) + return; + + UINT32 fixed = 1 << (_iteration - 1 - _freeIterations); + UINT32 mask = fixed - 1; + UINT32 random = (reinterpret_cast(&random) >> 4) & mask; + UINT32 delay = fixed + random; + + ATOMIC_SpinDelay(delay); + } + + /*! + * @return The number of times Delay() has been called since the last Reset(). + */ + UINT32 GetIterationCount() + { + return _iteration; + } + + private: + const UINT32 _freeIterations; // number "free" iterations before we start to delay + UINT32 _iteration; // current iteration + STATS *_stats; // points to object which collects statistics, or NULL +}; + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/fixed-lifo.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/fixed-lifo.hpp new file mode 100644 index 0000000..a9ad56d --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/fixed-lifo.hpp @@ -0,0 +1,299 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : atomic +// : component public header + +#ifndef ATOMIC_FIXED_LIFO_HPP +#define ATOMIC_FIXED_LIFO_HPP + +#include "util/numberbits.hpp" +#include "atomic/config.hpp" +#include "atomic/lifo-ctr.hpp" +#include "atomic/nullstats.hpp" + + +namespace ATOMIC { + + +/*! @brief Last-in-first-out queue with pre-allocated elements. + * + * A LIFO queue that is thread safe and safe to use from signal handlers. It uses + * compare-and-swap operations to maintain atomicity rather than locking. + * This ensures that queue operations are safe even if a signal interrupts an + * operation and the signal handler accesses the same queue. The queue also + * statically allocates all of its data, so operations on the queue will never + * attempt to dynamically allocate memory. + * + * @param OBJECT Type of the object which each queue element holds. + * @param Capacity Maximum number of objects that the queue can hold. + * @param CounterBits The queue contains a counter which is used to maintain atomicity. + * (See LIFO_CTR for more information.) + * @param STATS Type of an object that collects statistics. See NULLSTATS for a model. + * + * @par Example: + * \code + * #include "atomic/fixed-lifo.hpp" + * + * struct MyElement + * { + * unsigned _myMember; + * }; + * + * ATOMIC::FIXED_LIFO Queue; + * + * void Foo() + * { + * MyElement el; + * Queue.Push(el); // Pushes a copy of 'el' + * Queue.Pop(&el); // Assigns 'el' to a copy of the popped element + * } + * \endcode + */ +template + class /**/ FIXED_LIFO +{ + public: + /*! + * Construct a new (empty) queue. This method is NOT atomic. + */ + FIXED_LIFO(STATS *stats=0) : _activeQueue(&_elementHeap, stats), _freeQueue(&_elementHeap, stats) + { + ClearNonAtomic(); + } + + /*! + * Set the statistics collection object. This method is NOT atomic. + * + * @param[in] stats The new statistics collection object. + */ + void SetStatsNonAtomic(STATS *stats) + { + _activeQueue.SetStatsNonAtomic(stats); + _freeQueue.SetStatsNonAtomic(stats); + } + + /*! + * Initialize to empty queue. This method is NOT atomic. + */ + void ClearNonAtomic() + { + unsigned int i = 0; + for (i = 0; i+1 < Capacity; i++) + _elementHeap._elements[i]._next = &_elementHeap._elements[i+1]; + _elementHeap._elements[i]._next = 0; + + _activeQueue.AssignNonAtomic(0); + _freeQueue.AssignNonAtomic(&_elementHeap._elements[0]); + } + + /*! + * Copy all the elements from one queue into another. This method is NOT atomic, + * so the caller must ensure that neither the copied-to queue nor the copied-from + * queue are accessed from another thread. + * + * @param src The queue to copy. + * + * @return Returns a reference to the copied-to queue. + */ + FIXED_LIFO& operator=(const FIXED_LIFO &src) + { + unsigned int i; + + // Link all of our _elements[] into a list. + // + for (i = 0; i < Capacity-1; i++) + _elementHeap._elements[i]._next = &_elementHeap._elements[i+1]; + _elementHeap._elements[i]._next = 0; + + // Copy each allocated element from 'src' into our list. + // + i = 0; + for (const ELEMENT *element = src._activeQueue.Head(); element; element = element->_next) + _elementHeap._elements[i++]._obj = element->_obj; + if (i > 0) + _elementHeap._elements[i-1]._next = 0; + ATOMIC_CHECK_ASSERT(i <= Capacity); + + // Set up the active and free queues. + // + if (i > 0) + _activeQueue.AssignNonAtomic(&_elementHeap._elements[0]); + else + _activeQueue.AssignNonAtomic(0); + + if (i < Capacity) + _freeQueue.AssignNonAtomic(&_elementHeap._elements[i]); + else + _freeQueue.AssignNonAtomic(0); + + return *this; + } + + /*! + * Push an object onto the head of the queue. + * + * @param[in] userObj The object to insert. + * + * @return Returns TRUE on success, FALSE if the queue's capacity would be exceeded. + */ + bool Push(const OBJECT &userObj) + { + ELEMENT *element = _freeQueue.Pop(); + if (!element) + return false; + + element->_obj = userObj; + + _activeQueue.Push(element); + return true; + } + + /*! + * Pop object off the head of the queue. + * + * @param[out] userObj Receives the object. + * + * @return Returns TRUE if there is an object to pop. Returns FALSE if the queue is empty. + */ + bool Pop(OBJECT *userObj) + { + ELEMENT *element = _activeQueue.Pop(); + if (!element) + return false; + + *userObj = element->_obj; + + _freeQueue.Push(element); + return true; + } + + /*! + * Tells whether the queue is empty. + * + * @return Returns TRUE if the queue contains no elements. + */ + bool Empty() const + { + const ELEMENT *head = _activeQueue.Head(); + return (head == 0); + } + + /*! + * Atomically, remove all the elements from the queue and copy them into an STL + * (or STL-like) container. The head of the queue is pushed onto the container + * first, then the next element of the queue, etc. + * + * @param[in,out] container The container which receives the queue elements. + * The container must implement the "push_back" method + * with the normal STL semantics. + * + * @return The number of elements copied to \a container. + */ + template unsigned MoveToContainer(Container *container) + { + unsigned count = 0; + + ELEMENT *element = _activeQueue.Clear(); + while (element) + { + container->push_back(element->_obj); + ELEMENT *next = element->_next; + _freeQueue.Push(element); + element = next; + count++; + } + + return count; + } + + /*! + * Copy pointers to each element in the queue to a container. The elements + * themselves remain in the queue afterwards. The element at the head of the + * queue is copied to element 0 of the container, etc. + * + * This method is NOT atomic. The caller must ensure that there are no + * insertions or deletions while this method is active. Moreover, the caller + * can only safely dereference the resulting pointers so long as the queue + * remains unmodified. + * + * @param[in,out] container The container which receives pointers to the + * queue elements. The container must implement the + * "push_back" method with the normal STL semantics. + */ + template void CopyPointersToContainerNonAtomic(Container *container) const + { + const ELEMENT *element = _activeQueue.Head(); + while (element) + { + container->push_back(&element->_obj); + element = element->_next; + } + } + + private: + struct ELEMENT + { + ELEMENT * volatile _next; + OBJECT _obj; + }; + + struct ELEMENT_HEAP + { + UINT32 Index(const ELEMENT *element) const + { + if (!element) + return 0; + return (element - _elements) + 1; + } + + ELEMENT *Pointer(UINT32 iElement) + { + if (!iElement) + return 0; + return &_elements[iElement-1]; + } + + ELEMENT _elements[Capacity]; + }; + + ELEMENT_HEAP _elementHeap; + + static const UINT32 CapacityBits = UTIL::NUMBER_BITS::count; + + // _activeQueue is a list of objects that are "in" the FIXED_LIFO. _freeQueue is a list + // of unused ELEMENT's. + // + LIFO_CTR _activeQueue; + LIFO_CTR _freeQueue; +}; + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/fixed-multimap.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/fixed-multimap.hpp new file mode 100644 index 0000000..5cdc768 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/fixed-multimap.hpp @@ -0,0 +1,422 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : atomic +// : component public header + +#ifndef ATOMIC_FIXED_MULTIMAP_HPP +#define ATOMIC_FIXED_MULTIMAP_HPP + +#include "atomic/config.hpp" +#include "atomic/ops.hpp" +#include "atomic/exponential-backoff.hpp" +#include "atomic/nullstats.hpp" + + +namespace ATOMIC { + + +/*! @brief Associative map with pre-allocated elements. + * + * A map container that is thread safe and safe to use from signal handlers. + * It uses compare-and-swap operations to maintain atomicity rather than locking. + * This ensures that operations are safe even if a signal interrupts an + * operation and the signal handler accesses the same map. The map also + * statically allocates all of its data, so operations on the map will never + * attempt to dynamically allocate memory. + * + * @param KEY The type of the key which is used to index the map. + * The OPS operations (Load, Store, CompareAndSwap) must + * be supported for this data type. + * @param OBJECT Type of the object which is associated with each key. There + * are no restrictions on this data type. + * @param InvalidKey1 The client must provide two "invalid" key values, which it + * promises to never use when inserting into the map. + * @param InvalidKey2 The second "invalid" key value. + * @param Capacity Maximum number of objects that the map can hold. + * @param STATS Type of an object that collects statistics. See NULLSTATS for a model. + * + * @par Example: + * \code + * #include "atomic/fixed-multimap.hpp" + * + * struct MyElement + * { + * char name[256]; + * }; + * + * ATOMIC::FIXED_MULTIMAP Map; + * + * void Foo() + * { + * MyElement newEl; + * Map.Add(1, newEl); // Adds a copy of 'newEl' associated with key '1' + * MyElement *el = Map.Find(1); + * } + * \endcode + */ +template + class /**/ FIXED_MULTIMAP +{ + public: + /*! + * Construct a new (empty) map. This method is NOT atomic. + * + * @param[in] stats The new statistics collection object. + */ + FIXED_MULTIMAP(STATS *stats=0) : _highWaterMark(0), _freeLocationHint(0), _stats(stats) + { + for (UINT32 i = 0; i < Capacity; i++) + _map[i] = KeyAvailable; + } + + /*! + * Set the statistics collection object. This method is NOT atomic. + * + * @param[in] stats The new statistics collection object. + */ + void SetStatsNonAtomic(STATS *stats) + { + _stats = stats; + } + + /*! + * Remove all elements from the map. This method is NOT atomic. + */ + void ClearNonAtomic() + { + _highWaterMark = 0; + _freeLocationHint = 0; + + for (UINT32 i = 0; i < Capacity; i++) + _map[i] = KeyAvailable; + } + + /*! + * Add a new key and object to the map. A new entry is added even if there is + * already an entry with this key. + * + * @param[in] key The key value for the new element. + * @param[in] userObj The object associated with the key. The contents of + * \a userObj are copied into the map. + * + * @return Returns a pointer to the object which the map contains. The client + * can only safely dereference this pointer if it can guarantee that + * no other client has removed this element. + */ + OBJECT *Add(KEY key, const OBJECT &userObj) + { + ATOMIC_CHECK_ASSERT(key != KeyAvailable && key != KeyReserved); + + UINT32 highWater = OPS::Load(&_highWaterMark); + UINT32 freeHint = OPS::Load(&_freeLocationHint); + + for (UINT32 i = freeHint; i < highWater; i++) + { + if (OPS::Load(&_map[i]) == KeyAvailable && AddAt(i, key, userObj)) + return &_objects[i]; + } + for (UINT32 i = 0; i < Capacity; i++) + { + if (OPS::Load(&_map[i]) == KeyAvailable && AddAt(i, key, userObj)) + return &_objects[i]; + } + return 0; + } + + /*! + * Attempt to find an element in the map that has the given key. If the map + * contains more than one element with this key, one of them is chosen arbitrarily. + * + * This method is guaranteed to find an element if the map contains a match at + * the start of the find operation and that matching element remains in the map + * until the find completes. If the matching element is inserted or removed during + * the find operation, this method is not guaranteed to find it. + * + * @param[in] key The key to search for. + * + * @return Returns a pointer to the object associated with this key, or NULL if + * no such element is found. The client can only safely dereference + * this pointer if it can guarantee that no other client has removed it. + */ + OBJECT *Find(KEY key) + { + ATOMIC_CHECK_ASSERT(key != KeyAvailable && key != KeyReserved); + + UINT32 highWater = OPS::Load(&_highWaterMark); + for (UINT32 i = 0; i < highWater; i++) + { + // This BARRIER_LD_NEXT works in conjunction with the other barrier marked (A). + // They ensure that the contents of _object[i] are visible on this processor, + // even if they were written by another. + // + if (OPS::Load(&_map[i], BARRIER_LD_NEXT) == key) + return &_objects[i]; + } + return 0; + } + + /*! + * Attempt to find an element in the map for which a predicate returns TRUE. + * If the map contains more than one matching element, one of them is chosen arbitrarily. + * + * This method is guaranteed to find an element if the map contains a match at + * the start of the find operation and that matching element remains in the map + * until the find completes. If the matching element is inserted or removed during + * the find operation, this method is not guaranteed to find it. + * + * @param[in] pred An STL-like predicate functor. A key is passed as the predicate's + * only argument. It returns TRUE if there is a match. + * + * @return Returns a pointer to the object associated with this key, or NULL if + * no such element is found. The client can only safely dereference + * this pointer if it can guarantee that no other client has removed it. + */ + template OBJECT *FindIf(PRED pred) + { + UINT32 highWater = OPS::Load(&_highWaterMark); + for (UINT32 i = 0; i < highWater; i++) + { + // This BARRIER_LD_NEXT works in conjunction with the other barrier marked (A). + // They ensure that the contents of _object[i] are visible on this processor, + // even if they were written by another. + // + KEY key = OPS::Load(&_map[i], BARRIER_LD_NEXT); + if (key != KeyAvailable && key != KeyReserved) + { + if (pred(key)) + return &_objects[i]; + } + } + return 0; + } + + /*! + * Attempt to remove an element in the map that has the given key. If the map + * contains more than one element with this key, one of them is chosen arbitrarily. + * + * This method is guaranteed to remove an element if the map contains a match at + * the start of the remove operation and that matching element is not removed by + * another client during this operation. If a matching element is inserted during + * this operation, it may or may not be removed. + * + * @param[in] key The key to search for. + */ + void Remove(KEY key) + { + ATOMIC_CHECK_ASSERT(key != KeyAvailable && key != KeyReserved); + + UINT32 highWater = OPS::Load(&_highWaterMark); + for (UINT32 i = 0; i < highWater; i++) + { + if (OPS::Load(&_map[i]) == key) + { + RemoveAt(i, key); + return; + } + } + } + + /*! + * Remove all the elements from the map for which a predicate function returns + * TRUE. + * + * This method is guaranteed to remove an element if the map contains a match at + * the start of the remove operation and that matching element is not removed by + * another client during this operation. If a matching element is inserted during + * this operation, it may or may not be removed. + * + * @param[in] pred An STL-like predicate functor. A key is passed as the predicate's + * only argument. If it returns TRUE, that element is removed. + */ + template void RemoveIf(PRED pred) + { + UINT32 highWater = OPS::Load(&_highWaterMark); + for (UINT32 i = 0; i < highWater; i++) + { + KEY key = OPS::Load(&_map[i]); + if (key != KeyAvailable && key != KeyReserved) + { + if (pred(key)) + RemoveAt(i, key); + } + } + } + + /*! + * Execute a function once for each element in the map. The function is guaranteed + * to be called only for elements that exist at the start of the ForEach call and are + * not removed during the ForEach call. + * + * @param[in] func An binary functor which is executed once for each element + * in the map. It is called like: + * \code + * void func(KEY key, OBJECT *obj) + * \endcode + * The client can only safely dereference \e obj if it can + * guarantee that no other client has deleted it. + */ + template void ForEach(BINARY func) + { + UINT32 highWater = OPS::Load(&_highWaterMark); + for (UINT32 i = 0; i < highWater; i++) + { + // This BARRIER_LD_NEXT works in conjunction with the other barrier marked (A). + // They ensure that the contents of _object[i] are visible on this processor, + // even if they were written by another. + // + KEY key = OPS::Load(&_map[i], BARRIER_LD_NEXT); + if (key != KeyAvailable && key != KeyReserved) + func(key, &_objects[i]); + } + } + + private: + /* + * Attempt to add a new element at the given location. Return TRUE if it could + * be added there, FALSE if not. + */ + bool AddAt(UINT32 index, KEY key, const OBJECT &userObj) + { + // If this location is available, mark it as reserved. + // + // The BARRIER_CS_NEXT here works in conjunction with the other barrier marked (B). + // This ensures that the read of _map[index] is made before the read of + // _highWaterMark below. Otherwise, we might read a stale version of _highWaterMark + // and not realize that _highWaterMark needs to be updated for this new element. + // (See reference mark (C) below.) + // + if (!OPS::CompareAndDidSwap(&_map[index], KeyAvailable, KeyReserved, BARRIER_CS_NEXT)) + return false; + + // Now that the position is reserved, we can safely write to it without + // anyone else using it. + // + // The BARRIER_ST_PREV here works in conjunction with the other barrier marked (A). + // They ensure that the write of _object[index] is visible on other processors + // by the time the _map[index] is made valid. + // + _objects[index] = userObj; + OPS::Store(&_map[index], key, BARRIER_ST_PREV); + + // Make sure the high water mark stays above all the valid entries. + // If we're storing at the free location hint, we just bump the hint, + // assuming that the next location is more likely to be free than this + // one. + // + UINT32 highWater; + EXPONENTIAL_BACKOFF backoff(1, _stats); + do + { + backoff.Delay(); + + // Reference mark (C). This is the read of _highWaterMark that is synchronized + // with barrier (B). If this read were to happen before the CompareAndDidSwap on + // _map[index] above, we might get a stale value of _highWaterMark. This is + // prevented by barrier (B). + // + highWater = OPS::Load(&_highWaterMark); + if (index < highWater) + break; + } + while (!OPS::CompareAndDidSwap(&_highWaterMark, highWater, index+1)); + + OPS::CompareAndSwap(&_freeLocationHint, index, index+1); + return true; + } + + /* + * If the given element contains the given key, remove it. + */ + void RemoveAt(UINT32 index, KEY key) + { + // Unless someone else removes this element first, mark the location as reserved. + // + if (!OPS::CompareAndDidSwap(&_map[index], key, KeyReserved)) + return; + + do + { + // This location is now a good place to insert at in the future. + // + OPS::Store(&_freeLocationHint, index); + + // If this location is at the end of the valid portion of the map, we can lower the + // high water mark. Note, the position is current marked as "reserved", so no other + // client will try to use it while we contemplate lowering the high water mark. + // + // The BARRIER_CS_NEXT here works in conjunction with the other barrier marked (B). + // This ensures that the write to _highWaterMark is made visible on other processors + // before _map[index] is marked available. + // + UINT32 highWater = OPS::Load(&_highWaterMark); + if (index != highWater-1 || !OPS::CompareAndDidSwap(&_highWaterMark, highWater, index, BARRIER_CS_NEXT)) + { + OPS::Store(&_map[index], KeyAvailable); + break; + } + + // Make this location available for other clients. + // + OPS::Store(&_map[index], KeyAvailable); + + // If the next position below is also available, keep iterating in order to + // reduce the high water mark even further. + // + if (index == 0) + break; + index--; + } + while (OPS::CompareAndDidSwap(&_map[index], KeyAvailable, KeyReserved)); + } + + private: + static const KEY KeyAvailable = InvalidKey1; // Entry is available to hold a map + static const KEY KeyReserved = InvalidKey2; // Entry is being updated, not available but not valid either + + // These arrays are the map. Keys in _map correspond to objects in _objects. + // + KEY _map[Capacity]; + OBJECT _objects[Capacity]; + + // This is an index into the map. All entries at this location and above are invalid. + // + volatile UINT32 _highWaterMark; + + // This is a hint to a location in the map that is probably available. + // + volatile UINT32 _freeLocationHint; + + STATS *_stats; // Object which collects statistics, or NULL +}; + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/fixed-multiset.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/fixed-multiset.hpp new file mode 100644 index 0000000..01513d1 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/fixed-multiset.hpp @@ -0,0 +1,166 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : atomic +// : component public header + +#ifndef ATOMIC_FIXED_MULTISET_HPP +#define ATOMIC_FIXED_MULTISET_HPP + +#include "atomic/fixed-multimap.hpp" +#include "atomic/nullstats.hpp" + + +namespace ATOMIC { + + +/*! @brief Unordered set of data with pre-allocated elements. + * + * A set container that is thread safe and safe to use from signal handlers. + * It uses compare-and-swap operations to maintain atomicity rather than locking. + * This ensures that operations are safe even if a signal interrupts an + * operation and the signal handler accesses the same set. The set also + * statically allocates all of its data, so operations on the set will never + * attempt to dynamically allocate memory. + * + * @param KEY The type of the data element contained in the set. The + * OPS operations (Load, Store, CompareAndSwap) must + * be supported for this data type. + * @param InvalidKey1 The client must provide two "invalid" key values, which it + * promises to never use when inserting into the set. + * @param InvalidKey2 The second "invalid" key value. + * @param Capacity Maximum number of elements that the set can hold. + * @param STATS Type of an object that collects statistics. See NULLSTATS for a model. + * + * @par Example: + * \code + * #include "atomic/fixed-multiset.hpp" + * + * ATOMIC::FIXED_MULTISET Set; + * + * void Foo() + * { + * Set.Add(1); + * bool found = Set.Find(1); + * } + * \endcode + */ +template + class /**/ FIXED_MULTISET +{ + public: + /*! + * Construct a new (empty) set. This method is NOT atomic. + * + * @param[in] stats The new statistics collection object. + */ + FIXED_MULTISET(STATS *stats=0) : _map(stats) {} + + /*! + * Set the statistics collection object. This method is NOT atomic. + * + * @param[in] stats The new statistics collection object. + */ + void SetStatsNonAtomic(STATS *stats) { _map.SetStatsNonAtomic(stats); } + + /*! + * Remove all elements from the set. This method is NOT atomic. + */ + void ClearNonAtomic() { _map.ClearNonAtomic(); } + + /*! + * Add a new element to the set, even if the element already exists in the set. + * + * @param[in] key The element to add. + */ + void Add(KEY key) { _map.Add(key, EMPTY()); } + + /*! + * Try to find an element in the set. + * + * This method is guaranteed to find an element if the set contains a match at + * the start of the find operation and that matching element remains in the set + * until the find completes. If the matching element is inserted or removed during + * the find operation, this method is not guaranteed to find it. + * + * @param[in] key The element to search for. + * + * @return TRUE if the element exists. + */ + bool Find(KEY key) { return (_map.Find(key) != 0); } + + /*! + * Attempt to find an element in the set for which a predicate returns TRUE. + * + * This method is guaranteed to find an element if the set contains a match at + * the start of the find operation and that matching element remains in the set + * until the find completes. If the matching element is inserted or removed during + * the find operation, this method is not guaranteed to find it. + * + * @param[in] pred An STL-like predicate functor. A key is passed as the predicate's + * only argument. It returns TRUE if there is a match. + * + * @return TRUE if the element exists. + */ + template bool FindIf(PRED pred) { return (_map.FindIf(pred) != 0); } + + /*! + * Attempt to remove an element from the set. + * + * This method is guaranteed to remove an element if the set contains a match at + * the start of the remove operation and that matching element is not removed by + * another client during this operation. If a matching element is inserted during + * this operation, it may or may not be removed. + * + * @param[in] key The key to search for. + */ + void Remove(KEY key) { _map.Remove(key); } + + /*! + * Remove all the elements from the set for which a predicate function returns + * TRUE. + * + * This method is guaranteed to remove an element if the set contains a match at + * the start of the remove operation and that matching element is not removed by + * another client during this operation. If a matching element is inserted during + * this operation, it may or may not be removed. + * + * @param[in] pred An STL-like predicate functor. A key is passed as the predicate's + * only argument. If it returns TRUE, that element is removed. + */ + template void RemoveIf(PRED pred) { _map.RemoveIf(pred); } + + private: + struct EMPTY {}; + FIXED_MULTIMAP _map; +}; + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/idset.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/idset.hpp new file mode 100644 index 0000000..f4c6c6c --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/idset.hpp @@ -0,0 +1,175 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : atomic +// : component public header + +#ifndef ATOMIC_IDSET_HPP +#define ATOMIC_IDSET_HPP + +#include "atomic/ops.hpp" +#include "atomic/nullstats.hpp" + + +namespace ATOMIC { + + +/*! @brief Maintains a set of unique IDs. + * + * A non-blocking utility that maintains a set of small integral IDs. Clients + * can request a unique ID and release an ID when it is no longer needed. The + * IDSET reuses IDs that have been released to ensure that the ID numbers remain + * small. + * + * @param MaxID The IDSET allows IDs in the inclusive range [1, MaxID] + * @param STATS Type of an object that collects statistics. See NULLSTATS for a model. + * + * @par Example: + * \code + * #include "atomic/idset.hpp" + * + * ATOMIC::IDSET<31> IdGenerator; + * + * void Foo() + * { + * FUND::UINT32 id = IdGenerator.GetID(); + * IdGenerator.ReleaseID(id); + * } + * \endcode + */ +template class /**/ IDSET +{ + public: + /*! + * Construct a new IDSET. This method is NOT atomic. + * + * @param[in] stats The new statistics collection object. + */ + IDSET(STATS *stats=0) : _stats(stats) + { + for (UINT32 i = 0; i < _numElements; i++) + _bits[i] = 0; + + // If MaxID is not an even multiple of the number of bits in a UINT32, + // the _bits[] will contain some "extra" bits. Permanently reserve these + // extra bit positions so GetID() never returns an ID greater than MaxID. + // + const UINT32 MaxIDMod32 = MaxID % 32; + if (MaxIDMod32) + _bits[_numElements-1] = ( (1<<((32-MaxIDMod32)%32)) - 1) << MaxIDMod32; + } + + /*! + * Set the statistics collection object. This method is NOT atomic. + * + * @param[in] stats The new statistics collection object. + */ + void SetStatsNonAtomic(STATS *stats) + { + _stats = stats; + } + + /*! + * Request a new ID that is not currently in use. + * + * @return Returns an ID in the range [1, MaxID] or 0 if there are no + * unused IDs. + */ + UINT32 GetID() + { + EXPONENTIAL_BACKOFF backoff(1, _stats); + + for (UINT32 i = 0; i < _numElements; i++) + { + UINT32 val = OPS::Load(&_bits[i]); + + while (val != 0xffffffff) + { + UINT32 bit = 0; + for (UINT32 tval = val; tval & 1; tval >>= 1) + bit++; + + UINT32 newval = val | (1 << bit); + if (OPS::CompareAndDidSwap(&_bits[i], val, newval)) + return i*sizeof(UINT32) + bit + 1; + + backoff.Delay(); + val = OPS::Load(&_bits[i]); + } + } + + return 0; + } + + /*! + * Release an ID, making it available for reuse. + * + * @param[in] id The ID, which must be in the range [1,MaxID]. + */ + void ReleaseID(UINT32 id) + { + id--; + UINT32 i = id >> 5; + UINT32 bit = 1 << (id & 0x1f); + + UINT32 val; + UINT32 newval; + EXPONENTIAL_BACKOFF backoff(1, _stats); + + do { + backoff.Delay(); + val = OPS::Load(&_bits[i]); + newval = val & ~bit; + } while (!OPS::CompareAndDidSwap(&_bits[i], val, newval)); + } + + /*! + * Return true for an id is in use, false otherwise + * + * @param[in] id The ID, which must be in the range [1,MaxID]. + */ + bool IsIDInUse(UINT32 id) + { + id--; + UINT32 i = id >> 5; + UINT32 bit = 1 << (id & 0x1f); + UINT32 val = OPS::Load(&_bits[i]); + return ((val&bit) != 0); + } + + private: + static const UINT32 _numElements = (MaxID + 8*sizeof(UINT32)-1) / (8*sizeof(UINT32)); + volatile UINT32 _bits[_numElements]; + + STATS *_stats; // Object which collects statistics, or NULL +}; + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/lifo-ctr.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/lifo-ctr.hpp new file mode 100644 index 0000000..40ef51d --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/lifo-ctr.hpp @@ -0,0 +1,300 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : atomic +// : component public header + +#ifndef ATOMIC_LIFO_CTR_HPP +#define ATOMIC_LIFO_CTR_HPP + +#include "atomic/config.hpp" +#include "atomic/ops.hpp" +#include "atomic/nullstats.hpp" +#include "atomic/exponential-backoff.hpp" + + +namespace ATOMIC { + + +/*! @brief Last-in-first-out queue. + * + * A non-blocking atomic LIFO queue (stack) of elements. The client manages the allocation, deallocation, and content + * of each element in the queue. This implementation uses an algorithm from R. K. Treiber to solve the "A-B-A problem". + * + * @param ELEMENT The type of each element in the queue. This type must include a field named "_next", + * which is of type "ELEMENT * volatile". + * @param HEAP Each element must be associated with a unique numeric "index". For example, the + * client may store the elements in an array, so the array index could be used as + * an element index. The index value 0 must be reserved to mean "no element" (like + * a NULL pointer). The \a HEAP parameter is the type of an object that can be + * used to convert between indices and pointers. It must define the following + * methods: + * \code + * ELEMENT *Pointer(WORD index); + * WORD Index(const ELEMENT *) const; + * \endcode + * @param IndexBits Tells how many bits are reserved in the queue to hold an element index. Clearly, + * this places an upper limit on the total number of elements that may be added to the + * queue. + * @param CounterBits The queue contains a counter field that is used to maintain atomicity. The counter + * is incremented each time a thread modifies the head of the queue. If a thread + * starts to modify the queue and then stalls, it must wake up again before the other + * threads increment the counter 2^CounterBits times (thus, wrapping the counter). + * For this reason, \a CounterBits should be fairly large (typically 32 bits). + * @param WORD An integral type which is at least as large as \a IndexBits + \a CounterBits. + * Typically, this is UINT64. + * @param STATS Type of an object that collects statistics. See NULLSTATS for a model. + * + * @par Example: + * \code + * #include "atomic/lifo-ctr.hpp" + * + * struct MyElement + * { + * MyElement * volatile _next; + * unsigned _myMember; + * }; + * + * ATOMIC::LIFO_CTR Queue(&Heap); + * + * void Foo(MyElement *el) + * { + * Queue.Push(el); + * el = Queue.Pop(); + * } + * \endcode + */ +template + class /**/ LIFO_CTR +{ + public: + /*! + * Construct a new (empty) lifo queue. + * + * @param[in] heap An object which converts between element indices and pointers. + * @param[in] stats The statistics collection object, or NULL if no statistics should be collected. + */ + LIFO_CTR(HEAP *heap, STATS *stats=0) : _heap(heap), _stats(stats) + { + ATOMIC_CHECK_ASSERT(sizeof(_head) == sizeof(_head._word)); + + _head._word = 0; + } + + /*! + * Set the statistics collection object. This method is NOT atomic. + * + * @param[in] stats The new statistics collection object. + */ + void SetStatsNonAtomic(STATS *stats) + { + _stats = stats; + } + + /*! + * Push an element onto the head of the lifo queue. + * + * @param[in] element The element to push. + */ + void Push(ELEMENT *element) + { + HEAD oldHead; + HEAD newHead; + EXPONENTIAL_BACKOFF backoff(1, _stats); + do + { + backoff.Delay(); + + oldHead._word = OPS::Load(&_head._word); + element->_next = _heap->Pointer(oldHead._fields._iElement); + newHead._fields._iElement = _heap->Index(element); + newHead._fields._counter = oldHead._fields._counter+1; + + // BARRIER_CS_PREV below ensures that all processors will see the write to _next + // before the element is inserted into the queue. + } + while (!OPS::CompareAndDidSwap(&_head._word, oldHead._word, newHead._word, BARRIER_CS_PREV)); + } + + /*! + * Push a list of elements onto the head of the lifo queue. + * + * @param[in] listHead A list of ELEMENTs linked through their _next pointers. The + * last element's _next pointer must be NULL. + * @param[in] listTail The last element in the list. + */ + void PushList(ELEMENT *listHead, ELEMENT *listTail) + { + HEAD oldHead; + HEAD newHead; + EXPONENTIAL_BACKOFF backoff(1, _stats); + do + { + backoff.Delay(); + + oldHead._word = OPS::Load(&_head._word); + listTail->_next = _heap->Pointer(oldHead._fields._iElement); + newHead._fields._iElement = _heap->Index(listHead); + newHead._fields._counter = oldHead._fields._counter+1; + + // BARRIER_CS_PREV below ensures that all processors will see the write to _next + // before the element is inserted into the queue. + } + while (!OPS::CompareAndDidSwap(&_head._word, oldHead._word, newHead._word, BARRIER_CS_PREV)); + } + + /*! + * Pop an element off the head of the lifo queue. + * + * @param[out] isEmpty If Pop() returns NULL and \a isEmpty is not NULL, the + * \a isEmpty parameter is set to TRUE. This parameter + * is not particularly useful, but it is provided for + * symetry with LIFO_PTR::Pop(). + * @param[in] maxRetries This parameter is ignored, but it is provided for + * symetry with LIFO_PTR::Pop(). + * + * @return Returns the popped element on success, or NULL if the queue is empty. + */ + ELEMENT *Pop(bool *isEmpty=0, unsigned maxRetries=0) + { + HEAD oldHead; + HEAD newHead; + ELEMENT *element; + EXPONENTIAL_BACKOFF backoff(1, _stats); + + do + { + backoff.Delay(); + + oldHead._word = OPS::Load(&_head._word); + if (oldHead._fields._iElement == 0) + { + if (isEmpty) + *isEmpty = true; + return 0; + } + + element = _heap->Pointer(oldHead._fields._iElement); + newHead._fields._iElement = _heap->Index(element->_next); + newHead._fields._counter = oldHead._fields._counter+1; + } + while (!OPS::CompareAndDidSwap(&_head._word, oldHead._word, newHead._word, BARRIER_CS_NEXT)); + + // BARRIER_CS_NEXT above ensures that all processors see that the element is removed from + // the queue before the consumer uses the element. + + return element; + } + + /*! + * @return Returns the first element on the queue, or NULL if it is empty. + */ + ELEMENT *Head() + { + HEAD head; + head._word = OPS::Load(&_head._word); + return _heap->Pointer(head._fields._iElement); + } + + /*! + * @return Returns the first element on the queue, or NULL if it is empty. + */ + const ELEMENT *Head() const + { + return const_cast(this)->Head(); + } + + /*! + * Atomically clears the lifo queue and returns a pointer to the previous contents. + * + * @return Returns a pointer to a linked list with the previous elements in + * in the queue, or NULL if the queue was already empty. + */ + ELEMENT *Clear() + { + HEAD oldHead; + HEAD newHead; + EXPONENTIAL_BACKOFF backoff(1, _stats); + + newHead._fields._iElement = 0; + do + { + backoff.Delay(); + oldHead._word = OPS::Load(&_head._word); + newHead._fields._counter = oldHead._fields._counter+1; + } + while (!OPS::CompareAndDidSwap(&_head._word, oldHead._word, newHead._word, BARRIER_CS_NEXT)); + + // BARRIER_CS_NEXT above ensures that all processors see that the elements are + // removed from the list before the caller starts changing them. + + return _heap->Pointer(oldHead._fields._iElement); + } + + /*! + * Set the contents of the lifo queue to a singly-linked list of elements. This method + * is NOT atomic. + * + * @param[in] list A list of ELEMENTs linked through their _next pointers. The + * last element's _next pointer must be NULL. + */ + void AssignNonAtomic(ELEMENT *list) + { + HEAD newHead; + newHead._word = 0; + newHead._fields._iElement = _heap->Index(list); + _head._word = newHead._word; + } + + private: + + // This is the head of the lifo queue. + // + // NOTE: This is defined as a union with _word to avoid a compiler bug. + // See the SVN commit log r3543 for more details. + // + union HEAD + { + WORD _word; + struct + { + WORD _iElement : IndexBits; // Index of first ELEMENT in queue + WORD _counter : CounterBits; // Modification counter (solves A-B-A problem) + } _fields; + }; + volatile HEAD _head; + + HEAP *_heap; // Heap containing objects which are in the queue + STATS *_stats; // Object which collects statistics, or NULL +}; + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/lifo-ptr.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/lifo-ptr.hpp new file mode 100644 index 0000000..7d42b86 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/lifo-ptr.hpp @@ -0,0 +1,395 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : atomic +// : component public header + +#ifndef ATOMIC_LIFO_PTR_HPP +#define ATOMIC_LIFO_PTR_HPP + +#include "atomic/config.hpp" +#include "atomic/ops.hpp" +#include "atomic/idset.hpp" +#include "atomic/exponential-backoff.hpp" +#include "atomic/nullstats.hpp" + + +namespace ATOMIC { + + +/*! @brief Last-in-first-out queue. + * + * A non-blocking atomic LIFO queue of elements. The client manages the allocation, deallocation, and content + * of each element in the queue. + * + * The algorithm assumes that the low order bits of the element pointers are guaranteed to be zero (i.e. the + * elements are aligned on some known boundary), and it uses these bits internally to solve the "A-B-A problem". + * + * @param ELEMENT The type of each element in the queue. This type must include a field named "_next", + * which is of type "ELEMENT * volatile". + * @param LowBits The number of low-order bits in the element pointers that are guaranteed to be zero. + * More bits allow more threads to simltaneously access the list, but this also increases + * the amount of memory alocated by the list. + * @param STATS Type of an object that collects statistics. See NULLSTATS for a model. + * + * @par Example: + * \code + * #include "atomic/lifo-ptr.hpp" + * + * struct MyElement + * { + * MyElement * volatile _next; + * unsigned _myMember; + * }; + * + * ATOMIC::LIFO_PTR Queue; // Assumes all MyElement's are 32-byte aligned (low 5 bits zero). + * + * void Foo(MyElement *el) + * { + * Queue.Push(el); + * el = Queue.Pop(); + * } + * \endcode + */ +template class /**/ LIFO_PTR +{ + public: + /*! + * Construct a new (empty) lifo queue. + * + * @param[in] stats The statistics collection object, or NULL if no statistics should be collected. + */ + LIFO_PTR(STATS *stats=0) : _idGenerator(stats), _stats(stats) + { + _head = 0; + } + + /*! + * Set the statistics collection object. This method is NOT atomic. + * + * @param[in] stats The new statistics collection object. + */ + void SetStatsNonAtomic(STATS *stats) + { + _idGenerator.SetStatsNonAtomic(stats); + _stats = stats; + } + + /*! + * Push an element onto the head of the lifo queue. + * + * @param[in] element The element to push. + */ + void Push(ELEMENT *element) + { + // Validate that the required low-order bits are zero. + // + PTRINT intElement = reinterpret_cast(element); + ATOMIC_CHECK_ASSERT(((intElement >> LowBits) << LowBits) == intElement); + + PTRINT oldHead; + PTRINT newHead; + EXPONENTIAL_BACKOFF backoff(1, _stats); + do + { + backoff.Delay(); + + oldHead = OPS::Load(&_head); + element->_next = reinterpret_cast((oldHead >> LowBits) << LowBits); // clear any previous "owner" + newHead = intElement; + + // BARRIER_CS_PREV below ensures that all processors will see the write to _next + // before the element is inserted into the queue. + } + while (!OPS::CompareAndDidSwap(&_head, oldHead, newHead, BARRIER_CS_PREV)); + } + + /*! + * Push a list of elements onto the head of the lifo queue. + * + * @param[in] listHead A list of ELEMENTs linked through their _next pointers. The + * last element's _next pointer must be NULL. + * @param[in] listTail The last element in the list. + */ + void PushList(ELEMENT *listHead, ELEMENT *listTail) + { + ATOMIC_CHECK_ASSERTSLOW(listTail && CheckList(listHead, listTail)); + + PTRINT oldHead; + PTRINT newHead; + EXPONENTIAL_BACKOFF backoff(1, _stats); + + do + { + backoff.Delay(); + + oldHead = OPS::Load(&_head); + listTail->_next = reinterpret_cast((oldHead >> LowBits) << LowBits); // clear any previous "owner" + newHead = reinterpret_cast(listHead); + + // BARRIER_CS_PREV below ensures that all processors will see the write to _next + // before the element is inserted into the queue. + } + while (!OPS::CompareAndDidSwap(&_head, oldHead, newHead, BARRIER_CS_PREV)); + } + + /*! + * Pop an element off the head of the lifo queue. + * + * This method may fail (return NULL) if there are too many simultaneous callers to the Pop() + * method. The \a isEmpty parameter can be used to distinguish this failure from an empty + * queue. When Pop() fails due to high contention, the caller may want to wait and call Pop() + * again in hopes that some other thread returns from its call to Pop(). The maximum number + * of simultaneous callers to Pop() is (2^LowBits - 1) where \e LowBits is the template parameter + * to LIFO_PTR. + * + * @param[out] isEmpty If Pop() returns NULL and \a isEmpty is not NULL, the \a isEmpty + * parameter is written with TRUE if the Pop() fails because the + * queue is empty or with FALSE if the Pop() fails because of + * contention. + * + * @return The popped element on success. The return value is NULL if the queue is empty + * or if there are too many simultaneous callers to Pop(). + */ + ELEMENT *PopInternal(bool *isEmpty=0) + { + // Get a unique ID for the calling thread. We need this to avoid an "A-B-A" problem below. + // This might fail (return zero) if there are too many threads simultaneously calling Pop(). + // + UINT32 myID; + if (!(myID = _idGenerator.GetID())) + { + if (isEmpty) + *isEmpty = false; + return 0; + } + + PTRINT oldHead; + PTRINT midHead; + PTRINT newHead; + ELEMENT *oldHeadPtr; + EXPONENTIAL_BACKOFF backoff(1, _stats); + do + { + PTRINT oldHeadBare; + + // Store our unique ID in the low-order bits of the head pointer. This avoids the "A-B-A" + // problem below. It's possible that this will overwrite someone else's unique ID, but that's OK. + do + { + backoff.Delay(); + oldHead = OPS::Load(&_head); + if (!oldHead) + { + _idGenerator.ReleaseID(myID); + if (isEmpty) + *isEmpty = true; + return 0; + } + + oldHeadBare = (oldHead >> LowBits) << LowBits; + midHead = oldHeadBare | myID; + } + while (!OPS::CompareAndDidSwap(&_head, oldHead, midHead)); + + // Read through the head pointer to get the second element on the list, which will be the + // new head if the Pop() succeeds. + // + // Note, the unique ID avoids an "A-B-A" problem here. It's possible that another thread + // will pop off the head, change the list, and then push the same head back on. If we just + // did CAS to check that (oldHead == _head), the check would incorrectly succeed. The presence + // of the unique ID in the head ensures that the CAS below will fail if another thread changes + // head and then pushes it back on. + // + oldHeadPtr = reinterpret_cast(oldHeadBare); + newHead = reinterpret_cast(oldHeadPtr->_next); + } + while (!OPS::CompareAndDidSwap(&_head, midHead, newHead, BARRIER_CS_NEXT)); + + // BARRIER_CS_NEXT above ensures that all processors see that the element is removed from + // the queue before the consumer uses the element. + + _idGenerator.ReleaseID(myID); + return oldHeadPtr; + } + + /*! + * Pop an element off the head of the lifo queue. + * + * This method may fail (return NULL) if there are too many simultaneous callers to the Pop() + * method. The \a isEmpty parameter can be used to distinguish this failure from an empty + * queue. When Pop() fails due to high contention, the caller may want to wait and call Pop() + * again in hopes that some other thread returns from its call to Pop(). The maximum number + * of simultaneous callers to Pop() is (2^LowBits - 1) where \e LowBits is the template parameter + * to LIFO_PTR. + * + * The \a maxRetries parameter can be used to automatically retry the "pop" operation if there + * are too many simultaneous callers. The default is zero, which means that no retries are + * attempted if the pop fails when there are too many simultaneous callers. If the \a maxRetries + * parameter is greater than zero, an exponential backoff is inserted between each "pop" attempt. + * + * Note that even a single thread can exceed the simultaneous caller limit. For example, a Unix + * signal could interrupt one Pop() call and the signal handler could reentrantly call into Pop() + * again. This is legal, but each interrupted Pop() call counts towards the simultaneous caller + * limit. As a result, it could be dangerous to specify a very high value for \a maxRetries if a + * single thread could reentrantly call into Pop() many times. + * + * @param[out] isEmpty If Pop() returns NULL and \a isEmpty is not NULL, the \a isEmpty + * parameter is written with TRUE if the Pop() fails because the + * queue is empty or with FALSE if the Pop() fails because of + * contention. + * @param[in] maxRetries Tells the number of times to retry the "pop" operation if there + * are too many simultaneous callers. + * + * @return The popped element on success. The return value is NULL if the queue is empty + * or if there are too many simultaneous callers to Pop(). + */ + ELEMENT *Pop(bool *isEmpty=0, unsigned maxRetries=0) + { + bool isEmptyLocal; + bool *isEmptyPtr = isEmpty ? isEmpty : &(isEmptyLocal); + ELEMENT *element = PopInternal(isEmptyPtr); + if (element) + { + return (element); + } + EXPONENTIAL_BACKOFF backoff(1, _stats); + unsigned int numTried = 0; + while (!element && !(*isEmptyPtr) && (numTried> LowBits) << LowBits; + return reinterpret_cast(head); + } + + /*! + * @return Returns the first element on the queue, or NULL if it is empty. + */ + const ELEMENT *Head() const + { + return const_cast(this)->Head(); + } + + /*! + * Atomically clears the lifo queue and returns a pointer to the previous contents. + * + * @return Returns a pointer to a linked list with the previous elements in + * in the queue, or NULL if the queue was already empty. + */ + ELEMENT *Clear() + { + PTRINT oldHead; + EXPONENTIAL_BACKOFF backoff(1, _stats); + + do + { + backoff.Delay(); + oldHead = OPS::Load(&_head); + } + while (!OPS::CompareAndDidSwap(&_head, oldHead, 0, BARRIER_CS_NEXT)); + + // BARRIER_CS_NEXT above ensures that all processors see that the elements are + // removed from the list before the caller starts changing them. + + oldHead = (oldHead >> LowBits) << LowBits; + return reinterpret_cast(oldHead); + } + + /*! + * Set the contents of the lifo queue to a singly-linked list of elements. This method + * is NOT atomic. + * + * @param[in] list A list of ELEMENTs linked through their _next pointers. The + * last element's _next pointer must be NULL. + */ + void AssignNonAtomic(ELEMENT *list) + { + ATOMIC_CHECK_ASSERTSLOW(CheckList(list, 0)); + + _head = reinterpret_cast(list); + } + + private: + /* + * Validate an input list that will be pushed onto the fifo. The input list is assumed + * to be private to the calling thread. + * + * @param[in] head The head of the list. + * @param[in] tail If not NULL, the tail of the list. + * + * @return Return TRUE if all elements have their LowBits clear. + */ + bool CheckList(ELEMENT *head, ELEMENT *tail) + { + ELEMENT *last = 0; + for (ELEMENT *el = head; el; el = el->_next) + { + PTRINT intEl = reinterpret_cast(el); + if (((intEl >> LowBits) << LowBits) != intEl) + return false; + last = el; + } + + if (tail && tail != last) + return false; + return true; + } + + private: + volatile PTRINT _head; // The head of the list + + // We use the low-order bits of _head to hold a unique ID (see Pop() method). This object + // allows us to generate small, unique IDs that will fit in the low-order bits. + // + static const UINT32 MaxID = (1 << LowBits) - 1; + IDSET _idGenerator; + + STATS *_stats; // Object which collects statistics, or NULL +}; + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/nullstats.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/nullstats.hpp new file mode 100644 index 0000000..e441c05 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/nullstats.hpp @@ -0,0 +1,61 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : atomic +// : component public header + +#ifndef ATOMIC_NULLSTATS_HPP +#define ATOMIC_NULLSTATS_HPP + + + +namespace ATOMIC { + + +/*! @brief Model for a statistics-gathering object. + * + * A dummy type to use when you don't want to keep track of statistics on atomic operations. + * To actually gather statistics, implement your own class with the same methods. + */ +class /**/ NULLSTATS +{ + public: + /*! + * This is called at the end of each compare-and-swap loop, and whenever the + * EXPONENTIAL_BACKOFF object's Reset() method is called. + * + * @param[in] iterations The number of failed CAS iterations, each requiring an + * exponential backoff delay. + */ + void Backoff(UINT32 iterations) {} +}; + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/ops-enum.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/ops-enum.hpp new file mode 100644 index 0000000..2bb8da0 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/ops-enum.hpp @@ -0,0 +1,83 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : atomic +// : component public header + +#ifndef ATOMIC_OPS_ENUM_HPP +#define ATOMIC_OPS_ENUM_HPP + +namespace ATOMIC { + +/*! + * A type that tells the memory ordering semantics for a particular memory operation. The + * ordering semantics specify the visibility of this memory operation on other processors + * w.r.t. other memory operations on this processor. These enum values are for OPS::CompareAndSwap() + * operations. + */ +enum BARRIER_CS +{ + BARRIER_CS_NONE, ///< Compare/swap operation has no special ordering semantics. + BARRIER_CS_PREV, ///< Compare/swap visibile after all previous memory operations from this processor. + BARRIER_CS_NEXT ///< Compare/swap visible before all subsequent memory operations from this processor. +}; + + +/*! + * Tells the memory ordering semantics of an OPS::Swap() operation. + */ +enum BARRIER_SWAP +{ + BARRIER_SWAP_NONE, ///< Swap operation has no special ordering semantics. + BARRIER_SWAP_PREV, ///< Swap visibile after all previous memory operations from this processor. + BARRIER_SWAP_NEXT ///< Swap visible before all subsequent memory operations from this processor. +}; + +/*! + * Tells the memory ordering semantics of an OPS::Store() operation. + */ +enum BARRIER_ST +{ + BARRIER_ST_NONE, ///< Store operation has no special ordering semantics. + BARRIER_ST_PREV ///< Store visibile after all previous memory operations from this processor. +}; + + +/*! + * Tells the memory ordering semantics of an OPS::Load() operation. + */ +enum BARRIER_LD +{ + BARRIER_LD_NONE, ///< Load operation has no special ordering semantics. + BARRIER_LD_NEXT ///< Load gets value before all subsequent memory operations visible from this processor. +}; + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/ops.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/ops.hpp new file mode 100644 index 0000000..93cc06a --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/ops.hpp @@ -0,0 +1,215 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : atomic +// : component public header + +#ifndef ATOMIC_OPS_HPP +#define ATOMIC_OPS_HPP + +#include "atomic/exponential-backoff.hpp" +#include "atomic/ops-enum.hpp" +#include "atomic/private/ops-common-impl.hpp" +#include "atomic/private/backoff-impl.hpp" + +#if defined(HOST_IA32) +# include "atomic/private/ia32/ops-impl.hpp" +#elif defined(HOST_IA32E) +# include "atomic/private/intel64/ops-impl.hpp" +#endif + + +namespace ATOMIC { + + +/*! @brief Low-level atomic memory operations. + * + * A collection of low-level atomic memory operations that can be performed on fundemental data types + * (integers, pointers, etc.) All of the operations are static template methods, so they automatically + * adapt to whatever data type you use. + * + * @par Example: + * \code + * #include "atomic/ops.hpp" + * + * int Count; + * + * void Foo() + * { + * ATOMIC::OPS::Increment(&Count, 1); + * } + * \endcode + */ +class /**/ OPS +{ + public: + /*! + * Perform an atomic compare-and-swap. + * + * @param[in] location Pointer to the location to modify. + * @param[in] oldVal The \a location is only changed if its value is + * equal to \a oldVal. + * @param[in] newVal The new value to write to \a location. + * @param[in] barrier Tells the memory ordering semantics of this operation. + * + * @return The value of \a location prior to the operation. The \a newVal was stored + * only if the return value is equal to \a oldVal. + */ + template static T CompareAndSwap(volatile T *location, T oldVal, T newVal, + BARRIER_CS barrier = BARRIER_CS_NONE) + { + OPS_IMPL::CompareAndSwap(static_cast(location), + static_cast(&oldVal), static_cast(&newVal), barrier); + return newVal; + } + + /*! + * This is exactly the same as CompareAndSwap() except the return value is a + * boolean. + * + * @param[in] location Pointer to the location to modify. + * @param[in] oldVal The \a location is only changed if its value is + * equal to \a oldVal. + * @param[in] newVal The new value to write to \a location. + * @param[in] barrier Tells the memory ordering semantics of this operation. + * + * @return TRUE if \a newVal was stored to \a location. + */ + template static bool CompareAndDidSwap(volatile T *location, T oldVal, T newVal, + BARRIER_CS barrier = BARRIER_CS_NONE) + { + OPS_IMPL::CompareAndSwap(static_cast(location), + static_cast(&oldVal), static_cast(&newVal), barrier); + return (newVal == oldVal); + } + + /*! + * Perform an atomic swap. + * + * @param[in] location Pointer to the location to modify. + * @param[in] newVal The new value to write to \a location. + * @param[in] barrier Tells the memory ordering semantics of this operation. + * + * @return The value swapped out of \a location + */ + template static T Swap(volatile T *location, T newVal, + BARRIER_SWAP barrier = BARRIER_SWAP_NONE) + { + T oldVal; + + OPS_IMPL::Swap(static_cast(location), + static_cast(&oldVal), + static_cast(&newVal), + barrier); + + return oldVal; + } + + /*! + * Atomically set the value of a location. Any outside observer using an OPS method + * is guaranteed to see either the old value or the new value (but not an intermediate value). + * + * @param[in] location Pointer to the location. + * @param[in] val The value to write to \a location. + * @param[in] barrier Tells the memory ordering semantics of this operation. + */ + template static void Store(volatile T *location, T val, BARRIER_ST barrier = BARRIER_ST_NONE) + { + OPS_IMPL::Store(static_cast(location), static_cast(&val), barrier); + } + + /*! + * Atomically get the value of a location. If another thread changes the location using an + * OPS method, Load() is guaranteed to either return the old value or the new value (but not + * an intermediate value). + * + * @param[in] location Pointer to the location. + * @param[in] barrier Tells the memory ordering semantics of this operation. + * + * @return The value at \a location. + */ + template static T Load(volatile const T *location, BARRIER_LD barrier = BARRIER_LD_NONE) + { + T val; + OPS_IMPL::Load(static_cast(location), static_cast(&val), barrier); + return val; + } + + /*! + * Atomically increment a value. + * + * @param[in] location Pointer to the location to modify. + * @param[in] inc The increment amount. + * @param[in] barrier Tells the memory ordering semantics of this operation. + * + * @return The value of \a location prior to being incremented. + */ + template static T Increment(volatile T *location, T inc, + BARRIER_CS barrier = BARRIER_CS_NONE) + { + T oldVal; + OPS_IMPL::Increment(static_cast(location), static_cast(&inc), + static_cast(&oldVal), barrier); + return oldVal; + } + + /*! + * Atomically set a location if it is less than a value. This allows you to + * compute the maximum of a series of values. + * + * @param[in] location Pointer to the location to modify. + * @param[in] val If \a location is less than \a val it is updated. + */ + template static void MaxValue(volatile T *location, T val) + { + EXPONENTIAL_BACKOFF<> backoff; + + T oldVal = Load(location); + while (oldVal < val && !CompareAndDidSwap(location, oldVal, val)) + { + backoff.Delay(); + oldVal = Load(location); + } + } + + /*! + * Delay the calling thread in a spin loop, using a processor specific + * "spin loop hint" if available. + * + * @param[in] delay The number of iterations for the spin loop. + */ + static void Delay(unsigned delay) + { + ATOMIC_SpinDelay(static_cast(delay)); + } +}; + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/private/backoff-impl.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/private/backoff-impl.hpp new file mode 100644 index 0000000..81c6168 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/private/backoff-impl.hpp @@ -0,0 +1,40 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : atomic +// : component private header + +#ifndef ATOMIC_PRIVATE_BACKOFF_IMPL_HPP +#define ATOMIC_PRIVATE_BACKOFF_IMPL_HPP + + +extern "C" void ATOMIC_SpinDelay(UINT32 delay); + +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/private/ia32/ops-impl-ia32-asm.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/private/ia32/ops-impl-ia32-asm.hpp new file mode 100644 index 0000000..93e09a5 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/private/ia32/ops-impl-ia32-asm.hpp @@ -0,0 +1,50 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : atomic +// : component private header + +#ifndef ATOMIC_PRIVATE_IA32_OPS_IMPL_IA32_ASM_HPP +#define ATOMIC_PRIVATE_IA32_OPS_IMPL_IA32_ASM_HPP + + +extern "C" void ATOMIC_CompareAndSwap8(volatile void *location, const void *oldVal, void *newVal); +extern "C" void ATOMIC_CompareAndSwap16(volatile void *location, const void *oldVal, void *newVal); +extern "C" void ATOMIC_CompareAndSwap32(volatile void *location, const void *oldVal, void *newVal); +extern "C" void ATOMIC_CompareAndSwap64(volatile void *location, const void *oldVal, void *newVal); +extern "C" void ATOMIC_Swap8(volatile void *location, void *oldVal, const void *newVal); +extern "C" void ATOMIC_Swap16(volatile void *location, void *oldVal, const void *newVal); +extern "C" void ATOMIC_Swap32(volatile void *location, void *oldVal, const void *newVal); +extern "C" void ATOMIC_Copy64(volatile const void *from, volatile void *to); +extern "C" void ATOMIC_Increment8(volatile void *location, const void *inc, void *oldVal); +extern "C" void ATOMIC_Increment16(volatile void *location, const void *inc, void *oldVal); +extern "C" void ATOMIC_Increment32(volatile void *location, const void *inc, void *oldVal); + +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/private/ia32/ops-impl.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/private/ia32/ops-impl.hpp new file mode 100644 index 0000000..78d4463 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/private/ia32/ops-impl.hpp @@ -0,0 +1,195 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : atomic +// : component private header + +#ifndef ATOMIC_PRIVATE_IA32_OPS_IMPL_HPP +#define ATOMIC_PRIVATE_IA32_OPS_IMPL_HPP + +#include "atomic/ops-enum.hpp" +#include "atomic/private/ops-common-impl.hpp" +#include "atomic/private/ia32/ops-impl-ia32-asm.hpp" + + +namespace ATOMIC { + +/* + * Low-level implementation of fundemental atomic operations for the IA-32 architecture. + * Clients should not use this class directly, but should use OPS instead. + */ +namespace OPS_IMPL +{ + // ---------- Compare-And-Swap ---------- + + template static inline void CompareAndSwap(volatile void *location, const void *oldVal, + void *newVal, BARRIER_CS ignored); + + template<> inline void CompareAndSwap<1>(volatile void *location, const void *oldVal, void *newVal, + BARRIER_CS ignored) + { + ATOMIC_CompareAndSwap8(location, oldVal, newVal); + } + + template<> inline void CompareAndSwap<2>(volatile void *location, const void *oldVal, void *newVal, + BARRIER_CS ignored) + { + ATOMIC_CompareAndSwap16(location, oldVal, newVal); + } + + template<> inline void CompareAndSwap<4>(volatile void *location, const void *oldVal, void *newVal, + BARRIER_CS ignored) + { + ATOMIC_CompareAndSwap32(location, oldVal, newVal); + } + + template<> inline void CompareAndSwap<8>(volatile void *location, const void *oldVal, void *newVal, + BARRIER_CS ignored) + { + ATOMIC_CompareAndSwap64(location, oldVal, newVal); + } + + // ---------- Store ---------- + + template static inline void Store(volatile void *location, const void *val, BARRIER_ST ignored); + + template<> inline void Store<1>(volatile void *location, const void *val, BARRIER_ST ignored) + { + *static_cast(location) = *static_cast(val); + } + + template<> inline void Store<2>(volatile void *location, const void *val, BARRIER_ST ignored) + { + *static_cast(location) = *static_cast(val); + } + + template<> inline void Store<4>(volatile void *location, const void *val, BARRIER_ST ignored) + { + *static_cast(location) = *static_cast(val); + } + + template<> inline void Store<8>(volatile void *location, const void *val, BARRIER_ST ignored) + { + ATOMIC_Copy64(val, location); + } + + + // ---------- Load ---------- + + template static inline void Load(volatile const void *location, void *val, BARRIER_LD ignored); + + template<> inline void Load<1>(volatile const void *location, void *val, BARRIER_LD ignored) + { + *static_cast(val) = *static_cast(location); + } + + template<> inline void Load<2>(volatile const void *location, void *val, BARRIER_LD ignored) + { + *static_cast(val) = *static_cast(location); + } + + template<> inline void Load<4>(volatile const void *location, void *val, BARRIER_LD ignored) + { + *static_cast(val) = *static_cast(location); + } + + template<> inline void Load<8>(volatile const void *location, void *val, BARRIER_LD ignored) + { + ATOMIC_Copy64(location, val); + } + + + // ---------- Swap ---------- + + template static inline void Swap(volatile void *location, void *oldVal, + const void *newVal, BARRIER_SWAP ignored); + + template<> inline void Swap<1>(volatile void *location, void *oldVal, const void *newVal, + BARRIER_SWAP ignored) + { + ATOMIC_Swap8(location, oldVal, newVal); + } + + template<> inline void Swap<2>(volatile void *location, void *oldVal, const void *newVal, + BARRIER_SWAP ignored) + { + ATOMIC_Swap16(location, oldVal, newVal); + } + + template<> inline void Swap<4>(volatile void *location, void *oldVal, const void *newVal, + BARRIER_SWAP ignored) + { + ATOMIC_Swap32(location, oldVal, newVal); + } + + template<> inline void Swap<8>(volatile void *location, void *oldVal, const void *newVal, + BARRIER_SWAP ignored) + { + // There is no 64-bit XCHG instruction, so use compare-and-swap instead. + // + SwapByCompareAndSwap(location, oldVal, newVal, ignored); + } + + + // ---------- Increment ---------- + + template static inline void Increment(volatile void *location, const void *inc, + void *oldVal, BARRIER_CS ignored); + + template<> inline void Increment<1>(volatile void *location, const void *inc, void *oldVal, + BARRIER_CS ignored) + { + ATOMIC_Increment8(location, inc, oldVal); + } + + template<> inline void Increment<2>(volatile void *location, const void *inc, void *oldVal, + BARRIER_CS ignored) + { + ATOMIC_Increment16(location, inc, oldVal); + } + + template<> inline void Increment<4>(volatile void *location, const void *inc, void *oldVal, + BARRIER_CS ignored) + { + ATOMIC_Increment32(location, inc, oldVal); + } + + template<> inline void Increment<8>(volatile void *location, const void *inc, void *oldVal, + BARRIER_CS ignored) + { + // There is no 64-bit XADD instruction, so use compare-and-swap instead. + // + IncrementByCompareAndSwap(location, inc, oldVal, ignored); + } +} + + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/private/intel64/ops-impl-intel64-asm.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/private/intel64/ops-impl-intel64-asm.hpp new file mode 100644 index 0000000..23ea538 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/private/intel64/ops-impl-intel64-asm.hpp @@ -0,0 +1,51 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : atomic +// : component private header + +#ifndef ATOMIC_PRIVATE_INTEL64_OPS_IMPL_INTEL64_ASM_HPP +#define ATOMIC_PRIVATE_INTEL64_OPS_IMPL_INTEL64_ASM_HPP + + +extern "C" void ATOMIC_CompareAndSwap8(volatile void *location, const void *oldVal, void *newVal); +extern "C" void ATOMIC_CompareAndSwap16(volatile void *location, const void *oldVal, void *newVal); +extern "C" void ATOMIC_CompareAndSwap32(volatile void *location, const void *oldVal, void *newVal); +extern "C" void ATOMIC_CompareAndSwap64(volatile void *location, const void *oldVal, void *newVal); +extern "C" void ATOMIC_Swap8(volatile void *location, void *oldVal, const void *newVal); +extern "C" void ATOMIC_Swap16(volatile void *location, void *oldVal, const void *newVal); +extern "C" void ATOMIC_Swap32(volatile void *location, void *oldVal, const void *newVal); +extern "C" void ATOMIC_Swap64(volatile void *location, void *oldVal, const void *newVal); +extern "C" void ATOMIC_Increment8(volatile void *location, const void *inc, void *oldVal); +extern "C" void ATOMIC_Increment16(volatile void *location, const void *inc, void *oldVal); +extern "C" void ATOMIC_Increment32(volatile void *location, const void *inc, void *oldVal); +extern "C" void ATOMIC_Increment64(volatile void *location, const void *inc, void *oldVal); + +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/private/intel64/ops-impl.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/private/intel64/ops-impl.hpp new file mode 100644 index 0000000..2a26a6c --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/private/intel64/ops-impl.hpp @@ -0,0 +1,189 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : atomic +// : component private header + +#ifndef ATOMIC_PRIVATE_INTEL64_OPS_IMPL_HPP +#define ATOMIC_PRIVATE_INTEL64_OPS_IMPL_HPP + +#include "atomic/private/intel64/ops-impl-intel64-asm.hpp" + + +namespace ATOMIC { + +/* + * Low-level implementation of fundemental atomic operations for the Intel(R) 64 architecture. + * Clients should not use this class directly, but should use OPS instead. + */ +namespace OPS_IMPL +{ + // ---------- Compare-And-Swap ---------- + + template static inline void CompareAndSwap(volatile void *location, const void *oldVal, + void *newVal, BARRIER_CS ignored); + + template<> inline void CompareAndSwap<1>(volatile void *location, const void *oldVal, void *newVal, + BARRIER_CS ignored) + { + ATOMIC_CompareAndSwap8(location, oldVal, newVal); + } + + template<> inline void CompareAndSwap<2>(volatile void *location, const void *oldVal, void *newVal, + BARRIER_CS ignored) + { + ATOMIC_CompareAndSwap16(location, oldVal, newVal); + } + + template<> inline void CompareAndSwap<4>(volatile void *location, const void *oldVal, void *newVal, + BARRIER_CS ignored) + { + ATOMIC_CompareAndSwap32(location, oldVal, newVal); + } + + template<> inline void CompareAndSwap<8>(volatile void *location, const void *oldVal, void *newVal, + BARRIER_CS ignored) + { + ATOMIC_CompareAndSwap64(location, oldVal, newVal); + } + + // ---------- Store ---------- + + template static inline void Store(volatile void *location, const void *val, BARRIER_ST ignored); + + template<> inline void Store<1>(volatile void *location, const void *val, BARRIER_ST ignored) + { + *static_cast(location) = *static_cast(val); + } + + template<> inline void Store<2>(volatile void *location, const void *val, BARRIER_ST ignored) + { + *static_cast(location) = *static_cast(val); + } + + template<> inline void Store<4>(volatile void *location, const void *val, BARRIER_ST ignored) + { + *static_cast(location) = *static_cast(val); + } + + template<> inline void Store<8>(volatile void *location, const void *val, BARRIER_ST ignored) + { + *static_cast(location) = *static_cast(val); + } + + + // ---------- Load ---------- + + template static inline void Load(volatile const void *location, void *val, BARRIER_LD ignored); + + template<> inline void Load<1>(volatile const void *location, void *val, BARRIER_LD ignored) + { + *static_cast(val) = *static_cast(location); + } + + template<> inline void Load<2>(volatile const void *location, void *val, BARRIER_LD ignored) + { + *static_cast(val) = *static_cast(location); + } + + template<> inline void Load<4>(volatile const void *location, void *val, BARRIER_LD ignored) + { + *static_cast(val) = *static_cast(location); + } + + template<> inline void Load<8>(volatile const void *location, void *val, BARRIER_LD ignored) + { + *static_cast(val) = *static_cast(location); + } + + + // ---------- Swap ---------- + + template static inline void Swap(volatile void *location, void *oldVal, + const void *newVal, BARRIER_SWAP ignored); + + template<> inline void Swap<1>(volatile void *location, void *oldVal, const void *newVal, + BARRIER_SWAP ignored) + { + ATOMIC_Swap8(location, oldVal, newVal); + } + + template<> inline void Swap<2>(volatile void *location, void *oldVal, const void *newVal, + BARRIER_SWAP ignored) + { + ATOMIC_Swap16(location, oldVal, newVal); + } + + template<> inline void Swap<4>(volatile void *location, void *oldVal, const void *newVal, + BARRIER_SWAP ignored) + { + ATOMIC_Swap32(location, oldVal, newVal); + } + + template<> inline void Swap<8>(volatile void *location, void *oldVal, const void *newVal, + BARRIER_SWAP ignored) + { + ATOMIC_Swap64(location, oldVal, newVal); + } + + + // ---------- Increment ---------- + + template static inline void Increment(volatile void *location, const void *inc, + void *oldVal, BARRIER_CS ignored); + + template<> inline void Increment<1>(volatile void *location, const void *inc, void *oldVal, + BARRIER_CS ignored) + { + ATOMIC_Increment8(location, inc, oldVal); + } + + template<> inline void Increment<2>(volatile void *location, const void *inc, void *oldVal, + BARRIER_CS ignored) + { + ATOMIC_Increment16(location, inc, oldVal); + } + + template<> inline void Increment<4>(volatile void *location, const void *inc, void *oldVal, + BARRIER_CS ignored) + { + ATOMIC_Increment32(location, inc, oldVal); + } + + template<> inline void Increment<8>(volatile void *location, const void *inc, void *oldVal, + BARRIER_CS ignored) + { + ATOMIC_Increment64(location, inc, oldVal); + } +} + + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/private/ops-common-impl.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/private/ops-common-impl.hpp new file mode 100644 index 0000000..c02f2bb --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/atomic/private/ops-common-impl.hpp @@ -0,0 +1,110 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : atomic +// : component private header + +#ifndef ATOMIC_PRIVATE_OPS_COMMON_IMPL_HPP +#define ATOMIC_PRIVATE_OPS_COMMON_IMPL_HPP + +#include "atomic/exponential-backoff.hpp" +#include "atomic/ops-enum.hpp" + + +namespace ATOMIC { + +/* + * Generic implementations of some operations using compare-and-swap. These implementations + * are used on architectures that have compare-and-swap, but do not have an instruction that + * directly implements the operation in question. Clients should not use this class directly, + * but should use OPS instead. + */ +namespace OPS_IMPL +{ + template static inline void CompareAndSwap(volatile void *location, const void *oldVal, + void *newVal, BARRIER_CS ignored); + + template static inline void Load(volatile const void *location, void *val, BARRIER_LD ignored); + + + // ---------- Swap ---------- + + template inline void SwapByCompareAndSwap(volatile void *location, void *oldVal, + const void *newVal, BARRIER_SWAP barrier) + { + T oldv; + T newv; + T val = *static_cast(newVal); + + BARRIER_CS myBarrier = + (barrier == BARRIER_SWAP_NONE) ? BARRIER_CS_NONE : + (barrier == BARRIER_SWAP_PREV) ? BARRIER_CS_PREV : + BARRIER_CS_NEXT; + + EXPONENTIAL_BACKOFF<> backoff; + do + { + backoff.Delay(); + Load(location, static_cast(&oldv), BARRIER_LD_NONE); + newv = val; + CompareAndSwap(location, static_cast(&oldv), static_cast(&newv), myBarrier); + } + while (newv != oldv); + + *static_cast(oldVal) = oldv; + } + + + // ---------- Increment ---------- + + template static inline void IncrementByCompareAndSwap(volatile void *location, + const void *inc, void *oldVal, BARRIER_CS barrier) + { + T oldv; + T newv; + T increment = *static_cast(inc); + + EXPONENTIAL_BACKOFF<> backoff; + do + { + backoff.Delay(); + Load(location, static_cast(&oldv), BARRIER_LD_NONE); + newv = oldv + increment; + CompareAndSwap(location, static_cast(&oldv), static_cast(&newv), barrier); + } + while (newv != oldv); + + *static_cast(oldVal) = oldv; + } +} + + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol.hpp new file mode 100644 index 0000000..d89804a --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol.hpp @@ -0,0 +1,2019 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : debugger-protocol +// : component public header + +#ifndef DEBUGGER_PROTOCOL_HPP +#define DEBUGGER_PROTOCOL_HPP + +#include +#include "util.hpp" +#include "debugger-protocol/forward.hpp" + +#if defined(DEBUGGER_PROTOCOL_BUILD_SHARED) +# define DEBUGGER_PROTOCOL_API _STLP_EXPORT_DECLSPEC +#elif defined(DEBUGGER_PROTOCOL_USE_SHARED) +# define DEBUGGER_PROTOCOL_API _STLP_IMPORT_DECLSPEC +#else +# define DEBUGGER_PROTOCOL_API +#endif + + +/*! @mainpage DEBUGGER_PROTOCOL library + * + * The DEBUGGER_PROTOCOL library provides a low-level interface for communicating + * between the back-end of a debugger and the front-end of a debugger. The + * library supports front-end and back-end users. + * + * The DEBUGGER_PROTOCOL library currently supports the GDB protocol, which means + * a back-end using this API can communicate with GDB. Likewise, a debugger + * front-end using this API can communicate with a GDB back-end (target stub). + * In the future, support may be added for other protocols. + * + * To get started writing a debugger front-end, see IFRONTEND. + * + * To get started writing a debugger back-end, see IBACKEND. + */ + +/*! @brief The DEBUGGER_PROTOCOL library. */ +namespace DEBUGGER_PROTOCOL { + +/*! + * Identifier representing a target thread, typically an O/S identifier. The value zero is reserved. + * Thread ID's may be reused once a thread exits. + */ +typedef unsigned long THREAD; + +/*! + * Identifier representing a register. This is either one of the "generic" registers + * (e.g. REG_PC) or a value 'REG_END + i' where \e i is an index into the \e regs + * parameter to IBACKEND::SetRegisters() or IFRONTEND::SetRegisters(). + */ +typedef unsigned REG; + +/*! + * Represents an ID to an "image", which is a loadable module in the target process. + * An image can represent a DLL, shared library, or the main executable program. Image + * ID's may be reused once an image is unloaded. + */ +typedef unsigned long IMAGE; + +/*! + * An identifier representing a target process, typically an O/S process ID. Process + * ID's may be reused once a process exits. + */ +typedef unsigned long PROCESS; + +/*! + * O/S specific information about an image. Pointers to this type must be cast according + * to the \e os parameter that is passed to CreateBackEnd() or returned from + * IFRONTEND::GetBackEndOs(). + * + * - For OS_LINUX32 or OS_LINUX64, cast to IMAGE_INFO_LINUX, which is defined in + * "debugger-protocol/image-linux.hpp". + * + * - For OS_WINDOWS32 or OS_WINDOWS64, cast to IMAGE_INFO_WINDOWS, which is defined in + * "debugger-protocol/image-windows.hpp". + */ +typedef void IMAGE_INFO; + +/*! + * Images list required by GDB (in System V R4 standard). + * Implemented only for Linux GDB. + * + */ +typedef void SVR4_IMAGES_LIST; + +/*! + * Image info required by GDB (in System V R4 standard). + * Implemented only for Linux GDB. + * + */ +typedef void SVR4_IMAGE_INFO; + +/*! + * Identifies an O/S specific "event", according to the \e os parameter passed to + * CreateBackEnd() or returned from IFRONTEND::GetBackEndOs(). + * + * - For OS_LINUX32 and OS_LINUX64, this is a signal number. In API's where the + * back-end reports an event to the front-end, the value zero indicates that the + * target process received an unknown signal. + * + * - For OS_WINDOWS32 and OS_WINDOWS64, this is an exception code. + */ +typedef unsigned long EVENT; + +/*! + * O/S specific additional information about an event, which is used when the back-end + * supports BACKEND_FEATURE_EVENT_INFO. Pointers to this type must be cast according + * to the \e os parameter that is passed to CreateBackEnd() or returned from + * IFRONTEND::GetBackEndOs(). + * + * - For OS_LINUX32, cast to EVENT_INFO_LINUX32, which is defined in "debugger-protocol/event-linux.hpp". + * - For OS_LINUX64, cast to EVENT_INFO_LINUX64, which is defined in "debugger-protocol/event-linux.hpp". + * + * - For OS_WINDOWS32, cast to EVENT_INFO_WINDOWS32 which is defined in "debugger-protocol/event-windows.hpp". + * - For OS_WINDOWS64, cast to EVENT_INFO_WINDOWS64 which is defined in "debugger-protocol/event-windows.hpp". + */ +typedef void EVENT_INFO; + +/*! + * O/S specific information about a thread, which is used when the back-end supports + * BACKEND_FEATURE_THREAD_INFO. Pointers to this type must be cast according + * to the \e os parameter that is passed CreateBackEnd() or returned from + * IFRONTEND::GetBackEndOs(). + * + * - For OS_LINUX32 or OS_LINUX64, cast to THREAD_INFO_LINUX, which is defined in + * "debugger-protocol/thread-linux.hpp". + * + * - For OS_WINDOWS32 or OS_WINDOWS64, cast to THREAD_INFO_WINDOWS, which is defined in + * "debugger-protocol/thread-windows.hpp". + */ +typedef void THREAD_INFO; + + +/*! + * Flags that can be used with the Initialize() function. + */ +enum INITIALIZE_FLAG +{ + INITIALIZE_FLAG_NONE = 0, + INITIALIZE_FLAG_TCP = (1<<0) ///< Initialize for a TCP front- or back-end connection. +}; +typedef UINT64 INITIALIZE_FLAGS; ///< Bit mask of INITIALIZE_FLAG's. + +/*! + * Possible O/S types. + */ +enum OS +{ + OS_INVALID, + OS_LINUX32, + OS_LINUX64, + OS_WINDOWS32, + OS_WINDOWS64, + OS_MAC32, + OS_MAC64 +}; + +/*! + * Generic register ID's that are common for all targets. + */ +enum +{ + REG_INVALID, + REG_PC, ///< The program counter. + REG_FP, ///< The frame pointer. + REG_SP, ///< The stack pointer. + REG_FLAGS, ///< The flags. + REG_END +}; + +/*! + * Possible types of the debugger front-end. + */ +enum FRONTEND_TYPE +{ + FRONTEND_TYPE_UNKNOWN, ///< Type not known. + FRONTEND_TYPE_GDB, ///< The GNU debugger. + FRONTEND_TYPE_IDB, ///< The Intel debugger. + FRONTEND_TYPE_VISUAL_STUDIO_VSDBG, ///< Visual Studio via VSDBG. + FRONTEND_TYPE_VISUAL_STUDIO, ///< Visual Studio via native connection. + FRONTEND_TYPE_LLDB ///< The LLVM debugger. +}; + +/*! + * Possible types of the debugger back-end. + */ +enum BACKEND_TYPE +{ + BACKEND_TYPE_UNKNOWN, ///< Type not known. + BACKEND_TYPE_PIN ///< The Pin dynamic instrumentation system. +}; + +/*! + * Possible features supported by a debugger front-end. + */ +enum FRONTEND_FEATURE +{ + FRONTEND_FEATURE_NONE = 0, ///< No extended features supported. + + /*! + * The front-end will dynamically change the expected register set based on the + * target description returned by the back-end. (See + * ITARGET_DESCRIPTION::GetTargetDescription(), IFRONTEND::SetRegisters(), and + * IBACKEND::SetRegisters().) + */ + FRONTEND_FEATURE_DYNAMIC_REGISTERS = (1<<0), + + /*! + * This option controls the behavior when two or more threads stop simultaneously. + * For example, two threads might each trigger a breakpoint at the same time, or + * one thread might trigger a breakpoint while another raises an exception. + * + * With the default behavior, the back-end reports each stop-reason separately. The + * front-end gets notified via INOTIFICATIONS::NotifyStopped() and one thread will + * report a stop-reason via ICOMMANDS::GetThreadStopReason(). The back-end keeps + * the other thread's stop-reason pending. When the front-end continues execution, + * the back-end calls NotifyStopped() again and reports the pending stop-reason + * without actually resuming the target process. In this mode, the back-end uses + * various heuristics to maintain the consistency of the pending stop-reasons. For + * example, if there is a pending STOP_REASON_BREAKPOINT when the front-end removes + * the associated breakpoint, the back-end will implicitly squash the pending + * STOP_REASON_BREAKPOINT notification. + * + * If the front-end enables FRONTEND_FEATURE_MULTIPLE_STOP_REASONS, the algorithm is + * different. Instead, the back-end reports all stop-reasons simultaneously. The + * front-end is notified with a single call to INOTIFICATIONS::NotifyStopped() and + * each thread reports its own stop-reason via ICOMMANDS::GetThreadStopReason(). + */ + FRONTEND_FEATURE_MULTIPLE_STOP_REASONS = (1<<1), + + /*! + * The front-end supports the 'N' stop reply packet. + * The 'N' packet is sent to the front-end in the special case when all resumed + * threads had been terminated, but the process is still running (i.e. has additional + * active threads which are stopped by the debugger). + */ + FRONTEND_FEATURE_NO_RESUMED = (1<<2) +}; +typedef UINT64 FRONTEND_FEATURES; ///< Bit mask of FRONTEND_FEATURE's. + +/*! + * Possible features supported by a debugger back-end. + */ +enum BACKEND_FEATURE +{ + BACKEND_FEATURE_NONE = 0, ///< No extended features supported. + + /*! + * The back-end supports the IBREAKPOINTS interface via + * ICOMMANDS::GetInterface(INTERFACE_ID_BREAKPOINTS). If a back-end does not + * support this feature, the front-end will set breakpoints by overwriting + * a target instruction with a software trap. When such a breakpoint + * triggers, the back-end stops the target with STOP_REASON_EVENT. + */ + BACKEND_FEATURE_BREAKPOINTS = (1<<0), + + /*! + * The back-end supports the ICUSTOM_BREAKPOINTS interface via + * ICOMMANDS::GetInterface(INTERFACE_ID_CUSTOM_BREAKPOINTS). + */ + BACKEND_FEATURE_CUSTOM_BREAKPOINTS = (1<<1), + + /*! + * The back-end supports the ICUSTOM_COMMANDS interface via + * ICOMMANDS::GetInterface(INTERFACE_ID_CUSTOM_COMMANDS). + */ + BACKEND_FEATURE_CUSTOM_COMMANDS = (1<<2), + + /*! + * The back-end supports the IKILL_WITH_NOTIFICATION interface via + * ICOMMANDS::GetInterface(INTERFACE_ID_KILL_WITH_NOTIFICATION). + */ + BACKEND_FEATURE_KILL_WITH_NOTIFICATION = (1<<3), + + /*! + * The back-end supports the ITARGET_DESCRIPTION interface via + * ICOMMANDS::GetInterface(INTERFACE_ID_TARGET_DESCRIPTION). + */ + BACKEND_FEATURE_TARGET_DESCRIPTION = (1<<4), + + /*! + * The back-end supports the IEVENT_INTERCEPTION interface via + * ICOMMANDS::GetInterface(INTERFACE_ID_EVENT_INTERCEPTION). + */ + BACKEND_FEATURE_EVENT_INTERCEPTION = (1<<5), + + /*! + * The back-end supports the IIMAGE_EXTENSIONS interface via + * ICOMMANDS::GetInterface(INTERFACE_ID_IMAGE_EXTENSIONS). + */ + BACKEND_FEATURE_IMAGE_EXTENSIONS = (1<<6), + + /*! + * The back-end supports the ITHREAD_EXTENSIONS interface via + * ICOMMANDS::GetInterface(INTERFACE_ID_THREAD_EXTENSIONS). + */ + BACKEND_FEATURE_THREAD_EXTENSIONS = (1<<7), + + /*! + * The back-end supports additional event information via EVENT_INFO. Back-ends that do + * not support this feature can ignore the EVENT_INFO parameters in all methods. + */ + BACKEND_FEATURE_EVENT_INFO = (1<<8), + + /*! + * The back-end supports the ability to resume a thread with CONTINUE_MODE_GO_NEW_EVENT + * or CONTINUE_MODE_STEP_NEW_EVENT. Back-ends that do not support this feature will + * never receives these modes in calls to ICOMMANDS::SetContinueMode(). + */ + BACKEND_FEATURE_CONTINUE_WITH_NEW_EVENT = (1<<9), + + /*! + * The back-end supports the IPROCESS_INFO interface via + * ICOMMANDS::GetInterface(INTERFACE_ID_PROCESS_INFO). + */ + BACKEND_FEATURE_PROCESS_INFO = (1<<10), + + /*! + * The back-end supports System V R4 libraries extension + */ + BACKEND_FEATURE_SVR4_LIBRARIES = (1<<11) +}; +typedef UINT64 BACKEND_FEATURES; ///< Bit mask of BACKEND_FEATURE's. + +/*! + * Various properties for debugger transport connection + */ +struct /**/ DEBUGGER_CONNECTION_PROPERTIES +{ + enum DEBUGGER_CONNECTION_TYPE + { + NONE, + TCP_SERVER, + TCP_CLIENT + }; + /*! + * Underlying connection type for the debugger transport + */ + DEBUGGER_CONNECTION_TYPE _type; + + /*! + * TCP port of the debugger connection + * Available only on TCP_SERVER or TCP_CLIENT connection types + */ + int _tcpPort; + + /*! + * TCP host of the debugger connection + * Available only on TCP_CLIENT connection type + */ + std::string _tcpHost; +}; + +/*! + * Possible options for a communication endpoint. + */ +enum ENDPOINT_OPTION +{ + ENDPOINT_OPTION_NONE = 0, ///< No options specified. + + /*! + * Do not use run-length compression for response data sent by the back-end. + * This option is ignored by the front-end because only the back-end will + * attempt to compress the data it sends. This option is useful because it + * makes the ILOG_NOTIFICATIONS messages easier for a human to read. + */ + ENDPOINT_OPTION_NO_COMPRESSION = (1<<0), + + /*! + * This option only applies to endpoints that act as a server. By default, + * a server-like endpoint only allows a client to connect from the same + * machine (i.e. via the TCP loopback address). This option allows a server + * to accept a connection even from a different machine (i.e. using the + * INADDR_ANY local address). + */ + ENDPOINT_OPTION_ALLOW_REMOTE_CLIENTS = (1<<1), + + /*! + * This options requires from the backend to always send the thread id in the + * reply packets. + */ + ENDPOINT_OPTION_ALWAYS_SEND_THREAD = (1<<2), + + /*! + * This option enables the backend to send textual representation of the stop + * reason in the packet. + */ + ENDPOINT_OPTION_SEND_STOP_REASON = (1<<3), + + /*! + * This option enables the backend to send unlimited size packets to the + * frontend. + */ + ENDPOINT_OPTION_UNLIMITED_LENGTH_PACKETS = (1<<4) +}; +typedef UINT64 ENDPOINT_OPTIONS; ///< Bit mask of ENDPOINT_OPTION's. + +/*! + * Back-ends can provide some optional features via interfaces that are obtained + * by calling ICOMMANDS::GetInterface(). This enumeration defines the + * set of possible optional interfaces. + */ +enum INTERFACE_ID +{ + INTERFACE_ID_BREAKPOINTS, ///< Back-end defines IBREAKPOINTS. + INTERFACE_ID_CUSTOM_BREAKPOINTS, ///< Back-end defines ICUSTOM_BREAKPOINTS. + INTERFACE_ID_CUSTOM_COMMANDS, ///< Back-end defines ICUSTOM_COMMANDS. + INTERFACE_ID_KILL_WITH_NOTIFICATION, ///< Back-end defines IKILL_WITH_NOTIFICATION. + INTERFACE_ID_TARGET_DESCRIPTION, ///< Back-end defines ITARGET_DESCRIPTION. + INTERFACE_ID_EVENT_INTERCEPTION, ///< Back-end defines IEVENT_INTERCEPTION. + INTERFACE_ID_IMAGE_EXTENSIONS, ///< Back-end defines IIMAGE_EXTENSIONS. + INTERFACE_ID_THREAD_EXTENSIONS, ///< Back-end defines ITHREAD_EXTENSIONS. + INTERFACE_ID_PROCESS_INFO, ///< Back-end defines IPROCESS_INFO. + INTERFACE_ID_SVR4_LIBRARIES ///< Back-end defines ISVR4_LIBRARIES. +}; + +/*! + * Possible notifications that can be enabled with IIMAGE_EXTENSIONS::SetImageNotifications(). + */ +enum IMAGE_NOTIFICATION +{ + IMAGE_NOTIFICATION_NONE = 0, ///< Do not enable any image notifications. + + /*! + * Enable STOP_REASON_IMAGE_LOAD and STOP_REASON_IMAGE_MULTIPLE notifications when an image is loaded. + */ + IMAGE_NOTIFICATION_LOAD = (1<<0), + + /*! + * Enable STOP_REASON_IMAGE_UNLOAD and STOP_REASON_IMAGE_MULTIPLE notifications when an image is unloaded. + */ + IMAGE_NOTIFICATION_UNLOAD = (1<<1) +}; +typedef UINT64 IMAGE_NOTIFICATIONS; ///< Bit mask of IMAGE_NOTIFICATION's. + +/*! + * Possible notifications that can be enabled with ITHREAD_EXTENSIONS::SetThreadNotifications(). + */ +enum THREAD_NOTIFICATION +{ + THREAD_NOTIFICATION_NONE = 0, ///< Do not enable any thread notifications. + THREAD_NOTIFICATION_START = (1<<0), ///< Enable STOP_REASON_THREAD_START notifications. + THREAD_NOTIFICATION_EXIT = (1<<1) ///< Enable STOP_REASON_THREAD_EXIT notifications. +}; +typedef UINT64 THREAD_NOTIFICATIONS; ///< Bit mask of THREAD_NOTIFICATION's. + + +/*! + * Possible continuation modes when debugger front-end continues a target thread. + */ +enum CONTINUE_MODE +{ + CONTINUE_MODE_FROZEN, ///< Thread should remain frozen. + + /*! + * Thread should resume execution. If it had previously stopped with STOP_REASON_EVENT, + * that event is not propagated back to the application. The thread resumes as though + * the event did not occur. + */ + CONTINUE_MODE_GO_SQUASH_EVENT, + + /*! + * Thread should resume execution. If it had previously stopped with STOP_REASON_EVENT, + * it continues executing with that event (e.g. by executing the application's handler). + * If the application did not stop due to an event, the behavior is the same as with + * CONTINUE_MODE_GO_SQUASH_EVENT. + */ + CONTINUE_MODE_GO_PASS_EVENT, + + /*! + * Thread should resume execution. If it had previously stopped with STOP_REASON_EVENT, + * that event is discarded. Regardless of how the thread previously stopped, it resumes + * as though it had received the specified event. This mode is only supported by back-ends + * that have the BACKEND_FEATURE_CONTINUE_WITH_NEW_EVENT feature. + */ + CONTINUE_MODE_GO_NEW_EVENT, + + /*! + * This is exactly like CONTINUE_MODE_GO_SQUASH_EVENT except the thread stops + * after executing a single instruction. + */ + CONTINUE_MODE_STEP_SQUASH_EVENT, + + /*! + * This is exactly like CONTINUE_MODE_GO_PASS_EVENT except the thread stops + * after executing one instruction. If the event causes the thread to enter + * a handler, execution stops before the first instruction of that handler. + */ + CONTINUE_MODE_STEP_PASS_EVENT, + + /*! + * This is exactly like CONTINUE_MODE_GO_NEW_EVENT except the thread stops + * after executing one instruction. If the event causes the thread to enter + * a handler, execution stops before the first instruction of that handler. + * This mode is only supported by back-ends that have the + * BACKEND_FEATURE_CONTINUE_WITH_NEW_EVENT feature. + */ + CONTINUE_MODE_STEP_NEW_EVENT +}; + +/*! + * Possible reasons why an application thread might stop. + */ +enum STOP_REASON +{ + /*! + * Thread triggered a breakpoint. This can only happen for breakpoints set + * via IBREAKPOINTS::SetBreakpoint(), not for breakpoints set by overwriting an + * instruction with a software trap. + */ + STOP_REASON_BREAKPOINT, + + /*! + * Thread triggered a breakpoint that was initiated by the target. Such breakpoints + * do not correspond to IBREAKPOINTS::SetBreakpoint() nor do they correspond to + * breakpoints set when the debugger front-end overwrites an instruction with a + * software trap. The front-end can get additional information about these + * breakpoints via ICUSTOM_BREAKPOINTS::GetThreadStopMessage(). + */ + STOP_REASON_CUSTOM_BREAK, + + /*! + * Thread was stopped by the back-end, for example in response to a call + * to ICOMMANDS::Break() or because some other thread triggered a breakpoint. + */ + STOP_REASON_STOPPED, + + STOP_REASON_STEP, ///< Thread completed a single-step. + STOP_REASON_EVENT, ///< Thread received an O/S event, see EVENT. + + + /* Notifications enabled by ITHREAD_EXTENSIONS::SetThreadNotifications() */ + + /*! + * New thread started and is stopped at the PC of its first instruction. + */ + STOP_REASON_THREAD_START, + + /*! + * A thread is about to exit and is stopped at the PC of its last instruction + * (usually a system call which terminates the thread). The thread will truly + * exit when it is next continued or single-stepped. Any attempt to change the + * thread's registers will be ignored. + */ + STOP_REASON_THREAD_EXIT, + + + /* Notifications enabled by IIMAGE_EXTENSIONS::SetImageNotifications() */ + + STOP_REASON_IMAGE_LOAD, ///< Image loaded, see IIMAGE_EXTENSIONS::GetThreadStopImage(). + STOP_REASON_IMAGE_UNLOAD, ///< Image unloaded, see IIMAGE_EXTENSIONS::GetThreadStopImage(). + + /*! + * More than one image was loaded or unloaded at the same time. Use + * IIMAGE_EXTENSIONS::GetImageCount() and IIMAGE_EXTENSIONS::GetImageId() to get the new + * set of loaded images. + */ + STOP_REASON_IMAGE_MULTIPLE +}; + +/*! + * Return status for some methods that block. + */ +enum RESULT +{ + RESULT_OK, ///< Method completed successfully. + RESULT_ERROR, ///< Method failed. + RESULT_INTERRUPTED ///< Method was interrupted. +}; + +/*! + * Possible return values from IBACKEND::HandleCommands() when a debugger + * session completes. + */ +enum SESSION_RESULT +{ + SESSION_RESULT_TERMINATED, ///< Target process terminated or was killed by the front-end. + SESSION_RESULT_DETACHED, ///< Front-end detached via ICOMMANDS::Detach(). + SESSION_RESULT_INTERRUPTED, ///< Session interrupted via IBACKEND::InterruptCommandThread(). + SESSION_RESULT_ERROR ///< Communication failure with the front-end. +}; + +/*! + * Flags used with IFRONTEND::InvalidateCachedState() to tell what information should be + * invalidated. + */ +enum INVALIDATE_FLAG +{ + INVALIDATE_FLAG_REGISTERS = (1<<0) ///< Invalidate the register values for a single thread. +}; +typedef UINT64 INVALIDATE_FLAGS; ///< Bit mask of INVALIDATE_FLAG's. + + +/*! + * Information describing how to connect to an endpoint using a TCP transport. + */ +struct /**/ TCP_INFO +{ + int _localPort; ///< The local port of a socket listening for a connection. +}; + +/*! + * Describes a single register in the target program. + */ +struct /**/ REG_DESCRIPTION +{ + unsigned _widthInBits; ///< Width (bits) of the register. Currently, the width + ///< must be a multiple of 8. + REG _correspondingGeneric; ///< The corresponding "generic" register ID, if any. Or, + ///< REG_INVALID, if there is no corresponding generic. + ///< There should be exactly one register that corresponds + ///< to each generic. (E.g. there should be exactly one + ///< REG_PC register.) + bool _accelerated; ///< If TRUE, the back-end automatically sends the value + ///< of this register whenever the target program stops. + ///< This saves a protocol request if the front-end + ///< usually needs this register when the target stops. + const char* _name; ///< The textual name of the register + int _gccId; ///< The GCC/DWARF compiler registers number for this + ///< register (used for EH frame and other compiler + ///< information that is encoded in the executable files). +}; + + +/*! + * This function must be called before using any other function in the debugger-protocol + * library. Typically, it is called once from the application's start-up code, but it + * is legal to call it more than once so long as each call has a matching call to + * Cleanup(). The Initialize() and Cleanup() functions have no internal locking, so + * callers must provide synchronization if they are called from multi-threaded code. + * + * @param[in] flags A bit-mask of flags indicating which library features the caller + * intends to use. + * + * @return TRUE on success. + */ +DEBUGGER_PROTOCOL_API bool Initialize(INITIALIZE_FLAGS flags); + +/*! + * This function should be called to clean up resources when the caller is done using + * the debugger-protocol library. The Initialize() and Cleanup() functions have no + * internal locking, so callers must provide synchronization if they are called from + * multi-threaded code. + * + * @param[in] flags The same flags that were passed to the matching call to + * Initialize(). + * + * @return TRUE on success. + */ +DEBUGGER_PROTOCOL_API bool Cleanup(INITIALIZE_FLAGS flags); + + +/*! + * Represents a communication endpoint for a debugger front-end. + * + * Clients using this interface need to be aware that the debugger alternates between + * two modes: "run mode" and "command mode". When the target application is running, + * the debugger is in "run mode", and most attempts to send commands to the target + * will fail. Once the target application stops, the debugger enters "command mode" + * and the user can send commands to the target process. + */ +class /**/ IFRONTEND +{ +public: + /*! + * If this front-end is a server, retrieve the communication information that + * the back-end needs in order to connect. + * + * @param[out] info Receives the connection information. + * + * @return TRUE on success (only if the front-end is a server). + */ + virtual bool GetServerInfo(TCP_INFO *info) = 0; + + /*! + * The front-end and back-end must communicate with each other using + * the same set of target registers. The front-end calls this method + * to define the register set that it will use. The back-end should call + * IBACKEND::SetRegisters() with the same set of registers. + * + * This method must be called before the front-end calls any of the + * following ICOMMANDS methods: + * + * - GetRegisterValue() + * - SetRegisterValue() + * - ContinueThreads() + * - Any of the GetThreadStop*() methods + * - GetThreadExitStatus() + * + * A front-end can dynamically choose the register set if the back-end + * supports the feature BACKEND_FEATURE_TARGET_DESCRIPTION. To do this, the + * front-end can call ITARGET_DESCRIPTION::GetTargetDescription() to query + * the supported registers, and then dynamically create \a regs based on the + * returned description. Front-ends that support this ability should define + * the feature FRONTEND_FEATURE_DYNAMIC_REGISTERS. + * + * @param[in] regs Describes the register set to use when + * communicating with the back-end. This + * can either be a predefined description from + * "debugger-protocol/regs-XXX.hpp" or it can + * be a custom description. + * @param[in] nregs The number of entries in \a regs. + * + * @return TRUE on success. FALSE if there is an error with \a regs or + * if registers have already been accessed via one of the ICOMMANDS + * methods listed above. + */ + virtual bool SetRegisters(const REG_DESCRIPTION *regs, unsigned nregs) = 0; + + /*! + * If this front-end is a client, connect to a back-end which must be a server. + * This method should not be called for server-like front-ends. + * + * After connecting, the target process is stopped and the debugger is in + * "command mode". + * + * @param[in] ip The IP address of the machine running the back-end. + * @param[in] port The port number for the back-end. + * + * @return On success, an object that can be used to send commands to the back-end. + * NULL on failure. + */ + virtual ICOMMANDS *ConnectToServer(const std::string &ip, int port) = 0; + + /*! + * If this front-end is a server, wait for a connection from a back-end which + * must be a client. This method should not be called for client-like front-ends. + * + * After connecting, the target process is stopped and the debugger is in + * "command mode". + * + * @param[in] timeout A timeout value (milliseconds). This method fails if + * the back-end doesn't connect in the timeout period. + * If \a timeout is zero, wait forever. + * + * @return On success, an object that can be used to send commands to the back-end. + * NULL on failure. + */ + virtual ICOMMANDS *ConnectFromClient(unsigned timeout) = 0; + + /*! + * Tells the type of the back-end client. This is only useful after + * a successful call to ConnectToServer() or ConnectFromClient(). + * + * @return The type of the back-end client, or BACKEND_TYPE_UNKNOWN if not + * connected. + */ + virtual BACKEND_TYPE GetBackEndType() = 0; + + /*! + * Tells the set of features supported by the back-end. This is only useful after + * a successful call to ConnectToServer() or ConnectFromClient(). + * + * @return If called after successfully connecting to the back-end, returns a + * bitwise 'or' of features supported by the back end. If called before + * a successful connect, returns BACKEND_FEATURE_NONE. + */ + virtual BACKEND_FEATURES GetBackEndFeatures() = 0; + + /*! + * @return If called after successfully connecting to the back-end, returns the + * O/S type of the target process. + */ + virtual OS GetBackEndOs() = 0; + + /*! + * This method should be called when the debugger is in "run mode" to check for + * notifications from the back-end. If \a block is TRUE, this call waits until + * a notification is sent from the back-end. If \a block is FALSE, this call + * checks for a notification and returns immediately. + * + * When there is a notification, this methods calls exactly one of the methods + * in \a receiver to indicate why the target stopped or exited. + * + * @param[in] receiver An object that receives notifications from + * the debugger back-end. + * @param[in] block If TRUE, call blocks until there is a notification. + * + * @return TRUE on success, FALSE on communication error. Note that this method + * returns TRUE even when there is no notification (e.g. when \a block + * is FALSE or when InterruptNotificationThread() interrupts this method). + */ + virtual bool HandleNotifications(INOTIFICATIONS *receiver, bool block) = 0; + + /*! + * Interrupt the thread executing the HandleNotifications() method, causing it to + * return with TRUE status. The InterruptNotificationThread() method returns + * immediately, without waiting for HandleNotifications() to return. + * + * Calling this method enables a "sticky" interrupt flag. Therefore, if no thread + * is blocked in HandleNotifications(), the next call to that method will return + * immediately. The sticky interrupt flag is cleared by calling ClearInterruptFlag() + * or ICOMMANDS::ContinueThreads(). + * + * The following two usage models are supported. The front-end may call this method + * from a separate thread while another thread is blocked in HandleNotifications(). + * Or, when used on Unix, the front-end thread that is blocked in HandleNotifications() + * may set up a signal handler that calls InterruptNotificationThread(). + */ + virtual void InterruptNotificationThread() = 0; + + /*! + * Clears the "sticky" interrupt flag that is set by InterruptNotificationThread(). + * This method has no effect if the flag is not set. + */ + virtual void ClearInterruptFlag() = 0; + + /*! + * The front-end object may keep some information about the state of the target process + * cached in order to get this information more quickly in the future. The front-end + * object will automatically invalidate this cached information whenever the target + * resumes execution, so normally clients using the front-end don't need to be aware + * of this caching. However, if the client changes the target state in a way that + * the front-end can't observe, the client should call InvalidateCachedState() to + * explicitly invalidate any cached information. + * + * One scenario where this is required is when the client uses ICUSTOM_COMMANDS to + * change the state of the target process. Since the front-end object doesn't know + * the side-effect of commands sent this way, the client is responsible for calling + * InvalidateCachedState() if the custom command changes the target's state. + * + * @param[in] thread Tells which thread's information to invalidate. This parameter + * may be ignored, depending on the value of \a flags. + * @param[in] flags Bit-mask of flags telling what information to invalidate. + */ + virtual void InvalidateCachedState(THREAD thread, INVALIDATE_FLAGS flags) = 0; + + /*! + * Register a listener that receives log messages about the debugger protocol. This + * is useful for debugging the debugger-protocol itself. + * + * @param[in] receiver Object that receives notifications. + */ + virtual void AddDebugLogReceiver(ILOG_NOTIFICATIONS *receiver) = 0; + + /*! + * Unregister a listener, so it no longer receives log messages. + * + * @param[in] receiver Object previously registered via AddDebugLogReceiver(). + */ + virtual void RemoveDebugLogReceiver(ILOG_NOTIFICATIONS *receiver) = 0; + + /*! + * The destructor automatically disconnects from the back-end and unregisters any + * listeners registered via AddDebugLogReceiver(). + */ + virtual ~IFRONTEND() {} +}; + +/*! + * Create a new debugger front-end communication endpoint, which uses the GDB + * remote protocol over a TCP transport. A front-end typically connects to a + * back-end in another process. Either the front-end or the back-end must act + * as a communication "server" and the other must act as a "client". The + * server establishes the communication channel and waits for the client to + * connect to it. + * + * Before calling this function, Initialize() must be called with the flag + * INITIALIZE_FLAG_TCP. + * + * @param[in] isServer Tells if the front-end acts as a server. + * @param[in] type The type of the front-end client. + * @param[in] features A bitwise 'or' of features that the front-end supports. + * @param[in] options A bitwise 'or' of options that affect the front-end. + * + * @return A new debugger front-end object. + */ +DEBUGGER_PROTOCOL_API IFRONTEND *CreateFrontEnd(bool isServer, FRONTEND_TYPE type, + FRONTEND_FEATURES features, ENDPOINT_OPTIONS options); + + +/*! + * Represents a communication endpoint for a debugger back-end. + * + * The IBACKEND object has only limited thread safety. Aside from the following cases, + * the caller must ensure that only one thread at a time calls into the IBACKEND object: + * + * - It is permissible for a thread to call IBACKEND::InterruptCommandThread() while + * another thread calls any IBACKEND method. + * - It is permissible for a thread to call any INOTIFICATIONS method while another + * thread calls any IBACKEND method. + */ +class /**/ IBACKEND +{ +public: + /*! + * If this back-end is a server, retrieve the communication information that + * the front-end needs in order to connect. + * + * @param[out] info Receives the connection information. + * + * @return TRUE on success (only if the back-end is a server). + */ + virtual bool GetServerInfo(TCP_INFO *info) = 0; + + /*! + * Tell the backend to disable some features. + * Note that this must be called before the frontend was connected to + * this backend. + * + * @param[out] maskFeatures Mask of backend features to disable + * + */ + virtual void MaskFeatures(BACKEND_FEATURES maskFeatures) = 0; + + /*! + * This method defines the register set used to communicate with the + * front-end. It must be called before calling HandleCommands(). + * + * If a back-end does NOT support BACKEND_FEATURE_TARGET_DESCRIPTION, + * it can call SetRegisters() even before connecting with the front-end. + * + * If a back-end DOES support BACKEND_FEATURE_TARGET_DESCRIPTION, it + * should wait until after connecting with the front-end. Once connected, + * query the front-end's feature with GetFrontEndFeatures() and see if + * it supports FRONTEND_FEATURE_DYNAMIC_REGISTERS. If not, call + * SetRegisters() with a default set of registers. If it does, call + * SetRegisters() where \a regs matches the target description sent + * to the front-end. + * + * @param[in] regs Describes the register set to use when + * communicating with the front-end. This + * can either be a predefined description from + * "debugger-protocol/regs-XXX.hpp" or it can + * be a custom description. + * @param[in] nregs The number of entries in \a regs. + * + * @return TRUE on success. FALSE if there is an error with \a regset + * or if SetRegisters() is called too late. + */ + virtual bool SetRegisters(const REG_DESCRIPTION *regs, unsigned nregs) = 0; + + /*! + * Retrieve an interface that can be used to send notifications to the debugger + * front-end. This method may be called even before the back-end is connected + * to a front-end. + * + * @return An interface that can be used to send notifications to the debugger + * front-end. + */ + virtual INOTIFICATIONS *GetNotificationListener() = 0; + + /*! + * This method is the first step when connecting to a front-end from a client-like + * back-end. When you use this method, the front-end must be a server. The + * connection sequence is as follows: + * + * - Call ConnectToServer() to connect with the front-end. + * + * - Tell the target process to stop and then call WaitForStopAfterConnect(). + * The target process should call an INOTIFICATIONS method to indicate + * that it has stopped or exited. If the target process is already stopped, + * you may call INOTIFICATIONS before calling WaitForStopAfterConnect(). + * + * - This is a good time to do any initialization that depends on the type + * or features of the front-end. In particular, this is a good time to call + * SetRegisters() if you have not already done so. + * + * - Call HandleCommands() to handle commands from the front-end. + * + * @param[in] ip The IP address of the machine running the front-end. + * @param[in] port The port number for the front-end. + * + * @return TRUE on success, FALSE on communication error. + */ + virtual bool ConnectToServer(const std::string &ip, int port) = 0; + + /*! + * This method is the first step when connecting to a front-end from a server-like + * back-end. When you use this method, the front-end must be a client. The + * connection sequence is as follows: + * + * - Call ConnectFromClient() to connect with the front-end. + * + * - Tell the target process to stop and then call WaitForStopAfterConnect(). + * The target process should call an INOTIFICATIONS method to indicate + * that it has stopped or exited. If the target process is already stopped, + * you may call INOTIFICATIONS before calling WaitForStopAfterConnect(). + * + * - This is a good time to do any initialization that depends on the type + * or features of the front-end. In particular, this is a good time to call + * SetRegisters() if you have not already done so. + * + * - Call HandleCommands() to handle commands from the front-end. + * + * This method might block indefinitely while waiting for the front-end to + * connect, but it can be interrupted when another thread calls any of the + * following methods: + * + * - InterruptCommandThread() + * - INOTIFICATIONS::NotifyTerminatedExit() + * - INOTIFICATIONS::NotifyTerminatedEvent() + * + * After being interrupted, you may call ConnectFromClient() again to resume + * waiting for the front-end to connect. + * + * @return RESULT_OK on success, RESULT_ERROR on communication error, or + * RESULT_INTERRUPTED if interrupted. + */ + virtual RESULT ConnectFromClient() = 0; + + /*! + * Tells the type of the front-end client. This is only useful after connecting + * to the front-end via ConnectToServer() or ConnectFromClient(). + * + * @return The type of the front-end client, or FRONTEND_TYPE_UNKNOWN if not + * connected. + */ + virtual FRONTEND_TYPE GetFrontEndType() = 0; + + /*! + * Tells the set of features supported by the front-end. This is only useful after + * connecting to the front-end via ConnectToServer() or ConnectFromClient(). + * + * @return If called after successfully connecting to the front-end, returns a + * bitwise 'or' of features supported by the front-end. If called before + * a successful connect, returns FRONTEND_FEATURE_NONE. + */ + virtual FRONTEND_FEATURES GetFrontEndFeatures() = 0; + + /*! + * This is the second step when connecting the back-end to a front-end. See + * ConnectToServer() or ConnectFromClient() for the connection sequence. This + * method blocks until one of the following occurs: + * + * - The target process stops or exits and calls one of the INOTIFICATIONS methods. + * - Another thread calls InterruptCommandThread(). + * - The timeout expires. + * + * If this method is interrupted via InterruptCommandThread(), you may call + * WaitForStopAfterConnect() again to resume waiting for the application to stop. + * + * @param[in] timeout Timeout period (milliseconds). The value zero means wait + * forever. + * + * @return RESULT_OK if the process stops or exits, RESULT_ERROR on timeout, or + * RESULT_INTERRUPTED if interrupted. + */ + virtual RESULT WaitForStopAfterConnect(unsigned timeout) = 0; + + /*! + * This is the last step when connecting the back-end to a front-end. See + * ConnectToServer() or ConnectFromClient() for the connection sequence. This + * method enters a loop that handles commands sent from the front-end. Since + * it doesn't return until the debugger session completes, it is typically called + * from a dedicated thread. + * + * This method returns when one of the following occurs: + * + * - The process exits and sends a notification via INOTIFICATIONS. + * If the process is already exited when HandleCommands() is called, + * this method returns immediately. + * + * - The front-end kills the target process. + * + * - The front-end detaches from the target process. + * + * - Another thread calls InterruptCommandThread(). + * + * - There is a communication failure with the front-end (e.g. the + * front-end terminates unexpectedly). + * + * If this method is interrupted via InterruptCommandThread(), you may call + * HandleCommands() again to resume handling commands from the front-end. + * + * @param[in] receiver An object that receives and responds to commands + * from the debugger front-end. + * + * @return A return code which tells why the debugger session completed. + */ + virtual SESSION_RESULT HandleCommands(ICOMMANDS *receiver) = 0; + + /*! + * Reset the debugger communication channel after a fork. If the debugger + * back-end process does a fork(), this must be called by the child of the + * fork(). Since forking is specific to Unix hosts, this method is only + * relevant on Unix. + * + * If this is a server-like back-end, the \a followChild parameter controls + * whether a new debugger communication channel is created for the child process. + * If \a followChild is TRUE, the child process may connect to a new front-end + * via ConnectFromClient(). Note that the back-end in the child process is + * distinct from the back-end in the parent process, and the child process + * should call GetServerInfo() to get the new connection information. + * + * Client-like back-ends do not support the \a followChild parameter, and + * passing TRUE will result in an error return from ResetAfterFork(). + * + * Regardless of the setting of \a followChild, the child process should + * eventually call the ~IBACKEND() destructor in order to clean up resources. + * + * Note that there are generally no multi-thread safety issues when calling + * ResetAfterFork() because a Unix process has only a single thread after a fork(). + * + * @param[in] followChild If TRUE, a new communication endpoint is created + * in the child process. If FALSE, the endpoint + * is disabled in the child process. + */ + virtual bool ResetAfterFork(bool followChild) = 0; + + /*! + * Interrupt another thread blocked in ConnectFromClient(), WaitForStopAfterConnect(), + * or HandleCommands(). The InterruptCommandThread() method returns immediately, + * without waiting for the blocked thread to return. + */ + virtual void InterruptCommandThread() = 0; + + /*! + * If this is a server-like back-end, you may call this method to reset the back-end, + * allowing it to connect to a new front-end. This is typically called after HandleCommands() + * returns with SESSION_RESULT_DETACHED in order to allow the back-end to connect to a + * new front-end (or to reconnect to the same front-end). + * + * This method does not change the back-end's connection information, so GetServerInfo() + * will return the same information as before this call. + * + * This method must be serialized with any other thread's usage of this IBACKEND object. + * No other thread may call InterruptCommandThread() or any INOTIFICATIONS method while + * this thread calls ResetServerConnection(). + * + * @return TRUE on success. + */ + virtual bool ResetServerConnection() = 0; + + /*! + * Register a listener that receives log messages about the debugger protocol. This + * is useful for debugging the debugger-protocol itself. + * + * @param[in] receiver Object that receives notifications. + */ + virtual void AddDebugLogReceiver(ILOG_NOTIFICATIONS *receiver) = 0; + + /*! + * Unregister a listener, so it no longer receives log messages. + * + * @param[in] receiver Object previously registered via AddDebugLogReceiver(). + */ + virtual void RemoveDebugLogReceiver(ILOG_NOTIFICATIONS *receiver) = 0; + + /*! + * If there is an active connection to the front-end when the destructor is called, + * the connection is ungracefully closed. + */ + virtual ~IBACKEND() {} +}; + +/*! + * Create a new debugger back-end communication endpoint, which uses the GDB + * remote protocol over a TCP transport. A back-end typically connects to a + * front-end in another process. Either the front-end or the back-end must act + * as a communication "server" and the other must act as a "client". The + * server establishes the communication channel and waits for the client to + * connect to it. + * + * Before calling this function, Initialize() must be called with the flag + * INITIALIZE_FLAG_TCP. + * + * @param[in] isServer Tells if the back-end acts as a server. + * @param[in] os The O/S type of the target program. + * @param[in] type The type of the back-end client. + * @param[in] features A bitwise 'or' of features supported by this back-end. + * @param[in] options A bitwise 'or' of options that affect the back-end. + * @param[in] props Debugger connection properties (depends on the debugger type). + * + * @return A new debugger back-end object. + */ +DEBUGGER_PROTOCOL_API IBACKEND *CreateBackEnd(bool isServer, OS os, BACKEND_TYPE type, + BACKEND_FEATURES features, ENDPOINT_OPTIONS options, const DEBUGGER_CONNECTION_PROPERTIES& props); + + +/*! + * This interface represents the basic commands that a debugger front-end can send to + * the back-end. Most of the methods in this interface may only be called when the + * debugger is in "command mode", when all threads in the target process are stopped. + * There are two different usage models. + * + * When used by a debugger front-end, the DEBUGGER_PROTOCOL library implements this + * interface, and the front-end makes calls to it in order to send commands to the + * back-end. In this model, the front-end should expect that a call to a method in this + * interface may fail due to a communication error with the back-end. The "Error Returns" + * section of each method describes this. + * + * When used by a back-end, the back-end implements this interface and the DEBUGGER_PROTOCOL + * library calls it in order to notify the back-end of commands received from the front-end. + * The DEBUGGER_PROTOCOL library will never incorrectly call a method when not in "command + * mode", so the back-end need not check for this error condition. + */ +class /**/ ICOMMANDS +{ +public: + /*! + * @return The current number of threads in the application. + * + * @par Error Returns (when used by debugger front-end) + * Returns zero on communication error, or if called during "run mode". + */ + virtual unsigned GetThreadCount() = 0; + + /*! + * Retrieves the ID of a thread in the application. + * + * @param[in] iThread An index in the range [0, n-1], where \e n is the value + * returned by GetThreadCount(). + * + * @return The ID of the indexed thread, zero if \a iThread is out of range. + * + * @par Error Returns (when used by debugger front-end) + * Returns zero if called during "run mode". + */ + virtual THREAD GetThreadId(unsigned iThread) = 0; + + /*! + * Tells if a thread still exists in the application. + * + * @param[in] thread ID of a thread. + * + * @return TRUE if the thread still exists. + * + * @par Error Returns (when used by debugger front-end) + * Returns FALSE on communication error, or if called during "run mode". + */ + virtual bool DoesThreadExist(THREAD thread) = 0; + + /*! + * Tells how a thread should continue on the next call to ContinueThreads(). + * These settings remain in effect only until the next call to ContinueThreads(). + * Any thread with no explicit setting behaves as though \a mode is CONTINUE_MODE_FROZEN. + * + * @param[in] thread ID of a thread. + * @param[in] mode Tells how to continue the thread. + * @param[in] evnt If \a mode is CONTINUE_MODE_GO_NEW_EVENT or CONTINUE_MODE_STEP_NEW_EVENT, + * \a evnt specifies the new event. + * @param[in] szEvntInfo Size (bytes) of the \a evntInfo structure, if that parameter is non-NULL. + * @param[in] evntInfo If the back-end supports BACKEND_FEATURE_EVENT_INFO and \a mode is + * CONTINUE_MODE_GO_NEW_EVENT or CONTINUE_MODE_STEP_NEW_EVENT, \a evntInfo + * gives additional information for the new event. If \a evntInfo is + * NULL, the back-end chooses a "generic" event of type \a evnt. + * + * @return TRUE on success. + * + * @par Error Returns (when used by debugger front-end) + * Returns FALSE if: + * - Communication error with back-end. + * - Called during "run mode". + * - The \a evntInfo parameter is non-NULL and the back-end does not support + * BACKEND_FEATURE_EVENT_INFO. + * - The \a mode is CONTINUE_MODE_GO_NEW_EVENT or CONTINUE_MODE_STEP_NEW_EVENT, + * and the back-end does not support BACKEND_FEATURE_CONTINUE_WITH_NEW_EVENT. + */ + virtual bool SetContinueMode(THREAD thread, CONTINUE_MODE mode, EVENT evnt, + size_t szEvntInfo, const EVENT_INFO *evntInfo) = 0; + + /*! + * Let all threads continue execution according to the settings made via + * SetContinueMode(). It is an error to call this method if all threads + * are set to CONTINUE_MODE_FROZEN. This method returns immediately, without + * waiting for the threads to stop again. Calling this method puts the + * debugger in "run mode". When the target process stops again, the debugger + * front-end is notified via one of the INOTIFICATIONS methods. + * + * @return TRUE on success. + * + * @par Error Returns (when used by debugger front-end) + * Returns FALSE on communication error, of if called during "run mode". + */ + virtual bool ContinueThreads() = 0; + + /*! + * Tells why a thread stopped. If a thread was frozen for the last call to ContinueThreads(), + * its stop reason remains unchanged. + * + * @param[in] thread The ID of a thread. + * @param[out] reason Tells why the thread stopped. + * + * @return TRUE on success. + * + * @par Error Returns (when used by debugger front-end) + * Returns FALSE on communication error, or if called during "run mode". + */ + virtual bool GetThreadStopReason(THREAD thread, STOP_REASON *reason) = 0; + + /*! + * Tells the O/S event that caused a thread to stop. + * + * @param[in] thread The ID of a thread. + * @param[out] evnt Receives the O/S specific event that caused the thread + * to stop. + * @param[in] szEvntInfo Size (bytes) of the \a evntInfo structure if that parameter + * is non-NULL. + * @param[out] evntInfo If the back-end supports BACKEND_FEATURE_EVENT_INFO, + * \a evntInfo may be non-NULL, in which case it receives + * additional information about the event. + * + * @return TRUE on success. + * + * @par Error Returns (when used by debugger front-end) + * Returns FALSE if: + * - Communication error with back-end. + * - Called during "run mode". + * - The \a thread did not stop with STOP_REASON_EVENT. + * - The \a evntInfo parameter is non-NULL and the back-end does not + * support BACKEND_FEATURE_EVENT_INFO. + */ + virtual bool GetThreadStopEvent(THREAD thread, EVENT *evnt, size_t szEvntInfo, + EVENT_INFO *evntInfo) = 0; + + /*! + * This is the only method that may be called during "run mode". It tells + * the target process to stop, but does not wait for it to do so. When the + * target does stop, the debugger front-end is notified via one of the + * INOTIFICATIONS methods. + * + * This method has no effect if called during "command mode". + * + * When called from a debugger front-end, the following two usage models are + * supported. The front-end may call this method from a separate thread while + * another thread is blocked in IFRONTEND::HandleNotifications(). Or, when used + * on Unix, the front-end thread that is blocked in IFRONTEND::HandleNotifications() + * may set up a signal handler that calls Break(). + * + * @return TRUE on success. + * + * @par Error Returns (when used by debugger front-end) + * Returns FALSE on communication error. + */ + virtual bool Break() = 0; + + /*! + * Force all threads in the target application to terminate, killing the process. + * There is NO notification sent via INOTIFICATIONS. + * + * @return TRUE on success. + * + * @par Error Returns (when used by debugger front-end) + * Returns FALSE on communication error, or if called during "run mode". + */ + virtual bool Kill() = 0; + + /*! + * Detach the debugger from the target application, and resume all threads. Threads no + * longer stop at breakpoints or notify the debugger front-end when an O/S event is received, + * etc. + * + * @return TRUE on success. + * + * @par Error Returns (when used by debugger front-end) + * Returns FALSE on communication error, or if called during "run mode". + */ + virtual bool Detach() = 0; + + /*! + * Get the value of a register. + * + * @param[in] thread An ID for a thread. + * @param[in] reg An ID for a register. When called from a debugger front-end + * \a reg may be a generic register ID. However, the + * DEBUGGER_PROTOCOL library never passes a generic ID, so the + * back-end need not support this. + * @param[out] value Receives the register's value. + * + * @return TRUE on success. + * + * @par Error Returns (when used by debugger front-end) + * Returns FALSE on communication error, or if called during "run mode". + */ + virtual bool GetRegisterValue(THREAD thread, REG reg, UTIL::REGVALUE *value) = 0; + + /*! + * Set the value of a register. + * + * @param[in] thread An ID for a thread. + * @param[in] reg An ID for a register. When called from a debugger front-end + * \a reg may be a generic register ID. However, the + * DEBUGGER_PROTOCOL library never passes a generic ID, so the + * back-end need not support this. + * @param[in] value The new value for the register. + * + * @return TRUE on success. + * + * @par Error Returns (when used by debugger front-end) + * Returns FALSE on communication error, or if called during "run mode". + */ + virtual bool SetRegisterValue(THREAD thread, REG reg, const UTIL::REGVALUE &value) = 0; + + /*! + * Get the value of a memory region. + * + * @param[in] range Address range of the memory region. + * @param[out] value Value and size of the memory range (target byte order). The + * size may be less than the specified range. + * + * @return TRUE on success. + * + * @par Error Returns (when used by debugger front-end) + * Returns FALSE on communication error, or if called during "run mode". + */ + virtual bool GetMemoryValue(const UTIL::ANYRANGE &range, UTIL::DATA *value) = 0; + + /*! + * Set the value of a memory range. + * + * @param[in] addr Starting address of the memory range. + * @param[in] value Value and size of the data to write at that memory + * range (target byte order). + * @param[out] sizeWritten Receives the number of bytes successfully written, + * which might be less than the size of \a value. + * + * @return TRUE on success. + * + * @par Error Returns (when used by debugger front-end) + * Returns FALSE on communication error, or if called during "run mode". + */ + virtual bool SetMemoryValue(ANYADDR addr, const UTIL::DATA &value, size_t *sizeWritten) = 0; + + /*! + * A back-end can provide some optional functionality through interfaces returned + * by this method. To define an optional interface, the back-end should also define + * the corresponding BACKEND_FEATURE for that interface. + * + * @param[in] id An ID that tells which interface to return. + * + * @return A pointer to an object that implements the requested interface. Callers + * should cast this pointer to the appropriate interface. If the back-end + * does not implement the interface, this method returns NULL. + */ + virtual void *GetInterface(INTERFACE_ID id) = 0; + +protected: + virtual ~ICOMMANDS() {} ///< Do not call delete on ICOMMANDS. +}; + + +/*! + * An optional interface that can be returned from ICOMMANDS::GetInterface() if the + * back-end defines BACKEND_FEATURE_BREAKPOINTS. This interface allows a front-end + * to set breakpoints in a target-independent way. The back-end decides how to implement + * the breakpoint and notifies the front-end via STOP_REASON_BREAKPOINT. + */ +class /**/ IBREAKPOINTS +{ +public: + /*! + * Ask the back-end to set a breakpoint. + * + * The breakpoint may have either hardware or software semantics. A non-zero + * value for \a bpSize indicates a software semantic breakpoint. This type of + * breakpoint behaves as though the instruction at address \a addr was overwritten + * by a trap instruction whose size is \a bpSize bytes. After hitting a software + * semantic breakpoint, the PC points \a bpSize bytes after the breakpoint location. + * When resuming, the debugger front-end should clear the breakpoint, back up the + * PC by \a bpSize bytes, and single-step over the breakpoint location. + * + * A zero value of \a bpSize indicates a hardware semantic breakpoint. After + * hitting this type of breakpoint, the PC points at the breakpoint location. The + * debugger front-end may resume from a hardware semantic breakpoint simply by + * single-stepping or continuing. It need not clear the breakpoint first. + * + * At most, only one breakpoint may be set at an address. If there is a previous + * breakpoint at \a addr, SetBreakpoint() overwrites it. + * + * @param[in] addr Address of the breakpoint. + * @param[in] bpSize If zero, breakpoint has hardware semantics. Otherwise, + * it has software semantics, and the PC is bumped \a bpSize + * bytes forward when the breakpoint is triggered. + * @param[out] wasSet Receives TRUE if the breakpoint was successfully set. + * + * @return TRUE on success. + * + * @par Error Returns (when used by debugger front-end) + * Returns FALSE on communication error, or if called during "run mode". + */ + virtual bool SetBreakpoint(ANYADDR addr, size_t bpSize, bool *wasSet) = 0; + + /*! + * Ask the back-end to clear a breakpoint that was previously set via SetBreakpoint(). + * + * @param[in] addr Address of the breakpoint. + * @param[out] wasCleared Receives TRUE if \a addr corresponds to a previous + * breakpoint and it was successfully cleared. + * + * @return TRUE on success. + * + * @par Error Returns (when used by debugger front-end) + * Returns FALSE on communication error, or if called during "run mode". + */ + virtual bool ClearBreakpoint(ANYADDR addr, bool *wasCleared) = 0; + +protected: + virtual ~IBREAKPOINTS() {} ///< Do not call delete on IBREAKPOINTS. +}; + +/*! + * An optional interface that can be returned from ICOMMANDS::GetInterface() if the + * back-end defines BACKEND_FEATURE_CUSTOM_BREAKPOINTS. Back-ends that support this + * interface support the concept of a "custom breakpoint", a breakpoint that the + * back-end can decide to trigger based on some condition. The back-end notifies + * the front-end that such a breakpoint has triggered via STOP_REASON_CUSTOM_BREAK. + * The front-end can determine why the breakpoint triggered by calling + * ICUSTOM_BREAKPOINTS::GetThreadStopMessage(). Typically, a front-end can enable or + * disable custom a breakpoint by sending a custom command via ICUSTOM_COMMANDS. + */ +class /**/ ICUSTOM_BREAKPOINTS +{ +public: + /*! + * Tells why a thread triggered a "custom breakpoint". This is useful for threads + * that stop with STOP_REASON_CUSTOM_BREAK. The format of \a msg is not defined by + * this API (it can be any format that the front-end and back-end agree upon). + * + * If the front-end is GDB, \a msg is a string with no trailing newline character, + * which GDB displays to the user when process stops. There can be embedded newline + * characters in \a msg to print a multi-line description. + * + * @param[in] thread The ID of a thread. + * @param[out] msg If the thread stopped with STOP_REASON_CUSTOM_BREAK, \a msg + * describes the reason the breakpoint triggered. If the thread + * did not stop with STOP_REASON_CUSTOM_BREAK, \a msg is empty. + * + * @return TRUE on success. + * + * @par Error Returns (when used by debugger front-end) + * Returns FALSE on communication error, or if called during "run mode". + */ + virtual bool GetThreadStopMessage(THREAD thread, std::string *msg) = 0; + +protected: + virtual ~ICUSTOM_BREAKPOINTS() {} ///< Do not call delete on ICUSTOM_BREAKPOINTS. +}; + +/*! + * An optional interface that can be returned from ICOMMANDS::GetInterface() if the + * back-end defines BACKEND_FEATURE_CUSTOM_COMMANDS. + */ +class /**/ ICUSTOM_COMMANDS +{ +public: + /*! + * Ask the back-end to execute a custom command. The formats of \a cmd and + * \a response are not defined by this API (they can be any format that the + * front-end and back-end agree upon). + * + * When the front-end is GDB, \a cmd is the text string that the user types + * after the "monitor" command and \a response is displayed verbatim as a + * response to the command. + * + * @param[in] thread The ID of the debugger's current "focus" thread. + * @param[in] cmd The command string. + * @param[out] cmdRecognized Receives TRUE if the back-end recognizes \a cmd. + * If the back-end feels the command has some sort + * of semantic error, it should set \a cmdRecognized + * to TRUE and set \a response to a description of + * the error. + * @param[out] response Receives a response to the command. + * + * @return TRUE on success. + * + * @par Error Returns (when used by debugger front-end) + * Returns FALSE on communication error, or if called during "run mode". + */ + virtual bool DoCustomCommand(THREAD thread, const std::string &cmd, bool *cmdRecognized, + std::string *response) = 0; + +protected: + virtual ~ICUSTOM_COMMANDS() {} ///< Do not call delete on ICUSTOM_COMMANDS. +}; + +/*! + * An optional interface that can be returned from ICOMMANDS::GetInterface() if the + * back-end defines BACKEND_FEATURE_KILL_WITH_NOTIFICATION. + */ +class /**/ IKILL_WITH_NOTIFICATION +{ +public: + /*! + * Tell the target application to terminate. + * + * This method returns immediately, putting the debugger in "run mode". When + * the target process actually terminates, the debugger front-end is notified + * via INOTIFICATIONS::NotifyTerminatedExit(). + * + * @param[in] code The application terminates with this exit code. + * + * @return TRUE on success. + * + * @par Error Returns (when used by debugger front-end) + * Returns FALSE on communication error, or if called during "run mode". + */ + virtual bool KillWithNotification(INT64 code) = 0; + +protected: + virtual ~IKILL_WITH_NOTIFICATION() {} ///< Do not call delete on IKILL_WITH_NOTIFICATION. +}; + +/*! + * An optional interface that can be returned from ICOMMANDS::GetInterface() if the + * back-end defines BACKEND_FEATURE_TARGET_DESCRIPTION. + */ +class /**/ ITARGET_DESCRIPTION +{ +public: + /*! + * Ask the back-end for a description of the target machine's features. The format of the + * returned information is not defined by this API (it can be any format that the front-end + * and back-end agree upon). However, the intent is that the information should describe + * the target machine's registers, and possibly other information. + * + * When the front-end is GDB, \a name is the name of a "target feature" XML document. + * By convention, the first name that GDB asks for is "target.xml". However, that + * document may include other documents, and GDB will make subsequent calls where + * \a name references the included documents. + * + * @param[in] name Name of the description document to return. + * @param[out] content On success, receives the requested description. If the + * document \a name is unknown, \a content is set + * to be empty. + * + * @return TRUE on success. + * + * @par Error Returns (when used by debugger front-end) + * Returns FALSE on communication error, or if called during "run mode". + */ + virtual bool GetTargetDescription(const std::string &name, UTIL::DATA *content) = 0; + +protected: + virtual ~ITARGET_DESCRIPTION() {} ///< Do not call delete on ITARGET_DESCRIPTION. +}; + +/*! + * An optional interface that can be returned from ICOMMANDS::GetInterface() if the + * back-end defines BACKEND_FEATURE_EVENT_INTERCEPTION. + */ +class /**/ IEVENT_INTERCEPTION +{ +public: + /*! + * Notifies the back-end that the application need not notify the front-end if the + * application receives an O/S specific event. Instead, the application can handle + * the event as it normally would. This setting takes effect on the next call to + * ContinueThreads(). These preferences are "sticky", so they remain in effect until + * explicitly changed. + * + * Some targets may not support this request, or may only support it for certain + * events. The back-end is free to ignore the request and provide a notification for + * the event anyway. + * + * @param[in] evnt An O/S specific event. + * + * @return TRUE on success. + * + * @par Error Returns (when used by debugger front-end) + * Returns FALSE if called during "run mode". + */ + virtual bool MarkEventNotIntercepted(EVENT evnt) = 0; + + /*! + * Notifies the back-end that the application should stop and notify the + * front-end whenever it receives any of this target's O/S events. This is + * the default behavior, so this method is only needed to override a previous + * setting made via MarkEventNotIntercepted(). This setting takes effect on the + * next call to ContinueThreads(). + * + * Some targets may not support intercepting all events. In such cases, this + * method applies only to those events that can be intercepted. + * + * @return TRUE on success. + * + * @par Error Returns (when used by debugger front-end) + * Returns FALSE if called during "run mode". + */ + virtual bool MarkAllEventsIntercepted() = 0; + +protected: + virtual ~IEVENT_INTERCEPTION() {} ///< Do not call delete on IEVENT_INTERCEPTION. +}; + +/*! + * An optional interface that can be returned from ICOMMANDS::GetInterface() if the + * back-end defines BACKEND_FEATURE_IMAGE_EXTENSIONS. + */ +class /**/ IIMAGE_EXTENSIONS +{ +public: + /*! + * Set the notifications that will be triggered when the target application loads or + * unloads images. By default, the back-end does not trigger any notifications when + * images are loaded or unloaded. + * + * @param[in] notifications A bit-mask indicating which events should trigger + * notifications. + * + * @par Error Returns (when used by debugger front-end) + * Returns FALSE if: + * - Communication error with back-end. + * - Called during "run mode". + */ + virtual bool SetImageNotifications(IMAGE_NOTIFICATIONS notifications) = 0; + + /*! + * Tells the number of images currently loaded in the application. + * + * @param[out] count Receives the number of images. + * + * @return TRUE on success. + * + * @par Error Returns (when used by debugger front-end) + * Returns FALSE if: + * - Communication error with back-end. + * - Called during "run mode". + */ + virtual bool GetImageCount(unsigned *count) = 0; + + /*! + * Retrieves the ID of an image in the application. + * + * @param[in] iImage An index in the range [0, n-1], where \e n is the value + * provided by GetImageCount(). + * @param[out] image Receives the image identifier. + * + * @return TRUE on success. + * + * @par Error Returns (when used by debugger front-end) + * Returns FALSE if: + * - Communication error with back-end. + * - Called during "run mode". + * - The \a iImage is out of range. + * + * @par Error Returns (when implemented by debugger back-end) + * Returns FALSE if \a iImage is out of range. + */ + virtual bool GetImageId(unsigned iImage, IMAGE *image) = 0; + + /*! + * Retrieves information about an image that is currently loaded in the application. + * Note that this may not be used to retrieve information for an image that has + * been reported via STOP_REASON_IMAGE_UNLOAD. + * + * @param[in] image The image. + * @param[in] szInfo Size (bytes) of the \a info structure. + * @param[out] info Receives information about the image. + * + * @return TRUE on success. + * + * @par Error Returns (when used by debugger front-end) + * Returns FALSE if: + * - Communication error with back-end. + * - Called during "run mode". + * - The \a image is not valid. + */ + virtual bool GetImageInfo(IMAGE image, size_t szInfo, IMAGE_INFO *info) = 0; + + /*! + * Tells the image that was loaded or unloaded for a thread that stopped with + * STOP_REASON_IMAGE_LOAD or STOP_REASON_IMAGE_UNLOAD. + * + * @param[in] thread The ID of a thread. + * @param[out] image Receives the image identifier. + * + * @return TRUE on success. + * + * @par Error Returns (when used by debugger front-end) + * Returns FALSE if: + * - Communication error with back-end. + * - Called during "run mode". + * - The \a thread did not stop with STOP_REASON_IMAGE_LOAD or STOP_REASON_IMAGE_UNLOAD. + * + * @par Error Returns (when implemented by debugger back-end) + * Returns FALSE if \a thread did not stop with STOP_REASON_IMAGE_LOAD or + * STOP_REASON_IMAGE_UNLOAD. + */ + virtual bool GetThreadStopImage(THREAD thread, IMAGE *image) = 0; + + /*! + * Gets the loaded images list of the application according to the SVR4 format. + * + * @param[out] info Receives the image list + * + * @return TRUE on success. + * + */ + virtual bool GetSvr4ImageList(SVR4_IMAGES_LIST *info) = 0; + +protected: + virtual ~IIMAGE_EXTENSIONS() {} ///< Do not call delete on IIMAGE_EXTENSIONS. +}; + +/*! + * An optional interface that can be returned from ICOMMANDS::GetInterface() if the + * back-end defines BACKEND_FEATURE_THREAD_EXTENSIONS. + */ +class /**/ ITHREAD_EXTENSIONS +{ +public: + /*! + * Set the notifications that will be triggered when threads start or exit in the + * target application. By default, the back-end does not trigger any notifications + * when start or exit.. + * + * @param[in] notifications A bit-mask indicating which events should trigger + * notifications. + * + * @par Error Returns (when used by debugger front-end) + * Returns FALSE if: + * - Communication error with back-end. + * - Called during "run mode". + */ + virtual bool SetThreadNotifications(THREAD_NOTIFICATIONS notifications) = 0; + + /*! + * Retrieves information about a thread in the application. + * + * @param[in] thread ID of a thread. + * @param[in] szInfo Size (bytes) of the \a info structure. + * @param[out] info Receives information about the thread. + * + * @return TRUE on success. + * + * @par Error Returns (when used by debugger front-end) + * Returns FALSE if: + * - Communication error with back-end. + * - Called during "run mode". + */ + virtual bool GetThreadInfo(THREAD thread, size_t szInfo, THREAD_INFO *info) = 0; + + /*! + * Tells the thread exit status for a thread that stopped with STOP_REASON_THREAD_EXIT. + * + * @param[in] thread The ID of a thread. + * @param[out] status Receives the O/S specific thread exit status. + * + * @return TRUE on success. + * + * @par Error Returns (when used by debugger front-end) + * Returns FALSE if: + * - Communication error with back-end. + * - Called during "run mode". + * - The \a thread did not stop with STOP_REASON_THREAD_EXIT. + * + * @par Error Returns (when implemented by debugger back-end) + * Returns FALSE if \a thread did not stop with STOP_REASON_THREAD_EXIT. + */ + virtual bool GetThreadExitStatus(THREAD thread, INT64 *status) = 0; + +protected: + virtual ~ITHREAD_EXTENSIONS() {} ///< Do not call delete on ITHREAD_EXTENSIONS. +}; + +/*! + * An optional interface that can be returned from ICOMMANDS::GetInterface() if the + * back-end defines BACKEND_FEATURE_PROCESS_INFO. + */ +class /**/ IPROCESS_INFO +{ +public: + /*! + * Get the O/S process ID of the target application. + * + * @param[out] pid Receives the process ID. + * + * @par Error Returns (when used by debugger front-end) + * Returns FALSE if: + * - Communication error with back-end. + * - Called during "run mode". + */ + virtual bool GetProcessId(PROCESS *pid) = 0; + + /*! + * Retrieves the address of the loader inside the target process memory layout. + * + * @param[out] addr The address of the loader. + * + * @return TRUE on success. + * + * Returns FALSE if: + * - Not supported (client interface doesn't exist). + */ + virtual bool GetLoaderInfoAddr(ANYADDR *addr) = 0; + + /*! + * Retrieves the target application architecture description. + * + * @param[out] desc The description of the architecture (OS specific). + * + * @return TRUE on success. + * + * Returns FALSE if: + * - Not supported (client interface doesn't exist). + */ + virtual bool GetTargetApplicationArch(void **desc) = 0; + +protected: + virtual ~IPROCESS_INFO() {} ///< Do not call delete on IPROCESS_INFO. +}; + + +/*! + * This interface represents notifications sent from the debugger back-end to the front-end. + * There are two different usage models. + * + * When used by a debugger front-end, the front-end implements this interface and the + * DEBUGGER_PROTOCOL library calls it in order to notify the front-end of events sent from + * the back-end. + * + * When used by a back-end, the DEBUGGER_PROTOCOL library implements this interface, and the + * back-end makes calls to it when it wants to send a notification to the front-end. In this + * model, the back-end should expect that a call to a method may fail due to a communication + * error with the front-end. The "Error Returns" section of each method describes this. + */ +class /**/ INOTIFICATIONS +{ +public: + /*! + * Indicates that all threads in the application stopped and the debugger back-end is + * ready to accept commands from the front-end. Use ICOMMANDS::GetThreadStopReason() + * to determine why each thread stopped. When this notification is sent, the debugger + * changes to "command mode". + * + * @param[in] focus If the application stops because one of the threads triggered a + * breakpoint, received an O/S event, or completed a single-step; + * \a focus specifies that thread. If there is more than one such + * thread, one is chosen arbitrarily. If there is no such thread, + * \a focus is one arbitrarily chosen thread in the application. + * + * @return TRUE. + * + * @par Error Returns (when used by debugger back-end) + * Returns FALSE on communication error, or if called during "command mode". + */ + virtual bool NotifyStopped(THREAD focus) = 0; + + /*! + * Indicates that the application terminated due to calling exit() or some similar + * O/S service. Since the application no longer exists, the back-end may not be + * able to accept further commands. + * + * @param[in] code The application's exit code (e.g. value passed to exit()). + * + * @return TRUE. + * + * @par Error Returns (when used by debugger back-end) + * Returns FALSE on communication error, or if called during "command mode". + */ + virtual bool NotifyTerminatedExit(INT64 code) = 0; + + /*! + * Indicates that the application terminated due to some O/S event (e.g. receiving an + * unhandled Unix signal). Note that some O/S's (e.g. Windows) may instead report a + * fatal event via NotifyStopped() and then report that the application terminated via + * a separate call to NotifyTerminatedExit(). + * + * @param[in] evnt Identifies the terminating event. + * @param[in] szEvntInfo Size (bytes) of the \a evntInfo structure, if that parameter + * is non-NULL. + * @param[in] evntInfo If not NULL, tells additional information about the terminating + * event. This parameter will always be NULL when the back-end + * does not support BACKEND_FEATURE_EVENT_INFO. + * + * @return TRUE. + * + * @par Error Returns (when used by debugger back-end) + * Returns FALSE on communication error, or if called during "command mode". + */ + virtual bool NotifyTerminatedEvent(EVENT evnt, size_t szEvntInfo, + const EVENT_INFO *evntInfo) = 0; + +protected: + virtual ~INOTIFICATIONS() {} ///< Do not call delete on INOTIFICATIONS. +}; + + +/*! + * Clients of the DEBUGGER_PROTOCOL library can implement this interface to receive + * a notification whenever a protocol message is sent or received. This is useful for + * debugging the debugger-protocol itself. + */ +class /**/ ILOG_NOTIFICATIONS +{ +public: + /*! + * Indicates that a protocol message was sent or received. + * + * @param[in] message A textual description of the protocol message. + */ + virtual void NotifyLogMessage(const std::string &message) = 0; + +protected: + virtual ~ILOG_NOTIFICATIONS() {} ///< Do not call delete on ILOG_NOTIFICATIONS. +}; + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/event-linux.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/event-linux.hpp new file mode 100644 index 0000000..97fe033 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/event-linux.hpp @@ -0,0 +1,227 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : debugger-protocol +// : component public header + +#ifndef DEBUGGER_PROTOCOL_EVENT_LINUX_HPP +#define DEBUGGER_PROTOCOL_EVENT_LINUX_HPP + +#include "debugger-protocol.hpp" + + +namespace DEBUGGER_PROTOCOL { + +/*! + * The Linux signal numbers. These are the same values defined in the system header. + */ +enum LINUX_SIGNAL +{ + LINUX_SIGNAL_HUP = 1, + LINUX_SIGNAL_INT = 2, + LINUX_SIGNAL_QUIT = 3, + LINUX_SIGNAL_ILL = 4, + LINUX_SIGNAL_TRAP = 5, + LINUX_SIGNAL_ABRT = 6, + LINUX_SIGNAL_BUS = 7, + LINUX_SIGNAL_FPE = 8, + LINUX_SIGNAL_KILL = 9, + LINUX_SIGNAL_USR1 = 10, + LINUX_SIGNAL_SEGV = 11, + LINUX_SIGNAL_USR2 = 12, + LINUX_SIGNAL_PIPE = 13, + LINUX_SIGNAL_ALRM = 14, + LINUX_SIGNAL_TERM = 15, + LINUX_SIGNAL_STKFLT = 16, + LINUX_SIGNAL_CHLD = 17, + LINUX_SIGNAL_CONT = 18, + LINUX_SIGNAL_STOP = 19, + LINUX_SIGNAL_TSTP = 20, + LINUX_SIGNAL_TTIN = 21, + LINUX_SIGNAL_TTOU = 22, + LINUX_SIGNAL_URG = 23, + LINUX_SIGNAL_XCPU = 24, + LINUX_SIGNAL_XFSZ = 25, + LINUX_SIGNAL_VTALRM = 26, + LINUX_SIGNAL_PROF = 27, + LINUX_SIGNAL_WINCH = 28, + LINUX_SIGNAL_POLL = 29, + LINUX_SIGNAL_PWR = 30, + LINUX_SIGNAL_SYS = 31, + LINUX_SIGNAL_RT32 = 32, + LINUX_SIGNAL_RT33 = 33, + LINUX_SIGNAL_RT34 = 34, + LINUX_SIGNAL_RT35 = 35, + LINUX_SIGNAL_RT36 = 36, + LINUX_SIGNAL_RT37 = 37, + LINUX_SIGNAL_RT38 = 38, + LINUX_SIGNAL_RT39 = 39, + LINUX_SIGNAL_RT40 = 40, + LINUX_SIGNAL_RT41 = 41, + LINUX_SIGNAL_RT42 = 42, + LINUX_SIGNAL_RT43 = 43, + LINUX_SIGNAL_RT44 = 44, + LINUX_SIGNAL_RT45 = 45, + LINUX_SIGNAL_RT46 = 46, + LINUX_SIGNAL_RT47 = 47, + LINUX_SIGNAL_RT48 = 48, + LINUX_SIGNAL_RT49 = 49, + LINUX_SIGNAL_RT50 = 50, + LINUX_SIGNAL_RT51 = 51, + LINUX_SIGNAL_RT52 = 52, + LINUX_SIGNAL_RT53 = 53, + LINUX_SIGNAL_RT54 = 54, + LINUX_SIGNAL_RT55 = 55, + LINUX_SIGNAL_RT56 = 56, + LINUX_SIGNAL_RT57 = 57, + LINUX_SIGNAL_RT58 = 58, + LINUX_SIGNAL_RT59 = 59, + LINUX_SIGNAL_RT60 = 60, + LINUX_SIGNAL_RT61 = 61, + LINUX_SIGNAL_RT62 = 62, + LINUX_SIGNAL_RT63 = 63 +}; + + +#if defined(DEBUGGER_PROTOCOL_BUILD) // Library clients should NOT define this. + +/*! + * When GDB connects to a Linux process, it expects that these signals are initially not + * intercepted. If a back-end connects to a debugger of type FRONTEND_TYPE_GDB, the + * back-end should arrange for these signals to be handled internally by the process, + * without notifying GDB. Note that these are only an initial default setting. GDB may + * explicitly ask to intercept these signals later via IEVENT_INTERCEPTION. + */ +DEBUGGER_PROTOCOL_API EVENT DefaultLinuxSignalsNotInterceptedByGdb[] = +{ + LINUX_SIGNAL_ALRM, + LINUX_SIGNAL_URG, + LINUX_SIGNAL_CHLD, + LINUX_SIGNAL_VTALRM, + LINUX_SIGNAL_PROF, + LINUX_SIGNAL_WINCH, + LINUX_SIGNAL_POLL, + LINUX_SIGNAL_RT32, + LINUX_SIGNAL_RT33 +}; + +/*! + * Number of entries in DefaultLinuxSignalsNotInterceptedByGdb. + */ +DEBUGGER_PROTOCOL_API unsigned DefaultLinuxSignalsNotInterceptedByGdbCount = + sizeof(DefaultLinuxSignalsNotInterceptedByGdb) / sizeof(DefaultLinuxSignalsNotInterceptedByGdb[0]); + +#else + +/*! + * Signals not initially intercepted by GDB. + */ +DEBUGGER_PROTOCOL_API extern EVENT DefaultLinuxSignalsNotInterceptedByGdb[]; + +/*! + * Number entries in DefaultLinuxSignalsNotInterceptedByGdb. + */ +DEBUGGER_PROTOCOL_API extern unsigned DefaultLinuxSignalsNotInterceptedByGdbCount; + +#endif + + +/*! + * In the future, new fields may be added to the end of the EVENT_INFO_LINUX32 + * or EVENT_INFO_LINUX64 structures. If this happens, clients can use the + * \e _version field to retain backward compatibility. + * + * When a client writes information to these structures, it should set \e _version + * to the latest version that it supports. + * + * When a client reads these structures, it should use \e _version to tell which + * fields are valid. A client should allow that \e _version may be greater than + * the newest version it knows about, which happens if an older front-end runs + * with a newer back-end or vice-versa. + */ +enum EVENT_INFO_LINUX_VERSION +{ + EVENT_INFO_LINUX_VERSION_0 ///< This is the only defined version currently. +}; + +/*! + * This has the same layout as the 32-bit system siginfo_t. If you are compiling on that + * system, you can safely cast to that type. + */ +struct /**/ SIGINFO32 +{ + INT32 _signo; + INT32 _errno; + INT32 _code; + + union + { + UINT32 _pad[(128 / sizeof(UINT32)) - 3]; // Total size of SIGINFO32 is 128 bytes + }; +}; + +/*! + * This has the same layout as the 64-bit system siginfo_t. If you are compiling on that + * system, you can safely cast to that type. + */ +struct /**/ SIGINFO64 +{ + INT32 _signo; + INT32 _errno; + INT32 _code; + INT32 _pad0; + + union + { + UINT32 _pad1[(128 / sizeof(UINT32)) - 4]; // Total size of SIGINFO64 is 128 bytes + }; +}; + + +/*! + * Information about a signal received on a 32-bit Linux target. + */ +struct /**/ EVENT_INFO_LINUX32 +{ + EVENT_INFO_LINUX_VERSION _version; ///< Tells which fields in this structure are valid. + SIGINFO32 _siginfo; ///< Signal information. +}; + +/*! + * Information about a signal received on a 64-bit Linux target. + */ +struct /**/ EVENT_INFO_LINUX64 +{ + EVENT_INFO_LINUX_VERSION _version; ///< Tells which fields in this structure are valid. + SIGINFO64 _siginfo; ///< Signal information. +}; + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/event-mac.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/event-mac.hpp new file mode 100644 index 0000000..4a90698 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/event-mac.hpp @@ -0,0 +1,159 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : debugger-protocol +// : component public header + +#ifndef DEBUGGER_PROTOCOL_EVENT_MAC_HPP +#define DEBUGGER_PROTOCOL_EVENT_MAC_HPP + +#include "debugger-protocol.hpp" +#include "debugger-protocol/event-linux.hpp" + + +namespace DEBUGGER_PROTOCOL { + +/*! + * The OS X* signal numbers. These are the same values defined in the system header. + */ +enum MAC_SIGNAL +{ + MAC_SIGNAL_HUP = 1, + MAC_SIGNAL_INT = 2, + MAC_SIGNAL_QUIT = 3, + MAC_SIGNAL_ILL = 4, + MAC_SIGNAL_TRAP = 5, + MAC_SIGNAL_ABRT = 6, + MAC_SIGNAL_EMT = 7, + MAC_SIGNAL_FPE = 8, + MAC_SIGNAL_KILL = 9, + MAC_SIGNAL_BUS = 10, + MAC_SIGNAL_SEGV = 11, + MAC_SIGNAL_SYS = 12, + MAC_SIGNAL_PIPE = 13, + MAC_SIGNAL_ALRM = 14, + MAC_SIGNAL_TERM = 15, + MAC_SIGNAL_URG = 16, + MAC_SIGNAL_STOP = 17, + MAC_SIGNAL_TSTP = 18, + MAC_SIGNAL_CONT = 19, + MAC_SIGNAL_CHLD = 20, + MAC_SIGNAL_TTIN = 21, + MAC_SIGNAL_TTOU = 22, + MAC_SIGNAL_IO = 23, + MAC_SIGNAL_XCPU = 24, + MAC_SIGNAL_XFSZ = 25, + MAC_SIGNAL_VTALRM = 26, + MAC_SIGNAL_PROF = 27, + MAC_SIGNAL_WINCH = 28, + MAC_SIGNAL_INFO = 29, + MAC_SIGNAL_USR1 = 30, + MAC_SIGNAL_USR2 = 31 +}; + + +#if defined(DEBUGGER_PROTOCOL_BUILD) // Library clients should NOT define this. + +/*! + * When GDB connects to an OS X* process, it expects that these signals are initially not + * intercepted. If a back-end connects to a debugger of type FRONTEND_TYPE_GDB, the + * back-end should arrange for these signals to be handled internally by the process, + * without notifying GDB. Note that these are only an initial default setting. GDB may + * explicitly ask to intercept these signals later via IEVENT_INTERCEPTION. + */ +DEBUGGER_PROTOCOL_API EVENT DefaultMacSignalsNotInterceptedByGdb[] = +{ + MAC_SIGNAL_ALRM, + MAC_SIGNAL_URG, + MAC_SIGNAL_CHLD, + MAC_SIGNAL_VTALRM, + MAC_SIGNAL_PROF, + MAC_SIGNAL_WINCH +}; + +/*! + * Number of entries in DefaultMacSignalsNotInterceptedByGdb. + */ +DEBUGGER_PROTOCOL_API unsigned DefaultMacSignalsNotInterceptedByGdbCount = + sizeof(DefaultMacSignalsNotInterceptedByGdb) / sizeof(DefaultMacSignalsNotInterceptedByGdb[0]); + +#else + +/*! + * Signals not initially intercepted by GDB. + */ +DEBUGGER_PROTOCOL_API extern EVENT DefaultMacSignalsNotInterceptedByGdb[]; + +/*! + * Number entries in DefaultMacSignalsNotInterceptedByGdb. + */ +DEBUGGER_PROTOCOL_API extern unsigned DefaultMacSignalsNotInterceptedByGdbCount; + +#endif + + +/*! + * In the future, new fields may be added to the end of the EVENT_INFO_MAC32 + * or EVENT_INFO_MAC64 structures. If this happens, clients can use the + * \e _version field to retain backward compatibility. + * + * When a client writes information to these structures, it should set \e _version + * to the latest version that it supports. + * + * When a client reads these structures, it should use \e _version to tell which + * fields are valid. A client should allow that \e _version may be greater than + * the newest version it knows about, which happens if an older front-end runs + * with a newer back-end or vice-versa. + */ +enum EVENT_INFO_MAC_VERSION +{ + EVENT_INFO_MAC_VERSION_0 ///< This is the only defined version currently. +}; + +/*! + * Information about a signal received on a 32-bit OS X* target. + */ +struct /**/ EVENT_INFO_MAC32 +{ + EVENT_INFO_MAC_VERSION _version; ///< Tells which fields in this structure are valid. + SIGINFO32 _siginfo; ///< Signal information. +}; + +/*! + * Information about a signal received on a 64-bit OS X* target. + */ +struct /**/ EVENT_INFO_MAC64 +{ + EVENT_INFO_MAC_VERSION _version; ///< Tells which fields in this structure are valid. + SIGINFO64 _siginfo; ///< Signal information. +}; + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/event-windows.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/event-windows.hpp new file mode 100644 index 0000000..9b0fb95 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/event-windows.hpp @@ -0,0 +1,113 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : debugger-protocol +// : component public header + +#ifndef DEBUGGER_PROTOCOL_EVENT_WINDOWS_HPP +#define DEBUGGER_PROTOCOL_EVENT_WINDOWS_HPP + + + +namespace DEBUGGER_PROTOCOL { + +/*! + * In the future, new fields may be added to the end of the EVENT_INFO_WINDOWS32 + * or EVENT_INFO_WINDOWS64 structures. If this happens, clients can use the + * \e _version field to retain backward compatibility. + * + * When a client writes information to these structures, it should set \e _version + * to the latest version that it supports. + * + * When a client reads these structures, it should use \e _version to tell which + * fields are valid. A client should allow that \e _version may be greater than + * the newest version it knows about, which happens if an older front-end runs + * with a newer back-end or vice-versa. + */ +enum EVENT_INFO_WINDOWS_VERSION +{ + EVENT_INFO_WINDOWS_VERSION_0 ///< This is the only defined version currently. +}; + + +static const unsigned MAX_EXCEPTION_PARAMETERS = 15; ///< Maximum number of exception parameters. + +/*! + * This has the same layout as EXCEPTION_RECORD32. If you are compiling on Windows, + * you can safely cast to that type. + */ +struct /**/ EXCEPTION32 +{ + UINT32 _exceptionCode; + UINT32 _exceptionFlags; + UINT32 _exceptionRecord; + UINT32 _exceptionAddress; + UINT32 _numberParameters; + UINT32 _exceptionInformation[MAX_EXCEPTION_PARAMETERS]; +}; + +/*! + * This has the same layout as EXCEPTION_RECORD64. If you are compiling on Windows, + * you can safely cast to that type. + */ +struct /**/ EXCEPTION64 +{ + UINT32 _exceptionCode; + UINT32 _exceptionFlags; + UINT64 _exceptionRecord; + UINT64 _exceptionAddress; + UINT32 _numberParameters; + UINT32 _pad; + UINT64 _exceptionInformation[MAX_EXCEPTION_PARAMETERS]; +}; + + +/*! + * Information about an exception received on a 32-bit Windows target. + */ +struct /**/ EVENT_INFO_WINDOWS32 +{ + EVENT_INFO_WINDOWS_VERSION _version; ///< Tells which fields in this structure are valid. + bool _firstChance; ///< TRUE if this is a first-chance exception. + EXCEPTION32 _exception; ///< Windows exception record. +}; + +/*! + * Information about an exception received on a 64-bit Windows target. + */ +struct /**/ EVENT_INFO_WINDOWS64 +{ + EVENT_INFO_WINDOWS_VERSION _version; ///< Tells which fields in this structure are valid. + bool _firstChance; ///< TRUE if this is a first-chance exception. + EXCEPTION64 _exception; ///< Windows exception record. +}; + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/forward.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/forward.hpp new file mode 100644 index 0000000..cbf879f --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/forward.hpp @@ -0,0 +1,48 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : debugger-protocol +// : component public header + +#ifndef DEBUGGER_PROTOCOL_FORWARD_HPP +#define DEBUGGER_PROTOCOL_FORWARD_HPP + + +namespace DEBUGGER_PROTOCOL { + +struct TCP_INFO; +class IFRONTEND; +class IBACKEND; +class ICOMMANDS; +class INOTIFICATIONS; +class ILOG_NOTIFICATIONS; + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/image-linux.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/image-linux.hpp new file mode 100644 index 0000000..c65bb15 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/image-linux.hpp @@ -0,0 +1,100 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : debugger-protocol +// : component public header + +#ifndef DEBUGGER_PROTOCOL_IMAGE_LINUX_HPP +#define DEBUGGER_PROTOCOL_IMAGE_LINUX_HPP + +#include + +namespace DEBUGGER_PROTOCOL { + +/*! + * In the future, new image types may be added. To retain backward compatibility, + * clients should ignore types they don't recognize. + */ +enum IMAGE_TYPE_LINUX +{ + /*! + * Image is from the main ELF executable file that is loaded into the target process. + */ + IMAGE_TYPE_LINUX_ELF_MAIN, + + /*! + * Image is from an ELF file representing a shared library in the target process. + */ + IMAGE_TYPE_LINUX_ELF_LIBRARY +}; + +/*! + * In the future, new fields may be added to the end of the IMAGE_INFO_LINUX structure. + * If this happens, clients can use the \e _version field to retain backward + * compatibility. + * + * When a client writes information to this structure, it should set \e _version + * to the latest version that it supports. + * + * When a client reads this structure, it should use \e _version to tell which + * fields are valid. A client should allow that \e _version may be greater than + * the newest version it knows about, which happens if an older front-end runs + * with a newer back-end or vice-versa. + */ +enum IMAGE_INFO_LINUX_VERSION +{ + IMAGE_INFO_LINUX_VERSION_0 ///< This is the only defined version currently. +}; + +/*! + * Information about an image in the target application. + */ +struct /**/ IMAGE_INFO_LINUX +{ + IMAGE_INFO_LINUX_VERSION _version; ///< Tells which fields in this structure are valid. + IMAGE_TYPE_LINUX _type; ///< The image type. + std::string _name; ///< Absolute pathname to the ELF file (UTF-8). + ANYADDR _offset; ///< Offset from ELF file's link-time address to it's loaded address. + ADDRINT _lm; ///< Pointer to the image's struct link_map + ADDRINT _l_ld; ///< Points to the image's PT_DYNAMIC segment +}; + +/*! + * Images list in the target application for GDB. + * Complying with the SVR4 standard. + */ +struct /**/ SVR4_IMAGES_LIST_LINUX +{ + ADDRINT _main_lm; ///< Pointer to the main image's struct link_map + std::vector _list;///< List of all loaded images +}; + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/image-mac.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/image-mac.hpp new file mode 100644 index 0000000..fad4732 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/image-mac.hpp @@ -0,0 +1,78 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : debugger-protocol +// : component public header + +#ifndef DEBUGGER_PROTOCOL_IMAGE_MAC_HPP +#define DEBUGGER_PROTOCOL_IMAGE_MAC_HPP + +namespace DEBUGGER_PROTOCOL { + +/*! + * In the future, new image types may be added. To retain backward compatibility, + * clients should ignore types they don't recognize. + */ +enum IMAGE_TYPE_MAC +{ + IMAGE_TYPE_MAC_MACHO_MAIN +}; + +/*! + * In the future, new fields may be added to the end of the IMAGE_INFO_MAC structure. + * If this happens, clients can use the \e _version field to retain backward + * compatibility. + * + * When a client writes information to this structure, it should set \e _version + * to the latest version that it supports. + * + * When a client reads this structure, it should use \e _version to tell which + * fields are valid. A client should allow that \e _version may be greater than + * the newest version it knows about, which happens if an older front-end runs + * with a newer back-end or vice-versa. + */ +enum IMAGE_INFO_MAC_VERSION +{ + IMAGE_INFO_MAC_VERSION_0 ///< This is the only defined version currently. +}; + +/*! + * Information about an image in the target application. + */ +struct /**/ IMAGE_INFO_MAC +{ + IMAGE_INFO_MAC_VERSION _version; ///< Define which fields are valid. + IMAGE_TYPE_MAC _type; ///< The image type. + std::string _name; ///< Absolute pathname to the ELF file (UTF-8). + ANYADDR _offset; ///< Offset from ELF file's link-time address to it's loaded address. +}; + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/image-windows.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/image-windows.hpp new file mode 100644 index 0000000..734fe49 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/image-windows.hpp @@ -0,0 +1,87 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : debugger-protocol +// : component public header + +#ifndef DEBUGGER_PROTOCOL_IMAGE_WINDOWS_HPP +#define DEBUGGER_PROTOCOL_IMAGE_WINDOWS_HPP + +namespace DEBUGGER_PROTOCOL { + +/*! + * In the future, new image types may be added. To retain backward compatibility, + * clients should ignore types they don't recognize. + */ +enum IMAGE_TYPE_WINDOWS +{ + /*! + * Image is from the main PE executable file that is loaded into the target process. + */ + IMAGE_TYPE_WINDOWS_PE_MAIN, + + /*! + * Image is from a PE file representing a DLL in the target process. + */ + IMAGE_TYPE_WINDOWS_PE_LIBRARY +}; + +/*! + * In the future, new fields may be added to the end of the IMAGE_INFO_LINUX structure. + * If this happens, clients can use the \e _version field to retain backward + * compatibility. + * + * When a client writes information to this structure, it should set \e _version + * to the latest version that it supports. + * + * When a client reads this structure, it should use \e _version to tell which + * fields are valid. A client should allow that \e _version may be greater than + * the newest version it knows about, which happens if an older front-end runs + * with a newer back-end or vice-versa. + */ +enum IMAGE_INFO_WINDOWS_VERSION +{ + IMAGE_INFO_WINDOWS_VERSION_0 ///< This is the only defined version currently. +}; + +/*! + * Information about an image in the target application. + */ +struct /**/ IMAGE_INFO_WINDOWS +{ + IMAGE_INFO_WINDOWS_VERSION _version; ///< Tells which fields in this structure are valid. + IMAGE_TYPE_WINDOWS _type; ///< The image type. + ANYADDR _base; ///< Base address at which the PE file is loaded into memory. + size_t _size; ///< Total size in bytes of the loaded image in memory. + std::string _name; ///< Absolute pathname to the PE file (UTF-8). +}; + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/regs-gdb-linux-avx32.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/regs-gdb-linux-avx32.hpp new file mode 100644 index 0000000..4a51cc9 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/regs-gdb-linux-avx32.hpp @@ -0,0 +1,174 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : debugger-protocol +// : component public header + +#ifndef DEBUGGER_PROTOCOL_REGS_GDB_LINUX_AVX32_HPP +#define DEBUGGER_PROTOCOL_REGS_GDB_LINUX_AVX32_HPP + +#include "debugger-protocol.hpp" + + +namespace DEBUGGER_PROTOCOL { + +#if defined(DEBUGGER_PROTOCOL_BUILD) // Library clients should NOT define this. + +/*! + * This is the register set used by GDB for 32-bit AVX on Linux. + */ +DEBUGGER_PROTOCOL_API REG_DESCRIPTION RegsGdbLinuxAvx32[] = +{ + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_EAX + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_ECX + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_EDX + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_EBX + {32, REG_INVALID, true}, // REG_GDB_LINUX_AVX32_ESP + {32, REG_INVALID, true}, // REG_GDB_LINUX_AVX32_EBP + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_ESI + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_EDI + {32, REG_PC, true}, // REG_GDB_LINUX_AVX32_PC + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_EFLAGS + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_CS + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_SS + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_DS + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_ES + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_FS + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_GS + {80, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_ST0 + {80, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_ST1 + {80, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_ST2 + {80, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_ST3 + {80, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_ST4 + {80, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_ST5 + {80, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_ST6 + {80, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_ST7 + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_FCTRL + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_FSTAT + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_FTAG_FULL + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_FISEG + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_FIOFF + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_FOSEG + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_FOOFF + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_FOP + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_XMM0 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_XMM1 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_XMM2 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_XMM3 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_XMM4 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_XMM5 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_XMM6 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_XMM7 + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_MXCSR + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_ORIG_EAX + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_YMM0H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_YMM1H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_YMM2H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_YMM3H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_YMM4H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_YMM5H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX32_YMM6H + {128, REG_INVALID, false} // REG_GDB_LINUX_AVX32_YMM7H +}; + +/*! + * Number of entries in RegsGdbLinuxAvx32. + */ +DEBUGGER_PROTOCOL_API unsigned RegsGdbLinuxAvx32Count = sizeof(RegsGdbLinuxAvx32) / sizeof(RegsGdbLinuxAvx32[0]); + +#else + +DEBUGGER_PROTOCOL_API extern REG_DESCRIPTION RegsGdbLinuxAvx32[]; ///< GDB's 32-bit AVX register set on Linux. +DEBUGGER_PROTOCOL_API extern unsigned RegsGdbLinuxAvx32Count; ///< Number of entries in RegsGdbLinuxAvx32. + +#endif /*DEBUGGER_PROTOCOL_BUILD*/ + + +/*! + * Convenient identifiers for the registers in this set. + */ +enum REG_GDB_LINUX_AVX32 +{ + REG_GDB_LINUX_AVX32_FIRST = REG_END, + REG_GDB_LINUX_AVX32_EAX = REG_GDB_LINUX_AVX32_FIRST, + REG_GDB_LINUX_AVX32_ECX, + REG_GDB_LINUX_AVX32_EDX, + REG_GDB_LINUX_AVX32_EBX, + REG_GDB_LINUX_AVX32_ESP, + REG_GDB_LINUX_AVX32_EBP, + REG_GDB_LINUX_AVX32_ESI, + REG_GDB_LINUX_AVX32_EDI, + REG_GDB_LINUX_AVX32_PC, + REG_GDB_LINUX_AVX32_EFLAGS, + REG_GDB_LINUX_AVX32_CS, + REG_GDB_LINUX_AVX32_SS, + REG_GDB_LINUX_AVX32_DS, + REG_GDB_LINUX_AVX32_ES, + REG_GDB_LINUX_AVX32_FS, + REG_GDB_LINUX_AVX32_GS, + REG_GDB_LINUX_AVX32_ST0, + REG_GDB_LINUX_AVX32_ST1, + REG_GDB_LINUX_AVX32_ST2, + REG_GDB_LINUX_AVX32_ST3, + REG_GDB_LINUX_AVX32_ST4, + REG_GDB_LINUX_AVX32_ST5, + REG_GDB_LINUX_AVX32_ST6, + REG_GDB_LINUX_AVX32_ST7, + REG_GDB_LINUX_AVX32_FCTRL, + REG_GDB_LINUX_AVX32_FSTAT, + REG_GDB_LINUX_AVX32_FTAG_FULL, // 16-bit "full" encoding + REG_GDB_LINUX_AVX32_FISEG, + REG_GDB_LINUX_AVX32_FIOFF, + REG_GDB_LINUX_AVX32_FOSEG, + REG_GDB_LINUX_AVX32_FOOFF, + REG_GDB_LINUX_AVX32_FOP, + REG_GDB_LINUX_AVX32_XMM0, + REG_GDB_LINUX_AVX32_XMM1, + REG_GDB_LINUX_AVX32_XMM2, + REG_GDB_LINUX_AVX32_XMM3, + REG_GDB_LINUX_AVX32_XMM4, + REG_GDB_LINUX_AVX32_XMM5, + REG_GDB_LINUX_AVX32_XMM6, + REG_GDB_LINUX_AVX32_XMM7, + REG_GDB_LINUX_AVX32_MXCSR, + REG_GDB_LINUX_AVX32_ORIG_EAX, + REG_GDB_LINUX_AVX32_YMM0H, + REG_GDB_LINUX_AVX32_YMM1H, + REG_GDB_LINUX_AVX32_YMM2H, + REG_GDB_LINUX_AVX32_YMM3H, + REG_GDB_LINUX_AVX32_YMM4H, + REG_GDB_LINUX_AVX32_YMM5H, + REG_GDB_LINUX_AVX32_YMM6H, + REG_GDB_LINUX_AVX32_YMM7H, + REG_GDB_LINUX_AVX32_LAST = REG_GDB_LINUX_AVX32_YMM7H +}; + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/regs-gdb-linux-avx512-32.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/regs-gdb-linux-avx512-32.hpp new file mode 100644 index 0000000..89513af --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/regs-gdb-linux-avx512-32.hpp @@ -0,0 +1,206 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : debugger-protocol +// : component public header + +#ifndef DEBUGGER_PROTOCOL_REGS_GDB_LINUX_AVX512_32_HPP +#define DEBUGGER_PROTOCOL_REGS_GDB_LINUX_AVX512_32_HPP + +#include "debugger-protocol.hpp" + + +namespace DEBUGGER_PROTOCOL { + +#if defined(DEBUGGER_PROTOCOL_BUILD) // Library clients should NOT define this. + +/*! + * This is the register set used by GDB for 32-bit AVX512 on Linux. + */ +DEBUGGER_PROTOCOL_API REG_DESCRIPTION RegsGdbLinuxAvx512_32[] = +{ + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_EAX + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_ECX + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_EDX + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_EBX + {32, REG_INVALID, true}, // REG_GDB_LINUX_AVX512_32_ESP + {32, REG_INVALID, true}, // REG_GDB_LINUX_AVX512_32_EBP + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_ESI + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_EDI + {32, REG_PC, true}, // REG_GDB_LINUX_AVX512_32_PC + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_EFLAGS + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_CS + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_SS + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_DS + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_ES + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_FS + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_GS + {80, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_ST0 + {80, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_ST1 + {80, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_ST2 + {80, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_ST3 + {80, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_ST4 + {80, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_ST5 + {80, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_ST6 + {80, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_ST7 + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_FCTRL + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_FSTAT + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_FTAG_FULL + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_FISEG + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_FIOFF + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_FOSEG + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_FOOFF + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_FOP + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_XMM0 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_XMM1 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_XMM2 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_XMM3 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_XMM4 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_XMM5 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_XMM6 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_XMM7 + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_MXCSR + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_ORIG_EAX + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_YMM0H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_YMM1H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_YMM2H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_YMM3H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_YMM4H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_YMM5H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_YMM6H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_YMM7H + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_K0 + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_K1 + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_K2 + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_K3 + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_K4 + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_K5 + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_K6 + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_K7 + {256, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_ZMM0H + {256, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_ZMM1H + {256, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_ZMM2H + {256, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_ZMM3H + {256, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_ZMM4H + {256, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_ZMM5H + {256, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_32_ZMM6H + {256, REG_INVALID, false} // REG_GDB_LINUX_AVX512_32_ZMM7H +}; + +/*! + * Number of entries in RegsGdbLinuxAvx512_32. + */ +DEBUGGER_PROTOCOL_API unsigned RegsGdbLinuxAvx512_32Count = sizeof(RegsGdbLinuxAvx512_32) / sizeof(RegsGdbLinuxAvx512_32[0]); + +#else + +DEBUGGER_PROTOCOL_API extern REG_DESCRIPTION RegsGdbLinuxAvx512_32[]; ///< GDB's 32-bit AVX512 register set on Linux. +DEBUGGER_PROTOCOL_API extern unsigned RegsGdbLinuxAvx512_32Count; ///< Number of entries in RegsGdbLinuxAvx512_32. + +#endif /*DEBUGGER_PROTOCOL_BUILD*/ + + +/*! + * Convenient identifiers for the registers in this set. + */ +enum REG_GDB_LINUX_AVX512_32 +{ + REG_GDB_LINUX_AVX512_32_FIRST = REG_END, + REG_GDB_LINUX_AVX512_32_EAX = REG_GDB_LINUX_AVX512_32_FIRST, + REG_GDB_LINUX_AVX512_32_ECX, + REG_GDB_LINUX_AVX512_32_EDX, + REG_GDB_LINUX_AVX512_32_EBX, + REG_GDB_LINUX_AVX512_32_ESP, + REG_GDB_LINUX_AVX512_32_EBP, + REG_GDB_LINUX_AVX512_32_ESI, + REG_GDB_LINUX_AVX512_32_EDI, + REG_GDB_LINUX_AVX512_32_PC, + REG_GDB_LINUX_AVX512_32_EFLAGS, + REG_GDB_LINUX_AVX512_32_CS, + REG_GDB_LINUX_AVX512_32_SS, + REG_GDB_LINUX_AVX512_32_DS, + REG_GDB_LINUX_AVX512_32_ES, + REG_GDB_LINUX_AVX512_32_FS, + REG_GDB_LINUX_AVX512_32_GS, + REG_GDB_LINUX_AVX512_32_ST0, + REG_GDB_LINUX_AVX512_32_ST1, + REG_GDB_LINUX_AVX512_32_ST2, + REG_GDB_LINUX_AVX512_32_ST3, + REG_GDB_LINUX_AVX512_32_ST4, + REG_GDB_LINUX_AVX512_32_ST5, + REG_GDB_LINUX_AVX512_32_ST6, + REG_GDB_LINUX_AVX512_32_ST7, + REG_GDB_LINUX_AVX512_32_FCTRL, + REG_GDB_LINUX_AVX512_32_FSTAT, + REG_GDB_LINUX_AVX512_32_FTAG_FULL, // 16-bit "full" encoding + REG_GDB_LINUX_AVX512_32_FISEG, + REG_GDB_LINUX_AVX512_32_FIOFF, + REG_GDB_LINUX_AVX512_32_FOSEG, + REG_GDB_LINUX_AVX512_32_FOOFF, + REG_GDB_LINUX_AVX512_32_FOP, + REG_GDB_LINUX_AVX512_32_XMM0, + REG_GDB_LINUX_AVX512_32_XMM1, + REG_GDB_LINUX_AVX512_32_XMM2, + REG_GDB_LINUX_AVX512_32_XMM3, + REG_GDB_LINUX_AVX512_32_XMM4, + REG_GDB_LINUX_AVX512_32_XMM5, + REG_GDB_LINUX_AVX512_32_XMM6, + REG_GDB_LINUX_AVX512_32_XMM7, + REG_GDB_LINUX_AVX512_32_MXCSR, + REG_GDB_LINUX_AVX512_32_ORIG_EAX, + REG_GDB_LINUX_AVX512_32_YMM0H, + REG_GDB_LINUX_AVX512_32_YMM1H, + REG_GDB_LINUX_AVX512_32_YMM2H, + REG_GDB_LINUX_AVX512_32_YMM3H, + REG_GDB_LINUX_AVX512_32_YMM4H, + REG_GDB_LINUX_AVX512_32_YMM5H, + REG_GDB_LINUX_AVX512_32_YMM6H, + REG_GDB_LINUX_AVX512_32_YMM7H, + REG_GDB_LINUX_AVX512_32_K0, + REG_GDB_LINUX_AVX512_32_K1, + REG_GDB_LINUX_AVX512_32_K2, + REG_GDB_LINUX_AVX512_32_K3, + REG_GDB_LINUX_AVX512_32_K4, + REG_GDB_LINUX_AVX512_32_K5, + REG_GDB_LINUX_AVX512_32_K6, + REG_GDB_LINUX_AVX512_32_K7, + REG_GDB_LINUX_AVX512_32_ZMM0H, + REG_GDB_LINUX_AVX512_32_ZMM1H, + REG_GDB_LINUX_AVX512_32_ZMM2H, + REG_GDB_LINUX_AVX512_32_ZMM3H, + REG_GDB_LINUX_AVX512_32_ZMM4H, + REG_GDB_LINUX_AVX512_32_ZMM5H, + REG_GDB_LINUX_AVX512_32_ZMM6H, + REG_GDB_LINUX_AVX512_32_ZMM7H, + REG_GDB_LINUX_AVX512_32_LAST = REG_GDB_LINUX_AVX512_32_ZMM7H +}; + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/regs-gdb-linux-avx512-64.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/regs-gdb-linux-avx512-64.hpp new file mode 100644 index 0000000..ede9669 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/regs-gdb-linux-avx512-64.hpp @@ -0,0 +1,366 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : debugger-protocol +// : component public header + +#ifndef DEBUGGER_PROTOCOL_REGS_GDB_LINUX_AVX512_64_HPP +#define DEBUGGER_PROTOCOL_REGS_GDB_LINUX_AVX512_64_HPP + +#include "debugger-protocol.hpp" + + +namespace DEBUGGER_PROTOCOL { + +#if defined(DEBUGGER_PROTOCOL_BUILD) // Library clients should NOT define this. + +/*! + * This is the register set used by GDB for 64-bit AVX512 on Linux. + */ +DEBUGGER_PROTOCOL_API REG_DESCRIPTION RegsGdbLinuxAvx512_64[] = +{ + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_RAX + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_RBX + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_RCX + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_RDX + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_RSI + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_RDI + {64, REG_INVALID, true}, // REG_GDB_LINUX_AVX512_64_RBP + {64, REG_INVALID, true}, // REG_GDB_LINUX_AVX512_64_RSP + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_R8 + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_R9 + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_R10 + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_R11 + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_R12 + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_R13 + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_R14 + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_R15 + {64, REG_PC, true}, // REG_GDB_LINUX_AVX512_64_PC + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_EFLAGS + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_CS + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_SS + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_DS + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_ES + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_FS + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_GS + {80, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_ST0 + {80, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_ST1 + {80, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_ST2 + {80, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_ST3 + {80, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_ST4 + {80, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_ST5 + {80, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_ST6 + {80, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_ST7 + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_FCTRL + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_FSTAT + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_FTAG_FULL + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_FISEG + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_FIOFF + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_FOSEG + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_FOOFF + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_FOP + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_XMM0 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_XMM1 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_XMM2 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_XMM3 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_XMM4 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_XMM5 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_XMM6 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_XMM7 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_XMM8 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_XMM9 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_XMM10 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_XMM11 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_XMM12 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_XMM13 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_XMM14 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_XMM15 + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_MXCSR + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_ORIG_RAX + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_YMM0H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_YMM1H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_YMM2H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_YMM3H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_YMM4H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_YMM5H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_YMM6H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_YMM7H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_YMM8H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_YMM9H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_YMM10H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_YMM11H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_YMM12H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_YMM13H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_YMM14H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_YMM15H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_XMM16 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_XMM17 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_XMM18 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_XMM19 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_XMM20 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_XMM21 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_XMM22 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_XMM23 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_XMM24 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_XMM25 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_XMM26 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_XMM27 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_XMM28 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_XMM29 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_XMM30 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_XMM31 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_YMM16H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_YMM17H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_YMM18H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_YMM19H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_YMM20H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_YMM21H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_YMM22H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_YMM23H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_YMM24H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_YMM25H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_YMM26H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_YMM27H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_YMM28H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_YMM29H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_YMM30H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_YMM31H + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_K0 + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_K1 + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_K2 + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_K3 + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_K4 + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_K5 + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_K6 + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_K7 + {256, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_ZMM0H + {256, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_ZMM1H + {256, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_ZMM2H + {256, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_ZMM3H + {256, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_ZMM4H + {256, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_ZMM5H + {256, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_ZMM6H + {256, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_ZMM7H + {256, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_ZMM8H + {256, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_ZMM9H + {256, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_ZMM10H + {256, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_ZMM11H + {256, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_ZMM12H + {256, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_ZMM13H + {256, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_ZMM14H + {256, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_ZMM15H + {256, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_ZMM16H + {256, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_ZMM17H + {256, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_ZMM18H + {256, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_ZMM19H + {256, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_ZMM20H + {256, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_ZMM21H + {256, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_ZMM22H + {256, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_ZMM23H + {256, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_ZMM24H + {256, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_ZMM25H + {256, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_ZMM26H + {256, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_ZMM27H + {256, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_ZMM28H + {256, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_ZMM29H + {256, REG_INVALID, false}, // REG_GDB_LINUX_AVX512_64_ZMM30H + {256, REG_INVALID, false} // REG_GDB_LINUX_AVX512_64_ZMM31H +}; + +/*! + * Number of entries in RegsGdbLinuxAvx512_64. + */ +DEBUGGER_PROTOCOL_API unsigned RegsGdbLinuxAvx512_64Count = sizeof(RegsGdbLinuxAvx512_64) / sizeof(RegsGdbLinuxAvx512_64[0]); + +#else + +DEBUGGER_PROTOCOL_API extern REG_DESCRIPTION RegsGdbLinuxAvx512_64[]; ///< GDB's 64-bit AVX512 register set on Linux. +DEBUGGER_PROTOCOL_API extern unsigned RegsGdbLinuxAvx512_64Count; ///< Number of entries in RegsGdbLinuxAvx512_64. + +#endif /*DEBUGGER_PROTOCOL_BUILD*/ + + +/*! + * Convenient identifiers for the registers in this set. + */ +enum REG_GDB_LINUX_AVX512_64 +{ + REG_GDB_LINUX_AVX512_64_FIRST = REG_END, + REG_GDB_LINUX_AVX512_64_RAX = REG_GDB_LINUX_AVX512_64_FIRST, + REG_GDB_LINUX_AVX512_64_RBX, + REG_GDB_LINUX_AVX512_64_RCX, + REG_GDB_LINUX_AVX512_64_RDX, + REG_GDB_LINUX_AVX512_64_RSI, + REG_GDB_LINUX_AVX512_64_RDI, + REG_GDB_LINUX_AVX512_64_RBP, + REG_GDB_LINUX_AVX512_64_RSP, + REG_GDB_LINUX_AVX512_64_R8, + REG_GDB_LINUX_AVX512_64_R9, + REG_GDB_LINUX_AVX512_64_R10, + REG_GDB_LINUX_AVX512_64_R11, + REG_GDB_LINUX_AVX512_64_R12, + REG_GDB_LINUX_AVX512_64_R13, + REG_GDB_LINUX_AVX512_64_R14, + REG_GDB_LINUX_AVX512_64_R15, + REG_GDB_LINUX_AVX512_64_PC, + REG_GDB_LINUX_AVX512_64_EFLAGS, + REG_GDB_LINUX_AVX512_64_CS, + REG_GDB_LINUX_AVX512_64_SS, + REG_GDB_LINUX_AVX512_64_DS, + REG_GDB_LINUX_AVX512_64_ES, + REG_GDB_LINUX_AVX512_64_FS, + REG_GDB_LINUX_AVX512_64_GS, + REG_GDB_LINUX_AVX512_64_ST0, + REG_GDB_LINUX_AVX512_64_ST1, + REG_GDB_LINUX_AVX512_64_ST2, + REG_GDB_LINUX_AVX512_64_ST3, + REG_GDB_LINUX_AVX512_64_ST4, + REG_GDB_LINUX_AVX512_64_ST5, + REG_GDB_LINUX_AVX512_64_ST6, + REG_GDB_LINUX_AVX512_64_ST7, + REG_GDB_LINUX_AVX512_64_FCTRL, + REG_GDB_LINUX_AVX512_64_FSTAT, + REG_GDB_LINUX_AVX512_64_FTAG_FULL, // 16-bit "full" encoding + REG_GDB_LINUX_AVX512_64_FISEG, + REG_GDB_LINUX_AVX512_64_FIOFF, + REG_GDB_LINUX_AVX512_64_FOSEG, + REG_GDB_LINUX_AVX512_64_FOOFF, + REG_GDB_LINUX_AVX512_64_FOP, + REG_GDB_LINUX_AVX512_64_XMM0, + REG_GDB_LINUX_AVX512_64_XMM1, + REG_GDB_LINUX_AVX512_64_XMM2, + REG_GDB_LINUX_AVX512_64_XMM3, + REG_GDB_LINUX_AVX512_64_XMM4, + REG_GDB_LINUX_AVX512_64_XMM5, + REG_GDB_LINUX_AVX512_64_XMM6, + REG_GDB_LINUX_AVX512_64_XMM7, + REG_GDB_LINUX_AVX512_64_XMM8, + REG_GDB_LINUX_AVX512_64_XMM9, + REG_GDB_LINUX_AVX512_64_XMM10, + REG_GDB_LINUX_AVX512_64_XMM11, + REG_GDB_LINUX_AVX512_64_XMM12, + REG_GDB_LINUX_AVX512_64_XMM13, + REG_GDB_LINUX_AVX512_64_XMM14, + REG_GDB_LINUX_AVX512_64_XMM15, + REG_GDB_LINUX_AVX512_64_MXCSR, + REG_GDB_LINUX_AVX512_64_ORIG_RAX, + REG_GDB_LINUX_AVX512_64_YMM0H, + REG_GDB_LINUX_AVX512_64_YMM1H, + REG_GDB_LINUX_AVX512_64_YMM2H, + REG_GDB_LINUX_AVX512_64_YMM3H, + REG_GDB_LINUX_AVX512_64_YMM4H, + REG_GDB_LINUX_AVX512_64_YMM5H, + REG_GDB_LINUX_AVX512_64_YMM6H, + REG_GDB_LINUX_AVX512_64_YMM7H, + REG_GDB_LINUX_AVX512_64_YMM8H, + REG_GDB_LINUX_AVX512_64_YMM9H, + REG_GDB_LINUX_AVX512_64_YMM10H, + REG_GDB_LINUX_AVX512_64_YMM11H, + REG_GDB_LINUX_AVX512_64_YMM12H, + REG_GDB_LINUX_AVX512_64_YMM13H, + REG_GDB_LINUX_AVX512_64_YMM14H, + REG_GDB_LINUX_AVX512_64_YMM15H, + REG_GDB_LINUX_AVX512_64_XMM16, + REG_GDB_LINUX_AVX512_64_XMM17, + REG_GDB_LINUX_AVX512_64_XMM18, + REG_GDB_LINUX_AVX512_64_XMM19, + REG_GDB_LINUX_AVX512_64_XMM20, + REG_GDB_LINUX_AVX512_64_XMM21, + REG_GDB_LINUX_AVX512_64_XMM22, + REG_GDB_LINUX_AVX512_64_XMM23, + REG_GDB_LINUX_AVX512_64_XMM24, + REG_GDB_LINUX_AVX512_64_XMM25, + REG_GDB_LINUX_AVX512_64_XMM26, + REG_GDB_LINUX_AVX512_64_XMM27, + REG_GDB_LINUX_AVX512_64_XMM28, + REG_GDB_LINUX_AVX512_64_XMM29, + REG_GDB_LINUX_AVX512_64_XMM30, + REG_GDB_LINUX_AVX512_64_XMM31, + REG_GDB_LINUX_AVX512_64_YMM16H, + REG_GDB_LINUX_AVX512_64_YMM17H, + REG_GDB_LINUX_AVX512_64_YMM18H, + REG_GDB_LINUX_AVX512_64_YMM19H, + REG_GDB_LINUX_AVX512_64_YMM20H, + REG_GDB_LINUX_AVX512_64_YMM21H, + REG_GDB_LINUX_AVX512_64_YMM22H, + REG_GDB_LINUX_AVX512_64_YMM23H, + REG_GDB_LINUX_AVX512_64_YMM24H, + REG_GDB_LINUX_AVX512_64_YMM25H, + REG_GDB_LINUX_AVX512_64_YMM26H, + REG_GDB_LINUX_AVX512_64_YMM27H, + REG_GDB_LINUX_AVX512_64_YMM28H, + REG_GDB_LINUX_AVX512_64_YMM29H, + REG_GDB_LINUX_AVX512_64_YMM30H, + REG_GDB_LINUX_AVX512_64_YMM31H, + REG_GDB_LINUX_AVX512_64_K0, + REG_GDB_LINUX_AVX512_64_K1, + REG_GDB_LINUX_AVX512_64_K2, + REG_GDB_LINUX_AVX512_64_K3, + REG_GDB_LINUX_AVX512_64_K4, + REG_GDB_LINUX_AVX512_64_K5, + REG_GDB_LINUX_AVX512_64_K6, + REG_GDB_LINUX_AVX512_64_K7, + REG_GDB_LINUX_AVX512_64_ZMM0H, + REG_GDB_LINUX_AVX512_64_ZMM1H, + REG_GDB_LINUX_AVX512_64_ZMM2H, + REG_GDB_LINUX_AVX512_64_ZMM3H, + REG_GDB_LINUX_AVX512_64_ZMM4H, + REG_GDB_LINUX_AVX512_64_ZMM5H, + REG_GDB_LINUX_AVX512_64_ZMM6H, + REG_GDB_LINUX_AVX512_64_ZMM7H, + REG_GDB_LINUX_AVX512_64_ZMM8H, + REG_GDB_LINUX_AVX512_64_ZMM9H, + REG_GDB_LINUX_AVX512_64_ZMM10H, + REG_GDB_LINUX_AVX512_64_ZMM11H, + REG_GDB_LINUX_AVX512_64_ZMM12H, + REG_GDB_LINUX_AVX512_64_ZMM13H, + REG_GDB_LINUX_AVX512_64_ZMM14H, + REG_GDB_LINUX_AVX512_64_ZMM15H, + REG_GDB_LINUX_AVX512_64_ZMM16H, + REG_GDB_LINUX_AVX512_64_ZMM17H, + REG_GDB_LINUX_AVX512_64_ZMM18H, + REG_GDB_LINUX_AVX512_64_ZMM19H, + REG_GDB_LINUX_AVX512_64_ZMM20H, + REG_GDB_LINUX_AVX512_64_ZMM21H, + REG_GDB_LINUX_AVX512_64_ZMM22H, + REG_GDB_LINUX_AVX512_64_ZMM23H, + REG_GDB_LINUX_AVX512_64_ZMM24H, + REG_GDB_LINUX_AVX512_64_ZMM25H, + REG_GDB_LINUX_AVX512_64_ZMM26H, + REG_GDB_LINUX_AVX512_64_ZMM27H, + REG_GDB_LINUX_AVX512_64_ZMM28H, + REG_GDB_LINUX_AVX512_64_ZMM29H, + REG_GDB_LINUX_AVX512_64_ZMM30H, + REG_GDB_LINUX_AVX512_64_ZMM31H, + REG_GDB_LINUX_AVX512_64_LAST = REG_GDB_LINUX_AVX512_64_ZMM31H +}; + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/regs-gdb-linux-avx64.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/regs-gdb-linux-avx64.hpp new file mode 100644 index 0000000..ff817ed --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/regs-gdb-linux-avx64.hpp @@ -0,0 +1,222 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : debugger-protocol +// : component public header + +#ifndef DEBUGGER_PROTOCOL_REGS_GDB_LINUX_AVX64_HPP +#define DEBUGGER_PROTOCOL_REGS_GDB_LINUX_AVX64_HPP + +#include "debugger-protocol.hpp" + + +namespace DEBUGGER_PROTOCOL { + +#if defined(DEBUGGER_PROTOCOL_BUILD) // Library clients should NOT define this. + +/*! + * This is the register set used by GDB for 64-bit AVX on Linux. + */ +DEBUGGER_PROTOCOL_API REG_DESCRIPTION RegsGdbLinuxAvx64[] = +{ + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_RAX + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_RBX + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_RCX + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_RDX + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_RSI + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_RDI + {64, REG_INVALID, true}, // REG_GDB_LINUX_AVX64_RBP + {64, REG_INVALID, true}, // REG_GDB_LINUX_AVX64_RSP + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_R8 + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_R9 + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_R10 + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_R11 + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_R12 + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_R13 + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_R14 + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_R15 + {64, REG_PC, true}, // REG_GDB_LINUX_AVX64_PC + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_EFLAGS + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_CS + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_SS + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_DS + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_ES + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_FS + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_GS + {80, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_ST0 + {80, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_ST1 + {80, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_ST2 + {80, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_ST3 + {80, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_ST4 + {80, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_ST5 + {80, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_ST6 + {80, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_ST7 + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_FCTRL + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_FSTAT + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_FTAG_FULL + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_FISEG + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_FIOFF + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_FOSEG + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_FOOFF + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_FOP + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_XMM0 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_XMM1 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_XMM2 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_XMM3 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_XMM4 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_XMM5 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_XMM6 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_XMM7 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_XMM8 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_XMM9 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_XMM10 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_XMM11 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_XMM12 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_XMM13 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_XMM14 + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_XMM15 + {32, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_MXCSR + {64, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_ORIG_RAX + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_YMM0H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_YMM1H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_YMM2H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_YMM3H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_YMM4H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_YMM5H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_YMM6H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_YMM7H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_YMM8H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_YMM9H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_YMM10H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_YMM11H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_YMM12H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_YMM13H + {128, REG_INVALID, false}, // REG_GDB_LINUX_AVX64_YMM14H + {128, REG_INVALID, false} // REG_GDB_LINUX_AVX64_YMM15H +}; + +/*! + * Number of entries in RegsGdbLinuxAvx64. + */ +DEBUGGER_PROTOCOL_API unsigned RegsGdbLinuxAvx64Count = sizeof(RegsGdbLinuxAvx64) / sizeof(RegsGdbLinuxAvx64[0]); + +#else + +DEBUGGER_PROTOCOL_API extern REG_DESCRIPTION RegsGdbLinuxAvx64[]; ///< GDB's 64-bit AVX register set on Linux. +DEBUGGER_PROTOCOL_API extern unsigned RegsGdbLinuxAvx64Count; ///< Number of entries in RegsGdbLinuxAvx64. + +#endif /*DEBUGGER_PROTOCOL_BUILD*/ + + +/*! + * Convenient identifiers for the registers in this set. + */ +enum REG_GDB_LINUX_AVX64 +{ + REG_GDB_LINUX_AVX64_FIRST = REG_END, + REG_GDB_LINUX_AVX64_RAX = REG_GDB_LINUX_AVX64_FIRST, + REG_GDB_LINUX_AVX64_RBX, + REG_GDB_LINUX_AVX64_RCX, + REG_GDB_LINUX_AVX64_RDX, + REG_GDB_LINUX_AVX64_RSI, + REG_GDB_LINUX_AVX64_RDI, + REG_GDB_LINUX_AVX64_RBP, + REG_GDB_LINUX_AVX64_RSP, + REG_GDB_LINUX_AVX64_R8, + REG_GDB_LINUX_AVX64_R9, + REG_GDB_LINUX_AVX64_R10, + REG_GDB_LINUX_AVX64_R11, + REG_GDB_LINUX_AVX64_R12, + REG_GDB_LINUX_AVX64_R13, + REG_GDB_LINUX_AVX64_R14, + REG_GDB_LINUX_AVX64_R15, + REG_GDB_LINUX_AVX64_PC, + REG_GDB_LINUX_AVX64_EFLAGS, + REG_GDB_LINUX_AVX64_CS, + REG_GDB_LINUX_AVX64_SS, + REG_GDB_LINUX_AVX64_DS, + REG_GDB_LINUX_AVX64_ES, + REG_GDB_LINUX_AVX64_FS, + REG_GDB_LINUX_AVX64_GS, + REG_GDB_LINUX_AVX64_ST0, + REG_GDB_LINUX_AVX64_ST1, + REG_GDB_LINUX_AVX64_ST2, + REG_GDB_LINUX_AVX64_ST3, + REG_GDB_LINUX_AVX64_ST4, + REG_GDB_LINUX_AVX64_ST5, + REG_GDB_LINUX_AVX64_ST6, + REG_GDB_LINUX_AVX64_ST7, + REG_GDB_LINUX_AVX64_FCTRL, + REG_GDB_LINUX_AVX64_FSTAT, + REG_GDB_LINUX_AVX64_FTAG_FULL, // 16-bit "full" encoding + REG_GDB_LINUX_AVX64_FISEG, + REG_GDB_LINUX_AVX64_FIOFF, + REG_GDB_LINUX_AVX64_FOSEG, + REG_GDB_LINUX_AVX64_FOOFF, + REG_GDB_LINUX_AVX64_FOP, + REG_GDB_LINUX_AVX64_XMM0, + REG_GDB_LINUX_AVX64_XMM1, + REG_GDB_LINUX_AVX64_XMM2, + REG_GDB_LINUX_AVX64_XMM3, + REG_GDB_LINUX_AVX64_XMM4, + REG_GDB_LINUX_AVX64_XMM5, + REG_GDB_LINUX_AVX64_XMM6, + REG_GDB_LINUX_AVX64_XMM7, + REG_GDB_LINUX_AVX64_XMM8, + REG_GDB_LINUX_AVX64_XMM9, + REG_GDB_LINUX_AVX64_XMM10, + REG_GDB_LINUX_AVX64_XMM11, + REG_GDB_LINUX_AVX64_XMM12, + REG_GDB_LINUX_AVX64_XMM13, + REG_GDB_LINUX_AVX64_XMM14, + REG_GDB_LINUX_AVX64_XMM15, + REG_GDB_LINUX_AVX64_MXCSR, + REG_GDB_LINUX_AVX64_ORIG_RAX, + REG_GDB_LINUX_AVX64_YMM0H, + REG_GDB_LINUX_AVX64_YMM1H, + REG_GDB_LINUX_AVX64_YMM2H, + REG_GDB_LINUX_AVX64_YMM3H, + REG_GDB_LINUX_AVX64_YMM4H, + REG_GDB_LINUX_AVX64_YMM5H, + REG_GDB_LINUX_AVX64_YMM6H, + REG_GDB_LINUX_AVX64_YMM7H, + REG_GDB_LINUX_AVX64_YMM8H, + REG_GDB_LINUX_AVX64_YMM9H, + REG_GDB_LINUX_AVX64_YMM10H, + REG_GDB_LINUX_AVX64_YMM11H, + REG_GDB_LINUX_AVX64_YMM12H, + REG_GDB_LINUX_AVX64_YMM13H, + REG_GDB_LINUX_AVX64_YMM14H, + REG_GDB_LINUX_AVX64_YMM15H, + REG_GDB_LINUX_AVX64_LAST = REG_GDB_LINUX_AVX64_YMM15H +}; + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/regs-gdb-linux-ia32.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/regs-gdb-linux-ia32.hpp new file mode 100644 index 0000000..3c38cbd --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/regs-gdb-linux-ia32.hpp @@ -0,0 +1,158 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : debugger-protocol +// : component public header + +#ifndef DEBUGGER_PROTOCOL_REGS_GDB_LINUX_IA32_HPP +#define DEBUGGER_PROTOCOL_REGS_GDB_LINUX_IA32_HPP + +#include "debugger-protocol.hpp" + + +namespace DEBUGGER_PROTOCOL { + +#if defined(DEBUGGER_PROTOCOL_BUILD) // Library clients should NOT define this. + +/*! + * This is the register set GDB uses on IA32 Linux. + */ +DEBUGGER_PROTOCOL_API REG_DESCRIPTION RegsGdbLinuxIA32[] = +{ + {32, REG_INVALID, false}, // REG_GDB_LINUX_IA32_EAX + {32, REG_INVALID, false}, // REG_GDB_LINUX_IA32_ECX + {32, REG_INVALID, false}, // REG_GDB_LINUX_IA32_EDX + {32, REG_INVALID, false}, // REG_GDB_LINUX_IA32_EBX + {32, REG_INVALID, true}, // REG_GDB_LINUX_IA32_ESP + {32, REG_INVALID, true}, // REG_GDB_LINUX_IA32_EBP + {32, REG_INVALID, false}, // REG_GDB_LINUX_IA32_ESI + {32, REG_INVALID, false}, // REG_GDB_LINUX_IA32_EDI + {32, REG_PC, true}, // REG_GDB_LINUX_IA32_PC + {32, REG_INVALID, false}, // REG_GDB_LINUX_IA32_EFLAGS + {32, REG_INVALID, false}, // REG_GDB_LINUX_IA32_CS + {32, REG_INVALID, false}, // REG_GDB_LINUX_IA32_SS + {32, REG_INVALID, false}, // REG_GDB_LINUX_IA32_DS + {32, REG_INVALID, false}, // REG_GDB_LINUX_IA32_ES + {32, REG_INVALID, false}, // REG_GDB_LINUX_IA32_FS + {32, REG_INVALID, false}, // REG_GDB_LINUX_IA32_GS + {80, REG_INVALID, false}, // REG_GDB_LINUX_IA32_ST0 + {80, REG_INVALID, false}, // REG_GDB_LINUX_IA32_ST1 + {80, REG_INVALID, false}, // REG_GDB_LINUX_IA32_ST2 + {80, REG_INVALID, false}, // REG_GDB_LINUX_IA32_ST3 + {80, REG_INVALID, false}, // REG_GDB_LINUX_IA32_ST4 + {80, REG_INVALID, false}, // REG_GDB_LINUX_IA32_ST5 + {80, REG_INVALID, false}, // REG_GDB_LINUX_IA32_ST6 + {80, REG_INVALID, false}, // REG_GDB_LINUX_IA32_ST7 + {32, REG_INVALID, false}, // REG_GDB_LINUX_IA32_FCTRL + {32, REG_INVALID, false}, // REG_GDB_LINUX_IA32_FSTAT + {32, REG_INVALID, false}, // REG_GDB_LINUX_IA32_FTAG_FULL + {32, REG_INVALID, false}, // REG_GDB_LINUX_IA32_FISEG + {32, REG_INVALID, false}, // REG_GDB_LINUX_IA32_FIOFF + {32, REG_INVALID, false}, // REG_GDB_LINUX_IA32_FOSEG + {32, REG_INVALID, false}, // REG_GDB_LINUX_IA32_FOOFF + {32, REG_INVALID, false}, // REG_GDB_LINUX_IA32_FOP + {128, REG_INVALID, false}, // REG_GDB_LINUX_IA32_XMM0 + {128, REG_INVALID, false}, // REG_GDB_LINUX_IA32_XMM1 + {128, REG_INVALID, false}, // REG_GDB_LINUX_IA32_XMM2 + {128, REG_INVALID, false}, // REG_GDB_LINUX_IA32_XMM3 + {128, REG_INVALID, false}, // REG_GDB_LINUX_IA32_XMM4 + {128, REG_INVALID, false}, // REG_GDB_LINUX_IA32_XMM5 + {128, REG_INVALID, false}, // REG_GDB_LINUX_IA32_XMM6 + {128, REG_INVALID, false}, // REG_GDB_LINUX_IA32_XMM7 + {32, REG_INVALID, false}, // REG_GDB_LINUX_IA32_MXCSR + {32, REG_INVALID, false} // REG_GDB_LINUX_IA32_ORIG_EAX +}; + +/*! + * Number of entries in RegsGdbLinuxIA32. + */ +DEBUGGER_PROTOCOL_API unsigned RegsGdbLinuxIA32Count = sizeof(RegsGdbLinuxIA32) / sizeof(RegsGdbLinuxIA32[0]); + +#else + +DEBUGGER_PROTOCOL_API extern REG_DESCRIPTION RegsGdbLinuxIA32[]; ///< GDB's IA32 register set on Linux. +DEBUGGER_PROTOCOL_API extern unsigned RegsGdbLinuxIA32Count; ///< Number of entries in RegsGdbLinuxIA32. + +#endif /*DEBUGGER_PROTOCOL_BUILD*/ + + +/*! + * Convenient identifiers for the registers in this set. + */ +enum REG_GDB_LINUX_IA32 +{ + REG_GDB_LINUX_IA32_FIRST = REG_END, + REG_GDB_LINUX_IA32_EAX = REG_GDB_LINUX_IA32_FIRST, + REG_GDB_LINUX_IA32_ECX, + REG_GDB_LINUX_IA32_EDX, + REG_GDB_LINUX_IA32_EBX, + REG_GDB_LINUX_IA32_ESP, + REG_GDB_LINUX_IA32_EBP, + REG_GDB_LINUX_IA32_ESI, + REG_GDB_LINUX_IA32_EDI, + REG_GDB_LINUX_IA32_PC, + REG_GDB_LINUX_IA32_EFLAGS, + REG_GDB_LINUX_IA32_CS, + REG_GDB_LINUX_IA32_SS, + REG_GDB_LINUX_IA32_DS, + REG_GDB_LINUX_IA32_ES, + REG_GDB_LINUX_IA32_FS, + REG_GDB_LINUX_IA32_GS, + REG_GDB_LINUX_IA32_ST0, + REG_GDB_LINUX_IA32_ST1, + REG_GDB_LINUX_IA32_ST2, + REG_GDB_LINUX_IA32_ST3, + REG_GDB_LINUX_IA32_ST4, + REG_GDB_LINUX_IA32_ST5, + REG_GDB_LINUX_IA32_ST6, + REG_GDB_LINUX_IA32_ST7, + REG_GDB_LINUX_IA32_FCTRL, + REG_GDB_LINUX_IA32_FSTAT, + REG_GDB_LINUX_IA32_FTAG_FULL, // 16-bit "full" encoding + REG_GDB_LINUX_IA32_FISEG, + REG_GDB_LINUX_IA32_FIOFF, + REG_GDB_LINUX_IA32_FOSEG, + REG_GDB_LINUX_IA32_FOOFF, + REG_GDB_LINUX_IA32_FOP, + REG_GDB_LINUX_IA32_XMM0, + REG_GDB_LINUX_IA32_XMM1, + REG_GDB_LINUX_IA32_XMM2, + REG_GDB_LINUX_IA32_XMM3, + REG_GDB_LINUX_IA32_XMM4, + REG_GDB_LINUX_IA32_XMM5, + REG_GDB_LINUX_IA32_XMM6, + REG_GDB_LINUX_IA32_XMM7, + REG_GDB_LINUX_IA32_MXCSR, + REG_GDB_LINUX_IA32_ORIG_EAX, + REG_GDB_LINUX_IA32_LAST = REG_GDB_LINUX_IA32_ORIG_EAX +}; + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/regs-gdb-linux-intel64.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/regs-gdb-linux-intel64.hpp new file mode 100644 index 0000000..694fee4 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/regs-gdb-linux-intel64.hpp @@ -0,0 +1,190 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : debugger-protocol +// : component public header + +#ifndef DEBUGGER_PROTOCOL_REGS_GDB_LINUX_INTEL64_HPP +#define DEBUGGER_PROTOCOL_REGS_GDB_LINUX_INTEL64_HPP + +#include "debugger-protocol.hpp" + + +namespace DEBUGGER_PROTOCOL { + +#if defined(DEBUGGER_PROTOCOL_BUILD) // Library clients should NOT define this. + +/*! + * This is the register set GDB uses on Intel64 Linux. + */ +DEBUGGER_PROTOCOL_API REG_DESCRIPTION RegsGdbLinuxIntel64[] = +{ + {64, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_RAX + {64, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_RBX + {64, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_RCX + {64, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_RDX + {64, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_RSI + {64, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_RDI + {64, REG_INVALID, true}, // REG_GDB_LINUX_INTEL64_RBP + {64, REG_INVALID, true}, // REG_GDB_LINUX_INTEL64_RSP + {64, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_R8 + {64, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_R9 + {64, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_R10 + {64, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_R11 + {64, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_R12 + {64, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_R13 + {64, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_R14 + {64, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_R15 + {64, REG_PC, true}, // REG_GDB_LINUX_INTEL64_PC + {32, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_EFLAGS + {32, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_CS + {32, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_SS + {32, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_DS + {32, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_ES + {32, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_FS + {32, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_GS + {80, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_ST0 + {80, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_ST1 + {80, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_ST2 + {80, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_ST3 + {80, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_ST4 + {80, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_ST5 + {80, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_ST6 + {80, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_ST7 + {32, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_FCTRL + {32, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_FSTAT + {32, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_FTAG_FULL + {32, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_FISEG + {32, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_FIOFF + {32, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_FOSEG + {32, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_FOOFF + {32, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_FOP + {128, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_XMM0 + {128, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_XMM1 + {128, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_XMM2 + {128, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_XMM3 + {128, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_XMM4 + {128, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_XMM5 + {128, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_XMM6 + {128, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_XMM7 + {128, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_XMM8 + {128, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_XMM9 + {128, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_XMM10 + {128, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_XMM11 + {128, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_XMM12 + {128, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_XMM13 + {128, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_XMM14 + {128, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_XMM15 + {32, REG_INVALID, false}, // REG_GDB_LINUX_INTEL64_MXCSR + {64, REG_INVALID, false} // REG_GDB_LINUX_INTEL64_ORIG_RAX +}; + +/*! + * Number of entries in RegsGdbLinuxIntel64. + */ +DEBUGGER_PROTOCOL_API unsigned RegsGdbLinuxIntel64Count = sizeof(RegsGdbLinuxIntel64) / sizeof(RegsGdbLinuxIntel64[0]); + +#else + +DEBUGGER_PROTOCOL_API extern REG_DESCRIPTION RegsGdbLinuxIntel64[]; ///< GDB's Intel64 register set on Linux. +DEBUGGER_PROTOCOL_API extern unsigned RegsGdbLinuxIntel64Count; ///< Number of entries in RegsGdbLinuxIntel64. + +#endif /*DEBUGGER_PROTOCOL_BUILD*/ + + +/*! + * Convenient identifiers for the registers in this set. + */ +enum REG_GDB_LINUX_INTEL64 +{ + REG_GDB_LINUX_INTEL64_FIRST = REG_END, + REG_GDB_LINUX_INTEL64_RAX = REG_GDB_LINUX_INTEL64_FIRST, + REG_GDB_LINUX_INTEL64_RBX, + REG_GDB_LINUX_INTEL64_RCX, + REG_GDB_LINUX_INTEL64_RDX, + REG_GDB_LINUX_INTEL64_RSI, + REG_GDB_LINUX_INTEL64_RDI, + REG_GDB_LINUX_INTEL64_RBP, + REG_GDB_LINUX_INTEL64_RSP, + REG_GDB_LINUX_INTEL64_R8, + REG_GDB_LINUX_INTEL64_R9, + REG_GDB_LINUX_INTEL64_R10, + REG_GDB_LINUX_INTEL64_R11, + REG_GDB_LINUX_INTEL64_R12, + REG_GDB_LINUX_INTEL64_R13, + REG_GDB_LINUX_INTEL64_R14, + REG_GDB_LINUX_INTEL64_R15, + REG_GDB_LINUX_INTEL64_PC, + REG_GDB_LINUX_INTEL64_EFLAGS, + REG_GDB_LINUX_INTEL64_CS, + REG_GDB_LINUX_INTEL64_SS, + REG_GDB_LINUX_INTEL64_DS, + REG_GDB_LINUX_INTEL64_ES, + REG_GDB_LINUX_INTEL64_FS, + REG_GDB_LINUX_INTEL64_GS, + REG_GDB_LINUX_INTEL64_ST0, + REG_GDB_LINUX_INTEL64_ST1, + REG_GDB_LINUX_INTEL64_ST2, + REG_GDB_LINUX_INTEL64_ST3, + REG_GDB_LINUX_INTEL64_ST4, + REG_GDB_LINUX_INTEL64_ST5, + REG_GDB_LINUX_INTEL64_ST6, + REG_GDB_LINUX_INTEL64_ST7, + REG_GDB_LINUX_INTEL64_FCTRL, + REG_GDB_LINUX_INTEL64_FSTAT, + REG_GDB_LINUX_INTEL64_FTAG_FULL, // 16-bit "full" encoding + REG_GDB_LINUX_INTEL64_FISEG, + REG_GDB_LINUX_INTEL64_FIOFF, + REG_GDB_LINUX_INTEL64_FOSEG, + REG_GDB_LINUX_INTEL64_FOOFF, + REG_GDB_LINUX_INTEL64_FOP, + REG_GDB_LINUX_INTEL64_XMM0, + REG_GDB_LINUX_INTEL64_XMM1, + REG_GDB_LINUX_INTEL64_XMM2, + REG_GDB_LINUX_INTEL64_XMM3, + REG_GDB_LINUX_INTEL64_XMM4, + REG_GDB_LINUX_INTEL64_XMM5, + REG_GDB_LINUX_INTEL64_XMM6, + REG_GDB_LINUX_INTEL64_XMM7, + REG_GDB_LINUX_INTEL64_XMM8, + REG_GDB_LINUX_INTEL64_XMM9, + REG_GDB_LINUX_INTEL64_XMM10, + REG_GDB_LINUX_INTEL64_XMM11, + REG_GDB_LINUX_INTEL64_XMM12, + REG_GDB_LINUX_INTEL64_XMM13, + REG_GDB_LINUX_INTEL64_XMM14, + REG_GDB_LINUX_INTEL64_XMM15, + REG_GDB_LINUX_INTEL64_MXCSR, + REG_GDB_LINUX_INTEL64_ORIG_RAX, + REG_GDB_LINUX_INTEL64_LAST = REG_GDB_LINUX_INTEL64_ORIG_RAX +}; + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/regs-gdb-mac-ia32.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/regs-gdb-mac-ia32.hpp new file mode 100644 index 0000000..a266c4a --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/regs-gdb-mac-ia32.hpp @@ -0,0 +1,172 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : debugger-protocol +// : component public header + +#ifndef DEBUGGER_PROTOCOL_REGS_GDB_MAC_IA32_HPP +#define DEBUGGER_PROTOCOL_REGS_GDB_MAC_IA32_HPP + +#include "debugger-protocol.hpp" + + +namespace DEBUGGER_PROTOCOL { + +#if defined(DEBUGGER_PROTOCOL_BUILD) // Library clients should NOT define this. + +/*! + * This is the register set GDB uses on IA32 OS X*. + */ +DEBUGGER_PROTOCOL_API REG_DESCRIPTION RegsGdbMacIA32[] = +{ + {32, REG_INVALID, false}, // REG_GDB_MAC_IA32_EAX + {32, REG_INVALID, false}, // REG_GDB_MAC_IA32_ECX + {32, REG_INVALID, false}, // REG_GDB_MAC_IA32_EDX + {32, REG_INVALID, false}, // REG_GDB_MAC_IA32_EBX + {32, REG_INVALID, true}, // REG_GDB_MAC_IA32_ESP + {32, REG_INVALID, true}, // REG_GDB_MAC_IA32_EBP + {32, REG_INVALID, false}, // REG_GDB_MAC_IA32_ESI + {32, REG_INVALID, false}, // REG_GDB_MAC_IA32_EDI + {32, REG_PC, true}, // REG_GDB_MAC_IA32_PC + {32, REG_INVALID, false}, // REG_GDB_MAC_IA32_EFLAGS + {32, REG_INVALID, false}, // REG_GDB_MAC_IA32_CS + {32, REG_INVALID, false}, // REG_GDB_MAC_IA32_SS + {32, REG_INVALID, false}, // REG_GDB_MAC_IA32_DS + {32, REG_INVALID, false}, // REG_GDB_MAC_IA32_ES + {32, REG_INVALID, false}, // REG_GDB_MAC_IA32_FS + {32, REG_INVALID, false}, // REG_GDB_MAC_IA32_GS + {80, REG_INVALID, false}, // REG_GDB_MAC_IA32_ST0 + {80, REG_INVALID, false}, // REG_GDB_MAC_IA32_ST1 + {80, REG_INVALID, false}, // REG_GDB_MAC_IA32_ST2 + {80, REG_INVALID, false}, // REG_GDB_MAC_IA32_ST3 + {80, REG_INVALID, false}, // REG_GDB_MAC_IA32_ST4 + {80, REG_INVALID, false}, // REG_GDB_MAC_IA32_ST5 + {80, REG_INVALID, false}, // REG_GDB_MAC_IA32_ST6 + {80, REG_INVALID, false}, // REG_GDB_MAC_IA32_ST7 + {32, REG_INVALID, false}, // REG_GDB_MAC_IA32_FCTRL + {32, REG_INVALID, false}, // REG_GDB_MAC_IA32_FSTAT + {32, REG_INVALID, false}, // REG_GDB_MAC_IA32_FTAG_FULL + {32, REG_INVALID, false}, // REG_GDB_MAC_IA32_FISEG + {32, REG_INVALID, false}, // REG_GDB_MAC_IA32_FIOFF + {32, REG_INVALID, false}, // REG_GDB_MAC_IA32_FOSEG + {32, REG_INVALID, false}, // REG_GDB_MAC_IA32_FOOFF + {32, REG_INVALID, false}, // REG_GDB_MAC_IA32_FOP + {128, REG_INVALID, false}, // REG_GDB_MAC_IA32_XMM0 + {128, REG_INVALID, false}, // REG_GDB_MAC_IA32_XMM1 + {128, REG_INVALID, false}, // REG_GDB_MAC_IA32_XMM2 + {128, REG_INVALID, false}, // REG_GDB_MAC_IA32_XMM3 + {128, REG_INVALID, false}, // REG_GDB_MAC_IA32_XMM4 + {128, REG_INVALID, false}, // REG_GDB_MAC_IA32_XMM5 + {128, REG_INVALID, false}, // REG_GDB_MAC_IA32_XMM6 + {128, REG_INVALID, false}, // REG_GDB_MAC_IA32_XMM7 + {32, REG_INVALID, false}, // REG_GDB_MAC_IA32_MXCSR + {256, REG_INVALID, false}, // REG_GDB_MAC_IA32_YMM0 + {256, REG_INVALID, false}, // REG_GDB_MAC_IA32_YMM1 + {256, REG_INVALID, false}, // REG_GDB_MAC_IA32_YMM2 + {256, REG_INVALID, false}, // REG_GDB_MAC_IA32_YMM3 + {256, REG_INVALID, false}, // REG_GDB_MAC_IA32_YMM4 + {256, REG_INVALID, false}, // REG_GDB_MAC_IA32_YMM5 + {256, REG_INVALID, false}, // REG_GDB_MAC_IA32_YMM6 + {256, REG_INVALID, false} // REG_GDB_MAC_IA32_YMM7 +}; + +/*! + * Number of entries in RegsGdbMacIA32. + */ +DEBUGGER_PROTOCOL_API unsigned RegsGdbMacIA32Count = sizeof(RegsGdbMacIA32) / sizeof(RegsGdbMacIA32[0]); + +#else + +DEBUGGER_PROTOCOL_API extern REG_DESCRIPTION RegsGdbMacIA32[]; ///< GDB's IA32 register set on OS X*. +DEBUGGER_PROTOCOL_API extern unsigned RegsGdbMacIA32Count; ///< Number of entries in RegsGdbMacIA32. + +#endif /*DEBUGGER_PROTOCOL_BUILD*/ + + +/*! + * Convenient identifiers for the registers in this set. + */ +enum REG_GDB_MAC_IA32 +{ + REG_GDB_MAC_IA32_FIRST = REG_END, + REG_GDB_MAC_IA32_EAX = REG_GDB_MAC_IA32_FIRST, + REG_GDB_MAC_IA32_ECX, + REG_GDB_MAC_IA32_EDX, + REG_GDB_MAC_IA32_EBX, + REG_GDB_MAC_IA32_ESP, + REG_GDB_MAC_IA32_EBP, + REG_GDB_MAC_IA32_ESI, + REG_GDB_MAC_IA32_EDI, + REG_GDB_MAC_IA32_PC, + REG_GDB_MAC_IA32_EFLAGS, + REG_GDB_MAC_IA32_CS, + REG_GDB_MAC_IA32_SS, + REG_GDB_MAC_IA32_DS, + REG_GDB_MAC_IA32_ES, + REG_GDB_MAC_IA32_FS, + REG_GDB_MAC_IA32_GS, + REG_GDB_MAC_IA32_ST0, + REG_GDB_MAC_IA32_ST1, + REG_GDB_MAC_IA32_ST2, + REG_GDB_MAC_IA32_ST3, + REG_GDB_MAC_IA32_ST4, + REG_GDB_MAC_IA32_ST5, + REG_GDB_MAC_IA32_ST6, + REG_GDB_MAC_IA32_ST7, + REG_GDB_MAC_IA32_FCTRL, + REG_GDB_MAC_IA32_FSTAT, + REG_GDB_MAC_IA32_FTAG_FULL, // 16-bit "full" encoding + REG_GDB_MAC_IA32_FISEG, + REG_GDB_MAC_IA32_FIOFF, + REG_GDB_MAC_IA32_FOSEG, + REG_GDB_MAC_IA32_FOOFF, + REG_GDB_MAC_IA32_FOP, + REG_GDB_MAC_IA32_XMM0, + REG_GDB_MAC_IA32_XMM1, + REG_GDB_MAC_IA32_XMM2, + REG_GDB_MAC_IA32_XMM3, + REG_GDB_MAC_IA32_XMM4, + REG_GDB_MAC_IA32_XMM5, + REG_GDB_MAC_IA32_XMM6, + REG_GDB_MAC_IA32_XMM7, + REG_GDB_MAC_IA32_MXCSR, + REG_GDB_MAC_IA32_YMM0, + REG_GDB_MAC_IA32_YMM1, + REG_GDB_MAC_IA32_YMM2, + REG_GDB_MAC_IA32_YMM3, + REG_GDB_MAC_IA32_YMM4, + REG_GDB_MAC_IA32_YMM5, + REG_GDB_MAC_IA32_YMM6, + REG_GDB_MAC_IA32_YMM7, + REG_GDB_MAC_IA32_LAST = REG_GDB_MAC_IA32_YMM7 +}; + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/regs-gdb-mac-intel64.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/regs-gdb-mac-intel64.hpp new file mode 100644 index 0000000..1ad7e0e --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/regs-gdb-mac-intel64.hpp @@ -0,0 +1,220 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : debugger-protocol +// : component public header + +#ifndef DEBUGGER_PROTOCOL_REGS_GDB_MAC_INTEL64_HPP +#define DEBUGGER_PROTOCOL_REGS_GDB_MAC_INTEL64_HPP + +#include "debugger-protocol.hpp" + + +namespace DEBUGGER_PROTOCOL { + +#if defined(DEBUGGER_PROTOCOL_BUILD) // Library clients should NOT define this. + +/*! + * This is the register set GDB uses on Intel64 OS X*. + */ +DEBUGGER_PROTOCOL_API REG_DESCRIPTION RegsGdbMacIntel64[] = +{ + {64, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_RAX + {64, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_RBX + {64, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_RCX + {64, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_RDX + {64, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_RSI + {64, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_RDI + {64, REG_INVALID, true}, // REG_GDB_MAC_INTEL64_RBP + {64, REG_INVALID, true}, // REG_GDB_MAC_INTEL64_RSP + {64, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_R8 + {64, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_R9 + {64, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_R10 + {64, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_R11 + {64, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_R12 + {64, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_R13 + {64, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_R14 + {64, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_R15 + {64, REG_PC, true}, // REG_GDB_MAC_INTEL64_PC + {32, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_EFLAGS + {32, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_CS + {32, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_SS + {32, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_DS + {32, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_ES + {32, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_FS + {32, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_GS + {80, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_ST0 + {80, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_ST1 + {80, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_ST2 + {80, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_ST3 + {80, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_ST4 + {80, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_ST5 + {80, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_ST6 + {80, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_ST7 + {32, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_FCTRL + {32, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_FSTAT + {32, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_FTAG_FULL + {32, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_FISEG + {32, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_FIOFF + {32, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_FOSEG + {32, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_FOOFF + {32, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_FOP + {128, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_XMM0 + {128, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_XMM1 + {128, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_XMM2 + {128, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_XMM3 + {128, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_XMM4 + {128, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_XMM5 + {128, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_XMM6 + {128, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_XMM7 + {128, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_XMM8 + {128, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_XMM9 + {128, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_XMM10 + {128, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_XMM11 + {128, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_XMM12 + {128, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_XMM13 + {128, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_XMM14 + {128, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_XMM15 + {32, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_MXCSR + {256, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_YMM0 + {256, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_YMM1 + {256, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_YMM2 + {256, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_YMM3 + {256, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_YMM4 + {256, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_YMM5 + {256, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_YMM6 + {256, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_YMM7 + {256, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_YMM8 + {256, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_YMM9 + {256, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_YMM10 + {256, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_YMM11 + {256, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_YMM12 + {256, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_YMM13 + {256, REG_INVALID, false}, // REG_GDB_MAC_INTEL64_YMM14 + {256, REG_INVALID, false} // REG_GDB_MAC_INTEL64_YMM15 +}; + +/*! + * Number of entries in RegsGdbMacIntel64. + */ +DEBUGGER_PROTOCOL_API unsigned RegsGdbMacIntel64Count = sizeof(RegsGdbMacIntel64) / sizeof(RegsGdbMacIntel64[0]); + +#else + +DEBUGGER_PROTOCOL_API extern REG_DESCRIPTION RegsGdbMacIntel64[]; ///< GDB's Intel64 register set on OS X*. +DEBUGGER_PROTOCOL_API extern unsigned RegsGdbMacIntel64Count; ///< Number of entries in RegsGdbMacIntel64. + +#endif /*DEBUGGER_PROTOCOL_BUILD*/ + + +/*! + * Convenient identifiers for the registers in this set. + */ +enum REG_GDB_MAC_INTEL64 +{ + REG_GDB_MAC_INTEL64_FIRST = REG_END, + REG_GDB_MAC_INTEL64_RAX = REG_GDB_MAC_INTEL64_FIRST, + REG_GDB_MAC_INTEL64_RBX, + REG_GDB_MAC_INTEL64_RCX, + REG_GDB_MAC_INTEL64_RDX, + REG_GDB_MAC_INTEL64_RSI, + REG_GDB_MAC_INTEL64_RDI, + REG_GDB_MAC_INTEL64_RBP, + REG_GDB_MAC_INTEL64_RSP, + REG_GDB_MAC_INTEL64_R8, + REG_GDB_MAC_INTEL64_R9, + REG_GDB_MAC_INTEL64_R10, + REG_GDB_MAC_INTEL64_R11, + REG_GDB_MAC_INTEL64_R12, + REG_GDB_MAC_INTEL64_R13, + REG_GDB_MAC_INTEL64_R14, + REG_GDB_MAC_INTEL64_R15, + REG_GDB_MAC_INTEL64_PC, + REG_GDB_MAC_INTEL64_EFLAGS, + REG_GDB_MAC_INTEL64_CS, + REG_GDB_MAC_INTEL64_SS, + REG_GDB_MAC_INTEL64_DS, + REG_GDB_MAC_INTEL64_ES, + REG_GDB_MAC_INTEL64_FS, + REG_GDB_MAC_INTEL64_GS, + REG_GDB_MAC_INTEL64_ST0, + REG_GDB_MAC_INTEL64_ST1, + REG_GDB_MAC_INTEL64_ST2, + REG_GDB_MAC_INTEL64_ST3, + REG_GDB_MAC_INTEL64_ST4, + REG_GDB_MAC_INTEL64_ST5, + REG_GDB_MAC_INTEL64_ST6, + REG_GDB_MAC_INTEL64_ST7, + REG_GDB_MAC_INTEL64_FCTRL, + REG_GDB_MAC_INTEL64_FSTAT, + REG_GDB_MAC_INTEL64_FTAG_FULL, // 16-bit "full" encoding + REG_GDB_MAC_INTEL64_FISEG, + REG_GDB_MAC_INTEL64_FIOFF, + REG_GDB_MAC_INTEL64_FOSEG, + REG_GDB_MAC_INTEL64_FOOFF, + REG_GDB_MAC_INTEL64_FOP, + REG_GDB_MAC_INTEL64_XMM0, + REG_GDB_MAC_INTEL64_XMM1, + REG_GDB_MAC_INTEL64_XMM2, + REG_GDB_MAC_INTEL64_XMM3, + REG_GDB_MAC_INTEL64_XMM4, + REG_GDB_MAC_INTEL64_XMM5, + REG_GDB_MAC_INTEL64_XMM6, + REG_GDB_MAC_INTEL64_XMM7, + REG_GDB_MAC_INTEL64_XMM8, + REG_GDB_MAC_INTEL64_XMM9, + REG_GDB_MAC_INTEL64_XMM10, + REG_GDB_MAC_INTEL64_XMM11, + REG_GDB_MAC_INTEL64_XMM12, + REG_GDB_MAC_INTEL64_XMM13, + REG_GDB_MAC_INTEL64_XMM14, + REG_GDB_MAC_INTEL64_XMM15, + REG_GDB_MAC_INTEL64_MXCSR, + REG_GDB_MAC_INTEL64_YMM0, + REG_GDB_MAC_INTEL64_YMM1, + REG_GDB_MAC_INTEL64_YMM2, + REG_GDB_MAC_INTEL64_YMM3, + REG_GDB_MAC_INTEL64_YMM4, + REG_GDB_MAC_INTEL64_YMM5, + REG_GDB_MAC_INTEL64_YMM6, + REG_GDB_MAC_INTEL64_YMM7, + REG_GDB_MAC_INTEL64_YMM8, + REG_GDB_MAC_INTEL64_YMM9, + REG_GDB_MAC_INTEL64_YMM10, + REG_GDB_MAC_INTEL64_YMM11, + REG_GDB_MAC_INTEL64_YMM12, + REG_GDB_MAC_INTEL64_YMM13, + REG_GDB_MAC_INTEL64_YMM14, + REG_GDB_MAC_INTEL64_YMM15, + REG_GDB_MAC_INTEL64_LAST = REG_GDB_MAC_INTEL64_YMM15 +}; + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/regs-windows-avx32.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/regs-windows-avx32.hpp new file mode 100644 index 0000000..edfe688 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/regs-windows-avx32.hpp @@ -0,0 +1,174 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : debugger-protocol +// : component public header + +#ifndef DEBUGGER_PROTOCOL_REGS_WINDOWS_AVX32_HPP +#define DEBUGGER_PROTOCOL_REGS_WINDOWS_AVX32_HPP + +#include "debugger-protocol.hpp" + + +namespace DEBUGGER_PROTOCOL { + +#if defined(DEBUGGER_PROTOCOL_BUILD) // Library clients should NOT define this. + +/*! + * This is the register set the Windows debuggers use for 32-bit AVX. + */ +DEBUGGER_PROTOCOL_API REG_DESCRIPTION RegsWindowsAvx32[] = +{ + {32, REG_INVALID, false}, // REG_WINDOWS_AVX32_EAX + {32, REG_INVALID, false}, // REG_WINDOWS_AVX32_ECX + {32, REG_INVALID, false}, // REG_WINDOWS_AVX32_EDX + {32, REG_INVALID, false}, // REG_WINDOWS_AVX32_EBX + {32, REG_INVALID, true}, // REG_WINDOWS_AVX32_ESP + {32, REG_INVALID, true}, // REG_WINDOWS_AVX32_EBP + {32, REG_INVALID, false}, // REG_WINDOWS_AVX32_ESI + {32, REG_INVALID, false}, // REG_WINDOWS_AVX32_EDI + {32, REG_PC, true}, // REG_WINDOWS_AVX32_PC + {32, REG_INVALID, false}, // REG_WINDOWS_AVX32_EFLAGS + {32, REG_INVALID, false}, // REG_WINDOWS_AVX32_CS + {32, REG_INVALID, false}, // REG_WINDOWS_AVX32_SS + {32, REG_INVALID, false}, // REG_WINDOWS_AVX32_DS + {32, REG_INVALID, false}, // REG_WINDOWS_AVX32_ES + {32, REG_INVALID, false}, // REG_WINDOWS_AVX32_FS + {32, REG_INVALID, false}, // REG_WINDOWS_AVX32_GS + {80, REG_INVALID, false}, // REG_WINDOWS_AVX32_ST0 + {80, REG_INVALID, false}, // REG_WINDOWS_AVX32_ST1 + {80, REG_INVALID, false}, // REG_WINDOWS_AVX32_ST2 + {80, REG_INVALID, false}, // REG_WINDOWS_AVX32_ST3 + {80, REG_INVALID, false}, // REG_WINDOWS_AVX32_ST4 + {80, REG_INVALID, false}, // REG_WINDOWS_AVX32_ST5 + {80, REG_INVALID, false}, // REG_WINDOWS_AVX32_ST6 + {80, REG_INVALID, false}, // REG_WINDOWS_AVX32_ST7 + {32, REG_INVALID, false}, // REG_WINDOWS_AVX32_FCTRL + {32, REG_INVALID, false}, // REG_WINDOWS_AVX32_FSTAT + {32, REG_INVALID, false}, // REG_WINDOWS_AVX32_FTAG_FULL + {32, REG_INVALID, false}, // REG_WINDOWS_AVX32_FISEG + {32, REG_INVALID, false}, // REG_WINDOWS_AVX32_FIOFF + {32, REG_INVALID, false}, // REG_WINDOWS_AVX32_FOSEG + {32, REG_INVALID, false}, // REG_WINDOWS_AVX32_FOOFF + {32, REG_INVALID, false}, // REG_WINDOWS_AVX32_FOP + {128, REG_INVALID, false}, // REG_WINDOWS_AVX32_XMM0 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX32_XMM1 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX32_XMM2 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX32_XMM3 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX32_XMM4 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX32_XMM5 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX32_XMM6 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX32_XMM7 + {32, REG_INVALID, false}, // REG_WINDOWS_AVX32_MXCSR + {32, REG_INVALID, false}, // REG_WINDOWS_AVX32_MXCSRMASK + {128, REG_INVALID, false}, // REG_WINDOWS_AVX32_YMM0H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX32_YMM1H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX32_YMM2H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX32_YMM3H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX32_YMM4H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX32_YMM5H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX32_YMM6H + {128, REG_INVALID, false} // REG_WINDOWS_AVX32_YMM7H +}; + +/*! + * Number of entries in RegsWindowsAvx32. + */ +DEBUGGER_PROTOCOL_API unsigned RegsWindowsAvx32Count = sizeof(RegsWindowsAvx32) / sizeof(RegsWindowsAvx32[0]); + +#else + +DEBUGGER_PROTOCOL_API extern REG_DESCRIPTION RegsWindowsAvx32[]; ///< 32-bit Avx register set on Windows. +DEBUGGER_PROTOCOL_API extern unsigned RegsWindowsAvx32Count; ///< Number of entries in RegsWindowsAvx32. + +#endif /*DEBUGGER_PROTOCOL_BUILD*/ + + +/*! + * Convenient identifiers for the registers in this set. + */ +enum REG_WINDOWS_AVX32 +{ + REG_WINDOWS_AVX32_FIRST = REG_END, + REG_WINDOWS_AVX32_EAX = REG_WINDOWS_AVX32_FIRST, + REG_WINDOWS_AVX32_ECX, + REG_WINDOWS_AVX32_EDX, + REG_WINDOWS_AVX32_EBX, + REG_WINDOWS_AVX32_ESP, + REG_WINDOWS_AVX32_EBP, + REG_WINDOWS_AVX32_ESI, + REG_WINDOWS_AVX32_EDI, + REG_WINDOWS_AVX32_PC, + REG_WINDOWS_AVX32_EFLAGS, + REG_WINDOWS_AVX32_CS, + REG_WINDOWS_AVX32_SS, + REG_WINDOWS_AVX32_DS, + REG_WINDOWS_AVX32_ES, + REG_WINDOWS_AVX32_FS, + REG_WINDOWS_AVX32_GS, + REG_WINDOWS_AVX32_ST0, + REG_WINDOWS_AVX32_ST1, + REG_WINDOWS_AVX32_ST2, + REG_WINDOWS_AVX32_ST3, + REG_WINDOWS_AVX32_ST4, + REG_WINDOWS_AVX32_ST5, + REG_WINDOWS_AVX32_ST6, + REG_WINDOWS_AVX32_ST7, + REG_WINDOWS_AVX32_FCTRL, + REG_WINDOWS_AVX32_FSTAT, + REG_WINDOWS_AVX32_FTAG_FULL, // 16-bit "full" encoding + REG_WINDOWS_AVX32_FISEG, + REG_WINDOWS_AVX32_FIOFF, + REG_WINDOWS_AVX32_FOSEG, + REG_WINDOWS_AVX32_FOOFF, + REG_WINDOWS_AVX32_FOP, + REG_WINDOWS_AVX32_XMM0, + REG_WINDOWS_AVX32_XMM1, + REG_WINDOWS_AVX32_XMM2, + REG_WINDOWS_AVX32_XMM3, + REG_WINDOWS_AVX32_XMM4, + REG_WINDOWS_AVX32_XMM5, + REG_WINDOWS_AVX32_XMM6, + REG_WINDOWS_AVX32_XMM7, + REG_WINDOWS_AVX32_MXCSR, + REG_WINDOWS_AVX32_MXCSRMASK, + REG_WINDOWS_AVX32_YMM0H, + REG_WINDOWS_AVX32_YMM1H, + REG_WINDOWS_AVX32_YMM2H, + REG_WINDOWS_AVX32_YMM3H, + REG_WINDOWS_AVX32_YMM4H, + REG_WINDOWS_AVX32_YMM5H, + REG_WINDOWS_AVX32_YMM6H, + REG_WINDOWS_AVX32_YMM7H, + REG_WINDOWS_AVX32_LAST = REG_WINDOWS_AVX32_YMM7H +}; + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/regs-windows-avx512-32.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/regs-windows-avx512-32.hpp new file mode 100644 index 0000000..d0f77b0 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/regs-windows-avx512-32.hpp @@ -0,0 +1,206 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : debugger-protocol +// : component public header + +#ifndef DEBUGGER_PROTOCOL_REGS_WINDOWS_AVX512_32_HPP +#define DEBUGGER_PROTOCOL_REGS_WINDOWS_AVX512_32_HPP + +#include "debugger-protocol.hpp" + + +namespace DEBUGGER_PROTOCOL { + +#if defined(DEBUGGER_PROTOCOL_BUILD) // Library clients should NOT define this. + +/*! + * This is the register set the Windows debuggers use for 32-bit AVX512. + */ +DEBUGGER_PROTOCOL_API REG_DESCRIPTION RegsWindowsAvx512_32[] = +{ + {32, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_EAX + {32, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_ECX + {32, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_EDX + {32, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_EBX + {32, REG_INVALID, true}, // REG_WINDOWS_AVX512_32_ESP + {32, REG_INVALID, true}, // REG_WINDOWS_AVX512_32_EBP + {32, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_ESI + {32, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_EDI + {32, REG_PC, true}, // REG_WINDOWS_AVX512_32_PC + {32, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_EFLAGS + {32, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_CS + {32, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_SS + {32, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_DS + {32, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_ES + {32, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_FS + {32, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_GS + {80, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_ST0 + {80, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_ST1 + {80, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_ST2 + {80, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_ST3 + {80, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_ST4 + {80, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_ST5 + {80, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_ST6 + {80, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_ST7 + {32, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_FCTRL + {32, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_FSTAT + {32, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_FTAG_FULL + {32, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_FISEG + {32, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_FIOFF + {32, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_FOSEG + {32, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_FOOFF + {32, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_FOP + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_XMM0 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_XMM1 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_XMM2 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_XMM3 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_XMM4 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_XMM5 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_XMM6 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_XMM7 + {32, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_MXCSR + {32, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_MXCSRMASK + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_YMM0H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_YMM1H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_YMM2H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_YMM3H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_YMM4H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_YMM5H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_YMM6H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_YMM7H + {64, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_K0 + {64, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_K1 + {64, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_K2 + {64, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_K3 + {64, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_K4 + {64, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_K5 + {64, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_K6 + {64, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_K7 + {256, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_ZMM0H + {256, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_ZMM1H + {256, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_ZMM2H + {256, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_ZMM3H + {256, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_ZMM4H + {256, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_ZMM5H + {256, REG_INVALID, false}, // REG_WINDOWS_AVX512_32_ZMM6H + {256, REG_INVALID, false} // REG_WINDOWS_AVX512_32_ZMM7H +}; + +/*! + * Number of entries in RegsWindowsAvx512_32. + */ +DEBUGGER_PROTOCOL_API unsigned RegsWindowsAvx512_32Count = sizeof(RegsWindowsAvx512_32) / sizeof(RegsWindowsAvx512_32[0]); + +#else + +DEBUGGER_PROTOCOL_API extern REG_DESCRIPTION RegsWindowsAvx512_32[]; ///< 32-bit Avx512 register set on Windows. +DEBUGGER_PROTOCOL_API extern unsigned RegsWindowsAvx512_32Count; ///< Number of entries in RegsWindowsAvx512_32. + +#endif /*DEBUGGER_PROTOCOL_BUILD*/ + + +/*! + * Convenient identifiers for the registers in this set. + */ +enum REG_WINDOWS_AVX512_32 +{ + REG_WINDOWS_AVX512_32_FIRST = REG_END, + REG_WINDOWS_AVX512_32_EAX = REG_WINDOWS_AVX512_32_FIRST, + REG_WINDOWS_AVX512_32_ECX, + REG_WINDOWS_AVX512_32_EDX, + REG_WINDOWS_AVX512_32_EBX, + REG_WINDOWS_AVX512_32_ESP, + REG_WINDOWS_AVX512_32_EBP, + REG_WINDOWS_AVX512_32_ESI, + REG_WINDOWS_AVX512_32_EDI, + REG_WINDOWS_AVX512_32_PC, + REG_WINDOWS_AVX512_32_EFLAGS, + REG_WINDOWS_AVX512_32_CS, + REG_WINDOWS_AVX512_32_SS, + REG_WINDOWS_AVX512_32_DS, + REG_WINDOWS_AVX512_32_ES, + REG_WINDOWS_AVX512_32_FS, + REG_WINDOWS_AVX512_32_GS, + REG_WINDOWS_AVX512_32_ST0, + REG_WINDOWS_AVX512_32_ST1, + REG_WINDOWS_AVX512_32_ST2, + REG_WINDOWS_AVX512_32_ST3, + REG_WINDOWS_AVX512_32_ST4, + REG_WINDOWS_AVX512_32_ST5, + REG_WINDOWS_AVX512_32_ST6, + REG_WINDOWS_AVX512_32_ST7, + REG_WINDOWS_AVX512_32_FCTRL, + REG_WINDOWS_AVX512_32_FSTAT, + REG_WINDOWS_AVX512_32_FTAG_FULL, // 16-bit "full" encoding + REG_WINDOWS_AVX512_32_FISEG, + REG_WINDOWS_AVX512_32_FIOFF, + REG_WINDOWS_AVX512_32_FOSEG, + REG_WINDOWS_AVX512_32_FOOFF, + REG_WINDOWS_AVX512_32_FOP, + REG_WINDOWS_AVX512_32_XMM0, + REG_WINDOWS_AVX512_32_XMM1, + REG_WINDOWS_AVX512_32_XMM2, + REG_WINDOWS_AVX512_32_XMM3, + REG_WINDOWS_AVX512_32_XMM4, + REG_WINDOWS_AVX512_32_XMM5, + REG_WINDOWS_AVX512_32_XMM6, + REG_WINDOWS_AVX512_32_XMM7, + REG_WINDOWS_AVX512_32_MXCSR, + REG_WINDOWS_AVX512_32_MXCSRMASK, + REG_WINDOWS_AVX512_32_YMM0H, + REG_WINDOWS_AVX512_32_YMM1H, + REG_WINDOWS_AVX512_32_YMM2H, + REG_WINDOWS_AVX512_32_YMM3H, + REG_WINDOWS_AVX512_32_YMM4H, + REG_WINDOWS_AVX512_32_YMM5H, + REG_WINDOWS_AVX512_32_YMM6H, + REG_WINDOWS_AVX512_32_YMM7H, + REG_WINDOWS_AVX512_32_K0, + REG_WINDOWS_AVX512_32_K1, + REG_WINDOWS_AVX512_32_K2, + REG_WINDOWS_AVX512_32_K3, + REG_WINDOWS_AVX512_32_K4, + REG_WINDOWS_AVX512_32_K5, + REG_WINDOWS_AVX512_32_K6, + REG_WINDOWS_AVX512_32_K7, + REG_WINDOWS_AVX512_32_ZMM0H, + REG_WINDOWS_AVX512_32_ZMM1H, + REG_WINDOWS_AVX512_32_ZMM2H, + REG_WINDOWS_AVX512_32_ZMM3H, + REG_WINDOWS_AVX512_32_ZMM4H, + REG_WINDOWS_AVX512_32_ZMM5H, + REG_WINDOWS_AVX512_32_ZMM6H, + REG_WINDOWS_AVX512_32_ZMM7H, + REG_WINDOWS_AVX512_32_LAST = REG_WINDOWS_AVX512_32_ZMM7H +}; + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/regs-windows-avx512-64.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/regs-windows-avx512-64.hpp new file mode 100644 index 0000000..52a4870 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/regs-windows-avx512-64.hpp @@ -0,0 +1,366 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : debugger-protocol +// : component public header + +#ifndef DEBUGGER_PROTOCOL_REGS_WINDOWS_AVX512_64_HPP +#define DEBUGGER_PROTOCOL_REGS_WINDOWS_AVX512_64_HPP + +#include "debugger-protocol.hpp" + + +namespace DEBUGGER_PROTOCOL { + +#if defined(DEBUGGER_PROTOCOL_BUILD) // Library clients should NOT define this. + +/*! + * This is the register set the Windows debuggers use for 64-bit AVX512. + */ +DEBUGGER_PROTOCOL_API REG_DESCRIPTION RegsWindowsAvx512_64[] = +{ + {64, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_RAX + {64, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_RBX + {64, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_RCX + {64, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_RDX + {64, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_RSI + {64, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_RDI + {64, REG_INVALID, true}, // REG_WINDOWS_AVX512_64_RBP + {64, REG_INVALID, true}, // REG_WINDOWS_AVX512_64_RSP + {64, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_R8 + {64, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_R9 + {64, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_R10 + {64, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_R11 + {64, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_R12 + {64, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_R13 + {64, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_R14 + {64, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_R15 + {64, REG_PC, true}, // REG_WINDOWS_AVX512_64_PC + {32, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_EFLAGS + {32, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_CS + {32, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_SS + {32, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_DS + {32, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_ES + {32, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_FS + {32, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_GS + {80, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_ST0 + {80, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_ST1 + {80, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_ST2 + {80, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_ST3 + {80, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_ST4 + {80, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_ST5 + {80, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_ST6 + {80, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_ST7 + {32, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_FCTRL + {32, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_FSTAT + {32, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_FTAG_FULL + {32, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_FISEG + {32, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_FIOFF + {32, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_FOSEG + {32, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_FOOFF + {32, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_FOP + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_XMM0 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_XMM1 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_XMM2 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_XMM3 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_XMM4 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_XMM5 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_XMM6 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_XMM7 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_XMM8 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_XMM9 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_XMM10 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_XMM11 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_XMM12 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_XMM13 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_XMM14 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_XMM15 + {32, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_MXCSR + {32, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_MXCSRMASK + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_YMM0H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_YMM1H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_YMM2H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_YMM3H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_YMM4H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_YMM5H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_YMM6H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_YMM7H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_YMM8H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_YMM9H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_YMM10H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_YMM11H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_YMM12H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_YMM13H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_YMM14H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_YMM15H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_XMM16 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_XMM17 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_XMM18 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_XMM19 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_XMM20 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_XMM21 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_XMM22 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_XMM23 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_XMM24 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_XMM25 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_XMM26 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_XMM27 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_XMM28 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_XMM29 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_XMM30 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_XMM31 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_YMM16H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_YMM17H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_YMM18H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_YMM19H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_YMM20H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_YMM21H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_YMM22H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_YMM23H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_YMM24H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_YMM25H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_YMM26H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_YMM27H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_YMM28H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_YMM29H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_YMM30H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_YMM31H + {64, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_K0 + {64, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_K1 + {64, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_K2 + {64, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_K3 + {64, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_K4 + {64, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_K5 + {64, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_K6 + {64, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_K7 + {256, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_ZMM0H + {256, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_ZMM1H + {256, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_ZMM2H + {256, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_ZMM3H + {256, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_ZMM4H + {256, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_ZMM5H + {256, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_ZMM6H + {256, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_ZMM7H + {256, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_ZMM8H + {256, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_ZMM9H + {256, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_ZMM10H + {256, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_ZMM11H + {256, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_ZMM12H + {256, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_ZMM13H + {256, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_ZMM14H + {256, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_ZMM15H + {256, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_ZMM16H + {256, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_ZMM17H + {256, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_ZMM18H + {256, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_ZMM19H + {256, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_ZMM20H + {256, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_ZMM21H + {256, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_ZMM22H + {256, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_ZMM23H + {256, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_ZMM24H + {256, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_ZMM25H + {256, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_ZMM26H + {256, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_ZMM27H + {256, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_ZMM28H + {256, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_ZMM29H + {256, REG_INVALID, false}, // REG_WINDOWS_AVX512_64_ZMM30H + {256, REG_INVALID, false} // REG_WINDOWS_AVX512_64_ZMM31H +}; + +/*! + * Number of entries in RegsWindowsAvx512_64. + */ +DEBUGGER_PROTOCOL_API unsigned RegsWindowsAvx512_64Count = sizeof(RegsWindowsAvx512_64) / sizeof(RegsWindowsAvx512_64[0]); + +#else + +DEBUGGER_PROTOCOL_API extern REG_DESCRIPTION RegsWindowsAvx512_64[]; ///< 64-bit AVX512 register set on Windows. +DEBUGGER_PROTOCOL_API extern unsigned RegsWindowsAvx512_64Count; ///< Number of entries in RegsWindowsAvx512_64. + +#endif /*DEBUGGER_PROTOCOL_BUILD*/ + + +/*! + * Convenient identifiers for the registers in this set. + */ +enum REG_WINDOWS_AVX512_64 +{ + REG_WINDOWS_AVX512_64_FIRST = REG_END, + REG_WINDOWS_AVX512_64_RAX = REG_WINDOWS_AVX512_64_FIRST, + REG_WINDOWS_AVX512_64_RBX, + REG_WINDOWS_AVX512_64_RCX, + REG_WINDOWS_AVX512_64_RDX, + REG_WINDOWS_AVX512_64_RSI, + REG_WINDOWS_AVX512_64_RDI, + REG_WINDOWS_AVX512_64_RBP, + REG_WINDOWS_AVX512_64_RSP, + REG_WINDOWS_AVX512_64_R8, + REG_WINDOWS_AVX512_64_R9, + REG_WINDOWS_AVX512_64_R10, + REG_WINDOWS_AVX512_64_R11, + REG_WINDOWS_AVX512_64_R12, + REG_WINDOWS_AVX512_64_R13, + REG_WINDOWS_AVX512_64_R14, + REG_WINDOWS_AVX512_64_R15, + REG_WINDOWS_AVX512_64_PC, + REG_WINDOWS_AVX512_64_EFLAGS, + REG_WINDOWS_AVX512_64_CS, + REG_WINDOWS_AVX512_64_SS, + REG_WINDOWS_AVX512_64_DS, + REG_WINDOWS_AVX512_64_ES, + REG_WINDOWS_AVX512_64_FS, + REG_WINDOWS_AVX512_64_GS, + REG_WINDOWS_AVX512_64_ST0, + REG_WINDOWS_AVX512_64_ST1, + REG_WINDOWS_AVX512_64_ST2, + REG_WINDOWS_AVX512_64_ST3, + REG_WINDOWS_AVX512_64_ST4, + REG_WINDOWS_AVX512_64_ST5, + REG_WINDOWS_AVX512_64_ST6, + REG_WINDOWS_AVX512_64_ST7, + REG_WINDOWS_AVX512_64_FCTRL, + REG_WINDOWS_AVX512_64_FSTAT, + REG_WINDOWS_AVX512_64_FTAG_FULL, // 16-bit "full" encoding + REG_WINDOWS_AVX512_64_FISEG, + REG_WINDOWS_AVX512_64_FIOFF, + REG_WINDOWS_AVX512_64_FOSEG, + REG_WINDOWS_AVX512_64_FOOFF, + REG_WINDOWS_AVX512_64_FOP, + REG_WINDOWS_AVX512_64_XMM0, + REG_WINDOWS_AVX512_64_XMM1, + REG_WINDOWS_AVX512_64_XMM2, + REG_WINDOWS_AVX512_64_XMM3, + REG_WINDOWS_AVX512_64_XMM4, + REG_WINDOWS_AVX512_64_XMM5, + REG_WINDOWS_AVX512_64_XMM6, + REG_WINDOWS_AVX512_64_XMM7, + REG_WINDOWS_AVX512_64_XMM8, + REG_WINDOWS_AVX512_64_XMM9, + REG_WINDOWS_AVX512_64_XMM10, + REG_WINDOWS_AVX512_64_XMM11, + REG_WINDOWS_AVX512_64_XMM12, + REG_WINDOWS_AVX512_64_XMM13, + REG_WINDOWS_AVX512_64_XMM14, + REG_WINDOWS_AVX512_64_XMM15, + REG_WINDOWS_AVX512_64_MXCSR, + REG_WINDOWS_AVX512_64_MXCSRMASK, + REG_WINDOWS_AVX512_64_YMM0H, + REG_WINDOWS_AVX512_64_YMM1H, + REG_WINDOWS_AVX512_64_YMM2H, + REG_WINDOWS_AVX512_64_YMM3H, + REG_WINDOWS_AVX512_64_YMM4H, + REG_WINDOWS_AVX512_64_YMM5H, + REG_WINDOWS_AVX512_64_YMM6H, + REG_WINDOWS_AVX512_64_YMM7H, + REG_WINDOWS_AVX512_64_YMM8H, + REG_WINDOWS_AVX512_64_YMM9H, + REG_WINDOWS_AVX512_64_YMM10H, + REG_WINDOWS_AVX512_64_YMM11H, + REG_WINDOWS_AVX512_64_YMM12H, + REG_WINDOWS_AVX512_64_YMM13H, + REG_WINDOWS_AVX512_64_YMM14H, + REG_WINDOWS_AVX512_64_YMM15H, + REG_WINDOWS_AVX512_64_XMM16, + REG_WINDOWS_AVX512_64_XMM17, + REG_WINDOWS_AVX512_64_XMM18, + REG_WINDOWS_AVX512_64_XMM19, + REG_WINDOWS_AVX512_64_XMM20, + REG_WINDOWS_AVX512_64_XMM21, + REG_WINDOWS_AVX512_64_XMM22, + REG_WINDOWS_AVX512_64_XMM23, + REG_WINDOWS_AVX512_64_XMM24, + REG_WINDOWS_AVX512_64_XMM25, + REG_WINDOWS_AVX512_64_XMM26, + REG_WINDOWS_AVX512_64_XMM27, + REG_WINDOWS_AVX512_64_XMM28, + REG_WINDOWS_AVX512_64_XMM29, + REG_WINDOWS_AVX512_64_XMM30, + REG_WINDOWS_AVX512_64_XMM31, + REG_WINDOWS_AVX512_64_YMM16H, + REG_WINDOWS_AVX512_64_YMM17H, + REG_WINDOWS_AVX512_64_YMM18H, + REG_WINDOWS_AVX512_64_YMM19H, + REG_WINDOWS_AVX512_64_YMM20H, + REG_WINDOWS_AVX512_64_YMM21H, + REG_WINDOWS_AVX512_64_YMM22H, + REG_WINDOWS_AVX512_64_YMM23H, + REG_WINDOWS_AVX512_64_YMM24H, + REG_WINDOWS_AVX512_64_YMM25H, + REG_WINDOWS_AVX512_64_YMM26H, + REG_WINDOWS_AVX512_64_YMM27H, + REG_WINDOWS_AVX512_64_YMM28H, + REG_WINDOWS_AVX512_64_YMM29H, + REG_WINDOWS_AVX512_64_YMM30H, + REG_WINDOWS_AVX512_64_YMM31H, + REG_WINDOWS_AVX512_64_K0, + REG_WINDOWS_AVX512_64_K1, + REG_WINDOWS_AVX512_64_K2, + REG_WINDOWS_AVX512_64_K3, + REG_WINDOWS_AVX512_64_K4, + REG_WINDOWS_AVX512_64_K5, + REG_WINDOWS_AVX512_64_K6, + REG_WINDOWS_AVX512_64_K7, + REG_WINDOWS_AVX512_64_ZMM0H, + REG_WINDOWS_AVX512_64_ZMM1H, + REG_WINDOWS_AVX512_64_ZMM2H, + REG_WINDOWS_AVX512_64_ZMM3H, + REG_WINDOWS_AVX512_64_ZMM4H, + REG_WINDOWS_AVX512_64_ZMM5H, + REG_WINDOWS_AVX512_64_ZMM6H, + REG_WINDOWS_AVX512_64_ZMM7H, + REG_WINDOWS_AVX512_64_ZMM8H, + REG_WINDOWS_AVX512_64_ZMM9H, + REG_WINDOWS_AVX512_64_ZMM10H, + REG_WINDOWS_AVX512_64_ZMM11H, + REG_WINDOWS_AVX512_64_ZMM12H, + REG_WINDOWS_AVX512_64_ZMM13H, + REG_WINDOWS_AVX512_64_ZMM14H, + REG_WINDOWS_AVX512_64_ZMM15H, + REG_WINDOWS_AVX512_64_ZMM16H, + REG_WINDOWS_AVX512_64_ZMM17H, + REG_WINDOWS_AVX512_64_ZMM18H, + REG_WINDOWS_AVX512_64_ZMM19H, + REG_WINDOWS_AVX512_64_ZMM20H, + REG_WINDOWS_AVX512_64_ZMM21H, + REG_WINDOWS_AVX512_64_ZMM22H, + REG_WINDOWS_AVX512_64_ZMM23H, + REG_WINDOWS_AVX512_64_ZMM24H, + REG_WINDOWS_AVX512_64_ZMM25H, + REG_WINDOWS_AVX512_64_ZMM26H, + REG_WINDOWS_AVX512_64_ZMM27H, + REG_WINDOWS_AVX512_64_ZMM28H, + REG_WINDOWS_AVX512_64_ZMM29H, + REG_WINDOWS_AVX512_64_ZMM30H, + REG_WINDOWS_AVX512_64_ZMM31H, + REG_WINDOWS_AVX512_64_LAST = REG_WINDOWS_AVX512_64_ZMM31H +}; + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/regs-windows-avx64.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/regs-windows-avx64.hpp new file mode 100644 index 0000000..1d692f2 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/regs-windows-avx64.hpp @@ -0,0 +1,222 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : debugger-protocol +// : component public header + +#ifndef DEBUGGER_PROTOCOL_REGS_WINDOWS_AVX64_HPP +#define DEBUGGER_PROTOCOL_REGS_WINDOWS_AVX64_HPP + +#include "debugger-protocol.hpp" + + +namespace DEBUGGER_PROTOCOL { + +#if defined(DEBUGGER_PROTOCOL_BUILD) // Library clients should NOT define this. + +/*! + * This is the register set the Windows debuggers use for 64-bit AVX. + */ +DEBUGGER_PROTOCOL_API REG_DESCRIPTION RegsWindowsAvx64[] = +{ + {64, REG_INVALID, false}, // REG_WINDOWS_AVX64_RAX + {64, REG_INVALID, false}, // REG_WINDOWS_AVX64_RBX + {64, REG_INVALID, false}, // REG_WINDOWS_AVX64_RCX + {64, REG_INVALID, false}, // REG_WINDOWS_AVX64_RDX + {64, REG_INVALID, false}, // REG_WINDOWS_AVX64_RSI + {64, REG_INVALID, false}, // REG_WINDOWS_AVX64_RDI + {64, REG_INVALID, true}, // REG_WINDOWS_AVX64_RBP + {64, REG_INVALID, true}, // REG_WINDOWS_AVX64_RSP + {64, REG_INVALID, false}, // REG_WINDOWS_AVX64_R8 + {64, REG_INVALID, false}, // REG_WINDOWS_AVX64_R9 + {64, REG_INVALID, false}, // REG_WINDOWS_AVX64_R10 + {64, REG_INVALID, false}, // REG_WINDOWS_AVX64_R11 + {64, REG_INVALID, false}, // REG_WINDOWS_AVX64_R12 + {64, REG_INVALID, false}, // REG_WINDOWS_AVX64_R13 + {64, REG_INVALID, false}, // REG_WINDOWS_AVX64_R14 + {64, REG_INVALID, false}, // REG_WINDOWS_AVX64_R15 + {64, REG_PC, true}, // REG_WINDOWS_AVX64_PC + {32, REG_INVALID, false}, // REG_WINDOWS_AVX64_EFLAGS + {32, REG_INVALID, false}, // REG_WINDOWS_AVX64_CS + {32, REG_INVALID, false}, // REG_WINDOWS_AVX64_SS + {32, REG_INVALID, false}, // REG_WINDOWS_AVX64_DS + {32, REG_INVALID, false}, // REG_WINDOWS_AVX64_ES + {32, REG_INVALID, false}, // REG_WINDOWS_AVX64_FS + {32, REG_INVALID, false}, // REG_WINDOWS_AVX64_GS + {80, REG_INVALID, false}, // REG_WINDOWS_AVX64_ST0 + {80, REG_INVALID, false}, // REG_WINDOWS_AVX64_ST1 + {80, REG_INVALID, false}, // REG_WINDOWS_AVX64_ST2 + {80, REG_INVALID, false}, // REG_WINDOWS_AVX64_ST3 + {80, REG_INVALID, false}, // REG_WINDOWS_AVX64_ST4 + {80, REG_INVALID, false}, // REG_WINDOWS_AVX64_ST5 + {80, REG_INVALID, false}, // REG_WINDOWS_AVX64_ST6 + {80, REG_INVALID, false}, // REG_WINDOWS_AVX64_ST7 + {32, REG_INVALID, false}, // REG_WINDOWS_AVX64_FCTRL + {32, REG_INVALID, false}, // REG_WINDOWS_AVX64_FSTAT + {32, REG_INVALID, false}, // REG_WINDOWS_AVX64_FTAG_FULL + {32, REG_INVALID, false}, // REG_WINDOWS_AVX64_FISEG + {32, REG_INVALID, false}, // REG_WINDOWS_AVX64_FIOFF + {32, REG_INVALID, false}, // REG_WINDOWS_AVX64_FOSEG + {32, REG_INVALID, false}, // REG_WINDOWS_AVX64_FOOFF + {32, REG_INVALID, false}, // REG_WINDOWS_AVX64_FOP + {128, REG_INVALID, false}, // REG_WINDOWS_AVX64_XMM0 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX64_XMM1 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX64_XMM2 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX64_XMM3 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX64_XMM4 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX64_XMM5 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX64_XMM6 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX64_XMM7 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX64_XMM8 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX64_XMM9 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX64_XMM10 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX64_XMM11 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX64_XMM12 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX64_XMM13 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX64_XMM14 + {128, REG_INVALID, false}, // REG_WINDOWS_AVX64_XMM15 + {32, REG_INVALID, false}, // REG_WINDOWS_AVX64_MXCSR + {32, REG_INVALID, false}, // REG_WINDOWS_AVX64_MXCSRMASK + {128, REG_INVALID, false}, // REG_WINDOWS_AVX64_YMM0H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX64_YMM1H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX64_YMM2H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX64_YMM3H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX64_YMM4H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX64_YMM5H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX64_YMM6H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX64_YMM7H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX64_YMM8H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX64_YMM9H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX64_YMM10H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX64_YMM11H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX64_YMM12H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX64_YMM13H + {128, REG_INVALID, false}, // REG_WINDOWS_AVX64_YMM14H + {128, REG_INVALID, false} // REG_WINDOWS_AVX64_YMM15H +}; + +/*! + * Number of entries in RegsWindowsAvx64. + */ +DEBUGGER_PROTOCOL_API unsigned RegsWindowsAvx64Count = sizeof(RegsWindowsAvx64) / sizeof(RegsWindowsAvx64[0]); + +#else + +DEBUGGER_PROTOCOL_API extern REG_DESCRIPTION RegsWindowsAvx64[]; ///< 64-bit AVX register set on Windows. +DEBUGGER_PROTOCOL_API extern unsigned RegsWindowsAvx64Count; ///< Number of entries in RegsWindowsAvx64. + +#endif /*DEBUGGER_PROTOCOL_BUILD*/ + + +/*! + * Convenient identifiers for the registers in this set. + */ +enum REG_WINDOWS_AVX64 +{ + REG_WINDOWS_AVX64_FIRST = REG_END, + REG_WINDOWS_AVX64_RAX = REG_WINDOWS_AVX64_FIRST, + REG_WINDOWS_AVX64_RBX, + REG_WINDOWS_AVX64_RCX, + REG_WINDOWS_AVX64_RDX, + REG_WINDOWS_AVX64_RSI, + REG_WINDOWS_AVX64_RDI, + REG_WINDOWS_AVX64_RBP, + REG_WINDOWS_AVX64_RSP, + REG_WINDOWS_AVX64_R8, + REG_WINDOWS_AVX64_R9, + REG_WINDOWS_AVX64_R10, + REG_WINDOWS_AVX64_R11, + REG_WINDOWS_AVX64_R12, + REG_WINDOWS_AVX64_R13, + REG_WINDOWS_AVX64_R14, + REG_WINDOWS_AVX64_R15, + REG_WINDOWS_AVX64_PC, + REG_WINDOWS_AVX64_EFLAGS, + REG_WINDOWS_AVX64_CS, + REG_WINDOWS_AVX64_SS, + REG_WINDOWS_AVX64_DS, + REG_WINDOWS_AVX64_ES, + REG_WINDOWS_AVX64_FS, + REG_WINDOWS_AVX64_GS, + REG_WINDOWS_AVX64_ST0, + REG_WINDOWS_AVX64_ST1, + REG_WINDOWS_AVX64_ST2, + REG_WINDOWS_AVX64_ST3, + REG_WINDOWS_AVX64_ST4, + REG_WINDOWS_AVX64_ST5, + REG_WINDOWS_AVX64_ST6, + REG_WINDOWS_AVX64_ST7, + REG_WINDOWS_AVX64_FCTRL, + REG_WINDOWS_AVX64_FSTAT, + REG_WINDOWS_AVX64_FTAG_FULL, // 16-bit "full" encoding + REG_WINDOWS_AVX64_FISEG, + REG_WINDOWS_AVX64_FIOFF, + REG_WINDOWS_AVX64_FOSEG, + REG_WINDOWS_AVX64_FOOFF, + REG_WINDOWS_AVX64_FOP, + REG_WINDOWS_AVX64_XMM0, + REG_WINDOWS_AVX64_XMM1, + REG_WINDOWS_AVX64_XMM2, + REG_WINDOWS_AVX64_XMM3, + REG_WINDOWS_AVX64_XMM4, + REG_WINDOWS_AVX64_XMM5, + REG_WINDOWS_AVX64_XMM6, + REG_WINDOWS_AVX64_XMM7, + REG_WINDOWS_AVX64_XMM8, + REG_WINDOWS_AVX64_XMM9, + REG_WINDOWS_AVX64_XMM10, + REG_WINDOWS_AVX64_XMM11, + REG_WINDOWS_AVX64_XMM12, + REG_WINDOWS_AVX64_XMM13, + REG_WINDOWS_AVX64_XMM14, + REG_WINDOWS_AVX64_XMM15, + REG_WINDOWS_AVX64_MXCSR, + REG_WINDOWS_AVX64_MXCSRMASK, + REG_WINDOWS_AVX64_YMM0H, + REG_WINDOWS_AVX64_YMM1H, + REG_WINDOWS_AVX64_YMM2H, + REG_WINDOWS_AVX64_YMM3H, + REG_WINDOWS_AVX64_YMM4H, + REG_WINDOWS_AVX64_YMM5H, + REG_WINDOWS_AVX64_YMM6H, + REG_WINDOWS_AVX64_YMM7H, + REG_WINDOWS_AVX64_YMM8H, + REG_WINDOWS_AVX64_YMM9H, + REG_WINDOWS_AVX64_YMM10H, + REG_WINDOWS_AVX64_YMM11H, + REG_WINDOWS_AVX64_YMM12H, + REG_WINDOWS_AVX64_YMM13H, + REG_WINDOWS_AVX64_YMM14H, + REG_WINDOWS_AVX64_YMM15H, + REG_WINDOWS_AVX64_LAST = REG_WINDOWS_AVX64_YMM15H +}; + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/regs-windows-ia32.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/regs-windows-ia32.hpp new file mode 100644 index 0000000..143e8d1 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/regs-windows-ia32.hpp @@ -0,0 +1,158 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : debugger-protocol +// : component public header + +#ifndef DEBUGGER_PROTOCOL_REGS_WINDOWS_IA32_HPP +#define DEBUGGER_PROTOCOL_REGS_WINDOWS_IA32_HPP + +#include "debugger-protocol.hpp" + + +namespace DEBUGGER_PROTOCOL { + +#if defined(DEBUGGER_PROTOCOL_BUILD) // Library clients should NOT define this. + +/*! + * This is the register set the Windows debuggers use for IA32. + */ +DEBUGGER_PROTOCOL_API REG_DESCRIPTION RegsWindowsIA32[] = +{ + {32, REG_INVALID, false}, // REG_WINDOWS_IA32_EAX + {32, REG_INVALID, false}, // REG_WINDOWS_IA32_ECX + {32, REG_INVALID, false}, // REG_WINDOWS_IA32_EDX + {32, REG_INVALID, false}, // REG_WINDOWS_IA32_EBX + {32, REG_INVALID, true}, // REG_WINDOWS_IA32_ESP + {32, REG_INVALID, true}, // REG_WINDOWS_IA32_EBP + {32, REG_INVALID, false}, // REG_WINDOWS_IA32_ESI + {32, REG_INVALID, false}, // REG_WINDOWS_IA32_EDI + {32, REG_PC, true}, // REG_WINDOWS_IA32_PC + {32, REG_INVALID, false}, // REG_WINDOWS_IA32_EFLAGS + {32, REG_INVALID, false}, // REG_WINDOWS_IA32_CS + {32, REG_INVALID, false}, // REG_WINDOWS_IA32_SS + {32, REG_INVALID, false}, // REG_WINDOWS_IA32_DS + {32, REG_INVALID, false}, // REG_WINDOWS_IA32_ES + {32, REG_INVALID, false}, // REG_WINDOWS_IA32_FS + {32, REG_INVALID, false}, // REG_WINDOWS_IA32_GS + {80, REG_INVALID, false}, // REG_WINDOWS_IA32_ST0 + {80, REG_INVALID, false}, // REG_WINDOWS_IA32_ST1 + {80, REG_INVALID, false}, // REG_WINDOWS_IA32_ST2 + {80, REG_INVALID, false}, // REG_WINDOWS_IA32_ST3 + {80, REG_INVALID, false}, // REG_WINDOWS_IA32_ST4 + {80, REG_INVALID, false}, // REG_WINDOWS_IA32_ST5 + {80, REG_INVALID, false}, // REG_WINDOWS_IA32_ST6 + {80, REG_INVALID, false}, // REG_WINDOWS_IA32_ST7 + {32, REG_INVALID, false}, // REG_WINDOWS_IA32_FCTRL + {32, REG_INVALID, false}, // REG_WINDOWS_IA32_FSTAT + {32, REG_INVALID, false}, // REG_WINDOWS_IA32_FTAG_FULL + {32, REG_INVALID, false}, // REG_WINDOWS_IA32_FISEG + {32, REG_INVALID, false}, // REG_WINDOWS_IA32_FIOFF + {32, REG_INVALID, false}, // REG_WINDOWS_IA32_FOSEG + {32, REG_INVALID, false}, // REG_WINDOWS_IA32_FOOFF + {32, REG_INVALID, false}, // REG_WINDOWS_IA32_FOP + {128, REG_INVALID, false}, // REG_WINDOWS_IA32_XMM0 + {128, REG_INVALID, false}, // REG_WINDOWS_IA32_XMM1 + {128, REG_INVALID, false}, // REG_WINDOWS_IA32_XMM2 + {128, REG_INVALID, false}, // REG_WINDOWS_IA32_XMM3 + {128, REG_INVALID, false}, // REG_WINDOWS_IA32_XMM4 + {128, REG_INVALID, false}, // REG_WINDOWS_IA32_XMM5 + {128, REG_INVALID, false}, // REG_WINDOWS_IA32_XMM6 + {128, REG_INVALID, false}, // REG_WINDOWS_IA32_XMM7 + {32, REG_INVALID, false}, // REG_WINDOWS_IA32_MXCSR + {32, REG_INVALID, false} // REG_WINDOWS_IA32_MXCSRMASK +}; + +/*! + * Number of entries in RegsWindowsIA32. + */ +DEBUGGER_PROTOCOL_API unsigned RegsWindowsIA32Count = sizeof(RegsWindowsIA32) / sizeof(RegsWindowsIA32[0]); + +#else + +DEBUGGER_PROTOCOL_API extern REG_DESCRIPTION RegsWindowsIA32[]; ///< IA32 register set on Windows. +DEBUGGER_PROTOCOL_API extern unsigned RegsWindowsIA32Count; ///< Number of entries in RegsWindowsIA32. + +#endif /*DEBUGGER_PROTOCOL_BUILD*/ + + +/*! + * Convenient identifiers for the registers in this set. + */ +enum REG_WINDOWS_IA32 +{ + REG_WINDOWS_IA32_FIRST = REG_END, + REG_WINDOWS_IA32_EAX = REG_WINDOWS_IA32_FIRST, + REG_WINDOWS_IA32_ECX, + REG_WINDOWS_IA32_EDX, + REG_WINDOWS_IA32_EBX, + REG_WINDOWS_IA32_ESP, + REG_WINDOWS_IA32_EBP, + REG_WINDOWS_IA32_ESI, + REG_WINDOWS_IA32_EDI, + REG_WINDOWS_IA32_PC, + REG_WINDOWS_IA32_EFLAGS, + REG_WINDOWS_IA32_CS, + REG_WINDOWS_IA32_SS, + REG_WINDOWS_IA32_DS, + REG_WINDOWS_IA32_ES, + REG_WINDOWS_IA32_FS, + REG_WINDOWS_IA32_GS, + REG_WINDOWS_IA32_ST0, + REG_WINDOWS_IA32_ST1, + REG_WINDOWS_IA32_ST2, + REG_WINDOWS_IA32_ST3, + REG_WINDOWS_IA32_ST4, + REG_WINDOWS_IA32_ST5, + REG_WINDOWS_IA32_ST6, + REG_WINDOWS_IA32_ST7, + REG_WINDOWS_IA32_FCTRL, + REG_WINDOWS_IA32_FSTAT, + REG_WINDOWS_IA32_FTAG_FULL, // 16-bit "full" encoding + REG_WINDOWS_IA32_FISEG, + REG_WINDOWS_IA32_FIOFF, + REG_WINDOWS_IA32_FOSEG, + REG_WINDOWS_IA32_FOOFF, + REG_WINDOWS_IA32_FOP, + REG_WINDOWS_IA32_XMM0, + REG_WINDOWS_IA32_XMM1, + REG_WINDOWS_IA32_XMM2, + REG_WINDOWS_IA32_XMM3, + REG_WINDOWS_IA32_XMM4, + REG_WINDOWS_IA32_XMM5, + REG_WINDOWS_IA32_XMM6, + REG_WINDOWS_IA32_XMM7, + REG_WINDOWS_IA32_MXCSR, + REG_WINDOWS_IA32_MXCSRMASK, + REG_WINDOWS_IA32_LAST = REG_WINDOWS_IA32_MXCSRMASK +}; + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/regs-windows-intel64.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/regs-windows-intel64.hpp new file mode 100644 index 0000000..31213c7 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/regs-windows-intel64.hpp @@ -0,0 +1,190 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : debugger-protocol +// : component public header + +#ifndef DEBUGGER_PROTOCOL_REGS_WINDOWS_INTEL64_HPP +#define DEBUGGER_PROTOCOL_REGS_WINDOWS_INTEL64_HPP + +#include "debugger-protocol.hpp" + + +namespace DEBUGGER_PROTOCOL { + +#if defined(DEBUGGER_PROTOCOL_BUILD) // Library clients should NOT define this. + +/*! + * This is the register set the Windows debuggers use for Intel64. + */ +DEBUGGER_PROTOCOL_API REG_DESCRIPTION RegsWindowsIntel64[] = +{ + {64, REG_INVALID, false}, // REG_WINDOWS_INTEL64_RAX + {64, REG_INVALID, false}, // REG_WINDOWS_INTEL64_RBX + {64, REG_INVALID, false}, // REG_WINDOWS_INTEL64_RCX + {64, REG_INVALID, false}, // REG_WINDOWS_INTEL64_RDX + {64, REG_INVALID, false}, // REG_WINDOWS_INTEL64_RSI + {64, REG_INVALID, false}, // REG_WINDOWS_INTEL64_RDI + {64, REG_INVALID, true}, // REG_WINDOWS_INTEL64_RBP + {64, REG_INVALID, true}, // REG_WINDOWS_INTEL64_RSP + {64, REG_INVALID, false}, // REG_WINDOWS_INTEL64_R8 + {64, REG_INVALID, false}, // REG_WINDOWS_INTEL64_R9 + {64, REG_INVALID, false}, // REG_WINDOWS_INTEL64_R10 + {64, REG_INVALID, false}, // REG_WINDOWS_INTEL64_R11 + {64, REG_INVALID, false}, // REG_WINDOWS_INTEL64_R12 + {64, REG_INVALID, false}, // REG_WINDOWS_INTEL64_R13 + {64, REG_INVALID, false}, // REG_WINDOWS_INTEL64_R14 + {64, REG_INVALID, false}, // REG_WINDOWS_INTEL64_R15 + {64, REG_PC, true}, // REG_WINDOWS_INTEL64_PC + {32, REG_INVALID, false}, // REG_WINDOWS_INTEL64_EFLAGS + {32, REG_INVALID, false}, // REG_WINDOWS_INTEL64_CS + {32, REG_INVALID, false}, // REG_WINDOWS_INTEL64_SS + {32, REG_INVALID, false}, // REG_WINDOWS_INTEL64_DS + {32, REG_INVALID, false}, // REG_WINDOWS_INTEL64_ES + {32, REG_INVALID, false}, // REG_WINDOWS_INTEL64_FS + {32, REG_INVALID, false}, // REG_WINDOWS_INTEL64_GS + {80, REG_INVALID, false}, // REG_WINDOWS_INTEL64_ST0 + {80, REG_INVALID, false}, // REG_WINDOWS_INTEL64_ST1 + {80, REG_INVALID, false}, // REG_WINDOWS_INTEL64_ST2 + {80, REG_INVALID, false}, // REG_WINDOWS_INTEL64_ST3 + {80, REG_INVALID, false}, // REG_WINDOWS_INTEL64_ST4 + {80, REG_INVALID, false}, // REG_WINDOWS_INTEL64_ST5 + {80, REG_INVALID, false}, // REG_WINDOWS_INTEL64_ST6 + {80, REG_INVALID, false}, // REG_WINDOWS_INTEL64_ST7 + {32, REG_INVALID, false}, // REG_WINDOWS_INTEL64_FCTRL + {32, REG_INVALID, false}, // REG_WINDOWS_INTEL64_FSTAT + {32, REG_INVALID, false}, // REG_WINDOWS_INTEL64_FTAG_FULL + {32, REG_INVALID, false}, // REG_WINDOWS_INTEL64_FISEG + {32, REG_INVALID, false}, // REG_WINDOWS_INTEL64_FIOFF + {32, REG_INVALID, false}, // REG_WINDOWS_INTEL64_FOSEG + {32, REG_INVALID, false}, // REG_WINDOWS_INTEL64_FOOFF + {32, REG_INVALID, false}, // REG_WINDOWS_INTEL64_FOP + {128, REG_INVALID, false}, // REG_WINDOWS_INTEL64_XMM0 + {128, REG_INVALID, false}, // REG_WINDOWS_INTEL64_XMM1 + {128, REG_INVALID, false}, // REG_WINDOWS_INTEL64_XMM2 + {128, REG_INVALID, false}, // REG_WINDOWS_INTEL64_XMM3 + {128, REG_INVALID, false}, // REG_WINDOWS_INTEL64_XMM4 + {128, REG_INVALID, false}, // REG_WINDOWS_INTEL64_XMM5 + {128, REG_INVALID, false}, // REG_WINDOWS_INTEL64_XMM6 + {128, REG_INVALID, false}, // REG_WINDOWS_INTEL64_XMM7 + {128, REG_INVALID, false}, // REG_WINDOWS_INTEL64_XMM8 + {128, REG_INVALID, false}, // REG_WINDOWS_INTEL64_XMM9 + {128, REG_INVALID, false}, // REG_WINDOWS_INTEL64_XMM10 + {128, REG_INVALID, false}, // REG_WINDOWS_INTEL64_XMM11 + {128, REG_INVALID, false}, // REG_WINDOWS_INTEL64_XMM12 + {128, REG_INVALID, false}, // REG_WINDOWS_INTEL64_XMM13 + {128, REG_INVALID, false}, // REG_WINDOWS_INTEL64_XMM14 + {128, REG_INVALID, false}, // REG_WINDOWS_INTEL64_XMM15 + {32, REG_INVALID, false}, // REG_WINDOWS_INTEL64_MXCSR + {32, REG_INVALID, false} // REG_WINDOWS_INTEL64_MXCSRMASK +}; + +/*! + * Number of entries in RegsWindowsIntel64. + */ +DEBUGGER_PROTOCOL_API unsigned RegsWindowsIntel64Count = sizeof(RegsWindowsIntel64) / sizeof(RegsWindowsIntel64[0]); + +#else + +DEBUGGER_PROTOCOL_API extern REG_DESCRIPTION RegsWindowsIntel64[]; ///< Intel64 register set on Windows. +DEBUGGER_PROTOCOL_API extern unsigned RegsWindowsIntel64Count; ///< Number of entries in RegsWindowsIntel64. + +#endif /*DEBUGGER_PROTOCOL_BUILD*/ + + +/*! + * Convenient identifiers for the registers in this set. + */ +enum REG_WINDOWS_INTEL64 +{ + REG_WINDOWS_INTEL64_FIRST = REG_END, + REG_WINDOWS_INTEL64_RAX = REG_WINDOWS_INTEL64_FIRST, + REG_WINDOWS_INTEL64_RBX, + REG_WINDOWS_INTEL64_RCX, + REG_WINDOWS_INTEL64_RDX, + REG_WINDOWS_INTEL64_RSI, + REG_WINDOWS_INTEL64_RDI, + REG_WINDOWS_INTEL64_RBP, + REG_WINDOWS_INTEL64_RSP, + REG_WINDOWS_INTEL64_R8, + REG_WINDOWS_INTEL64_R9, + REG_WINDOWS_INTEL64_R10, + REG_WINDOWS_INTEL64_R11, + REG_WINDOWS_INTEL64_R12, + REG_WINDOWS_INTEL64_R13, + REG_WINDOWS_INTEL64_R14, + REG_WINDOWS_INTEL64_R15, + REG_WINDOWS_INTEL64_PC, + REG_WINDOWS_INTEL64_EFLAGS, + REG_WINDOWS_INTEL64_CS, + REG_WINDOWS_INTEL64_SS, + REG_WINDOWS_INTEL64_DS, + REG_WINDOWS_INTEL64_ES, + REG_WINDOWS_INTEL64_FS, + REG_WINDOWS_INTEL64_GS, + REG_WINDOWS_INTEL64_ST0, + REG_WINDOWS_INTEL64_ST1, + REG_WINDOWS_INTEL64_ST2, + REG_WINDOWS_INTEL64_ST3, + REG_WINDOWS_INTEL64_ST4, + REG_WINDOWS_INTEL64_ST5, + REG_WINDOWS_INTEL64_ST6, + REG_WINDOWS_INTEL64_ST7, + REG_WINDOWS_INTEL64_FCTRL, + REG_WINDOWS_INTEL64_FSTAT, + REG_WINDOWS_INTEL64_FTAG_FULL, // 16-bit "full" encoding + REG_WINDOWS_INTEL64_FISEG, + REG_WINDOWS_INTEL64_FIOFF, + REG_WINDOWS_INTEL64_FOSEG, + REG_WINDOWS_INTEL64_FOOFF, + REG_WINDOWS_INTEL64_FOP, + REG_WINDOWS_INTEL64_XMM0, + REG_WINDOWS_INTEL64_XMM1, + REG_WINDOWS_INTEL64_XMM2, + REG_WINDOWS_INTEL64_XMM3, + REG_WINDOWS_INTEL64_XMM4, + REG_WINDOWS_INTEL64_XMM5, + REG_WINDOWS_INTEL64_XMM6, + REG_WINDOWS_INTEL64_XMM7, + REG_WINDOWS_INTEL64_XMM8, + REG_WINDOWS_INTEL64_XMM9, + REG_WINDOWS_INTEL64_XMM10, + REG_WINDOWS_INTEL64_XMM11, + REG_WINDOWS_INTEL64_XMM12, + REG_WINDOWS_INTEL64_XMM13, + REG_WINDOWS_INTEL64_XMM14, + REG_WINDOWS_INTEL64_XMM15, + REG_WINDOWS_INTEL64_MXCSR, + REG_WINDOWS_INTEL64_MXCSRMASK, + REG_WINDOWS_INTEL64_LAST = REG_WINDOWS_INTEL64_MXCSRMASK +}; + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/thread-linux.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/thread-linux.hpp new file mode 100644 index 0000000..5c931e5 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/thread-linux.hpp @@ -0,0 +1,70 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : debugger-protocol +// : component public header + +#ifndef DEBUGGER_PROTOCOL_THREAD_LINUX_HPP +#define DEBUGGER_PROTOCOL_THREAD_LINUX_HPP + +namespace DEBUGGER_PROTOCOL { + + +/*! + * In the future, new fields may be added to the end of the THREAD_INFO_LINUX + * structure. If this happens, clients can use the \e _version field to retain + * backward compatibility. + * + * When a client writes information to this structure, it should set \e _version + * to the latest version that it supports. + * + * When a client reads this structure, it should use \e _version to tell which + * fields are valid. A client should allow that \e _version may be greater than + * the newest version it knows about, which happens if an older front-end runs + * with a newer back-end or vice-versa. + */ +enum THREAD_INFO_LINUX_VERSION +{ + THREAD_INFO_LINUX_VERSION_0 ///< This is the only defined version currently. +}; + + +/*! + * Information about a thread running on a Linux target. + */ +struct /**/ THREAD_INFO_LINUX +{ + THREAD_INFO_LINUX_VERSION _version; ///< Tells which fields in this structure are valid. + + /* There are no fields defined for this version. */ +}; + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/thread-mac.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/thread-mac.hpp new file mode 100644 index 0000000..ce09917 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/thread-mac.hpp @@ -0,0 +1,70 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : debugger-protocol +// : component public header + +#ifndef DEBUGGER_PROTOCOL_THREAD_MAC_HPP +#define DEBUGGER_PROTOCOL_THREAD_MAC_HPP + +namespace DEBUGGER_PROTOCOL { + + +/*! + * In the future, new fields may be added to the end of the THREAD_INFO_MAC + * structure. If this happens, clients can use the \e _version field to retain + * backward compatibility. + * + * When a client writes information to this structure, it should set \e _version + * to the latest version that it supports. + * + * When a client reads this structure, it should use \e _version to tell which + * fields are valid. A client should allow that \e _version may be greater than + * the newest version it knows about, which happens if an older front-end runs + * with a newer back-end or vice-versa. + */ +enum THREAD_INFO_MAC_VERSION +{ + THREAD_INFO_MAC_VERSION_0 ///< This is the only defined version currently. +}; + + +/*! + * Information about a thread running on a Linux target. + */ +struct /**/ THREAD_INFO_MAC +{ + THREAD_INFO_MAC_VERSION _version; ///< Defines which fields in this structure are valid. + + /* There are no fields defined for this version. */ +}; + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/thread-windows.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/thread-windows.hpp new file mode 100644 index 0000000..a29226e --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/debugger-protocol/thread-windows.hpp @@ -0,0 +1,76 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : debugger-protocol +// : component public header + +#ifndef DEBUGGER_PROTOCOL_THREAD_WINDOWS_HPP +#define DEBUGGER_PROTOCOL_THREAD_WINDOWS_HPP + +namespace DEBUGGER_PROTOCOL { + + +/*! + * In the future, new fields may be added to the end of the THREAD_INFO_WINDOWS + * structure. If this happens, clients can use the \e _version field to retain + * backward compatibility. + * + * When a client writes information to this structure, it should set \e _version + * to the latest version that it supports. + * + * When a client reads this structure, it should use \e _version to tell which + * fields are valid. A client should allow that \e _version may be greater than + * the newest version it knows about, which happens if an older front-end runs + * with a newer back-end or vice-versa. + */ +enum THREAD_INFO_WINDOWS_VERSION +{ + THREAD_INFO_WINDOWS_VERSION_0 ///< This is the only defined version currently. +}; + + +/*! + * Information about a thread running on a Windows target. + */ +struct /**/ THREAD_INFO_WINDOWS +{ + THREAD_INFO_WINDOWS_VERSION _version; ///< Tells which fields in this structure are valid. + ANYADDR _teb; ///< Address of the thread environment block. + + /*! + * If non-zero, the thread is suspended by one or more other threads in the target + * system. Passing CONTINUE_MODE_FROZEN to ICOMMANDS::SetContinueMode() does not + * affect the suspension count. + */ + UINT64 _suspensionCount; +}; + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/types.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/types.h new file mode 100644 index 0000000..8d9cffe --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/types.h @@ -0,0 +1,222 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : os-apis +// : component private header + +/*! @file + * this headerfile contains defines the types that are the foundation of + * other code + */ +/*! + * @defgroup OS_APIS_TYPES Data types + * @brief Contains data-type definitions + */ + +#ifndef OS_TYPES_H +#define OS_TYPES_H + +#ifndef ASM_ONLY + +#if defined(__GNUC__) +# include +#endif + +/*! @ingroup OS_APIS_TYPES + * Data type for boolean + */ +#ifdef __cplusplus +typedef bool BOOL_T; +#else +typedef unsigned char BOOL_T; +#endif + +#if !defined(TRUE) +# define TRUE 1 +#endif +#if !defined(FALSE) +# define FALSE 0 +#endif + +#if !defined(VOID) +typedef void VOID; +#endif + +#if !defined(NULL) && !defined(__ICL) +# define NULL ((void*)0) +#endif + +typedef char CHAR; +typedef unsigned int UINT; +typedef int INT; +typedef double FLT64; +typedef float FLT32; +/*! @ingroup OS_APIS_TYPES + * Generic type for three-state logic. + */ +enum TRI +{ + TRI_YES, + TRI_NO, + TRI_MAYBE +}; + +#if defined(_MSC_VER) +typedef unsigned __int8 UINT8 ; +typedef unsigned __int16 UINT16; +typedef unsigned __int32 UINT32; +typedef unsigned __int64 UINT64; +typedef signed __int8 INT8 ; +typedef signed __int16 INT16; +typedef signed __int32 INT32; +typedef signed __int64 INT64; +#ifndef TARGET_WINDOWS +typedef __int8 INT8; +typedef __int16 INT16; +typedef __int64 INT64; +#endif +typedef __int32 INT32; + +#else +typedef uint8_t UINT8; +typedef uint16_t UINT16; +typedef uint32_t UINT32; +typedef uint64_t UINT64; +typedef int8_t INT8; +typedef int16_t INT16; +typedef int32_t INT32; +typedef int64_t INT64; +# endif +typedef UINT64 ANYADDR; + +/* + * Unsigned integer of the same size as a pointer on the TARGET architecture. + * This quantity can be converted to and from an OADDR/IADDR + * + * There is an option of overflow and underflow when using ADDRDELTA. + * For example, let's look at a 32 bit address. + * 32 bit address is 32 bit unsigned int number. + * This means that the maximum delta between two addresses is (2^32 - 1), + * which means that the ADDRDELTA which is signed may overflow. + */ +#if defined(TARGET_IA32) +typedef UINT32 ADDRINT; +// typedef int INT32; +typedef INT32 ADDRDELTA; +#define ADDRINT_SIZE_IN_BITS 32 + + +#elif defined(TARGET_IA32E) +typedef UINT64 ADDRINT; +typedef INT64 ADDRDELTA; +#define ADDRINT_SIZE_IN_BITS 64 + +#elif defined(TARGET_DOXYGEN) +typedef xxx ADDRINT; +typedef xxx ADDRDELTA; + +#else +#error "Unsupported target architecture" +#endif + +typedef ADDRINT USIZE; + +#if defined(HOST_IA32) +typedef UINT32 VOIDINT; +typedef UINT32 PTRINT; +#define PTRINT_SIZE 32 +#elif defined(HOST_IA32E) +typedef UINT64 VOIDINT; +typedef UINT64 PTRINT; +#define PTRINT_SIZE 64 +#else +typedef ADDRINT VOIDINT; +typedef ADDRINT PTRINT; +#define PTRINT_SIZE ADDRINT_SIZE_IN_BITS +#endif + +typedef UINT64 REG_CLASS_BITS; +typedef UINT32 REG_SUBCLASS_BITS; + +/* + * Generic macro definitions + */ + +#if defined(_MSC_VER) +# define ALIGNMENT_OF(t) __alignof(t) +#else +# define ALIGNMENT_OF(t) __alignof__(t) +#endif + +/*! @ingroup OS_APIS_TYPES + * Generic data type to refer to a kernel file object. + * This is actually an HANDLE in Windows, and a file descriptor + * (int) on Unix systems. + */ +typedef ADDRINT NATIVE_FD; + +/*! @ingroup OS_APIS_TYPES + * Data type that can hold a process ID. + * On OS-APIs all processes can be refered to by their PIDs. + */ +typedef UINT32 NATIVE_PID; + +/*! @ingroup OS_APIS_TYPES + * Data type that can hold a thread ID. + * On OS-APIs all threads can be refered to by their TIDs. + */ +typedef UINT32 NATIVE_TID; + +typedef ADDRINT NATIVE_UID; + +#ifdef TARGET_MAC +typedef UINT64 OS_EVENT; +#else +typedef ADDRINT OS_EVENT; +#endif + +#define INVALID_NATIVE_FD ((NATIVE_FD)-1LL) +// We use a thread ID inside a reentrant lock to mark the thread that owns the lock. +// If the owner is 0, the implementation treats the lock as unlocked. +// Here we want to align to that implementation and use 0 as INVALID_NATIVE_TID. +#define INVALID_NATIVE_TID ((NATIVE_TID)0) +#define INVALID_NATIVE_PID ((NATIVE_PID)0) +#define NATIVE_PID_CURRENT ((NATIVE_PID)-1LL) +#define NATIVE_TID_CURRENT ((NATIVE_TID)-1LL) +#define OS_EVENT_INITIALIZER ((OS_EVENT)0) + +/*! @ingroup OS_APIS_TYPES + * The size of the memory cache line in a single core. + */ +#define CPU_MEMORY_CACHELINE_SIZE 64 + +#endif // ASM_ONLY + +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/util.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/util.hpp new file mode 100644 index 0000000..a4cd383 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/util.hpp @@ -0,0 +1,58 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : util +// : component public header + +#ifndef UTIL_HPP +#define UTIL_HPP + +/*! @mainpage UTIL library + * + * The UTIL library provides a collection of generally useful utilities. + */ + +/*! @brief The UTIL library. */ +namespace UTIL {} + +#include "util/data.hpp" +#include "util/intel-fp.hpp" +#include "util/locker.hpp" +#include "util/numberbits.hpp" +#include "util/quote-argument-ms.hpp" +#include "util/range.hpp" +#include "util/regvalue.hpp" +#include "util/round.hpp" +#include "util/scoped-ptr.hpp" +#include "util/scoped-array.hpp" +#include "util/strings.hpp" +#include "util/singleton.hpp" + +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/util/data.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/util/data.hpp new file mode 100644 index 0000000..1d470d0 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/util/data.hpp @@ -0,0 +1,623 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : util +// : component public header + +#ifndef UTIL_DATA_HPP +#define UTIL_DATA_HPP + +#include +#include + +#include "types.h" + + +namespace UTIL { + +/*! + * Utility that holds a raw data buffer. The internal implementation uses reference + * counting, so the various copy and "slice" operations are fast. + * + * None of the operations are thread safe, so the caller must provide any necessary + * synchronization. Since the implementation uses reference counting, two distinct + * DATA objects may actually share a buffer and require mutual synchronization. To + * avoid this, use DATA::MakeUnique() if necessary. + */ +class /**/ DATA +{ +public: + /*! + * This is used when constructing a DATA that is a copy of some sort of input buffer. + */ + enum COPY + { + /*! + * The input buffer is copied immediately. + */ + COPY_EAGER, + + /*! + * The input buffer is copied only if the DATA is modified. However, the input + * buffer must remain valid and must not be modified until one of the following + * occurs: + * + * - The DATA is destroyed. + * - The Assign() method or "=" (the assignment operator) reconstructs the DATA. + * - A writable buffer is obtained via GetWritableBuf(). + */ + COPY_LAZY + }; + + /*! + * Tells what to do when a DATA buffer is allocated and no initial value is specified. + */ + enum FILL + { + FILL_UNSPECIFIED, ///< Leave the buffer unspecified. + FILL_ZERO ///< Zero fill the buffer. + }; + + +public: + /*! + * Construct a new empty buffer. + */ + DATA() : _sbuf(0), _start(0), _size(0) {} + + /*! + * Construct a new buffer. + * + * @param[in] size Size (bytes) of the buffer. + * @param[in] fill Tells whether the initial contents are zero-filled or left unspecified. + */ + DATA(size_t size, FILL fill = FILL_UNSPECIFIED) + : + _sbuf(new SHARED_BUF(size)), + _start(_sbuf->_buf), + _size(size) + { + if (fill == FILL_ZERO) + std::memset(_start, 0, _size); + } + + /*! + * Construct a new buffer that is a copy of some existing data. + * + * @param[in] buf Points to the data to copy. + * @param[in] size Size (bytes) of data in \a buf. + * @param[in] copy Tells whether \a buf is copied eagerly or lazily. + */ + DATA(const void *buf, size_t size, COPY copy = COPY_EAGER) + { + CopyFromBuffer(buf, size, copy); + } + + /*! + * Construct a new buffer that is a copy of a C string (not including its terminating NUL). + * + * @param[in] str NUL-terminated string. + * @param[in] copy Tells whether \a str is copied eagerly or lazily. + */ + DATA(const char *str, COPY copy = COPY_EAGER) + { + CopyFromBuffer(str, std::strlen(str), copy); + } + + /*! + * Construct a new buffer that is a copy of an C++ string. + * + * @param[in] str The string. + * @param[in] copy Tells whether \a str is copied eagerly or lazily. + */ + DATA(const std::string &str, COPY copy = COPY_EAGER) + { + CopyFromBuffer(str.c_str(), str.size(), copy); + } + + /*! + * Construct a new buffer that is a copy of a subrange of an existing buffer. + * + * @param[in] other The new buffer is a copy of the contents of \a other. + * @param[in] off The new buffer starts at \a off bytes from the start of \a other. + * If \a off is larger than \a other, the new buffer is empty. + */ + DATA(const DATA &other, size_t off=0) + { + CopyFromData(other, off); + } + + /*! + * Construct a new buffer that is a copy of a subrange of an existing buffer. + * + * @param[in] other The new buffer is a copy of the contents of \a other. + * @param[in] off The new buffer starts at \a off bytes from the start of \a other. + * If \a off is larger than \a other, the new buffer is empty. + * @param[in] len The new buffer is at most \a len bytes long. If \a off + \a len + * is greater than the length of \a other, the new buffer is a copy + * of the data up to the end of \a other. + */ + DATA(const DATA &other, size_t off, size_t len) + { + CopyFromDataWithLen(other, off, len); + } + + ~DATA() {DetachBuf();} + + /*! + * Reconstruct the buffer to be a copy of another buffer. + * + * @param[in] other The contents of this buffer are copied. + * + * @return Reference to the new data buffer. + */ + DATA &operator =(const DATA &other) + { + Assign(other); + return *this; + } + + /*! + * Reconstruct the buffer to a new size. + * + * @param[in] size Size (bytes) of the buffer. + * @param[in] fill Tells whether the initial contents are zero-filled or left unspecified. + */ + void Assign(size_t size, FILL fill = FILL_UNSPECIFIED) + { + DetachBuf(); + _sbuf = new SHARED_BUF(size); + _start = _sbuf->_buf; + _size = size; + if (fill == FILL_ZERO) + std::memset(_start, 0, _size); + } + + /*! + * Reconstruct the buffer to be a copy of some existing data. + * + * @param[in] buf Points to the data to copy. + * @param[in] size Size (bytes) of data in \a buf. + * @param[in] copy Tells whether \a buf is copied eagerly or lazily. + */ + void Assign(const void *buf, size_t size, COPY copy = COPY_EAGER) + { + DetachBuf(); + CopyFromBuffer(buf, size, copy); + } + + /*! + * Reconstruct the buffer to be a copy of a C string (not including its terminating NUL). + * + * @param[in] str NUL-terminated string. + * @param[in] copy Tells whether \a str is copied eagerly or lazily. + */ + void Assign(const char *str, COPY copy = COPY_EAGER) + { + DetachBuf(); + CopyFromBuffer(str, std::strlen(str), copy); + } + + /*! + * Reconstruct the buffer to be a copy of an C++ string. + * + * @param[in] str The string. + * @param[in] copy Tells whether \a str is copied eagerly or lazily. + */ + void Assign(const std::string &str, COPY copy = COPY_EAGER) + { + DetachBuf(); + CopyFromBuffer(str.c_str(), str.size(), copy); + } + + /*! + * Reconstruct the buffer to be a copy of a subrange of an existing buffer. + * + * @param[in] other The contents of this buffer are copied. + * @param[in] off This buffer starts at \a off bytes from the start of \a other. + * If \a off is larger than \a other, the new buffer is empty. + */ + void Assign(const DATA &other, size_t off=0) + { + if (this != &other) + { + DetachBuf(); + CopyFromData(other, off); + } + else + { + PopFront(off); + } + } + + /*! + * Reconstruct the buffer to be a copy of a subrange of an existing buffer. + * + * @param[in] other The contents of this buffer are a copy of the contents of \a other. + * @param[in] off This buffer starts at \a off bytes from the start of \a other. + * If \a off is larger than \a other, the new buffer is empty. + * @param[in] len This buffer is at most \a len bytes long. If \a off + \a len + * is greater than the length of \a other, the new buffer is a copy + * of the data up to the end of \a other. + */ + void Assign(const DATA &other, size_t off, size_t len) + { + if (this != &other) + { + DetachBuf(); + CopyFromDataWithLen(other, off, len); + } + else + { + PopFront(off); + if (len < _size) + _size = len; + } + } + + /*! + * Clear the content of the buffer, making it empty. + */ + void Clear() + { + DetachBuf(); + _sbuf = 0; + _start = 0; + _size = 0; + } + + /*! + * Remove initial bytes from the start of the buffer, making it shorter. + * + * @param[in] num This many bytes are removed from the buffer. If \a num + * is larger than the length of the buffer, the buffer becomes empty. + */ + void PopFront(size_t num) + { + if (num >= _size) + { + DetachBuf(); + _sbuf = 0; + _start = 0; + _size = 0; + return; + } + _start = static_cast(_start) + num; + _size -= num; + } + + /*! + * Remove trailing bytes from the end of the buffer, making it shorter. + * + * @param[in] num This many bytes are removed from the buffer. If \a num + * is larger than the length of the buffer, the buffer becomes empty. + */ + void PopBack(size_t num) + { + if (num >= _size) + { + DetachBuf(); + _sbuf = 0; + _start = 0; + _size = 0; + return; + } + _size -= num; + } + + /*! + * Change the size of the buffer, retaining it's current content. If the new size is + * smaller than the previous size, trailing bytes in the buffer are lost. If the new + * size is greater than the previous size, the \a fill parameter tells whether the new + * buffer space is left unspecified or is zero-filled. + * + * @param[in] newSize The new buffer size (bytes). + * @param[in] fill Tells what to do with the new buffer space if \a newSize is + * greater than the existing buffer size. + */ + void Resize(size_t newSize, FILL fill = FILL_UNSPECIFIED) + { + if (newSize <= _size) + { + if (!newSize) + { + DetachBuf(); + _sbuf = 0; + _start = 0; + _size = 0; + return; + } + _size = newSize; + } + else + { + // If we grow, we must re-allocate the input buffer, so we may as well copy + // any "lazy" buffer too. Note that we do NOT want to share the copied buffer + // with any other DATA because doing so would invalidate any GetBuf() pointers + // in the other DATA. Therefore, any other DATA's continue to use the old buffer. + // + SHARED_BUF *sbuf = new SHARED_BUF(newSize); + std::memcpy(sbuf->_buf, _start, _size); + if (fill == FILL_ZERO) + std::memset(static_cast(sbuf->_buf) + _size, 0, newSize - _size); + DetachBuf(); + _sbuf = sbuf; + _start = sbuf->_buf; + _size = newSize; + } + } + + /*! + * Calling this function ensures that the buffer does not share any data with any other + * DATA object, copying any shared buffer if necessary. This could be useful, for example, + * to ensure that two DATA objects can be safely used by different threads. + */ + void MakeUnique() + { + // If no other DATA's share our buffer, there's nothing to do. + // + if (!_sbuf || _sbuf->_refCount == 1 || _sbuf->_refCount == EXCLUSIVE) + return; + + // Since we need to copy the buffer anyways, this also copies any "lazy" buffer. + // + _sbuf->_refCount--; + _sbuf = new SHARED_BUF(_size); + std::memcpy(_sbuf->_buf, _start, _size); + _start = _sbuf->_buf; + } + + /*! + * @return Size (bytes) of the buffer. + */ + size_t GetSize() const {return _size;} + + /*! + * @return A pointer to the buffer's data. The returned pointer remains valid only until + * the next operation that modifies the DATA. + */ + template const T *GetBuf() const + { + return static_cast(_start); + } + + /*! + * Get a writable pointer to the buffer's data. This is considered a modifying operation, so + * pointers returned by previous calls to GetBuf() are no longer valid. When you are + * finished with the pointer, call ReleaseWritableBuf() to release it. + * + * @return A pointer to the buffer's data. The returned pointer remains valid only until + * the next operation that modifies the DATA or until ReleaseWritableBuf() is + * called. + */ + template T *GetWritableBuf() + { + // Since the caller could use this pointer to change the contents of the buffer, + // we must make sure that doing so won't change the contents of any other DATA's + // buffer. + // + if (_sbuf && _sbuf->_refCount != EXCLUSIVE) + { + // We must make a private copy if there are other DATA's sharing this buffer. + // This also copies any "lazy" buffer. + // + if (_sbuf->_refCount > 1) + { + _sbuf->_refCount--; + _sbuf = new SHARED_BUF(_size); + std::memcpy(_sbuf->_buf, _start, _size); + _start = _sbuf->_buf; + } + + // Even if we're the only DATA that references this buffer, it can't be + // a "lazy" buffer. + // + else if (_sbuf->_isLazy) + { + UINT8 *buf = new UINT8[_size]; + std::memcpy(buf, _start, _size); + _sbuf->_buf = buf; + _sbuf->_size = _size; + _sbuf->_isLazy = 0; + _start = buf; + } + + // Mark the buffer as exclusively ours. This prevents any future DATA from + // sharing our buffer while there is a writable pointer to it. + // + _sbuf->_refCount = EXCLUSIVE; + } + + return static_cast(_start); + } + + /*! + * Release all previously obtained writable pointers obtained via GetWritableBuf(). + */ + void ReleaseWritableBuf() + { + if (_sbuf && _sbuf->_refCount == EXCLUSIVE) + _sbuf->_refCount = 1; + } + +private: + /*! + * Construct this DATA by copying an external buffer. + * + * @param[in] buf Points to the data to copy. + * @param[in] size Size (bytes) of data in \a buf. + * @param[in] copy Tells whether \a buf is copied eagerly or lazily. + */ + void CopyFromBuffer(const void *buf, size_t size, COPY copy) + { + if (copy == COPY_EAGER) + { + _sbuf = new SHARED_BUF(size); + std::memcpy(_sbuf->_buf, buf, size); + } + else + { + _sbuf = new SHARED_BUF(buf, size); + } + _start = _sbuf->_buf; + _size = size; + } + + /*! + * Construct this DATA by copying a slice of another DATA. + * + * @param[in] other The new buffer is a copy of the contents of \a other. + * @param[in] off The new buffer starts at \a off bytes from the start of \a other. + * If \a off is larger than \a other, the new buffer is empty. + */ + void CopyFromData(const DATA &other, size_t off) + { + // Check for a zero-length buffer. + // + if (off >= other._size) + { + _sbuf = 0; + _start = 0; + _size = 0; + return; + } + + // If 'other' has an outstanding writable pointer, we can't share its buffer because + // we don't want changes to 'other' to affect us. + // + if (other._sbuf->_refCount == EXCLUSIVE) + { + _size = other._size - off; + _sbuf = new SHARED_BUF(_size); + std::memcpy(_sbuf->_buf, static_cast(other._start) + off, _size); + _start = _sbuf->_buf; + return; + } + + // Otherwise, we can just share the buffer. + // + _sbuf = other._sbuf; + _sbuf->_refCount++; + _start = static_cast(other._start) + off; + _size = other._size - off; + } + + /*! + * Construct this DATA by copying a slice of another DATA. + * + * @param[in] other The new buffer is a copy of the contents of \a other. + * @param[in] off The new buffer starts at \a off bytes from the start of \a other. + * If \a off is larger than \a other, the new buffer is empty. + * @param[in] len The new buffer is at most \a len bytes long. If \a off + \a len + * is greater than the length of \a other, the new buffer is a copy + * of the data up to the end of \a other. + */ + void CopyFromDataWithLen(const DATA &other, size_t off, size_t len) + { + // Check for a zero-length buffer. + // + if (off >= other._size) + { + _sbuf = 0; + _start = 0; + _size = 0; + return; + } + + if (len > other._size - off) + _size = other._size - off; + else + _size = len; + + // If 'other' has an outstanding writable pointer, we can't share its buffer because + // we don't want changes to 'other' to affect us. + // + if (other._sbuf->_refCount == EXCLUSIVE) + { + _sbuf = new SHARED_BUF(_size); + std::memcpy(_sbuf->_buf, static_cast(other._start) + off, _size); + _start = _sbuf->_buf; + return; + } + + // Otherwise, we can just share the buffer. + // + _sbuf = other._sbuf; + _sbuf->_refCount++; + _start = static_cast(other._start) + off; + } + + /*! + * If there is an attached SHARED_BUF, detach it and remove it if there are no other + * owners. + */ + void DetachBuf() + { + if (_sbuf && ((_sbuf->_refCount == EXCLUSIVE) || (--(_sbuf->_refCount) == 0))) + { + if (_sbuf->_isLazy == 0) + delete [] static_cast(_sbuf->_buf); + delete _sbuf; + } + } + +private: + static const UINT32 EXCLUSIVE = UINT32(0x7fffffff); + + // This is potentially shared by many DATA instances. + // + struct SHARED_BUF + { + // Constructor for an allocated buffer. + // + SHARED_BUF(size_t sz) : _refCount(1), _isLazy(0), _size(sz), _buf(new UINT8[_size]) {} + + // Constructor for an lazy-copied buffer. + // + SHARED_BUF(const void *buf, size_t sz) : _refCount(1), _isLazy(1), _size(sz), _buf(const_cast(buf)) {} + + + UINT32 _refCount:31; // Number of DATA's pointing to this SHARED_BUF, or EXCLUSIVE. + UINT32 _isLazy:1; // Tells if '_buf' is lazy-copied or allocated. + size_t _size; // Size of '_buf'. + + // If '_isLazy' is TRUE, this points to a lazy-copied input buffer and must be treated as "const". + // If '_isLazy' is FALSE, this points to a "new[]" allocated buffer. + // + void *_buf; + }; + + SHARED_BUF *_sbuf; + void *_start; // Start of my instance's data in _buf (treated as "const" if '_isLazy' is TRUE). + size_t _size; // Size of my instance's data +}; + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/util/intel-fp.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/util/intel-fp.hpp new file mode 100644 index 0000000..b68515c --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/util/intel-fp.hpp @@ -0,0 +1,262 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : util +// : component public header + +#ifndef UTIL_INTEL_FP_HPP +#define UTIL_INTEL_FP_HPP + + +namespace UTIL { + +/*! + * An 80-bit X87 data register padded out to 128-bits. + */ +union /**/ X87REG_PADDED +{ + struct + { + UINT64 _significand; ///< The floating-point significand. + UINT16 _exponent; ///< The floating-point exponent, top bit is the sign bit. + UINT16 _pad[3]; + } _fp; + struct + { + UINT64 _lo; ///< Least significant part of value. + UINT64 _hi; ///< Most significant part of value. + } _raw; +}; + +/*! + * A 128-bit XMM register value. + */ +union /**/ XMMREG +{ + UINT8 _vec8[16]; ///< Vector of 16 8-bit elements. + UINT16 _vec16[8]; ///< Vector of 8 16-bit elements. + UINT32 _vec32[4]; ///< Vector of 4 32-bit elements. + UINT64 _vec64[2]; ///< Vector of 2 64-bit elements. +}; + +/*! + * The memory format written by the FXSAVE instruction for IA32. + */ +struct /**/ FXSAVE_IA32 +{ + UINT16 _fcw; ///< X87 control word. + UINT16 _fsw; ///< X87 status word. + UINT8 _ftw; ///< Abridged X87 tag value. + UINT8 _pad1; + UINT16 _fop; ///< Last X87 non-control instruction opcode. + UINT32 _fpuip; ///< Last X87 non-control instruction address. + UINT16 _cs; ///< Last X87 non-control instruction CS selector. + UINT16 _pad2; + UINT32 _fpudp; ///< Last X87 non-control instruction operand address. + UINT16 _ds; ///< Last X87 non-control instruction operand DS selector. + UINT16 _pad3; + UINT32 _mxcsr; ///< MXCSR control and status register. + UINT32 _mxcsrmask; ///< Mask of valid MXCSR bits. + X87REG_PADDED _sts[8]; ///< X87 data registers in top-of-stack order. + XMMREG _xmms[8]; ///< XMM registers. + UINT8 _pad4[224]; +}; + +/*! + * The memory format written by the FXSAVE instruction for Intel64 (default operand size). + */ +struct /**/ FXSAVE_INTEL64_DEFAULT +{ + UINT16 _fcw; ///< X87 control word. + UINT16 _fsw; ///< X87 status word. + UINT8 _ftw; ///< Abridged X87 tag value. + UINT8 _pad1; + UINT16 _fop; ///< Last X87 non-control instruction opcode. + UINT32 _fpuip; ///< Last X87 non-control instruction segment offset. + UINT16 _cs; ///< Last X87 non-control instruction CS selector. + UINT16 _pad2; + UINT32 _fpudp; ///< Last X87 non-control instruction operand segment offset. + UINT16 _ds; ///< Last X87 non-control instruction operand DS selector. + UINT16 _pad3; + UINT32 _mxcsr; ///< MXCSR control and status register. + UINT32 _mxcsrmask; ///< Mask of valid MXCSR bits. + X87REG_PADDED _sts[8]; ///< X87 data registers in top-of-stack order. + XMMREG _xmms[16]; ///< XMM registers. (at most 16 registers, on 32 bit system only 8 are accessible). + UINT8 _pad4[96]; +}; + +/*! + * The memory format written by the FXSAVE instruction for Intel64 (promoted operand size). + */ +struct /**/ FXSAVE_INTEL64_PROMOTED +{ + UINT16 _fcw; ///< X87 control word. + UINT16 _fsw; ///< X87 status word. + UINT8 _ftw; ///< Abridged X87 tag value. + UINT8 _pad1; + UINT16 _fop; ///< Last X87 non-control instruction opcode. + UINT64 _fpuip; ///< Last X87 non-control instruction address. + UINT64 _fpudp; ///< Last X87 non-control operand address. + UINT32 _mxcsr; ///< MXCSR control and status register. + UINT32 _mxcsrmask; ///< Mask of valid MXCSR bits. + X87REG_PADDED _sts[8]; ///< X87 data registers in top-of-stack order. + XMMREG _xmms[16]; ///< XMM registers. + UINT8 _pad4[96]; +}; + + +/*! + * Convert an X87 tag register value from the 16-bit full form to its 8-bit + * abridged form (as saved by the FXSAVE instruction). + * + * @param[in] fullTag The tag value in full form. + * + * @return The tag value in abridged form. + */ +inline UINT8 GetX87AbridgedTag(UINT16 fullTag) +{ + const UINT16 empty = 3; + + UINT8 tags = 0; + UINT16 mask = 3; + for (int i = 0; i < 8; i++) + { + UINT8 tag; + if ((fullTag & mask) == (empty << 2*i)) + tag = 0; + else + tag = 1; + tags |= (tag << i); + mask <<= 2; + } + + return tags; +} + + +/*! + * Get the 16-bit "full form" of X87 tag register value from an FXSAVE buffer. + * + * @tparam FXSAVE One of the three FXSAVE buffer types: FXSAVE_IA32, + * FXSAVE_INTEL64_DEFAULT, or FXSAVE_INTEL64_PROMOTED. + * @param[in] fxsave The FXSAVE buffer data. + */ +template UINT16 GetX87FullTag(const FXSAVE *fxsave) +{ + // This algorithm follows the algorithm in the IA-32 Intel Architecture Software Developer's + // Manual, Volume 2A. See the section on the FXSAVE instruction. + + UINT16 tags = 0; + UINT8 ftw = fxsave->_ftw; + unsigned tos = (fxsave->_fsw >> 11) & 0x7; + + const UINT16 valid = 0; + const UINT16 zero = 1; + const UINT16 special = 2; + const UINT16 empty = 3; + const UINT64 jbit = UINT64(1) << 63; + + for (unsigned i = 0; i < 8; i++) + { + UINT16 tag; + + if (!(ftw & 1)) + { + tag = empty; + } + else + { + // The tag bits are in physical order, but the ST registers are in top-of-stack order. Subtract the TOS + // base to get the corresponding ST register. + // + unsigned streg = (i - tos) & 0x7; + const X87REG_PADDED *reg = &fxsave->_sts[streg]; + + UINT16 exponent = reg->_fp._exponent & 0x7fff; + if (exponent == 0x7fff) + { + tag = special; + } + else if (exponent == 0) + { + if (!reg->_fp._significand) + { + tag = zero; + } + else + { + tag = special; + } + } + else + { + if (reg->_fp._significand & jbit) + tag = valid; + else + tag = special; + } + } + + tags |= (tag << (2*i)); + ftw >>= 1; + } + + return tags; +} + + +/*! + * Get a simplified version of the 16-bit "full form" of the X87 tag register + * value from the 8-bit "abridged" version. The simplified version has the + * 16-bit format, but each tag value is either 00B (valid) or 11B (empty). + * + * @param[in] abridgedTag The 8-bit arbidged tag value. + * + * @return The simplified version of the 16-bit tag value. + */ +inline UINT16 GetSimpleX87FullTag(UINT8 abridgedTag) +{ + const UINT16 valid = 0; + const UINT16 empty = 3; + + UINT16 tags = 0; + for (unsigned i = 0; i < 8; i++) + { + UINT16 tag = (abridgedTag & 1) ? valid : empty; + tags |= (tag << (2*i)); + abridgedTag >>= 1; + } + + return tags; +} + + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/util/locker.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/util/locker.hpp new file mode 100644 index 0000000..a488600 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/util/locker.hpp @@ -0,0 +1,310 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : util +// : component public header + +#ifndef UTIL_LOCKER_HPP +#define UTIL_LOCKER_HPP + +namespace UTIL { + +/*! + * A simple utility that manages a mutex lock. The lock is automatically acquired on + * entry to the scope and released on exit. + * + * @param LOCK Any type that supports Lock() and Unlock() methods with the usual semantics. + */ +template class /**/ LOCKER +{ +public: + /*! + * @param[in] lock The lock to acquire. + * @param[in] acquire If TRUE, the constructor acquires the lock. + */ + LOCKER(LOCK *lock, bool acquire = true) : _lock(lock), _isLocked(acquire) + { + if (acquire) + _lock->Lock(); + } + + /*! + * The destructor releases the lock unless it was manually released via Unlock(). + */ + ~LOCKER() + { + if (_isLocked) + _lock->Unlock(); + } + + /*! + * Manually release the lock. + */ + void Unlock() + { + _lock->Unlock(); + _isLocked = false; + } + + /*! + * Manually acquire the lock. This only makes sense if the lock was manually released + * via Unlock(). No error checking is done to prevent self-deadlock. + */ + void Lock() + { + _lock->Lock(); + _isLocked = true; + } + + /*! + * Indicate that the lock has been acquired or released outside of this wrapper. + * + * @param[in] isLocked TRUE if the lock has been acquired. + */ + void SetLocked(bool isLocked) + { + _isLocked = isLocked; + } + +private: + LOCK *_lock; + bool _isLocked; +}; + + +/*! + * A simple utility that manages a RW mutex lock for READ lock oprtations. The lock is automatically acquired on + * entry to the scope and released on exit. + * + * @param LOCK Any type that supports ReadLock(), WriteLock() and Unlock() methods with the usual semantics. + */ +template class /**/ RWLOCKER +{ +public: + enum LockType + { + READ, + WRITE + }; + + /*! + * @param[in] lock The lock to acquire. + * @param[in] acquire If TRUE, the constructor acquires the lock. + */ + RWLOCKER(LOCK *lock, LockType lock_type, bool acquire = true) : _lock(lock) + { + if (acquire) + { + Lock(lock_type); + } + } + + /*! + * The destructor releases the lock unless it was manually released via Unlock(). + */ + ~RWLOCKER() + { + Unlock(); + } + + /*! + * Manually release the lock. + */ + void Unlock() + { + if (_isLocked) + { + if (NULL != _lock) + { + _lock->Unlock(); + } + _isLocked = false; + } + } + + /*! + * Manually acquire the lock. This only makes sense if the lock was manually released + * via Unlock(). No error checking is done to prevent self-deadlock. + */ + void Lock(LockType lock_type) + { + if (NULL != _lock) + { + switch (lock_type) + { + case RWLOCKER::READ: _lock->ReadLock(); break; + case RWLOCKER::WRITE: _lock->WriteLock(); break; + } + } + _isLocked = true; + } + +private: + LOCK *_lock; + bool _isLocked; +}; + + +#ifdef CC_FAST_LOOKUP +/*! + * A simple utility that manages a RW mutex lock for READ lock oprtations. The lock is automatically acquired on + * entry to the scope and released on exit. + * + * @param LOCK Any type that supports ReadLock(), WriteLock() and Unlock() methods with the usual semantics. + */ +template class /**/ RWLOCKER_WITH_TID +{ +public: + enum LockType + { + READ, + WRITE + }; + + /*! + * @param[in] lock The lock to acquire. + * @param[in] acquire If TRUE, the constructor acquires the lock. + */ + RWLOCKER_WITH_TID(LOCK *lock, LockType lock_type, bool acquire = true) : _lock(lock), _tid(INVALID_NATIVE_TID) + { + if (acquire) + { + Lock(lock_type); + } + } + + /*! + * The destructor releases the lock unless it was manually released via Unlock(). + */ + ~RWLOCKER_WITH_TID() + { + Unlock(); + } + + /*! + * Manually release the lock. + */ + void Unlock() + { + if (_tid != INVALID_NATIVE_TID && NULL != _lock) + { + _lock->Unlock(_tid); + _tid = INVALID_NATIVE_TID; + } + } + + /*! + * Manually acquire the lock. This only makes sense if the lock was manually released + * via Unlock(). No error checking is done to prevent self-deadlock. + */ + void Lock(LockType lock_type) + { + if (_lock == NULL) return; + _tid = GetTidFn(); + switch (lock_type) + { + case RWLOCKER_WITH_TID::READ: _lock->ReadLock(_tid); break; + case RWLOCKER_WITH_TID::WRITE: _lock->WriteLock(_tid); break; + } + } + +private: + LOCK *_lock; + NATIVE_TID _tid; +}; +#endif + + +/*! + * A simple utility that manages a Microsoft CRITICAL_SECTION. The critical section + * is automatically acquired on entry to the scope and released on exit. + * + * @param CSTYPE Usually this is the Microsoft CRITICAL_SECTION type, but you can + * use any type that works with functions named EnterCriticalSection() + * and LeaveCriticalSection(). + */ +template class /**/ SCOPED_CRITICAL_SECTION +{ +public: + /*! + * @param[in] cs The critical section to acquire. + * @param[in] acquire If TRUE, the constructor acquires the critical section. + */ + SCOPED_CRITICAL_SECTION(CSTYPE *cs, bool acquire = true) : _cs(cs), _isLocked(acquire) + { + if (acquire) + EnterCriticalSection(cs); + } + + /*! + * The destructor releases the critical section unless it was manually released via Unlock(). + */ + ~SCOPED_CRITICAL_SECTION() + { + if (_isLocked) + LeaveCriticalSection(_cs); + } + + /*! + * Manually release the critical section. + */ + void Unlock() + { + LeaveCriticalSection(_cs); + _isLocked = false; + } + + /*! + * Manually acquire the critical section. This only makes sense if the critical section + * was manually released via Unlock(). No error checking is done to prevent self-deadlock. + */ + void Lock() + { + EnterCriticalSection(_cs); + _isLocked = true; + } + + /*! + * Indicate that the critical section has been acquired or released outside of this wrapper. + * + * @param[in] isLocked TRUE if the critical section has been acquired. + */ + void SetLocked(bool isLocked) + { + _isLocked = isLocked; + } + +private: + CSTYPE *_cs; + bool _isLocked; +}; + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/util/numberbits.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/util/numberbits.hpp new file mode 100644 index 0000000..0cde367 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/util/numberbits.hpp @@ -0,0 +1,97 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : util +// : component public header + +#ifndef UTIL_NUMBERBITS_HPP +#define UTIL_NUMBERBITS_HPP + + +namespace UTIL { + + +/*! @brief Compute the number of bits required to hold a constant integer value. + * + * This can be used to compute the number of bits required to hold an integer (up to a + * 32-bit integer). Usage is like this: + * + * \code + * int nbits = NUMBER_BITS<54>::count; // number of bits required to hold "54" + * \endcode + * + * Note, the value computed is a compile-time constant, so it can be used wherever + * a constant is allowed: + * \code + * struct FOO + * { + * int a : NUMBER_BITS<54>::count; // define a bit field large enough to hold "54" + * }; + * \endcode + */ +template struct /**/ NUMBER_BITS +{ + static const UINT32 count = + ((num ? 1 : 0) + + ((num>>1) ? 1 : 0) + + ((num>>2) ? 1 : 0) + + ((num>>3) ? 1 : 0) + + ((num>>4) ? 1 : 0) + + ((num>>5) ? 1 : 0) + + ((num>>6) ? 1 : 0) + + ((num>>7) ? 1 : 0) + + ((num>>8) ? 1 : 0) + + ((num>>9) ? 1 : 0) + + ((num>>10) ? 1 : 0) + + ((num>>11) ? 1 : 0) + + ((num>>12) ? 1 : 0) + + ((num>>13) ? 1 : 0) + + ((num>>14) ? 1 : 0) + + ((num>>15) ? 1 : 0) + + ((num>>16) ? 1 : 0) + + ((num>>17) ? 1 : 0) + + ((num>>18) ? 1 : 0) + + ((num>>19) ? 1 : 0) + + ((num>>20) ? 1 : 0) + + ((num>>21) ? 1 : 0) + + ((num>>22) ? 1 : 0) + + ((num>>23) ? 1 : 0) + + ((num>>24) ? 1 : 0) + + ((num>>25) ? 1 : 0) + + ((num>>26) ? 1 : 0) + + ((num>>27) ? 1 : 0) + + ((num>>28) ? 1 : 0) + + ((num>>29) ? 1 : 0) + + ((num>>30) ? 1 : 0) + + ((num>>31) ? 1 : 0)); +}; + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/util/quote-argument-ms.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/util/quote-argument-ms.hpp new file mode 100644 index 0000000..143b17a --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/util/quote-argument-ms.hpp @@ -0,0 +1,181 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : util +// : component public header + +#ifndef UTIL_QUOTE_ARGUMENT_MS_HPP +#define UTIL_QUOTE_ARGUMENT_MS_HPP + + +namespace UTIL { + +/*! + * This is a base class. Use QUOTE_ARGUMENT_MS or QUOTE_ARGUMENT_MS_WIDE. + */ +template class /**/ QUOTE_ARGUMENT_MS_BASE +{ +private: + typedef std::basic_string STRING; + STRING _quoted; + +protected: + /*! + * @param[in] arg The string that needs to be quoted. + * @param[in] whitespace The set of characters that are considered whitespace. + */ + QUOTE_ARGUMENT_MS_BASE(const STRING &arg, const T *whitespace) + { + // Quoting is only necessary if the argument contains whitespace or a quote ("). + // + _quoted = arg; + if (_quoted.find_first_of(whitespace) != STRING::npos || + _quoted.find_first_of('"') != STRING::npos) + { + EscapeBackSlashes(); + EscapeQuotes(); + AddQuotes(whitespace); + } + } + + /*! + * @return The quoted string. + */ + STRING Get() {return _quoted;} + +private: + /*! + * Add escaping to each sequence of backslashes that immediately precedes + * a quote character. Each backslash in such a sequence must be escaped + * with another backslash. Note that backslashes that are not part of a + * sequence that immediately precedes a quote are NOT escaped. E.g.: + * + * \a" -> \a" + * foo\bar"baz\\"fum -> foo\bar"baz\\\\"fum + */ + void EscapeBackSlashes() + { + size_t quote = _quoted.find_first_of('"', 1); + while (quote != STRING::npos) + { + size_t numSlashes = 0; + size_t notSlash = _quoted.find_last_not_of('\\', quote-1); + if (notSlash != quote-1) + { + if (notSlash == STRING::npos) + numSlashes = quote; + else + numSlashes = quote - notSlash - 1; + _quoted.insert(quote, numSlashes, '\\'); + } + quote = _quoted.find_first_of('"', quote + numSlashes + 1); + } + } + + /*! + * Add escaping to each quote character (") by preceding it with a backslash (\). + */ + void EscapeQuotes() + { + size_t quote = _quoted.find_first_of('"'); + while (quote != STRING::npos) + { + _quoted.insert(quote, 1, '\\'); + quote = _quoted.find_first_of('"', quote + 2); + } + } + + /*! + * Add quotes around the string if it contains any whitespace. + */ + void AddQuotes(const T *whitespace) + { + if (_quoted.find_first_of(whitespace) != STRING::npos) + { + _quoted.insert((size_t)0, (size_t)1, '"'); + _quoted.append(1, '"'); + + // If the last character (prior to adding the quotes) was a backslash, + // it needs to be escaped now because it precedes a quote. + // + size_t quote = _quoted.size() - 1; + if (_quoted[quote-1] == '\\') + { + size_t notSlash = _quoted.find_last_not_of('\\', quote-2); + size_t numSlashes = quote - notSlash - 1; + _quoted.insert(quote, numSlashes, '\\'); + } + } + } +}; + + +/*! + * Utility that adds quoting to a string that is necessary in order to pass it + * as an argument to a C/C++ program on Microsoft Windows. The quoting handles + * internal spaces, embedded quote characters, etc. + */ +class /**/ QUOTE_ARGUMENT_MS : private QUOTE_ARGUMENT_MS_BASE +{ +public: + /*! + * @param[in] arg The string that needs to be quoted. + * @param[in] whitespace The set of characters that are considered whitespace. + */ + QUOTE_ARGUMENT_MS(std::string str, const char *ws = " \t") : QUOTE_ARGUMENT_MS_BASE(str, ws) {} + + /*! + * @return The quoted string. + */ + std::string Get() {return QUOTE_ARGUMENT_MS_BASE::Get();} +}; + + +/*! + * A wide-character version of QUOTE_ARGUMENT_MS. Adds quoting to a string, allowing + * it to be passed as an argument to a C/C++ program on Microsoft Windows. + */ +class /**/ QUOTE_ARGUMENT_MS_WIDE : private QUOTE_ARGUMENT_MS_BASE +{ +public: + /*! + * @param[in] arg The string that needs to be quoted. + * @param[in] whitespace The set of characters that are considered whitespace. + */ + QUOTE_ARGUMENT_MS_WIDE(std::wstring str, const wchar_t *ws = L" \t") : QUOTE_ARGUMENT_MS_BASE(str, ws) {} + + /*! + * @return The quoted string. + */ + std::wstring Get() {return QUOTE_ARGUMENT_MS_BASE::Get();} +}; + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/util/range.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/util/range.hpp new file mode 100644 index 0000000..ddeda23 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/util/range.hpp @@ -0,0 +1,142 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : util +// : component public header + +#ifndef UTIL_RANGE_HPP +#define UTIL_RANGE_HPP + +#include "util/round.hpp" + + +namespace UTIL { + +/*! + * Utility that holds and manipulates an address range. + */ +template class /**/ RANGE +{ +public: + RANGE() : _base(0), _size(0) {} ///< Create an empty address range. + + /*! + * Create an address range. + * + * @param[in] base Start of the range. + * @param[in] size Size (bytes) of the range. + */ + RANGE(ADDRTYPE base, size_t size) : _base(base), _size(size) {} + + /*! + * Create an address range. + * + * @param[in] base Start of the range. + * @param[in] size Size (bytes) of the range. + */ + RANGE(void *base, size_t size) : _base(reinterpret_cast(base)), _size(size) {} + + /*! + * Assigns a new value to the range. + * + * @param[in] base Start of the range. + * @param[in] size Size (bytes) of the range. + */ + void Assign(ADDRTYPE base, size_t size) + { + _base = base; + _size = size; + } + + /*! + * Assigns a new value to the range. + * + * @param[in] base Start of the range. + * @param[in] size Size (bytes) of the range. + */ + void Assign(void *base, size_t size) + { + _base = reinterpret_cast(base); + _size = size; + } + + ADDRTYPE GetBase() const { return _base; } ///< @return Start of the range. + size_t GetSize() const { return _size; } ///< @return Size of the range. + ADDRTYPE GetEnd() const { return _base + _size; } ///< @return Address 1 byte beyond range end. + void Clear() { _base = 0; _size = 0; } ///< Makes the range empty. + + /*! + * Aligns the starting and ending addresses of the range. Afterwards, the + * original range is contained by the new one, and the start and end are aligned. + * + * @param[in] alignment Desired alignement (bytes). + */ + void AlignEndpoints(size_t alignment) + { + ADDRTYPE end = RoundUp(GetEnd(), alignment); + _base = RoundDown(_base, alignment); + _size = end - _base; + } + + /*! + * Tells if the range contains an address. + * + * @param[in] addr Address to test. + * + * @return TRUE if range contains the address. + */ + bool Contains(ADDRTYPE addr) const + { + return ((addr - _base) < _size); + } + + /*! + * Tells if the range contains all addresses in another range. + * + * @param[in] range Range to test. + * + * @return TRUE if range contains \a range. + */ + bool Contains(const RANGE &range) const + { + return (Contains(range.m_base) && !range.Contains(GetEnd())); + } + +private: + ADDRTYPE _base; + size_t _size; +}; + +typedef RANGE ARANGE; ///< A range of target addresses. +typedef RANGE ANYRANGE; ///< A range of ANYADDR's. +typedef RANGE PRANGE; ///< A range of host addresses. + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/util/regvalue.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/util/regvalue.hpp new file mode 100644 index 0000000..8851592 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/util/regvalue.hpp @@ -0,0 +1,547 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : util +// : component public header + +#ifndef UTIL_REGVALUE_HPP +#define UTIL_REGVALUE_HPP + +#undef min // Some broken system headers define "min", which conflicts with std::min(). + +#include +#include +#include "util/data.hpp" + + +namespace UTIL { + +/*! + * Utility that holds the value of a register and the size of the register from which + * it came. + * + * @todo: There are many assumptions that the host is little-endian. + */ +class /**/ REGVALUE +{ +public: + /*! + * Construct an uninitialized register value. + */ + REGVALUE() : _size(0), _value(0) {} + + /*! + * Construct a register value that is a copy of an existing value. + * + * @param[in] other The copied value. + */ + REGVALUE(const REGVALUE &other) + { + SetCopy(other); + } + + /*! + * Construct a register value that is the same size as "ADDRINT". + * + * @param[in] val Value of the register. + */ + REGVALUE(ADDRINT val) + { + SetAddress(val); + } + + /*! + * Construct a register value. + * + * @param[in] val Value of the register. + * @param[in] size Size (bits) of the register. + */ + REGVALUE(UINT64 val, unsigned size) + { + Set64(val, size); + } + + /*! + * Construct a register value. + * + * @param[in] lo Low 64 bits of register value. + * @param[in] hi High 64 bits of register value. + * @param[in] size Size (bits) of the register. + */ + REGVALUE(UINT64 lo, UINT64 hi, unsigned size) + { + Set128(lo, hi, size); + } + + /*! + * Construct a register value from a DATA buffer. The content of the data + * buffer is interpreted as big- or little-endian according to the host byte + * order. + * + * @param[in] val Value and size of the register. + * @param[in] size If non-zero, the size (bits) of the register. Otherwise, + * the register's width is the size of \a val. + */ + REGVALUE(const UTIL::DATA &val, unsigned size=0) + { + SetBuffer(val.GetBuf(), val.GetSize(), size); + } + + /*! + * Construct a register value from a raw byte buffer. The content of the buffer is + * interpreted as a big- or little-endian value according to the host byte order. + * + * @param[in] buf Pointer to raw buffer of bytes. + * @param[in] byteSize Size (in bytes) of the buffer \a buf. + * @param[in] size If non-zero, the size (bits) of the register. Otherwise, + * the register's width is \a byteSize. + */ + template REGVALUE(const T *buf, size_t byteSize, unsigned size=0) + { + SetBuffer(static_cast(buf), byteSize, size); + } + + ~REGVALUE() {ClearIfNeeded();} + + /*! + * Re-assign to a copy of another register value. + * + * @param[in] other Register value that is copied. + * + * @return Reference to the new register value. + */ + REGVALUE &operator =(const REGVALUE &other) + { + ClearIfNeeded(); + SetCopy(other); + return *this; + } + + /*! + * Re-assign to a copy of another register value. + * + * @param[in] other Register value that is copied. + */ + void Assign(const REGVALUE &other) + { + ClearIfNeeded(); + SetCopy(other); + } + + /*! + * Re-assign to a new register value that is the same size as "ADDRINT". + * + * @param[in] val Value of the register. + */ + void Assign(ADDRINT val) + { + ClearIfNeeded(); + SetAddress(val); + } + + /*! + * Re-assign to a new register value. + * + * @param[in] val Value of the register. + * @param[in] size Size (bits) of the register. + */ + void Assign(UINT64 val, unsigned size) + { + ClearIfNeeded(); + Set64(val, size); + } + + /*! + * Re-assign to a new register value. + * + * @param[in] lo Low 64 bits of register value. + * @param[in] hi High 64 bits of register value. + * @param[in] size Size (bits) of the register. + */ + void Assign(UINT64 lo, UINT64 hi, unsigned size) + { + ClearIfNeeded(); + Set128(lo, hi, size); + } + + /*! + * Re-assign to a new register value. + * + * @param[in] data 4-64 bits of register value. + * @param[in] size Size (bits) of the register. + */ + void Assign(UINT64 * data, unsigned size) + { + ClearIfNeeded(); + Set256(data, size); + } + + /*! + * Re-assign to a new register value from a DATA buffer. The content of the data + * buffer is interpreted as big- or little-endian according to the host byte + * order. + * + * @param[in] val Value and size of the register. + * @param[in] size If non-zero, the size (bits) of the register. Otherwise, + * the register's width is the size of \a val. + */ + void Assign(const UTIL::DATA &val, unsigned size=0) + { + ClearIfNeeded(); + SetBuffer(val.GetBuf(), val.GetSize(), size); + } + + /*! + * Re-assign to a new register value from a raw byte buffer. The content of the buffer + * is interpreted as a big- or little-endian value according to the host byte order. + * + * @param[in] buf Pointer to raw buffer of bytes. + * @param[in] byteSize Size (in bytes) of the buffer \a buf and of the register. + * @param[in] size If non-zero, the size (bits) of the register. Otherwise, + * the register's width is \a byteSize. + */ + template void Assign(const T *buf, size_t byteSize, unsigned size=0) + { + ClearIfNeeded(); + SetBuffer(static_cast(buf), byteSize, size); + } + + /*! + * Change the size of the register value, truncating or zero-extending the value + * as necessary. + * + * @param[in] size New size (bits). + */ + void Resize(unsigned size) + { + if (_size <= 8*sizeof(PTRINT)) + { + Set64(_value, size); + } + else + { + UTIL::DATA *d = _bigValue; + SetBuffer(d->GetBuf(), d->GetSize(), size); + delete d; + } + } + + /*! + * @return The size (bits) of the register. + */ + unsigned GetBitSize() const {return _size;} + + /*! + * Copy the register value to a DATA buffer. The value is written as + * big- or little-endian according to the host byte order. + * + * @param[out] data Receives the value and size of the register. + * If the register size is not an even multiple + * of bytes, it is rounded up and the high-order + * bits are set to zero. + */ + void CopyToData(UTIL::DATA *data) const + { + if (_size <= 8*sizeof(PTRINT)) + data->Assign(&_value, GetByteSize()); + else + data->Assign(*_bigValue); + } + + /*! + * Copy the register value to a raw byte buffer. The value is written + * as big- or little-endian according to the host byte order. + * + * @param[in] data Receives the register value. The \a data buffer + * must be long enough to receive the register's size + * (defined by GetBitSize()). + */ + void CopyToBuffer(void *data) const + { + if (_size <= 8*sizeof(PTRINT)) + memcpy(data, &_value, GetByteSize()); + else + memcpy(data, _bigValue->GetBuf(), _bigValue->GetSize()); + } + + /*! + * Return the value of the register cast to an integral type. The size + * of the register need not be the same as the size of the returned type. + * The value is zero-extended or truncated as necessary. + * + * @return The register value. + */ + template T GetValueAs() const + { + if (_size <= 8*sizeof(PTRINT)) + return static_cast(_value); + return GetIndexedWord(0); + } + + /*! + * Considering the register value as an array of words of type "T", return + * one word from that array. + * + * @param[in] index Specifies the word to return. Index zero specifies the + * least significant word. + * + * @return The word, or zero if \a index is out of range for the register's size. + */ + template T GetIndexedWord(unsigned index) const + { + size_t byteSize = GetByteSize(); + const UINT8 *buf = static_cast(GetBuffer()); + size_t offset = index * sizeof(T); + if (offset + sizeof(T) <= byteSize) + { + T tmp; + memcpy(static_cast(&tmp), static_cast(buf+offset), sizeof(T)); + return tmp; + } + else if (offset < byteSize) + { + T tmp(0); + memcpy(static_cast(&tmp), static_cast(buf+offset), byteSize-offset); + return tmp; + } + else + { + return T(0); + } + } + +private: + /*! + * Set to a copy of another register value. + * + * @param[in] other The copied register value. + */ + void SetCopy(const REGVALUE &other) + { + _size = other._size; + if (_size <= 8*sizeof(PTRINT)) + _value = other._value; + else + _bigValue = new UTIL::DATA(*other._bigValue); + } + + /*! + * Set to an "ADDRINT" sized value. + * + * @param[in] val Register value. + */ + void SetAddress(ADDRINT val) + { + _size = 8*sizeof(ADDRINT); +#if defined(ADDRINT_SIZE_IN_BITS) && (ADDRINT_SIZE_IN_BITS <= PTRINT_SIZE) + _value = val; +#else + _bigValue = new DATA(&val, sizeof(ADDRINT)); +#endif + } + + /*! + * Set the value and size. Size could be larger than UINT64. + * + * @param[in] val Register value. + * @param[in] size Size (bits). + */ + void Set64(UINT64 val, unsigned size) + { + _size = size; + if (size == 8*sizeof(PTRINT)) + { + _value = static_cast(val); + } + else if (size < 8*sizeof(PTRINT)) + { + PTRINT mask = PTRINT(1); + _value = static_cast(val) & ((mask << size) - PTRINT(1)); + } + else if (size == 8*sizeof(UINT64)) + { + _bigValue = new DATA(&val, 8); + } + else if (size > 8*sizeof(UINT64)) + { + // Size of DATA > sizeof(val), so top bytes of DATA need to be zeroed. + // + unsigned byteSize = (size + 7) >> 3; + _bigValue = new DATA(byteSize); + memcpy(_bigValue->GetWritableBuf(), static_cast(&val), sizeof(val)); + UINT8 *rest = _bigValue->GetWritableBuf() + sizeof(val); + memset(static_cast(rest), 0, byteSize - sizeof(val)); + _bigValue->ReleaseWritableBuf(); + } + else + { + // Register size < UINT64 and > PTRINT. + // This can't happen on 64-bit hosts. + // + UINT64 mask = UINT64(1); + val = val & ((mask << size) - UINT64(1)); + unsigned byteSize = (size + 7) >> 3; + _bigValue = new DATA(&val, byteSize); + } + } + + /*! + * Set the value and size. + * + * @param[in] lo Low 64 bits of register value. + * @param[in] hi High 64 bits of register value. + * @param[in] size Size (bits). + */ + void Set128(UINT64 lo, UINT64 hi, unsigned size) + { + UINT64 buf[2]; + buf[0] = lo; + buf[1] = hi; + SetBuffer(static_cast(buf), sizeof(buf), size); + } + + /*! + * Set the value and size. + * + * @param[in] data 4-64 bits of register value. + * @param[in] size Size (bits). + */ + void Set256(UINT64 * data, unsigned size) + { + UINT64 buf[4]; + buf[0] = data[0]; + buf[1] = data[1]; + buf[2] = data[2]; + buf[3] = data[3]; + SetBuffer(static_cast(buf), sizeof(buf), size); + } + + /*! + * Set to the contents of a raw buffer. The value in the buffer is interpreted + * as big- or little-endian according to the host byte order. + * + * @param[in] buf Buffer with value. + * @param[in] byteSize Size (bytes) of buffer. + * @param[in] size Size (bits) of register. If zero, size is \a byteSize. + */ + void SetBuffer(const void *buf, size_t byteSizeIn, unsigned size) + { + if (!size) + size = static_cast(8*byteSizeIn); + _size = size; + size_t byteSize = (size + 7) >> 3; + + if (size == 8*sizeof(PTRINT)) + { + // The input buffer might be smaller than PTRINT, so zero out '_value' first to zero- + // extend the buffer's value. + // + _value = 0; + memcpy(static_cast(&_value), buf, std::min(byteSizeIn, sizeof(PTRINT))); + } + else if (size < 8*sizeof(PTRINT)) + { + // Same as above, but we also need to mask the final value down to the register size. + // + _value = 0; + memcpy(static_cast(&_value), buf, std::min(byteSizeIn, byteSize)); + PTRINT mask = PTRINT(1); + _value &= ((mask << size) - PTRINT(1)); + } + else + { + // Create a DATA large enough for the register size, which might be different than + // the input buffer size. + // + _bigValue = new DATA(byteSize); + size_t sizeCopied = std::min(byteSizeIn, byteSize); + memcpy(_bigValue->GetWritableBuf(), buf, sizeCopied); + memset(static_cast(_bigValue->GetWritableBuf()+sizeCopied), 0, byteSize-sizeCopied); + + // The last byte in the DATA might need to be masked if the register size is not an even + // multiple of bytes. However, if the buffer size is less than the DATA size, the last + // byte has already been zeroed by the memset() above. + // + if ((byteSize <= byteSizeIn) && (size < 8*byteSize)) + { + unsigned numBitsLast = static_cast(8 - (8*byteSize - size)); + UINT8 *last = &_bigValue->GetWritableBuf()[_bigValue->GetSize()-1]; + UINT8 mask = UINT8(1); + *last &= ((mask << numBitsLast) - UINT8(1)); + } + _bigValue->ReleaseWritableBuf(); + } + } + + /*! + * Clear the _bigValue buffer if it is allocated. + */ + void ClearIfNeeded() + { + if (_size > 8*sizeof(PTRINT)) + delete _bigValue; + } + + /*! + * @return Size of the register, rounded up to the next byte. + */ + size_t GetByteSize() const + { + return (_size + 7) >> 3; + } + + /*! + * @return Pointer to the buffer containing the register value. The value in + * the buffer has the host's byte order. The lifetime of the buffer + * lasts only until the next operation that changes the REGVALUE. + */ + const void *GetBuffer() const + { + if (_size <= 8*sizeof(PTRINT)) + return static_cast(&_value); + else + return _bigValue->GetBuf(); + } + + +private: + unsigned _size; // Register width in bits. + + // Register value. Any unused high-order bits are zero. + // + union + { + PTRINT _value; // Value if size <= sizeof(void *) + UTIL::DATA *_bigValue; // Value if size > sizeof(void *), in host byte order + }; +}; + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/util/round.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/util/round.hpp new file mode 100644 index 0000000..3fa8e2f --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/util/round.hpp @@ -0,0 +1,162 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : util +// : component public header + +#ifndef UTIL_ROUND_HPP +#define UTIL_ROUND_HPP + + + +namespace UTIL { + +/*! + * Rounds an integer value down. + * + * @param[in] val Integral value. + * @param[in] align The \a val is rounded down to this alignment (need not be a power of 2). + * + * @return The rounded value. + */ +template T RoundDown(T val, size_t align) +{ + size_t mod = val % align; + val -= mod; + return val; +} + +/*! + * Rounds an integer value up. + * + * @param[in] val Integral value. + * @param[in] align The \a val is rounded up to this alignment (need not be a power of 2). + * + * @return The rounded value. + */ +template T RoundUp(T val, size_t align) +{ + size_t mod = val % align; + if (mod) + val += (align - mod); + return val; +} + +/*! + * Rounds a pointer down. + * + * @param[in] ptr A pointer. + * @param[in] align The \a ptr is rounded down to this alignment (need not be a power of 2). + * + * @return The rounded pointer value. + */ +template T *RoundDown(T *ptr, size_t align) +{ + PTRINT val = reinterpret_cast(ptr); + size_t mod = val % align; + val -= mod; + return reinterpret_cast(val); +} + +/*! + * Rounds a pointer up. + * + * @param[in] ptr A pointer. + * @param[in] align The \a ptr is rounded up to this alignment (need not be a power of 2). + * + * @return The rounded pointer value. + */ +template T *RoundUp(T *ptr, size_t align) +{ + PTRINT val = reinterpret_cast(ptr); + size_t mod = val % align; + if (mod) + val += (align - mod); + return reinterpret_cast(val); +} + +/*! + * Tells difference between two pointers. + * + * @param[in] ptr1 Usually the pointer to higher memory. + * @param[in] ptr2 Usually the pointer to lower memory. + * + * @return The difference in bytes from \a ptr2 to \a ptr1. + */ +inline size_t PtrDiff(const void* ptr1, const void* ptr2) +{ + return static_cast(ptr1) - static_cast(ptr2); +} + +/*! + * Compute a pointer that is an offset from a base pointer. + * + * @param[in] ptr The base pointer. + * @param[in] offset Offset in bytes. + * + * @return A new pointer that is \a offset bytes from \a ptr. + */ +inline void *PtrAtOffset(void *ptr, size_t offset) +{ + return static_cast(ptr) + offset; +} + +/*! + * Compute a pointer that is an offset from a base pointer. + * + * @param[in] ptr The base pointer. + * @param[in] offset Offset in bytes. + * + * @return A new pointer that is \a offset bytes from \a ptr. + */ +inline const void *PtrAtOffset(const void* ptr, size_t offset) +{ + return static_cast(ptr) + offset; +} + +/*! + * Return pointer of type whose offset, in bytes, from is + */ +template T * PtrAtOffset(void * ptr, size_t offset) +{ + return static_cast(PtrAtOffset(ptr, offset)); +} + +/*! + Return const pointer of type whose offset, in bytes, from is + */ +template const T * PtrAtOffset(const void * ptr, size_t offset) +{ + return static_cast(PtrAtOffset(ptr, offset)); +} + + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/util/scoped-array.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/util/scoped-array.hpp new file mode 100644 index 0000000..431630b --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/util/scoped-array.hpp @@ -0,0 +1,128 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : util +// : component public header + +#ifndef UTIL_SCOPED_ARRAY_HPP +#define UTIL_SCOPED_ARRAY_HPP + +#include +#include + + +namespace UTIL { + + +/*! + * A simple smart pointer, inspired by boost::scoped_array. Pointers managed by + * SCOPED_ARRAY cannot be shared, and there is no reference counting overhead. A + * scoped pointer is simply deleted at the end of the enclosing scope. Since + * these pointers can't be shared, SCOPED_ARRAY disallows assignment from one + * SCOPED_ARRAY to another. + */ +template class /**/ SCOPED_ARRAY +{ +public: + /*! + * Create a smart pointer wrapper for \a p. + * + * @param[in] p A pointer from "new[]", or NULL. + */ + explicit SCOPED_ARRAY(T *p = 0) : _ptr(p) {} + + /*! + * The destructor automatically calls delete on the pointer. + */ + ~SCOPED_ARRAY() + { + delete [] _ptr; // Note, delete of NULL is defined to do nothing. + } + + /*! + * Deletes the underlying pointer, then assigns a new pointer. + * + * @param[in] p A pointer from "new[]", or NULL. + */ + void Reset(T *p = 0) + { + delete [] _ptr; + _ptr = p; + } + + /*! + * Index into the underlying array, which must not be NULL. + * + * @param[in] i Index into the array. + * + * @return A reference to the array element indexed by \a i. + */ + T & operator[](std::ptrdiff_t i) const + { + assert(_ptr != 0); + assert(i >= 0); + return _ptr[i]; + } + + /*! + * @return The underlying pointer. + */ + T * Get() const + { + return _ptr; + } + + /*! + * Conversion to bool. + * + * @return TRUE if the underlying pointer is not NULL. + */ + operator bool () const + { + return (_ptr != 0); + } + + /*! + * @return TRUE if the underlying pointer is NULL. + */ + bool operator! () const + { + return (_ptr == 0); + } + +private: + T *_ptr; + + SCOPED_ARRAY(SCOPED_ARRAY const &); + SCOPED_ARRAY & operator=(SCOPED_ARRAY const &); +}; + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/util/scoped-ptr.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/util/scoped-ptr.hpp new file mode 100644 index 0000000..d50fd8b --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/util/scoped-ptr.hpp @@ -0,0 +1,143 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : util +// : component public header + +#ifndef UTIL_SCOPED_PTR_HPP +#define UTIL_SCOPED_PTR_HPP + +#include + + +namespace UTIL { + + +/*! + * A simple smart pointer, inspired by boost::scoped_ptr. Pointers managed by + * SCOPED_PTR cannot be shared, and there is no reference counting overhead. A + * scoped pointer is simply deleted at the end of the enclosing scope. Since + * these pointers can't be shared, SCOPED_PTR disallows assignment from one + * SCOPED_PTR to another. + */ +template class /**/ SCOPED_PTR +{ +public: + /*! + * Create a smart pointer wrapper for \a p. + * + * @param[in] p A pointer from "new", or NULL. + */ + explicit SCOPED_PTR(T *p = 0) : _ptr(p) {} + + /*! + * The destructor automatically calls delete on the pointer. + */ + ~SCOPED_PTR() + { + delete _ptr; // Note, delete of NULL is defined to do nothing. + } + + /*! + * Deletes the underlying pointer, then assigns a new pointer. + * + * @param[in] p A pointer from "new", or NULL. + */ + void Reset(T *p = 0) + { + delete _ptr; + _ptr = p; + } + + /*! + * @return A reference to the underlying pointer, which must not be NULL. + */ + T & operator*() const + { + assert(_ptr != 0); + return *_ptr; + } + + /*! + * @return The underlying pointer, which must not be NULL. + */ + T * operator->() const + { + assert(_ptr != 0); + return _ptr; + } + + /*! + * @return The underlying pointer. + */ + T * Get() const + { + return _ptr; + } + + /*! + * Exchange the contents of two smart pointers. + * + * @param[in] other The other pointer that is exchanged. + */ + void Swap(SCOPED_PTR &other) + { + T *t = other._ptr; + other._ptr = _ptr; + _ptr = t; + } + + /*! + * Conversion to bool. + * + * @return TRUE if the underlying pointer is not NULL. + */ + operator bool () const + { + return (_ptr != 0); + } + + /*! + * @return TRUE if the underlying pointer is NULL. + */ + bool operator! () const + { + return (_ptr == 0); + } + +private: + T *_ptr; + + SCOPED_PTR(SCOPED_PTR const &); + SCOPED_PTR & operator=(SCOPED_PTR const &); +}; + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/util/singleton.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/util/singleton.hpp new file mode 100644 index 0000000..960b7e1 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/util/singleton.hpp @@ -0,0 +1,98 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : util +// : component public header + +#ifndef UTIL_SINGLETON_HPP +#define UTIL_SINGLETON_HPP + + + +namespace UTIL { + +/*! + * Template of a singleton class with the following properties: + * - The single instance of the class is created during static initialization of the + * module. + * - The instance of the class is never destroyed. + * _ The instance of the class can be accessed at any time: during static initialization + * or anytime after. + * - The class is thread-safe, assuming the module's static initialization is thread-safe + * (normally performed in a single thread). + * + * @param T type of the singleton's instance. The class should have a default + * constructor accessible from this tempalte. + */ +template class /**/ STATIC_SINGLETON +{ +public: + /*! + * Get the single instance of class . + */ + static T * GetInstance() + { + if (m_pInstance == 0) + { + m_pInstance = Create(); + } + return m_pInstance; + } + +private: + /*! + * Create an instance of class . + */ + static T * Create() + { + // We use placement new() for two reasons: + // - To create a never-destructed instance of . This allows using this instance + // at any time, even during the module's destruction. + // - We could use the regular "new" operator here instead, but placement new is advantageous + // because some clients limit the amount of memory that can be dynamically allocated at + // static initialization time (e.g. clients that replace the "malloc" implementation). + // Allocating the data statically like this for a singleton class has no real disadvantage. + + static UINT8 storage[sizeof(T) + ALIGNMENT_OF(T)]; + return new((void *)RoundUp(&(storage[0]), ALIGNMENT_OF(T))) T(); + } + +private: + static T * m_pInstance; +}; + +/*! + * Static member of the STATIC_SINGLETON template: pointer to the single instance + * of the class . + */ +template T * STATIC_SINGLETON::m_pInstance = STATIC_SINGLETON::GetInstance(); + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/util/strings.hpp b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/util/strings.hpp new file mode 100644 index 0000000..1d5fe91 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/include/util/strings.hpp @@ -0,0 +1,234 @@ +/*BEGIN_LEGAL +Intel Open Source License + +Copyright (c) 2002-2017 Intel Corporation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. Redistributions +in binary form must reproduce the above copyright notice, this list of +conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. Neither the name of +the Intel Corporation nor the names of its contributors may be used to +endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +END_LEGAL */ +// : util +// : component public header + +#ifndef UTIL_STRINGS_HPP +#define UTIL_STRINGS_HPP + +#include +#include +#include + + +namespace UTIL { + +/*! + * Convert an integral value to a decimal string. + * + * @param[in] val Integral value. + * @param[in] width If not zero, "0"'s are prefixed if the + * number has less than \a width digits. + * + * @return String representation of \a val as a decimal integer. + */ +template std::string GetDecString(T val, int width = 0) +{ + std::ostringstream s; + s << std::dec << std::setfill('0') << std::setw(width) << val; + return s.str(); +} + +/*! + * Convert an integral value to a decimal string. + * + * @param[in] val Integral value. + * @param[in] width If not zero, "0"'s are prefixed if the + * number has less than \a width digits. + * + * @return String representation of \a val as a decimal integer. + */ +template std::wstring GetDecStringW(T val, int width = 0) +{ + std::wostringstream s; + s << std::dec << std::setfill(L'0') << std::setw(width) << val; + return s.str(); +} + +/*! + * Convert an integral value to a hex string. + * + * @param[in] val Integral value. + * @param[in] showBase If TRUE, the string is prefix with "0x". + * @param[in] width If not zero, "0"'s are prefixed if the + * number has less than \a width digits. + * + * @return String representation of \a val as a hex string. + */ +template std::wstring GetHexStringW(T val, bool showBase = true, + int width = 0) +{ + std::wostringstream s; + if (showBase) + s << L"0x"; + s << std::hex << std::noshowbase << std::setfill(L'0') << std::setw(width) << val; + return s.str(); +} + +/*! + * Convert an integral value to a hex string. + * + * @param[in] val Integral value. + * @param[in] showBase If TRUE, the string is prefix with "0x". + * @param[in] width If not zero, "0"'s are prefixed if the + * number has less than \a width digits. + * + * @return String representation of \a val as a hex string. + */ +template std::string GetHexString(T val, bool showBase = true, + int width = 0) +{ + std::ostringstream s; + if (showBase) + s << "0x"; + s << std::hex << std::noshowbase << std::setfill('0') << std::setw(width) << val; + return s.str(); +} + +/*! +* This function is similar to strtoul(), with two differences: 1) the type of +* the result is a template argument instead of hard-coded to "long", 2) the input +* is specified as two STL-style iterators into a sequence of items that are +* convertible to "char". +* +* Parse an unsigned integral value from a sequence of char's, or other items that +* are convertible to char. If the sequence starts with whitespace characters, it +* is skipped before any parsing is done. +* +* The \a base parameter specifies the radix to use when parsing the number and may +* be any value from 0 to 37. Each digit in the parsed number must be one of the +* characters '0' - '9 or 'a' - 'z' depending on the value of \a base. When \a base +* is greater than 10, digits may include the letters 'a' - 'z' in either upper or +* lower case. +* +* When \a base is zero, the radix is determined by the prefix of the input, after +* the initial whitespace has been ignored. If the prefix is "0x", the radix is 16. +* If the prefix is "0", the radix is 8. Otherwise, the radix is 10. When \a base +* is 16, the prefix "0x" is also allowed. +* +* This function fails if the input sequence (after ignoring initial whitespace) +* does not start with a valid number. The function also fails if the parsed number +* would overflow its type or if \a base is out or range. +* +* @param[in] start Input iterator to the start of the input sequence. +* @param[in] end Input iterator to the end of the input sequence. +* @param[in] base Tells the radix to use when parsing the value, which must +* be less than 37. +* @param[out] val On success, receives the parsed value. +* +* @return On success, an iterator that points to the first unparsed position in +* the sequence. On failure, this function returns \a start. +*/ +template InputIterator ParseUnsigned( + InputIterator first, InputIterator last, unsigned base, T *val) +{ + // Make sure the radix is in range. + // + if (base > 37) + return first; + + // Skip initial whitespace. + // + InputIterator it = first; + while (it != last && std::isspace(*it)) + it++; + if (it == last) + return first; + InputIterator itAfterWs = it; + + // See if there is a leading zero (e.g. the prefix is "0x" or "0"). + // + bool zeroPending = false; + if (*it == '0') + { + zeroPending = true; + it++; + if (it == last) + { + *val = 0; + return it; + } + } + + // Check for a "0x" prefix if the radix is 0 or 16. + // + if ((base == 16 || base == 0) && zeroPending && (*it == 'x' || *it == 'X')) + { + InputIterator it2 = it++; + if (it == last || !std::isxdigit(*it)) + { + // If the prefix is "0x" with NO subsequent digits, parse the + // value zero and stop parsing before the "x". + // + *val = 0; + return it2; + } + base = 16; + } + + if (base == 0) + base = (zeroPending) ? 8 : 10; + + // Parse each digit. + // + T myVal = 0; + while (it != last) + { + char c = std::tolower(*it); + unsigned digit; + if (c >= '0' && c <= '9') + digit = c - '0'; + else if (c >= 'a' && c <= 'z') + digit = 10 + c - 'a'; + else + break; + if (digit >= base) + break; + T newVal = myVal * base + digit; + + // Check for overflow. + // + if (((newVal - digit) / base) != myVal) + return first; + myVal = newVal; + it++; + } + + // We must parse at least one digit for success. + // + if (it == itAfterWs) + return first; + *val = myVal; + return it; +} + +} // namespace +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/lib/ia32/libatomic.a b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/lib/ia32/libatomic.a new file mode 100644 index 0000000..2554e71 Binary files /dev/null and b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/lib/ia32/libatomic.a differ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/lib/ia32/libdebugger-protocol.a b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/lib/ia32/libdebugger-protocol.a new file mode 100644 index 0000000..1ad275e Binary files /dev/null and b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/lib/ia32/libdebugger-protocol.a differ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/lib/ia32/libdebugger-protocol.so b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/lib/ia32/libdebugger-protocol.so new file mode 100644 index 0000000..7692d91 Binary files /dev/null and b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/lib/ia32/libdebugger-protocol.so differ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/lib/intel64/libatomic.a b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/lib/intel64/libatomic.a new file mode 100644 index 0000000..9d486b4 Binary files /dev/null and b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/lib/intel64/libatomic.a differ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/lib/intel64/libdebugger-protocol.a b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/lib/intel64/libdebugger-protocol.a new file mode 100644 index 0000000..9d34333 Binary files /dev/null and b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/lib/intel64/libdebugger-protocol.a differ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/lib/intel64/libdebugger-protocol.so b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/lib/intel64/libdebugger-protocol.so new file mode 100644 index 0000000..c999470 Binary files /dev/null and b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/components/lib/intel64/libdebugger-protocol.so differ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/annotated.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/annotated.html new file mode 100644 index 0000000..7b5fb89 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/annotated.html @@ -0,0 +1,43 @@ + + +PinCRT: Class List + + + + +
+
+ +

PinCRT Class List

Here are the classes, structs, unions and interfaces with brief descriptions: + + + + + + +
_OS_APIS_MUTEX_TYPE
_OS_FILE_UNIQUE_ID
_OS_RETURN_CODE
OS_APIS_RW_LOCK_IMPL_T
OS_MEMORY_AT_ADDR_INFORMATION
SIGACTION
+
Generated on Sat Nov 4 23:36:53 2017 for PinCRT by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/classes.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/classes.html new file mode 100644 index 0000000..c21b447 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/classes.html @@ -0,0 +1,41 @@ + + +PinCRT: Alphabetical List + + + + +
+
+ +

PinCRT Class Index

O | S | _

+ +
  O  
+
OS_MEMORY_AT_ADDR_INFORMATION   SIGACTION   _OS_APIS_MUTEX_TYPE   _OS_RETURN_CODE   
OS_APIS_RW_LOCK_IMPL_T   
  S  
+
  _  
+
_OS_FILE_UNIQUE_ID   

O | S | _

+


Generated on Sat Nov 4 23:36:53 2017 for PinCRT by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/doxygen.css b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/doxygen.css new file mode 100644 index 0000000..05615b2 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/doxygen.css @@ -0,0 +1,310 @@ +BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV { + font-family: Geneva, Arial, Helvetica, sans-serif; +} +BODY,TD { + font-size: 90%; +} +H1 { + text-align: center; + font-size: 160%; +} +H2 { + font-size: 120%; +} +H3 { + font-size: 100%; +} +CAPTION { font-weight: bold } +DIV.qindex { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.nav { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.navtab { + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} +TD.navtab { + font-size: 70%; +} +A.qindex { + text-decoration: none; + font-weight: bold; + color: #1A419D; +} +A.qindex:visited { + text-decoration: none; + font-weight: bold; + color: #1A419D +} +A.qindex:hover { + text-decoration: none; + background-color: #ddddff; +} +A.qindexHL { + text-decoration: none; + font-weight: bold; + background-color: #6666cc; + color: #ffffff; + border: 1px double #9295C2; +} +A.qindexHL:hover { + text-decoration: none; + background-color: #6666cc; + color: #ffffff; +} +A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff } +A.el { text-decoration: none; font-weight: bold } +A.elRef { font-weight: bold } +A.code:link { text-decoration: none; font-weight: normal; color: #0000FF} +A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF} +A.codeRef:link { font-weight: normal; color: #0000FF} +A.codeRef:visited { font-weight: normal; color: #0000FF} +A:hover { text-decoration: none; background-color: #f2f2ff } +DL.el { margin-left: -1cm } +.fragment { + font-family: Fixed, monospace; + font-size: 95%; +} +PRE.fragment { + border: 1px solid #CCCCCC; + background-color: #f5f5f5; + margin-top: 4px; + margin-bottom: 4px; + margin-left: 2px; + margin-right: 8px; + padding-left: 6px; + padding-right: 6px; + padding-top: 4px; + padding-bottom: 4px; +} +DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } +TD.md { background-color: #F4F4FB; font-weight: bold; } +TD.mdPrefix { + background-color: #F4F4FB; + color: #606060; + font-size: 80%; +} +TD.mdname1 { background-color: #F4F4FB; font-weight: bold; color: #602020; } +TD.mdname { background-color: #F4F4FB; font-weight: bold; color: #602020; width: 600px; } +DIV.groupHeader { + margin-left: 16px; + margin-top: 12px; + margin-bottom: 6px; + font-weight: bold; +} +DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% } +BODY { + background: white; + color: black; + margin-right: 20px; + margin-left: 20px; +} +TD.indexkey { + background-color: #e8eef2; + font-weight: bold; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TD.indexvalue { + background-color: #e8eef2; + font-style: italic; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TR.memlist { + background-color: #f0f0f0; +} +P.formulaDsp { text-align: center; } +IMG.formulaDsp { } +IMG.formulaInl { vertical-align: middle; } +SPAN.keyword { color: #008000 } +SPAN.keywordtype { color: #604020 } +SPAN.keywordflow { color: #e08000 } +SPAN.comment { color: #800000 } +SPAN.preprocessor { color: #806020 } +SPAN.stringliteral { color: #002080 } +SPAN.charliteral { color: #008080 } +.mdTable { + border: 1px solid #868686; + background-color: #F4F4FB; +} +.mdRow { + padding: 8px 10px; +} +.mdescLeft { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.mdescRight { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.memItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplParams { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + color: #606060; + background-color: #FAFAFA; + font-size: 80%; +} +.search { color: #003399; + font-weight: bold; +} +FORM.search { + margin-bottom: 0px; + margin-top: 0px; +} +INPUT.search { font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +TD.tiny { font-size: 75%; +} +a { + color: #1A41A8; +} +a:visited { + color: #2A3798; +} +.dirtab { padding: 4px; + border-collapse: collapse; + border: 1px solid #84b0c7; +} +TH.dirtab { background: #e8eef2; + font-weight: bold; +} +HR { height: 1px; + border: none; + border-top: 1px solid black; +} + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/doxygen.png b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/doxygen.png new file mode 100644 index 0000000..f0a274b Binary files /dev/null and b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/doxygen.png differ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/functions.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/functions.html new file mode 100644 index 0000000..768c36d --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/functions.html @@ -0,0 +1,56 @@ + + +PinCRT: Class Members + + + + +
+
+ +
+ +
+Here is a list of all documented class members with links to the class documentation for each member: +

+

+
Generated on Sat Nov 4 23:36:53 2017 for PinCRT by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/functions_vars.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/functions_vars.html new file mode 100644 index 0000000..e220df4 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/functions_vars.html @@ -0,0 +1,56 @@ + + +PinCRT: Class Members - Variables + + + + +
+
+ +
+ +
+  +

+

+
Generated on Sat Nov 4 23:36:53 2017 for PinCRT by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/group__OS__APIS__DEF.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/group__OS__APIS__DEF.html new file mode 100644 index 0000000..341c01a --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/group__OS__APIS__DEF.html @@ -0,0 +1,167 @@ + + +PinCRT: Generic error codes + + + + +
+
+

Generic error codes

os_return_codes.h +More... + + + + + + + + + + +

Classes

struct  _OS_RETURN_CODE

Typedefs

typedef _OS_RETURN_CODE OS_RETURN_CODE

Enumerations

enum  OS_RETURN_CODE_GENERIC {
+  OS_RETURN_CODE_NO_ERROR = 0, +
+  OS_RETURN_CODE_INVALID_ARGS, +
+  OS_RETURN_CODE_MEMORY_MAP_FAILED, +
+  OS_RETURN_CODE_MEMORY_FREE_FAILED, +
+  OS_RETURN_CODE_QUERY_FAILED, +
+  OS_RETURN_CODE_FLUSH_ICACHE_FAILED, +
+  OS_RETURN_CODE_MEMORY_PROTECT_FAILED, +
+  OS_RETURN_CODE_MEMORY_INFO_FAILED, +
+  OS_RETURN_CODE_FILE_OPERATION_FAILED, +
+  OS_RETURN_CODE_FILE_OPEN_FAILED, +
+  OS_RETURN_CODE_FILE_WRITE_FAILED, +
+  OS_RETURN_CODE_FILE_READ_FAILED, +
+  OS_RETURN_CODE_FILE_SEEK_FAILED, +
+  OS_RETURN_CODE_FILE_CLOSE_FAILED, +
+  OS_RETURN_CODE_FILE_DELETE_FAILED, +
+  OS_RETURN_CODE_FILE_FLUSH_FAILED, +
+  OS_RETURN_CODE_FILE_QUERY_FAILED, +
+  OS_RETURN_CODE_THREAD_CREATE_FAILED, +
+  OS_RETURN_CODE_THREAD_EXIT_FAILED, +
+  OS_RETURN_CODE_THREAD_SUSPEND_FAILED, +
+  OS_RETURN_CODE_THREAD_RESUME_FAILED, +
+  OS_RETURN_CODE_THREAD_SLEEP_FAILED, +
+  OS_RETURN_CODE_THREAD_QUERY_FAILED, +
+  OS_RETURN_CODE_THREAD_EXCEPTION_FAILED, +
+  OS_RETURN_CODE_PROCESS_QUERY_FAILED, +
+  OS_RETURN_CODE_PROCESS_UPDATE_FAILED, +
+  OS_RETURN_CODE_TIME_QUERY_FAILED, +
+  OS_RETURN_CODE_BUFFER_TOO_SHORT, +
+  OS_RETURN_CODE_INTERRUPTED, +
+  OS_RETURN_CODE_FILE_EXIST, +
+  OS_RETURN_CODE_NOT_IMPLEMENTED_YET, +
+  OS_RETURN_CODE_EXCEED_LIMIT_OF_OPEN_OBJECTS, +
+  OS_RETURN_CODE_NO_MEMORY, +
+  OS_RETURN_CODE_PROCESS_CREATION_FAILED, +
+  OS_RETURN_CODE_PROCESS_WAIT_FAILED, +
+  OS_RETURN_CODE_NOT_IMPLEMENTED, +
+  OS_RETURN_CODE_RPC_FAILED, +
+  OS_RETURN_CODE_BAD_FILE_DESCRIPTOR +
+ }
+

Detailed Description

+

Typedef Documentation

+

+ + + + +
+ + + + +
typedef struct _OS_RETURN_CODE OS_RETURN_CODE
+
+ + + + + +
+   + + +

+Full error code returned from OS-APIs functions

+


Enumeration Type Documentation

+

+ + + + +
+ + + + +
enum OS_RETURN_CODE_GENERIC
+
+ + + + + +
+   + + +

+Describe an OS-API cross OS, generic error

+


Generated on Sat Nov 4 23:36:54 2017 for PinCRT by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/group__OS__APIS__FILE.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/group__OS__APIS__FILE.html new file mode 100644 index 0000000..a4ccb4b --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/group__OS__APIS__FILE.html @@ -0,0 +1,1833 @@ + + +PinCRT: File + + + + +
+
+

File

Contains file related os apis. +More... + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Classes

struct  _OS_FILE_UNIQUE_ID

Typedefs

typedef _OS_FILE_UNIQUE_ID OS_FILE_UNIQUE_ID
typedef UINT64 OS_PROCESS_WAITABLE_PROCESS

Enumerations

enum  OS_FILE_OPEN_TYPE {
+  OS_FILE_OPEN_TYPE_READ = (1<<0), +
+  OS_FILE_OPEN_TYPE_WRITE = (1<<1), +
+  OS_FILE_OPEN_TYPE_EXECUTE = (1<<2), +
+  OS_FILE_OPEN_TYPE_APPEND = (1<<3), +
+  OS_FILE_OPEN_TYPE_TRUNCATE = (1<<4), +
+  OS_FILE_OPEN_TYPE_CREATE = (1<<5), +
+  OS_FILE_OPEN_TYPE_CREATE_EXCL = (1<<6), +
+  OS_FILE_OPEN_TYPE_DELETE = (1<<7), +
+  OS_FILE_OPEN_TYPE_CLOSE_ON_EXEC = (1<<8) +
+ }
enum  OS_FILE_PERMISSION_TYPE {
+  OS_FILE_PERMISSION_TYPE_READ = (1<<0), +
+  OS_FILE_PERMISSION_TYPE_WRITE = (1<<1), +
+  OS_FILE_PERMISSION_TYPE_EXECUTE = (1<<2) +
+ }
enum  OS_FILE_SEEK_TYPE {
+  OS_FILE_SEEK_SET = 0, +
+  OS_FILE_SEEK_CUR = (1<<0), +
+  OS_FILE_SEEK_END = (1<<1) +
+ }
enum  OS_FILE_ATTRIBUTES {
+  OS_FILE_ATTRIBUTES_NONE = 0, +
+  OS_FILE_ATTRIBUTES_EXIST = (1<<0), +
+  OS_FILE_ATTRIBUTES_REGULAR = (1<<1), +
+  OS_FILE_ATTRIBUTES_DIRECTORY = (1<<2), +
+  OS_FILE_ATTRIBUTES_SYMLINK = (1<<3) +
+ }
enum  OS_PIPE_CREATE_FLAGS {
+  OS_PIPE_CREATE_FLAGS_NONE = 0, +
+  OS_PIPE_CREATE_FLAGS_READ_SIDE_INHERITABLE = (1<<0), +
+  OS_PIPE_CREATE_FLAGS_WRITE_SIDE_INHERITABLE = (1<<1) +
+ }

Functions

OS_RETURN_CODE OS_OpenFD (const CHAR *path, INT flags, INT mode, NATIVE_FD *fd)
OS_RETURN_CODE OS_WriteFD (NATIVE_FD fd, const VOID *buffer, USIZE *count)
OS_RETURN_CODE OS_ReadFD (NATIVE_FD fd, USIZE *count, VOID *buffer)
OS_RETURN_CODE OS_SeekFD (NATIVE_FD fd, INT whence, INT64 *offset)
OS_RETURN_CODE OS_CloseFD (NATIVE_FD fd)
OS_RETURN_CODE OS_DeleteFile (const CHAR *name)
OS_RETURN_CODE OS_FlushFD (NATIVE_FD fd)
OS_RETURN_CODE OS_GetFDAttributes (NATIVE_FD fd, OS_FILE_ATTRIBUTES *attr)
OS_RETURN_CODE OS_FilePermissionsFD (NATIVE_FD fd, OS_FILE_PERMISSION_TYPE *permissions)
OS_RETURN_CODE OS_FileSizeFD (NATIVE_FD fd, USIZE *size)
OS_RETURN_CODE OS_Cwd (CHAR *cwd, INT len)
OS_RETURN_CODE OS_Chdir (const CHAR *dir, CHAR *cwd, INT len)
OS_RETURN_CODE OS_OpenDirFD (const CHAR *name, NATIVE_FD *fd)
OS_RETURN_CODE OS_MkDir (const CHAR *name, INT mode)
OS_RETURN_CODE OS_DeleteDirectory (const CHAR *name)
OS_RETURN_CODE OS_IsConsoleFD (NATIVE_FD fd, INT *isConsole)
OS_RETURN_CODE OS_ReadDirectoryFD (NATIVE_FD fd, USIZE *count, VOID *buffer)
OS_RETURN_CODE OS_GetFDAccessMode (NATIVE_FD fd, OS_FILE_OPEN_TYPE *mode)
OS_RETURN_CODE OS_ReadLink (const CHAR *path, CHAR *buf, USIZE *size)
OS_RETURN_CODE OS_GetFileAttributes (const CHAR *path, OS_FILE_ATTRIBUTES *attr)
OS_RETURN_CODE OS_RenameFile (const CHAR *oldPath, const CHAR *newPath)
OS_RETURN_CODE OS_FileUniqueID (NATIVE_FD fd, OS_FILE_UNIQUE_ID *uniqueId)
OS_RETURN_CODE OS_DuplicateFD (NATIVE_FD fd, BOOL_T dupCloseOnExec, NATIVE_FD *outFd)
OS_RETURN_CODE OS_Ftruncate (NATIVE_FD fd, INT64 length)
void OS_ReportFileOpen (NATIVE_FD fd)
void OS_ReportFileClose (NATIVE_FD fd)
NATIVE_FD OS_GetLowestFileDescriptorToUse ()
void OS_RelocateAndReportFileOpen (NATIVE_FD *fd)
BOOL_T OS_WasFileReportedOpen (NATIVE_FD fd)
+

Detailed Description

+

Typedef Documentation

+

+ + + + +
+ + + + +
typedef struct _OS_FILE_UNIQUE_ID OS_FILE_UNIQUE_ID
+
+ + + + + +
+   + + +

+Machine unique ID for file

+

+ + + + +
+ + + + +
typedef UINT64 OS_PROCESS_WAITABLE_PROCESS
+
+ + + + + +
+   + + +

+Opaque object that represents a process that we can wait for its termination

+


Enumeration Type Documentation

+

+ + + + +
+ + + + +
enum OS_FILE_ATTRIBUTES
+
+ + + + + +
+   + + +

+File permission modes

+

+ + + + +
+ + + + +
enum OS_FILE_OPEN_TYPE
+
+ + + + + +
+   + + +

+File open modes

+

+ + + + +
+ + + + +
enum OS_FILE_PERMISSION_TYPE
+
+ + + + + +
+   + + +

+File permission modes

+

+ + + + +
+ + + + +
enum OS_FILE_SEEK_TYPE
+
+ + + + + +
+   + + +

+File seek modes

Enumerator:
+ + + + +
OS_FILE_SEEK_SET  +Offset is set to the given offset bytes.
OS_FILE_SEEK_CUR  +Offset is set to its current location plus offset bytes.
OS_FILE_SEEK_END  +Offset is set to the size of the file plus offset bytes.
+
+
+

+ + + + +
+ + + + +
enum OS_PIPE_CREATE_FLAGS
+
+ + + + + +
+   + + +

+Pipes creation flags

+


Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_Chdir const CHAR *  dir,
CHAR *  cwd,
INT  len
+
+ + + + + +
+   + + +

+Sets a new current directory. Optionally records the previous directory.

+

Parameters:
+ + + + +
[in] dir The directory to move to.
[out] cwd Buffer to receive the CWD.
[in] len Max buffer length for cwd.
+
+
Return values:
+ + + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_FILE_QUERY_FAILED If current directory capture failed
OS_RETURN_CODE_FILE_OPEN_FAILED If the operation failed
+
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
OS_RETURN_CODE OS_CloseFD NATIVE_FD  fd  ) 
+
+ + + + + +
+   + + +

+Closes fd and removes references to it from the process.

+

Parameters:
+ + +
[in] fd File descriptor
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_FILE_CLOSE_FAILED If the operation failed
+
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_Cwd CHAR *  cwd,
INT  len
+
+ + + + + +
+   + + +

+Retrieves size in bytes of fd.

+

Parameters:
+ + + +
[out] cwd Buffer to receive the CWD.
[in] len Max buffer length.
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_FILE_QUERY_FAILED If the operation failed
+
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
OS_RETURN_CODE OS_DeleteDirectory const CHAR *  name  ) 
+
+ + + + + +
+   + + +

+Deletes a directory.

+

Parameters:
+ + +
[in] name Directory file name to delete.
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded.
OS_RETURN_CODE_FILE_DELETE_FAILED If the operation failed.
+
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
OS_RETURN_CODE OS_DeleteFile const CHAR *  name  ) 
+
+ + + + + +
+   + + +

+Delete a file by name

+

Parameters:
+ + +
[in] name File path.
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_FILE_DELETE_FAILED If the operation failed
+
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_DuplicateFD NATIVE_FD  fd,
BOOL_T  dupCloseOnExec,
NATIVE_FD outFd
+
+ + + + + +
+   + + +

+Creates a copy of a file descriptor using the lowest available free file descriptor. This function considers the value returned from OS_GetLowestFileDescriptorToUse() when duplicating the descriptor.

+

Parameters:
+ + + + +
[in] fd File descriptor to duplicate an ID.
[in] dupCloseOnExec TRUE to duplicate the close-on-exec property of the descriptor, FALSE otherwise.
[out] outFd Result duplicated file descriptor.
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_FILE_OPERATION_FAILED If the operation failed
+
+
Availability:
O/S: Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_FilePermissionsFD NATIVE_FD  fd,
OS_FILE_PERMISSION_TYPE permissions
+
+ + + + + +
+   + + +

+Retrieve the current permissions for the specified file.

+

Parameters:
+ + + +
[in] fd File descriptor
[out] permissions or'ed OS_FILE_PERMISSION_TYPE.
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_FILE_QUERY_FAILED If the operation failed
+
+
Remarks:
On Unix, will provide the user (not group/other) permissions.
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_FileSizeFD NATIVE_FD  fd,
USIZE *  size
+
+ + + + + +
+   + + +

+Retrieves size in bytes of fd.

+

Parameters:
+ + + +
[in] fd File descriptor
[out] size Number of bytes.
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_FILE_QUERY_FAILED If the operation failed
+
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_FileUniqueID NATIVE_FD  fd,
OS_FILE_UNIQUE_ID uniqueId
+
+ + + + + +
+   + + +

+Get unique ID for an opened file, identified by a file descriptor. Two opened file descriptors for the same physical file are guaranteed to have the same unique ID.

+

Parameters:
+ + + +
[in] fd File descriptor to calculate an ID.
[out] uniqueId The calculate unique ID (opaque binary data)
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_FILE_QUERY_FAILED If the operation failed
+
+
Availability:
O/S: Linux
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
OS_RETURN_CODE OS_FlushFD NATIVE_FD  fd  ) 
+
+ + + + + +
+   + + +

+Flush the object referenced by the descriptor fd.

+

Parameters:
+ + +
[in] fd File descriptor
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_FILE_FLUSH_FAILED If the operation failed
+
+
Availability:
O/S: Windows
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_Ftruncate NATIVE_FD  fd,
INT64  length
+
+ + + + + +
+   + + +

+Truncates a file referenced by fd to a size of length bytes. If the original file size is bigger than length, the extra data is lost. If the original file size is smaller than length,the file extended.

+

Parameters:
+ + + +
[in] fd File descriptor to change his size.
[in] length File new length.
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_FILE_OPERATION_FAILED If the operation failed
+
+
Availability:
O/S: Windows & Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_GetFDAccessMode NATIVE_FD  fd,
OS_FILE_OPEN_TYPE mode
+
+ + + + + +
+   + + +

+Get the permissions type requested when fd was opened. This is useful to check whether we can read or write fd.

+

Parameters:
+ + + +
[in] fd File descriptor to check.
[out] mode The permissions of the file descriptor.
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded.
OS_RETURN_CODE_FILE_QUERY_FAILED If the operation failed.
+
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_GetFDAttributes NATIVE_FD  fd,
OS_FILE_ATTRIBUTES attr
+
+ + + + + +
+   + + +

+Query fd's file attributes

+

Parameters:
+ + + +
[in] fd File descriptor
[out] attr File attributes
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_FILE_QUERY_FAILED If the operation failed
+
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_GetFileAttributes const CHAR *  path,
OS_FILE_ATTRIBUTES attr
+
+ + + + + +
+   + + +

+Query file attributes of the file denoted by path

+

Parameters:
+ + + +
[in] path Path to file
[out] attr File attributes
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_FILE_QUERY_FAILED If the operation failed
+
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + +
NATIVE_FD OS_GetLowestFileDescriptorToUse  ) 
+
+ + + + + +
+   + + +

+Getter function to retrieve the lowest value of file descriptor that OS-APIs should use. OS-APIs will attempt to only use file descriptors which are larger or equal to the value that this function returns.

+This function is implemented as a weak reference symbol so libraries linked with OS-APIs may provide their own implementation of this function and return a different value.

+

Return values:
+ + +
Lowest file descriptor to use.
+
+
Availability:
O/S: Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_IsConsoleFD NATIVE_FD  fd,
INT *  isConsole
+
+ + + + + +
+   + + +

+Check whether a file descriptor is the application's console. A file descriptor is the application's console if: 1. The file of the underlying descriptor is a terminal device. 2. The terminal device is the tty master (or console) of the current application.

+The practical implication of a console file descriptor is that every write operation to it needs to be flushed right away because the user on the other side expects to see output immediately.

+

Parameters:
+ + + +
[in] fd File descriptor to check.
[out] isConsole non-zero if 'fd' is the application's console. Zero otherwise.
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded.
OS_RETURN_CODE_FILE_QUERY_FAILED If the operation failed.
+
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_MkDir const CHAR *  name,
INT  mode
+
+ + + + + +
+   + + +

+Creates a directory.

+

Parameters:
+ + + +
[in] name Directory file name to create.
[in] mode File mode to create the directory.
+
+
Return values:
+ + + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded.
OS_RETURN_CODE_FILE_EXIST Directory exists.
OS_RETURN_CODE_FILE_OPEN_FAILED If the operation failed.
+
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_OpenDirFD const CHAR *  name,
NATIVE_FD fd
+
+ + + + + +
+   + + +

+Opens a directory for browsing.

+

Parameters:
+ + + +
[in] name Directory file name to open.
[out] fd Pointer to returned file descriptor.
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_FILE_OPEN_FAILED If the operation failed
+
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_OpenFD const CHAR *  path,
INT  flags,
INT  mode,
NATIVE_FD fd
+
+ + + + + +
+   + + +

+The file name specified by path is opened for reading and/or writing, as specified by the argument flags.

+

Parameters:
+ + + + + +
[in] path File path.
[in] flags or'ed OS_FILE_OPEN_TYPE. If mode OS_FILE_OPEN_TYPE_CREATE
+ was given, the file is created with mode.
[in] mode If a new file will be created as a result of this operation, this is the mode of this newly created file. This argument contains values from OS_FILE_PERMISSION_TYPE combined with bitwise OR.
[out] fd Returned file descriptor
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_FILE_OPEN_FAILED If the operation Failed
+
+
Returns:
fd - Assigned with the file descriptor
+
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_ReadDirectoryFD NATIVE_FD  fd,
USIZE *  count,
VOID *  buffer
+
+ + + + + +
+   + + +

+Attempts to read count bytes of data from the directory referenced by the descriptor fd to the buffer pointed to by buffer. A console file descriptor usually needs to be flushed after every read/write operation.

+

Parameters:
+ + + + +
[in] fd File descriptor
[in,out] count Bytes to read/Bytes read
[out] buffer Output buffer
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_FILE_READ_FAILED If the operation failed
+
+
Returns:
count - Assigned with the number of bytes successfully read
+ buffer - Contains count bytes that were read from fd
+
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_ReadFD NATIVE_FD  fd,
USIZE *  count,
VOID *  buffer
+
+ + + + + +
+   + + +

+Attempts to read count bytes of data from the object referenced by the descriptor fd to the buffer pointed to by buffer.

+

Parameters:
+ + + + +
[in] fd File descriptor
[in,out] count Bytes to read
[out] buffer Output buffer
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_FILE_READ_FAILED If the operation failed
+
+
Returns:
size Assigned with the number of bytes successfully read
+ buffer Contains count bytes that were read from fd
+
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_ReadLink const CHAR *  path,
CHAR *  buf,
USIZE *  size
+
+ + + + + +
+   + + +

+Reads the symbolic link pointed by path. Returns the path that the symlink points to.

+

Parameters:
+ + + + +
[in] path Path to the symbolic link to read.
[out] buf The path where the symlink points to.
[in,out] size The number of bytes in buf, returns the number of bytes filled inside buf.
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded.
OS_RETURN_CODE_FILE_QUERY_FAILED If the operation failed.
+
+
Availability:
O/S: Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
void OS_RelocateAndReportFileOpen NATIVE_FD fd  ) 
+
+ + + + + +
+   + + +

+Relocate the file descriptor to the range permitted according to OS_GetLowestFileDescriptorToUse(), then record a file descriptor as opened by OS-APIs. Later, we allow to query whether a certain file descriptor was opened by OS-APIs or not.

+

Parameters:
+ + +
[in,out] fd File descriptor to relocate and record.
+
+
Availability:
O/S: Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_RenameFile const CHAR *  oldPath,
const CHAR *  newPath
+
+ + + + + +
+   + + +

+Renamed the file oldPath to newPath

+

Parameters:
+ + + +
[in] oldPath Filename to rename
[in] newPath New filename to rename to
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_FILE_OPERATION_FAILED If the operation failed
+
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
void OS_ReportFileClose NATIVE_FD  fd  ) 
+
+ + + + + +
+   + + +

+Record that a file descriptor opened by OS-APIs is not longer valid, and it is closed. Later, we allow to query whether a certain file descriptor was opened by OS-APIs or not.

+

Parameters:
+ + +
[in] fd File descriptor to record.
+
+
Availability:
O/S: Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
void OS_ReportFileOpen NATIVE_FD  fd  ) 
+
+ + + + + +
+   + + +

+Record a file descriptor as opened by OS-APIs. Later, we allow to query whether a certain file descriptor was opened by OS-APIs or not.

+

Parameters:
+ + +
[in] fd File descriptor to record.
+
+
Availability:
O/S: Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_SeekFD NATIVE_FD  fd,
INT  whence,
INT64 *  offset
+
+ + + + + +
+   + + +

+Reposition the offset of the file descriptor fd to the an offset in, the file denoted by offset. The offset is measured with relation to a starting point determined by the directive whence.

+

Parameters:
+ + + + +
[in] fd File descriptor
[in] whence OS_FILE_SEEK_TYPE
[in,out] offset Bytes to move
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_FILE_SEEK_FAILED If the operation failed
+
+
Returns:
offset - Assigned with the number of bytes successfully read
+
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL_T OS_WasFileReportedOpen NATIVE_FD  fd  ) 
+
+ + + + + +
+   + + +

+Queries whether a certain file descriptor was opened by OS-APIs or not.

+

Parameters:
+ + +
[in] fd File descriptor to query.
+
+
Availability:
O/S: Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_WriteFD NATIVE_FD  fd,
const VOID *  buffer,
USIZE *  count
+
+ + + + + +
+   + + +

+Attempts to write count bytes of data to the object referenced by the descriptor fd from the buffer pointed to by buffer.

+

Parameters:
+ + + + +
[in] fd File descriptor
[in] buffer Data buffer
[in,out] count Bytes to write
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_FILE_WRITE_FAILED If the operation failed
+
+
Returns:
size Assigned with the number of bytes successfully written
+
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+


Generated on Sat Nov 4 23:36:54 2017 for PinCRT by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/group__OS__APIS__HOST.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/group__OS__APIS__HOST.html new file mode 100644 index 0000000..636de93 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/group__OS__APIS__HOST.html @@ -0,0 +1,424 @@ + + +PinCRT: Host machine queries + + + + +
+
+

Host machine queries

host.h Contains API for host related queries +More... + + + + + + + + + + + + + + + + + + + +

Enumerations

enum  OS_HOST_CPU_ARCH_TYPE {
+  OS_HOST_CPU_ARCH_TYPE_INVALID = 0, +
+  OS_HOST_CPU_ARCH_TYPE_IA32 = 1, +
+  OS_HOST_CPU_ARCH_TYPE_INTEL64 = 2 +
+ }

Functions

OS_RETURN_CODE OS_GetHostName (CHAR *buf, USIZE buflen)
OS_RETURN_CODE OS_GetHostCPUArch (OS_HOST_CPU_ARCH_TYPE *arch)
const char * OS_CPUArchToString (OS_HOST_CPU_ARCH_TYPE arch)
OS_RETURN_CODE OS_GetKernelRelease (CHAR *buf, USIZE bufsize)
OS_RETURN_CODE OS_GetOSName (CHAR *buf, USIZE bufsize)
OS_RETURN_CODE OS_GetOSVersion (CHAR *buf, USIZE bufsize)
OS_RETURN_CODE OS_ReadProcessorFrequency (UINT32 *freq)
+

Detailed Description

+

Enumeration Type Documentation

+

+ + + + +
+ + + + +
enum OS_HOST_CPU_ARCH_TYPE
+
+ + + + + +
+   + + +

+CPU Architecture

+


Function Documentation

+

+ + + + +
+ + + + + + + + + +
const char* OS_CPUArchToString OS_HOST_CPU_ARCH_TYPE  arch  ) 
+
+ + + + + +
+   + + +

+Get a string representing a certain CPU arch.

+

Parameters:
+ + +
[in] arch The architecture to get a string for it
+
+
Return values:
+ + +
read-only string representing the CPU arch
+
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
OS_RETURN_CODE OS_GetHostCPUArch OS_HOST_CPU_ARCH_TYPE arch  ) 
+
+ + + + + +
+   + + +

+Query CPU architecture.

+

Parameters:
+ + +
[out] arch The architecture of this system's CPU
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_QUERY_FAILED If the operation failed
+
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_GetHostName CHAR *  buf,
USIZE  buflen
+
+ + + + + +
+   + + +

+Retrieves the host name of the current host - as known by this host

+

Parameters:
+ + + +
[out] buf Buffer to receive the host name
[in] buflen Size of buffer buf in bytes
+
+
Return values:
+ + + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_BUFFER_TOO_SHORT If the buffer buf is too short
OS_RETURN_CODE_QUERY_FAILED If the operation failed
+
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_GetKernelRelease CHAR *  buf,
USIZE  bufsize
+
+ + + + + +
+   + + +

+Get kernel release description string.

+

Parameters:
+ + + +
[out] buf Buffer to receive the release string
[in] bufsize Size of buffer buf in bytes
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_QUERY_FAILED If the operation failed
+
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_GetOSName CHAR *  buf,
USIZE  bufsize
+
+ + + + + +
+   + + +

+Get the name of the operating system we're running on.

+

Parameters:
+ + + +
[out] buf Buffer to receive the OS name string
[in] bufsize Size of buffer buf in bytes
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_QUERY_FAILED If the operation failed
+
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_GetOSVersion CHAR *  buf,
USIZE  bufsize
+
+ + + + + +
+   + + +

+Get the version of the operating system we're running on.

+

Parameters:
+ + + +
[out] buf Buffer to receive the OS version string
[in] bufsize Size of buffer buf in bytes
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_QUERY_FAILED If the operation failed
+
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
OS_RETURN_CODE OS_ReadProcessorFrequency UINT32 *  freq  ) 
+
+ + + + + +
+   + + +

+Get CPU processor frequency in MHz.

+

Parameters:
+ + +
[out] freq Frequency of the CPU
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_QUERY_FAILED If the operation failed
+
+
Availability:
O/S: OS X*
+ CPU: All
+
+
+


Generated on Sat Nov 4 23:36:54 2017 for PinCRT by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/group__OS__APIS__IPC.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/group__OS__APIS__IPC.html new file mode 100644 index 0000000..c8c95d4 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/group__OS__APIS__IPC.html @@ -0,0 +1,807 @@ + + +PinCRT: IPC + + + + +
+
+

IPC

memory.h Contains IPC related os apis +More... + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Enumerations

enum  OS_APIS_IPC_SOCKET_DOMAIN {
+  OS_APIS_IPC_SOCKET_DOMAIN_INET = 0, +
+  OS_APIS_IPC_SOCKET_DOMAIN_UNIX = 1 +
+ }
enum  OS_APIS_IPC_SOCKET_TYPE { OS_APIS_IPC_SOCKET_TYPE_STREAM = 0 + }
enum  OS_APIS_IPC_SOCKET_PROTOCOL { OS_APIS_IPC_SOCKET_PROTOCOL_DEFAULT = 0 + }
enum  OS_APIS_IPC_SHUTDOWN {
+  OS_APIS_IPC_SHUTDOWN_INVALID = 0, +
+  OS_APIS_IPC_SHUTDOWN_READ = (1<<0), +
+  OS_APIS_IPC_SHUTDOWN_WRITE = (1<<1) +
+ }
enum  OS_APIS_IPC_SENDTO_FLAGS {
+  OS_APIS_IPC_SENDTO_FLAGS_NONE = 0, +
+  OS_APIS_IPC_SENDTO_FLAGS_OOB = (1<<0), +
+  OS_APIS_IPC_SENDTO_FLAGS_DONT_ROUTE = (1<<1), +
+  OS_APIS_IPC_SENDTO_FLAGS_NO_SIGNAL = (1<<2) +
+ }

Functions

OS_RETURN_CODE OS_Pipe (OS_PIPE_CREATE_FLAGS flags, NATIVE_FD *readFd, NATIVE_FD *writeFd)
OS_RETURN_CODE OS_Socket (OS_APIS_IPC_SOCKET_DOMAIN domain, OS_APIS_IPC_SOCKET_TYPE type, OS_APIS_IPC_SOCKET_PROTOCOL protocol, NATIVE_FD *fd)
OS_RETURN_CODE OS_Accept (NATIVE_FD sockfd, struct sockaddr *addr, USIZE *addrlen, NATIVE_FD *newfd)
OS_RETURN_CODE OS_Listen (NATIVE_FD sockfd, INT backlog)
OS_RETURN_CODE OS_Connect (NATIVE_FD sockfd, const struct sockaddr *addr, USIZE addrlen)
OS_RETURN_CODE OS_Bind (NATIVE_FD sockfd, const struct sockaddr *addr, USIZE addrlen)
OS_RETURN_CODE OS_GetSockName (NATIVE_FD sockfd, const struct sockaddr *addr, USIZE *addrlen)
OS_RETURN_CODE OS_Shutdown (NATIVE_FD sockfd, OS_APIS_IPC_SHUTDOWN how)
OS_RETURN_CODE OS_SendTo (NATIVE_FD sockfd, const void *buffer, OS_APIS_IPC_SENDTO_FLAGS flags, const struct sockaddr *dest_addr, USIZE dest_len, USIZE *buf_length)
+

Detailed Description

+

Enumeration Type Documentation

+

+ + + + +
+ + + + +
enum OS_APIS_IPC_SENDTO_FLAGS
+
+ + + + + +
+   + + +

+Value for argument how to OS_Shutdown()

Enumerator:
+ + + + + +
OS_APIS_IPC_SENDTO_FLAGS_NONE  +No flags specified.
OS_APIS_IPC_SENDTO_FLAGS_OOB  +Send out of band message.
OS_APIS_IPC_SENDTO_FLAGS_DONT_ROUTE  +bypass routing, use direct interface
OS_APIS_IPC_SENDTO_FLAGS_NO_SIGNAL  +Don't send SIGPIPE when the other side of the connection is closed.
+
+
+

+ + + + +
+ + + + +
enum OS_APIS_IPC_SHUTDOWN
+
+ + + + + +
+   + + +

+Value for argument how to OS_Shutdown()

Enumerator:
+ + + + +
OS_APIS_IPC_SHUTDOWN_INVALID  +Invalid value for socket shutdown.
OS_APIS_IPC_SHUTDOWN_READ  +Shutdown socket's read side.
OS_APIS_IPC_SHUTDOWN_WRITE  +Shutdown socket's write side.
+
+
+

+ + + + +
+ + + + +
enum OS_APIS_IPC_SOCKET_DOMAIN
+
+ + + + + +
+   + + +

+Socket domain

Enumerator:
+ + +
OS_APIS_IPC_SOCKET_DOMAIN_INET  +Internet socket.
+
+
+

+ + + + +
+ + + + +
enum OS_APIS_IPC_SOCKET_PROTOCOL
+
+ + + + + +
+   + + +

+Socket domain

Enumerator:
+ + +
OS_APIS_IPC_SOCKET_PROTOCOL_DEFAULT  +Full-duplex byte stream.
+
+
+

+ + + + +
+ + + + +
enum OS_APIS_IPC_SOCKET_TYPE
+
+ + + + + +
+   + + +

+Socket domain

Enumerator:
+ + +
OS_APIS_IPC_SOCKET_TYPE_STREAM  +Full-duplex byte stream.
+
+
+


Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_Accept NATIVE_FD  sockfd,
struct sockaddr *  addr,
USIZE *  addrlen,
NATIVE_FD newfd
+
+ + + + + +
+   + + +

+Accepts a new connection on a listening socket. See man page of accept(2) for more details.

+

Parameters:
+ + + + + +
[in] sockfd The listening socket
[out] addr The address of the remote connection that was accepted.
[in,out] addrlen The size in bytes of addr, returns the number of bytes writen to addr.
[out] newfd The file descriptor of the socket created for this session.
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_FILE_OPEN_FAILED If the operation failed
+
+
Availability:
O/S: Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_Bind NATIVE_FD  sockfd,
const struct sockaddr *  addr,
USIZE  addrlen
+
+ + + + + +
+   + + +

+Bind this socket to a local address. See man page of bind(2) for more details.

+

Parameters:
+ + + + +
[in] sockfd The socket to bind.
[in] addr The address to bind the socket to.
[in] addrlen The size in bytes of addr.
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_FILE_OPEN_FAILED If the operation failed
+
+
Availability:
O/S: Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_Connect NATIVE_FD  sockfd,
const struct sockaddr *  addr,
USIZE  addrlen
+
+ + + + + +
+   + + +

+Connect this socket to a remote socket. See man page of connet(2) for more details.

+

Parameters:
+ + + + +
[in] sockfd The socket to initiate the connect from.
[in] addr The address of the remote socket to connect to.
[in] addrlen The size in bytes of addr.
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_FILE_OPEN_FAILED If the operation failed
+
+
Availability:
O/S: Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_GetSockName NATIVE_FD  sockfd,
const struct sockaddr *  addr,
USIZE *  addrlen
+
+ + + + + +
+   + + +

+Return the local address where the socket was bound. See man page of getsockname(2) for more details.

+

Parameters:
+ + + + +
[in] sockfd The socket to initiate the connect from.
[out] addr The address where the socket was bound.
[in,out] addrlen The size in bytes of addr, returns the number of bytes writen to addr.
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_FILE_OPEN_FAILED If the operation failed
+
+
Availability:
O/S: Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_Listen NATIVE_FD  sockfd,
INT  backlog
+
+ + + + + +
+   + + +

+Listen for incomming connection in a socket. See man page of listen(2) for more details.

+

Parameters:
+ + + +
[in] sockfd The socket to listen on.
[in] backlog Number of connections to backlog (the meanning of it depends on the OS and kernel version).
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_FILE_OPEN_FAILED If the operation failed
+
+
Availability:
O/S: Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_Pipe OS_PIPE_CREATE_FLAGS  flags,
NATIVE_FD readFd,
NATIVE_FD writeFd
+
+ + + + + +
+   + + +

+Creates an anonymous pipe, and returns handles to the read and write ends of the pipe.

+

Parameters:
+ + + + +
[in] flags Pipes creation flags
[out] readFd File descriptor for the read side
[out] writeFd File descriptor for the write side
+
+
Return values:
+ + + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_INVALID_ARGS One of the input arguments is invalid.
OS_RETURN_CODE_FILE_OPEN_FAILED If the operation failed
+
+
Availability:
O/S: All
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_SendTo NATIVE_FD  sockfd,
const void *  buffer,
OS_APIS_IPC_SENDTO_FLAGS  flags,
const struct sockaddr *  dest_addr,
USIZE  dest_len,
USIZE *  buf_length
+
+ + + + + +
+   + + +

+Transmit a message to another socket.

+

Parameters:
+ + + + + + + +
[in] sockfd The socket to send data to.
[in] buffer Data buffer
[in] flags Message flags
[in] dest_addr Socket destination address
[in] dest_len Size of dest_addr
[in,out] buf_length Length of the bytes in buffer / bytes sent
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_FILE_WRITE_FAILED If the operation failed
+
+
Availability:
O/S: Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_Shutdown NATIVE_FD  sockfd,
OS_APIS_IPC_SHUTDOWN  how
+
+ + + + + +
+   + + +

+Causes all or part of a full-duplex connection on the socket associated with sockfd to be shut down.

+

Parameters:
+ + + +
[in] sockfd The file descriptor of the socket to shut down.
[in] how Bitwise OR of the value in OS_APIS_IPC_SHUTDOWN. If OS_APIS_IPC_SHUTDOWN_READ is specified, further receptions will be disallowed. If OS_APIS_IPC_SHUTDOWN_WRITE is specified,further transmissions will be disallowed.
+
+
Return values:
+ + + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_INVALID_ARGS If the value of how is invalid.
OS_RETURN_CODE_FILE_CLOSE_FAILED If the operation failed
+
+
Availability:
O/S: Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_Socket OS_APIS_IPC_SOCKET_DOMAIN  domain,
OS_APIS_IPC_SOCKET_TYPE  type,
OS_APIS_IPC_SOCKET_PROTOCOL  protocol,
NATIVE_FD fd
+
+ + + + + +
+   + + +

+Creates a socket. See man page of socket(2) for more details.

+

Parameters:
+ + + + + +
[in] domain Socket domain
[in] type Socket type
[in] protocol Socket Protocol
[out] fd Created file descriptor for the socket
+
+
Return values:
+ + + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_INVALID_ARGS One of the input arguments is invalid.
OS_RETURN_CODE_FILE_OPEN_FAILED If the operation failed
+
+
Availability:
O/S: Linux & OS X*
+ CPU: All
+
+
+


Generated on Sat Nov 4 23:36:54 2017 for PinCRT by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/group__OS__APIS__MEMORY.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/group__OS__APIS__MEMORY.html new file mode 100644 index 0000000..8657993 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/group__OS__APIS__MEMORY.html @@ -0,0 +1,557 @@ + + +PinCRT: Memory + + + + +
+
+

Memory

Contains memory related os apis. +More... + + + + + + + + + + + + + + + + + + + + + + +

Classes

struct  OS_MEMORY_AT_ADDR_INFORMATION

Enumerations

enum  OS_PAGE_PROTECTION_TYPE {
+  OS_PAGE_PROTECTION_TYPE_NOACCESS = 0, +
+  OS_PAGE_PROTECTION_TYPE_READ = (1<<0), +
+  OS_PAGE_PROTECTION_TYPE_WRITE = (1<<1), +
+  OS_PAGE_PROTECTION_TYPE_EXECUTE = (1<<2), +
+  OS_PAGE_PROTECTION_TYPE_GUARD = (1<<3) +
+ }
enum  OS_MEMORY_FLAGS {
+  OS_MEMORY_FLAGS_PRIVATE = 0, +
+  OS_MEMORY_FLAGS_FIXED_ADDRESS = (1<<0), +
+  OS_MEMORY_FLAGS_STACK = (1<<1), +
+  OS_MEMORY_FLAGS_SHARED = (1<<3) +
+ }

Functions

OS_RETURN_CODE OS_AllocateMemory (NATIVE_PID processId, UINT protectionType, USIZE size, OS_MEMORY_FLAGS flags, VOID **base)
OS_RETURN_CODE OS_MapFileToMemory (NATIVE_PID processId, UINT protectionType, USIZE size, OS_MEMORY_FLAGS flags, NATIVE_FD fd, UINT64 offset, VOID **base)
OS_RETURN_CODE OS_FreeMemory (NATIVE_PID processId, VOID *base, USIZE size)
OS_RETURN_CODE OS_GetPageSize (USIZE *size)
OS_RETURN_CODE OS_QueryMemory (NATIVE_PID processId, VOID *memoryAddr, OS_MEMORY_AT_ADDR_INFORMATION *info)
OS_RETURN_CODE OS_ProtectMemory (NATIVE_PID processId, VOID *base, USIZE size, UINT newProtectionType)
+

Detailed Description

+

Enumeration Type Documentation

+

+ + + + +
+ + + + +
enum OS_MEMORY_FLAGS
+
+ + + + + +
+   + + +

+Flags for memory mapping.

Enumerator:
+ + + + + +
OS_MEMORY_FLAGS_PRIVATE  +The memory should be private to the process.
OS_MEMORY_FLAGS_FIXED_ADDRESS  +The memory should be mapped exactly at the specified address.
OS_MEMORY_FLAGS_STACK  +The memory should be mapped as stack (grows down).
OS_MEMORY_FLAGS_SHARED  +The memory might be shared among processes.
+
+
+

+ + + + +
+ + + + +
enum OS_PAGE_PROTECTION_TYPE
+
+ + + + + +
+   + + +

+Page protection types

+


Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_AllocateMemory NATIVE_PID  processId,
UINT  protectionType,
USIZE  size,
OS_MEMORY_FLAGS  flags,
VOID **  base
+
+ + + + + +
+   + + +

+Allocates size bytes of memory in the process identified by processId with protectionType protection.

+

Warning:
If base is not null, will try to allocate at that address, otherwise will fail!
+
Parameters:
+ + + + + + +
[in] processId PID of the target process
[in] protectionType or'ed protection options
[in] size Size of memory to allocate
[in] flags Properties of the region to allocate. This is a bitwise OR of the enum values in OS_MEMORY_FLAGS.
[in,out] base in: Target memory address
+ out: Where the memory was allocated
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_MEMORY_MAP_FAILED If the operation Failed
+
+
Remarks:
Unix:
+ The processId is irrelevant as it is only applicable on the current process.
+ On Unix system, memory can only be allocated for the calling process.
+ The given pid is expected to be that of the current process. Hence the behavior of this function in case 'processId' is not of the current process is not defined. Windows:
+ Windows supports memory allocation on a different process on a single syscall.
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_FreeMemory NATIVE_PID  processId,
VOID *  base,
USIZE  size
+
+ + + + + +
+   + + +

+Free's size bytes of memory at base address in the process identified by processId.

+

Parameters:
+ + + + +
[in] processId PID of the target process
[in] base Target memory address
[in] size Size in bytes of memory to free
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_MEMORY_FREE_FAILED If the operation failed
+
+
Remarks:
Unix:
+ The processId is irrelevant as it is only applicable on the current process.
+ On Unix system, memory can only be released in the current process.
+ The given pid is expected to be that of the current process. Hence the behavior of this function in case 'processId' is not of the current process is not defined. Windows:
+ Windows supports memory deallocation on a different process.
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
OS_RETURN_CODE OS_GetPageSize USIZE *  size  ) 
+
+ + + + + +
+   + + +

+Query the system page size.

+

Parameters:
+ + +
[out] size System page size
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_QUERY_FAILED If the operation failed
+
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_MapFileToMemory NATIVE_PID  processId,
UINT  protectionType,
USIZE  size,
OS_MEMORY_FLAGS  flags,
NATIVE_FD  fd,
UINT64  offset,
VOID **  base
+
+ + + + + +
+   + + +

+Maps a file into memory, similar to mmap (see man page of mmap(2)).

+

Warning:
If base is not null, will try to allocate at that address, otherwise will fail!
+
Parameters:
+ + + + + + + + +
[in] processId PID of the target process
[in] protectionType or'ed protection options
[in] size Size in bytes of memory to allocate
[in] flags Properties of the region to allocate. This is a bitwise OR of the enum values in OS_MEMORY_FLAGS.
[in] fd File descriptor of the file that we want to map to memory. This argument can be INVALID_NATIVE_FD if one wants to map an anonymous file.
[in] offset Bytes offset in the file to start mapping from.
[in,out] base in: Target memory address
+ out: Where the memory was allocated
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_MEMORY_MAP_FAILED If the operation Failed
+
+
Remarks:
Unix:
+ The processId is irrelevant as it is only applicable on the current process.
+ On Unix system, files can be mapped only in the calling process memory space.
+ The given pid is expected to be that of the current process.
+ Hence the behavior of this function in case 'processId' is not of the current process is not defined. Windows:
+ Windows supports file mapping on a different process memory space.
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_ProtectMemory NATIVE_PID  processId,
VOID *  base,
USIZE  size,
UINT  newProtectionType
+
+ + + + + +
+   + + +

+Changes protection for the target process's memory page(s) containing any part of the address range in the interval [base, base+size-1]. base must be aligned to a page boundary.

+

Parameters:
+ + + + + +
[in] processId PID of the target process
[in] base The address of the starting page - must be page aligned.
[in] size Size in bytes of the region to change protection - must be multiple of page size.
[in] newProtectionType The new protection mode
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_MEMORY_PROTECT_FAILED If the operation failed
+
+Unix:
+ The processId is irrelevant as it is only applicable on the current process.
+ On Unix system, memory protection can only be changed for the current process' memory space.
+ The given pid is expected to be that of the current process. Hence the behavior of this function in case 'processId' is not of the current process is not defined. Windows:
+ Windows supports memory protection change on a different process memory space.

+

Availability:
    +
  • O/S: Windows, Linux & OS X*
  • CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_QueryMemory NATIVE_PID  processId,
VOID *  memoryAddr,
OS_MEMORY_AT_ADDR_INFORMATION info
+
+ + + + + +
+   + + +

+Retrieves the information on the memory block containing memoryAddr.

+

Parameters:
+ + + + +
[in] processId PID of the target process
[in] memoryAddr Target memory address. This memory address can reside inside the page.
[out] info The address information On Unix, if there is no mapped memory block that contains memoryAddr the next mapped memory block will be returned. If no such mapped memory block exists, an empty memory block will be returned On Windows, we return the containing memory block regardless if it is mapped or not.
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_QUERY_FAILED If the operation failed
+
+
Remarks:
Unix:
+ The processId is irrelevant as it is only applicable on the current process.
+ On Unix system, memory can only be queried for the current process.
+ The given pid is expected to be that of the current process. Hence the behavior of this function in case 'processId' is not of the current process is not defined.
+ Windows:
+ Windows supports memory query on a different process memory space.
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+


Generated on Sat Nov 4 23:36:54 2017 for PinCRT by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/group__OS__APIS__MUTEX.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/group__OS__APIS__MUTEX.html new file mode 100644 index 0000000..a5208ad --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/group__OS__APIS__MUTEX.html @@ -0,0 +1,739 @@ + + +PinCRT: Mutex + + + + +
+
+

Mutex

Implementation of mutex lock. +More... + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Classes

struct  _OS_APIS_MUTEX_TYPE

Defines

#define OS_APIS_MUTEX_DEPTH_SIMPLE_INITIALIZER   {OS_APIS_MUTEX_IMPL_DEPTH_SIMPLE_INITIALIZER}
#define OS_APIS_MUTEX_DEPTH_RECURSIVE_INITIALIZER   {OS_APIS_MUTEX_IMPL_DEPTH_RECURSIVE_INITIALIZER}

Typedefs

typedef _OS_APIS_MUTEX_TYPE OS_MUTEX_TYPE_IMPL

Functions

void OS_MutexInit (volatile OS_MUTEX_TYPE *lock)
void OS_MutexRecursiveInit (volatile OS_MUTEX_TYPE *lock)
void OS_MutexDestroy (volatile OS_MUTEX_TYPE *lock)
void OS_MutexLock (volatile OS_MUTEX_TYPE *lock)
void OS_MutexLockTid (volatile OS_MUTEX_TYPE *lock, NATIVE_TID myTid)
BOOL_T OS_MutexTryLock (volatile OS_MUTEX_TYPE *lock)
BOOL_T OS_MutexTryLockTid (volatile OS_MUTEX_TYPE *lock0, NATIVE_TID myTid)
BOOL_T OS_MutexIsLocked (volatile OS_MUTEX_TYPE *lock)
BOOL_T OS_MutexTimedLock (volatile OS_MUTEX_TYPE *lock, UINT32 timeoutMillis)
BOOL_T OS_MutexTimedLockTid (volatile OS_MUTEX_TYPE *lock0, NATIVE_TID myTid, UINT32 timeoutMillis)
NATIVE_TID OS_MutexGetOwner (volatile OS_MUTEX_TYPE *lock)
UINT32 OS_MutexGetRecursionLevel (volatile OS_MUTEX_TYPE *lock)
BOOL_T OS_MutexUnlock (volatile OS_MUTEX_TYPE *lock)
+

Detailed Description

+

Define Documentation

+

+ + + + +
+ + + + +
#define OS_APIS_MUTEX_DEPTH_RECURSIVE_INITIALIZER   {OS_APIS_MUTEX_IMPL_DEPTH_RECURSIVE_INITIALIZER}
+
+ + + + + +
+   + + +

+Static initializer for a mutex. It is guaranteed that a (recursive) mutex initialized this way:

+OS_MUTEX_TYPE mutex = OS_APIS_MUTEX_DEPTH_SIMPLE_INITIALIZER;

+Will be initialized before any constuctor will be called.

+

Availability:
    +
  • O/S: Windows, Linux & OS X*
  • CPU: All
+
+
+

+ + + + +
+ + + + +
#define OS_APIS_MUTEX_DEPTH_SIMPLE_INITIALIZER   {OS_APIS_MUTEX_IMPL_DEPTH_SIMPLE_INITIALIZER}
+
+ + + + + +
+   + + +

+Static initializer for a mutex. It is guaranteed that a (simple) mutex initialized this way:

+OS_MUTEX_TYPE mutex = OS_APIS_MUTEX_DEPTH_SIMPLE_INITIALIZER;

+Will be initialized before any constuctor will be called. Also, the static initializer for a simple mutex must be all zeros. This is because we want mutex that is initialized in a default way (all zeros according to the C++ standard) will be initialized correctly to a simple mutex.

+

Availability:
    +
  • O/S: Windows, Linux & OS X*
  • CPU: All
+
+
+


Typedef Documentation

+

+ + + + +
+ + + + +
typedef struct _OS_APIS_MUTEX_TYPE OS_MUTEX_TYPE_IMPL
+
+ + + + + +
+   + + +

+This type holds a representation of a mutex.

+

Availability:
    +
  • O/S: Windows, Linux & OS X*
  • CPU: All
+
+
+


Function Documentation

+

+ + + + +
+ + + + + + + + + +
void OS_MutexDestroy volatile OS_MUTEX_TYPE *  lock  ) 
+
+ + + + + +
+   + + +

+Destroys a mutex after it is no longer in use.

+

Note:
The behavior of a mutex after it was destroyed is undefined. It is the responsibility of the user to verify that no other thread is using the mutex when it comes to destroy it.
+
Parameters:
+ + +
[in] lock The mutex to destroy.
+
+
Availability:
    +
  • O/S: Windows, Linux & OS X*
  • CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
NATIVE_TID OS_MutexGetOwner volatile OS_MUTEX_TYPE *  lock  ) 
+
+ + + + + +
+   + + +

+Queries the owner of a recursive mutex.

+

Parameters:
+ + +
[in] lock The mutex to query.
+
+
Return values:
+ + +
NATIVE_TID The owner of the mutex of INVALID_NATIVE_TID is the mutex is not locked.
+
+
Note:
The return value of this function is undefined for non-recursive (simple) mutex.
+
Availability:
    +
  • O/S: Windows, Linux & OS X*
  • CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
UINT32 OS_MutexGetRecursionLevel volatile OS_MUTEX_TYPE *  lock  ) 
+
+ + + + + +
+   + + +

+Queries the recursion of a recursive mutex. I.e. the number of times that the unlock functions needs to be called before the mutex can be acquired by other thread.

+

Parameters:
+ + +
[in] lock The mutex to query.
+
+
Return values:
+ + +
UINT32 The recursion level of the mutex.
+
+
Note:
For non-recursive (simple) mutex, the return value of this function is 1 if the mutex is lock, or 0 if the mutex is unlocked.
+
Availability:
    +
  • O/S: Windows, Linux & OS X*
  • CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
void OS_MutexInit volatile OS_MUTEX_TYPE *  lock  ) 
+
+ + + + + +
+   + + +

+Initialize a mutex. A mutex must be initialized before being used. Use this function to initialize the mutex or use one of the static initializers.

+

Parameters:
+ + +
[in] lock The mutex to initialize.
+
+
Availability:
    +
  • O/S: Windows, Linux & OS X*
  • CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL_T OS_MutexIsLocked volatile OS_MUTEX_TYPE *  lock  ) 
+
+ + + + + +
+   + + +

+Checks whether a mutex state is locked.
+ Doesn't affect the mutex state and doesn't block.

+

Parameters:
+ + +
[in] lock The mutex to check.
+
+
Return values:
+ + +
TRUE If the mutex is locked.
+
+
Availability:
    +
  • O/S: Windows, Linux & OS X*
  • CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
void OS_MutexLock volatile OS_MUTEX_TYPE *  lock  ) 
+
+ + + + + +
+   + + +

+Aquire a mutex, blocks until the mutex becomes available (according to the mutex's semantics).

+

Parameters:
+ + +
[in] lock The mutex to acquire.
+
+
Availability:
    +
  • O/S: Windows, Linux & OS X*
  • CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void OS_MutexLockTid volatile OS_MUTEX_TYPE *  lock,
NATIVE_TID  myTid
+
+ + + + + +
+   + + +

+Aquire a mutex, blocks until the mutex becomes available (according to the mutex's semantics). This function is similar to OS_MutexLock() except that it accept as an argument the thread ID of the thread that want to acquire the lock (which is usually the current thread).

+

Parameters:
+ + + +
[in] lock The mutex to acquire.
[in] tid The thread ID of the thread that wants to acquire the mutex. This argument can be INVALID_NATIVE_TID if the thread ID is not known (e.g. in a mutex of type OS_MUTEX_DEPTH_SIMPLE).
+
+
Availability:
    +
  • O/S: Windows, Linux & OS X*
  • CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
void OS_MutexRecursiveInit volatile OS_MUTEX_TYPE *  lock  ) 
+
+ + + + + +
+   + + +

+Initialize a recursive mutex. A mutex must be initialized before being used. Use this function to initialize a recursive mutex or use one of the static initializers.

+

Parameters:
+ + +
[in] lock The mutex to initialize.
+
+
Availability:
    +
  • O/S: Windows, Linux & OS X*
  • CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL_T OS_MutexTimedLock volatile OS_MUTEX_TYPE *  lock,
UINT32  timeoutMillis
+
+ + + + + +
+   + + +

+Aquire a mutex, blocks until the mutex becomes available (according to the mutex's semantics). or 'timeoutMillis' milli seconds passed. When 'timeoutMillis' is zero, this function is identical to OS_MutexTryLock().

+

Parameters:
+ + + +
[in] lock The mutex to acquire.
[in] timeoutMillis The timeout to block.
+
+
Return values:
+ + +
TRUE If the mutex is locked. FALSE If the timeout was expired and the mutex can't be acquired during that time.
+
+
Availability:
    +
  • O/S: Windows, Linux & OS X*
  • CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
BOOL_T OS_MutexTimedLockTid volatile OS_MUTEX_TYPE *  lock0,
NATIVE_TID  myTid,
UINT32  timeoutMillis
+
+ + + + + +
+   + + +

+Aquire a mutex, blocks until the mutex becomes available (according to the mutex's semantics). or 'timeoutMillis' milli seconds passed. When 'timeoutMillis' is zero, this function is identical to OS_MutexTryLock(). This function is similar to OS_MutexTimedLock() except that it accept as an argument the thread ID of the thread that want to acquire the lock (which is usually the current thread).

+

Parameters:
+ + + + +
[in] lock The mutex to acquire.
[in] timeoutMillis The timeout to block.
[in] tid The thread ID of the thread that wants to acquire the mutex. This argument can be INVALID_NATIVE_TID if the thread ID is not known (e.g. in a mutex of type OS_MUTEX_DEPTH_SIMPLE).
+
+
Return values:
+ + +
TRUE If the mutex is locked. FALSE If the timeout was expired and the mutex can't be acquired during that time.
+
+
Availability:
    +
  • O/S: Windows, Linux & OS X*
  • CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL_T OS_MutexTryLock volatile OS_MUTEX_TYPE *  lock  ) 
+
+ + + + + +
+   + + +

+Tries to aquire a mutex:
+

    +
  • If the mutex is available, acquire it and return true.
    +
  • Otherwise, return false.
+

+

Parameters:
+ + +
[in] lock The mutex to acquire.
+
+
Return values:
+ + +
TRUE If the mutex was acquired.
+
+
Availability:
    +
  • O/S: Windows, Linux & OS X*
  • CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL_T OS_MutexTryLockTid volatile OS_MUTEX_TYPE *  lock0,
NATIVE_TID  myTid
+
+ + + + + +
+   + + +

+Tries to aquire a mutex:
+

    +
  • If the mutex is available, acquire it and return true.
    +
  • Otherwise, return false. This function is similar to OS_MutexTryLock() except that it accept as an argument the thread ID of the thread that want to acquire the lock (which is usually the current thread).
+

+

Parameters:
+ + + +
[in] lock The mutex to acquire.
[in] tid The thread ID of the thread that wants to acquire the mutex. This argument can be INVALID_NATIVE_TID if the thread ID is not known (e.g. in a mutex of type OS_MUTEX_DEPTH_SIMPLE).
+
+
Return values:
+ + +
TRUE If the mutex was acquired.
+
+
Availability:
    +
  • O/S: Windows, Linux & OS X*
  • CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL_T OS_MutexUnlock volatile OS_MUTEX_TYPE *  lock  ) 
+
+ + + + + +
+   + + +

+Releases a mutex.

+

Parameters:
+ + +
[in] lock The mutex to release.
+
+
Return values:
+ + +
TRUE If the mutex was locked and as a result of this call was unlocked.
+
+
Availability:
    +
  • O/S: Windows, Linux & OS X*
  • CPU: All
+
+
+


Generated on Sat Nov 4 23:36:54 2017 for PinCRT by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/group__OS__APIS__PIN__TLS.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/group__OS__APIS__PIN__TLS.html new file mode 100644 index 0000000..259b0cf --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/group__OS__APIS__PIN__TLS.html @@ -0,0 +1,551 @@ + + +PinCRT: Thread local storage + + + + +
+
+

Thread local storage

Contains API for thread local storage (TLS). +More... + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Typedefs

typedef VOID(* TLS_DESTRUCTOR )(VOID *)
typedef ADDRINT PIN_TLS_INDEX

Functions

VOID * OS_TlsGetBaseAddress ()
PIN_TLS_INDEX OS_TlsAlloc (TLS_DESTRUCTOR dest)
BOOL_T OS_TlsFree (PIN_TLS_INDEX idx)
VOID * OS_TlsGetValue (PIN_TLS_INDEX idx)
VOID * OS_TlsGetValueForThread (PIN_TLS_INDEX idx, NATIVE_TID ntid)
VOID ** OS_TlsGetArrayAddress (void)
VOID ** OS_TlsGetArrayAddressForThread (NATIVE_TID ntid)
BOOL_T OS_TlsSetValue (PIN_TLS_INDEX idx, VOID *val)
BOOL_T OS_TlsSetValueForThread (PIN_TLS_INDEX idx, NATIVE_TID ntid, VOID *val)
VOID OS_TlsFreeThreadTls (NATIVE_TID ntid)
BOOL_T OS_TlsAddStaticTlsDestructor (TLS_DESTRUCTOR destructor)
+

Detailed Description

+

Typedef Documentation

+

+ + + + +
+ + + + +
typedef ADDRINT PIN_TLS_INDEX
+
+ + + + + +
+   + + +

+Type for index inside the dynamic TLS.

+

+ + + + +
+ + + + +
typedef VOID(* TLS_DESTRUCTOR)(VOID *)
+
+ + + + + +
+   + + +

+Prototype for TLS value desctructor function. The only argument for this function is the value stored in TLS.

+


Function Documentation

+

+ + + + +
+ + + + + + + + + +
BOOL_T OS_TlsAddStaticTlsDestructor TLS_DESTRUCTOR  destructor  ) 
+
+ + + + + +
+   + + +

+Add a destructor for all threads' static TLS. The destructor for static TLS is called on each thread termination, provided that the thread had an allocated static TLS.

+

Parameters:
+ + +
[in] destructor Destructor function that will be called with the pointer to the fixed TLS when a thread terminates.
+
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
PIN_TLS_INDEX OS_TlsAlloc TLS_DESTRUCTOR  dest  ) 
+
+ + + + + +
+   + + +

+Allocates a new slot in the dynamic TLS.

+

Parameters:
+ + +
[in] dest Optional destructor function that will be called on each value stores in TLS when its corresponding thread dies.
+
+
Returns:
Index for the newly allocated slot or OS_APIS_INVALID_PIN_TLS_INDEX on error.
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL_T OS_TlsFree PIN_TLS_INDEX  idx  ) 
+
+ + + + + +
+   + + +

+Free a previously allocated slot in the dynamic TLS.

+

Parameters:
+ + +
[in] idx The index to free.
+
+
Returns:
True on success.
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
VOID OS_TlsFreeThreadTls NATIVE_TID  ntid  ) 
+
+ + + + + +
+   + + +

+Free all resources that are used for a particular thread's TLS. This function is usually called when a thread is about to exit.

+

Parameters:
+ + +
[in] ntid The thread ID for which the TLS need to be freed.
+
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
VOID** OS_TlsGetArrayAddress void   ) 
+
+ + + + + +
+   + + +

+Return the address of the static TLS for the current thread

+

Returns:
Address of the static TLS for the current threads (which is a VOID* array).
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
VOID** OS_TlsGetArrayAddressForThread NATIVE_TID  ntid  ) 
+
+ + + + + +
+   + + +

+Return the address of the static TLS for a particular thread

+

Parameters:
+ + +
[in] ntid The thread ID for which the static TLS will be retrieved.
+
+
Returns:
Address of the static TLS for the specified threads (which is a VOID* array).
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + +
VOID* OS_TlsGetBaseAddress  ) 
+
+ + + + + +
+   + + +

+Return the base address for the application-wide TLS data structure. The TLS data structure is used to implement a TLS which is not based on segment registers.

+

Returns:
Pointer to the base address of the TLS data structure.
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
VOID* OS_TlsGetValue PIN_TLS_INDEX  idx  ) 
+
+ + + + + +
+   + + +

+Get the value associated with a particular index from the current thread's dynamic TLS.

+

Parameters:
+ + +
[in] idx The index of the value to get.
+
+
Returns:
Pointer to the value, or NULL otherwise.
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VOID* OS_TlsGetValueForThread PIN_TLS_INDEX  idx,
NATIVE_TID  ntid
+
+ + + + + +
+   + + +

+Get the value associated with a particular index of a particular thread's dynamic TLS.

+

Parameters:
+ + + +
[in] idx The index of the value to get.
[in] ntid The thread ID for which the TLS value will be retrieved.
+
+
Returns:
Pointer to the value, or NULL otherwise.
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
BOOL_T OS_TlsSetValue PIN_TLS_INDEX  idx,
VOID *  val
+
+ + + + + +
+   + + +

+Set the value associated with a particular index in the current thread's dynamic TLS.

+

Parameters:
+ + + +
[in] idx The index of the value to set.
[in] val The new value to set.
+
+
Returns:
True on success.
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
BOOL_T OS_TlsSetValueForThread PIN_TLS_INDEX  idx,
NATIVE_TID  ntid,
VOID *  val
+
+ + + + + +
+   + + +

+Set the value associated with a particular index in of a particular thread's dynamic TLS.

+

Parameters:
+ + + + +
[in] idx The index of the value to set.
[in] ntid The thread ID for which the value will be set in its TLS.
[in] val The new value to set.
+
+
Returns:
True on success.
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+


Generated on Sat Nov 4 23:36:54 2017 for PinCRT by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/group__OS__APIS__PROCESS.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/group__OS__APIS__PROCESS.html new file mode 100644 index 0000000..c950656 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/group__OS__APIS__PROCESS.html @@ -0,0 +1,628 @@ + + +PinCRT: Process + + + + +
+
+

Process

Contains process-related os apis. +More... + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Typedefs

typedef OS_RETURN_CODE(* OS_FnPtrCreateProcess )(const CHAR *args, NATIVE_FD *stdFiles, NATIVE_FD *closeFiles, char **environ, OS_PROCESS_WAITABLE_PROCESS *process)

Functions

OS_RETURN_CODE OS_GetPid (NATIVE_PID *pid)
OS_RETURN_CODE OS_GetCommandLine (NATIVE_PID pid, USIZE *argc, CHAR ***argv, USIZE *bufsize)
OS_RETURN_CODE OS_GetEnvironmentBlock (NATIVE_PID pid, CHAR ***block, USIZE *bufSize)
NORETURN void OS_ExitProcess (INT code)
OS_RETURN_CODE OS_IsDebuggerPresent (NATIVE_PID pid, BOOL_T *isPresent)
OS_RETURN_CODE OS_GetUid (NATIVE_UID *uid)
OS_RETURN_CODE OS_FindStdFiles (NATIVE_FD *files)
OS_RETURN_CODE OS_CreateProcess (const CHAR *args, NATIVE_FD *stdFiles, NATIVE_FD *closeFiles, char **environ, OS_PROCESS_WAITABLE_PROCESS *process)
OS_RETURN_CODE OS_WaitForProcessTermination (OS_PROCESS_WAITABLE_PROCESS process, UINT32 *exitStatus)
VOID OS_TriggerSoftwareBreakpoint ()
void OS_NotifyFork ()
+

Detailed Description

+

Typedef Documentation

+

+ + + + +
+ + + + +
typedef OS_RETURN_CODE(* OS_FnPtrCreateProcess)(const CHAR *args, NATIVE_FD *stdFiles, NATIVE_FD *closeFiles, char **environ, OS_PROCESS_WAITABLE_PROCESS *process)
+
+ + + + + +
+   + + +

+Type definition of a pointer to an OS_CreateProcess function.

+


Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_CreateProcess const CHAR *  args,
NATIVE_FD stdFiles,
NATIVE_FD closeFiles,
char **  environ,
OS_PROCESS_WAITABLE_PROCESS process
+
+ + + + + +
+   + + +

+Create a process, possibly redirect its standard input/output/error. The process is created using the system command line interpreter or shell.

+

Parameters:
+ + + + + + +
[in] args Full command line for the process.
[in] stdFiles Points to an array of NATIVE_FD objects with at least 3 elements. These elements will be used to determine the file descriptors: STDIN, STDOUT, STDERR respectively of the newly created process.
[in] closeFiles (Optional) Points to an array of NATIVE_FD objects that needs to be closed in the context of the created proces. The last entry of this array should be INVALID_NATIVE_FD.
[in] environ Pointer to the environment block to use in the new process.
[out] process An opaque object representing the created process. One can wait for the process termination by calling OS_WaitForProcessTermination
+
+
Returns:
Operation status code.
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_PROCESS_QUERY_FAILED If the operation Failed
+
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
NORETURN void OS_ExitProcess INT  code  ) 
+
+ + + + + +
+   + + +

+Exits the current process.

+

Parameters:
+ + +
[in] code Process descriptor
+
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
OS_RETURN_CODE OS_FindStdFiles NATIVE_FD files  ) 
+
+ + + + + +
+   + + +

+Queries whether the current process is being debugged.

+

Parameters:
+ + +
[out] files Points to an array of NATIVE_FD objects with at least 3 elements. These elements will be filled with the file descriptors of STDIN, STDOUT, STDERR respectively.
+
+
Returns:
Operation status code.
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_PROCESS_QUERY_FAILED If the operation Failed
+
+
Availability:
O/S: Windows
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_GetCommandLine NATIVE_PID  pid,
USIZE *  argc,
CHAR ***  argv,
USIZE *  bufsize
+
+ + + + + +
+   + + +

+Retrieve the command line for a given process.

+

Parameters:
+ + + + + +
[in] pid Process descriptor
[out] argc Command line's argc
[out] argv Command line's argv array, allocated by this function (with OS_AllocateMemory())
[out] bufsize Size in bytes of the buffer pointer by argv
+
+
Returns:
Operation status code.
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_PROCESS_QUERY_FAILED If the operation Failed
+
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_GetEnvironmentBlock NATIVE_PID  pid,
CHAR ***  block,
USIZE *  bufSize
+
+ + + + + +
+   + + +

+Retrieve pointer to process environment variables block encoded in UTF8.

+

Parameters:
+ + + + +
[in] pid Process descriptor.
[out] block Return pointer to point to the environment block.
[out] bufSize Number of bytes allocated for the envrionement block.
+
+
Returns:
Operation status code.
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_PROCESS_UPDATE_FAILED If the operation Failed
+
+
Note:
On Linux and OS X* this function will retrieve the initial environment block that was valid when the process started. This function doesn't catch up with changes done to the environment variables while the process is running.
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
OS_RETURN_CODE OS_GetPid NATIVE_PID pid  ) 
+
+ + + + + +
+   + + +

+Retrieves the process ID of the current process.

+

Parameters:
+ + +
[out] pid Process descriptor
+
+
Returns:
Operation status code.
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_PROCESS_QUERY_FAILED If the operation Failed
+
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
OS_RETURN_CODE OS_GetUid NATIVE_UID *  uid  ) 
+
+ + + + + +
+   + + +

+Queries whether the current process is being debugged.

+

Parameters:
+ + +
[out] uid Process descriptor
+
+
Returns:
Operation status code.
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_PROCESS_QUERY_FAILED If the operation Failed
+
+
Availability:
O/S: Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_IsDebuggerPresent NATIVE_PID  pid,
BOOL_T isPresent
+
+ + + + + +
+   + + +

+Queries whether the current process is being debugged.

+

Parameters:
+ + + +
[out] pid Process descriptor
[out] isPresent True if the process 'pid' is being debugged.
+
+
Returns:
Operation status code.
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_PROCESS_QUERY_FAILED If the operation Failed
+
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + +
void OS_NotifyFork  ) 
+
+ + + + + +
+   + + +

+Notifies the locking machanism about a forked child.

+

Availability:
    +
  • O/S: Linux & OS X*
  • CPU: All
+
+
+

+ + + + +
+ + + + + + + + +
VOID OS_TriggerSoftwareBreakpoint  ) 
+
+ + + + + +
+   + + +

+Trigger a software breakpoint. When the current process is attached to a debugger, this function will stop the process and notify the debugger about a breakpoint that was triggered.

+

Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_WaitForProcessTermination OS_PROCESS_WAITABLE_PROCESS  process,
UINT32 *  exitStatus
+
+ + + + + +
+   + + +

+Wait for process termination.

+

Parameters:
+ + + +
[in] process An opaque object representing the process to wait for.
[out] exitStatus The exit status of the terminated process.
+
+
Returns:
Operation status code.
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_PROCESS_QUERY_FAILED If the operation Failed
+
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+


Generated on Sat Nov 4 23:36:54 2017 for PinCRT by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/group__OS__APIS__RW__LOCK.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/group__OS__APIS__RW__LOCK.html new file mode 100644 index 0000000..e31599c --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/group__OS__APIS__RW__LOCK.html @@ -0,0 +1,389 @@ + + +PinCRT: Readers writers lock + + + + +
+
+

Readers writers lock

Implementation of readers writers lock. +More... + + + + + + + + + + + + + + + + + + + + +

Functions

void OS_RWLockInitialize (volatile OS_APIS_RW_LOCK_T *l)
void OS_RWLockDestroy (volatile OS_APIS_RW_LOCK_T *l)
void OS_RWLockAcquireWrite (volatile OS_APIS_RW_LOCK_T *lock)
void OS_RWLockReleaseWrite (volatile OS_APIS_RW_LOCK_T *lock)
void OS_RWLockAcquireRead (volatile OS_APIS_RW_LOCK_T *lock)
void OS_RWLockReleaseRead (volatile OS_APIS_RW_LOCK_T *lock)
BOOL_T OS_RWLockRelease (volatile OS_APIS_RW_LOCK_T *l)
BOOL_T OS_RWLockTryAcquireWrite (volatile OS_APIS_RW_LOCK_T *l)
BOOL_T OS_RWLockTryAcquireRead (volatile OS_APIS_RW_LOCK_T *l)
+

Detailed Description

+

Function Documentation

+

+ + + + +
+ + + + + + + + + +
void OS_RWLockAcquireRead volatile OS_APIS_RW_LOCK_T *  lock  ) 
+
+ + + + + +
+   + + +

+Acquires the lock for reader. Blocks until the reader lock is acquired.

+

Parameters:
+ + +
[in] lock The lock to acquire
+
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
void OS_RWLockAcquireWrite volatile OS_APIS_RW_LOCK_T *  lock  ) 
+
+ + + + + +
+   + + +

+Acquires the lock for writer. Blocks until the writer lock is acquired.

+

Parameters:
+ + +
[in] lock The lock to acquire
+
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
void OS_RWLockDestroy volatile OS_APIS_RW_LOCK_T *  l  ) 
+
+ + + + + +
+   + + +

+Destroy a reader-writer lock, freeing all exhausted resources associated with the lock.

+

Parameters:
+ + +
[in] lock The lock to destroy
+
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
void OS_RWLockInitialize volatile OS_APIS_RW_LOCK_T *  l  ) 
+
+ + + + + +
+   + + +

+Initializes a reader-writer lock.

+

Parameters:
+ + +
[in] lock The lock to initialize
+
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL_T OS_RWLockRelease volatile OS_APIS_RW_LOCK_T *  l  ) 
+
+ + + + + +
+   + + +

+Releases the lock that was acquired. The lock kind that was acquired (whether its read or write) is determined by this function.

+

Parameters:
+ + +
[in] lock The lock to release
+
+
Returns:
TRUE if the lock was taken (for either read or write) and as a result of this call is unlocked, FALSE otherwise. If the reader lock was released, and a waiting writer was woken up and acquired the lock, the function will return TRUE.
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
void OS_RWLockReleaseRead volatile OS_APIS_RW_LOCK_T *  lock  ) 
+
+ + + + + +
+   + + +

+Releases the lock for reader.

+

Parameters:
+ + +
[in] lock The lock to release
+
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
void OS_RWLockReleaseWrite volatile OS_APIS_RW_LOCK_T *  lock  ) 
+
+ + + + + +
+   + + +

+Releases the lock for writer.

+

Parameters:
+ + +
[in] lock The lock to release
+
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL_T OS_RWLockTryAcquireRead volatile OS_APIS_RW_LOCK_T *  l  ) 
+
+ + + + + +
+   + + +

+Tries to Acquire the lock for reader. This function returns immediately if the lock can't be acquired.

+

Parameters:
+ + +
[in] lock The lock to acquire
+
+
Returns:
TRUE If the reader lock was acquired.
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
BOOL_T OS_RWLockTryAcquireWrite volatile OS_APIS_RW_LOCK_T *  l  ) 
+
+ + + + + +
+   + + +

+Tries to Acquire the lock for writer. This function returns immediately if the lock can't be acquired.

+

Parameters:
+ + +
[in] lock The lock to acquire
+
+
Returns:
TRUE If the writer lock was acquired.
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+


Generated on Sat Nov 4 23:36:54 2017 for PinCRT by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/group__OS__APIS__SIGNALS.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/group__OS__APIS__SIGNALS.html new file mode 100644 index 0000000..e084293 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/group__OS__APIS__SIGNALS.html @@ -0,0 +1,339 @@ + + +PinCRT: Signals + + + + +
+
+

Signals

Contains signals related os apis. +More... + + + + + + + + + + + + + + + + + +

Classes

struct  SIGACTION

Functions

OS_RETURN_CODE OS_SendSignalToProcess (NATIVE_PID pid, INT signal)
OS_RETURN_CODE OS_SigProcMask (INT how, const SIGSET_T *set, SIGSET_T *oldset)
OS_RETURN_CODE OS_SigAction (INT signum, const struct SIGACTION *act, struct SIGACTION *oldact)
OS_RETURN_CODE OS_SigSuspend (const SIGSET_T *mask)
OS_RETURN_CODE OS_SigPending (const SIGSET_T *set)
OS_RETURN_CODE OS_SendSignalToThread (NATIVE_PID pid, NATIVE_TID tid, UINT32 signal)
+

Detailed Description

+

Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_SendSignalToProcess NATIVE_PID  pid,
INT  signal
+
+ + + + + +
+   + + +

+Send signal to a process. This function is compatible with POSIX kill().

+

Parameters:
+ + + +
[in] pid The process to send signal to.
[in] signal The signal to send.
+
+
Returns:
Operation status code.
+
Availability:
O/S: Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_SendSignalToThread NATIVE_PID  pid,
NATIVE_TID  tid,
UINT32  signal
+
+ + + + + +
+   + + +

+Send signal to a particular thread inside a process.

+

Parameters:
+ + + + +
[in] pid The process ID where the thread is running.if it's INVALID_NATIVE_PID then we ignore the pid.
[in] tid The thread ID to send the signal to.
[in] signal The signal to send.
+
+
Returns:
Operation status code.
+
Availability:
O/S: Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_SigAction INT  signum,
const struct SIGACTION act,
struct SIGACTION oldact
+
+ + + + + +
+   + + +

+Change the action taken by a process on receipt of a specific signal. This function is compatible with POSIX sigaction().

+

Parameters:
+ + + + +
[in] signum The signal to alter its behavior.
[in] act The action to be taken upon signal reception.
[in] oldact The previous action that was taken upon signal reception.
+
+
Returns:
Operation status code.
+
Availability:
O/S: Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
OS_RETURN_CODE OS_SigPending const SIGSET_T *  set  ) 
+
+ + + + + +
+   + + +

+Returns the set of signals that are pending for delivery to the calling thread (i.e., the signals which have been raised while blocked). The mask of pending signals is returned in set.

+

Parameters:
+ + +
[out] set Where to store the signal set.
+
+
Returns:
Operation status code.
+
Availability:
O/S: Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_SigProcMask INT  how,
const SIGSET_T *  set,
SIGSET_T *  oldset
+
+ + + + + +
+   + + +

+Change the signal mask, the set of currently blocked signals for the current thread. This function is compatible with POSIX sigprocmask().

+

Parameters:
+ + + + +
[in] how Specifies how to alter the blocked signals mask: SIG_BLOCK: The set of blocked signals is the union of the current set and the set argument. SIG_UNBLOCK: The signals in set are removed from the current set of blocked signals. It is legal to attempt to unblock a signal which is not blocked. SIG_SETMASK: The set of blocked signals is set to the argument set.
[in] set The signal set to alter.
[in] oldset The previous blocked signals set.
+
+
Returns:
Operation status code.
+
Availability:
O/S: Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
OS_RETURN_CODE OS_SigSuspend const SIGSET_T *  mask  ) 
+
+ + + + + +
+   + + +

+Temporarily replaces the signal mask of the calling process with the mask given by mask and then suspends the process until delivery of a signal whose action is to invoke a signal handler or to terminate a process.

+

Parameters:
+ + +
[in] mask The mask to use for the signals
+
+
Returns:
Operation status code.
+
Availability:
O/S: Linux & OS X*
+ CPU: All
+
+
+


Generated on Sat Nov 4 23:36:54 2017 for PinCRT by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/group__OS__APIS__THREAD.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/group__OS__APIS__THREAD.html new file mode 100644 index 0000000..b3bdf36 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/group__OS__APIS__THREAD.html @@ -0,0 +1,500 @@ + + +PinCRT: Threads + + + + +
+
+

Threads

threads.h Contains thread-related os apis +More... + + + + + + + + + + + + + + + + + + + + +

Functions

OS_RETURN_CODE OS_CreateThread (VOID(*ThreadMainFunction)(VOID *), VOID *ThreadParam, VOID *stackBottom, ADDRINT stackSize, NATIVE_TID *td)
OS_RETURN_CODE OS_ExitThread (NATIVE_TID td)
OS_RETURN_CODE OS_ThreadExitAndClear (void *stackAddr, ADDRINT stackSize, INT32 *dwordToReset)
OS_RETURN_CODE OS_SuspendThread (NATIVE_TID td)
OS_RETURN_CODE OS_ResumeThread (NATIVE_TID td)
OS_RETURN_CODE OS_Sleep (INT interval)
OS_RETURN_CODE OS_GetTid (NATIVE_TID *id)
OS_RETURN_CODE OS_Yield (void)
OS_RETURN_CODE OS_RaiseException (NATIVE_TID td, UINT32 code)
+

Detailed Description

+

Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_CreateThread VOID(*)(VOID *)  ThreadMainFunction,
VOID *  ThreadParam,
VOID *  stackBottom,
ADDRINT  stackSize,
NATIVE_TID td
+
+ + + + + +
+   + + +

+Create a new thread in the current process.

+

Parameters:
+ + + + + + +
[in] ThreadMainFunction Thread start address
[in] ThreadParam Thread optional parameter
[in] stackBottom The base address of the thread's stack. This argument can be NULL. In that case this function will allocate the stack according to the stackSize argument.
[in] stackSize The size of the thread's stack.
[out] td The descriptor of newly created thread.
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_THREAD_CREATE_FAILED If the operation Failed
+
+
Returns:
Operation status code.
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
OS_RETURN_CODE OS_ExitThread NATIVE_TID  td  ) 
+
+ + + + + +
+   + + +

+Causes a running thread to exit.

+

Parameters:
+ + +
[in] td Thread descriptor
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_THREAD_EXIT_FAILED If the operation Failed
+
+
Returns:
Operation status code.
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
OS_RETURN_CODE OS_GetTid NATIVE_TID id  ) 
+
+ + + + + +
+   + + +

+Retrieves the current thread's handle.

+

Parameters:
+ + +
[out] id Address of handle container variable
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_THREAD_QUERY_FAILED If the operation Failed
+
+
Returns:
Operation status code.
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_RaiseException NATIVE_TID  td,
UINT32  code
+
+ + + + + +
+   + + +

+Raise an exception.

+

Parameters:
+ + + +
[in] td Thread descriptor
[in] code Exception type
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_THREAD_SLEEP_FAILED If the operation Failed
+
+
Returns:
Operation status code.
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
OS_RETURN_CODE OS_ResumeThread NATIVE_TID  td  ) 
+
+ + + + + +
+   + + +

+Resumes running thread.

+

Parameters:
+ + +
[in] td Thread descriptor
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_THREAD_RESUME_FAILED If the operation Failed
+
+
Returns:
Operation status code.
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
OS_RETURN_CODE OS_Sleep INT  interval  ) 
+
+ + + + + +
+   + + +

+Sends thread to sleep.

+

Parameters:
+ + +
[in] interval Interval to sleep in milli-seconds.
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_THREAD_SLEEP_FAILED If the operation Failed
+
+
Returns:
Operation status code.
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
OS_RETURN_CODE OS_SuspendThread NATIVE_TID  td  ) 
+
+ + + + + +
+   + + +

+Suspends a running thread.

+

Parameters:
+ + +
[in] td Thread descriptor
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_THREAD_SUSPEND_FAILED If the operation Failed
+
+
Returns:
Operation status code.
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_ThreadExitAndClear void *  stackAddr,
ADDRINT  stackSize,
INT32 *  dwordToReset
+
+ + + + + +
+   + + +

+This function clears a word and then exits the calling thread. It guaranteess that it will use only register state (no memory) once word is cleared.

+

Parameters:
+ + + +
[in] code The thread exit code as passed from the caller
[out] dwordToReset This memory location is cleared (set to zero).
+
+
Return values:
+ + +
OS_RETURN_CODE_THREAD_EXIT_FAILED If the operation Failed
+
+
Returns:
Operation status code.
+
Availability:
O/S: Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
OS_RETURN_CODE OS_Yield void   ) 
+
+ + + + + +
+   + + +

+Pre-empts the thread specified by the running thread.

+

Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_THREAD_SLEEP_FAILED If the operation Failed
+
+
Returns:
Operation status code.
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+


Generated on Sat Nov 4 23:36:54 2017 for PinCRT by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/group__OS__APIS__THREAD__MANAGEMENT.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/group__OS__APIS__THREAD__MANAGEMENT.html new file mode 100644 index 0000000..c2ba7aa --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/group__OS__APIS__THREAD__MANAGEMENT.html @@ -0,0 +1,108 @@ + + +PinCRT: Threads database + + + + +
+
+

Threads database

Contains API for thread tracking. +More... + + + + + + +

Functions

VOID OS_DeregisterThread (NATIVE_TID ntid)
VOID OS_DeregisterCurrentThread (void)
+

Detailed Description

+

Function Documentation

+

+ + + + +
+ + + + + + + + + +
VOID OS_DeregisterCurrentThread void   ) 
+
+ + + + + +
+   + + +

+Deregister the current thread from the threads database and release all the resources used to track this thread (including TLS).

+

Availability:
    +
  • O/S: Windows, Linux & OS X*
  • CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
VOID OS_DeregisterThread NATIVE_TID  ntid  ) 
+
+ + + + + +
+   + + +

+Deregister a thread from the threads database and release all the resources used to track this thread (including TLS).

+

Parameters:
+ + +
[in] ntid OS thread ID of the thread to deregister.
+
+
Availability:
    +
  • O/S: Windows, Linux & OS X*
  • CPU: All
+
+
+


Generated on Sat Nov 4 23:36:54 2017 for PinCRT by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/group__OS__APIS__TIME.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/group__OS__APIS__TIME.html new file mode 100644 index 0000000..bfb4591 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/group__OS__APIS__TIME.html @@ -0,0 +1,137 @@ + + +PinCRT: Time + + + + +
+
+

Time

Contains time related os apis. +More... + + + + + + +

Functions

OS_RETURN_CODE OS_Time (UINT64 *CurrentTime)
OS_RETURN_CODE OS_GetDefaultTimeZone (CHAR *tzname, USIZE buflen)
+

Detailed Description

+

Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_GetDefaultTimeZone CHAR *  tzname,
USIZE  buflen
+
+ + + + + +
+   + + +

+Retrieves a string containing the default timezone for the current host.

+

Parameters:
+ + + +
[out] tzname Points to a buffer that will be filled with the timezone string.
[in] buflen Size in bytes of the buffer provided for the 'tzname' argument.
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_TIME_QUERY_FAILED If the operation failed
+
+
Returns:
Operation status code.
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+

+ + + + +
+ + + + + + + + + +
OS_RETURN_CODE OS_Time UINT64 *  CurrentTime  ) 
+
+ + + + + +
+   + + +

+Retrieves current time in 1us ticks since 1970.

+

Parameters:
+ + +
[out] CurrentTime Current time
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERROR If the operation succeeded
OS_RETURN_CODE_TIME_QUERY_FAILED If the operation failed
+
+
Returns:
Operation status code.
+
Availability:
O/S: Windows, Linux & OS X*
+ CPU: All
+
+
+


Generated on Sat Nov 4 23:36:54 2017 for PinCRT by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/group__OS__APIS__TYPES.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/group__OS__APIS__TYPES.html new file mode 100644 index 0000000..2479dc7 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/group__OS__APIS__TYPES.html @@ -0,0 +1,196 @@ + + +PinCRT: Data types + + + + +
+
+

Data types

Contains data-type definitions. +More... + + + + + + + + + + + + + + + + +

Defines

#define CPU_MEMORY_CACHELINE_SIZE   64

Typedefs

typedef unsigned char BOOL_T
typedef ADDRINT NATIVE_FD
typedef UINT32 NATIVE_PID
typedef UINT32 NATIVE_TID

Enumerations

enum  TRI {
+  TRI_YES, +
+  TRI_NO, +
+  TRI_MAYBE +
+ }
+

Detailed Description

+

Define Documentation

+

+ + + + +
+ + + + +
#define CPU_MEMORY_CACHELINE_SIZE   64
+
+ + + + + +
+   + + +

+The size of the memory cache line in a single core.

+


Typedef Documentation

+

+ + + + +
+ + + + +
typedef unsigned char BOOL_T
+
+ + + + + +
+   + + +

+Data type for boolean

+

+ + + + +
+ + + + +
typedef ADDRINT NATIVE_FD
+
+ + + + + +
+   + + +

+Generic data type to refer to a kernel file object. This is actually an HANDLE in Windows, and a file descriptor (int) on Unix systems.

+

+ + + + +
+ + + + +
typedef UINT32 NATIVE_PID
+
+ + + + + +
+   + + +

+Data type that can hold a process ID. On OS-APIs all processes can be refered to by their PIDs.

+

+ + + + +
+ + + + +
typedef UINT32 NATIVE_TID
+
+ + + + + +
+   + + +

+Data type that can hold a thread ID. On OS-APIs all threads can be refered to by their TIDs.

+


Enumeration Type Documentation

+

+ + + + +
+ + + + +
enum TRI
+
+ + + + + +
+   + + +

+Generic type for three-state logic.

+


Generated on Sat Nov 4 23:36:54 2017 for PinCRT by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/hierarchy.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/hierarchy.html new file mode 100644 index 0000000..e531990 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/hierarchy.html @@ -0,0 +1,43 @@ + + +PinCRT: Hierarchical Index + + + + +
+
+ +

PinCRT Class Hierarchy

This inheritance list is sorted roughly, but not completely, alphabetically: +
Generated on Sat Nov 4 23:36:53 2017 for PinCRT by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/index.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/index.html new file mode 100644 index 0000000..ae9de7a --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/index.html @@ -0,0 +1,115 @@ + + +PinCRT: Pin OS-APIs User Guide + + + + +
+
+

Pin OS-APIs User Guide

+

+========================================================================================

+Introduction

+========================================================================================

+OS-APIs is a set of functions that provides a generic way to interact with the OS. The OS interaction types include: file operations, process creation and manipulation, inter-process communication, etc. See list of all supported operations here

+========================================================================================

+Mapping between OS specific API functions to OS-APIs functions

+========================================================================================

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
OS-APIs POSIX (Linux and OS X*) WIN32
OS_GetFileAttributes() stat() lstat() GetFileAttributes()
OS_GetFDAttributes() fstat() GetFileInformationByHandle()
OS_OpenFD() open() creat() CreateFile() CreateFileEx() OpenFile()
OS_WriteFD() write() WriteFile() WriteFileEx()
OS_ReadFD() read() ReadFile() ReadFileEx()
OS_SeekFD() lseek() llseek() lseek64() SetFilePointer() SetFilePointerEx()
OS_CloseFD() close() CloseHandle()
OS_DeleteFile() unlink() unlinkat() DeleteFile()
OS_FlushFD() fsync() fdatasync() FlushFileBuffers()
OS_FilePermissionsFD() fstat() GetFileAttributes()
OS_FileSizeFD() fstat() GetFileSize() GetFileSizeEx()
OS_Cwd() cwd() GetCurrentDirectory()
OS_Chdir() chdir() SetCurrentDirectory()
OS_OpenDirFD() open() OpenFile() CreateFile()
OS_MkDir() mkdir() CreateDirectory() CreateDirectoryEx()
OS_DeleteDirectory() rmdir() RemoveDirectory()
OS_IsConsoleFD() isatty() GetObjectType()
OS_GetFDAccessMode() fcntl() NtQueryObject()
OS_ReadDirectoryFD() getdents64() getdents()
OS_RenameFile() rename() MoveFile()
OS_ReadLink() readlink()
OS_Pipe() pipe() CreatePipe()
OS_GetHostName() uname() GetComputerName() GetComputerNameEx()
OS_GetHostCPUArch() uname() IsWow64Process()
OS_GetOSVersion() uname() GetVersion() GetVersionEx()
OS_AllocateMemory() mmap() VirtualAlloc() VirtualAllocEx()
OS_MapFileToMemory() mmap() MapViewOfFile() MapViewOfFileEx()
OS_FreeMemory() munmap() VirtualFree() VirtualFreeEx() UnmapViewOfFile()
OS_GetPageSize() getpagesize() GetSystemInfo()
OS_QueryMemory() VirtualQuery() VirtualQueryEx()
OS_ProtectMemory() mprotect() VirtualProtect() VirtualProtectEx()
OS_GetCommandLine() GetCommandLine()
OS_GetEnvironmentBlock() environ GetEnvironmentVariable() SetEnvironmentVariable()
OS_SuspendThread() kill() tkill() tgkill() SuspendThread()
OS_ResumeThread() kill() tkill() tgkill() ResumeThread()
OS_GetTid() gettid() GetCurrentThreadId()
OS_GetPid() getpid() GetCurrentProcessId()
+


Generated on Sat Nov 4 23:36:53 2017 for PinCRT by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/installdox b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/installdox new file mode 100644 index 0000000..9b89fe0 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/installdox @@ -0,0 +1,117 @@ +#!/usr/bin/perl + +%subst = ( ); +$quiet = 0; + +if (open(F,"search.cfg")) +{ + $_= ; s/[ \t\n]*$//g ; $subst{"_doc"} = $_; + $_= ; s/[ \t\n]*$//g ; $subst{"_cgi"} = $_; +} + +while ( @ARGV ) { + $_ = shift @ARGV; + if ( s/^-// ) { + if ( /^l(.*)/ ) { + $v = ($1 eq "") ? shift @ARGV : $1; + ($v =~ /\/$/) || ($v .= "/"); + $_ = $v; + if ( /(.+)\@(.+)/ ) { + if ( exists $subst{$1} ) { + $subst{$1} = $2; + } else { + print STDERR "Unknown tag file $1 given with option -l\n"; + &usage(); + } + } else { + print STDERR "Argument $_ is invalid for option -l\n"; + &usage(); + } + } + elsif ( /^q/ ) { + $quiet = 1; + } + elsif ( /^\?|^h/ ) { + &usage(); + } + else { + print STDERR "Illegal option -$_\n"; + &usage(); + } + } + else { + push (@files, $_ ); + } +} + +foreach $sub (keys %subst) +{ + if ( $subst{$sub} eq "" ) + { + print STDERR "No substitute given for tag file `$sub'\n"; + &usage(); + } + elsif ( ! $quiet && $sub ne "_doc" && $sub ne "_cgi" ) + { + print "Substituting $subst{$sub} for each occurence of tag file $sub\n"; + } +} + +if ( ! @files ) { + if (opendir(D,".")) { + foreach $file ( readdir(D) ) { + $match = ".html"; + next if ( $file =~ /^\.\.?$/ ); + ($file =~ /$match/) && (push @files, $file); + ($file =~ "tree.js") && (push @files, $file); + } + closedir(D); + } +} + +if ( ! @files ) { + print STDERR "Warning: No input files given and none found!\n"; +} + +foreach $f (@files) +{ + if ( ! $quiet ) { + print "Editing: $f...\n"; + } + $oldf = $f; + $f .= ".bak"; + unless (rename $oldf,$f) { + print STDERR "Error: cannot rename file $oldf\n"; + exit 1; + } + if (open(F,"<$f")) { + unless (open(G,">$oldf")) { + print STDERR "Error: opening file $oldf for writing\n"; + exit 1; + } + if ($oldf ne "tree.js") { + while () { + s/doxygen\=\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\" (href|src)=\"\2/doxygen\=\"$1:$subst{$1}\" \3=\"$subst{$1}/g; + print G "$_"; + } + } + else { + while () { + s/\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\", \"\2/\"$1:$subst{$1}\" ,\"$subst{$1}/g; + print G "$_"; + } + } + } + else { + print STDERR "Warning file $f does not exist\n"; + } + unlink $f; +} + +sub usage { + print STDERR "Usage: installdox [options] [html-file [html-file ...]]\n"; + print STDERR "Options:\n"; + print STDERR " -l tagfile\@linkName tag file + URL or directory \n"; + print STDERR " -q Quiet mode\n\n"; + exit 1; +} diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/modules.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/modules.html new file mode 100644 index 0000000..78c2ef6 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/modules.html @@ -0,0 +1,44 @@ + + +PinCRT: Module Index + + + + +
+
+

PinCRT Modules

Here is a list of all modules: +
Generated on Sat Nov 4 23:36:54 2017 for PinCRT by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/search.idx b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/search.idx new file mode 100644 index 0000000..e4d0b3c Binary files /dev/null and b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/search.idx differ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/search.php b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/search.php new file mode 100644 index 0000000..00576d4 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/search.php @@ -0,0 +1,381 @@ + + +Search + + + + +
+
    +
  • Main Page
  • +
  • Modules
  • +
  • Classes
  • +
  • +
    + + + + +1 document matching your query."; + } + else // $num>1 + { + return "Found $num documents matching your query. Showing best matches first."; + } +} + +function report_matches() +{ + return "Matches: "; +} +function end_form($value) +{ + echo " \n \n
    \n
    \n
  • \n
\n
\n"; +} + +function readInt($file) +{ + $b1 = ord(fgetc($file)); $b2 = ord(fgetc($file)); + $b3 = ord(fgetc($file)); $b4 = ord(fgetc($file)); + return ($b1<<24)|($b2<<16)|($b3<<8)|$b4; +} + +function readString($file) +{ + $result=""; + while (ord($c=fgetc($file))) $result.=$c; + return $result; +} + +function readHeader($file) +{ + $header =fgetc($file); $header.=fgetc($file); + $header.=fgetc($file); $header.=fgetc($file); + return $header; +} + +function computeIndex($word) +{ + // Fast string hashing + //$lword = strtolower($word); + //$l = strlen($lword); + //for ($i=0;$i<$l;$i++) + //{ + // $c = ord($lword{$i}); + // $v = (($v & 0xfc00) ^ ($v << 6) ^ $c) & 0xffff; + //} + //return $v; + + // Simple hashing that allows for substring search + if (strlen($word)<2) return -1; + // high char of the index + $hi = ord($word{0}); + if ($hi==0) return -1; + // low char of the index + $lo = ord($word{1}); + if ($lo==0) return -1; + // return index + return $hi*256+$lo; +} + +function search($file,$word,&$statsList) +{ + $index = computeIndex($word); + if ($index!=-1) // found a valid index + { + fseek($file,$index*4+4); // 4 bytes per entry, skip header + $index = readInt($file); + if ($index) // found words matching the hash key + { + $start=sizeof($statsList); + $count=$start; + fseek($file,$index); + $w = readString($file); + while ($w) + { + $statIdx = readInt($file); + if ($word==substr($w,0,strlen($word))) + { // found word that matches (as substring) + $statsList[$count++]=array( + "word"=>$word, + "match"=>$w, + "index"=>$statIdx, + "full"=>strlen($w)==strlen($word), + "docs"=>array() + ); + } + $w = readString($file); + } + $totalHi=0; + $totalFreqHi=0; + $totalFreqLo=0; + for ($count=$start;$count $idx, + "freq" => $freq>>1, + "rank" => 0.0, + "hi" => $freq&1 + ); + if ($freq&1) // word occurs in high priority doc + { + $totalHi++; + $totalFreqHi+=$freq*$multiplier; + } + else // word occurs in low priority doc + { + $totalFreqLo+=$freq*$multiplier; + } + } + // read name and url info for the doc + for ($i=0;$i<$numDocs;$i++) + { + fseek($file,$docInfo[$i]["idx"]); + $docInfo[$i]["name"]=readString($file); + $docInfo[$i]["url"]=readString($file); + } + $statInfo["docs"]=$docInfo; + } + $totalFreq=($totalHi+1)*$totalFreqLo + $totalFreqHi; + for ($count=$start;$count$key, + "name"=>$di["name"], + "rank"=>$rank + ); + } + $docs[$key]["words"][] = array( + "word"=>$wordInfo["word"], + "match"=>$wordInfo["match"], + "freq"=>$di["freq"] + ); + } + } + return $docs; +} + +function filter_results($docs,&$requiredWords,&$forbiddenWords) +{ + $filteredDocs=array(); + while (list ($key, $val) = each ($docs)) + { + $words = &$docs[$key]["words"]; + $copy=1; // copy entry by default + if (sizeof($requiredWords)>0) + { + foreach ($requiredWords as $reqWord) + { + $found=0; + foreach ($words as $wordInfo) + { + $found = $wordInfo["word"]==$reqWord; + if ($found) break; + } + if (!$found) + { + $copy=0; // document contains none of the required words + break; + } + } + } + if (sizeof($forbiddenWords)>0) + { + foreach ($words as $wordInfo) + { + if (in_array($wordInfo["word"],$forbiddenWords)) + { + $copy=0; // document contains a forbidden word + break; + } + } + } + if ($copy) $filteredDocs[$key]=$docs[$key]; + } + return $filteredDocs; +} + +function compare_rank($a,$b) +{ + if ($a["rank"] == $b["rank"]) + { + return 0; + } + return ($a["rank"]>$b["rank"]) ? -1 : 1; +} + +function sort_results($docs,&$sorted) +{ + $sorted = $docs; + usort($sorted,"compare_rank"); + return $sorted; +} + +function report_results(&$docs) +{ + echo "\n"; + echo " \n"; + echo " \n"; + echo " \n"; + $numDocs = sizeof($docs); + if ($numDocs==0) + { + echo " \n"; + echo " \n"; + echo " \n"; + } + else + { + echo " \n"; + echo " \n"; + echo " \n"; + $num=1; + foreach ($docs as $doc) + { + echo " \n"; + echo " "; + echo "\n"; + echo " \n"; + echo " \n"; + echo " \n"; + $num++; + } + } + echo "

".search_results()."

".matches_text(0)."
".matches_text($numDocs); + echo "\n"; + echo "
$num.".$doc["name"]."
".report_matches()." "; + foreach ($doc["words"] as $wordInfo) + { + $word = $wordInfo["word"]; + $matchRight = substr($wordInfo["match"],strlen($word)); + echo "$word$matchRight(".$wordInfo["freq"].") "; + } + echo "
\n"; +} + +function main() +{ + if(strcmp('4.1.0', phpversion()) > 0) + { + die("Error: PHP version 4.1.0 or above required!"); + } + if (!($file=fopen("search.idx","rb"))) + { + die("Error: Search index file could NOT be opened!"); + } + if (readHeader($file)!="DOXS") + { + die("Error: Header of index file is invalid!"); + } + $query=""; + if (array_key_exists("query", $_GET)) + { + $query=$_GET["query"]; + } + end_form($query); + echo " \n
\n"; + $results = array(); + $requiredWords = array(); + $forbiddenWords = array(); + $foundWords = array(); + $word=strtok($query," "); + while ($word) // for each word in the search query + { + if (($word{0}=='+')) { $word=substr($word,1); $requiredWords[]=$word; } + if (($word{0}=='-')) { $word=substr($word,1); $forbiddenWords[]=$word; } + if (!in_array($word,$foundWords)) + { + $foundWords[]=$word; + search($file,strtolower($word),$results); + } + $word=strtok(" "); + } + $docs = array(); + combine_results($results,$docs); + // filter out documents with forbidden word or that do not contain + // required words + $filteredDocs = filter_results($docs,$requiredWords,$forbiddenWords); + // sort the results based on rank + $sorted = array(); + sort_results($filteredDocs,$sorted); + // report results to the user + report_results($sorted); + echo "
\n"; + fclose($file); +} + +main(); + + +?> +
Generated on Sat Nov 4 23:36:54 2017 for PinCRT by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/structOS__APIS__RW__LOCK__IMPL__T-members.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/structOS__APIS__RW__LOCK__IMPL__T-members.html new file mode 100644 index 0000000..7466b53 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/structOS__APIS__RW__LOCK__IMPL__T-members.html @@ -0,0 +1,42 @@ + + +PinCRT: Member List + + + + +
+
+ +

OS_APIS_RW_LOCK_IMPL_T Member List

This is the complete list of members for OS_APIS_RW_LOCK_IMPL_T, including all inherited members.

+ + + + + + +
lock (defined in OS_APIS_RW_LOCK_IMPL_T)OS_APIS_RW_LOCK_IMPL_T
no_readers_event (defined in OS_APIS_RW_LOCK_IMPL_T)OS_APIS_RW_LOCK_IMPL_T
owner_type (defined in OS_APIS_RW_LOCK_IMPL_T)OS_APIS_RW_LOCK_IMPL_T
readers (defined in OS_APIS_RW_LOCK_IMPL_T)OS_APIS_RW_LOCK_IMPL_T
spinlock_fork_count (defined in OS_APIS_RW_LOCK_IMPL_T)OS_APIS_RW_LOCK_IMPL_T
waiters_count (defined in OS_APIS_RW_LOCK_IMPL_T)OS_APIS_RW_LOCK_IMPL_T


Generated on Sat Nov 4 23:36:53 2017 for PinCRT by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/structOS__APIS__RW__LOCK__IMPL__T.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/structOS__APIS__RW__LOCK__IMPL__T.html new file mode 100644 index 0000000..aeb4b64 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/structOS__APIS__RW__LOCK__IMPL__T.html @@ -0,0 +1,64 @@ + + +PinCRT: OS_APIS_RW_LOCK_IMPL_T Struct Reference + + + + +
+
+ +

OS_APIS_RW_LOCK_IMPL_T Struct Reference

#include <rw-lock.h> +

+List of all members. + + + + + + + + + + + + + + +

Public Attributes

+OS_MUTEX_TYPE_IMPL lock
+OS_APIS_RW_LOCK_OWNER_TYPE owner_type
+UINT32 readers
+OS_EVENT no_readers_event
+UINT32 waiters_count
+UINT32 spinlock_fork_count
+


Detailed Description

+This is an opaque struct for readers/writers lock. This struct should be used with the functions declared in this header. +

+


The documentation for this struct was generated from the following file:
    +
  • rw-lock.h
+
Generated on Sat Nov 4 23:36:53 2017 for PinCRT by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/structOS__MEMORY__AT__ADDR__INFORMATION-members.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/structOS__MEMORY__AT__ADDR__INFORMATION-members.html new file mode 100644 index 0000000..2a78f4f --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/structOS__MEMORY__AT__ADDR__INFORMATION-members.html @@ -0,0 +1,41 @@ + + +PinCRT: Member List + + + + +
+
+ +

OS_MEMORY_AT_ADDR_INFORMATION Member List

This is the complete list of members for OS_MEMORY_AT_ADDR_INFORMATION, including all inherited members.

+ + + + + +
BaseAddressOS_MEMORY_AT_ADDR_INFORMATION
MapSizeOS_MEMORY_AT_ADDR_INFORMATION
ProtectionOS_MEMORY_AT_ADDR_INFORMATION
SharedOS_MEMORY_AT_ADDR_INFORMATION
TypeOS_MEMORY_AT_ADDR_INFORMATION


Generated on Sat Nov 4 23:36:53 2017 for PinCRT by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/structOS__MEMORY__AT__ADDR__INFORMATION.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/structOS__MEMORY__AT__ADDR__INFORMATION.html new file mode 100644 index 0000000..edf440d --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/structOS__MEMORY__AT__ADDR__INFORMATION.html @@ -0,0 +1,185 @@ + + +PinCRT: OS_MEMORY_AT_ADDR_INFORMATION Struct Reference + + + + +
+
+ +

OS_MEMORY_AT_ADDR_INFORMATION Struct Reference
+ +[Memory] +

#include <memory.h> +

+List of all members. + + + + + + + + + + + + +

Public Attributes

VOID * BaseAddress
USIZE MapSize
UINT Shared
OS_PAGE_PROTECTION_TYPE Protection
UINT Type
+


Detailed Description

+Contains a memory region information +

+


Member Data Documentation

+

+ + + + +
+ + + + +
VOID* OS_MEMORY_AT_ADDR_INFORMATION::BaseAddress
+
+ + + + + +
+   + + +

+The base address of the mapped region. +

+

+

+ + + + +
+ + + + +
USIZE OS_MEMORY_AT_ADDR_INFORMATION::MapSize
+
+ + + + + +
+   + + +

+The size of the mapped region. +

+

+

+ + + + +
+ + + + +
OS_PAGE_PROTECTION_TYPE OS_MEMORY_AT_ADDR_INFORMATION::Protection
+
+ + + + + +
+   + + +

+The protection of this region. +

+

+

+ + + + +
+ + + + +
UINT OS_MEMORY_AT_ADDR_INFORMATION::Shared
+
+ + + + + +
+   + + +

+Shared or private region. +

+

+

+ + + + +
+ + + + +
UINT OS_MEMORY_AT_ADDR_INFORMATION::Type
+
+ + + + + +
+   + + +

+Unknown... +

+

+


The documentation for this struct was generated from the following file:
    +
  • memory.h
+
Generated on Sat Nov 4 23:36:53 2017 for PinCRT by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/structSIGACTION-members.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/structSIGACTION-members.html new file mode 100644 index 0000000..e6a1218 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/structSIGACTION-members.html @@ -0,0 +1,43 @@ + + +PinCRT: Member List + + + + +
+
+ +

SIGACTION Member List

This is the complete list of members for SIGACTION, including all inherited members.

+ + + + + + + +
_sa_handler (defined in SIGACTION)SIGACTION
_sa_handler_ptrSIGACTION
_sa_sigactionSIGACTION
_u (defined in SIGACTION)SIGACTION
sa_flagsSIGACTION
sa_mask (defined in SIGACTION)SIGACTION
sa_restorerSIGACTION


Generated on Sat Nov 4 23:36:53 2017 for PinCRT by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/structSIGACTION.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/structSIGACTION.html new file mode 100644 index 0000000..fa1fe7a --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/structSIGACTION.html @@ -0,0 +1,168 @@ + + +PinCRT: SIGACTION Struct Reference + + + + +
+
+ +

SIGACTION Struct Reference
+ +[Signals] +

#include <signals.h> +

+List of all members. + + + + + + + + + + + + + + + + + + +

Public Attributes

+union {
   void(*   _sa_handler )(int)
   void(*   _sa_sigaction )(int, void *, void *)
   void *   _sa_handler_ptr
_u
+SIGSET_T sa_mask
unsigned long sa_flags
void(* sa_restorer )(void)
+


Detailed Description

+Specifies an action to OS_SigAction() +

+


Member Data Documentation

+

+ + + + +
+ + + + +
void* SIGACTION::_sa_handler_ptr
+
+ + + + + +
+   + + +

+Signal handle function (new way). +

+

+

+ + + + +
+ + + + +
void(* SIGACTION::_sa_sigaction)(int, void *, void *)
+
+ + + + + +
+   + + +

+Signal handle function (old way). +

+

+

+ + + + +
+ + + + +
unsigned long SIGACTION::sa_flags
+
+ + + + + +
+   + + +

+Mask of signals to block during the handling of the signal. +

+

+

+ + + + +
+ + + + +
void(* SIGACTION::sa_restorer)(void)
+
+ + + + + +
+   + + +

+Additional flags (OS specific). +

+

+


The documentation for this struct was generated from the following file:
    +
  • signals.h
+
Generated on Sat Nov 4 23:36:53 2017 for PinCRT by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/struct__OS__APIS__MUTEX__TYPE-members.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/struct__OS__APIS__MUTEX__TYPE-members.html new file mode 100644 index 0000000..4feec3b --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/struct__OS__APIS__MUTEX__TYPE-members.html @@ -0,0 +1,42 @@ + + +PinCRT: Member List + + + + +
+
+ +

_OS_APIS_MUTEX_TYPE Member List

This is the complete list of members for _OS_APIS_MUTEX_TYPE, including all inherited members.

+ + + + + + +
depth (defined in _OS_APIS_MUTEX_TYPE)_OS_APIS_MUTEX_TYPE
event (defined in _OS_APIS_MUTEX_TYPE)_OS_APIS_MUTEX_TYPE
kind (defined in _OS_APIS_MUTEX_TYPE)_OS_APIS_MUTEX_TYPE
num_waiters (defined in _OS_APIS_MUTEX_TYPE)_OS_APIS_MUTEX_TYPE
spinlock (defined in _OS_APIS_MUTEX_TYPE)_OS_APIS_MUTEX_TYPE
spinlock_fork_count (defined in _OS_APIS_MUTEX_TYPE)_OS_APIS_MUTEX_TYPE


Generated on Sat Nov 4 23:36:53 2017 for PinCRT by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/struct__OS__APIS__MUTEX__TYPE.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/struct__OS__APIS__MUTEX__TYPE.html new file mode 100644 index 0000000..5e9eb11 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/struct__OS__APIS__MUTEX__TYPE.html @@ -0,0 +1,71 @@ + + +PinCRT: _OS_APIS_MUTEX_TYPE Struct Reference + + + + +
+
+ +

_OS_APIS_MUTEX_TYPE Struct Reference
+ +[Mutex] +

#include <mutex.h> +

+List of all members. + + + + + + + + + + + + + + +

Public Attributes

+OS_MUTEX_DEPTH kind
+OS_SPINLOCK_TYPE spinlock
+OS_EVENT event
+UINT32 num_waiters
+UINT32 depth
+UINT32 spinlock_fork_count
+


Detailed Description

+This type holds a representation of a mutex.

+

Availability:
    +
  • O/S: Windows, Linux & OS X*
  • CPU: All
+
+ +

+


The documentation for this struct was generated from the following file:
    +
  • mutex.h
+
Generated on Sat Nov 4 23:36:53 2017 for PinCRT by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/struct__OS__FILE__UNIQUE__ID-members.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/struct__OS__FILE__UNIQUE__ID-members.html new file mode 100644 index 0000000..298309f --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/struct__OS__FILE__UNIQUE__ID-members.html @@ -0,0 +1,37 @@ + + +PinCRT: Member List + + + + +
+
+ +

_OS_FILE_UNIQUE_ID Member List

This is the complete list of members for _OS_FILE_UNIQUE_ID, including all inherited members.

+ +
_reserved (defined in _OS_FILE_UNIQUE_ID)_OS_FILE_UNIQUE_ID


Generated on Sat Nov 4 23:36:53 2017 for PinCRT by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/struct__OS__FILE__UNIQUE__ID.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/struct__OS__FILE__UNIQUE__ID.html new file mode 100644 index 0000000..cec8784 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/struct__OS__FILE__UNIQUE__ID.html @@ -0,0 +1,52 @@ + + +PinCRT: _OS_FILE_UNIQUE_ID Struct Reference + + + + +
+
+ +

_OS_FILE_UNIQUE_ID Struct Reference
+ +[File] +

#include <file.h> +

+List of all members. + + + + +

Public Attributes

+UINT64 _reserved [2]
+


Detailed Description

+Machine unique ID for file +

+


The documentation for this struct was generated from the following file:
    +
  • file.h
+
Generated on Sat Nov 4 23:36:53 2017 for PinCRT by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/struct__OS__RETURN__CODE-members.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/struct__OS__RETURN__CODE-members.html new file mode 100644 index 0000000..c01742a --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/struct__OS__RETURN__CODE-members.html @@ -0,0 +1,38 @@ + + +PinCRT: Member List + + + + +
+
+ +

_OS_RETURN_CODE Member List

This is the complete list of members for _OS_RETURN_CODE, including all inherited members.

+ + +
generic_err_OS_RETURN_CODE
os_specific_err_OS_RETURN_CODE


Generated on Sat Nov 4 23:36:53 2017 for PinCRT by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/struct__OS__RETURN__CODE.html b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/struct__OS__RETURN__CODE.html new file mode 100644 index 0000000..643866d --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/struct__OS__RETURN__CODE.html @@ -0,0 +1,104 @@ + + +PinCRT: _OS_RETURN_CODE Struct Reference + + + + +
+
+ +

_OS_RETURN_CODE Struct Reference
+ +[Generic error codes] +

#include <os_return_codes.h> +

+List of all members. + + + + + + +

Public Attributes

OS_RETURN_CODE_GENERIC generic_err
int os_specific_err
+


Detailed Description

+Full error code returned from OS-APIs functions +

+


Member Data Documentation

+

+ + + + +
+ + + + +
OS_RETURN_CODE_GENERIC _OS_RETURN_CODE::generic_err
+
+ + + + + +
+   + + +

+Generic OS-APIs error. +

+

+

+ + + + +
+ + + + +
int _OS_RETURN_CODE::os_specific_err
+
+ + + + + +
+   + + +

+OS specific error code as returned from the system call. +

+

+


The documentation for this struct was generated from the following file:
    +
  • os_return_codes.h
+
Generated on Sat Nov 4 23:36:53 2017 for PinCRT by  + +doxygen 1.4.6
+ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/tab_b.gif b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/tab_b.gif new file mode 100644 index 0000000..0d62348 Binary files /dev/null and b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/tab_b.gif differ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/tab_l.gif b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/tab_l.gif new file mode 100644 index 0000000..9b1e633 Binary files /dev/null and b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/tab_l.gif differ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/tab_r.gif b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/tab_r.gif new file mode 100644 index 0000000..ce9dd9f Binary files /dev/null and b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/tab_r.gif differ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/tabs.css b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/tabs.css new file mode 100644 index 0000000..a61552a --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/doc/html/tabs.css @@ -0,0 +1,102 @@ +/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */ + +DIV.tabs +{ + float : left; + width : 100%; + background : url("tab_b.gif") repeat-x bottom; + margin-bottom : 4px; +} + +DIV.tabs UL +{ + margin : 0px; + padding-left : 10px; + list-style : none; +} + +DIV.tabs LI, DIV.tabs FORM +{ + display : inline; + margin : 0px; + padding : 0px; +} + +DIV.tabs FORM +{ + float : right; +} + +DIV.tabs A +{ + float : left; + background : url("tab_r.gif") no-repeat right top; + border-bottom : 1px solid #84B0C7; + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + +DIV.tabs A:hover +{ + background-position: 100% -150px; +} + +DIV.tabs A:link, DIV.tabs A:visited, +DIV.tabs A:active, DIV.tabs A:hover +{ + color: #1A419D; +} + +DIV.tabs SPAN +{ + float : left; + display : block; + background : url("tab_l.gif") no-repeat left top; + padding : 5px 9px; + white-space : nowrap; +} + +DIV.tabs INPUT +{ + float : right; + display : inline; + font-size : 1em; +} + +DIV.tabs TD +{ + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + + + +/* Commented Backslash Hack hides rule from IE5-Mac \*/ +DIV.tabs SPAN {float : none;} +/* End IE5-Mac hack */ + +DIV.tabs A:hover SPAN +{ + background-position: 0% -150px; +} + +DIV.tabs LI#current A +{ + background-position: 100% -150px; + border-width : 0px; +} + +DIV.tabs LI#current SPAN +{ + background-position: 0% -150px; + padding-bottom : 6px; +} + +DIV.nav +{ + background : none; + border : none; + border-bottom : 1px solid #84B0C7; +} diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/alloca.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/alloca.h new file mode 100644 index 0000000..7fbbaa5 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/alloca.h @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ +#ifndef _ALLOCA_H +#define _ALLOCA_H + +#include + +# ifdef _MSC_VER +# define alloca(size) _alloca(size) + +__BEGIN_DECLS + +void* __cdecl _alloca(size_t _Size); + +__END_DECLS + +#else +# define alloca(size) __builtin_alloca(size) +#endif + +#endif /* _ALLOCA_H */ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/amd64/machine/fenv.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/amd64/machine/fenv.h new file mode 100644 index 0000000..c2b25ed --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/amd64/machine/fenv.h @@ -0,0 +1,95 @@ +/*- + * Copyright (c) 2004-2005 David Schultz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef _AMD64_FENV_H_ +#define _AMD64_FENV_H_ + +#include + +__BEGIN_DECLS + +/* + * Each symbol representing a floating point exception expands to an integer + * constant expression with values, such that bitwise-inclusive ORs of _all + * combinations_ of the constants result in distinct values. + * + * We use such values that allow direct bitwise operations on FPU/SSE registers. + */ +#define FE_INVALID 0x01 +#define FE_DENORMAL 0x02 +#define FE_DIVBYZERO 0x04 +#define FE_OVERFLOW 0x08 +#define FE_UNDERFLOW 0x10 +#define FE_INEXACT 0x20 + +/* + * The following symbol is simply the bitwise-inclusive OR of all floating-point + * exception constants defined above. + */ +#define FE_ALL_EXCEPT (FE_INVALID | FE_DENORMAL | FE_DIVBYZERO | \ + FE_OVERFLOW | FE_UNDERFLOW | FE_INEXACT) + +/* + * Each symbol representing the rounding direction, expands to an integer + * constant expression whose value is distinct non-negative value. + * + * We use such values that allow direct bitwise operations on FPU/SSE registers. + */ +#define FE_TONEAREST 0x000 +#define FE_DOWNWARD 0x400 +#define FE_UPWARD 0x800 +#define FE_TOWARDZERO 0xc00 + +/* + * fenv_t represents the entire floating-point environment. + */ +typedef struct { + struct { + __uint32_t __control; /* Control word register */ + __uint32_t __status; /* Status word register */ + __uint32_t __tag; /* Tag word register */ + __uint32_t __others[4]; /* EIP, Pointer Selector, etc */ + } __x87; + __uint32_t __mxcsr; /* Control, status register */ +} fenv_t; + +/* + * fexcept_t represents the floating-point status flags collectively, including + * any status the implementation associates with the flags. + * + * A floating-point status flag is a system variable whose value is set (but + * never cleared) when a floating-point exception is raised, which occurs as a + * side effect of exceptional floating-point arithmetic to provide auxiliary + * information. + * + * A floating-point control mode is a system variable whose value may be set by + * the user to affect the subsequent behavior of floating-point arithmetic. + */ +typedef __uint32_t fexcept_t; + +__END_DECLS + +#endif /* !_AMD64_FENV_H_ */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/android/api-level.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/android/api-level.h new file mode 100644 index 0000000..2d2f096 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/android/api-level.h @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef ANDROID_API_LEVEL_H +#define ANDROID_API_LEVEL_H + +/* + * Magic version number for a current development build, which has + * not yet turned into an official release. + */ +#define __ANDROID_API__ 10000 + +#endif /* ANDROID_API_LEVEL_H */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/android/dlext.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/android/dlext.h new file mode 100644 index 0000000..5c3a206 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/android/dlext.h @@ -0,0 +1,77 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __ANDROID_DLEXT_H__ +#define __ANDROID_DLEXT_H__ + +#include +#include + +__BEGIN_DECLS + +/* bitfield definitions for android_dlextinfo.flags */ +enum { + /* When set, the reserved_addr and reserved_size fields must point to an + * already-reserved region of address space which will be used to load the + * library if it fits. If the reserved region is not large enough, the load + * will fail. + */ + ANDROID_DLEXT_RESERVED_ADDRESS = 0x1, + + /* As DLEXT_RESERVED_ADDRESS, but if the reserved region is not large enough, + * the linker will choose an available address instead. + */ + ANDROID_DLEXT_RESERVED_ADDRESS_HINT = 0x2, + + /* When set, write the GNU RELRO section of the mapped library to relro_fd + * after relocation has been performed, to allow it to be reused by another + * process loading the same library at the same address. This implies + * ANDROID_DLEXT_USE_RELRO. + */ + ANDROID_DLEXT_WRITE_RELRO = 0x4, + + /* When set, compare the GNU RELRO section of the mapped library to relro_fd + * after relocation has been performed, and replace any relocated pages that + * are identical with a version mapped from the file. + */ + ANDROID_DLEXT_USE_RELRO = 0x8, + + /* Instruct dlopen to use library_fd instead of opening file by name. + * The filename parameter is still used to identify the library. + */ + ANDROID_DLEXT_USE_LIBRARY_FD = 0x10, + + /* Mask of valid bits */ + ANDROID_DLEXT_VALID_FLAG_BITS = ANDROID_DLEXT_RESERVED_ADDRESS | + ANDROID_DLEXT_RESERVED_ADDRESS_HINT | + ANDROID_DLEXT_WRITE_RELRO | + ANDROID_DLEXT_USE_RELRO | + ANDROID_DLEXT_USE_LIBRARY_FD, +}; + +typedef struct { + uint64_t flags; + void* reserved_addr; + size_t reserved_size; + int relro_fd; + int library_fd; +} android_dlextinfo; + +extern void* android_dlopen_ext(const char* filename, int flag, const android_dlextinfo* extinfo); + +__END_DECLS + +#endif /* __ANDROID_DLEXT_H__ */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/android/set_abort_message.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/android/set_abort_message.h new file mode 100644 index 0000000..4b3d82b --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/android/set_abort_message.h @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef _SET_ABORT_MESSAGE_H +#define _SET_ABORT_MESSAGE_H + +#include + +__BEGIN_DECLS + +void android_set_abort_message(const char* msg); + +__END_DECLS + +#endif // _SET_ABORT_MESSAGE_H diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/ar.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/ar.h new file mode 100644 index 0000000..835290b --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/ar.h @@ -0,0 +1,66 @@ +/* $OpenBSD: ar.h,v 1.3 2003/06/02 19:34:12 millert Exp $ */ +/* $NetBSD: ar.h,v 1.4 1994/10/26 00:55:43 cgd Exp $ */ + +/*- + * Copyright (c) 1991, 1993 + * The Regents of the University of California. All rights reserved. + * (c) UNIX System Laboratories, Inc. + * All or some portions of this file are derived from material licensed + * to the University of California by American Telephone and Telegraph + * Co. or Unix System Laboratories, Inc. and are reproduced herein with + * the permission of UNIX System Laboratories, Inc. + * + * This code is derived from software contributed to Berkeley by + * Hugh Smith at The University of Guelph. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)ar.h 8.2 (Berkeley) 1/21/94 + */ + +#ifndef _AR_H_ +#define _AR_H_ + +/* Pre-4BSD archives had these magic numbers in them. */ +#define OARMAG1 0177555 +#define OARMAG2 0177545 + +#define ARMAG "!\n" /* ar "magic number" */ +#define SARMAG 8 /* strlen(ARMAG); */ + +#define AR_EFMT1 "#1/" /* extended format #1 */ + +struct ar_hdr { + char ar_name[16]; /* name */ + char ar_date[12]; /* modification time */ + char ar_uid[6]; /* user id */ + char ar_gid[6]; /* group id */ + char ar_mode[8]; /* octal file permissions */ + char ar_size[10]; /* size in bytes */ +#define ARFMAG "`\n" + char ar_fmag[2]; /* consistency check */ +}; + +#endif /* !_AR_H_ */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arch-x86/machine/asm.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arch-x86/machine/asm.h new file mode 100644 index 0000000..943f9dd --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arch-x86/machine/asm.h @@ -0,0 +1,54 @@ +/* $NetBSD: asm.h,v 1.40 2011/06/16 13:16:20 joerg Exp $ */ + +/*- + * Copyright (c) 1990 The Regents of the University of California. + * All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * William Jolitz. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)asm.h 5.5 (Berkeley) 5/7/91 + */ + +#ifndef _I386_ASM_H_ +#define _I386_ASM_H_ + +#define PIC_PROLOGUE \ + pushl %ebx; \ + call 666f; \ +666: \ + popl %ebx; \ + addl $_GLOBAL_OFFSET_TABLE_+[.-666b], %ebx +#define PIC_EPILOGUE \ + popl %ebx +#define PIC_PLT(x) x@PLT +#define PIC_GOT(x) x@GOT(%ebx) +#define PIC_GOTOFF(x) x@GOTOFF(%ebx) + +#define __bionic_asm_align 16 + +#endif /* !_I386_ASM_H_ */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arch-x86/machine/elf_machdep.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arch-x86/machine/elf_machdep.h new file mode 100644 index 0000000..4bce933 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arch-x86/machine/elf_machdep.h @@ -0,0 +1,64 @@ +/* $NetBSD: elf_machdep.h,v 1.10 2009/05/30 05:56:52 skrll Exp $ */ + +#define ELF32_MACHDEP_ENDIANNESS ELFDATA2LSB +#define ELF32_MACHDEP_ID_CASES \ + case EM_386: \ + case EM_486: \ + break; + +#define ELF64_MACHDEP_ENDIANNESS XXX /* break compilation */ +#define ELF64_MACHDEP_ID_CASES \ + /* no 64-bit ELF machine types supported */ + +#define ELF32_MACHDEP_ID EM_386 + +#define ARCH_ELFSIZE 32 /* MD native binary size */ + +/* i386 relocations */ +#define R_386_NONE 0 +#define R_386_32 1 +#define R_386_PC32 2 +#define R_386_GOT32 3 +#define R_386_PLT32 4 +#define R_386_COPY 5 +#define R_386_GLOB_DAT 6 +#define R_386_JMP_SLOT 7 +#define R_386_RELATIVE 8 +#define R_386_GOTOFF 9 +#define R_386_GOTPC 10 + +/* TLS relocations */ +#define R_386_TLS_TPOFF 14 +#define R_386_TLS_IE 15 +#define R_386_TLS_GOTIE 16 +#define R_386_TLS_LE 17 +#define R_386_TLS_GD 18 +#define R_386_TLS_LDM 19 + +/* The following relocations are GNU extensions. */ +#define R_386_16 20 +#define R_386_PC16 21 +#define R_386_8 22 +#define R_386_PC8 23 + +/* More TLS relocations */ +#define R_386_TLS_GD_32 24 +#define R_386_TLS_GD_PUSH 25 +#define R_386_TLS_GD_CALL 26 +#define R_386_TLS_GD_POP 27 +#define R_386_TLS_LDM_32 28 +#define R_386_TLS_LDM_PUSH 29 +#define R_386_TLS_LDM_CALL 30 +#define R_386_TLS_LDM_POP 31 +#define R_386_TLS_LDO_32 32 +#define R_386_TLS_IE_32 33 +#define R_386_TLS_LE_32 34 +#define R_386_TLS_DTPMOD32 35 +#define R_386_TLS_DTPOFF32 36 +#define R_386_TLS_TPOFF32 37 +#define R_386_TLS_GOTDESC 39 +#define R_386_TLS_DESC_CALL 40 +#define R_386_TLS_DESC 41 +#define R_386_IRELATIVE 42 + +#define R_TYPE(name) __CONCAT(R_386_,name) diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arch-x86/machine/endian.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arch-x86/machine/endian.h new file mode 100644 index 0000000..e1506b1 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arch-x86/machine/endian.h @@ -0,0 +1,61 @@ +/* $OpenBSD: endian.h,v 1.17 2011/03/12 04:03:04 guenther Exp $ */ + +/*- + * Copyright (c) 1997 Niklas Hallqvist. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _MACHINE_ENDIAN_H_ +#define _MACHINE_ENDIAN_H_ + +#ifdef __GNUC__ + +#define __swap32md(x) __statement({ \ + uint32_t __swap32md_x = (x); \ + \ + __asm ("bswap %0" : "+r" (__swap32md_x)); \ + __swap32md_x; \ +}) + +#define __swap64md(x) __statement({ \ + uint64_t __swap64md_x = (x); \ + \ + (uint64_t)__swap32md(__swap64md_x >> 32) | \ + (uint64_t)__swap32md(__swap64md_x & 0xffffffff) << 32; \ +}) +#define __swap16md(x) __statement({ \ + uint16_t __swap16md_x = (x); \ + \ + __asm ("rorw $8, %w0" : "+r" (__swap16md_x)); \ + __swap16md_x; \ +}) + +/* Tell sys/endian.h we have MD variants of the swap macros. */ +#define MD_SWAP + +#endif /* __GNUC__ */ + +#define _BYTE_ORDER _LITTLE_ENDIAN +#include +#include + +#endif /* _MACHINE_ENDIAN_H_ */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arch-x86/machine/exec.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arch-x86/machine/exec.h new file mode 100644 index 0000000..d091741 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arch-x86/machine/exec.h @@ -0,0 +1,51 @@ +/* $OpenBSD: exec.h,v 1.9 2003/04/17 03:42:14 drahn Exp $ */ +/* $NetBSD: exec.h,v 1.6 1994/10/27 04:16:05 cgd Exp $ */ + +/* + * Copyright (c) 1993 Christopher G. Demetriou + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _I386_EXEC_H_ +#define _I386_EXEC_H_ + +#define __LDPGSZ 4096 + +#define NATIVE_EXEC_ELF + +#define ARCH_ELFSIZE 32 + +#define ELF_TARG_CLASS ELFCLASS32 +#define ELF_TARG_DATA ELFDATA2LSB +#define ELF_TARG_MACH EM_386 /* XXX - EM_486 is currently unused + by all OSs/compilers/linkers */ + +#define _NLIST_DO_AOUT +#define _NLIST_DO_ELF + +#define _KERN_DO_AOUT +#define _KERN_DO_ELF + +#endif /* _I386_EXEC_H_ */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arch-x86/machine/setjmp.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arch-x86/machine/setjmp.h new file mode 100644 index 0000000..6db8a82 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arch-x86/machine/setjmp.h @@ -0,0 +1,16 @@ +/* $OpenBSD: setjmp.h,v 1.2 2000/08/05 22:07:32 niklas Exp $ */ +/* $NetBSD: setjmp.h,v 1.1 1994/12/20 10:36:43 cgd Exp $ */ + +/* + * machine/setjmp.h: machine dependent setjmp-related information. + */ + +#ifdef TARGET_WINDOWS + +#define _JBLEN 6 /* size, in void*s, of a jmp_buf */ + +#else + +#define _JBLEN 7 /* size, in void*s, of a jmp_buf */ + +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arch-x86_64/machine/asm.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arch-x86_64/machine/asm.h new file mode 100644 index 0000000..28cd08f --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arch-x86_64/machine/asm.h @@ -0,0 +1,45 @@ +/* $NetBSD: asm.h,v 1.18 2013/09/12 15:36:17 joerg Exp $ */ + +/*- + * Copyright (c) 1990 The Regents of the University of California. + * All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * William Jolitz. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)asm.h 5.5 (Berkeley) 5/7/91 + */ + +#ifndef _AMD64_ASM_H_ +#define _AMD64_ASM_H_ + +#define PIC_PLT(x) x@PLT +#define PIC_GOT(x) x@GOTPCREL(%rip) + +#define __bionic_asm_align 16 + +#endif /* !_AMD64_ASM_H_ */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arch-x86_64/machine/elf_machdep.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arch-x86_64/machine/elf_machdep.h new file mode 100644 index 0000000..bf1f273 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arch-x86_64/machine/elf_machdep.h @@ -0,0 +1,57 @@ +/* $NetBSD: elf_machdep.h,v 1.4 2010/03/18 08:28:33 cegger Exp $ */ + +#if !defined __i386__ + +#define ELF32_MACHDEP_ENDIANNESS ELFDATA2LSB +#define ELF32_MACHDEP_ID_CASES \ + case EM_386: \ + break; + +#define ELF64_MACHDEP_ENDIANNESS ELFDATA2LSB +#define ELF64_MACHDEP_ID_CASES \ + case EM_X86_64: \ + break; + +#define ELF32_MACHDEP_ID EM_386 +#define ELF64_MACHDEP_ID EM_X86_64 + +#define ARCH_ELFSIZE 64 /* MD native binary size */ + +/* x86-64 relocations */ + +#define R_X86_64_NONE 0 +#define R_X86_64_64 1 +#define R_X86_64_PC32 2 +#define R_X86_64_GOT32 3 +#define R_X86_64_PLT32 4 +#define R_X86_64_COPY 5 +#define R_X86_64_GLOB_DAT 6 +#define R_X86_64_JUMP_SLOT 7 +#define R_X86_64_RELATIVE 8 +#define R_X86_64_GOTPCREL 9 +#define R_X86_64_32 10 +#define R_X86_64_32S 11 +#define R_X86_64_16 12 +#define R_X86_64_PC16 13 +#define R_X86_64_8 14 +#define R_X86_64_PC8 15 + +/* TLS relocations */ +#define R_X86_64_DTPMOD64 16 +#define R_X86_64_DTPOFF64 17 +#define R_X86_64_TPOFF64 18 +#define R_X86_64_TLSGD 19 +#define R_X86_64_TLSLD 20 +#define R_X86_64_DTPOFF32 21 +#define R_X86_64_GOTTPOFF 22 +#define R_X86_64_TPOFF32 23 + +#define R_X86_64_IRELATIVE 37 + +#define R_TYPE(name) __CONCAT(R_X86_64_,name) + +#else /* !__i386__ */ + +#include + +#endif /* !__i386__ */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arch-x86_64/machine/endian.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arch-x86_64/machine/endian.h new file mode 100644 index 0000000..7889a37 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arch-x86_64/machine/endian.h @@ -0,0 +1,61 @@ +/* $OpenBSD: endian.h,v 1.5 2011/03/12 22:27:48 guenther Exp $ */ + +/*- + * Copyright (c) 1997 Niklas Hallqvist. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _MACHINE_ENDIAN_H_ +#define _MACHINE_ENDIAN_H_ + +#ifdef __GNUC__ + +#define __swap32md(x) __statement({ \ + u_int32_t __swap32md_x = (x); \ + \ + __asm ("bswap %0" : "+r" (__swap32md_x)); \ + __swap32md_x; \ +}) + +#define __swap64md(x) __statement({ \ + u_int64_t __swap64md_x = (x); \ + \ + __asm ("bswapq %0" : "+r" (__swap64md_x)); \ + __swap64md_x; \ +}) + +#define __swap16md(x) __statement({ \ + u_int16_t __swap16md_x = (x); \ + \ + __asm ("rorw $8, %w0" : "+r" (__swap16md_x)); \ + __swap16md_x; \ +}) + +/* Tell sys/endian.h we have MD variants of the swap macros. */ +#define MD_SWAP + +#endif /* __GNUC__ */ + +#define _BYTE_ORDER _LITTLE_ENDIAN +#include + +#endif /* _MACHINE_ENDIAN_H_ */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arch-x86_64/machine/exec.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arch-x86_64/machine/exec.h new file mode 100644 index 0000000..829351c --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arch-x86_64/machine/exec.h @@ -0,0 +1,20 @@ +/* $OpenBSD: exec.h,v 1.4 2012/09/11 15:44:17 deraadt Exp $ */ +/* + * Written by Artur Grabowski Public Domain + */ + +#ifndef _MACHINE_EXEC_H_ +#define _MACHINE_EXEC_H_ + +#define __LDPGSZ 4096 + +#define ARCH_ELFSIZE 64 + +#define ELF_TARG_CLASS ELFCLASS64 +#define ELF_TARG_DATA ELFDATA2LSB +#define ELF_TARG_MACH EM_X86_64 + +#define _NLIST_DO_ELF +#define _KERN_DO_ELF64 + +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arch-x86_64/machine/fpu.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arch-x86_64/machine/fpu.h new file mode 100644 index 0000000..46b26b0 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arch-x86_64/machine/fpu.h @@ -0,0 +1,74 @@ +/* $OpenBSD: fpu.h,v 1.9 2011/03/23 16:54:34 pirofti Exp $ */ +/* $NetBSD: fpu.h,v 1.1 2003/04/26 18:39:40 fvdl Exp $ */ + +#ifndef _MACHINE_FPU_H_ +#define _MACHINE_FPU_H_ + +#include + +/* + * amd64 only uses the extended save/restore format used + * by fxsave/fsrestore, to always deal with the SSE registers, + * which are part of the ABI to pass floating point values. + * Must be stored in memory on a 16-byte boundary. + */ + +#ifdef _MSC_VER +# pragma pack(push,1) +#endif +struct fxsave64 { + u_int16_t fx_fcw; + u_int16_t fx_fsw; + u_int8_t fx_ftw; + u_int8_t fx_unused1; + u_int16_t fx_fop; + u_int64_t fx_rip; + u_int64_t fx_rdp; + u_int32_t fx_mxcsr; + u_int32_t fx_mxcsr_mask; + u_int64_t fx_st[8][2]; /* 8 normal FP regs */ + u_int64_t fx_xmm[16][2]; /* 16 SSE2 registers */ + u_int8_t fx_unused3[96]; +} +#ifdef _MSC_VER +# pragma pack(pop) +#else +__packed +#endif +; + +struct savefpu { + struct fxsave64 fp_fxsave; /* see above */ + u_int16_t fp_ex_sw; /* saved status from last exception */ + u_int16_t fp_ex_tw; /* saved tag from last exception */ +}; + +/* + * The i387 defaults to Intel extended precision mode and round to nearest, + * with all exceptions masked. + */ +#define __INITIAL_NPXCW__ 0x037f +#define __INITIAL_MXCSR__ 0x1f80 +#define __INITIAL_MXCSR_MASK__ 0xffbf + +#ifdef _KERNEL +/* + * XXX + */ +struct trapframe; +struct cpu_info; + +extern uint32_t fpu_mxcsr_mask; + +void fpuinit(struct cpu_info *); +void fpudrop(void); +void fpudiscard(struct proc *); +void fputrap(struct trapframe *); +void fpusave_proc(struct proc *, int); +void fpusave_cpu(struct cpu_info *, int); +void fpu_kernel_enter(void); +void fpu_kernel_exit(void); + +#endif + +#endif /* _MACHINE_FPU_H_ */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arch-x86_64/machine/setjmp.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arch-x86_64/machine/setjmp.h new file mode 100644 index 0000000..7f77d10 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arch-x86_64/machine/setjmp.h @@ -0,0 +1,43 @@ +/* $OpenBSD: setjmp.h,v 1.1 2004/01/28 01:39:39 mickey Exp $ */ +/* $NetBSD: setjmp.h,v 1.1 2003/04/26 18:39:47 fvdl Exp $ */ + +/* + * machine/setjmp.h: machine dependent setjmp-related information. + * These are only the callee-saved registers, code calling setjmp + * will expect the rest to be clobbered anyway. + */ + +#define _JB_RBX 0 +#define _JB_RBP 1 +#define _JB_R12 2 +#define _JB_R13 3 +#define _JB_R14 4 +#define _JB_R15 5 +#define _JB_RSP 6 +#define _JB_PC 7 + +#ifdef TARGET_WINDOWS + +# define _JB_RSI 8 +# define _JB_RDI 9 +# define _JB_XMM6 10 +# define _JB_XMM7 12 +# define _JB_XMM8 14 +# define _JB_XMM9 16 +# define _JB_XMM10 18 +# define _JB_XMM11 20 +# define _JB_XMM12 22 +# define _JB_XMM13 24 +# define _JB_XMM14 26 +# define _JB_XMM15 28 + +# define _JBLEN 32 /* size, in void*s, of a jmp_buf */ + +#else + +# define _JB_SIGFLAG 8 +# define _JB_SIGMASK 9 + +# define _JBLEN 11 /* size, in void*s, of a jmp_buf */ + +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arm/machine/fenv.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arm/machine/fenv.h new file mode 100644 index 0000000..0e483e3 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arm/machine/fenv.h @@ -0,0 +1,63 @@ +/*- + * Copyright (c) 2004-2005 David Schultz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD: src/lib/msun/arm/fenv.h,v 1.5 2005/03/16 19:03:45 das Exp $ + */ + +/* + * Rewritten for Android. + * + * The ARM FPSCR is described here: + * http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0344b/Chdfafia.html + */ + +#ifndef _ARM_FENV_H_ +#define _ARM_FENV_H_ + +#include + +__BEGIN_DECLS + +typedef __uint32_t fenv_t; +typedef __uint32_t fexcept_t; + +/* Exception flags. */ +#define FE_INVALID 0x01 +#define FE_DIVBYZERO 0x02 +#define FE_OVERFLOW 0x04 +#define FE_UNDERFLOW 0x08 +#define FE_INEXACT 0x10 +#define FE_ALL_EXCEPT (FE_DIVBYZERO | FE_INEXACT | FE_INVALID | \ + FE_OVERFLOW | FE_UNDERFLOW) + +/* Rounding modes. */ +#define FE_TONEAREST 0x0 +#define FE_UPWARD 0x1 +#define FE_DOWNWARD 0x2 +#define FE_TOWARDZERO 0x3 + +__END_DECLS + +#endif /* !_ARM_FENV_H_ */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arm64/machine/fenv.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arm64/machine/fenv.h new file mode 100644 index 0000000..a8568b8 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arm64/machine/fenv.h @@ -0,0 +1,102 @@ +/*- + * Copyright (c) 2004-2005 David Schultz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD: src/lib/msun/arm/fenv.h,v 1.5 2005/03/16 19:03:45 das Exp $ + */ + +/* + * In ARMv8, AArch64 state, floating-point operation is controlled by: + * + * * FPCR - 32Bit Floating-Point Control Register: + * * [31:27] - Reserved, Res0; + * * [26] - AHP, Alternative half-precision control bit; + * * [25] - DN, Default NaN mode control bit; + * * [24] - FZ, Flush-to-zero mode control bit; + * * [23:22] - RMode, Rounding Mode control field: + * * 00 - Round to Nearest (RN) mode; + * * 01 - Round towards Plus Infinity (RP) mode; + * * 10 - Round towards Minus Infinity (RM) mode; + * * 11 - Round towards Zero (RZ) mode. + * * [21:20] - Stride, ignored during AArch64 execution; + * * [19] - Reserved, Res0; + * * [18:16] - Len, ignored during AArch64 execution; + * * [15] - IDE, Input Denormal exception trap; + * * [14:13] - Reserved, Res0; + * * [12] - IXE, Inexact exception trap; + * * [11] - UFE, Underflow exception trap; + * * [10] - OFE, Overflow exception trap; + * * [9] - DZE, Division by Zero exception; + * * [8] - IOE, Invalid Operation exception; + * * [7:0] - Reserved, Res0. + * + * * FPSR - 32Bit Floating-Point Status Register: + * * [31] - N, Negative condition flag for AArch32 (AArch64 sets PSTATE.N); + * * [30] - Z, Zero condition flag for AArch32 (AArch64 sets PSTATE.Z); + * * [29] - C, Carry conditon flag for AArch32 (AArch64 sets PSTATE.C); + * * [28] - V, Overflow conditon flag for AArch32 (AArch64 sets PSTATE.V); + * * [27] - QC, Cumulative saturation bit, Advanced SIMD only; + * * [26:8] - Reserved, Res0; + * * [7] - IDC, Input Denormal cumulative exception; + * * [6:5] - Reserved, Res0; + * * [4] - IXC, Inexact cumulative exception; + * * [3] - UFC, Underflow cumulative exception; + * * [2] - OFC, Overflow cumulative exception; + * * [1] - DZC, Division by Zero cumulative exception; + * * [0] - IOC, Invalid Operation cumulative exception. + */ + +#ifndef _ARM64_FENV_H_ +#define _ARM64_FENV_H_ + +#include + +__BEGIN_DECLS + +typedef struct { + __uint32_t __control; /* FPCR, Floating-point Control Register */ + __uint32_t __status; /* FPSR, Floating-point Status Register */ +} fenv_t; + +typedef __uint32_t fexcept_t; + +/* Exception flags. */ +#define FE_INVALID 0x01 +#define FE_DIVBYZERO 0x02 +#define FE_OVERFLOW 0x04 +#define FE_UNDERFLOW 0x08 +#define FE_INEXACT 0x10 +#define FE_DENORMAL 0x80 +#define FE_ALL_EXCEPT (FE_DIVBYZERO | FE_INEXACT | FE_INVALID | \ + FE_OVERFLOW | FE_UNDERFLOW | FE_DENORMAL) + +/* Rounding modes. */ +#define FE_TONEAREST 0x0 +#define FE_UPWARD 0x1 +#define FE_DOWNWARD 0x2 +#define FE_TOWARDZERO 0x3 + +__END_DECLS + +#endif /* !_ARM64_FENV_H_ */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arpa/inet.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arpa/inet.h new file mode 100644 index 0000000..86265bf --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arpa/inet.h @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef _ARPA_INET_H_ +#define _ARPA_INET_H_ + +#include +#include +#include + +__BEGIN_DECLS + +in_addr_t inet_addr(const char*); +int inet_aton(const char*, struct in_addr*); +in_addr_t inet_lnaof(struct in_addr); +struct in_addr inet_makeaddr(in_addr_t, in_addr_t); +in_addr_t inet_netof(struct in_addr); +in_addr_t inet_network(const char*); +char* inet_ntoa(struct in_addr); +const char* inet_ntop(int, const void*, char*, socklen_t); +unsigned int inet_nsap_addr(const char*, unsigned char*, int); +char* inet_nsap_ntoa(int, const unsigned char*, char*); +int inet_pton(int, const char*, void*); + +__END_DECLS + +#endif /* _ARPA_INET_H_ */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arpa/nameser.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arpa/nameser.h new file mode 100644 index 0000000..a87ac91 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arpa/nameser.h @@ -0,0 +1,668 @@ +/* $NetBSD: nameser.h,v 1.25 2009/04/12 17:07:34 christos Exp $ */ + +/* + * Portions Copyright (C) 2004, 2005, 2008, 2009 Internet Systems Consortium, Inc. ("ISC") + * Portions Copyright (C) 1996-2003 Internet Software Consortium. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/* + * Copyright (c) 1983, 1989, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * Id: nameser.h,v 1.16 2009/03/03 01:52:48 each Exp + */ + +#ifndef _ARPA_NAMESER_H_ +#define _ARPA_NAMESER_H_ + +#define BIND_4_COMPAT + +#include +#include + +/* + * Revision information. This is the release date in YYYYMMDD format. + * It can change every day so the right thing to do with it is use it + * in preprocessor commands such as "#if (__NAMESER > 19931104)". Do not + * compare for equality; rather, use it to determine whether your libbind.a + * contains a new enough lib/nameser/ to support the feature you need. + */ + +#define __NAMESER 20090302 /*%< New interface version stamp. */ + +/* + * Define constants based on RFC0883, RFC1034, RFC 1035 + */ +#define NS_PACKETSZ 512 /* default UDP packet size */ +#define NS_MAXDNAME 1025 /* maximum domain name (presentation format)*/ +#define NS_MAXMSG 65535 /* maximum message size */ +#define NS_MAXCDNAME 255 /* maximum compressed domain name */ +#define NS_MAXLABEL 63 /* maximum length of domain label */ +#define NS_MAXLABELS 128 /* theoretical max #/labels per domain name */ +#define NS_MAXNNAME 256 /* maximum uncompressed (binary) domain name*/ +#define NS_MAXPADDR (sizeof "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff") +#define NS_HFIXEDSZ 12 /* #/bytes of fixed data in header */ +#define NS_QFIXEDSZ 4 /* #/bytes of fixed data in query */ +#define NS_RRFIXEDSZ 10 /* #/bytes of fixed data in r record */ +#define NS_INT32SZ 4 /* #/bytes of data in a uint32_t */ +#define NS_INT16SZ 2 /* #/bytes of data in a uint16_t */ +#define NS_INT8SZ 1 /* #/bytes of data in a uint8_t */ +#define NS_INADDRSZ 4 /* IPv4 T_A */ +#define NS_IN6ADDRSZ 16 /* IPv6 T_AAAA */ +#define NS_CMPRSFLGS 0xc0 /* Flag bits indicating name compression. */ +#define NS_DEFAULTPORT 53 /* For both TCP and UDP. */ + +/* + * These can be expanded with synonyms, just keep ns_parse.c:ns_parserecord() + * in synch with it. + */ +typedef enum __ns_sect { + ns_s_qd = 0, /* Query: Question. */ + ns_s_zn = 0, /* Update: Zone. */ + ns_s_an = 1, /* Query: Answer. */ + ns_s_pr = 1, /* Update: Prerequisites. */ + ns_s_ns = 2, /* Query: Name servers. */ + ns_s_ud = 2, /* Update: Update. */ + ns_s_ar = 3, /* Query|Update: Additional records. */ + ns_s_max = 4 +} ns_sect; + +/* + * Network name (compressed or not) type. Equivilent to a pointer when used + * in a function prototype. Can be const'd. + */ +typedef u_char ns_nname[NS_MAXNNAME]; +typedef const u_char *ns_nname_ct; +typedef u_char *ns_nname_t; + +struct ns_namemap { ns_nname_ct base; int len; }; +typedef struct ns_namemap *ns_namemap_t; +typedef const struct ns_namemap *ns_namemap_ct; + +/* + * This is a message handle. It is caller allocated and has no dynamic data. + * This structure is intended to be opaque to all but ns_parse.c, thus the + * leading _'s on the member names. Use the accessor functions, not the _'s. + */ +typedef struct __ns_msg { + const u_char *_msg, *_eom; + uint16_t _id, _flags, _counts[ns_s_max]; + const u_char *_sections[ns_s_max]; + ns_sect _sect; + int _rrnum; + const u_char *_msg_ptr; +} ns_msg; +/* + * This is a newmsg handle, used when constructing new messages with + * ns_newmsg_init, et al. + */ +struct ns_newmsg { + ns_msg msg; + const u_char *dnptrs[25]; + const u_char **lastdnptr; +}; +typedef struct ns_newmsg ns_newmsg; + +/* Private data structure - do not use from outside library. */ +struct _ns_flagdata { int mask, shift; }; +extern const struct _ns_flagdata _ns_flagdata[]; + +/* Accessor macros - this is part of the public interface. */ + +#define ns_msg_id(handle) ((handle)._id + 0) +#define ns_msg_base(handle) ((handle)._msg + 0) +#define ns_msg_end(handle) ((handle)._eom + 0) +#define ns_msg_size(handle) ((size_t)((handle)._eom - (handle)._msg)) +#define ns_msg_count(handle, section) ((handle)._counts[section] + 0) + +/* + * This is a parsed record. It is caller allocated and has no dynamic data. + */ +typedef struct __ns_rr { + char name[NS_MAXDNAME]; + uint16_t type; + uint16_t rr_class; + uint32_t ttl; + uint16_t rdlength; + const u_char * rdata; +} ns_rr; + +/* + * Same thing, but using uncompressed network binary names, and real C types. + */ +typedef struct __ns_rr2 { + ns_nname nname; + size_t nnamel; + int type; + int rr_class; + u_int ttl; + int rdlength; + const u_char * rdata; +} ns_rr2; +/* Accessor macros - this is part of the public interface. */ +#define ns_rr_name(rr) (((rr).name[0] != '\0') ? (rr).name : ".") +#define ns_rr_nname(rr) ((const ns_nname_t)(rr).nname) +#define ns_rr_nnamel(rr) ((rr).nnamel + 0) +#define ns_rr_type(rr) ((ns_type)((rr).type + 0)) +#define ns_rr_class(rr) ((ns_class)((rr).rr_class + 0)) +#define ns_rr_ttl(rr) ((u_long)(rr).ttl + 0) +#define ns_rr_rdlen(rr) ((size_t)(rr).rdlength + 0) +#define ns_rr_rdata(rr) ((rr).rdata + 0) + +/* + * These don't have to be in the same order as in the packet flags word, + * and they can even overlap in some cases, but they will need to be kept + * in synch with ns_parse.c:ns_flagdata[]. + */ +typedef enum __ns_flag { + ns_f_qr, /* Question/Response. */ + ns_f_opcode, /* Operation code. */ + ns_f_aa, /* Authoritative Answer. */ + ns_f_tc, /* Truncation occurred. */ + ns_f_rd, /* Recursion Desired. */ + ns_f_ra, /* Recursion Available. */ + ns_f_z, /* MBZ. */ + ns_f_ad, /* Authentic Data (DNSSEC). */ + ns_f_cd, /* Checking Disabled (DNSSEC). */ + ns_f_rcode, /* Response code. */ + ns_f_max +} ns_flag; + +/* + * Currently defined opcodes. + */ +typedef enum __ns_opcode { + ns_o_query = 0, /* Standard query. */ + ns_o_iquery = 1, /* Inverse query (deprecated/unsupported). */ + ns_o_status = 2, /* Name server status query (unsupported). */ + /* Opcode 3 is undefined/reserved. */ + ns_o_notify = 4, /* Zone change notification. */ + ns_o_update = 5, /* Zone update message. */ + ns_o_max = 6 +} ns_opcode; + +/* + * Currently defined response codes. + */ +typedef enum __ns_rcode { + ns_r_noerror = 0, /* No error occurred. */ + ns_r_formerr = 1, /* Format error. */ + ns_r_servfail = 2, /* Server failure. */ + ns_r_nxdomain = 3, /* Name error. */ + ns_r_notimpl = 4, /* Unimplemented. */ + ns_r_refused = 5, /* Operation refused. */ + /* these are for BIND_UPDATE */ + ns_r_yxdomain = 6, /* Name exists */ + ns_r_yxrrset = 7, /* RRset exists */ + ns_r_nxrrset = 8, /* RRset does not exist */ + ns_r_notauth = 9, /* Not authoritative for zone */ + ns_r_notzone = 10, /* Zone of record different from zone section */ + ns_r_max = 11, + /* The following are EDNS extended rcodes */ + ns_r_badvers = 16, + /* The following are TSIG errors */ + ns_r_badsig = 16, + ns_r_badkey = 17, + ns_r_badtime = 18 +} ns_rcode; + +/* BIND_UPDATE */ +typedef enum __ns_update_operation { + ns_uop_delete = 0, + ns_uop_add = 1, + ns_uop_max = 2 +} ns_update_operation; + +/* + * This structure is used for TSIG authenticated messages + */ +struct ns_tsig_key { + char name[NS_MAXDNAME], alg[NS_MAXDNAME]; + unsigned char *data; + int len; +}; +typedef struct ns_tsig_key ns_tsig_key; + +/* + * This structure is used for TSIG authenticated TCP messages + */ +struct ns_tcp_tsig_state { + int counter; + struct dst_key *key; + void *ctx; + unsigned char sig[NS_PACKETSZ]; + int siglen; +}; +typedef struct ns_tcp_tsig_state ns_tcp_tsig_state; + +#define NS_TSIG_FUDGE 300 +#define NS_TSIG_TCP_COUNT 100 +#define NS_TSIG_ALG_HMAC_MD5 "HMAC-MD5.SIG-ALG.REG.INT" + +#define NS_TSIG_ERROR_NO_TSIG -10 +#define NS_TSIG_ERROR_NO_SPACE -11 +#define NS_TSIG_ERROR_FORMERR -12 + +/* + * Currently defined type values for resources and queries. + */ +typedef enum __ns_type { + ns_t_invalid = 0, /* Cookie. */ + ns_t_a = 1, /* Host address. */ + ns_t_ns = 2, /* Authoritative server. */ + ns_t_md = 3, /* Mail destination. */ + ns_t_mf = 4, /* Mail forwarder. */ + ns_t_cname = 5, /* Canonical name. */ + ns_t_soa = 6, /* Start of authority zone. */ + ns_t_mb = 7, /* Mailbox domain name. */ + ns_t_mg = 8, /* Mail group member. */ + ns_t_mr = 9, /* Mail rename name. */ + ns_t_null = 10, /* Null resource record. */ + ns_t_wks = 11, /* Well known service. */ + ns_t_ptr = 12, /* Domain name pointer. */ + ns_t_hinfo = 13, /* Host information. */ + ns_t_minfo = 14, /* Mailbox information. */ + ns_t_mx = 15, /* Mail routing information. */ + ns_t_txt = 16, /* Text strings. */ + ns_t_rp = 17, /* Responsible person. */ + ns_t_afsdb = 18, /* AFS cell database. */ + ns_t_x25 = 19, /* X_25 calling address. */ + ns_t_isdn = 20, /* ISDN calling address. */ + ns_t_rt = 21, /* Router. */ + ns_t_nsap = 22, /* NSAP address. */ + ns_t_nsap_ptr = 23, /* Reverse NSAP lookup (deprecated). */ + ns_t_sig = 24, /* Security signature. */ + ns_t_key = 25, /* Security key. */ + ns_t_px = 26, /* X.400 mail mapping. */ + ns_t_gpos = 27, /* Geographical position (withdrawn). */ + ns_t_aaaa = 28, /* IPv6 Address. */ + ns_t_loc = 29, /* Location Information. */ + ns_t_nxt = 30, /* Next domain (security). */ + ns_t_eid = 31, /* Endpoint identifier. */ + ns_t_nimloc = 32, /* Nimrod Locator. */ + ns_t_srv = 33, /* Server Selection. */ + ns_t_atma = 34, /* ATM Address */ + ns_t_naptr = 35, /* Naming Authority PoinTeR */ + ns_t_kx = 36, /* Key Exchange */ + ns_t_cert = 37, /* Certification record */ + ns_t_a6 = 38, /* IPv6 address (experimental) */ + ns_t_dname = 39, /* Non-terminal DNAME */ + ns_t_sink = 40, /* Kitchen sink (experimentatl) */ + ns_t_opt = 41, /* EDNS0 option (meta-RR) */ + ns_t_apl = 42, /* Address prefix list (RFC 3123) */ + ns_t_ds = 43, /* Delegation Signer */ + ns_t_sshfp = 44, /* SSH Fingerprint */ + ns_t_ipseckey = 45, /* IPSEC Key */ + ns_t_rrsig = 46, /* RRset Signature */ + ns_t_nsec = 47, /* Negative security */ + ns_t_dnskey = 48, /* DNS Key */ + ns_t_dhcid = 49, /* Dynamic host configuratin identifier */ + ns_t_nsec3 = 50, /* Negative security type 3 */ + ns_t_nsec3param = 51, /* Negative security type 3 parameters */ + ns_t_hip = 55, /* Host Identity Protocol */ + ns_t_spf = 99, /* Sender Policy Framework */ + ns_t_tkey = 249, /* Transaction key */ + ns_t_tsig = 250, /* Transaction signature. */ + ns_t_ixfr = 251, /* Incremental zone transfer. */ + ns_t_axfr = 252, /* Transfer zone of authority. */ + ns_t_mailb = 253, /* Transfer mailbox records. */ + ns_t_maila = 254, /* Transfer mail agent records. */ + ns_t_any = 255, /* Wildcard match. */ + ns_t_zxfr = 256, /* BIND-specific, nonstandard. */ + ns_t_dlv = 32769, /* DNSSEC look-aside validatation. */ + ns_t_max = 65536 +} ns_type; + +/* Exclusively a QTYPE? (not also an RTYPE) */ +#define ns_t_qt_p(t) (ns_t_xfr_p(t) || (t) == ns_t_any || \ + (t) == ns_t_mailb || (t) == ns_t_maila) +/* Some kind of meta-RR? (not a QTYPE, but also not an RTYPE) */ +#define ns_t_mrr_p(t) ((t) == ns_t_tsig || (t) == ns_t_opt) +/* Exclusively an RTYPE? (not also a QTYPE or a meta-RR) */ +#define ns_t_rr_p(t) (!ns_t_qt_p(t) && !ns_t_mrr_p(t)) +#define ns_t_udp_p(t) ((t) != ns_t_axfr && (t) != ns_t_zxfr) +#define ns_t_xfr_p(t) ((t) == ns_t_axfr || (t) == ns_t_ixfr || \ + (t) == ns_t_zxfr) + +/* + * Values for class field + */ +typedef enum __ns_class { + ns_c_invalid = 0, /* Cookie. */ + ns_c_in = 1, /* Internet. */ + ns_c_2 = 2, /* unallocated/unsupported. */ + ns_c_chaos = 3, /* MIT Chaos-net. */ + ns_c_hs = 4, /* MIT Hesiod. */ + /* Query class values which do not appear in resource records */ + ns_c_none = 254, /* for prereq. sections in update requests */ + ns_c_any = 255, /* Wildcard match. */ + ns_c_max = 65536 +} ns_class; + +/* DNSSEC constants. */ + +typedef enum __ns_key_types { + ns_kt_rsa = 1, /* key type RSA/MD5 */ + ns_kt_dh = 2, /* Diffie Hellman */ + ns_kt_dsa = 3, /* Digital Signature Standard (MANDATORY) */ + ns_kt_private = 254 /* Private key type starts with OID */ +} ns_key_types; + +typedef enum __ns_cert_types { + cert_t_pkix = 1, /* PKIX (X.509v3) */ + cert_t_spki = 2, /* SPKI */ + cert_t_pgp = 3, /* PGP */ + cert_t_url = 253, /* URL private type */ + cert_t_oid = 254 /* OID private type */ +} ns_cert_types; + +/* Flags field of the KEY RR rdata. */ +#define NS_KEY_TYPEMASK 0xC000 /* Mask for "type" bits */ +#define NS_KEY_TYPE_AUTH_CONF 0x0000 /* Key usable for both */ +#define NS_KEY_TYPE_CONF_ONLY 0x8000 /* Key usable for confidentiality */ +#define NS_KEY_TYPE_AUTH_ONLY 0x4000 /* Key usable for authentication */ +#define NS_KEY_TYPE_NO_KEY 0xC000 /* No key usable for either; no key */ +/* The type bits can also be interpreted independently, as single bits: */ +#define NS_KEY_NO_AUTH 0x8000 /* Key unusable for authentication */ +#define NS_KEY_NO_CONF 0x4000 /* Key unusable for confidentiality */ +#define NS_KEY_RESERVED2 0x2000 /* Security is *mandatory* if bit=0 */ +#define NS_KEY_EXTENDED_FLAGS 0x1000 /* reserved - must be zero */ +#define NS_KEY_RESERVED4 0x0800 /* reserved - must be zero */ +#define NS_KEY_RESERVED5 0x0400 /* reserved - must be zero */ +#define NS_KEY_NAME_TYPE 0x0300 /* these bits determine the type */ +#define NS_KEY_NAME_USER 0x0000 /* key is assoc. with user */ +#define NS_KEY_NAME_ENTITY 0x0200 /* key is assoc. with entity eg host */ +#define NS_KEY_NAME_ZONE 0x0100 /* key is zone key */ +#define NS_KEY_NAME_RESERVED 0x0300 /* reserved meaning */ +#define NS_KEY_RESERVED8 0x0080 /* reserved - must be zero */ +#define NS_KEY_RESERVED9 0x0040 /* reserved - must be zero */ +#define NS_KEY_RESERVED10 0x0020 /* reserved - must be zero */ +#define NS_KEY_RESERVED11 0x0010 /* reserved - must be zero */ +#define NS_KEY_SIGNATORYMASK 0x000F /* key can sign RR's of same name */ +#define NS_KEY_RESERVED_BITMASK ( NS_KEY_RESERVED2 | \ + NS_KEY_RESERVED4 | \ + NS_KEY_RESERVED5 | \ + NS_KEY_RESERVED8 | \ + NS_KEY_RESERVED9 | \ + NS_KEY_RESERVED10 | \ + NS_KEY_RESERVED11 ) +#define NS_KEY_RESERVED_BITMASK2 0xFFFF /* no bits defined here */ + +/* The Algorithm field of the KEY and SIG RR's is an integer, {1..254} */ +#define NS_ALG_MD5RSA 1 /* MD5 with RSA */ +#define NS_ALG_DH 2 /* Diffie Hellman KEY */ +#define NS_ALG_DSA 3 /* DSA KEY */ +#define NS_ALG_DSS NS_ALG_DSA +#define NS_ALG_EXPIRE_ONLY 253 /* No alg, no security */ +#define NS_ALG_PRIVATE_OID 254 /* Key begins with OID giving alg */ + +/* Protocol values */ +/* value 0 is reserved */ +#define NS_KEY_PROT_TLS 1 +#define NS_KEY_PROT_EMAIL 2 +#define NS_KEY_PROT_DNSSEC 3 +#define NS_KEY_PROT_IPSEC 4 +#define NS_KEY_PROT_ANY 255 + +/* Signatures */ +#define NS_MD5RSA_MIN_BITS 512 /* Size of a mod or exp in bits */ +#define NS_MD5RSA_MAX_BITS 4096 + /* Total of binary mod and exp */ +#define NS_MD5RSA_MAX_BYTES ((NS_MD5RSA_MAX_BITS+7/8)*2+3) + /* Max length of text sig block */ +#define NS_MD5RSA_MAX_BASE64 (((NS_MD5RSA_MAX_BYTES+2)/3)*4) +#define NS_MD5RSA_MIN_SIZE ((NS_MD5RSA_MIN_BITS+7)/8) +#define NS_MD5RSA_MAX_SIZE ((NS_MD5RSA_MAX_BITS+7)/8) + +#define NS_DSA_SIG_SIZE 41 +#define NS_DSA_MIN_SIZE 213 +#define NS_DSA_MAX_BYTES 405 + +/* Offsets into SIG record rdata to find various values */ +#define NS_SIG_TYPE 0 /* Type flags */ +#define NS_SIG_ALG 2 /* Algorithm */ +#define NS_SIG_LABELS 3 /* How many labels in name */ +#define NS_SIG_OTTL 4 /* Original TTL */ +#define NS_SIG_EXPIR 8 /* Expiration time */ +#define NS_SIG_SIGNED 12 /* Signature time */ +#define NS_SIG_FOOT 16 /* Key footprint */ +#define NS_SIG_SIGNER 18 /* Domain name of who signed it */ + +/* How RR types are represented as bit-flags in NXT records */ +#define NS_NXT_BITS 8 +#define NS_NXT_BIT_SET( n,p) (p[(n)/NS_NXT_BITS] |= (0x80>>((n)%NS_NXT_BITS))) +#define NS_NXT_BIT_CLEAR(n,p) (p[(n)/NS_NXT_BITS] &= ~(0x80>>((n)%NS_NXT_BITS))) +#define NS_NXT_BIT_ISSET(n,p) (p[(n)/NS_NXT_BITS] & (0x80>>((n)%NS_NXT_BITS))) +#define NS_NXT_MAX 127 + +/* + * EDNS0 extended flags and option codes, host order. + */ +#define NS_OPT_DNSSEC_OK 0x8000U +#define NS_OPT_NSID 3 + +/* + * Inline versions of get/put short/long. Pointer is advanced. + */ +#define NS_GET16(s, cp) do { \ + const u_char *t_cp = (const u_char *)(cp); \ + (s) = ((uint16_t)t_cp[0] << 8) \ + | ((uint16_t)t_cp[1]) \ + ; \ + (cp) += NS_INT16SZ; \ +} while (/*CONSTCOND*/0) + +#define NS_GET32(l, cp) do { \ + const u_char *t_cp = (const u_char *)(cp); \ + (l) = ((uint32_t)t_cp[0] << 24) \ + | ((uint32_t)t_cp[1] << 16) \ + | ((uint32_t)t_cp[2] << 8) \ + | ((uint32_t)t_cp[3]) \ + ; \ + (cp) += NS_INT32SZ; \ +} while (/*CONSTCOND*/0) + +#define NS_PUT16(s, cp) do { \ + uint32_t t_s = (uint32_t)(s); \ + u_char *t_cp = (u_char *)(cp); \ + *t_cp++ = t_s >> 8; \ + *t_cp = t_s; \ + (cp) += NS_INT16SZ; \ +} while (/*CONSTCOND*/0) + +#define NS_PUT32(l, cp) do { \ + uint32_t t_l = (uint32_t)(l); \ + u_char *t_cp = (u_char *)(cp); \ + *t_cp++ = t_l >> 24; \ + *t_cp++ = t_l >> 16; \ + *t_cp++ = t_l >> 8; \ + *t_cp = t_l; \ + (cp) += NS_INT32SZ; \ +} while (/*CONSTCOND*/0) + +/* + * ANSI C identifier hiding for bind's lib/nameser. + */ +#define ns_msg_getflag __ns_msg_getflag +#define ns_get16 __ns_get16 +#define ns_get32 __ns_get32 +#define ns_put16 __ns_put16 +#define ns_put32 __ns_put32 +#define ns_initparse __ns_initparse +#define ns_skiprr __ns_skiprr +#define ns_parserr __ns_parserr +#define ns_parserr2 __ns_parserr2 +#define ns_sprintrr __ns_sprintrr +#define ns_sprintrrf __ns_sprintrrf +#define ns_format_ttl __ns_format_ttl +#define ns_parse_ttl __ns_parse_ttl +#define ns_datetosecs __ns_datetosecs +#define ns_name_ntol __ns_name_ntol +#define ns_name_ntop __ns_name_ntop +#define ns_name_pton __ns_name_pton +#define ns_name_pton2 __ns_name_pton2 +#define ns_name_unpack __ns_name_unpack +#define ns_name_unpack2 __ns_name_unpack2 +#define ns_name_pack __ns_name_pack +#define ns_name_compress __ns_name_compress +#define ns_name_uncompress __ns_name_uncompress +#define ns_name_skip __ns_name_skip +#define ns_name_rollback __ns_name_rollback +#define ns_name_length __ns_name_length +#define ns_name_eq __ns_name_eq +#define ns_name_owned __ns_name_owned +#define ns_name_map __ns_name_map +#define ns_name_labels __ns_name_labels +#define ns_sign __ns_sign +#define ns_sign2 __ns_sign2 +#define ns_sign_tcp __ns_sign_tcp +#define ns_sign_tcp2 __ns_sign_tcp2 +#define ns_sign_tcp_init __ns_sign_tcp_init +#define ns_find_tsig __ns_find_tsig +#define ns_verify __ns_verify +#define ns_verify_tcp __ns_verify_tcp +#define ns_verify_tcp_init __ns_verify_tcp_init +#define ns_samedomain __ns_samedomain +#define ns_subdomain __ns_subdomain +#define ns_makecanon __ns_makecanon +#define ns_samename __ns_samename +#define ns_newmsg_init __ns_newmsg_init +#define ns_newmsg_copy __ns_newmsg_copy +#define ns_newmsg_id __ns_newmsg_id +#define ns_newmsg_flag __ns_newmsg_flag +#define ns_newmsg_q __ns_newmsg_q +#define ns_newmsg_rr __ns_newmsg_rr +#define ns_newmsg_done __ns_newmsg_done +#define ns_rdata_unpack __ns_rdata_unpack +#define ns_rdata_equal __ns_rdata_equal +#define ns_rdata_refers __ns_rdata_refers + +__BEGIN_DECLS +int ns_msg_getflag(ns_msg, int); +uint16_t ns_get16(const u_char *); +uint32_t ns_get32(const u_char *); +void ns_put16(uint16_t, u_char *); +void ns_put32(uint32_t, u_char *); +int ns_initparse(const u_char *, int, ns_msg *); +int ns_skiprr(const u_char *, const u_char *, ns_sect, int); +int ns_parserr(ns_msg *, ns_sect, int, ns_rr *); +int ns_parserr2(ns_msg *, ns_sect, int, ns_rr2 *); +int ns_sprintrr(const ns_msg *, const ns_rr *, + const char *, const char *, char *, size_t); +int ns_sprintrrf(const u_char *, size_t, const char *, + ns_class, ns_type, u_long, const u_char *, + size_t, const char *, const char *, + char *, size_t); +int ns_format_ttl(u_long, char *, size_t); +int ns_parse_ttl(const char *, u_long *); +uint32_t ns_datetosecs(const char *cp, int *errp); +int ns_name_ntol(const u_char *, u_char *, size_t); +int ns_name_ntop(const u_char *, char *, size_t); +int ns_name_pton(const char *, u_char *, size_t); +int ns_name_pton2(const char *, u_char *, size_t, size_t *); +int ns_name_unpack(const u_char *, const u_char *, + const u_char *, u_char *, size_t); +int ns_name_unpack2(const u_char *, const u_char *, + const u_char *, u_char *, size_t, + size_t *); +int ns_name_pack(const u_char *, u_char *, int, + const u_char **, const u_char **); +int ns_name_uncompress(const u_char *, const u_char *, + const u_char *, char *, size_t); +int ns_name_compress(const char *, u_char *, size_t, + const u_char **, const u_char **); +int ns_name_skip(const u_char **, const u_char *); +void ns_name_rollback(const u_char *, const u_char **, + const u_char **); +int ns_sign(u_char *, int *, int, int, void *, + const u_char *, int, u_char *, int *, time_t); +int ns_sign2(u_char *, int *, int, int, void *, + const u_char *, int, u_char *, int *, time_t, + u_char **, u_char **); +ssize_t ns_name_length(ns_nname_ct, size_t); +int ns_name_eq(ns_nname_ct, size_t, ns_nname_ct, size_t); +int ns_name_owned(ns_namemap_ct, int, ns_namemap_ct, int); +int ns_name_map(ns_nname_ct, size_t, ns_namemap_t, int); +int ns_name_labels(ns_nname_ct, size_t); +int ns_sign_tcp(u_char *, int *, int, int, + ns_tcp_tsig_state *, int); +int ns_sign_tcp2(u_char *, int *, int, int, + ns_tcp_tsig_state *, int, + u_char **, u_char **); +int ns_sign_tcp_init(void *, const u_char *, int, + ns_tcp_tsig_state *); +u_char *ns_find_tsig(u_char *, u_char *); +int ns_verify(u_char *, int *, void *, + const u_char *, int, u_char *, int *, + time_t *, int); +int ns_verify_tcp(u_char *, int *, ns_tcp_tsig_state *, int); +int ns_verify_tcp_init(void *, const u_char *, int, + ns_tcp_tsig_state *); +int ns_samedomain(const char *, const char *); +int ns_subdomain(const char *, const char *); +int ns_makecanon(const char *, char *, size_t); +int ns_samename(const char *, const char *); +int ns_newmsg_init(u_char *buffer, size_t bufsiz, ns_newmsg *); +int ns_newmsg_copy(ns_newmsg *, ns_msg *); +void ns_newmsg_id(ns_newmsg *handle, uint16_t id); +void ns_newmsg_flag(ns_newmsg *handle, ns_flag flag, u_int value); +int ns_newmsg_q(ns_newmsg *handle, ns_nname_ct qname, + ns_type qtype, ns_class qclass); +int ns_newmsg_rr(ns_newmsg *handle, ns_sect sect, + ns_nname_ct name, ns_type type, + ns_class rr_class, uint32_t ttl, + uint16_t rdlen, const u_char *rdata); +size_t ns_newmsg_done(ns_newmsg *handle); +ssize_t ns_rdata_unpack(const u_char *, const u_char *, ns_type, + const u_char *, size_t, u_char *, size_t); +int ns_rdata_equal(ns_type, + const u_char *, size_t, + const u_char *, size_t); +int ns_rdata_refers(ns_type, + const u_char *, size_t, + const u_char *); +__END_DECLS + +#ifdef BIND_4_COMPAT +#include +#endif + +#endif /* !_ARPA_NAMESER_H_ */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arpa/nameser_compat.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arpa/nameser_compat.h new file mode 100644 index 0000000..19d09e6 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arpa/nameser_compat.h @@ -0,0 +1,238 @@ +/* $NetBSD: nameser_compat.h,v 1.1.1.2 2004/11/07 01:28:27 christos Exp $ */ + +/* Copyright (c) 1983, 1989 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * from nameser.h 8.1 (Berkeley) 6/2/93 + * Id: nameser_compat.h,v 1.8 2006/05/19 02:33:40 marka Exp + */ + +#ifndef _ARPA_NAMESER_COMPAT_ +#define _ARPA_NAMESER_COMPAT_ + +#define __BIND 19950621 /* (DEAD) interface version stamp. */ + +#include + +#ifndef BYTE_ORDER +#if (BSD >= 199103) +# include +#else +#ifdef __linux__ +# include +#else +#define LITTLE_ENDIAN 1234 /* least-significant byte first (vax, pc) */ +#define BIG_ENDIAN 4321 /* most-significant byte first (IBM, net) */ +#define PDP_ENDIAN 3412 /* LSB first in word, MSW first in long (pdp)*/ + +#if defined(vax) || defined(ns32000) || defined(sun386) || defined(i386) || \ + defined(MIPSEL) || defined(_MIPSEL) || defined(BIT_ZERO_ON_RIGHT) || \ + defined(__i386__) || defined(__i386) || defined(__amd64__) || \ + defined(__x86_64__) || defined(MIPSEL) || defined(_MIPSEL) || \ + defined(BIT_ZERO_ON_RIGHT) || defined(__alpha__) || defined(__alpha) || \ + (defined(__Lynx__) && defined(__x86__)) +#define BYTE_ORDER LITTLE_ENDIAN +#endif + +#if defined(sel) || defined(pyr) || defined(mc68000) || defined(sparc) || \ + defined(is68k) || defined(ibm032) || defined(ibm370) || \ + defined(MIPSEB) || defined(_MIPSEB) || defined(_IBMR2) || defined(DGUX) ||\ + defined(apollo) || defined(__convex__) || defined(_CRAY) || \ + defined(__hppa) || defined(__hp9000) || \ + defined(__hp9000s300) || defined(__hp9000s700) || \ + defined(__hp3000s900) || defined(__hpux) || defined(MPE) || \ + defined (BIT_ZERO_ON_LEFT) || defined(m68k) || defined(__sparc) || \ + (defined(__Lynx__) && \ + (defined(__68k__) || defined(__sparc__) || defined(__powerpc__))) +#define BYTE_ORDER BIG_ENDIAN +#endif +#endif /* __linux */ +#endif /* BSD */ +#endif /* BYTE_ORDER */ + +#if !defined(BYTE_ORDER) || \ + (BYTE_ORDER != BIG_ENDIAN && BYTE_ORDER != LITTLE_ENDIAN && \ + BYTE_ORDER != PDP_ENDIAN) + /* you must determine what the correct bit order is for + * your compiler - the next line is an intentional error + * which will force your compiles to bomb until you fix + * the above macros. + */ + #error "Undefined or invalid BYTE_ORDER"; +#endif + +/* + * Structure for query header. The order of the fields is machine- and + * compiler-dependent, depending on the byte/bit order and the layout + * of bit fields. We use bit fields only in int variables, as this + * is all ANSI requires. This requires a somewhat confusing rearrangement. + */ + +typedef struct { + unsigned id :16; /* query identification number */ +#if BYTE_ORDER == BIG_ENDIAN + /* fields in third byte */ + unsigned qr: 1; /* response flag */ + unsigned opcode: 4; /* purpose of message */ + unsigned aa: 1; /* authoritive answer */ + unsigned tc: 1; /* truncated message */ + unsigned rd: 1; /* recursion desired */ + /* fields in fourth byte */ + unsigned ra: 1; /* recursion available */ + unsigned unused :1; /* unused bits (MBZ as of 4.9.3a3) */ + unsigned ad: 1; /* authentic data from named */ + unsigned cd: 1; /* checking disabled by resolver */ + unsigned rcode :4; /* response code */ +#endif +#if BYTE_ORDER == LITTLE_ENDIAN || BYTE_ORDER == PDP_ENDIAN + /* fields in third byte */ + unsigned rd :1; /* recursion desired */ + unsigned tc :1; /* truncated message */ + unsigned aa :1; /* authoritive answer */ + unsigned opcode :4; /* purpose of message */ + unsigned qr :1; /* response flag */ + /* fields in fourth byte */ + unsigned rcode :4; /* response code */ + unsigned cd: 1; /* checking disabled by resolver */ + unsigned ad: 1; /* authentic data from named */ + unsigned unused :1; /* unused bits (MBZ as of 4.9.3a3) */ + unsigned ra :1; /* recursion available */ +#endif + /* remaining bytes */ + unsigned qdcount :16; /* number of question entries */ + unsigned ancount :16; /* number of answer entries */ + unsigned nscount :16; /* number of authority entries */ + unsigned arcount :16; /* number of resource entries */ +} HEADER; + +#define PACKETSZ NS_PACKETSZ +#define MAXDNAME NS_MAXDNAME +#define MAXCDNAME NS_MAXCDNAME +#define MAXLABEL NS_MAXLABEL +#define HFIXEDSZ NS_HFIXEDSZ +#define QFIXEDSZ NS_QFIXEDSZ +#define RRFIXEDSZ NS_RRFIXEDSZ +#define INT32SZ NS_INT32SZ +#define INT16SZ NS_INT16SZ +#define INT8SZ NS_INT8SZ +#define INADDRSZ NS_INADDRSZ +#define IN6ADDRSZ NS_IN6ADDRSZ +#define INDIR_MASK NS_CMPRSFLGS +#define NAMESERVER_PORT NS_DEFAULTPORT + +#define S_ZONE ns_s_zn +#define S_PREREQ ns_s_pr +#define S_UPDATE ns_s_ud +#define S_ADDT ns_s_ar + +#define QUERY ns_o_query +#define IQUERY ns_o_iquery +#define STATUS ns_o_status +#define NS_NOTIFY_OP ns_o_notify +#define NS_UPDATE_OP ns_o_update + +#define NOERROR ns_r_noerror +#define FORMERR ns_r_formerr +#define SERVFAIL ns_r_servfail +#define NXDOMAIN ns_r_nxdomain +#define NOTIMP ns_r_notimpl +#define REFUSED ns_r_refused +#define YXDOMAIN ns_r_yxdomain +#define YXRRSET ns_r_yxrrset +#define NXRRSET ns_r_nxrrset +#define NOTAUTH ns_r_notauth +#define NOTZONE ns_r_notzone +/*#define BADSIG ns_r_badsig*/ +/*#define BADKEY ns_r_badkey*/ +/*#define BADTIME ns_r_badtime*/ + + +#define DELETE ns_uop_delete +#define ADD ns_uop_add + +#define T_A ns_t_a +#define T_NS ns_t_ns +#define T_MD ns_t_md +#define T_MF ns_t_mf +#define T_CNAME ns_t_cname +#define T_SOA ns_t_soa +#define T_MB ns_t_mb +#define T_MG ns_t_mg +#define T_MR ns_t_mr +#define T_NULL ns_t_null +#define T_WKS ns_t_wks +#define T_PTR ns_t_ptr +#define T_HINFO ns_t_hinfo +#define T_MINFO ns_t_minfo +#define T_MX ns_t_mx +#define T_TXT ns_t_txt +#define T_RP ns_t_rp +#define T_AFSDB ns_t_afsdb +#define T_X25 ns_t_x25 +#define T_ISDN ns_t_isdn +#define T_RT ns_t_rt +#define T_NSAP ns_t_nsap +#define T_NSAP_PTR ns_t_nsap_ptr +#define T_SIG ns_t_sig +#define T_KEY ns_t_key +#define T_PX ns_t_px +#define T_GPOS ns_t_gpos +#define T_AAAA ns_t_aaaa +#define T_LOC ns_t_loc +#define T_NXT ns_t_nxt +#define T_EID ns_t_eid +#define T_NIMLOC ns_t_nimloc +#define T_SRV ns_t_srv +#define T_ATMA ns_t_atma +#define T_NAPTR ns_t_naptr +#define T_A6 ns_t_a6 +#define T_TSIG ns_t_tsig +#define T_IXFR ns_t_ixfr +#define T_AXFR ns_t_axfr +#define T_MAILB ns_t_mailb +#define T_MAILA ns_t_maila +#define T_ANY ns_t_any + +#define C_IN ns_c_in +#define C_CHAOS ns_c_chaos +#define C_HS ns_c_hs +/* BIND_UPDATE */ +#define C_NONE ns_c_none +#define C_ANY ns_c_any + +#define GETSHORT NS_GET16 +#define GETLONG NS_GET32 +#define PUTSHORT NS_PUT16 +#define PUTLONG NS_PUT32 + +#endif /* _ARPA_NAMESER_COMPAT_ */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arpa/telnet.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arpa/telnet.h new file mode 100644 index 0000000..d318e08 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/arpa/telnet.h @@ -0,0 +1,316 @@ +/* + * Copyright (c) 1983, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)telnet.h 8.2 (Berkeley) 12/15/93 + */ + +#ifndef _ARPA_TELNET_H +#define _ARPA_TELNET_H 1 + +/* + * Definitions for the TELNET protocol. + */ +#define IAC 255 /* interpret as command: */ +#define DONT 254 /* you are not to use option */ +#define DO 253 /* please, you use option */ +#define WONT 252 /* I won't use option */ +#define WILL 251 /* I will use option */ +#define SB 250 /* interpret as subnegotiation */ +#define GA 249 /* you may reverse the line */ +#define EL 248 /* erase the current line */ +#define EC 247 /* erase the current character */ +#define AYT 246 /* are you there */ +#define AO 245 /* abort output--but let prog finish */ +#define IP 244 /* interrupt process--permanently */ +#define BREAK 243 /* break */ +#define DM 242 /* data mark--for connect. cleaning */ +#define NOP 241 /* nop */ +#define SE 240 /* end sub negotiation */ +#define EOR 239 /* end of record (transparent mode) */ +#define ABORT 238 /* Abort process */ +#define SUSP 237 /* Suspend process */ +#define xEOF 236 /* End of file: EOF is already used... */ + +#define SYNCH 242 /* for telfunc calls */ + +#ifdef TELCMDS +char *telcmds[] = { + "EOF", "SUSP", "ABORT", "EOR", + "SE", "NOP", "DMARK", "BRK", "IP", "AO", "AYT", "EC", + "EL", "GA", "SB", "WILL", "WONT", "DO", "DONT", "IAC", 0, +}; +#else +extern char *telcmds[]; +#endif + +#define TELCMD_FIRST xEOF +#define TELCMD_LAST IAC +#define TELCMD_OK(x) ((unsigned int)(x) <= TELCMD_LAST && \ + (unsigned int)(x) >= TELCMD_FIRST) +#define TELCMD(x) telcmds[(x)-TELCMD_FIRST] + +/* telnet options */ +#define TELOPT_BINARY 0 /* 8-bit data path */ +#define TELOPT_ECHO 1 /* echo */ +#define TELOPT_RCP 2 /* prepare to reconnect */ +#define TELOPT_SGA 3 /* suppress go ahead */ +#define TELOPT_NAMS 4 /* approximate message size */ +#define TELOPT_STATUS 5 /* give status */ +#define TELOPT_TM 6 /* timing mark */ +#define TELOPT_RCTE 7 /* remote controlled transmission and echo */ +#define TELOPT_NAOL 8 /* negotiate about output line width */ +#define TELOPT_NAOP 9 /* negotiate about output page size */ +#define TELOPT_NAOCRD 10 /* negotiate about CR disposition */ +#define TELOPT_NAOHTS 11 /* negotiate about horizontal tabstops */ +#define TELOPT_NAOHTD 12 /* negotiate about horizontal tab disposition */ +#define TELOPT_NAOFFD 13 /* negotiate about formfeed disposition */ +#define TELOPT_NAOVTS 14 /* negotiate about vertical tab stops */ +#define TELOPT_NAOVTD 15 /* negotiate about vertical tab disposition */ +#define TELOPT_NAOLFD 16 /* negotiate about output LF disposition */ +#define TELOPT_XASCII 17 /* extended ascii character set */ +#define TELOPT_LOGOUT 18 /* force logout */ +#define TELOPT_BM 19 /* byte macro */ +#define TELOPT_DET 20 /* data entry terminal */ +#define TELOPT_SUPDUP 21 /* supdup protocol */ +#define TELOPT_SUPDUPOUTPUT 22 /* supdup output */ +#define TELOPT_SNDLOC 23 /* send location */ +#define TELOPT_TTYPE 24 /* terminal type */ +#define TELOPT_EOR 25 /* end or record */ +#define TELOPT_TUID 26 /* TACACS user identification */ +#define TELOPT_OUTMRK 27 /* output marking */ +#define TELOPT_TTYLOC 28 /* terminal location number */ +#define TELOPT_3270REGIME 29 /* 3270 regime */ +#define TELOPT_X3PAD 30 /* X.3 PAD */ +#define TELOPT_NAWS 31 /* window size */ +#define TELOPT_TSPEED 32 /* terminal speed */ +#define TELOPT_LFLOW 33 /* remote flow control */ +#define TELOPT_LINEMODE 34 /* Linemode option */ +#define TELOPT_XDISPLOC 35 /* X Display Location */ +#define TELOPT_OLD_ENVIRON 36 /* Old - Environment variables */ +#define TELOPT_AUTHENTICATION 37/* Authenticate */ +#define TELOPT_ENCRYPT 38 /* Encryption option */ +#define TELOPT_NEW_ENVIRON 39 /* New - Environment variables */ +#define TELOPT_EXOPL 255 /* extended-options-list */ + + +#define NTELOPTS (1+TELOPT_NEW_ENVIRON) +#ifdef TELOPTS +const char *telopts[NTELOPTS+1] = { + "BINARY", "ECHO", "RCP", "SUPPRESS GO AHEAD", "NAME", + "STATUS", "TIMING MARK", "RCTE", "NAOL", "NAOP", + "NAOCRD", "NAOHTS", "NAOHTD", "NAOFFD", "NAOVTS", + "NAOVTD", "NAOLFD", "EXTEND ASCII", "LOGOUT", "BYTE MACRO", + "DATA ENTRY TERMINAL", "SUPDUP", "SUPDUP OUTPUT", + "SEND LOCATION", "TERMINAL TYPE", "END OF RECORD", + "TACACS UID", "OUTPUT MARKING", "TTYLOC", + "3270 REGIME", "X.3 PAD", "NAWS", "TSPEED", "LFLOW", + "LINEMODE", "XDISPLOC", "OLD-ENVIRON", "AUTHENTICATION", + "ENCRYPT", "NEW-ENVIRON", + 0, +}; +#define TELOPT_FIRST TELOPT_BINARY +#define TELOPT_LAST TELOPT_NEW_ENVIRON +#define TELOPT_OK(x) ((unsigned int)(x) <= TELOPT_LAST) +#define TELOPT(x) telopts[(x)-TELOPT_FIRST] +#endif + +/* sub-option qualifiers */ +#define TELQUAL_IS 0 /* option is... */ +#define TELQUAL_SEND 1 /* send option */ +#define TELQUAL_INFO 2 /* ENVIRON: informational version of IS */ +#define TELQUAL_REPLY 2 /* AUTHENTICATION: client version of IS */ +#define TELQUAL_NAME 3 /* AUTHENTICATION: client version of IS */ + +#define LFLOW_OFF 0 /* Disable remote flow control */ +#define LFLOW_ON 1 /* Enable remote flow control */ +#define LFLOW_RESTART_ANY 2 /* Restart output on any char */ +#define LFLOW_RESTART_XON 3 /* Restart output only on XON */ + +/* + * LINEMODE suboptions + */ + +#define LM_MODE 1 +#define LM_FORWARDMASK 2 +#define LM_SLC 3 + +#define MODE_EDIT 0x01 +#define MODE_TRAPSIG 0x02 +#define MODE_ACK 0x04 +#define MODE_SOFT_TAB 0x08 +#define MODE_LIT_ECHO 0x10 + +#define MODE_MASK 0x1f + +/* Not part of protocol, but needed to simplify things... */ +#define MODE_FLOW 0x0100 +#define MODE_ECHO 0x0200 +#define MODE_INBIN 0x0400 +#define MODE_OUTBIN 0x0800 +#define MODE_FORCE 0x1000 + +#define SLC_SYNCH 1 +#define SLC_BRK 2 +#define SLC_IP 3 +#define SLC_AO 4 +#define SLC_AYT 5 +#define SLC_EOR 6 +#define SLC_ABORT 7 +#define SLC_EOF 8 +#define SLC_SUSP 9 +#define SLC_EC 10 +#define SLC_EL 11 +#define SLC_EW 12 +#define SLC_RP 13 +#define SLC_LNEXT 14 +#define SLC_XON 15 +#define SLC_XOFF 16 +#define SLC_FORW1 17 +#define SLC_FORW2 18 + +#define NSLC 18 + +/* + * For backwards compatibility, we define SLC_NAMES to be the + * list of names if SLC_NAMES is not defined. + */ +#define SLC_NAMELIST "0", "SYNCH", "BRK", "IP", "AO", "AYT", "EOR", \ + "ABORT", "EOF", "SUSP", "EC", "EL", "EW", "RP", \ + "LNEXT", "XON", "XOFF", "FORW1", "FORW2", 0, +#ifdef SLC_NAMES +const char *slc_names[] = { + SLC_NAMELIST +}; +#else +extern char *slc_names[]; +#define SLC_NAMES SLC_NAMELIST +#endif + +#define SLC_NAME_OK(x) ((unsigned int)(x) <= NSLC) +#define SLC_NAME(x) slc_names[x] + +#define SLC_NOSUPPORT 0 +#define SLC_CANTCHANGE 1 +#define SLC_VARIABLE 2 +#define SLC_DEFAULT 3 +#define SLC_LEVELBITS 0x03 + +#define SLC_FUNC 0 +#define SLC_FLAGS 1 +#define SLC_VALUE 2 + +#define SLC_ACK 0x80 +#define SLC_FLUSHIN 0x40 +#define SLC_FLUSHOUT 0x20 + +#define OLD_ENV_VAR 1 +#define OLD_ENV_VALUE 0 +#define NEW_ENV_VAR 0 +#define NEW_ENV_VALUE 1 +#define ENV_ESC 2 +#define ENV_USERVAR 3 + +/* + * AUTHENTICATION suboptions + */ + +/* + * Who is authenticating who ... + */ +#define AUTH_WHO_CLIENT 0 /* Client authenticating server */ +#define AUTH_WHO_SERVER 1 /* Server authenticating client */ +#define AUTH_WHO_MASK 1 + +/* + * amount of authentication done + */ +#define AUTH_HOW_ONE_WAY 0 +#define AUTH_HOW_MUTUAL 2 +#define AUTH_HOW_MASK 2 + +#define AUTHTYPE_NULL 0 +#define AUTHTYPE_KERBEROS_V4 1 +#define AUTHTYPE_KERBEROS_V5 2 +#define AUTHTYPE_SPX 3 +#define AUTHTYPE_MINK 4 +#define AUTHTYPE_CNT 5 + +#define AUTHTYPE_TEST 99 + +#ifdef AUTH_NAMES +const char *authtype_names[] = { + "NULL", "KERBEROS_V4", "KERBEROS_V5", "SPX", "MINK", 0, +}; +#else +extern char *authtype_names[]; +#endif + +#define AUTHTYPE_NAME_OK(x) ((unsigned int)(x) < AUTHTYPE_CNT) +#define AUTHTYPE_NAME(x) authtype_names[x] + +/* + * ENCRYPTion suboptions + */ +#define ENCRYPT_IS 0 /* I pick encryption type ... */ +#define ENCRYPT_SUPPORT 1 /* I support encryption types ... */ +#define ENCRYPT_REPLY 2 /* Initial setup response */ +#define ENCRYPT_START 3 /* Am starting to send encrypted */ +#define ENCRYPT_END 4 /* Am ending encrypted */ +#define ENCRYPT_REQSTART 5 /* Request you start encrypting */ +#define ENCRYPT_REQEND 6 /* Request you send encrypting */ +#define ENCRYPT_ENC_KEYID 7 +#define ENCRYPT_DEC_KEYID 8 +#define ENCRYPT_CNT 9 + +#define ENCTYPE_ANY 0 +#define ENCTYPE_DES_CFB64 1 +#define ENCTYPE_DES_OFB64 2 +#define ENCTYPE_CNT 3 + +#ifdef ENCRYPT_NAMES +const char *encrypt_names[] = { + "IS", "SUPPORT", "REPLY", "START", "END", + "REQUEST-START", "REQUEST-END", "ENC-KEYID", "DEC-KEYID", + 0, +}; +const char *enctype_names[] = { + "ANY", "DES_CFB64", "DES_OFB64", 0, +}; +#else +extern const char *encrypt_names[]; +extern const char *enctype_names[]; +#endif + + +#define ENCRYPT_NAME_OK(x) ((unsigned int)(x) < ENCRYPT_CNT) +#define ENCRYPT_NAME(x) encrypt_names[x] + +#define ENCTYPE_NAME_OK(x) ((unsigned int)(x) < ENCTYPE_CNT) +#define ENCTYPE_NAME(x) enctype_names[x] + +#endif /* arpa/telnet.h */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/assert.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/assert.h new file mode 100644 index 0000000..1ac5f58 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/assert.h @@ -0,0 +1,78 @@ +/* $OpenBSD: assert.h,v 1.12 2006/01/31 10:53:51 hshoexer Exp $ */ +/* $NetBSD: assert.h,v 1.6 1994/10/26 00:55:44 cgd Exp $ */ + +/*- + * Copyright (c) 1992, 1993 + * The Regents of the University of California. All rights reserved. + * (c) UNIX System Laboratories, Inc. + * All or some portions of this file are derived from material licensed + * to the University of California by American Telephone and Telegraph + * Co. or Unix System Laboratories, Inc. and are reproduced herein with + * the permission of UNIX System Laboratories, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)assert.h 8.2 (Berkeley) 1/21/94 + */ + +/* + * Unlike other ANSI header files, may usefully be included + * multiple times, with and without NDEBUG defined. + */ + +#include + +#undef assert +#undef _assert + +#ifdef NDEBUG +# define assert(e) ((void)0) +# define _assert(e) ((void)0) +#else +# define _assert(e) assert(e) +# if __ISO_C_VISIBLE >= 1999 +# define assert(e) ((e) ? (void)0 : __assert2(__FILE__, __LINE__, __func__, #e)) +# else +# define assert(e) ((e) ? (void)0 : __assert(__FILE__, __LINE__, #e)) +# endif +#endif + +__BEGIN_DECLS +__dead void __assert(const char *, int, const char *) __noreturn; +__dead void __assert2(const char *, int, const char *, const char *) __noreturn; + +#ifdef __APPLE__ +#include +#include + +static inline void __assert_rtn(const char* func, const char* file, int line, const char* msg) __attribute__ ((noreturn)); +static inline void __assert_rtn(const char* func, const char* file, int line, const char* msg) { + fprintf(stderr, "libunwind: %s %s:%d - %s\n", func, file, line, msg); + assert(0); + abort(); +} +#endif + +__END_DECLS diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/baresyscall/baresyscall.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/baresyscall/baresyscall.h new file mode 100644 index 0000000..4a30d46 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/baresyscall/baresyscall.h @@ -0,0 +1,50 @@ +// : os-apis +// : component public header + +#ifndef OS_APIS_BARESYSCALL_H__ +#define OS_APIS_BARESYSCALL_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "syscalltypes.h" + +typedef int OS_SYSCALL_TYPE; + +#if defined(TARGET_WINDOWS) + +#include "windows-baresyscall.h" + +#endif + +#if defined(TARGET_LINUX) + +#include "linux-baresyscall.h" + +#endif + +#if defined(TARGET_MAC) + +#include "mac-baresyscall.h" + +#endif + +/*! + * Perform a system call. + * @param[in] sysno The system call number. + * @param[in] type The system call type (linux, int80 , int81 ....). + * @param[in] argCount The number of system call parameters. + * @param[in] ... A variable number of system call parameters. + * + * @return Returns a OS_SYSCALLRETURN object, which can be used to + * examine success and result values. + */ +OS_SYSCALLRETURN OS_SyscallDo(ADDRINT sysno, OS_SYSCALL_TYPE type, unsigned argCount, ...); + + +#ifdef __cplusplus +} +#endif + +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/baresyscall/ia32-linux/baresyscall.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/baresyscall/ia32-linux/baresyscall.h new file mode 100644 index 0000000..fa37f03 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/baresyscall/ia32-linux/baresyscall.h @@ -0,0 +1,35 @@ +// : os-apis +// : component public header + +#ifndef OS_APIS_LINUX_IA32_BARESYSCALL_H__ +#define OS_APIS_LINUX_IA32_BARESYSCALL_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "types.h" + +/*! + * Set of raw return values from a system call. + */ +typedef struct /**/ +{ + ADDRINT _eax; + BOOL_T _success; +} OS_SYSCALLRETURN; + +/* + * This is the signal restorer which is called after a signal handler + * had returned. + * This is basically a system call to restore the original application's + * stack. + * This syscall never returns + */ +void OS_SigReturn(); + +#ifdef __cplusplus +} +#endif + +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/baresyscall/ia32-mac/baresyscall.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/baresyscall/ia32-mac/baresyscall.h new file mode 100644 index 0000000..65e9f46 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/baresyscall/ia32-mac/baresyscall.h @@ -0,0 +1,28 @@ +// : os-apis +// : component public header + +#ifndef OS_APIS_MAC_IA32_BARESYSCALL_H__ +#define OS_APIS_MAC_IA32_BARESYSCALL_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "types.h" + +/*! + * Set of raw return values from a system call. + */ +typedef struct /**/ +{ + ADDRINT _eax; + ADDRINT _edx; + ADDRINT _cf; // cary flag after syscall + ADDRINT _stack; // value pointed at by SP after syscall +} OS_SYSCALLRETURN; + +#ifdef __cplusplus +} +#endif + +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/baresyscall/ia32-windows/baresyscall.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/baresyscall/ia32-windows/baresyscall.h new file mode 100644 index 0000000..f3c20e5 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/baresyscall/ia32-windows/baresyscall.h @@ -0,0 +1,28 @@ +// : os-apis +// : component public header + +#ifndef OS_APIS_WINDOWS_IA32_BARESYSCALL_H__ +#define OS_APIS_WINDOWS_IA32_BARESYSCALL_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "types.h" + +// Offset of the WOW64 syscall gate address in 32-bit TEB. +// The same symbol is also defined in ntdll.h - compiler is expected to generate error +// if definitions are different. +#define TEBOFF_WOW64_GATE 192 + +#define WOW64_REG_SIZE HEX(4) +#define WOW64_ARGUMENT_OFFSET(argno) (1 + argno) * REG_SIZE + +#define REG_SIZE HEX(4) +#define ARGUMENT_OFFSET(argno) (1 + argno) * REG_SIZE + +#ifdef __cplusplus +} +#endif + +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/baresyscall/intel64-linux/baresyscall.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/baresyscall/intel64-linux/baresyscall.h new file mode 100644 index 0000000..08f1e06 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/baresyscall/intel64-linux/baresyscall.h @@ -0,0 +1,26 @@ +// : os-apis +// : component public header + +#ifndef OS_APIS_LINUX_INTEL64_BARESYSCALL_H__ +#define OS_APIS_LINUX_INTEL64_BARESYSCALL_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "types.h" + +/*! + * Set of raw return values from a system call. + */ +typedef struct /**/ +{ + ADDRINT _rax; + BOOL_T _success; +} OS_SYSCALLRETURN; + +#ifdef __cplusplus +} +#endif + +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/baresyscall/intel64-mac/baresyscall.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/baresyscall/intel64-mac/baresyscall.h new file mode 100644 index 0000000..c141421 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/baresyscall/intel64-mac/baresyscall.h @@ -0,0 +1,27 @@ +// : os-apis +// : component public header + +#ifndef OS_APIS_MAC_INTEL64_BARESYSCALL_H__ +#define OS_APIS_MAC_INTEL64_BARESYSCALL_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "types.h" + +/*! + * Set of raw return values from a system call. + */ +typedef struct /**/ +{ + ADDRINT _rax; + ADDRINT _rdx; + ADDRINT _cf; +} OS_SYSCALLRETURN; + +#ifdef __cplusplus +} +#endif + +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/baresyscall/intel64-windows/baresyscall.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/baresyscall/intel64-windows/baresyscall.h new file mode 100644 index 0000000..40bb5bc --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/baresyscall/intel64-windows/baresyscall.h @@ -0,0 +1,24 @@ +// : os-apis +// : component public header + +#ifndef OS_APIS_WINDOWS_INTEL64_BARESYSCALL_H__ +#define OS_APIS_WINDOWS_INTEL64_BARESYSCALL_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "types.h" + +#define REG_SIZE HEX(8) +// 8 callee-saved registers +#define CALLEE_SAVED_REG HEX(8) +// System call arguments stack offset +// (shadow stack (0x20) + return address (0x8)) +#define SYSCALL_ARG_STACK_OFFSET HEX(28) + +#ifdef __cplusplus +} +#endif + +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/baresyscall/linux-baresyscall.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/baresyscall/linux-baresyscall.h new file mode 100644 index 0000000..a57df93 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/baresyscall/linux-baresyscall.h @@ -0,0 +1,53 @@ +// : os-apis +// : component public header + +#ifndef OS_APIS_LINUX_BARESYSCALL_H__ +#define OS_APIS_LINUX_BARESYSCALL_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#if defined(TARGET_IA32) + +#include "ia32-linux/baresyscall.h" +#else +#include "intel64-linux/baresyscall.h" + +#endif + +#include "unix-baresyscall.h" + +/*! + * The OS_SyscallDoClone system call creates a new process, thae child execute continues from the point of the call. + * @param[in] flags Flags to create the child process with. + * @param[in] childStack The child_stack argument specifies the location of the stack used by the child process. + * @param[out] parentTid The parent Tid. + * @param[in] childTls The tls of the new process. + * @param[out] childTid The new process Tid. + * + * @return Returns a OS_SYSCALLRETURN object, which can be used to + * examine success and result values. + */ +OS_SYSCALLRETURN OS_SyscallDoClone(ADDRINT flags, void* childStack, ADDRINT* parentTid, + void* childTls, ADDRINT* childTid); + +/* + * The address of the instruction that performs a system call inside OS-APIs. + */ +void* OS_GetInstructionAddressOfSyscall(); + +/* + * This is the signal restorer which is called after a signal handler + * had returned. (from RT signals) + * This is basically a system call to restore to restore original thread + * context. + * This syscall never returns + */ +void OS_RtSigReturn(); + +#ifdef __cplusplus +} +#endif + +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/baresyscall/mac-baresyscall.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/baresyscall/mac-baresyscall.h new file mode 100644 index 0000000..2bc652f --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/baresyscall/mac-baresyscall.h @@ -0,0 +1,39 @@ +// : os-apis +// : component public header + +#ifndef OS_APIS_MAC_BARESYSCALL_H__ +#define OS_APIS_MAC_BARESYSCALL_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#if defined(TARGET_IA32) + +#include "ia32-mac/baresyscall.h" +#else +#include "intel64-mac/baresyscall.h" + +#endif + +#include "unix-baresyscall.h" + +/*! + * @return The last system call's second return value. If IsSuccess() is FALSE, + * this is an O/S dependent error code. + */ +ADDRINT OS_SyscallReturnValue2(OS_SYSCALLRETURN ret); + +/*! + * @param[in] type The system call type (linux, int80 , int81 ....). + * + * @return The return address is the PC of the thread before it returns + * the system call. + */ +void* OS_GetSyscallTrapAddress(OS_SYSCALL_TYPE type); + +#ifdef __cplusplus +} +#endif + +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/baresyscall/syscalltypes.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/baresyscall/syscalltypes.h new file mode 100644 index 0000000..f8e8153 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/baresyscall/syscalltypes.h @@ -0,0 +1,16 @@ +// : os-apis +// : component public header + +/* + * These defines are replacers for enum, Since this file is included in an assembly file + * docall-ia32-mac-asm.spp we cannot use anything but defines + */ +#define OS_SYSCALL_TYPE_LINUX 0 +#define OS_SYSCALL_TYPE_WIN 1 +#define OS_SYSCALL_TYPE_SYSENTER 2 +#define OS_SYSCALL_TYPE_WOW64 3 +#define OS_SYSCALL_TYPE_INT80 4 +#define OS_SYSCALL_TYPE_INT81 5 +#define OS_SYSCALL_TYPE_INT82 6 +#define OS_SYSCALL_TYPE_INT83 7 +#define OS_SYSCALL_TYPE_UNIX OS_SYSCALL_TYPE_SYSENTER diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/baresyscall/unix-baresyscall.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/baresyscall/unix-baresyscall.h new file mode 100644 index 0000000..1e4a235 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/baresyscall/unix-baresyscall.h @@ -0,0 +1,45 @@ +// : os-apis +// : component public header + +#ifndef OS_APIS_UINUX_BARESYSCALL_H__ +#define OS_APIS_UINUX_BARESYSCALL_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/*! + * @return TRUE if the last system call returned a "success" return. + * FALSE if the last system call returned an "error" return. + */ +BOOL_T OS_SyscallIsSuccess(OS_SYSCALLRETURN ret); + +/*! + * @return The last system call's return value. If IsSuccess() is FALSE, + * this is an O/S dependent error code. + */ +ADDRINT OS_SyscallReturnValue(OS_SYSCALLRETURN ret); + +/*! + * @return The last system call's success return value. (not depend on IsSucess) + */ +ADDRINT OS_SyscallReturnSucessValue(OS_SYSCALLRETURN ret); + +/*! + * @return The last system call's error return value. (not depend on IsSucess) + */ +ADDRINT OS_SyscallReturnErrorValue(OS_SYSCALLRETURN ret); + +/*! + * @return The PC (program counter) that is reported by the OS for a thread + * that performs a blocking system call in OS-APIs. + * The return address is also the PC of the thread after it returns + * from the system call (for both failure and success scenarios). + */ +void* OS_GetSyscallReturnPC(ADDRINT sysno); + +#ifdef __cplusplus +} +#endif + +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/baresyscall/windows-baresyscall.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/baresyscall/windows-baresyscall.h new file mode 100644 index 0000000..5e2fe3f --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/baresyscall/windows-baresyscall.h @@ -0,0 +1,45 @@ +// : os-apis +// : component public header + +#ifndef OS_APIS_WINDOWS_BARESYSCALL_H__ +#define OS_APIS_WONDOWS_BARESYSCALL_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "types.h" + +#if defined(TARGET_IA32) + +#include "ia32-windows/baresyscall.h" +#else +#include "intel64-windows/baresyscall.h" + +#endif + +/*! + * Set of raw return values from a system call. + */ +typedef struct /**/ +{ + long _status; +} OS_SYSCALLRETURN; + +/*! + * Perform a system call. + * @param[in] sysno The system call number. + * @param[in] args Array of the system call parameters. + * @param[in] argCount The number of system call parameters. + * @param[in] type The system call type (linux, int80 , int81 ....). + * + * @return Returns a OS_SYSCALLRETURN object, which can be used to + * examine success and result values. + */ +OS_SYSCALLRETURN OS_SyscallDoCall(ADDRINT sysno, const ADDRINT *args, ADDRINT argCount, OS_SYSCALL_TYPE); + +#ifdef __cplusplus +} +#endif + +#endif // file guard diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/byteswap.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/byteswap.h new file mode 100644 index 0000000..74b0e91 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/byteswap.h @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ +#ifndef _BYTESWAP_H_ +#define _BYTESWAP_H_ + +/* endian.h rather than sys/endian.h so we get the machine-specific file. */ +#include + +#define bswap_16(x) swap16(x) +#define bswap_32(x) swap32(x) +#define bswap_64(x) swap64(x) + +#endif /* _BYTESWAP_H_ */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/complex.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/complex.h new file mode 100644 index 0000000..bf90f90 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/complex.h @@ -0,0 +1,96 @@ +/*- + * Copyright (c) 2001-2011 The FreeBSD Project. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#if HAS_BUILTIN_COMPLEX != 0 + +#ifndef _COMPLEX_H +#define _COMPLEX_H + +#include + +#ifdef __GNUC__ +#if __STDC_VERSION__ < 199901 +#define _Complex __complex__ +#endif +#define _Complex_I ((float _Complex)1.0i) +#endif + +#ifdef __generic +_Static_assert(__generic(_Complex_I, float _Complex, 1, 0), + "_Complex_I must be of type float _Complex"); +#endif + +#define complex _Complex +#define I _Complex_I + +__BEGIN_DECLS + +double cabs(double complex); +float cabsf(float complex); +long double cabsl(long double complex); +double carg(double complex); +float cargf(float complex); +long double cargl(long double complex); +double complex ccos(double complex); +float complex ccosf(float complex); +double complex ccosh(double complex); +float complex ccoshf(float complex); +double complex cexp(double complex); +float complex cexpf(float complex); +double cimag(double complex) __pure2; +float cimagf(float complex) __pure2; +long double cimagl(long double complex) __pure2; +double complex conj(double complex) __pure2; +float complex conjf(float complex) __pure2; +long double complex + conjl(long double complex) __pure2; +float complex cprojf(float complex) __pure2; +double complex cproj(double complex) __pure2; +long double complex + cprojl(long double complex) __pure2; +double creal(double complex) __pure2; +float crealf(float complex) __pure2; +long double creall(long double complex) __pure2; +double complex csin(double complex); +float complex csinf(float complex); +double complex csinh(double complex); +float complex csinhf(float complex); +double complex csqrt(double complex); +float complex csqrtf(float complex); +long double complex + csqrtl(long double complex); +double complex ctan(double complex); +float complex ctanf(float complex); +double complex ctanh(double complex); +float complex ctanhf(float complex); + +__END_DECLS + +#endif /* _COMPLEX_H */ + +#endif // HAS_BUILTIN_COMPLEX != 0 diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/ctype.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/ctype.h new file mode 100644 index 0000000..8ab1fdb --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/ctype.h @@ -0,0 +1,107 @@ +/* $OpenBSD: ctype.h,v 1.19 2005/12/13 00:35:22 millert Exp $ */ +/* $NetBSD: ctype.h,v 1.14 1994/10/26 00:55:47 cgd Exp $ */ + +/* + * Copyright (c) 1989 The Regents of the University of California. + * All rights reserved. + * (c) UNIX System Laboratories, Inc. + * All or some portions of this file are derived from material licensed + * to the University of California by American Telephone and Telegraph + * Co. or Unix System Laboratories, Inc. and are reproduced herein with + * the permission of UNIX System Laboratories, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)ctype.h 5.3 (Berkeley) 4/3/91 + */ + +#if !defined(_CTYPE_H_) && !defined(_INCLUDING_WINDOWS_H_) +#define _CTYPE_H_ + +#include +#include + +#define _CTYPE_U 0x01 +#define _CTYPE_L 0x02 +#define _CTYPE_D 0x04 +#define _CTYPE_S 0x08 +#define _CTYPE_P 0x10 +#define _CTYPE_C 0x20 +#define _CTYPE_X 0x40 +#define _CTYPE_B 0x80 +#define _CTYPE_R (_CTYPE_P|_CTYPE_U|_CTYPE_L|_CTYPE_D|_CTYPE_B) +#define _CTYPE_A (_CTYPE_L|_CTYPE_U) + +__BEGIN_DECLS + +extern const char *_ctype_; + +#if defined(__GNUC__) || defined(_ANSI_LIBRARY) || defined(lint) +int isalnum(int); +int isalpha(int); +int iscntrl(int); +int isdigit(int); +int isgraph(int); +int islower(int); +int isprint(int); +int ispunct(int); +int isspace(int); +int isupper(int); +int isxdigit(int); +int tolower(int); +int toupper(int); + +int isalnum_l(int, locale_t); +int isalpha_l(int, locale_t); +int isblank_l(int, locale_t); +int iscntrl_l(int, locale_t); +int isdigit_l(int, locale_t); +int isgraph_l(int, locale_t); +int islower_l(int, locale_t); +int isprint_l(int, locale_t); +int ispunct_l(int, locale_t); +int isspace_l(int, locale_t); +int isupper_l(int, locale_t); +int isxdigit_l(int, locale_t); +int tolower_l(int, locale_t); +int toupper_l(int, locale_t); + +#if __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 || __POSIX_VISIBLE > 200112 \ + || __XPG_VISIBLE > 600 +int isblank(int); +#endif + +#if __BSD_VISIBLE || __XPG_VISIBLE +int isascii(int); +int toascii(int); +int _tolower(int); +int _toupper(int); +#endif /* __BSD_VISIBLE || __XPG_VISIBLE */ + +#endif /* __GNUC__ || _ANSI_LIBRARY || lint */ + +__END_DECLS + +#endif /* !_CTYPE_H_ */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/dirent.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/dirent.h new file mode 100644 index 0000000..8cd3117 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/dirent.h @@ -0,0 +1,89 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef _DIRENT_H_ +#define _DIRENT_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif +#include "os-apis.h" +#ifdef __cplusplus +} +#endif + +__BEGIN_DECLS + +#ifndef DT_UNKNOWN +#define DT_UNKNOWN 0 +#define DT_FIFO 1 +#define DT_CHR 2 +#define DT_DIR 4 +#define DT_BLK 6 +#define DT_REG 8 +#define DT_LNK 10 +#define DT_SOCK 12 +#define DT_WHT 14 +#endif + +#define __DIRENT64_BODY \ + uint64_t d_ino; \ + int64_t d_off; \ + unsigned short d_reclen; \ + unsigned char d_type; \ + char d_name[256]; \ + +struct dirent { __DIRENT64_BODY }; +struct dirent64 { __DIRENT64_BODY }; + +#undef __DIRENT64_BODY + +#define d_fileno d_ino + +typedef struct DIR DIR; + +extern DIR* opendir(const char*); +extern DIR* fdopendir(int); +extern struct dirent* readdir(DIR*); +extern struct dirent64* readdir64(DIR*); +extern int readdir_r(DIR*, struct dirent*, struct dirent**); +extern int readdir64_r(DIR*, struct dirent64*, struct dirent64**); +extern int closedir(DIR*); +extern void rewinddir(DIR*); +extern NATIVE_FD dirfd(DIR*); +extern int alphasort(const struct dirent**, const struct dirent**); +extern int alphasort64(const struct dirent64**, const struct dirent64**); +extern int scandir(const char*, struct dirent***, int (*)(const struct dirent*), int (*)(const struct dirent**, const struct dirent**)); +extern int scandir64(const char*, struct dirent64***, int (*)(const struct dirent64*), int (*)(const struct dirent64**, const struct dirent64**)); + +__END_DECLS + +#endif /* _DIRENT_H_ */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/dlfcn.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/dlfcn.h new file mode 100644 index 0000000..d78f8d6 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/dlfcn.h @@ -0,0 +1,117 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ +#ifndef __DLFCN_H__ +#define __DLFCN_H__ + +#include + +__BEGIN_DECLS + +typedef struct { + const char *dli_fname; /* Pathname of shared object that + contains address */ + void *dli_fbase; /* Address at which shared object + is loaded */ + const char *dli_sname; /* Name of nearest symbol with address + lower than addr */ + void *dli_saddr; /* Exact address of symbol named + in dli_sname */ +} Dl_info; + +extern void* dlopen(const char* filename, int flag); +extern int dlclose(void* handle); +extern const char* dlerror(void); +extern void* dlsym(void* handle, const char* symbol); +extern int dladdr(const void* addr, Dl_info *info); + +enum { +#if defined(__APPLE__) + RTLD_LAZY = 1, + RTLD_NOW = 2, + RTLD_LOCAL = 4, + RTLD_GLOBAL = 8, + RTLD_NOLOAD = 0x10, + RTLD_NODELETE = 0x80, + RTLD_FIRST = 0x100, /* Mac OS X 10.5 and later */ +#else +# if defined(__LP64__) + RTLD_NOW = 2, +# else + RTLD_NOW = 0, +# endif + RTLD_LAZY = 1, + + RTLD_LOCAL = 0, +# if defined(__LP64__) + RTLD_GLOBAL = 0x00100, +# else + RTLD_GLOBAL = 2, +# endif + RTLD_NOLOAD = 4, +#endif +}; + +#if defined(__APPLE__) +# define RTLD_NEXT ((void *) -1) /* Search subsequent objects. */ +# define RTLD_DEFAULT ((void *) -2) /* Use default search algorithm. */ +# define RTLD_SELF ((void *) -3) /* Search this and subsequent objects (Mac OS X 10.5 and later) */ +# define RTLD_MAIN_ONLY ((void *) -5) /* Search main executable only (Mac OS X 10.5 and later) */ +#else +# if defined (__LP64__) +# define RTLD_DEFAULT ((void*) 0) +# define RTLD_NEXT ((void*) -1L) +# else +# define RTLD_DEFAULT ((void*) 0xffffffff) +# define RTLD_NEXT ((void*) 0xfffffffe) +# endif +#endif + +#if defined(__APPLE__) && defined(__NEED_DYLD_PRIVATE) +#include +#include + +struct dyld_unwind_sections +{ + const struct mach_header* mh; + const void* dwarf_section; + uintptr_t dwarf_section_length; + const void* compact_unwind_section; + uintptr_t compact_unwind_section_length; +}; + +extern bool _dyld_find_unwind_sections(void* addr, struct dyld_unwind_sections* info); +extern void _dyld_register_func_for_add_image(void (*func)(const struct mach_header* mh, intptr_t vmaddr_slide)); +extern void _dyld_register_func_for_remove_image(void (*func)(const struct mach_header* mh, intptr_t vmaddr_slide)); + +#endif + +__END_DECLS + +#endif /* __DLFCN_H */ + + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/elf.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/elf.h new file mode 100644 index 0000000..7a9485a --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/elf.h @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ +#ifndef _ELF_H +#define _ELF_H + +#include +#include +#include + +#include + +typedef struct { + __u32 a_type; + union { + __u32 a_val; + } a_un; +} Elf32_auxv_t; + +typedef struct { + __u64 a_type; + union { + __u64 a_val; + } a_un; +} Elf64_auxv_t; + +#define DF_ORIGIN 0x00000001 +#define DF_SYMBOLIC 0x00000002 +#define DF_TEXTREL 0x00000004 +#define DF_BIND_NOW 0x00000008 +#define DF_STATIC_TLS 0x00000010 + +#define DT_BIND_NOW 24 +#define DT_INIT_ARRAY 25 +#define DT_FINI_ARRAY 26 +#define DT_INIT_ARRAYSZ 27 +#define DT_FINI_ARRAYSZ 28 +#define DT_RUNPATH 29 +#define DT_FLAGS 30 +/* glibc and BSD disagree for DT_ENCODING; glibc looks wrong. */ +#define DT_PREINIT_ARRAY 32 +#define DT_PREINIT_ARRAYSZ 33 + +#define ELFOSABI_SYSV 0 /* Synonym for ELFOSABI_NONE used by valgrind. */ + +#define PT_GNU_RELRO 0x6474e552 + +#define STB_LOOS 10 +#define STB_HIOS 12 +#define STB_LOPROC 13 +#define STB_HIPROC 15 + +#define STT_GNU_IFUNC 10 +#define STT_LOOS 10 +#define STT_HIOS 12 +#define STT_LOPROC 13 +#define STT_HIPROC 15 + +#endif /* _ELF_H */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/endian.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/endian.h new file mode 100644 index 0000000..475b48c --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/endian.h @@ -0,0 +1,33 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ +#ifndef _ENDIAN_H_ +#define _ENDIAN_H_ + +#include + +#endif /* _ENDIAN_H_ */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/err.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/err.h new file mode 100644 index 0000000..9e94bcf --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/err.h @@ -0,0 +1,59 @@ +/* $OpenBSD: err.h,v 1.10 2006/01/06 18:53:04 millert Exp $ */ +/* $NetBSD: err.h,v 1.11 1994/10/26 00:55:52 cgd Exp $ */ + +/*- + * Copyright (c) 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)err.h 8.1 (Berkeley) 6/2/93 + */ + +#ifndef _ERR_H_ +#define _ERR_H_ + +#include +#include +#include + +__BEGIN_DECLS + +/* printf's format string isn't nullable; the err family's one is, + * so we can't use __errlike here. */ +#define __errlike(x, y) __attribute__((__format__(printf, x, y))) + +__noreturn void err(int, const char *, ...) __errlike(2, 3); +__noreturn void verr(int, const char *, __va_list) __errlike(2, 0); +__noreturn void errx(int, const char *, ...) __errlike(2, 3); +__noreturn void verrx(int, const char *, __va_list) __errlike(2, 0); +void warn(const char *, ...) __errlike(1, 2); +void vwarn(const char *, __va_list) __errlike(1, 0); +void warnx(const char *, ...) __errlike(1, 2); +void vwarnx(const char *, __va_list) __errlike(1, 0); + +__END_DECLS + +#endif /* !_ERR_H_ */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/errno.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/errno.h new file mode 100644 index 0000000..1a36b7a --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/errno.h @@ -0,0 +1,51 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ +#ifndef _ERRNO_H +#define _ERRNO_H + +#include +#include + +__BEGIN_DECLS + +/* on Linux, ENOTSUP and EOPNOTSUPP are defined as the same error code + * even if 1000.3 states that they should be different + */ +#ifndef ENOTSUP +#define ENOTSUP EOPNOTSUPP +#endif + +/* internal function returning the address of the thread-specific errno */ +extern volatile int* __errno(void) __pure2; + +/* a macro expanding to the errno l-value */ +#define errno (*__errno()) + +__END_DECLS + +#endif /* _ERRNO_H */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/execinfo.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/execinfo.h new file mode 100644 index 0000000..d1a3686 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/execinfo.h @@ -0,0 +1,8 @@ +#include + +__BEGIN_DECLS + +int backtrace(void **buffer, int size); +char **backtrace_symbols(void *const *buffer, int size); + +__END_DECLS diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/fcntl.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/fcntl.h new file mode 100644 index 0000000..365c30e --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/fcntl.h @@ -0,0 +1,145 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef _FCNTL_H +#define _FCNTL_H + +#include +#include +#include +#ifdef TARGET_MAC +# include +#else +# include +#endif +#include +#include /* this is not required, but makes client code much happier */ + +__BEGIN_DECLS + +#ifdef __LP64__ +/* LP64 kernels don't have flock64 because their flock is 64-bit. */ +struct flock64 { + short l_type; + short l_whence; + off64_t l_start; + off64_t l_len; + pid_t l_pid; +}; +#define F_GETLK64 F_GETLK +#define F_SETLK64 F_SETLK +#define F_SETLKW64 F_SETLKW +#endif + +#ifndef TARGET_MAC +# define O_ASYNC FASYNC +#endif + +#define SPLICE_F_MOVE 1 +#define SPLICE_F_NONBLOCK 2 +#define SPLICE_F_MORE 4 +#define SPLICE_F_GIFT 8 + +#define SYNC_FILE_RANGE_WAIT_BEFORE 1 +#define SYNC_FILE_RANGE_WRITE 2 +#define SYNC_FILE_RANGE_WAIT_AFTER 4 + +extern int creat(const char*, mode_t); +extern int creat64(const char*, mode_t); +extern int fallocate64(int, int, off64_t, off64_t); +extern int fallocate(int, int, off_t, off_t); +extern int fcntl(int, int, ...); +extern int openat(int, const char*, int, ...); +extern int openat64(int, const char*, int, ...); +extern int open(const char*, int, ...); +extern int open64(const char*, int, ...); +extern int posix_fadvise64(int, off64_t, off64_t, int); +extern int posix_fadvise(int, off_t, off_t, int); +extern int posix_fallocate64(int, off64_t, off64_t); +extern int posix_fallocate(int, off_t, off_t); +extern ssize_t splice(int, off64_t*, int, off64_t*, size_t, unsigned int); +extern ssize_t tee(int, int, size_t, unsigned int); +extern int unlinkat(int, const char*, int); +extern ssize_t vmsplice(int, const struct iovec*, size_t, unsigned int); + +#if defined(__BIONIC_FORTIFY) + +extern int __open_2(const char*, int); +extern int __open_real(const char*, int, ...) __RENAME(open); +extern int __openat_2(int, const char*, int); +extern int __openat_real(int, const char*, int, ...) __RENAME(openat); +__errordecl(__creat_missing_mode, "called with O_CREAT, but missing mode"); +__errordecl(__creat_too_many_args, "too many arguments"); + +#if !defined(__clang__) + +__BIONIC_FORTIFY_INLINE +int open(const char* pathname, int flags, ...) { + if (__builtin_constant_p(flags)) { + if ((flags & O_CREAT) && __builtin_va_arg_pack_len() == 0) { + __creat_missing_mode(); // compile time error + } + } + + if (__builtin_va_arg_pack_len() > 1) { + __creat_too_many_args(); // compile time error + } + + if ((__builtin_va_arg_pack_len() == 0) && !__builtin_constant_p(flags)) { + return __open_2(pathname, flags); + } + + return __open_real(pathname, flags, __builtin_va_arg_pack()); +} + +__BIONIC_FORTIFY_INLINE +int openat(int dirfd, const char* pathname, int flags, ...) { + if (__builtin_constant_p(flags)) { + if ((flags & O_CREAT) && __builtin_va_arg_pack_len() == 0) { + __creat_missing_mode(); // compile time error + } + } + + if (__builtin_va_arg_pack_len() > 1) { + __creat_too_many_args(); // compile time error + } + + if ((__builtin_va_arg_pack_len() == 0) && !__builtin_constant_p(flags)) { + return __openat_2(dirfd, pathname, flags); + } + + return __openat_real(dirfd, pathname, flags, __builtin_va_arg_pack()); +} + +#endif /* !defined(__clang__) */ + +#endif /* defined(__BIONIC_FORTIFY) */ + +__END_DECLS + +#endif /* _FCNTL_H */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/features.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/features.h new file mode 100644 index 0000000..a279c7f --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/features.h @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef _FEATURES_H_ +#define _FEATURES_H_ + +/* Our macro fun is all in . */ +#include + +#endif /* _FEATURES_H_ */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/fenv.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/fenv.h new file mode 100644 index 0000000..3eb03a3 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/fenv.h @@ -0,0 +1,75 @@ +/* $OpenBSD: fenv.h,v 1.2 2011/05/25 21:46:49 martynas Exp $ */ +/* $NetBSD: fenv.h,v 1.2.4.1 2011/02/08 16:18:55 bouyer Exp $ */ + +/* + * Copyright (c) 2010 The NetBSD Foundation, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _FENV_H_ +#define _FENV_H_ + +#include +#include + +__BEGIN_DECLS +#ifndef _MSC_VER +#pragma GCC visibility push(default) +#endif + +int feclearexcept(int); +int fegetexceptflag(fexcept_t *, int); +int feraiseexcept(int); +int fesetexceptflag(const fexcept_t *, int); +int fetestexcept(int); + +int fegetround(void); +int fesetround(int); + +int fegetenv(fenv_t *); +int feholdexcept(fenv_t *); +int fesetenv(const fenv_t *); +int feupdateenv(const fenv_t *); + +int feenableexcept(int); +int fedisableexcept(int); +int fegetexcept(void); + +/* + * The following constant represents the default floating-point environment + * (that is, the one installed at program startup) and has type pointer to + * const-qualified fenv_t. + * + * It can be used as an argument to the functions that manage the floating-point + * environment, namely fesetenv() and feupdateenv(). + */ +extern const fenv_t __fe_dfl_env; +#define FE_DFL_ENV (&__fe_dfl_env) + +#ifndef _MSC_VER +#pragma GCC visibility pop +#endif +__END_DECLS + +#endif /* ! _FENV_H_ */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/fnmatch.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/fnmatch.h new file mode 100644 index 0000000..772b4ef --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/fnmatch.h @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ +#ifndef _FNMATCH_H +#define _FNMATCH_H + +#include + +__BEGIN_DECLS + +#define FNM_NOMATCH 1 /* Match failed. */ +#define FNM_NOSYS 2 /* Function not supported (unused). */ + +#define FNM_NOESCAPE 0x01 /* Disable backslash escaping. */ +#define FNM_PATHNAME 0x02 /* Slash must be matched by slash. */ +#define FNM_PERIOD 0x04 /* Period must be matched by period. */ +#define FNM_LEADING_DIR 0x08 /* Ignore / after Imatch. */ +#define FNM_CASEFOLD 0x10 /* Case insensitive search. */ + +#define FNM_IGNORECASE FNM_CASEFOLD +#define FNM_FILE_NAME FNM_PATHNAME + +extern int fnmatch(const char *pattern, const char *string, int flags); + +__END_DECLS + +#endif /* _FNMATCH_H */ + diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/fts.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/fts.h new file mode 100644 index 0000000..da26a88 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/fts.h @@ -0,0 +1,125 @@ +/* $OpenBSD: fts.h,v 1.12 2009/08/27 16:19:27 millert Exp $ */ +/* $NetBSD: fts.h,v 1.5 1994/12/28 01:41:50 mycroft Exp $ */ + +/* + * Copyright (c) 1989, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)fts.h 8.3 (Berkeley) 8/14/94 + */ + +#ifndef _FTS_H_ +#define _FTS_H_ + +typedef struct { + struct _ftsent *fts_cur; /* current node */ + struct _ftsent *fts_child; /* linked list of children */ + struct _ftsent **fts_array; /* sort array */ + dev_t fts_dev; /* starting device # */ + char *fts_path; /* path for this descent */ + int fts_rfd; /* fd for root */ + size_t fts_pathlen; /* sizeof(path) */ + int fts_nitems; /* elements in the sort array */ + int (*fts_compar)(); /* compare function */ + +#define FTS_COMFOLLOW 0x0001 /* follow command line symlinks */ +#define FTS_LOGICAL 0x0002 /* logical walk */ +#define FTS_NOCHDIR 0x0004 /* don't change directories */ +#define FTS_NOSTAT 0x0008 /* don't get stat info */ +#define FTS_PHYSICAL 0x0010 /* physical walk */ +#define FTS_SEEDOT 0x0020 /* return dot and dot-dot */ +#define FTS_XDEV 0x0040 /* don't cross devices */ +#define FTS_OPTIONMASK 0x00ff /* valid user option mask */ + +#define FTS_NAMEONLY 0x1000 /* (private) child names only */ +#define FTS_STOP 0x2000 /* (private) unrecoverable error */ + int fts_options; /* fts_open options, global flags */ +} FTS; + +typedef struct _ftsent { + struct _ftsent *fts_cycle; /* cycle node */ + struct _ftsent *fts_parent; /* parent directory */ + struct _ftsent *fts_link; /* next file in directory */ + long fts_number; /* local numeric value */ + void *fts_pointer; /* local address value */ + char *fts_accpath; /* access path */ + char *fts_path; /* root path */ + int fts_errno; /* errno for this node */ + int fts_symfd; /* fd for symlink */ + size_t fts_pathlen; /* strlen(fts_path) */ + size_t fts_namelen; /* strlen(fts_name) */ + + ino_t fts_ino; /* inode */ + dev_t fts_dev; /* device */ + nlink_t fts_nlink; /* link count */ + +#define FTS_ROOTPARENTLEVEL -1 +#define FTS_ROOTLEVEL 0 +#define FTS_MAXLEVEL 0x7fff + short fts_level; /* depth (-1 to N) */ + +#define FTS_D 1 /* preorder directory */ +#define FTS_DC 2 /* directory that causes cycles */ +#define FTS_DEFAULT 3 /* none of the above */ +#define FTS_DNR 4 /* unreadable directory */ +#define FTS_DOT 5 /* dot or dot-dot */ +#define FTS_DP 6 /* postorder directory */ +#define FTS_ERR 7 /* error; errno is set */ +#define FTS_F 8 /* regular file */ +#define FTS_INIT 9 /* initialized only */ +#define FTS_NS 10 /* stat(2) failed */ +#define FTS_NSOK 11 /* no stat(2) requested */ +#define FTS_SL 12 /* symbolic link */ +#define FTS_SLNONE 13 /* symbolic link without target */ + unsigned short fts_info; /* user flags for FTSENT structure */ + +#define FTS_DONTCHDIR 0x01 /* don't chdir .. to the parent */ +#define FTS_SYMFOLLOW 0x02 /* followed a symlink to get here */ + unsigned short fts_flags; /* private flags for FTSENT structure */ + +#define FTS_AGAIN 1 /* read node again */ +#define FTS_FOLLOW 2 /* follow symbolic link */ +#define FTS_NOINSTR 3 /* no instructions */ +#define FTS_SKIP 4 /* discard node */ + unsigned short fts_instr; /* fts_set() instructions */ + + struct stat *fts_statp; /* stat(2) information */ + char fts_name[1]; /* file name */ +} FTSENT; + +#include + +__BEGIN_DECLS +FTSENT *fts_children(FTS *, int); +int fts_close(FTS *); +FTS *fts_open(char * const *, int, + int (*)(const FTSENT **, const FTSENT **)); +FTSENT *fts_read(FTS *); +int fts_set(FTS *, FTSENT *, int); +__END_DECLS + +#endif /* !_FTS_H_ */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/ftw.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/ftw.h new file mode 100644 index 0000000..af524d0 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/ftw.h @@ -0,0 +1,65 @@ +/* $NetBSD: ftw.h,v 1.1 2005/12/30 23:07:33 agc Exp $ */ + +/* From OpenBSD: ftw.h,v 1.1 2003/07/21 21:13:18 millert Exp */ + +/* + * Copyright (c) 2003 Todd C. Miller + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Sponsored in part by the Defense Advanced Research Projects + * Agency (DARPA) and Air Force Research Laboratory, Air Force + * Materiel Command, USAF, under agreement number F39502-99-1-0512. + */ + +#ifndef _FTW_H +#define _FTW_H + +#include +#include + +/* + * Valid flags for the 3rd argument to the function that is passed as the + * second argument to ftw(3) and nftw(3). Say it three times fast! + */ +#define FTW_F 0 /* File. */ +#define FTW_D 1 /* Directory. */ +#define FTW_DNR 2 /* Directory without read permission. */ +#define FTW_DP 3 /* Directory with subdirectories visited. */ +#define FTW_NS 4 /* Unknown type; stat() failed. */ +#define FTW_SL 5 /* Symbolic link. */ +#define FTW_SLN 6 /* Sym link that names a nonexistent file. */ + +/* + * Flags for use as the 4th argument to nftw(3). These may be ORed together. + */ +#define FTW_PHYS 0x01 /* Physical walk, don't follow sym links. */ +#define FTW_MOUNT 0x02 /* The walk does not cross a mount point. */ +#define FTW_DEPTH 0x04 /* Subdirs visited before the dir itself. */ +#define FTW_CHDIR 0x08 /* Change to a directory before reading it. */ + +struct FTW { + int base; + int level; +}; + +__BEGIN_DECLS +int ftw(const char *, int (*)(const char *, const struct stat *, int), int); +int nftw(const char *, int (*)(const char *, const struct stat *, int, + struct FTW *), int, int); +int ftw64(const char *, int (*)(const char *, const struct stat64 *, int), int); +int nftw64(const char *, int (*)(const char *, const struct stat64 *, int, + struct FTW *), int, int); +__END_DECLS + +#endif /* !_FTW_H */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/getopt.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/getopt.h new file mode 100644 index 0000000..4451941 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/getopt.h @@ -0,0 +1,78 @@ +/* $NetBSD: getopt.h,v 1.4 2000/07/07 10:43:54 ad Exp $ */ +/* $FreeBSD$ */ + +/*- + * Copyright (c) 2000 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Dieter Baron and Thomas Klausner. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _GETOPT_H_ +#define _GETOPT_H_ + +#include + +/* + * GNU-like getopt_long()/getopt_long_only() with 4.4BSD optreset extension. + * getopt() is declared here too for GNU programs. + */ +#define no_argument 0 +#define required_argument 1 +#define optional_argument 2 + +struct option { + /* name of long option */ + const char *name; + /* + * one of no_argument, required_argument, and optional_argument: + * whether option takes an argument + */ + int has_arg; + /* if not NULL, set *flag to val when option found */ + int *flag; + /* if flag not NULL, value to set *flag to; else return value */ + int val; +}; + +__BEGIN_DECLS +int getopt_long(int, char * const *, const char *, + const struct option *, int *); +int getopt_long_only(int, char * const *, const char *, + const struct option *, int *); +#ifndef _GETOPT_DECLARED +#define _GETOPT_DECLARED +int getopt(int, char * const [], const char *); + +extern char *optarg; /* getopt(3) external variables */ +extern int optind, opterr, optopt; +#endif +#ifndef _OPTRESET_DECLARED +#define _OPTRESET_DECLARED +extern int optreset; /* getopt(3) external variable */ +#endif +__END_DECLS + +#endif /* !_GETOPT_H_ */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/grp.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/grp.h new file mode 100644 index 0000000..fc4d520 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/grp.h @@ -0,0 +1,73 @@ +/* $OpenBSD: grp.h,v 1.8 2005/12/13 00:35:22 millert Exp $ */ +/* $NetBSD: grp.h,v 1.7 1995/04/29 05:30:40 cgd Exp $ */ + +/*- + * Copyright (c) 1989, 1993 + * The Regents of the University of California. All rights reserved. + * (c) UNIX System Laboratories, Inc. + * All or some portions of this file are derived from material licensed + * to the University of California by American Telephone and Telegraph + * Co. or Unix System Laboratories, Inc. and are reproduced herein with + * the permission of UNIX System Laboratories, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)grp.h 8.2 (Berkeley) 1/21/94 + */ + +#ifndef _GRP_H_ +#define _GRP_H_ + +#include +#include + +struct group { + char *gr_name; /* group name */ + char *gr_passwd; /* group password */ + gid_t gr_gid; /* group id */ + char **gr_mem; /* group members */ +}; + +__BEGIN_DECLS +struct group *getgrgid(gid_t); +struct group *getgrnam(const char *); +#if __POSIX_VISIBLE >= 200112 || __XPG_VISIBLE +struct group *getgrent(void); +void setgrent(void); +void endgrent(void); +int getgrgid_r(gid_t, struct group *, char *, + size_t, struct group **); +int getgrnam_r(const char *, struct group *, char *, + size_t, struct group **); +#endif + +int getgrouplist (const char *user, gid_t group, + gid_t *groups, int *ngroups); + +int initgroups (const char *user, gid_t group); + +__END_DECLS + +#endif /* !_GRP_H_ */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/i387/machine/fenv.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/i387/machine/fenv.h new file mode 100644 index 0000000..de45add --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/i387/machine/fenv.h @@ -0,0 +1,69 @@ +/*- + * Copyright (c) 2004-2005 David Schultz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD: src/lib/msun/i387/fenv.h,v 1.4 2005/03/17 22:21:46 das Exp $ + */ + +#ifndef _I387_FENV_H_ +#define _I387_FENV_H_ + +#include + +__BEGIN_DECLS + +/* + * To preserve binary compatibility with FreeBSD 5.3, we pack the + * mxcsr into some reserved fields, rather than changing sizeof(fenv_t). + */ +typedef struct { + __uint16_t __control; + __uint16_t __mxcsr_hi; + __uint16_t __status; + __uint16_t __mxcsr_lo; + __uint32_t __tag; + char __other[16]; +} fenv_t; + +typedef __uint16_t fexcept_t; + +/* Exception flags */ +#define FE_INVALID 0x01 +#define FE_DENORMAL 0x02 +#define FE_DIVBYZERO 0x04 +#define FE_OVERFLOW 0x08 +#define FE_UNDERFLOW 0x10 +#define FE_INEXACT 0x20 +#define FE_ALL_EXCEPT (FE_DIVBYZERO | FE_DENORMAL | FE_INEXACT | \ + FE_INVALID | FE_OVERFLOW | FE_UNDERFLOW) + +/* Rounding modes */ +#define FE_TONEAREST 0x0000 +#define FE_DOWNWARD 0x0400 +#define FE_UPWARD 0x0800 +#define FE_TOWARDZERO 0x0c00 + +__END_DECLS + +#endif /* !I387_FENV_H_ */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/inttypes.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/inttypes.h new file mode 100644 index 0000000..8853c08 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/inttypes.h @@ -0,0 +1,267 @@ +/* $OpenBSD: inttypes.h,v 1.9 2006/01/15 00:47:51 millert Exp $ */ + +/* + * Copyright (c) 1997, 2005 Todd C. Miller + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef _INTTYPES_H_ +#define _INTTYPES_H_ + +#include +#include + +#ifdef __LP64__ +#define __PRI_64_prefix "l" +#define __PRI_PTR_prefix "l" +#else +#define __PRI_64_prefix "ll" +#define __PRI_PTR_prefix +#endif + +/* + * 7.8.1 Macros for format specifiers + * + * Each of the following object-like macros expands to a string + * literal containing a conversion specifier, possibly modified by + * a prefix such as hh, h, l, or ll, suitable for use within the + * format argument of a formatted input/output function when + * converting the corresponding integer type. These macro names + * have the general form of PRI (character string literals for the + * fprintf family) or SCN (character string literals for the fscanf + * family), followed by the conversion specifier, followed by a + * name corresponding to a similar typedef name. For example, + * PRIdFAST32 can be used in a format string to print the value of + * an integer of type int_fast32_t. + */ + +/* fprintf macros for signed integers */ +#define PRId8 "d" /* int8_t */ +#define PRId16 "d" /* int16_t */ +#define PRId32 "d" /* int32_t */ +#define PRId64 __PRI_64_prefix"d" /* int64_t */ + +#define PRIdLEAST8 "d" /* int_least8_t */ +#define PRIdLEAST16 "d" /* int_least16_t */ +#define PRIdLEAST32 "d" /* int_least32_t */ +#define PRIdLEAST64 __PRI_64_prefix"d" /* int_least64_t */ + +#define PRIdFAST8 "d" /* int_fast8_t */ +#define PRIdFAST16 "d" /* int_fast16_t */ +#define PRIdFAST32 "d" /* int_fast32_t */ +#define PRIdFAST64 __PRI_64_prefix"d" /* int_fast64_t */ + +#define PRIdMAX "jd" /* intmax_t */ +#define PRIdPTR __PRI_PTR_prefix"d" /* intptr_t */ + +#define PRIi8 "i" /* int8_t */ +#define PRIi16 "i" /* int16_t */ +#define PRIi32 "i" /* int32_t */ +#define PRIi64 __PRI_64_prefix"i" /* int64_t */ + +#define PRIiLEAST8 "i" /* int_least8_t */ +#define PRIiLEAST16 "i" /* int_least16_t */ +#define PRIiLEAST32 "i" /* int_least32_t */ +#define PRIiLEAST64 __PRI_64_prefix"i" /* int_least64_t */ + +#define PRIiFAST8 "i" /* int_fast8_t */ +#define PRIiFAST16 "i" /* int_fast16_t */ +#define PRIiFAST32 "i" /* int_fast32_t */ +#define PRIiFAST64 __PRI_64_prefix"i" /* int_fast64_t */ + +#define PRIiMAX "ji" /* intmax_t */ +#define PRIiPTR __PRI_PTR_prefix"i" /* intptr_t */ + +/* fprintf macros for unsigned integers */ +#define PRIo8 "o" /* int8_t */ +#define PRIo16 "o" /* int16_t */ +#define PRIo32 "o" /* int32_t */ +#define PRIo64 __PRI_64_prefix"o" /* int64_t */ + +#define PRIoLEAST8 "o" /* int_least8_t */ +#define PRIoLEAST16 "o" /* int_least16_t */ +#define PRIoLEAST32 "o" /* int_least32_t */ +#define PRIoLEAST64 __PRI_64_prefix"o" /* int_least64_t */ + +#define PRIoFAST8 "o" /* int_fast8_t */ +#define PRIoFAST16 "o" /* int_fast16_t */ +#define PRIoFAST32 "o" /* int_fast32_t */ +#define PRIoFAST64 __PRI_64_prefix"o" /* int_fast64_t */ + +#define PRIoMAX "jo" /* intmax_t */ +#define PRIoPTR __PRI_PTR_prefix"o" /* intptr_t */ + +#define PRIu8 "u" /* uint8_t */ +#define PRIu16 "u" /* uint16_t */ +#define PRIu32 "u" /* uint32_t */ +#define PRIu64 __PRI_64_prefix"u" /* uint64_t */ + +#define PRIuLEAST8 "u" /* uint_least8_t */ +#define PRIuLEAST16 "u" /* uint_least16_t */ +#define PRIuLEAST32 "u" /* uint_least32_t */ +#define PRIuLEAST64 __PRI_64_prefix"u" /* uint_least64_t */ + +#define PRIuFAST8 "u" /* uint_fast8_t */ +#define PRIuFAST16 "u" /* uint_fast16_t */ +#define PRIuFAST32 "u" /* uint_fast32_t */ +#define PRIuFAST64 __PRI_64_prefix"u" /* uint_fast64_t */ + +#define PRIuMAX "ju" /* uintmax_t */ +#define PRIuPTR __PRI_PTR_prefix"u" /* uintptr_t */ + +#define PRIx8 "x" /* uint8_t */ +#define PRIx16 "x" /* uint16_t */ +#define PRIx32 "x" /* uint32_t */ +#define PRIx64 __PRI_64_prefix"x" /* uint64_t */ + +#define PRIxLEAST8 "x" /* uint_least8_t */ +#define PRIxLEAST16 "x" /* uint_least16_t */ +#define PRIxLEAST32 "x" /* uint_least32_t */ +#define PRIxLEAST64 __PRI_64_prefix"x" /* uint_least64_t */ + +#define PRIxFAST8 "x" /* uint_fast8_t */ +#define PRIxFAST16 "x" /* uint_fast16_t */ +#define PRIxFAST32 "x" /* uint_fast32_t */ +#define PRIxFAST64 __PRI_64_prefix"x" /* uint_fast64_t */ + +#define PRIxMAX "jx" /* uintmax_t */ +#define PRIxPTR __PRI_PTR_prefix"x" /* uintptr_t */ + +#define PRIX8 "X" /* uint8_t */ +#define PRIX16 "X" /* uint16_t */ +#define PRIX32 "X" /* uint32_t */ +#define PRIX64 __PRI_64_prefix"X" /* uint64_t */ + +#define PRIXLEAST8 "X" /* uint_least8_t */ +#define PRIXLEAST16 "X" /* uint_least16_t */ +#define PRIXLEAST32 "X" /* uint_least32_t */ +#define PRIXLEAST64 __PRI_64_prefix"X" /* uint_least64_t */ + +#define PRIXFAST8 "X" /* uint_fast8_t */ +#define PRIXFAST16 "X" /* uint_fast16_t */ +#define PRIXFAST32 "X" /* uint_fast32_t */ +#define PRIXFAST64 __PRI_64_prefix"X" /* uint_fast64_t */ + +#define PRIXMAX "jX" /* uintmax_t */ +#define PRIXPTR __PRI_PTR_prefix"X" /* uintptr_t */ + +/* fscanf macros for signed integers */ +#define SCNd8 "hhd" /* int8_t */ +#define SCNd16 "hd" /* int16_t */ +#define SCNd32 "d" /* int32_t */ +#define SCNd64 __PRI_64_prefix"d" /* int64_t */ + +#define SCNdLEAST8 "hhd" /* int_least8_t */ +#define SCNdLEAST16 "hd" /* int_least16_t */ +#define SCNdLEAST32 "d" /* int_least32_t */ +#define SCNdLEAST64 __PRI_64_prefix"d" /* int_least64_t */ + +#define SCNdFAST8 "hhd" /* int_fast8_t */ +#define SCNdFAST16 "hd" /* int_fast16_t */ +#define SCNdFAST32 "d" /* int_fast32_t */ +#define SCNdFAST64 __PRI_64_prefix"d" /* int_fast64_t */ + +#define SCNdMAX "jd" /* intmax_t */ +#define SCNdPTR __PRI_PTR_prefix"d" /* intptr_t */ + +#define SCNi8 "hhi" /* int8_t */ +#define SCNi16 "hi" /* int16_t */ +#define SCNi32 "i" /* int32_t */ +#define SCNi64 __PRI_64_prefix"i" /* int64_t */ + +#define SCNiLEAST8 "hhi" /* int_least8_t */ +#define SCNiLEAST16 "hi" /* int_least16_t */ +#define SCNiLEAST32 "i" /* int_least32_t */ +#define SCNiLEAST64 __PRI_64_prefix"i" /* int_least64_t */ + +#define SCNiFAST8 "hhi" /* int_fast8_t */ +#define SCNiFAST16 "hi" /* int_fast16_t */ +#define SCNiFAST32 "i" /* int_fast32_t */ +#define SCNiFAST64 __PRI_64_prefix"i" /* int_fast64_t */ + +#define SCNiMAX "ji" /* intmax_t */ +#define SCNiPTR __PRI_PTR_prefix"i" /* intptr_t */ + +/* fscanf macros for unsigned integers */ +#define SCNo8 "hho" /* uint8_t */ +#define SCNo16 "ho" /* uint16_t */ +#define SCNo32 "o" /* uint32_t */ +#define SCNo64 __PRI_64_prefix"o" /* uint64_t */ + +#define SCNoLEAST8 "hho" /* uint_least8_t */ +#define SCNoLEAST16 "ho" /* uint_least16_t */ +#define SCNoLEAST32 "o" /* uint_least32_t */ +#define SCNoLEAST64 __PRI_64_prefix"o" /* uint_least64_t */ + +#define SCNoFAST8 "hho" /* uint_fast8_t */ +#define SCNoFAST16 "ho" /* uint_fast16_t */ +#define SCNoFAST32 "o" /* uint_fast32_t */ +#define SCNoFAST64 __PRI_64_prefix"o" /* uint_fast64_t */ + +#define SCNoMAX "jo" /* uintmax_t */ +#define SCNoPTR __PRI_PTR_prefix"o" /* uintptr_t */ + +#define SCNu8 "hhu" /* uint8_t */ +#define SCNu16 "hu" /* uint16_t */ +#define SCNu32 "u" /* uint32_t */ +#define SCNu64 __PRI_64_prefix"u" /* uint64_t */ + +#define SCNuLEAST8 "hhu" /* uint_least8_t */ +#define SCNuLEAST16 "hu" /* uint_least16_t */ +#define SCNuLEAST32 "u" /* uint_least32_t */ +#define SCNuLEAST64 __PRI_64_prefix"u" /* uint_least64_t */ + +#define SCNuFAST8 "hhu" /* uint_fast8_t */ +#define SCNuFAST16 "hu" /* uint_fast16_t */ +#define SCNuFAST32 "u" /* uint_fast32_t */ +#define SCNuFAST64 __PRI_64_prefix"u" /* uint_fast64_t */ + +#define SCNuMAX "ju" /* uintmax_t */ +#define SCNuPTR __PRI_PTR_prefix"u" /* uintptr_t */ + +#define SCNx8 "hhx" /* uint8_t */ +#define SCNx16 "hx" /* uint16_t */ +#define SCNx32 "x" /* uint32_t */ +#define SCNx64 __PRI_64_prefix"x" /* uint64_t */ + +#define SCNxLEAST8 "hhx" /* uint_least8_t */ +#define SCNxLEAST16 "hx" /* uint_least16_t */ +#define SCNxLEAST32 "x" /* uint_least32_t */ +#define SCNxLEAST64 __PRI_64_prefix"x" /* uint_least64_t */ + +#define SCNxFAST8 "hhx" /* uint_fast8_t */ +#define SCNxFAST16 "hx" /* uint_fast16_t */ +#define SCNxFAST32 "x" /* uint_fast32_t */ +#define SCNxFAST64 __PRI_64_prefix"x" /* uint_fast64_t */ + +#define SCNxMAX "jx" /* uintmax_t */ +#define SCNxPTR __PRI_PTR_prefix"x" /* uintptr_t */ + +typedef struct { + intmax_t quot; /* quotient */ + intmax_t rem; /* remainder */ +} imaxdiv_t; + +__BEGIN_DECLS +intmax_t imaxabs(intmax_t) __pure2; +imaxdiv_t imaxdiv(intmax_t, intmax_t) __pure2; +intmax_t strtoimax(const char *, char **, int); +uintmax_t strtoumax(const char *, char **, int); +intmax_t wcstoimax(const wchar_t * __restrict, + wchar_t ** __restrict, int); +uintmax_t wcstoumax(const wchar_t * __restrict, + wchar_t ** __restrict, int); +__END_DECLS + +#endif /* _INTTYPES_H_ */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/a.out.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/a.out.h new file mode 100644 index 0000000..54b30ac --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/a.out.h @@ -0,0 +1,48 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef __ARM_A_OUT_H__ +#define __ARM_A_OUT_H__ +#include +#include +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +struct exec +{ + __u32 a_info; + __u32 a_text; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __u32 a_data; + __u32 a_bss; + __u32 a_syms; + __u32 a_entry; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __u32 a_trsize; + __u32 a_drsize; +}; +#define N_TXTADDR(a) (0x00008000) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define N_TRSIZE(a) ((a).a_trsize) +#define N_DRSIZE(a) ((a).a_drsize) +#define N_SYMSIZE(a) ((a).a_syms) +#define M_ARM 103 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#ifndef LIBRARY_START_TEXT +#define LIBRARY_START_TEXT (0x00c00000) +#endif +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/auxvec.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/auxvec.h new file mode 100644 index 0000000..2fa0e6b --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/auxvec.h @@ -0,0 +1,19 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#include diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/bitsperlong.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/bitsperlong.h new file mode 100644 index 0000000..5dc5060 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/bitsperlong.h @@ -0,0 +1,19 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#include diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/byteorder.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/byteorder.h new file mode 100644 index 0000000..6f17a48 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/byteorder.h @@ -0,0 +1,23 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef __ASM_ARM_BYTEORDER_H +#define __ASM_ARM_BYTEORDER_H +#include +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/errno.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/errno.h new file mode 100644 index 0000000..392cd94 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/errno.h @@ -0,0 +1,19 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#include diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/fcntl.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/fcntl.h new file mode 100644 index 0000000..995d145 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/fcntl.h @@ -0,0 +1,28 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _ARM_FCNTL_H +#define _ARM_FCNTL_H +#define O_DIRECTORY 040000 +#define O_NOFOLLOW 0100000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define O_DIRECT 0200000 +#define O_LARGEFILE 0400000 +#include +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/hwcap.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/hwcap.h new file mode 100644 index 0000000..e70f3b8 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/hwcap.h @@ -0,0 +1,50 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _UAPI__ASMARM_HWCAP_H +#define _UAPI__ASMARM_HWCAP_H +#define HWCAP_SWP (1 << 0) +#define HWCAP_HALF (1 << 1) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define HWCAP_THUMB (1 << 2) +#define HWCAP_26BIT (1 << 3) +#define HWCAP_FAST_MULT (1 << 4) +#define HWCAP_FPA (1 << 5) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define HWCAP_VFP (1 << 6) +#define HWCAP_EDSP (1 << 7) +#define HWCAP_JAVA (1 << 8) +#define HWCAP_IWMMXT (1 << 9) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define HWCAP_CRUNCH (1 << 10) +#define HWCAP_THUMBEE (1 << 11) +#define HWCAP_NEON (1 << 12) +#define HWCAP_VFPv3 (1 << 13) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define HWCAP_VFPv3D16 (1 << 14) +#define HWCAP_TLS (1 << 15) +#define HWCAP_VFPv4 (1 << 16) +#define HWCAP_IDIVA (1 << 17) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define HWCAP_IDIVT (1 << 18) +#define HWCAP_VFPD32 (1 << 19) +#define HWCAP_IDIV (HWCAP_IDIVA | HWCAP_IDIVT) +#define HWCAP_LPAE (1 << 20) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define HWCAP_EVTSTRM (1 << 21) +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/ioctl.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/ioctl.h new file mode 100644 index 0000000..7b7bd37 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/ioctl.h @@ -0,0 +1,19 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#include diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/ioctls.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/ioctls.h new file mode 100644 index 0000000..2c59181 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/ioctls.h @@ -0,0 +1,24 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef __ASM_ARM_IOCTLS_H +#define __ASM_ARM_IOCTLS_H +#define FIOQSIZE 0x545E +#include +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/ipcbuf.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/ipcbuf.h new file mode 100644 index 0000000..0021f14 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/ipcbuf.h @@ -0,0 +1,19 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#include diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/kvm.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/kvm.h new file mode 100644 index 0000000..2b5a17e --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/kvm.h @@ -0,0 +1,180 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef __ARM_KVM_H__ +#define __ARM_KVM_H__ +#include +#include +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __KVM_HAVE_GUEST_DEBUG +#define __KVM_HAVE_IRQ_LINE +#define KVM_REG_SIZE(id) (1U << (((id) & KVM_REG_SIZE_MASK) >> KVM_REG_SIZE_SHIFT)) +#define KVM_ARM_SVC_sp svc_regs[0] +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_ARM_SVC_lr svc_regs[1] +#define KVM_ARM_SVC_spsr svc_regs[2] +#define KVM_ARM_ABT_sp abt_regs[0] +#define KVM_ARM_ABT_lr abt_regs[1] +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_ARM_ABT_spsr abt_regs[2] +#define KVM_ARM_UND_sp und_regs[0] +#define KVM_ARM_UND_lr und_regs[1] +#define KVM_ARM_UND_spsr und_regs[2] +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_ARM_IRQ_sp irq_regs[0] +#define KVM_ARM_IRQ_lr irq_regs[1] +#define KVM_ARM_IRQ_spsr irq_regs[2] +#define KVM_ARM_FIQ_r8 fiq_regs[0] +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_ARM_FIQ_r9 fiq_regs[1] +#define KVM_ARM_FIQ_r10 fiq_regs[2] +#define KVM_ARM_FIQ_fp fiq_regs[3] +#define KVM_ARM_FIQ_ip fiq_regs[4] +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_ARM_FIQ_sp fiq_regs[5] +#define KVM_ARM_FIQ_lr fiq_regs[6] +#define KVM_ARM_FIQ_spsr fiq_regs[7] +struct kvm_regs { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + struct pt_regs usr_regs; + unsigned long svc_regs[3]; + unsigned long abt_regs[3]; + unsigned long und_regs[3]; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned long irq_regs[3]; + unsigned long fiq_regs[8]; +}; +#define KVM_ARM_TARGET_CORTEX_A15 0 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_ARM_TARGET_CORTEX_A7 1 +#define KVM_ARM_NUM_TARGETS 2 +#define KVM_ARM_DEVICE_TYPE_SHIFT 0 +#define KVM_ARM_DEVICE_TYPE_MASK (0xffff << KVM_ARM_DEVICE_TYPE_SHIFT) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_ARM_DEVICE_ID_SHIFT 16 +#define KVM_ARM_DEVICE_ID_MASK (0xffff << KVM_ARM_DEVICE_ID_SHIFT) +#define KVM_ARM_DEVICE_VGIC_V2 0 +#define KVM_VGIC_V2_ADDR_TYPE_DIST 0 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_VGIC_V2_ADDR_TYPE_CPU 1 +#define KVM_VGIC_V2_DIST_SIZE 0x1000 +#define KVM_VGIC_V2_CPU_SIZE 0x2000 +#define KVM_ARM_VCPU_POWER_OFF 0 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +struct kvm_vcpu_init { + __u32 target; + __u32 features[7]; +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +struct kvm_sregs { +}; +struct kvm_fpu { +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +struct kvm_guest_debug_arch { +}; +struct kvm_debug_exit_arch { +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +struct kvm_sync_regs { +}; +struct kvm_arch_memory_slot { +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_REG_ARM_COPROC_MASK 0x000000000FFF0000 +#define KVM_REG_ARM_COPROC_SHIFT 16 +#define KVM_REG_ARM_32_OPC2_MASK 0x0000000000000007 +#define KVM_REG_ARM_32_OPC2_SHIFT 0 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_REG_ARM_OPC1_MASK 0x0000000000000078 +#define KVM_REG_ARM_OPC1_SHIFT 3 +#define KVM_REG_ARM_CRM_MASK 0x0000000000000780 +#define KVM_REG_ARM_CRM_SHIFT 7 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_REG_ARM_32_CRN_MASK 0x0000000000007800 +#define KVM_REG_ARM_32_CRN_SHIFT 11 +#define ARM_CP15_REG_SHIFT_MASK(x,n) (((x) << KVM_REG_ARM_ ## n ## _SHIFT) & KVM_REG_ARM_ ## n ## _MASK) +#define __ARM_CP15_REG(op1,crn,crm,op2) (KVM_REG_ARM | (15 << KVM_REG_ARM_COPROC_SHIFT) | ARM_CP15_REG_SHIFT_MASK(op1, OPC1) | ARM_CP15_REG_SHIFT_MASK(crn, 32_CRN) | ARM_CP15_REG_SHIFT_MASK(crm, CRM) | ARM_CP15_REG_SHIFT_MASK(op2, 32_OPC2)) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ARM_CP15_REG32(...) (__ARM_CP15_REG(__VA_ARGS__) | KVM_REG_SIZE_U32) +#define __ARM_CP15_REG64(op1,crm) (__ARM_CP15_REG(op1, 0, crm, 0) | KVM_REG_SIZE_U64) +#define ARM_CP15_REG64(...) __ARM_CP15_REG64(__VA_ARGS__) +#define KVM_REG_ARM_TIMER_CTL ARM_CP15_REG32(0, 14, 3, 1) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_REG_ARM_TIMER_CNT ARM_CP15_REG64(1, 14) +#define KVM_REG_ARM_TIMER_CVAL ARM_CP15_REG64(3, 14) +#define KVM_REG_ARM_CORE (0x0010 << KVM_REG_ARM_COPROC_SHIFT) +#define KVM_REG_ARM_CORE_REG(name) (offsetof(struct kvm_regs, name) / 4) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_REG_ARM_DEMUX (0x0011 << KVM_REG_ARM_COPROC_SHIFT) +#define KVM_REG_ARM_DEMUX_ID_MASK 0x000000000000FF00 +#define KVM_REG_ARM_DEMUX_ID_SHIFT 8 +#define KVM_REG_ARM_DEMUX_ID_CCSIDR (0x00 << KVM_REG_ARM_DEMUX_ID_SHIFT) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_REG_ARM_DEMUX_VAL_MASK 0x00000000000000FF +#define KVM_REG_ARM_DEMUX_VAL_SHIFT 0 +#define KVM_REG_ARM_VFP (0x0012 << KVM_REG_ARM_COPROC_SHIFT) +#define KVM_REG_ARM_VFP_MASK 0x000000000000FFFF +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_REG_ARM_VFP_BASE_REG 0x0 +#define KVM_REG_ARM_VFP_FPSID 0x1000 +#define KVM_REG_ARM_VFP_FPSCR 0x1001 +#define KVM_REG_ARM_VFP_MVFR1 0x1006 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_REG_ARM_VFP_MVFR0 0x1007 +#define KVM_REG_ARM_VFP_FPEXC 0x1008 +#define KVM_REG_ARM_VFP_FPINST 0x1009 +#define KVM_REG_ARM_VFP_FPINST2 0x100A +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_DEV_ARM_VGIC_GRP_ADDR 0 +#define KVM_DEV_ARM_VGIC_GRP_DIST_REGS 1 +#define KVM_DEV_ARM_VGIC_GRP_CPU_REGS 2 +#define KVM_DEV_ARM_VGIC_CPUID_SHIFT 32 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_DEV_ARM_VGIC_CPUID_MASK (0xffULL << KVM_DEV_ARM_VGIC_CPUID_SHIFT) +#define KVM_DEV_ARM_VGIC_OFFSET_SHIFT 0 +#define KVM_DEV_ARM_VGIC_OFFSET_MASK (0xffffffffULL << KVM_DEV_ARM_VGIC_OFFSET_SHIFT) +#define KVM_ARM_IRQ_TYPE_SHIFT 24 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_ARM_IRQ_TYPE_MASK 0xff +#define KVM_ARM_IRQ_VCPU_SHIFT 16 +#define KVM_ARM_IRQ_VCPU_MASK 0xff +#define KVM_ARM_IRQ_NUM_SHIFT 0 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_ARM_IRQ_NUM_MASK 0xffff +#define KVM_ARM_IRQ_TYPE_CPU 0 +#define KVM_ARM_IRQ_TYPE_SPI 1 +#define KVM_ARM_IRQ_TYPE_PPI 2 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_ARM_IRQ_CPU_IRQ 0 +#define KVM_ARM_IRQ_CPU_FIQ 1 +#define KVM_ARM_IRQ_GIC_MAX 127 +#define KVM_PSCI_FN_BASE 0x95c1ba5e +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_PSCI_FN(n) (KVM_PSCI_FN_BASE + (n)) +#define KVM_PSCI_FN_CPU_SUSPEND KVM_PSCI_FN(0) +#define KVM_PSCI_FN_CPU_OFF KVM_PSCI_FN(1) +#define KVM_PSCI_FN_CPU_ON KVM_PSCI_FN(2) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_PSCI_FN_MIGRATE KVM_PSCI_FN(3) +#define KVM_PSCI_RET_SUCCESS 0 +#define KVM_PSCI_RET_NI ((unsigned long)-1) +#define KVM_PSCI_RET_INVAL ((unsigned long)-2) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_PSCI_RET_DENIED ((unsigned long)-3) +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/kvm_para.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/kvm_para.h new file mode 100644 index 0000000..e19f7a0 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/kvm_para.h @@ -0,0 +1,19 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#include diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/mman.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/mman.h new file mode 100644 index 0000000..40f0e97 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/mman.h @@ -0,0 +1,20 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#include +#define arch_mmap_check(addr, len, flags) (((flags) & MAP_FIXED && (addr) < FIRST_USER_ADDRESS) ? -EINVAL : 0) diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/msgbuf.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/msgbuf.h new file mode 100644 index 0000000..7809e3c --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/msgbuf.h @@ -0,0 +1,19 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#include diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/param.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/param.h new file mode 100644 index 0000000..5ccf935 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/param.h @@ -0,0 +1,19 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#include diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/perf_regs.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/perf_regs.h new file mode 100644 index 0000000..745bcf3 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/perf_regs.h @@ -0,0 +1,45 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _ASM_ARM_PERF_REGS_H +#define _ASM_ARM_PERF_REGS_H +enum perf_event_arm_regs { + PERF_REG_ARM_R0, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + PERF_REG_ARM_R1, + PERF_REG_ARM_R2, + PERF_REG_ARM_R3, + PERF_REG_ARM_R4, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + PERF_REG_ARM_R5, + PERF_REG_ARM_R6, + PERF_REG_ARM_R7, + PERF_REG_ARM_R8, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + PERF_REG_ARM_R9, + PERF_REG_ARM_R10, + PERF_REG_ARM_FP, + PERF_REG_ARM_IP, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + PERF_REG_ARM_SP, + PERF_REG_ARM_LR, + PERF_REG_ARM_PC, + PERF_REG_ARM_MAX, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +}; +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/poll.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/poll.h new file mode 100644 index 0000000..d7e8adc --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/poll.h @@ -0,0 +1,19 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#include diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/posix_types.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/posix_types.h new file mode 100644 index 0000000..5e436e1 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/posix_types.h @@ -0,0 +1,34 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef __ARCH_ARM_POSIX_TYPES_H +#define __ARCH_ARM_POSIX_TYPES_H +typedef unsigned short __kernel_mode_t; +#define __kernel_mode_t __kernel_mode_t +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +typedef unsigned short __kernel_ipc_pid_t; +#define __kernel_ipc_pid_t __kernel_ipc_pid_t +typedef unsigned short __kernel_uid_t; +typedef unsigned short __kernel_gid_t; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __kernel_uid_t __kernel_uid_t +typedef unsigned short __kernel_old_dev_t; +#define __kernel_old_dev_t __kernel_old_dev_t +#include +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/ptrace.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/ptrace.h new file mode 100644 index 0000000..9d39d49 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/ptrace.h @@ -0,0 +1,120 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _UAPI__ASM_ARM_PTRACE_H +#define _UAPI__ASM_ARM_PTRACE_H +#include +#define PTRACE_GETREGS 12 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define PTRACE_SETREGS 13 +#define PTRACE_GETFPREGS 14 +#define PTRACE_SETFPREGS 15 +#define PTRACE_GETWMMXREGS 18 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define PTRACE_SETWMMXREGS 19 +#define PTRACE_OLDSETOPTIONS 21 +#define PTRACE_GET_THREAD_AREA 22 +#define PTRACE_SET_SYSCALL 23 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define PTRACE_GETCRUNCHREGS 25 +#define PTRACE_SETCRUNCHREGS 26 +#define PTRACE_GETVFPREGS 27 +#define PTRACE_SETVFPREGS 28 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define PTRACE_GETHBPREGS 29 +#define PTRACE_SETHBPREGS 30 +#define USR26_MODE 0x00000000 +#define FIQ26_MODE 0x00000001 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define IRQ26_MODE 0x00000002 +#define SVC26_MODE 0x00000003 +#define USR_MODE 0x00000010 +#define SVC_MODE 0x00000013 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define FIQ_MODE 0x00000011 +#define IRQ_MODE 0x00000012 +#define ABT_MODE 0x00000017 +#define HYP_MODE 0x0000001a +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define UND_MODE 0x0000001b +#define SYSTEM_MODE 0x0000001f +#define MODE32_BIT 0x00000010 +#define MODE_MASK 0x0000001f +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define V4_PSR_T_BIT 0x00000020 +#define V7M_PSR_T_BIT 0x01000000 +#define PSR_T_BIT V4_PSR_T_BIT +#define PSR_F_BIT 0x00000040 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define PSR_I_BIT 0x00000080 +#define PSR_A_BIT 0x00000100 +#define PSR_E_BIT 0x00000200 +#define PSR_J_BIT 0x01000000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define PSR_Q_BIT 0x08000000 +#define PSR_V_BIT 0x10000000 +#define PSR_C_BIT 0x20000000 +#define PSR_Z_BIT 0x40000000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define PSR_N_BIT 0x80000000 +#define PSR_f 0xff000000 +#define PSR_s 0x00ff0000 +#define PSR_x 0x0000ff00 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define PSR_c 0x000000ff +#define APSR_MASK 0xf80f0000 +#define PSR_ISET_MASK 0x01000010 +#define PSR_IT_MASK 0x0600fc00 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define PSR_ENDIAN_MASK 0x00000200 +#define PSR_ENDSTATE 0 +#define PT_TEXT_ADDR 0x10000 +#define PT_DATA_ADDR 0x10004 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define PT_TEXT_END_ADDR 0x10008 +#ifndef __ASSEMBLY__ +struct pt_regs { + long uregs[18]; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +}; +#define ARM_cpsr uregs[16] +#define ARM_pc uregs[15] +#define ARM_lr uregs[14] +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ARM_sp uregs[13] +#define ARM_ip uregs[12] +#define ARM_fp uregs[11] +#define ARM_r10 uregs[10] +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ARM_r9 uregs[9] +#define ARM_r8 uregs[8] +#define ARM_r7 uregs[7] +#define ARM_r6 uregs[6] +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ARM_r5 uregs[5] +#define ARM_r4 uregs[4] +#define ARM_r3 uregs[3] +#define ARM_r2 uregs[2] +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ARM_r1 uregs[1] +#define ARM_r0 uregs[0] +#define ARM_ORIG_r0 uregs[17] +#define ARM_VFPREGS_SIZE ( 32 * 8 + 4 ) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/resource.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/resource.h new file mode 100644 index 0000000..371adb5 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/resource.h @@ -0,0 +1,19 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#include diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/sembuf.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/sembuf.h new file mode 100644 index 0000000..6ce6549 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/sembuf.h @@ -0,0 +1,19 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#include diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/setup.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/setup.h new file mode 100644 index 0000000..0f2a18b --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/setup.h @@ -0,0 +1,155 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _UAPI__ASMARM_SETUP_H +#define _UAPI__ASMARM_SETUP_H +#include +#define COMMAND_LINE_SIZE 1024 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ATAG_NONE 0x00000000 +struct tag_header { + __u32 size; + __u32 tag; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +}; +#define ATAG_CORE 0x54410001 +struct tag_core { + __u32 flags; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __u32 pagesize; + __u32 rootdev; +}; +#define ATAG_MEM 0x54410002 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +struct tag_mem32 { + __u32 size; + __u32 start; +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ATAG_VIDEOTEXT 0x54410003 +struct tag_videotext { + __u8 x; + __u8 y; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __u16 video_page; + __u8 video_mode; + __u8 video_cols; + __u16 video_ega_bx; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __u8 video_lines; + __u8 video_isvga; + __u16 video_points; +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ATAG_RAMDISK 0x54410004 +struct tag_ramdisk { + __u32 flags; + __u32 size; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __u32 start; +}; +#define ATAG_INITRD 0x54410005 +#define ATAG_INITRD2 0x54420005 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +struct tag_initrd { + __u32 start; + __u32 size; +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ATAG_SERIAL 0x54410006 +struct tag_serialnr { + __u32 low; + __u32 high; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +}; +#define ATAG_REVISION 0x54410007 +struct tag_revision { + __u32 rev; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +}; +#define ATAG_VIDEOLFB 0x54410008 +struct tag_videolfb { + __u16 lfb_width; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __u16 lfb_height; + __u16 lfb_depth; + __u16 lfb_linelength; + __u32 lfb_base; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __u32 lfb_size; + __u8 red_size; + __u8 red_pos; + __u8 green_size; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __u8 green_pos; + __u8 blue_size; + __u8 blue_pos; + __u8 rsvd_size; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __u8 rsvd_pos; +}; +#define ATAG_CMDLINE 0x54410009 +struct tag_cmdline { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + char cmdline[1]; +}; +#define ATAG_ACORN 0x41000101 +struct tag_acorn { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __u32 memc_control_reg; + __u32 vram_pages; + __u8 sounddefault; + __u8 adfsdrives; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +}; +#define ATAG_MEMCLK 0x41000402 +struct tag_memclk { + __u32 fmemclk; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +}; +struct tag { + struct tag_header hdr; + union { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + struct tag_core core; + struct tag_mem32 mem; + struct tag_videotext videotext; + struct tag_ramdisk ramdisk; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + struct tag_initrd initrd; + struct tag_serialnr serialnr; + struct tag_revision revision; + struct tag_videolfb videolfb; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + struct tag_cmdline cmdline; + struct tag_acorn acorn; + struct tag_memclk memclk; + } u; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +}; +struct tagtable { + __u32 tag; + int (*parse)(const struct tag *); +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +}; +#define tag_member_present(tag,member) ((unsigned long)(&((struct tag *)0L)->member + 1) <= (tag)->hdr.size * 4) +#define tag_next(t) ((struct tag *)((__u32 *)(t) + (t)->hdr.size)) +#define tag_size(type) ((sizeof(struct tag_header) + sizeof(struct type)) >> 2) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define for_each_tag(t,base) for (t = base; t->hdr.size; t = tag_next(t)) +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/shmbuf.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/shmbuf.h new file mode 100644 index 0000000..fe8b1be --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/shmbuf.h @@ -0,0 +1,19 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#include diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/sigcontext.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/sigcontext.h new file mode 100644 index 0000000..bda2339 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/sigcontext.h @@ -0,0 +1,50 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _ASMARM_SIGCONTEXT_H +#define _ASMARM_SIGCONTEXT_H +struct sigcontext { + unsigned long trap_no; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned long error_code; + unsigned long oldmask; + unsigned long arm_r0; + unsigned long arm_r1; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned long arm_r2; + unsigned long arm_r3; + unsigned long arm_r4; + unsigned long arm_r5; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned long arm_r6; + unsigned long arm_r7; + unsigned long arm_r8; + unsigned long arm_r9; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned long arm_r10; + unsigned long arm_fp; + unsigned long arm_ip; + unsigned long arm_sp; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned long arm_lr; + unsigned long arm_pc; + unsigned long arm_cpsr; + unsigned long fault_address; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +}; +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/siginfo.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/siginfo.h new file mode 100644 index 0000000..a31ebb2 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/siginfo.h @@ -0,0 +1,19 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#include diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/signal.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/signal.h new file mode 100644 index 0000000..fd39aaa --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/signal.h @@ -0,0 +1,110 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _UAPI_ASMARM_SIGNAL_H +#define _UAPI_ASMARM_SIGNAL_H +#include +struct siginfo; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define _KERNEL_NSIG 32 +typedef unsigned long sigset_t; +#define SIGHUP 1 +#define SIGINT 2 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SIGQUIT 3 +#define SIGILL 4 +#define SIGTRAP 5 +#define SIGABRT 6 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SIGIOT 6 +#define SIGBUS 7 +#define SIGFPE 8 +#define SIGKILL 9 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SIGUSR1 10 +#define SIGSEGV 11 +#define SIGUSR2 12 +#define SIGPIPE 13 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SIGALRM 14 +#define SIGTERM 15 +#define SIGSTKFLT 16 +#define SIGCHLD 17 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SIGCONT 18 +#define SIGSTOP 19 +#define SIGTSTP 20 +#define SIGTTIN 21 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SIGTTOU 22 +#define SIGURG 23 +#define SIGXCPU 24 +#define SIGXFSZ 25 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SIGVTALRM 26 +#define SIGPROF 27 +#define SIGWINCH 28 +#define SIGIO 29 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SIGPOLL SIGIO +#define SIGPWR 30 +#define SIGSYS 31 +#define SIGUNUSED 31 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __SIGRTMIN 32 +#define __SIGRTMAX _KERNEL__NSIG +#define SIGSWI 32 +#define SA_NOCLDSTOP 0x00000001 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SA_NOCLDWAIT 0x00000002 +#define SA_SIGINFO 0x00000004 +#define SA_THIRTYTWO 0x02000000 +#define SA_RESTORER 0x04000000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SA_ONSTACK 0x08000000 +#define SA_RESTART 0x10000000 +#define SA_NODEFER 0x40000000 +#define SA_RESETHAND 0x80000000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SA_NOMASK SA_NODEFER +#define SA_ONESHOT SA_RESETHAND +#define MINSIGSTKSZ 2048 +#define SIGSTKSZ 8192 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#include +struct sigaction { + union { + __sighandler_t _sa_handler; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + void (*_sa_sigaction)(int, struct siginfo *, void *); + } _u; + sigset_t sa_mask; + unsigned long sa_flags; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + void (*sa_restorer)(void); +}; +#define sa_handler _u._sa_handler +#define sa_sigaction _u._sa_sigaction +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +typedef struct sigaltstack { + void __user *ss_sp; + int ss_flags; + size_t ss_size; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +} stack_t; +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/socket.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/socket.h new file mode 100644 index 0000000..50a9874 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/socket.h @@ -0,0 +1,19 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#include diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/sockios.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/sockios.h new file mode 100644 index 0000000..710db92 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/sockios.h @@ -0,0 +1,19 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#include diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/stat.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/stat.h new file mode 100644 index 0000000..b3425dd --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/stat.h @@ -0,0 +1,91 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _ASMARM_STAT_H +#define _ASMARM_STAT_H +struct __old_kernel_stat { + unsigned short st_dev; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned short st_ino; + unsigned short st_mode; + unsigned short st_nlink; + unsigned short st_uid; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned short st_gid; + unsigned short st_rdev; + unsigned long st_size; + unsigned long st_atime; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned long st_mtime; + unsigned long st_ctime; +}; +#define STAT_HAVE_NSEC +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +struct stat { + unsigned long st_dev; + unsigned long st_ino; + unsigned short st_mode; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned short st_nlink; + unsigned short st_uid; + unsigned short st_gid; + unsigned long st_rdev; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned long st_size; + unsigned long st_blksize; + unsigned long st_blocks; + unsigned long st_atime; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned long st_atime_nsec; + unsigned long st_mtime; + unsigned long st_mtime_nsec; + unsigned long st_ctime; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned long st_ctime_nsec; + unsigned long __unused4; + unsigned long __unused5; +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +struct stat64 { + unsigned long long st_dev; + unsigned char __pad0[4]; +#define STAT64_HAS_BROKEN_ST_INO 1 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned long __st_ino; + unsigned int st_mode; + unsigned int st_nlink; + unsigned long st_uid; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned long st_gid; + unsigned long long st_rdev; + unsigned char __pad3[4]; + long long st_size; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned long st_blksize; + unsigned long long st_blocks; + unsigned long st_atime; + unsigned long st_atime_nsec; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned long st_mtime; + unsigned long st_mtime_nsec; + unsigned long st_ctime; + unsigned long st_ctime_nsec; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned long long st_ino; +}; +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/statfs.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/statfs.h new file mode 100644 index 0000000..d1f3b81 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/statfs.h @@ -0,0 +1,24 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _ASMARM_STATFS_H +#define _ASMARM_STATFS_H +#define ARCH_PACK_STATFS64 __attribute__((packed,aligned(4))) +#include +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/swab.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/swab.h new file mode 100644 index 0000000..2703324 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/swab.h @@ -0,0 +1,31 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _UAPI__ASM_ARM_SWAB_H +#define _UAPI__ASM_ARM_SWAB_H +#include +#include +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#ifndef __STRICT_ANSI__ +#define __SWAB_64_THRU_32__ +#endif +#ifndef __thumb__ +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif +#define __arch_swab32 __arch_swab32 +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/termbits.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/termbits.h new file mode 100644 index 0000000..42af6fe --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/termbits.h @@ -0,0 +1,19 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#include diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/termios.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/termios.h new file mode 100644 index 0000000..feca4c6 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/termios.h @@ -0,0 +1,19 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#include diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/types.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/types.h new file mode 100644 index 0000000..8250f43 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/types.h @@ -0,0 +1,19 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#include diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/unistd.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/unistd.h new file mode 100644 index 0000000..be9f36f --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm/asm/unistd.h @@ -0,0 +1,484 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _UAPI__ASM_ARM_UNISTD_H +#define _UAPI__ASM_ARM_UNISTD_H +#define __NR_OABI_SYSCALL_BASE 0x900000 +#define __NR_SYSCALL_BASE 0 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_restart_syscall (__NR_SYSCALL_BASE+ 0) +#define __NR_exit (__NR_SYSCALL_BASE+ 1) +#define __NR_fork (__NR_SYSCALL_BASE+ 2) +#define __NR_read (__NR_SYSCALL_BASE+ 3) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_write (__NR_SYSCALL_BASE+ 4) +#define __NR_open (__NR_SYSCALL_BASE+ 5) +#define __NR_close (__NR_SYSCALL_BASE+ 6) +#define __NR_creat (__NR_SYSCALL_BASE+ 8) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_link (__NR_SYSCALL_BASE+ 9) +#define __NR_unlink (__NR_SYSCALL_BASE+ 10) +#define __NR_execve (__NR_SYSCALL_BASE+ 11) +#define __NR_chdir (__NR_SYSCALL_BASE+ 12) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_time (__NR_SYSCALL_BASE+ 13) +#define __NR_mknod (__NR_SYSCALL_BASE+ 14) +#define __NR_chmod (__NR_SYSCALL_BASE+ 15) +#define __NR_lchown (__NR_SYSCALL_BASE+ 16) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_lseek (__NR_SYSCALL_BASE+ 19) +#define __NR_getpid (__NR_SYSCALL_BASE+ 20) +#define __NR_mount (__NR_SYSCALL_BASE+ 21) +#define __NR_umount (__NR_SYSCALL_BASE+ 22) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_setuid (__NR_SYSCALL_BASE+ 23) +#define __NR_getuid (__NR_SYSCALL_BASE+ 24) +#define __NR_stime (__NR_SYSCALL_BASE+ 25) +#define __NR_ptrace (__NR_SYSCALL_BASE+ 26) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_alarm (__NR_SYSCALL_BASE+ 27) +#define __NR_pause (__NR_SYSCALL_BASE+ 29) +#define __NR_utime (__NR_SYSCALL_BASE+ 30) +#define __NR_access (__NR_SYSCALL_BASE+ 33) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_nice (__NR_SYSCALL_BASE+ 34) +#define __NR_sync (__NR_SYSCALL_BASE+ 36) +#define __NR_kill (__NR_SYSCALL_BASE+ 37) +#define __NR_rename (__NR_SYSCALL_BASE+ 38) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_mkdir (__NR_SYSCALL_BASE+ 39) +#define __NR_rmdir (__NR_SYSCALL_BASE+ 40) +#define __NR_dup (__NR_SYSCALL_BASE+ 41) +#define __NR_pipe (__NR_SYSCALL_BASE+ 42) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_times (__NR_SYSCALL_BASE+ 43) +#define __NR_brk (__NR_SYSCALL_BASE+ 45) +#define __NR_setgid (__NR_SYSCALL_BASE+ 46) +#define __NR_getgid (__NR_SYSCALL_BASE+ 47) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_geteuid (__NR_SYSCALL_BASE+ 49) +#define __NR_getegid (__NR_SYSCALL_BASE+ 50) +#define __NR_acct (__NR_SYSCALL_BASE+ 51) +#define __NR_umount2 (__NR_SYSCALL_BASE+ 52) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_ioctl (__NR_SYSCALL_BASE+ 54) +#define __NR_fcntl (__NR_SYSCALL_BASE+ 55) +#define __NR_setpgid (__NR_SYSCALL_BASE+ 57) +#define __NR_umask (__NR_SYSCALL_BASE+ 60) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_chroot (__NR_SYSCALL_BASE+ 61) +#define __NR_ustat (__NR_SYSCALL_BASE+ 62) +#define __NR_dup2 (__NR_SYSCALL_BASE+ 63) +#define __NR_getppid (__NR_SYSCALL_BASE+ 64) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_getpgrp (__NR_SYSCALL_BASE+ 65) +#define __NR_setsid (__NR_SYSCALL_BASE+ 66) +#define __NR_sigaction (__NR_SYSCALL_BASE+ 67) +#define __NR_setreuid (__NR_SYSCALL_BASE+ 70) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_setregid (__NR_SYSCALL_BASE+ 71) +#define __NR_sigsuspend (__NR_SYSCALL_BASE+ 72) +#define __NR_sigpending (__NR_SYSCALL_BASE+ 73) +#define __NR_sethostname (__NR_SYSCALL_BASE+ 74) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_setrlimit (__NR_SYSCALL_BASE+ 75) +#define __NR_getrlimit (__NR_SYSCALL_BASE+ 76) +#define __NR_getrusage (__NR_SYSCALL_BASE+ 77) +#define __NR_gettimeofday (__NR_SYSCALL_BASE+ 78) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_settimeofday (__NR_SYSCALL_BASE+ 79) +#define __NR_getgroups (__NR_SYSCALL_BASE+ 80) +#define __NR_setgroups (__NR_SYSCALL_BASE+ 81) +#define __NR_select (__NR_SYSCALL_BASE+ 82) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_symlink (__NR_SYSCALL_BASE+ 83) +#define __NR_readlink (__NR_SYSCALL_BASE+ 85) +#define __NR_uselib (__NR_SYSCALL_BASE+ 86) +#define __NR_swapon (__NR_SYSCALL_BASE+ 87) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_reboot (__NR_SYSCALL_BASE+ 88) +#define __NR_readdir (__NR_SYSCALL_BASE+ 89) +#define __NR_mmap (__NR_SYSCALL_BASE+ 90) +#define __NR_munmap (__NR_SYSCALL_BASE+ 91) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_truncate (__NR_SYSCALL_BASE+ 92) +#define __NR_ftruncate (__NR_SYSCALL_BASE+ 93) +#define __NR_fchmod (__NR_SYSCALL_BASE+ 94) +#define __NR_fchown (__NR_SYSCALL_BASE+ 95) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_getpriority (__NR_SYSCALL_BASE+ 96) +#define __NR_setpriority (__NR_SYSCALL_BASE+ 97) +#define __NR_statfs (__NR_SYSCALL_BASE+ 99) +#define __NR_fstatfs (__NR_SYSCALL_BASE+100) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_socketcall (__NR_SYSCALL_BASE+102) +#define __NR_syslog (__NR_SYSCALL_BASE+103) +#define __NR_setitimer (__NR_SYSCALL_BASE+104) +#define __NR_getitimer (__NR_SYSCALL_BASE+105) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_stat (__NR_SYSCALL_BASE+106) +#define __NR_lstat (__NR_SYSCALL_BASE+107) +#define __NR_fstat (__NR_SYSCALL_BASE+108) +#define __NR_vhangup (__NR_SYSCALL_BASE+111) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_syscall (__NR_SYSCALL_BASE+113) +#define __NR_wait4 (__NR_SYSCALL_BASE+114) +#define __NR_swapoff (__NR_SYSCALL_BASE+115) +#define __NR_sysinfo (__NR_SYSCALL_BASE+116) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_ipc (__NR_SYSCALL_BASE+117) +#define __NR_fsync (__NR_SYSCALL_BASE+118) +#define __NR_sigreturn (__NR_SYSCALL_BASE+119) +#define __NR_clone (__NR_SYSCALL_BASE+120) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_setdomainname (__NR_SYSCALL_BASE+121) +#define __NR_uname (__NR_SYSCALL_BASE+122) +#define __NR_adjtimex (__NR_SYSCALL_BASE+124) +#define __NR_mprotect (__NR_SYSCALL_BASE+125) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_sigprocmask (__NR_SYSCALL_BASE+126) +#define __NR_init_module (__NR_SYSCALL_BASE+128) +#define __NR_delete_module (__NR_SYSCALL_BASE+129) +#define __NR_quotactl (__NR_SYSCALL_BASE+131) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_getpgid (__NR_SYSCALL_BASE+132) +#define __NR_fchdir (__NR_SYSCALL_BASE+133) +#define __NR_bdflush (__NR_SYSCALL_BASE+134) +#define __NR_sysfs (__NR_SYSCALL_BASE+135) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_personality (__NR_SYSCALL_BASE+136) +#define __NR_setfsuid (__NR_SYSCALL_BASE+138) +#define __NR_setfsgid (__NR_SYSCALL_BASE+139) +#define __NR__llseek (__NR_SYSCALL_BASE+140) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_getdents (__NR_SYSCALL_BASE+141) +#define __NR__newselect (__NR_SYSCALL_BASE+142) +#define __NR_flock (__NR_SYSCALL_BASE+143) +#define __NR_msync (__NR_SYSCALL_BASE+144) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_readv (__NR_SYSCALL_BASE+145) +#define __NR_writev (__NR_SYSCALL_BASE+146) +#define __NR_getsid (__NR_SYSCALL_BASE+147) +#define __NR_fdatasync (__NR_SYSCALL_BASE+148) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR__sysctl (__NR_SYSCALL_BASE+149) +#define __NR_mlock (__NR_SYSCALL_BASE+150) +#define __NR_munlock (__NR_SYSCALL_BASE+151) +#define __NR_mlockall (__NR_SYSCALL_BASE+152) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_munlockall (__NR_SYSCALL_BASE+153) +#define __NR_sched_setparam (__NR_SYSCALL_BASE+154) +#define __NR_sched_getparam (__NR_SYSCALL_BASE+155) +#define __NR_sched_setscheduler (__NR_SYSCALL_BASE+156) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_sched_getscheduler (__NR_SYSCALL_BASE+157) +#define __NR_sched_yield (__NR_SYSCALL_BASE+158) +#define __NR_sched_get_priority_max (__NR_SYSCALL_BASE+159) +#define __NR_sched_get_priority_min (__NR_SYSCALL_BASE+160) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_sched_rr_get_interval (__NR_SYSCALL_BASE+161) +#define __NR_nanosleep (__NR_SYSCALL_BASE+162) +#define __NR_mremap (__NR_SYSCALL_BASE+163) +#define __NR_setresuid (__NR_SYSCALL_BASE+164) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_getresuid (__NR_SYSCALL_BASE+165) +#define __NR_poll (__NR_SYSCALL_BASE+168) +#define __NR_nfsservctl (__NR_SYSCALL_BASE+169) +#define __NR_setresgid (__NR_SYSCALL_BASE+170) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_getresgid (__NR_SYSCALL_BASE+171) +#define __NR_prctl (__NR_SYSCALL_BASE+172) +#define __NR_rt_sigreturn (__NR_SYSCALL_BASE+173) +#define __NR_rt_sigaction (__NR_SYSCALL_BASE+174) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_rt_sigprocmask (__NR_SYSCALL_BASE+175) +#define __NR_rt_sigpending (__NR_SYSCALL_BASE+176) +#define __NR_rt_sigtimedwait (__NR_SYSCALL_BASE+177) +#define __NR_rt_sigqueueinfo (__NR_SYSCALL_BASE+178) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_rt_sigsuspend (__NR_SYSCALL_BASE+179) +#define __NR_pread64 (__NR_SYSCALL_BASE+180) +#define __NR_pwrite64 (__NR_SYSCALL_BASE+181) +#define __NR_chown (__NR_SYSCALL_BASE+182) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_getcwd (__NR_SYSCALL_BASE+183) +#define __NR_capget (__NR_SYSCALL_BASE+184) +#define __NR_capset (__NR_SYSCALL_BASE+185) +#define __NR_sigaltstack (__NR_SYSCALL_BASE+186) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_sendfile (__NR_SYSCALL_BASE+187) +#define __NR_vfork (__NR_SYSCALL_BASE+190) +#define __NR_ugetrlimit (__NR_SYSCALL_BASE+191) +#define __NR_mmap2 (__NR_SYSCALL_BASE+192) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_truncate64 (__NR_SYSCALL_BASE+193) +#define __NR_ftruncate64 (__NR_SYSCALL_BASE+194) +#define __NR_stat64 (__NR_SYSCALL_BASE+195) +#define __NR_lstat64 (__NR_SYSCALL_BASE+196) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_fstat64 (__NR_SYSCALL_BASE+197) +#define __NR_lchown32 (__NR_SYSCALL_BASE+198) +#define __NR_getuid32 (__NR_SYSCALL_BASE+199) +#define __NR_getgid32 (__NR_SYSCALL_BASE+200) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_geteuid32 (__NR_SYSCALL_BASE+201) +#define __NR_getegid32 (__NR_SYSCALL_BASE+202) +#define __NR_setreuid32 (__NR_SYSCALL_BASE+203) +#define __NR_setregid32 (__NR_SYSCALL_BASE+204) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_getgroups32 (__NR_SYSCALL_BASE+205) +#define __NR_setgroups32 (__NR_SYSCALL_BASE+206) +#define __NR_fchown32 (__NR_SYSCALL_BASE+207) +#define __NR_setresuid32 (__NR_SYSCALL_BASE+208) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_getresuid32 (__NR_SYSCALL_BASE+209) +#define __NR_setresgid32 (__NR_SYSCALL_BASE+210) +#define __NR_getresgid32 (__NR_SYSCALL_BASE+211) +#define __NR_chown32 (__NR_SYSCALL_BASE+212) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_setuid32 (__NR_SYSCALL_BASE+213) +#define __NR_setgid32 (__NR_SYSCALL_BASE+214) +#define __NR_setfsuid32 (__NR_SYSCALL_BASE+215) +#define __NR_setfsgid32 (__NR_SYSCALL_BASE+216) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_getdents64 (__NR_SYSCALL_BASE+217) +#define __NR_pivot_root (__NR_SYSCALL_BASE+218) +#define __NR_mincore (__NR_SYSCALL_BASE+219) +#define __NR_madvise (__NR_SYSCALL_BASE+220) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_fcntl64 (__NR_SYSCALL_BASE+221) +#define __NR_gettid (__NR_SYSCALL_BASE+224) +#define __NR_readahead (__NR_SYSCALL_BASE+225) +#define __NR_setxattr (__NR_SYSCALL_BASE+226) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_lsetxattr (__NR_SYSCALL_BASE+227) +#define __NR_fsetxattr (__NR_SYSCALL_BASE+228) +#define __NR_getxattr (__NR_SYSCALL_BASE+229) +#define __NR_lgetxattr (__NR_SYSCALL_BASE+230) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_fgetxattr (__NR_SYSCALL_BASE+231) +#define __NR_listxattr (__NR_SYSCALL_BASE+232) +#define __NR_llistxattr (__NR_SYSCALL_BASE+233) +#define __NR_flistxattr (__NR_SYSCALL_BASE+234) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_removexattr (__NR_SYSCALL_BASE+235) +#define __NR_lremovexattr (__NR_SYSCALL_BASE+236) +#define __NR_fremovexattr (__NR_SYSCALL_BASE+237) +#define __NR_tkill (__NR_SYSCALL_BASE+238) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_sendfile64 (__NR_SYSCALL_BASE+239) +#define __NR_futex (__NR_SYSCALL_BASE+240) +#define __NR_sched_setaffinity (__NR_SYSCALL_BASE+241) +#define __NR_sched_getaffinity (__NR_SYSCALL_BASE+242) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_io_setup (__NR_SYSCALL_BASE+243) +#define __NR_io_destroy (__NR_SYSCALL_BASE+244) +#define __NR_io_getevents (__NR_SYSCALL_BASE+245) +#define __NR_io_submit (__NR_SYSCALL_BASE+246) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_io_cancel (__NR_SYSCALL_BASE+247) +#define __NR_exit_group (__NR_SYSCALL_BASE+248) +#define __NR_lookup_dcookie (__NR_SYSCALL_BASE+249) +#define __NR_epoll_create (__NR_SYSCALL_BASE+250) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_epoll_ctl (__NR_SYSCALL_BASE+251) +#define __NR_epoll_wait (__NR_SYSCALL_BASE+252) +#define __NR_remap_file_pages (__NR_SYSCALL_BASE+253) +#define __NR_set_tid_address (__NR_SYSCALL_BASE+256) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_timer_create (__NR_SYSCALL_BASE+257) +#define __NR_timer_settime (__NR_SYSCALL_BASE+258) +#define __NR_timer_gettime (__NR_SYSCALL_BASE+259) +#define __NR_timer_getoverrun (__NR_SYSCALL_BASE+260) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_timer_delete (__NR_SYSCALL_BASE+261) +#define __NR_clock_settime (__NR_SYSCALL_BASE+262) +#define __NR_clock_gettime (__NR_SYSCALL_BASE+263) +#define __NR_clock_getres (__NR_SYSCALL_BASE+264) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_clock_nanosleep (__NR_SYSCALL_BASE+265) +#define __NR_statfs64 (__NR_SYSCALL_BASE+266) +#define __NR_fstatfs64 (__NR_SYSCALL_BASE+267) +#define __NR_tgkill (__NR_SYSCALL_BASE+268) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_utimes (__NR_SYSCALL_BASE+269) +#define __NR_arm_fadvise64_64 (__NR_SYSCALL_BASE+270) +#define __NR_pciconfig_iobase (__NR_SYSCALL_BASE+271) +#define __NR_pciconfig_read (__NR_SYSCALL_BASE+272) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_pciconfig_write (__NR_SYSCALL_BASE+273) +#define __NR_mq_open (__NR_SYSCALL_BASE+274) +#define __NR_mq_unlink (__NR_SYSCALL_BASE+275) +#define __NR_mq_timedsend (__NR_SYSCALL_BASE+276) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_mq_timedreceive (__NR_SYSCALL_BASE+277) +#define __NR_mq_notify (__NR_SYSCALL_BASE+278) +#define __NR_mq_getsetattr (__NR_SYSCALL_BASE+279) +#define __NR_waitid (__NR_SYSCALL_BASE+280) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_socket (__NR_SYSCALL_BASE+281) +#define __NR_bind (__NR_SYSCALL_BASE+282) +#define __NR_connect (__NR_SYSCALL_BASE+283) +#define __NR_listen (__NR_SYSCALL_BASE+284) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_accept (__NR_SYSCALL_BASE+285) +#define __NR_getsockname (__NR_SYSCALL_BASE+286) +#define __NR_getpeername (__NR_SYSCALL_BASE+287) +#define __NR_socketpair (__NR_SYSCALL_BASE+288) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_send (__NR_SYSCALL_BASE+289) +#define __NR_sendto (__NR_SYSCALL_BASE+290) +#define __NR_recv (__NR_SYSCALL_BASE+291) +#define __NR_recvfrom (__NR_SYSCALL_BASE+292) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_shutdown (__NR_SYSCALL_BASE+293) +#define __NR_setsockopt (__NR_SYSCALL_BASE+294) +#define __NR_getsockopt (__NR_SYSCALL_BASE+295) +#define __NR_sendmsg (__NR_SYSCALL_BASE+296) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_recvmsg (__NR_SYSCALL_BASE+297) +#define __NR_semop (__NR_SYSCALL_BASE+298) +#define __NR_semget (__NR_SYSCALL_BASE+299) +#define __NR_semctl (__NR_SYSCALL_BASE+300) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_msgsnd (__NR_SYSCALL_BASE+301) +#define __NR_msgrcv (__NR_SYSCALL_BASE+302) +#define __NR_msgget (__NR_SYSCALL_BASE+303) +#define __NR_msgctl (__NR_SYSCALL_BASE+304) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_shmat (__NR_SYSCALL_BASE+305) +#define __NR_shmdt (__NR_SYSCALL_BASE+306) +#define __NR_shmget (__NR_SYSCALL_BASE+307) +#define __NR_shmctl (__NR_SYSCALL_BASE+308) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_add_key (__NR_SYSCALL_BASE+309) +#define __NR_request_key (__NR_SYSCALL_BASE+310) +#define __NR_keyctl (__NR_SYSCALL_BASE+311) +#define __NR_semtimedop (__NR_SYSCALL_BASE+312) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_vserver (__NR_SYSCALL_BASE+313) +#define __NR_ioprio_set (__NR_SYSCALL_BASE+314) +#define __NR_ioprio_get (__NR_SYSCALL_BASE+315) +#define __NR_inotify_init (__NR_SYSCALL_BASE+316) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_inotify_add_watch (__NR_SYSCALL_BASE+317) +#define __NR_inotify_rm_watch (__NR_SYSCALL_BASE+318) +#define __NR_mbind (__NR_SYSCALL_BASE+319) +#define __NR_get_mempolicy (__NR_SYSCALL_BASE+320) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_set_mempolicy (__NR_SYSCALL_BASE+321) +#define __NR_openat (__NR_SYSCALL_BASE+322) +#define __NR_mkdirat (__NR_SYSCALL_BASE+323) +#define __NR_mknodat (__NR_SYSCALL_BASE+324) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_fchownat (__NR_SYSCALL_BASE+325) +#define __NR_futimesat (__NR_SYSCALL_BASE+326) +#define __NR_fstatat64 (__NR_SYSCALL_BASE+327) +#define __NR_unlinkat (__NR_SYSCALL_BASE+328) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_renameat (__NR_SYSCALL_BASE+329) +#define __NR_linkat (__NR_SYSCALL_BASE+330) +#define __NR_symlinkat (__NR_SYSCALL_BASE+331) +#define __NR_readlinkat (__NR_SYSCALL_BASE+332) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_fchmodat (__NR_SYSCALL_BASE+333) +#define __NR_faccessat (__NR_SYSCALL_BASE+334) +#define __NR_pselect6 (__NR_SYSCALL_BASE+335) +#define __NR_ppoll (__NR_SYSCALL_BASE+336) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_unshare (__NR_SYSCALL_BASE+337) +#define __NR_set_robust_list (__NR_SYSCALL_BASE+338) +#define __NR_get_robust_list (__NR_SYSCALL_BASE+339) +#define __NR_splice (__NR_SYSCALL_BASE+340) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_arm_sync_file_range (__NR_SYSCALL_BASE+341) +#define __NR_sync_file_range2 __NR_arm_sync_file_range +#define __NR_tee (__NR_SYSCALL_BASE+342) +#define __NR_vmsplice (__NR_SYSCALL_BASE+343) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_move_pages (__NR_SYSCALL_BASE+344) +#define __NR_getcpu (__NR_SYSCALL_BASE+345) +#define __NR_epoll_pwait (__NR_SYSCALL_BASE+346) +#define __NR_kexec_load (__NR_SYSCALL_BASE+347) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_utimensat (__NR_SYSCALL_BASE+348) +#define __NR_signalfd (__NR_SYSCALL_BASE+349) +#define __NR_timerfd_create (__NR_SYSCALL_BASE+350) +#define __NR_eventfd (__NR_SYSCALL_BASE+351) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_fallocate (__NR_SYSCALL_BASE+352) +#define __NR_timerfd_settime (__NR_SYSCALL_BASE+353) +#define __NR_timerfd_gettime (__NR_SYSCALL_BASE+354) +#define __NR_signalfd4 (__NR_SYSCALL_BASE+355) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_eventfd2 (__NR_SYSCALL_BASE+356) +#define __NR_epoll_create1 (__NR_SYSCALL_BASE+357) +#define __NR_dup3 (__NR_SYSCALL_BASE+358) +#define __NR_pipe2 (__NR_SYSCALL_BASE+359) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_inotify_init1 (__NR_SYSCALL_BASE+360) +#define __NR_preadv (__NR_SYSCALL_BASE+361) +#define __NR_pwritev (__NR_SYSCALL_BASE+362) +#define __NR_rt_tgsigqueueinfo (__NR_SYSCALL_BASE+363) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_perf_event_open (__NR_SYSCALL_BASE+364) +#define __NR_recvmmsg (__NR_SYSCALL_BASE+365) +#define __NR_accept4 (__NR_SYSCALL_BASE+366) +#define __NR_fanotify_init (__NR_SYSCALL_BASE+367) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_fanotify_mark (__NR_SYSCALL_BASE+368) +#define __NR_prlimit64 (__NR_SYSCALL_BASE+369) +#define __NR_name_to_handle_at (__NR_SYSCALL_BASE+370) +#define __NR_open_by_handle_at (__NR_SYSCALL_BASE+371) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_clock_adjtime (__NR_SYSCALL_BASE+372) +#define __NR_syncfs (__NR_SYSCALL_BASE+373) +#define __NR_sendmmsg (__NR_SYSCALL_BASE+374) +#define __NR_setns (__NR_SYSCALL_BASE+375) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_process_vm_readv (__NR_SYSCALL_BASE+376) +#define __NR_process_vm_writev (__NR_SYSCALL_BASE+377) +#define __NR_kcmp (__NR_SYSCALL_BASE+378) +#define __NR_finit_module (__NR_SYSCALL_BASE+379) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_sched_setattr (__NR_SYSCALL_BASE+380) +#define __NR_sched_getattr (__NR_SYSCALL_BASE+381) +#define __ARM_NR_BASE (__NR_SYSCALL_BASE+0x0f0000) +#define __ARM_NR_breakpoint (__ARM_NR_BASE+1) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __ARM_NR_cacheflush (__ARM_NR_BASE+2) +#define __ARM_NR_usr26 (__ARM_NR_BASE+3) +#define __ARM_NR_usr32 (__ARM_NR_BASE+4) +#define __ARM_NR_set_tls (__ARM_NR_BASE+5) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#undef __NR_time +#undef __NR_umount +#undef __NR_stime +#undef __NR_alarm +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#undef __NR_utime +#undef __NR_getrlimit +#undef __NR_select +#undef __NR_readdir +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#undef __NR_mmap +#undef __NR_socketcall +#undef __NR_syscall +#undef __NR_ipc +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/auxvec.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/auxvec.h new file mode 100644 index 0000000..3aa54b6 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/auxvec.h @@ -0,0 +1,23 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef __ASM_AUXVEC_H +#define __ASM_AUXVEC_H +#define AT_SYSINFO_EHDR 33 +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/bitsperlong.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/bitsperlong.h new file mode 100644 index 0000000..e53ff65 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/bitsperlong.h @@ -0,0 +1,24 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef __ASM_BITSPERLONG_H +#define __ASM_BITSPERLONG_H +#define __BITS_PER_LONG 64 +#include +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/byteorder.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/byteorder.h new file mode 100644 index 0000000..92b1d48 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/byteorder.h @@ -0,0 +1,28 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef __ASM_BYTEORDER_H +#define __ASM_BYTEORDER_H +#ifdef __AARCH64EB__ +#include +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#else +#include +#endif +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/errno.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/errno.h new file mode 100644 index 0000000..392cd94 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/errno.h @@ -0,0 +1,19 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#include diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/fcntl.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/fcntl.h new file mode 100644 index 0000000..c62f260 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/fcntl.h @@ -0,0 +1,28 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef __ASM_FCNTL_H +#define __ASM_FCNTL_H +#define O_DIRECTORY 040000 +#define O_NOFOLLOW 0100000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define O_DIRECT 0200000 +#define O_LARGEFILE 0400000 +#include +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/hwcap.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/hwcap.h new file mode 100644 index 0000000..ccea53d --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/hwcap.h @@ -0,0 +1,31 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _UAPI__ASM_HWCAP_H +#define _UAPI__ASM_HWCAP_H +#define HWCAP_FP (1 << 0) +#define HWCAP_ASIMD (1 << 1) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define HWCAP_EVTSTRM (1 << 2) +#define HWCAP_AES (1 << 3) +#define HWCAP_PMULL (1 << 4) +#define HWCAP_SHA1 (1 << 5) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define HWCAP_SHA2 (1 << 6) +#define HWCAP_CRC32 (1 << 7) +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/ioctl.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/ioctl.h new file mode 100644 index 0000000..7b7bd37 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/ioctl.h @@ -0,0 +1,19 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#include diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/ioctls.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/ioctls.h new file mode 100644 index 0000000..0c66935 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/ioctls.h @@ -0,0 +1,19 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#include diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/ipcbuf.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/ipcbuf.h new file mode 100644 index 0000000..0021f14 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/ipcbuf.h @@ -0,0 +1,19 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#include diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/kvm.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/kvm.h new file mode 100644 index 0000000..93abd43 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/kvm.h @@ -0,0 +1,158 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef __ARM_KVM_H__ +#define __ARM_KVM_H__ +#define KVM_SPSR_EL1 0 +#define KVM_SPSR_SVC KVM_SPSR_EL1 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_SPSR_ABT 1 +#define KVM_SPSR_UND 2 +#define KVM_SPSR_IRQ 3 +#define KVM_SPSR_FIQ 4 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_NR_SPSR 5 +#ifndef __ASSEMBLY__ +#include +#include +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __KVM_HAVE_GUEST_DEBUG +#define __KVM_HAVE_IRQ_LINE +#define KVM_REG_SIZE(id) (1U << (((id) & KVM_REG_SIZE_MASK) >> KVM_REG_SIZE_SHIFT)) +struct kvm_regs { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + struct user_pt_regs regs; + __u64 sp_el1; + __u64 elr_el1; + __u64 spsr[KVM_NR_SPSR]; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + struct user_fpsimd_state fp_regs; +}; +#define KVM_ARM_TARGET_AEM_V8 0 +#define KVM_ARM_TARGET_FOUNDATION_V8 1 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_ARM_TARGET_CORTEX_A57 2 +#define KVM_ARM_TARGET_XGENE_POTENZA 3 +#define KVM_ARM_NUM_TARGETS 4 +#define KVM_ARM_DEVICE_TYPE_SHIFT 0 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_ARM_DEVICE_TYPE_MASK (0xffff << KVM_ARM_DEVICE_TYPE_SHIFT) +#define KVM_ARM_DEVICE_ID_SHIFT 16 +#define KVM_ARM_DEVICE_ID_MASK (0xffff << KVM_ARM_DEVICE_ID_SHIFT) +#define KVM_ARM_DEVICE_VGIC_V2 0 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_VGIC_V2_ADDR_TYPE_DIST 0 +#define KVM_VGIC_V2_ADDR_TYPE_CPU 1 +#define KVM_VGIC_V2_DIST_SIZE 0x1000 +#define KVM_VGIC_V2_CPU_SIZE 0x2000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_ARM_VCPU_POWER_OFF 0 +#define KVM_ARM_VCPU_EL1_32BIT 1 +struct kvm_vcpu_init { + __u32 target; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __u32 features[7]; +}; +struct kvm_sregs { +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +struct kvm_fpu { +}; +struct kvm_guest_debug_arch { +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +struct kvm_debug_exit_arch { +}; +struct kvm_sync_regs { +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +struct kvm_arch_memory_slot { +}; +#define KVM_REG_ARM_COPROC_MASK 0x000000000FFF0000 +#define KVM_REG_ARM_COPROC_SHIFT 16 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_REG_ARM_CORE (0x0010 << KVM_REG_ARM_COPROC_SHIFT) +#define KVM_REG_ARM_CORE_REG(name) (offsetof(struct kvm_regs, name) / sizeof(__u32)) +#define KVM_REG_ARM_DEMUX (0x0011 << KVM_REG_ARM_COPROC_SHIFT) +#define KVM_REG_ARM_DEMUX_ID_MASK 0x000000000000FF00 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_REG_ARM_DEMUX_ID_SHIFT 8 +#define KVM_REG_ARM_DEMUX_ID_CCSIDR (0x00 << KVM_REG_ARM_DEMUX_ID_SHIFT) +#define KVM_REG_ARM_DEMUX_VAL_MASK 0x00000000000000FF +#define KVM_REG_ARM_DEMUX_VAL_SHIFT 0 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_REG_ARM64_SYSREG (0x0013 << KVM_REG_ARM_COPROC_SHIFT) +#define KVM_REG_ARM64_SYSREG_OP0_MASK 0x000000000000c000 +#define KVM_REG_ARM64_SYSREG_OP0_SHIFT 14 +#define KVM_REG_ARM64_SYSREG_OP1_MASK 0x0000000000003800 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_REG_ARM64_SYSREG_OP1_SHIFT 11 +#define KVM_REG_ARM64_SYSREG_CRN_MASK 0x0000000000000780 +#define KVM_REG_ARM64_SYSREG_CRN_SHIFT 7 +#define KVM_REG_ARM64_SYSREG_CRM_MASK 0x0000000000000078 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_REG_ARM64_SYSREG_CRM_SHIFT 3 +#define KVM_REG_ARM64_SYSREG_OP2_MASK 0x0000000000000007 +#define KVM_REG_ARM64_SYSREG_OP2_SHIFT 0 +#define ARM64_SYS_REG_SHIFT_MASK(x,n) (((x) << KVM_REG_ARM64_SYSREG_ ## n ## _SHIFT) & KVM_REG_ARM64_SYSREG_ ## n ## _MASK) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __ARM64_SYS_REG(op0,op1,crn,crm,op2) (KVM_REG_ARM64 | KVM_REG_ARM64_SYSREG | ARM64_SYS_REG_SHIFT_MASK(op0, OP0) | ARM64_SYS_REG_SHIFT_MASK(op1, OP1) | ARM64_SYS_REG_SHIFT_MASK(crn, CRN) | ARM64_SYS_REG_SHIFT_MASK(crm, CRM) | ARM64_SYS_REG_SHIFT_MASK(op2, OP2)) +#define ARM64_SYS_REG(...) (__ARM64_SYS_REG(__VA_ARGS__) | KVM_REG_SIZE_U64) +#define KVM_REG_ARM_TIMER_CTL ARM64_SYS_REG(3, 3, 14, 3, 1) +#define KVM_REG_ARM_TIMER_CNT ARM64_SYS_REG(3, 3, 14, 3, 2) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_REG_ARM_TIMER_CVAL ARM64_SYS_REG(3, 3, 14, 0, 2) +#define KVM_DEV_ARM_VGIC_GRP_ADDR 0 +#define KVM_DEV_ARM_VGIC_GRP_DIST_REGS 1 +#define KVM_DEV_ARM_VGIC_GRP_CPU_REGS 2 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_DEV_ARM_VGIC_CPUID_SHIFT 32 +#define KVM_DEV_ARM_VGIC_CPUID_MASK (0xffULL << KVM_DEV_ARM_VGIC_CPUID_SHIFT) +#define KVM_DEV_ARM_VGIC_OFFSET_SHIFT 0 +#define KVM_DEV_ARM_VGIC_OFFSET_MASK (0xffffffffULL << KVM_DEV_ARM_VGIC_OFFSET_SHIFT) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_ARM_IRQ_TYPE_SHIFT 24 +#define KVM_ARM_IRQ_TYPE_MASK 0xff +#define KVM_ARM_IRQ_VCPU_SHIFT 16 +#define KVM_ARM_IRQ_VCPU_MASK 0xff +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_ARM_IRQ_NUM_SHIFT 0 +#define KVM_ARM_IRQ_NUM_MASK 0xffff +#define KVM_ARM_IRQ_TYPE_CPU 0 +#define KVM_ARM_IRQ_TYPE_SPI 1 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_ARM_IRQ_TYPE_PPI 2 +#define KVM_ARM_IRQ_CPU_IRQ 0 +#define KVM_ARM_IRQ_CPU_FIQ 1 +#define KVM_ARM_IRQ_GIC_MAX 127 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_PSCI_FN_BASE 0x95c1ba5e +#define KVM_PSCI_FN(n) (KVM_PSCI_FN_BASE + (n)) +#define KVM_PSCI_FN_CPU_SUSPEND KVM_PSCI_FN(0) +#define KVM_PSCI_FN_CPU_OFF KVM_PSCI_FN(1) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_PSCI_FN_CPU_ON KVM_PSCI_FN(2) +#define KVM_PSCI_FN_MIGRATE KVM_PSCI_FN(3) +#define KVM_PSCI_RET_SUCCESS 0 +#define KVM_PSCI_RET_NI ((unsigned long)-1) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_PSCI_RET_INVAL ((unsigned long)-2) +#define KVM_PSCI_RET_DENIED ((unsigned long)-3) +#endif +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/kvm_para.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/kvm_para.h new file mode 100644 index 0000000..e19f7a0 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/kvm_para.h @@ -0,0 +1,19 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#include diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/mman.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/mman.h new file mode 100644 index 0000000..6c23fb6 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/mman.h @@ -0,0 +1,19 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#include diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/msgbuf.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/msgbuf.h new file mode 100644 index 0000000..7809e3c --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/msgbuf.h @@ -0,0 +1,19 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#include diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/param.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/param.h new file mode 100644 index 0000000..e35613e --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/param.h @@ -0,0 +1,24 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef __ASM_PARAM_H +#define __ASM_PARAM_H +#define EXEC_PAGESIZE 65536 +#include +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/poll.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/poll.h new file mode 100644 index 0000000..d7e8adc --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/poll.h @@ -0,0 +1,19 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#include diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/posix_types.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/posix_types.h new file mode 100644 index 0000000..1b89253 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/posix_types.h @@ -0,0 +1,19 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#include diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/ptrace.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/ptrace.h new file mode 100644 index 0000000..5650e2d --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/ptrace.h @@ -0,0 +1,79 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _UAPI__ASM_PTRACE_H +#define _UAPI__ASM_PTRACE_H +#include +#include +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define PSR_MODE_EL0t 0x00000000 +#define PSR_MODE_EL1t 0x00000004 +#define PSR_MODE_EL1h 0x00000005 +#define PSR_MODE_EL2t 0x00000008 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define PSR_MODE_EL2h 0x00000009 +#define PSR_MODE_EL3t 0x0000000c +#define PSR_MODE_EL3h 0x0000000d +#define PSR_MODE_MASK 0x0000000f +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define PSR_MODE32_BIT 0x00000010 +#define PSR_F_BIT 0x00000040 +#define PSR_I_BIT 0x00000080 +#define PSR_A_BIT 0x00000100 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define PSR_D_BIT 0x00000200 +#define PSR_Q_BIT 0x08000000 +#define PSR_V_BIT 0x10000000 +#define PSR_C_BIT 0x20000000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define PSR_Z_BIT 0x40000000 +#define PSR_N_BIT 0x80000000 +#define PSR_f 0xff000000 +#define PSR_s 0x00ff0000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define PSR_x 0x0000ff00 +#define PSR_c 0x000000ff +#ifndef __ASSEMBLY__ +struct user_pt_regs { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __u64 regs[31]; + __u64 sp; + __u64 pc; + __u64 pstate; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +}; +struct user_fpsimd_state { + __uint128_t vregs[32]; + __u32 fpsr; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __u32 fpcr; +}; +struct user_hwdebug_state { + __u32 dbg_info; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __u32 pad; + struct { + __u64 addr; + __u32 ctrl; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __u32 pad; + } dbg_regs[16]; +}; +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/resource.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/resource.h new file mode 100644 index 0000000..371adb5 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/resource.h @@ -0,0 +1,19 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#include diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/sembuf.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/sembuf.h new file mode 100644 index 0000000..6ce6549 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/sembuf.h @@ -0,0 +1,19 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#include diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/setup.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/setup.h new file mode 100644 index 0000000..9a0bfab --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/setup.h @@ -0,0 +1,24 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef __ASM_SETUP_H +#define __ASM_SETUP_H +#include +#define COMMAND_LINE_SIZE 2048 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/shmbuf.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/shmbuf.h new file mode 100644 index 0000000..fe8b1be --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/shmbuf.h @@ -0,0 +1,19 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#include diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/sigcontext.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/sigcontext.h new file mode 100644 index 0000000..c59f9c0 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/sigcontext.h @@ -0,0 +1,46 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _UAPI__ASM_SIGCONTEXT_H +#define _UAPI__ASM_SIGCONTEXT_H +#include +struct sigcontext { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __u64 fault_address; + __u64 regs[31]; + __u64 sp; + __u64 pc; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __u64 pstate; + __u8 __reserved[4096] __attribute__((__aligned__(16))); +}; +struct _aarch64_ctx { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __u32 magic; + __u32 size; +}; +#define FPSIMD_MAGIC 0x46508001 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +struct fpsimd_context { + struct _aarch64_ctx head; + __u32 fpsr; + __u32 fpcr; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __uint128_t vregs[32]; +}; +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/siginfo.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/siginfo.h new file mode 100644 index 0000000..82fe0a2 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/siginfo.h @@ -0,0 +1,24 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef __ASM_SIGINFO_H +#define __ASM_SIGINFO_H +#define __ARCH_SI_PREAMBLE_SIZE (4 * sizeof(int)) +#include +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/signal.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/signal.h new file mode 100644 index 0000000..39f8c48 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/signal.h @@ -0,0 +1,24 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef __ASM_SIGNAL_H +#define __ASM_SIGNAL_H +#define SA_RESTORER 0x04000000 +#include +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/socket.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/socket.h new file mode 100644 index 0000000..50a9874 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/socket.h @@ -0,0 +1,19 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#include diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/sockios.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/sockios.h new file mode 100644 index 0000000..710db92 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/sockios.h @@ -0,0 +1,19 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#include diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/stat.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/stat.h new file mode 100644 index 0000000..af7ebfc --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/stat.h @@ -0,0 +1,19 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#include diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/statfs.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/statfs.h new file mode 100644 index 0000000..8f38412 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/statfs.h @@ -0,0 +1,24 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef __ASM_STATFS_H +#define __ASM_STATFS_H +#define ARCH_PACK_COMPAT_STATFS64 __attribute__((packed,aligned(4))) +#include +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/swab.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/swab.h new file mode 100644 index 0000000..0049f53 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/swab.h @@ -0,0 +1,19 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#include diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/termbits.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/termbits.h new file mode 100644 index 0000000..42af6fe --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/termbits.h @@ -0,0 +1,19 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#include diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/termios.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/termios.h new file mode 100644 index 0000000..feca4c6 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/termios.h @@ -0,0 +1,19 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#include diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/types.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/types.h new file mode 100644 index 0000000..8250f43 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/types.h @@ -0,0 +1,19 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#include diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/unistd.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/unistd.h new file mode 100644 index 0000000..697186a --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-arm64/asm/unistd.h @@ -0,0 +1,19 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#include diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/auxvec.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/auxvec.h new file mode 100644 index 0000000..fad637b --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/auxvec.h @@ -0,0 +1,21 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef __ASM_GENERIC_AUXVEC_H +#define __ASM_GENERIC_AUXVEC_H +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/bitsperlong.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/bitsperlong.h new file mode 100644 index 0000000..7f0a0fc --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/bitsperlong.h @@ -0,0 +1,25 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _UAPI__ASM_GENERIC_BITS_PER_LONG +#define _UAPI__ASM_GENERIC_BITS_PER_LONG +#ifndef __BITS_PER_LONG +#define __BITS_PER_LONG 32 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/errno-base.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/errno-base.h new file mode 100644 index 0000000..a26bf75 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/errno-base.h @@ -0,0 +1,64 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _ASM_GENERIC_ERRNO_BASE_H +#define _ASM_GENERIC_ERRNO_BASE_H +#define EPERM 1 +#define ENOENT 2 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ESRCH 3 +#define EINTR 4 +#define EIO 5 +#define ENXIO 6 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define E2BIG 7 +#define ENOEXEC 8 +#define EBADF 9 +#define ECHILD 10 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define EAGAIN 11 +#define ENOMEM 12 +#define EACCES 13 +#define EFAULT 14 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ENOTBLK 15 +#define EBUSY 16 +#define EEXIST 17 +#define EXDEV 18 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ENODEV 19 +#define ENOTDIR 20 +#define EISDIR 21 +#define EINVAL 22 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ENFILE 23 +#define EMFILE 24 +#define ENOTTY 25 +#define ETXTBSY 26 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define EFBIG 27 +#define ENOSPC 28 +#define ESPIPE 29 +#define EROFS 30 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define EMLINK 31 +#define EPIPE 32 +#define EDOM 33 +#define ERANGE 34 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/errno.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/errno.h new file mode 100644 index 0000000..91c5dea --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/errno.h @@ -0,0 +1,146 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _ASM_GENERIC_ERRNO_H +#define _ASM_GENERIC_ERRNO_H +#include +#define EDEADLK 35 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ENAMETOOLONG 36 +#define ENOLCK 37 +#define ENOSYS 38 +#define ENOTEMPTY 39 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ELOOP 40 +#define EWOULDBLOCK EAGAIN +#define ENOMSG 42 +#define EIDRM 43 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ECHRNG 44 +#define EL2NSYNC 45 +#define EL3HLT 46 +#define EL3RST 47 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ELNRNG 48 +#define EUNATCH 49 +#define ENOCSI 50 +#define EL2HLT 51 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define EBADE 52 +#define EBADR 53 +#define EXFULL 54 +#define ENOANO 55 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define EBADRQC 56 +#define EBADSLT 57 +#define EDEADLOCK EDEADLK +#define EBFONT 59 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ENOSTR 60 +#define ENODATA 61 +#define ETIME 62 +#define ENOSR 63 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ENONET 64 +#define ENOPKG 65 +#define EREMOTE 66 +#define ENOLINK 67 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define EADV 68 +#define ESRMNT 69 +#define ECOMM 70 +#define EPROTO 71 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define EMULTIHOP 72 +#define EDOTDOT 73 +#define EBADMSG 74 +#define EOVERFLOW 75 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ENOTUNIQ 76 +#define EBADFD 77 +#define EREMCHG 78 +#define ELIBACC 79 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ELIBBAD 80 +#define ELIBSCN 81 +#define ELIBMAX 82 +#define ELIBEXEC 83 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define EILSEQ 84 +#define ERESTART 85 +#define ESTRPIPE 86 +#define EUSERS 87 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ENOTSOCK 88 +#define EDESTADDRREQ 89 +#define EMSGSIZE 90 +#define EPROTOTYPE 91 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ENOPROTOOPT 92 +#define EPROTONOSUPPORT 93 +#define ESOCKTNOSUPPORT 94 +#define EOPNOTSUPP 95 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define EPFNOSUPPORT 96 +#define EAFNOSUPPORT 97 +#define EADDRINUSE 98 +#define EADDRNOTAVAIL 99 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ENETDOWN 100 +#define ENETUNREACH 101 +#define ENETRESET 102 +#define ECONNABORTED 103 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ECONNRESET 104 +#define ENOBUFS 105 +#define EISCONN 106 +#define ENOTCONN 107 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ESHUTDOWN 108 +#define ETOOMANYREFS 109 +#define ETIMEDOUT 110 +#define ECONNREFUSED 111 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define EHOSTDOWN 112 +#define EHOSTUNREACH 113 +#define EALREADY 114 +#define EINPROGRESS 115 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ESTALE 116 +#define EUCLEAN 117 +#define ENOTNAM 118 +#define ENAVAIL 119 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define EISNAM 120 +#define EREMOTEIO 121 +#define EDQUOT 122 +#define ENOMEDIUM 123 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define EMEDIUMTYPE 124 +#define ECANCELED 125 +#define ENOKEY 126 +#define EKEYEXPIRED 127 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define EKEYREVOKED 128 +#define EKEYREJECTED 129 +#define EOWNERDEAD 130 +#define ENOTRECOVERABLE 131 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ERFKILL 132 +#define EHWPOISON 133 +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/fcntl.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/fcntl.h new file mode 100644 index 0000000..a15878f --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/fcntl.h @@ -0,0 +1,206 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _ASM_GENERIC_FCNTL_H +#define _ASM_GENERIC_FCNTL_H +#include +#define O_ACCMODE 00000003 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define O_RDONLY 00000000 +#define O_WRONLY 00000001 +#define O_RDWR 00000002 +#ifndef O_CREAT +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define O_CREAT 00000100 +#endif +#ifndef O_EXCL +#define O_EXCL 00000200 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif +#ifndef O_NOCTTY +#define O_NOCTTY 00000400 +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#ifndef O_TRUNC +#define O_TRUNC 00001000 +#endif +#ifndef O_APPEND +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define O_APPEND 00002000 +#endif +#ifndef O_NONBLOCK +#define O_NONBLOCK 00004000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif +#ifndef O_DSYNC +#define O_DSYNC 00010000 +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#ifndef FASYNC +#define FASYNC 00020000 +#endif +#ifndef O_DIRECT +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define O_DIRECT 00040000 +#endif +#ifndef O_LARGEFILE +#define O_LARGEFILE 00100000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif +#ifndef O_DIRECTORY +#define O_DIRECTORY 00200000 +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#ifndef O_NOFOLLOW +#define O_NOFOLLOW 00400000 +#endif +#ifndef O_NOATIME +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define O_NOATIME 01000000 +#endif +#ifndef O_CLOEXEC +#define O_CLOEXEC 02000000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif +#ifndef O_SYNC +#define __O_SYNC 04000000 +#define O_SYNC (__O_SYNC|O_DSYNC) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif +#ifndef O_PATH +#define O_PATH 010000000 +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#ifndef __O_TMPFILE +#define __O_TMPFILE 020000000 +#endif +#define O_TMPFILE (__O_TMPFILE | O_DIRECTORY) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define O_TMPFILE_MASK (__O_TMPFILE | O_DIRECTORY | O_CREAT) +#ifndef O_NDELAY +#define O_NDELAY O_NONBLOCK +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define F_DUPFD 0 +#define F_GETFD 1 +#define F_SETFD 2 +#define F_GETFL 3 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define F_SETFL 4 +#ifndef F_GETLK +#define F_GETLK 5 +#define F_SETLK 6 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define F_SETLKW 7 +#endif +#ifndef F_SETOWN +#define F_SETOWN 8 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define F_GETOWN 9 +#endif +#ifndef F_SETSIG +#define F_SETSIG 10 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define F_GETSIG 11 +#endif +#ifndef __LP64__ +#ifndef F_GETLK64 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define F_GETLK64 12 +#define F_SETLK64 13 +#define F_SETLKW64 14 +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif +#ifndef F_SETOWN_EX +#define F_SETOWN_EX 15 +#define F_GETOWN_EX 16 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif +#ifndef F_GETOWNER_UIDS +#define F_GETOWNER_UIDS 17 +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define F_OWNER_TID 0 +#define F_OWNER_PID 1 +#define F_OWNER_PGRP 2 +struct f_owner_ex { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + int type; + __kernel_pid_t pid; +}; +#define FD_CLOEXEC 1 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#ifndef F_RDLCK +#define F_RDLCK 0 +#define F_WRLCK 1 +#define F_UNLCK 2 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif +#ifndef F_EXLCK +#define F_EXLCK 4 +#define F_SHLCK 8 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif +#define LOCK_SH 1 +#define LOCK_EX 2 +#define LOCK_NB 4 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define LOCK_UN 8 +#define LOCK_MAND 32 +#define LOCK_READ 64 +#define LOCK_WRITE 128 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define LOCK_RW 192 +#define F_LINUX_SPECIFIC_BASE 1024 +#ifndef HAVE_ARCH_STRUCT_FLOCK +#ifndef __ARCH_FLOCK_PAD +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __ARCH_FLOCK_PAD +#endif +struct flock { + short l_type; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + short l_whence; + __kernel_off_t l_start; + __kernel_off_t l_len; + __kernel_pid_t l_pid; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __ARCH_FLOCK_PAD +}; +#endif +#ifndef __LP64__ +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#ifndef HAVE_ARCH_STRUCT_FLOCK64 +#ifndef __ARCH_FLOCK64_PAD +#define __ARCH_FLOCK64_PAD +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +struct flock64 { + short l_type; + short l_whence; + __kernel_loff_t l_start; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __kernel_loff_t l_len; + __kernel_pid_t l_pid; + __ARCH_FLOCK64_PAD +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif +#endif +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/int-l64.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/int-l64.h new file mode 100644 index 0000000..59eed08 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/int-l64.h @@ -0,0 +1,35 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _UAPI_ASM_GENERIC_INT_L64_H +#define _UAPI_ASM_GENERIC_INT_L64_H +#include +#ifndef __ASSEMBLY__ +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +typedef __signed__ char __s8; +typedef unsigned char __u8; +typedef __signed__ short __s16; +typedef unsigned short __u16; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +typedef __signed__ int __s32; +typedef unsigned int __u32; +typedef __signed__ long __s64; +typedef unsigned long __u64; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/int-ll64.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/int-ll64.h new file mode 100644 index 0000000..7622c49 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/int-ll64.h @@ -0,0 +1,41 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _UAPI_ASM_GENERIC_INT_LL64_H +#define _UAPI_ASM_GENERIC_INT_LL64_H +#include +#ifndef __ASSEMBLY__ +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +typedef __signed__ char __s8; +typedef unsigned char __u8; +typedef __signed__ short __s16; +typedef unsigned short __u16; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +typedef __signed__ int __s32; +typedef unsigned int __u32; +#ifdef __GNUC__ +__extension__ typedef __signed__ long long __s64; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +__extension__ typedef unsigned long long __u64; +#else +typedef __signed__ long long __s64; +typedef unsigned long long __u64; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif +#endif +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/ioctl.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/ioctl.h new file mode 100644 index 0000000..79ec83c --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/ioctl.h @@ -0,0 +1,75 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _UAPI_ASM_GENERIC_IOCTL_H +#define _UAPI_ASM_GENERIC_IOCTL_H +#define _IOC_NRBITS 8 +#define _IOC_TYPEBITS 8 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#ifndef _IOC_SIZEBITS +#define _IOC_SIZEBITS 14 +#endif +#ifndef _IOC_DIRBITS +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define _IOC_DIRBITS 2 +#endif +#define _IOC_NRMASK ((1 << _IOC_NRBITS)-1) +#define _IOC_TYPEMASK ((1 << _IOC_TYPEBITS)-1) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define _IOC_SIZEMASK ((1 << _IOC_SIZEBITS)-1) +#define _IOC_DIRMASK ((1 << _IOC_DIRBITS)-1) +#define _IOC_NRSHIFT 0 +#define _IOC_TYPESHIFT (_IOC_NRSHIFT+_IOC_NRBITS) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define _IOC_SIZESHIFT (_IOC_TYPESHIFT+_IOC_TYPEBITS) +#define _IOC_DIRSHIFT (_IOC_SIZESHIFT+_IOC_SIZEBITS) +#ifndef _IOC_NONE +#define _IOC_NONE 0U +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif +#ifndef _IOC_WRITE +#define _IOC_WRITE 1U +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#ifndef _IOC_READ +#define _IOC_READ 2U +#endif +#define _IOC(dir,type,nr,size) (((dir) << _IOC_DIRSHIFT) | ((type) << _IOC_TYPESHIFT) | ((nr) << _IOC_NRSHIFT) | ((size) << _IOC_SIZESHIFT)) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define _IOC_TYPECHECK(t) (sizeof(t)) +#define _IO(type,nr) _IOC(_IOC_NONE,(type),(nr),0) +#define _IOR(type,nr,size) _IOC(_IOC_READ,(type),(nr),(_IOC_TYPECHECK(size))) +#define _IOW(type,nr,size) _IOC(_IOC_WRITE,(type),(nr),(_IOC_TYPECHECK(size))) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define _IOWR(type,nr,size) _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),(_IOC_TYPECHECK(size))) +#define _IOR_BAD(type,nr,size) _IOC(_IOC_READ,(type),(nr),sizeof(size)) +#define _IOW_BAD(type,nr,size) _IOC(_IOC_WRITE,(type),(nr),sizeof(size)) +#define _IOWR_BAD(type,nr,size) _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),sizeof(size)) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define _IOC_DIR(nr) (((nr) >> _IOC_DIRSHIFT) & _IOC_DIRMASK) +#define _IOC_TYPE(nr) (((nr) >> _IOC_TYPESHIFT) & _IOC_TYPEMASK) +#define _IOC_NR(nr) (((nr) >> _IOC_NRSHIFT) & _IOC_NRMASK) +#define _IOC_SIZE(nr) (((nr) >> _IOC_SIZESHIFT) & _IOC_SIZEMASK) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define IOC_IN (_IOC_WRITE << _IOC_DIRSHIFT) +#define IOC_OUT (_IOC_READ << _IOC_DIRSHIFT) +#define IOC_INOUT ((_IOC_WRITE|_IOC_READ) << _IOC_DIRSHIFT) +#define IOCSIZE_MASK (_IOC_SIZEMASK << _IOC_SIZESHIFT) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define IOCSIZE_SHIFT (_IOC_SIZESHIFT) +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/ioctls.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/ioctls.h new file mode 100644 index 0000000..86d6eaf --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/ioctls.h @@ -0,0 +1,131 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef __ASM_GENERIC_IOCTLS_H +#define __ASM_GENERIC_IOCTLS_H +#include +#define TCGETS 0x5401 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TCSETS 0x5402 +#define TCSETSW 0x5403 +#define TCSETSF 0x5404 +#define TCGETA 0x5405 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TCSETA 0x5406 +#define TCSETAW 0x5407 +#define TCSETAF 0x5408 +#define TCSBRK 0x5409 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TCXONC 0x540A +#define TCFLSH 0x540B +#define TIOCEXCL 0x540C +#define TIOCNXCL 0x540D +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TIOCSCTTY 0x540E +#define TIOCGPGRP 0x540F +#define TIOCSPGRP 0x5410 +#define TIOCOUTQ 0x5411 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TIOCSTI 0x5412 +#define TIOCGWINSZ 0x5413 +#define TIOCSWINSZ 0x5414 +#define TIOCMGET 0x5415 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TIOCMBIS 0x5416 +#define TIOCMBIC 0x5417 +#define TIOCMSET 0x5418 +#define TIOCGSOFTCAR 0x5419 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TIOCSSOFTCAR 0x541A +#define FIONREAD 0x541B +#define TIOCINQ FIONREAD +#define TIOCLINUX 0x541C +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TIOCCONS 0x541D +#define TIOCGSERIAL 0x541E +#define TIOCSSERIAL 0x541F +#define TIOCPKT 0x5420 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define FIONBIO 0x5421 +#define TIOCNOTTY 0x5422 +#define TIOCSETD 0x5423 +#define TIOCGETD 0x5424 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TCSBRKP 0x5425 +#define TIOCSBRK 0x5427 +#define TIOCCBRK 0x5428 +#define TIOCGSID 0x5429 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TCGETS2 _IOR('T', 0x2A, struct termios2) +#define TCSETS2 _IOW('T', 0x2B, struct termios2) +#define TCSETSW2 _IOW('T', 0x2C, struct termios2) +#define TCSETSF2 _IOW('T', 0x2D, struct termios2) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TIOCGRS485 0x542E +#ifndef TIOCSRS485 +#define TIOCSRS485 0x542F +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TIOCGPTN _IOR('T', 0x30, unsigned int) +#define TIOCSPTLCK _IOW('T', 0x31, int) +#define TIOCGDEV _IOR('T', 0x32, unsigned int) +#define TCGETX 0x5432 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TCSETX 0x5433 +#define TCSETXF 0x5434 +#define TCSETXW 0x5435 +#define TIOCSIG _IOW('T', 0x36, int) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TIOCVHANGUP 0x5437 +#define TIOCGPKT _IOR('T', 0x38, int) +#define TIOCGPTLCK _IOR('T', 0x39, int) +#define TIOCGEXCL _IOR('T', 0x40, int) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define FIONCLEX 0x5450 +#define FIOCLEX 0x5451 +#define FIOASYNC 0x5452 +#define TIOCSERCONFIG 0x5453 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TIOCSERGWILD 0x5454 +#define TIOCSERSWILD 0x5455 +#define TIOCGLCKTRMIOS 0x5456 +#define TIOCSLCKTRMIOS 0x5457 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TIOCSERGSTRUCT 0x5458 +#define TIOCSERGETLSR 0x5459 +#define TIOCSERGETMULTI 0x545A +#define TIOCSERSETMULTI 0x545B +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TIOCMIWAIT 0x545C +#define TIOCGICOUNT 0x545D +#ifndef FIOQSIZE +#define FIOQSIZE 0x5460 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif +#define TIOCPKT_DATA 0 +#define TIOCPKT_FLUSHREAD 1 +#define TIOCPKT_FLUSHWRITE 2 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TIOCPKT_STOP 4 +#define TIOCPKT_START 8 +#define TIOCPKT_NOSTOP 16 +#define TIOCPKT_DOSTOP 32 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TIOCPKT_IOCTL 64 +#define TIOCSER_TEMT 0x01 +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/ipcbuf.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/ipcbuf.h new file mode 100644 index 0000000..cc7274e --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/ipcbuf.h @@ -0,0 +1,38 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef __ASM_GENERIC_IPCBUF_H +#define __ASM_GENERIC_IPCBUF_H +struct ipc64_perm { + __kernel_key_t key; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __kernel_uid32_t uid; + __kernel_gid32_t gid; + __kernel_uid32_t cuid; + __kernel_gid32_t cgid; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __kernel_mode_t mode; + unsigned char __pad1[4 - sizeof(__kernel_mode_t)]; + unsigned short seq; + unsigned short __pad2; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __kernel_ulong_t __unused1; + __kernel_ulong_t __unused2; +}; +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/kvm_para.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/kvm_para.h new file mode 100644 index 0000000..878419c --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/kvm_para.h @@ -0,0 +1,18 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/mman-common.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/mman-common.h new file mode 100644 index 0000000..92d5f98 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/mman-common.h @@ -0,0 +1,67 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef __ASM_GENERIC_MMAN_COMMON_H +#define __ASM_GENERIC_MMAN_COMMON_H +#define PROT_READ 0x1 +#define PROT_WRITE 0x2 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define PROT_EXEC 0x4 +#define PROT_SEM 0x8 +#define PROT_NONE 0x0 +#define PROT_GROWSDOWN 0x01000000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define PROT_GROWSUP 0x02000000 +#define MAP_SHARED 0x01 +#define MAP_PRIVATE 0x02 +#define MAP_TYPE 0x0f +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define MAP_FIXED 0x10 +#ifndef TARGET_MAC +# define MAP_ANONYMOUS 0x20 +#endif +#define MAP_UNINITIALIZED 0x0 +#define MS_ASYNC 1 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define MS_INVALIDATE 2 +#define MS_SYNC 4 +#define MADV_NORMAL 0 +#define MADV_RANDOM 1 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define MADV_SEQUENTIAL 2 +#define MADV_WILLNEED 3 +#define MADV_DONTNEED 4 +#define MADV_REMOVE 9 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define MADV_DONTFORK 10 +#define MADV_DOFORK 11 +#define MADV_HWPOISON 100 +#define MADV_SOFT_OFFLINE 101 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define MADV_MERGEABLE 12 +#define MADV_UNMERGEABLE 13 +#define MADV_HUGEPAGE 14 +#define MADV_NOHUGEPAGE 15 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define MADV_DONTDUMP 16 +#define MADV_DODUMP 17 +#define MAP_FILE 0 +#define MAP_HUGE_SHIFT 26 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define MAP_HUGE_MASK 0x3f +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/mman.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/mman.h new file mode 100644 index 0000000..13492a8 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/mman.h @@ -0,0 +1,40 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef __ASM_GENERIC_MMAN_H +#define __ASM_GENERIC_MMAN_H +#include + +#ifdef TARGET_LINUX + +#define MAP_GROWSDOWN 0x0100 +#define MAP_DENYWRITE 0x0800 +#define MAP_EXECUTABLE 0x1000 +#define MAP_LOCKED 0x2000 +#define MAP_NORESERVE 0x4000 +#define MAP_POPULATE 0x8000 +#define MAP_NONBLOCK 0x10000 +#define MAP_STACK 0x20000 +#define MAP_HUGETLB 0x40000 + +#endif + +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define MCL_CURRENT 1 +#define MCL_FUTURE 2 +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/msgbuf.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/msgbuf.h new file mode 100644 index 0000000..b2500ef --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/msgbuf.h @@ -0,0 +1,50 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef __ASM_GENERIC_MSGBUF_H +#define __ASM_GENERIC_MSGBUF_H +#include +struct msqid64_ds { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + struct ipc64_perm msg_perm; + __kernel_time_t msg_stime; +#if __BITS_PER_LONG != 64 + unsigned long __unused1; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif + __kernel_time_t msg_rtime; +#if __BITS_PER_LONG != 64 + unsigned long __unused2; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif + __kernel_time_t msg_ctime; +#if __BITS_PER_LONG != 64 + unsigned long __unused3; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif + __kernel_ulong_t msg_cbytes; + __kernel_ulong_t msg_qnum; + __kernel_ulong_t msg_qbytes; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __kernel_pid_t msg_lspid; + __kernel_pid_t msg_lrpid; + __kernel_ulong_t __unused4; + __kernel_ulong_t __unused5; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +}; +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/param.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/param.h new file mode 100644 index 0000000..416c4fb --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/param.h @@ -0,0 +1,33 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _UAPI__ASM_GENERIC_PARAM_H +#define _UAPI__ASM_GENERIC_PARAM_H +#ifndef HZ +#define HZ 100 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif +#ifndef EXEC_PAGESIZE +#define EXEC_PAGESIZE 4096 +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#ifndef NOGROUP +#define NOGROUP (-1) +#endif +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/poll.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/poll.h new file mode 100644 index 0000000..7faa0b8 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/poll.h @@ -0,0 +1,59 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef __ASM_GENERIC_POLL_H +#define __ASM_GENERIC_POLL_H +#define POLLIN 0x0001 +#define POLLPRI 0x0002 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define POLLOUT 0x0004 +#define POLLERR 0x0008 +#define POLLHUP 0x0010 +#define POLLNVAL 0x0020 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define POLLRDNORM 0x0040 +#define POLLRDBAND 0x0080 +#ifndef POLLWRNORM +#define POLLWRNORM 0x0100 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif +#ifndef POLLWRBAND +#define POLLWRBAND 0x0200 +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#ifndef POLLMSG +#define POLLMSG 0x0400 +#endif +#ifndef POLLREMOVE +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define POLLREMOVE 0x1000 +#endif +#ifndef POLLRDHUP +#define POLLRDHUP 0x2000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif +#define POLLFREE 0x4000 +#define POLL_BUSY_LOOP 0x8000 +struct pollfd { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + int fd; + short events; + short revents; +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/posix_types.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/posix_types.h new file mode 100644 index 0000000..b7b9f8f --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/posix_types.h @@ -0,0 +1,109 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef __ASM_GENERIC_POSIX_TYPES_H +#define __ASM_GENERIC_POSIX_TYPES_H +#include +#ifndef __kernel_long_t +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#if defined(TARGET_WINDOWS) && !defined(TARGET_IA32) +typedef long long __kernel_long_t; +typedef unsigned long long __kernel_ulong_t; +#else +typedef long __kernel_long_t; +typedef unsigned long __kernel_ulong_t; +#endif //defined(TARGET_WINDOWS) && !defined(TARGET_IA32) +#endif +#ifndef __kernel_ino_t +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +typedef __kernel_ulong_t __kernel_ino_t; +#endif +#ifndef __kernel_mode_t +#ifdef TARGET_MAC +typedef unsigned short __kernel_mode_t; +#else +typedef unsigned int __kernel_mode_t; +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif +#ifndef __kernel_pid_t +typedef int __kernel_pid_t; +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#ifndef __kernel_ipc_pid_t +typedef int __kernel_ipc_pid_t; +#endif +#ifndef __kernel_uid_t +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +typedef unsigned int __kernel_uid_t; +typedef unsigned int __kernel_gid_t; +#endif +#ifndef __kernel_suseconds_t +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +typedef __kernel_long_t __kernel_suseconds_t; +#endif +#ifndef __kernel_daddr_t +typedef int __kernel_daddr_t; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif +#ifndef __kernel_uid32_t +typedef unsigned int __kernel_uid32_t; +typedef unsigned int __kernel_gid32_t; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif +#ifndef __kernel_old_uid_t +typedef __kernel_uid_t __kernel_old_uid_t; +typedef __kernel_gid_t __kernel_old_gid_t; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif +#ifndef __kernel_old_dev_t +typedef unsigned int __kernel_old_dev_t; +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#ifndef __kernel_size_t +#if __BITS_PER_LONG != 64 +typedef unsigned int __kernel_size_t; +typedef int __kernel_ssize_t; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +typedef int __kernel_ptrdiff_t; +#else +typedef __kernel_ulong_t __kernel_size_t; +typedef __kernel_long_t __kernel_ssize_t; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +typedef __kernel_long_t __kernel_ptrdiff_t; +#endif +#endif +#ifndef __kernel_fsid_t +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +typedef struct { + int val[2]; +} __kernel_fsid_t; +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +typedef __kernel_long_t __kernel_off_t; +typedef long long __kernel_loff_t; +typedef __kernel_long_t __kernel_time_t; +typedef __kernel_long_t __kernel_clock_t; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +typedef int __kernel_timer_t; +typedef int __kernel_clockid_t; +typedef char * __kernel_caddr_t; +typedef unsigned short __kernel_uid16_t; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +typedef unsigned short __kernel_gid16_t; +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/resource.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/resource.h new file mode 100644 index 0000000..24b2b12 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/resource.h @@ -0,0 +1,82 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _UAPI_ASM_GENERIC_RESOURCE_H +#define _UAPI_ASM_GENERIC_RESOURCE_H +#define RLIMIT_CPU 0 +#define RLIMIT_FSIZE 1 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define RLIMIT_DATA 2 +#define RLIMIT_STACK 3 +#define RLIMIT_CORE 4 +#ifndef RLIMIT_RSS +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define RLIMIT_RSS 5 +#endif + +#ifdef TARGET_MAC +#ifndef RLIMIT_NPROC +#define RLIMIT_NPROC 7 +#endif +#ifndef RLIMIT_NOFILE +#define RLIMIT_NOFILE 8 +#endif +#ifndef RLIMIT_MEMLOCK +#define RLIMIT_MEMLOCK 9 +#endif +#ifndef RLIMIT_AS +#define RLIMIT_AS 5 +#endif +#define RLIM_NLIMITS 9 +#ifndef RLIM_INFINITY +#define RLIM_INFINITY (((__uint64_t)1 << 63) - 1) /* no limit */ +#define RLIM_SAVED_MAX RLIM_INFINITY /* Unrepresentable hard limit */ +#define RLIM_SAVED_CUR RLIM_INFINITY /* Unrepresentable soft limit */ +#endif +#else +#ifndef RLIMIT_NPROC +#define RLIMIT_NPROC 6 +#endif +#ifndef RLIMIT_NOFILE +#define RLIMIT_NOFILE 7 +#endif +#ifndef RLIMIT_MEMLOCK +#define RLIMIT_MEMLOCK 8 +#endif +#ifndef RLIMIT_AS +#define RLIMIT_AS 9 +#endif +#define RLIM_NLIMITS 16 +#ifndef RLIM_INFINITY +#define RLIM_INFINITY (~0UL) +#endif +#endif + +#define RLIMIT_LOCKS 10 +#define RLIMIT_SIGPENDING 11 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define RLIMIT_MSGQUEUE 12 +#define RLIMIT_NICE 13 +#define RLIMIT_RTPRIO 14 +#define RLIMIT_RTTIME 15 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#ifndef _STK_LIM_MAX +#define _STK_LIM_MAX RLIM_INFINITY +#endif +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/sembuf.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/sembuf.h new file mode 100644 index 0000000..bcf1702 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/sembuf.h @@ -0,0 +1,40 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef __ASM_GENERIC_SEMBUF_H +#define __ASM_GENERIC_SEMBUF_H +#include +struct semid64_ds { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + struct ipc64_perm sem_perm; + __kernel_time_t sem_otime; +#if __BITS_PER_LONG != 64 + unsigned long __unused1; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif + __kernel_time_t sem_ctime; +#if __BITS_PER_LONG != 64 + unsigned long __unused2; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif + unsigned long sem_nsems; + unsigned long __unused3; + unsigned long __unused4; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +}; +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/setup.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/setup.h new file mode 100644 index 0000000..09bbdbb --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/setup.h @@ -0,0 +1,23 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef __ASM_GENERIC_SETUP_H +#define __ASM_GENERIC_SETUP_H +#define COMMAND_LINE_SIZE 512 +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/shmbuf.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/shmbuf.h new file mode 100644 index 0000000..68b859d --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/shmbuf.h @@ -0,0 +1,63 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef __ASM_GENERIC_SHMBUF_H +#define __ASM_GENERIC_SHMBUF_H +#include +struct shmid64_ds { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + struct ipc64_perm shm_perm; + size_t shm_segsz; + __kernel_time_t shm_atime; +#if __BITS_PER_LONG != 64 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned long __unused1; +#endif + __kernel_time_t shm_dtime; +#if __BITS_PER_LONG != 64 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned long __unused2; +#endif + __kernel_time_t shm_ctime; +#if __BITS_PER_LONG != 64 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned long __unused3; +#endif + __kernel_pid_t shm_cpid; + __kernel_pid_t shm_lpid; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __kernel_ulong_t shm_nattch; + __kernel_ulong_t __unused4; + __kernel_ulong_t __unused5; +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +struct shminfo64 { + __kernel_ulong_t shmmax; + __kernel_ulong_t shmmin; + __kernel_ulong_t shmmni; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __kernel_ulong_t shmseg; + __kernel_ulong_t shmall; + __kernel_ulong_t __unused1; + __kernel_ulong_t __unused2; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __kernel_ulong_t __unused3; + __kernel_ulong_t __unused4; +}; +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/shmparam.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/shmparam.h new file mode 100644 index 0000000..77eca8c --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/shmparam.h @@ -0,0 +1,23 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef __ASM_GENERIC_SHMPARAM_H +#define __ASM_GENERIC_SHMPARAM_H +#define SHMLBA PAGE_SIZE +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/siginfo.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/siginfo.h new file mode 100644 index 0000000..28bc63f --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/siginfo.h @@ -0,0 +1,265 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _UAPI_ASM_GENERIC_SIGINFO_H +#define _UAPI_ASM_GENERIC_SIGINFO_H +#include +#include +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +typedef union sigval { + int sival_int; + void __user *sival_ptr; +} sigval_t; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#ifndef __ARCH_SI_PREAMBLE_SIZE +#define __ARCH_SI_PREAMBLE_SIZE (3 * sizeof(int)) +#endif +#define SI_MAX_SIZE 128 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#ifndef SI_PAD_SIZE +#define SI_PAD_SIZE ((SI_MAX_SIZE - __ARCH_SI_PREAMBLE_SIZE) / sizeof(int)) +#endif +#ifndef __ARCH_SI_UID_T +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __ARCH_SI_UID_T __kernel_uid32_t +#define __ARCH_SI_UID_T_IS_INT_SIZE +#endif +#ifndef __ARCH_SI_BAND_T +#define __ARCH_SI_BAND_T long +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif +#ifndef __ARCH_SI_CLOCK_T +#define __ARCH_SI_CLOCK_T __kernel_clock_t +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#ifndef __ARCH_SI_ATTRIBUTES +#define __ARCH_SI_ATTRIBUTES +#endif +#ifndef HAVE_ARCH_SIGINFO_T +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +typedef struct siginfo { + int si_signo; + int si_errno; + int si_code; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + union { + int _pad[SI_PAD_SIZE]; + struct { + __kernel_pid_t _pid; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __ARCH_SI_UID_T _uid; + } _kill; + struct { + __kernel_timer_t _tid; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + int _overrun; +#ifndef __ARCH_SI_UID_T_IS_INT_SIZE +// this expands to an array of size zero in Windows and triggers +// a compiler error + char _pad[sizeof( __ARCH_SI_UID_T) - sizeof(int)]; +#endif + sigval_t _sigval; + int _sys_private; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + } _timer; + struct { + __kernel_pid_t _pid; + __ARCH_SI_UID_T _uid; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + sigval_t _sigval; + } _rt; + struct { + __kernel_pid_t _pid; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __ARCH_SI_UID_T _uid; + int _status; + __ARCH_SI_CLOCK_T _utime; + __ARCH_SI_CLOCK_T _stime; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + } _sigchld; + struct { + void __user *_addr; +#ifdef __ARCH_SI_TRAPNO +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + int _trapno; +#endif + short _addr_lsb; + } _sigfault; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + struct { + __ARCH_SI_BAND_T _band; + int _fd; + } _sigpoll; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + struct { + void __user *_call_addr; + int _syscall; + unsigned int _arch; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + } _sigsys; + } _sifields; +} __ARCH_SI_ATTRIBUTES siginfo_t; +#define __ARCH_SIGSYS +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif +#define si_pid _sifields._kill._pid +#define si_uid _sifields._kill._uid +#define si_tid _sifields._timer._tid +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define si_overrun _sifields._timer._overrun +#define si_sys_private _sifields._timer._sys_private +#define si_status _sifields._sigchld._status +#define si_utime _sifields._sigchld._utime +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define si_stime _sifields._sigchld._stime +#define si_value _sifields._rt._sigval +#define si_int _sifields._rt._sigval.sival_int +#define si_ptr _sifields._rt._sigval.sival_ptr +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define si_addr _sifields._sigfault._addr +#ifdef __ARCH_SI_TRAPNO +#define si_trapno _sifields._sigfault._trapno +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define si_addr_lsb _sifields._sigfault._addr_lsb +#define si_band _sifields._sigpoll._band +#define si_fd _sifields._sigpoll._fd +#ifdef __ARCH_SIGSYS +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define si_call_addr _sifields._sigsys._call_addr +#define si_syscall _sifields._sigsys._syscall +#define si_arch _sifields._sigsys._arch +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __SI_KILL 0 +#define __SI_TIMER 0 +#define __SI_POLL 0 +#define __SI_FAULT 0 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __SI_CHLD 0 +#define __SI_RT 0 +#define __SI_MESGQ 0 +#define __SI_SYS 0 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __SI_CODE(T,N) (N) +#define SI_USER 0 +#define SI_KERNEL 0x80 +#define SI_QUEUE -1 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SI_TIMER __SI_CODE(__SI_TIMER,-2) +#define SI_MESGQ __SI_CODE(__SI_MESGQ,-3) +#define SI_ASYNCIO -4 +#define SI_SIGIO -5 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SI_TKILL -6 +#define SI_DETHREAD -7 +#define SI_FROMUSER(siptr) ((siptr)->si_code <= 0) +#define SI_FROMKERNEL(siptr) ((siptr)->si_code > 0) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ILL_ILLOPC (__SI_FAULT|1) +#define ILL_ILLOPN (__SI_FAULT|2) +#define ILL_ILLADR (__SI_FAULT|3) +#define ILL_ILLTRP (__SI_FAULT|4) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ILL_PRVOPC (__SI_FAULT|5) +#define ILL_PRVREG (__SI_FAULT|6) +#define ILL_COPROC (__SI_FAULT|7) +#define ILL_BADSTK (__SI_FAULT|8) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define NSIGILL 8 +#define FPE_INTDIV (__SI_FAULT|1) +#define FPE_INTOVF (__SI_FAULT|2) +#define FPE_FLTDIV (__SI_FAULT|3) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define FPE_FLTOVF (__SI_FAULT|4) +#define FPE_FLTUND (__SI_FAULT|5) +#define FPE_FLTRES (__SI_FAULT|6) +#define FPE_FLTINV (__SI_FAULT|7) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define FPE_FLTSUB (__SI_FAULT|8) +#define NSIGFPE 8 +#define SEGV_MAPERR (__SI_FAULT|1) +#define SEGV_ACCERR (__SI_FAULT|2) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define NSIGSEGV 2 +#define BUS_ADRALN (__SI_FAULT|1) +#define BUS_ADRERR (__SI_FAULT|2) +#define BUS_OBJERR (__SI_FAULT|3) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define BUS_MCEERR_AR (__SI_FAULT|4) +#define BUS_MCEERR_AO (__SI_FAULT|5) +#define NSIGBUS 5 +#define TRAP_BRKPT (__SI_FAULT|1) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TRAP_TRACE (__SI_FAULT|2) +#define TRAP_BRANCH (__SI_FAULT|3) +#define TRAP_HWBKPT (__SI_FAULT|4) +#define NSIGTRAP 4 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define CLD_EXITED (__SI_CHLD|1) +#define CLD_KILLED (__SI_CHLD|2) +#define CLD_DUMPED (__SI_CHLD|3) +#define CLD_TRAPPED (__SI_CHLD|4) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define CLD_STOPPED (__SI_CHLD|5) +#define CLD_CONTINUED (__SI_CHLD|6) +#define NSIGCHLD 6 +#define POLL_IN (__SI_POLL|1) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define POLL_OUT (__SI_POLL|2) +#define POLL_MSG (__SI_POLL|3) +#define POLL_ERR (__SI_POLL|4) +#define POLL_PRI (__SI_POLL|5) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define POLL_HUP (__SI_POLL|6) +#define NSIGPOLL 6 +#define SYS_SECCOMP (__SI_SYS|1) +#define NSIGSYS 1 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SIGEV_SIGNAL 0 +#define SIGEV_NONE 1 +#define SIGEV_THREAD 2 +#define SIGEV_THREAD_ID 4 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#ifndef __ARCH_SIGEV_PREAMBLE_SIZE +#define __ARCH_SIGEV_PREAMBLE_SIZE (sizeof(int) * 2 + sizeof(sigval_t)) +#endif +#define SIGEV_MAX_SIZE 64 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SIGEV_PAD_SIZE ((SIGEV_MAX_SIZE - __ARCH_SIGEV_PREAMBLE_SIZE) / sizeof(int)) +typedef struct sigevent { + sigval_t sigev_value; + int sigev_signo; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + int sigev_notify; + union { + int _pad[SIGEV_PAD_SIZE]; + int _tid; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + struct { + void (*_function)(sigval_t); + void *_attribute; + } _sigev_thread; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + } _sigev_un; +} sigevent_t; +#define sigev_notify_function _sigev_un._sigev_thread._function +#define sigev_notify_attributes _sigev_un._sigev_thread._attribute +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define sigev_notify_thread_id _sigev_un._tid +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/signal-defs.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/signal-defs.h new file mode 100644 index 0000000..f47cbe7 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/signal-defs.h @@ -0,0 +1,45 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef __ASM_GENERIC_SIGNAL_DEFS_H +#define __ASM_GENERIC_SIGNAL_DEFS_H +#include +#ifndef SIG_BLOCK +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SIG_BLOCK 0 +#endif +#ifndef SIG_UNBLOCK +#define SIG_UNBLOCK 1 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif +#ifndef SIG_SETMASK +#define SIG_SETMASK 2 +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#ifndef __ASSEMBLY__ +typedef void __signalfn_t(int); +typedef __signalfn_t __user *__sighandler_t; +typedef void __restorefn_t(void); +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +typedef __restorefn_t __user *__sigrestore_t; +#define SIG_DFL ((__force __sighandler_t)0) +#define SIG_IGN ((__force __sighandler_t)1) +#define SIG_ERR ((__force __sighandler_t)-1) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/signal.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/signal.h new file mode 100644 index 0000000..2352df4 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/signal.h @@ -0,0 +1,116 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _UAPI__ASM_GENERIC_SIGNAL_H +#define _UAPI__ASM_GENERIC_SIGNAL_H +#include +#define _KERNEL__NSIG 64 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define _NSIG_BPW __BITS_PER_LONG +#define _NSIG_WORDS (_KERNEL__NSIG / _NSIG_BPW) +#define SIGHUP 1 +#define SIGINT 2 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SIGQUIT 3 +#define SIGILL 4 +#define SIGTRAP 5 +#define SIGABRT 6 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SIGIOT 6 +#define SIGBUS 7 +#define SIGFPE 8 +#define SIGKILL 9 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SIGUSR1 10 +#define SIGSEGV 11 +#define SIGUSR2 12 +#define SIGPIPE 13 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SIGALRM 14 +#define SIGTERM 15 +#define SIGSTKFLT 16 +#define SIGCHLD 17 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SIGCONT 18 +#define SIGSTOP 19 +#define SIGTSTP 20 +#define SIGTTIN 21 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SIGTTOU 22 +#define SIGURG 23 +#define SIGXCPU 24 +#define SIGXFSZ 25 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SIGVTALRM 26 +#define SIGPROF 27 +#define SIGWINCH 28 +#define SIGIO 29 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SIGPOLL SIGIO +#define SIGPWR 30 +#define SIGSYS 31 +#define SIGUNUSED 31 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __SIGRTMIN 32 +#ifndef __SIGRTMAX +#define __SIGRTMAX _KERNEL__NSIG +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SA_NOCLDSTOP 0x00000001 +#define SA_NOCLDWAIT 0x00000002 +#define SA_SIGINFO 0x00000004 +#define SA_ONSTACK 0x08000000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SA_RESTART 0x10000000 +#define SA_NODEFER 0x40000000 +#define SA_RESETHAND 0x80000000 +#define SA_NOMASK SA_NODEFER +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SA_ONESHOT SA_RESETHAND +#define MINSIGSTKSZ 2048 +#define SIGSTKSZ 8192 +#ifndef __ASSEMBLY__ +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +typedef struct { + unsigned long sig[_NSIG_WORDS]; +} sigset_t; +typedef unsigned long old_sigset_t; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#include +#ifdef SA_RESTORER +#define __ARCH_HAS_SA_RESTORER +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +struct sigaction { + __sighandler_t sa_handler; + sigset_t sa_mask; + int sa_flags; +#ifdef SA_RESTORER +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __sigrestore_t sa_restorer; +#endif +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +typedef struct sigaltstack { + void __user *ss_sp; + int ss_flags; + size_t ss_size; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +} stack_t; +#endif +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/socket.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/socket.h new file mode 100644 index 0000000..8f1e76e --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/socket.h @@ -0,0 +1,115 @@ +#ifndef __ASM_GENERIC_SOCKET_H +#define __ASM_GENERIC_SOCKET_H +#include + +#ifdef TARGET_MAC + +#define SOL_SOCKET 0xffff /* options for socket level */ + +#define SO_DEBUG 0x0001 /* turn on debugging info recording */ +#define SO_ACCEPTCONN 0x0002 /* socket has had listen() */ +#define SO_REUSEADDR 0x0004 /* allow local address reuse */ +#define SO_KEEPALIVE 0x0008 /* keep connections alive */ +#define SO_DONTROUTE 0x0010 /* just use interface addresses */ +#define SO_BROADCAST 0x0020 /* permit sending of broadcast msgs */ +#define SO_USELOOPBACK 0x0040 /* bypass hardware when possible */ +#define SO_LINGER 0x0080 /* linger on close if data present (in ticks) */ +#define SO_OOBINLINE 0x0100 /* leave received OOB data in line */ +#define SO_REUSEPORT 0x0200 /* allow local address & port reuse */ +#define SO_TIMESTAMP 0x0400 /* timestamp received dgram traffic */ +#define SO_TIMESTAMP_MONOTONIC 0x0800 /* Monotonically increasing timestamp on rcvd dgram */ +#define SO_DONTTRUNC 0x2000 /* APPLE: Retain unread data */ + /* (ATOMIC proto) */ +#define SO_WANTMORE 0x4000 /* APPLE: Give hint when more data ready */ +#define SO_WANTOOBFLAG 0x8000 /* APPLE: Want OOB in MSG_FLAG on receive */ + +/* + * Additional options, not kept in so_options. + */ +#define SO_SNDBUF 0x1001 /* send buffer size */ +#define SO_RCVBUF 0x1002 /* receive buffer size */ +#define SO_SNDLOWAT 0x1003 /* send low-water mark */ +#define SO_RCVLOWAT 0x1004 /* receive low-water mark */ +#define SO_SNDTIMEO 0x1005 /* send timeout */ +#define SO_RCVTIMEO 0x1006 /* receive timeout */ +#define SO_ERROR 0x1007 /* get error status and clear */ +#define SO_TYPE 0x1008 /* get socket type */ +#define SO_LABEL 0x1010 /* socket's MAC label */ +#define SO_PEERLABEL 0x1011 /* socket's peer MAC label */ +#define SO_NREAD 0x1020 /* APPLE: get 1st-packet byte count */ +#define SO_NKE 0x1021 /* APPLE: Install socket-level NKE */ +#define SO_NOSIGPIPE 0x1022 /* APPLE: No SIGPIPE on EPIPE */ +#define SO_NOADDRERR 0x1023 /* APPLE: Returns EADDRNOTAVAIL when src is not available anymore */ +#define SO_NWRITE 0x1024 /* APPLE: Get number of bytes currently in send socket buffer */ +#define SO_REUSESHAREUID 0x1025 /* APPLE: Allow reuse of port/socket by different userids */ +#define SO_LINGER_SEC 0x1080 /* linger on close if data present (in seconds) */ +#define SO_RESTRICTIONS 0x1081 /* APPLE: deny inbound/outbound/both/flag set */ +#define SO_RESTRICT_DENYIN 0x00000001 /* flag for SO_RESTRICTIONS - deny inbound */ +#define SO_RESTRICT_DENYOUT 0x00000002 /* flag for SO_RESTRICTIONS - deny outbound */ +#define SO_RESTRICT_DENYSET 0x80000000 /* flag for SO_RESTRICTIONS - deny has been set */ +#define SO_RANDOMPORT 0x1082 /* APPLE: request local port randomization */ +#define SO_NP_EXTENSIONS 0x1083 /* To turn off some POSIX behavior */ + +#else + +#define SOL_SOCKET 1 +#define SO_DEBUG 1 +#define SO_REUSEADDR 2 +#define SO_TYPE 3 +#define SO_ERROR 4 +#define SO_DONTROUTE 5 +#define SO_BROADCAST 6 +#define SO_SNDBUF 7 +#define SO_RCVBUF 8 +#define SO_SNDBUFFORCE 32 +#define SO_RCVBUFFORCE 33 +#define SO_KEEPALIVE 9 +#define SO_OOBINLINE 10 +#define SO_NO_CHECK 11 +#define SO_PRIORITY 12 +#define SO_LINGER 13 +#define SO_BSDCOMPAT 14 +#define SO_REUSEPORT 15 +#ifndef SO_PASSCRED +#define SO_PASSCRED 16 +#define SO_PEERCRED 17 +#define SO_RCVLOWAT 18 +#define SO_SNDLOWAT 19 +#define SO_RCVTIMEO 20 +#define SO_SNDTIMEO 21 +#endif +#define SO_SECURITY_AUTHENTICATION 22 +#define SO_SECURITY_ENCRYPTION_TRANSPORT 23 +#define SO_SECURITY_ENCRYPTION_NETWORK 24 +#define SO_BINDTODEVICE 25 +#define SO_ATTACH_FILTER 26 +#define SO_DETACH_FILTER 27 +#define SO_GET_FILTER SO_ATTACH_FILTER +#define SO_PEERNAME 28 +#define SO_TIMESTAMP 29 +#define SCM_TIMESTAMP SO_TIMESTAMP +#define SO_ACCEPTCONN 30 +#define SO_PEERSEC 31 +#define SO_PASSSEC 34 +#define SO_TIMESTAMPNS 35 +#define SCM_TIMESTAMPNS SO_TIMESTAMPNS +#define SO_MARK 36 +#define SO_TIMESTAMPING 37 +#define SCM_TIMESTAMPING SO_TIMESTAMPING +#define SO_PROTOCOL 38 +#define SO_DOMAIN 39 +#define SO_RXQ_OVFL 40 +#define SO_WIFI_STATUS 41 +#define SCM_WIFI_STATUS SO_WIFI_STATUS +#define SO_PEEK_OFF 42 +#define SO_NOFCS 43 +#define SO_LOCK_FILTER 44 +#define SO_SELECT_ERR_QUEUE 45 +#define SO_BUSY_POLL 46 +#define SO_MAX_PACING_RATE 47 +#define SO_BPF_EXTENSIONS 48 + +#endif // TARGET_MAC + +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/sockios.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/sockios.h new file mode 100644 index 0000000..ce063f1 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/sockios.h @@ -0,0 +1,30 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef __ASM_GENERIC_SOCKIOS_H +#define __ASM_GENERIC_SOCKIOS_H +#define FIOSETOWN 0x8901 +#define SIOCSPGRP 0x8902 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define FIOGETOWN 0x8903 +#define SIOCGPGRP 0x8904 +#define SIOCATMARK 0x8905 +#define SIOCGSTAMP 0x8906 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SIOCGSTAMPNS 0x8907 +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/stat.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/stat.h new file mode 100644 index 0000000..a94c69d --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/stat.h @@ -0,0 +1,81 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef __ASM_GENERIC_STAT_H +#define __ASM_GENERIC_STAT_H +#include +#define STAT_HAVE_NSEC 1 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +struct stat { + unsigned long st_dev; + unsigned long st_ino; + unsigned int st_mode; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned int st_nlink; + unsigned int st_uid; + unsigned int st_gid; + unsigned long st_rdev; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned long __pad1; + long st_size; + int st_blksize; + int __pad2; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + long st_blocks; + long st_atime; + unsigned long st_atime_nsec; + long st_mtime; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned long st_mtime_nsec; + long st_ctime; + unsigned long st_ctime_nsec; + unsigned int __unused4; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned int __unused5; +}; +#if __BITS_PER_LONG != 64 || defined(__ARCH_WANT_STAT64) +struct stat64 { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned long long st_dev; + unsigned long long st_ino; + unsigned int st_mode; + unsigned int st_nlink; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned int st_uid; + unsigned int st_gid; + unsigned long long st_rdev; + unsigned long long __pad1; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + long long st_size; + int st_blksize; + int __pad2; + long long st_blocks; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + int st_atime; + unsigned int st_atime_nsec; + int st_mtime; + unsigned int st_mtime_nsec; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + int st_ctime; + unsigned int st_ctime_nsec; + unsigned int __unused4; + unsigned int __unused5; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +}; +#endif +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/statfs.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/statfs.h new file mode 100644 index 0000000..1c8c589 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/statfs.h @@ -0,0 +1,91 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _UAPI_GENERIC_STATFS_H +#define _UAPI_GENERIC_STATFS_H +#include +#ifndef __statfs_word +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#if __BITS_PER_LONG == 64 +#define __statfs_word __kernel_long_t +#else +#define __statfs_word __u32 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif +#endif +struct statfs { + __statfs_word f_type; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __statfs_word f_bsize; + __statfs_word f_blocks; + __statfs_word f_bfree; + __statfs_word f_bavail; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __statfs_word f_files; + __statfs_word f_ffree; + __kernel_fsid_t f_fsid; + __statfs_word f_namelen; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __statfs_word f_frsize; + __statfs_word f_flags; + __statfs_word f_spare[4]; +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#ifndef ARCH_PACK_STATFS64 +#define ARCH_PACK_STATFS64 +#endif +struct statfs64 { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __statfs_word f_type; + __statfs_word f_bsize; + __u64 f_blocks; + __u64 f_bfree; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __u64 f_bavail; + __u64 f_files; + __u64 f_ffree; + __kernel_fsid_t f_fsid; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __statfs_word f_namelen; + __statfs_word f_frsize; + __statfs_word f_flags; + __statfs_word f_spare[4]; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +} ARCH_PACK_STATFS64; +#ifndef ARCH_PACK_COMPAT_STATFS64 +#define ARCH_PACK_COMPAT_STATFS64 +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +struct compat_statfs64 { + __u32 f_type; + __u32 f_bsize; + __u64 f_blocks; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __u64 f_bfree; + __u64 f_bavail; + __u64 f_files; + __u64 f_ffree; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __kernel_fsid_t f_fsid; + __u32 f_namelen; + __u32 f_frsize; + __u32 f_flags; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __u32 f_spare[4]; +} ARCH_PACK_COMPAT_STATFS64; +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/swab.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/swab.h new file mode 100644 index 0000000..bcbc94f --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/swab.h @@ -0,0 +1,29 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _ASM_GENERIC_SWAB_H +#define _ASM_GENERIC_SWAB_H +#include +#if __BITS_PER_LONG == 32 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#if defined(__GNUC__) && !defined(__STRICT_ANSI__) +#define __SWAB_64_THRU_32__ +#endif +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/termbits.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/termbits.h new file mode 100644 index 0000000..58acd3d --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/termbits.h @@ -0,0 +1,238 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef __ASM_GENERIC_TERMBITS_H +#define __ASM_GENERIC_TERMBITS_H +#include +typedef unsigned char cc_t; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +typedef unsigned int speed_t; +typedef unsigned int tcflag_t; +#define NCCS 19 +struct termios { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + tcflag_t c_iflag; + tcflag_t c_oflag; + tcflag_t c_cflag; + tcflag_t c_lflag; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + cc_t c_line; + cc_t c_cc[NCCS]; +}; +struct termios2 { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + tcflag_t c_iflag; + tcflag_t c_oflag; + tcflag_t c_cflag; + tcflag_t c_lflag; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + cc_t c_line; + cc_t c_cc[NCCS]; + speed_t c_ispeed; + speed_t c_ospeed; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +}; +struct ktermios { + tcflag_t c_iflag; + tcflag_t c_oflag; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + tcflag_t c_cflag; + tcflag_t c_lflag; + cc_t c_line; + cc_t c_cc[NCCS]; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + speed_t c_ispeed; + speed_t c_ospeed; +}; +#define VINTR 0 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define VQUIT 1 +#define VERASE 2 +#define VKILL 3 +#define VEOF 4 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define VTIME 5 +#define VMIN 6 +#define VSWTC 7 +#define VSTART 8 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define VSTOP 9 +#define VSUSP 10 +#define VEOL 11 +#define VREPRINT 12 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define VDISCARD 13 +#define VWERASE 14 +#define VLNEXT 15 +#define VEOL2 16 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define IGNBRK 0000001 +#define BRKINT 0000002 +#define IGNPAR 0000004 +#define PARMRK 0000010 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define INPCK 0000020 +#define ISTRIP 0000040 +#define INLCR 0000100 +#define IGNCR 0000200 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ICRNL 0000400 +#define IUCLC 0001000 +#define IXON 0002000 +#define IXANY 0004000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define IXOFF 0010000 +#define IMAXBEL 0020000 +#define IUTF8 0040000 +#define OPOST 0000001 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define OLCUC 0000002 +#define ONLCR 0000004 +#define OCRNL 0000010 +#define ONOCR 0000020 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ONLRET 0000040 +#define OFILL 0000100 +#define OFDEL 0000200 +#define NLDLY 0000400 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define NL0 0000000 +#define NL1 0000400 +#define CRDLY 0003000 +#define CR0 0000000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define CR1 0001000 +#define CR2 0002000 +#define CR3 0003000 +#define TABDLY 0014000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TAB0 0000000 +#define TAB1 0004000 +#define TAB2 0010000 +#define TAB3 0014000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define XTABS 0014000 +#define BSDLY 0020000 +#define BS0 0000000 +#define BS1 0020000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define VTDLY 0040000 +#define VT0 0000000 +#define VT1 0040000 +#define FFDLY 0100000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define FF0 0000000 +#define FF1 0100000 +#define CBAUD 0010017 +#define B0 0000000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define B50 0000001 +#define B75 0000002 +#define B110 0000003 +#define B134 0000004 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define B150 0000005 +#define B200 0000006 +#define B300 0000007 +#define B600 0000010 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define B1200 0000011 +#define B1800 0000012 +#define B2400 0000013 +#define B4800 0000014 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define B9600 0000015 +#define B19200 0000016 +#define B38400 0000017 +#define EXTA B19200 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define EXTB B38400 +#define CSIZE 0000060 +#define CS5 0000000 +#define CS6 0000020 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define CS7 0000040 +#define CS8 0000060 +#define CSTOPB 0000100 +#define CREAD 0000200 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define PARENB 0000400 +#define PARODD 0001000 +#define HUPCL 0002000 +#define CLOCAL 0004000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define CBAUDEX 0010000 +#define BOTHER 0010000 +#define B57600 0010001 +#define B115200 0010002 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define B230400 0010003 +#define B460800 0010004 +#define B500000 0010005 +#define B576000 0010006 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define B921600 0010007 +#define B1000000 0010010 +#define B1152000 0010011 +#define B1500000 0010012 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define B2000000 0010013 +#define B2500000 0010014 +#define B3000000 0010015 +#define B3500000 0010016 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define B4000000 0010017 +#define CIBAUD 002003600000 +#define CMSPAR 010000000000 +#define CRTSCTS 020000000000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define IBSHIFT 16 +#define ISIG 0000001 +#define ICANON 0000002 +#define XCASE 0000004 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ECHO 0000010 +#define ECHOE 0000020 +#define ECHOK 0000040 +#define ECHONL 0000100 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define NOFLSH 0000200 +#define TOSTOP 0000400 +#define ECHOCTL 0001000 +#define ECHOPRT 0002000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ECHOKE 0004000 +#define FLUSHO 0010000 +#define PENDIN 0040000 +#define IEXTEN 0100000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define EXTPROC 0200000 +#define TCOOFF 0 +#define TCOON 1 +#define TCIOFF 2 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TCION 3 +#define TCIFLUSH 0 +#define TCOFLUSH 1 +#define TCIOFLUSH 2 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TCSANOW 0 +#define TCSADRAIN 1 +#define TCSAFLUSH 2 +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/termios.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/termios.h new file mode 100644 index 0000000..0a5dfd6 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/termios.h @@ -0,0 +1,60 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _UAPI_ASM_GENERIC_TERMIOS_H +#define _UAPI_ASM_GENERIC_TERMIOS_H +#include +#include +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +struct winsize { + unsigned short ws_row; + unsigned short ws_col; + unsigned short ws_xpixel; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned short ws_ypixel; +}; +#define NCC 8 +struct termio { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned short c_iflag; + unsigned short c_oflag; + unsigned short c_cflag; + unsigned short c_lflag; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned char c_line; + unsigned char c_cc[NCC]; +}; +#define TIOCM_LE 0x001 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TIOCM_DTR 0x002 +#define TIOCM_RTS 0x004 +#define TIOCM_ST 0x008 +#define TIOCM_SR 0x010 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TIOCM_CTS 0x020 +#define TIOCM_CAR 0x040 +#define TIOCM_RNG 0x080 +#define TIOCM_DSR 0x100 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TIOCM_CD TIOCM_CAR +#define TIOCM_RI TIOCM_RNG +#define TIOCM_OUT1 0x2000 +#define TIOCM_OUT2 0x4000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TIOCM_LOOP 0x8000 +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/types.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/types.h new file mode 100644 index 0000000..c0d4bea --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/types.h @@ -0,0 +1,23 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _ASM_GENERIC_TYPES_H +#define _ASM_GENERIC_TYPES_H +#include +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/ucontext.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/ucontext.h new file mode 100644 index 0000000..f26d1cc --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/ucontext.h @@ -0,0 +1,30 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef __ASM_GENERIC_UCONTEXT_H +#define __ASM_GENERIC_UCONTEXT_H +struct ucontext { + unsigned long uc_flags; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + struct ucontext *uc_link; + stack_t uc_stack; + struct sigcontext uc_mcontext; + sigset_t uc_sigmask; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +}; +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/unistd.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/unistd.h new file mode 100644 index 0000000..becc82d --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-generic/unistd.h @@ -0,0 +1,519 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#include +#ifndef __SYSCALL +#define __SYSCALL(x, y) +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#if __BITS_PER_LONG == 32 || defined(__SYSCALL_COMPAT) +#define __SC_3264(_nr, _32, _64) __SYSCALL(_nr, _32) +#else +#define __SC_3264(_nr, _32, _64) __SYSCALL(_nr, _64) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif +#ifdef __SYSCALL_COMPAT +#define __SC_COMP(_nr, _sys, _comp) __SYSCALL(_nr, _comp) +#define __SC_COMP_3264(_nr, _32, _64, _comp) __SYSCALL(_nr, _comp) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#else +#define __SC_COMP(_nr, _sys, _comp) __SYSCALL(_nr, _sys) +#define __SC_COMP_3264(_nr, _32, _64, _comp) __SC_3264(_nr, _32, _64) +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_io_setup 0 +#define __NR_io_destroy 1 +#define __NR_io_submit 2 +#define __NR_io_cancel 3 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_io_getevents 4 +#define __NR_setxattr 5 +#define __NR_lsetxattr 6 +#define __NR_fsetxattr 7 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_getxattr 8 +#define __NR_lgetxattr 9 +#define __NR_fgetxattr 10 +#define __NR_listxattr 11 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_llistxattr 12 +#define __NR_flistxattr 13 +#define __NR_removexattr 14 +#define __NR_lremovexattr 15 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_fremovexattr 16 +#define __NR_getcwd 17 +#define __NR_lookup_dcookie 18 +#define __NR_eventfd2 19 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_epoll_create1 20 +#define __NR_epoll_ctl 21 +#define __NR_epoll_pwait 22 +#define __NR_dup 23 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_dup3 24 +#define __NR3264_fcntl 25 +#define __NR_inotify_init1 26 +#define __NR_inotify_add_watch 27 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_inotify_rm_watch 28 +#define __NR_ioctl 29 +#define __NR_ioprio_set 30 +#define __NR_ioprio_get 31 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_flock 32 +#define __NR_mknodat 33 +#define __NR_mkdirat 34 +#define __NR_unlinkat 35 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_symlinkat 36 +#define __NR_linkat 37 +#define __NR_renameat 38 +#define __NR_umount2 39 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_mount 40 +#define __NR_pivot_root 41 +#define __NR_nfsservctl 42 +#define __NR3264_statfs 43 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR3264_fstatfs 44 +#define __NR3264_truncate 45 +#define __NR3264_ftruncate 46 +#define __NR_fallocate 47 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_faccessat 48 +#define __NR_chdir 49 +#define __NR_fchdir 50 +#define __NR_chroot 51 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_fchmod 52 +#define __NR_fchmodat 53 +#define __NR_fchownat 54 +#define __NR_fchown 55 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_openat 56 +#define __NR_close 57 +#define __NR_vhangup 58 +#define __NR_pipe2 59 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_quotactl 60 +#define __NR_getdents64 61 +#define __NR3264_lseek 62 +#define __NR_read 63 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_write 64 +#define __NR_readv 65 +#define __NR_writev 66 +#define __NR_pread64 67 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_pwrite64 68 +#define __NR_preadv 69 +#define __NR_pwritev 70 +#define __NR3264_sendfile 71 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_pselect6 72 +#define __NR_ppoll 73 +#define __NR_signalfd4 74 +#define __NR_vmsplice 75 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_splice 76 +#define __NR_tee 77 +#define __NR_readlinkat 78 +#define __NR3264_fstatat 79 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR3264_fstat 80 +#define __NR_sync 81 +#define __NR_fsync 82 +#define __NR_fdatasync 83 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#ifdef __ARCH_WANT_SYNC_FILE_RANGE2 +#define __NR_sync_file_range2 84 +#else +#define __NR_sync_file_range 84 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif +#define __NR_timerfd_create 85 +#define __NR_timerfd_settime 86 +#define __NR_timerfd_gettime 87 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_utimensat 88 +#define __NR_acct 89 +#define __NR_capget 90 +#define __NR_capset 91 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_personality 92 +#define __NR_exit 93 +#define __NR_exit_group 94 +#define __NR_waitid 95 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_set_tid_address 96 +#define __NR_unshare 97 +#define __NR_futex 98 +#define __NR_set_robust_list 99 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_get_robust_list 100 +#define __NR_nanosleep 101 +#define __NR_getitimer 102 +#define __NR_setitimer 103 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_kexec_load 104 +#define __NR_init_module 105 +#define __NR_delete_module 106 +#define __NR_timer_create 107 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_timer_gettime 108 +#define __NR_timer_getoverrun 109 +#define __NR_timer_settime 110 +#define __NR_timer_delete 111 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_clock_settime 112 +#define __NR_clock_gettime 113 +#define __NR_clock_getres 114 +#define __NR_clock_nanosleep 115 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_syslog 116 +#define __NR_ptrace 117 +#define __NR_sched_setparam 118 +#define __NR_sched_setscheduler 119 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_sched_getscheduler 120 +#define __NR_sched_getparam 121 +#define __NR_sched_setaffinity 122 +#define __NR_sched_getaffinity 123 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_sched_yield 124 +#define __NR_sched_get_priority_max 125 +#define __NR_sched_get_priority_min 126 +#define __NR_sched_rr_get_interval 127 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_restart_syscall 128 +#define __NR_kill 129 +#define __NR_tkill 130 +#define __NR_tgkill 131 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_sigaltstack 132 +#define __NR_rt_sigsuspend 133 +#define __NR_rt_sigaction 134 +#define __NR_rt_sigprocmask 135 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_rt_sigpending 136 +#define __NR_rt_sigtimedwait 137 +#define __NR_rt_sigqueueinfo 138 +#define __NR_rt_sigreturn 139 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_setpriority 140 +#define __NR_getpriority 141 +#define __NR_reboot 142 +#define __NR_setregid 143 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_setgid 144 +#define __NR_setreuid 145 +#define __NR_setuid 146 +#define __NR_setresuid 147 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_getresuid 148 +#define __NR_setresgid 149 +#define __NR_getresgid 150 +#define __NR_setfsuid 151 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_setfsgid 152 +#define __NR_times 153 +#define __NR_setpgid 154 +#define __NR_getpgid 155 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_getsid 156 +#define __NR_setsid 157 +#define __NR_getgroups 158 +#define __NR_setgroups 159 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_uname 160 +#define __NR_sethostname 161 +#define __NR_setdomainname 162 +#define __NR_getrlimit 163 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_setrlimit 164 +#define __NR_getrusage 165 +#define __NR_umask 166 +#define __NR_prctl 167 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_getcpu 168 +#define __NR_gettimeofday 169 +#define __NR_settimeofday 170 +#define __NR_adjtimex 171 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_getpid 172 +#define __NR_getppid 173 +#define __NR_getuid 174 +#define __NR_geteuid 175 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_getgid 176 +#define __NR_getegid 177 +#define __NR_gettid 178 +#define __NR_sysinfo 179 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_mq_open 180 +#define __NR_mq_unlink 181 +#define __NR_mq_timedsend 182 +#define __NR_mq_timedreceive 183 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_mq_notify 184 +#define __NR_mq_getsetattr 185 +#define __NR_msgget 186 +#define __NR_msgctl 187 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_msgrcv 188 +#define __NR_msgsnd 189 +#define __NR_semget 190 +#define __NR_semctl 191 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_semtimedop 192 +#define __NR_semop 193 +#define __NR_shmget 194 +#define __NR_shmctl 195 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_shmat 196 +#define __NR_shmdt 197 +#define __NR_socket 198 +#define __NR_socketpair 199 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_bind 200 +#define __NR_listen 201 +#define __NR_accept 202 +#define __NR_connect 203 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_getsockname 204 +#define __NR_getpeername 205 +#define __NR_sendto 206 +#define __NR_recvfrom 207 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_setsockopt 208 +#define __NR_getsockopt 209 +#define __NR_shutdown 210 +#define __NR_sendmsg 211 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_recvmsg 212 +#define __NR_readahead 213 +#define __NR_brk 214 +#define __NR_munmap 215 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_mremap 216 +#define __NR_add_key 217 +#define __NR_request_key 218 +#define __NR_keyctl 219 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_clone 220 +#define __NR_execve 221 +#define __NR3264_mmap 222 +#define __NR3264_fadvise64 223 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#ifndef __ARCH_NOMMU +#define __NR_swapon 224 +#define __NR_swapoff 225 +#define __NR_mprotect 226 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_msync 227 +#define __NR_mlock 228 +#define __NR_munlock 229 +#define __NR_mlockall 230 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_munlockall 231 +#define __NR_mincore 232 +#define __NR_madvise 233 +#define __NR_remap_file_pages 234 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_mbind 235 +#define __NR_get_mempolicy 236 +#define __NR_set_mempolicy 237 +#define __NR_migrate_pages 238 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_move_pages 239 +#endif +#define __NR_rt_tgsigqueueinfo 240 +#define __NR_perf_event_open 241 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_accept4 242 +#define __NR_recvmmsg 243 +#define __NR_arch_specific_syscall 244 +#define __NR_wait4 260 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_prlimit64 261 +#define __NR_fanotify_init 262 +#define __NR_fanotify_mark 263 +#define __NR_name_to_handle_at 264 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_open_by_handle_at 265 +#define __NR_clock_adjtime 266 +#define __NR_syncfs 267 +#define __NR_setns 268 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_sendmmsg 269 +#define __NR_process_vm_readv 270 +#define __NR_process_vm_writev 271 +#define __NR_kcmp 272 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_finit_module 273 +#define __NR_sched_setattr 274 +#define __NR_sched_getattr 275 +#undef __NR_syscalls +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_syscalls 276 +#ifdef __ARCH_WANT_SYSCALL_NO_AT +#define __NR_open 1024 +#define __NR_link 1025 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_unlink 1026 +#define __NR_mknod 1027 +#define __NR_chmod 1028 +#define __NR_chown 1029 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_mkdir 1030 +#define __NR_rmdir 1031 +#define __NR_lchown 1032 +#define __NR_access 1033 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_rename 1034 +#define __NR_readlink 1035 +#define __NR_symlink 1036 +#define __NR_utimes 1037 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR3264_stat 1038 +#define __NR3264_lstat 1039 +#undef __NR_syscalls +#define __NR_syscalls (__NR3264_lstat+1) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif +#ifdef __ARCH_WANT_SYSCALL_NO_FLAGS +#define __NR_pipe 1040 +#define __NR_dup2 1041 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_epoll_create 1042 +#define __NR_inotify_init 1043 +#define __NR_eventfd 1044 +#define __NR_signalfd 1045 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#undef __NR_syscalls +#define __NR_syscalls (__NR_signalfd+1) +#endif +#if (__BITS_PER_LONG == 32 || defined(__SYSCALL_COMPAT)) && defined(__ARCH_WANT_SYSCALL_OFF_T) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_sendfile 1046 +#define __NR_ftruncate 1047 +#define __NR_truncate 1048 +#define __NR_stat 1049 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_lstat 1050 +#define __NR_fstat 1051 +#define __NR_fcntl 1052 +#define __NR_fadvise64 1053 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __ARCH_WANT_SYS_FADVISE64 +#define __NR_newfstatat 1054 +#define __ARCH_WANT_SYS_NEWFSTATAT +#define __NR_fstatfs 1055 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_statfs 1056 +#define __NR_lseek 1057 +#define __NR_mmap 1058 +#undef __NR_syscalls +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_syscalls (__NR_mmap+1) +#endif +#ifdef __ARCH_WANT_SYSCALL_DEPRECATED +#define __NR_alarm 1059 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __ARCH_WANT_SYS_ALARM +#define __NR_getpgrp 1060 +#define __ARCH_WANT_SYS_GETPGRP +#define __NR_pause 1061 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __ARCH_WANT_SYS_PAUSE +#define __NR_time 1062 +#define __ARCH_WANT_SYS_TIME +#define __ARCH_WANT_COMPAT_SYS_TIME +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_utime 1063 +#define __ARCH_WANT_SYS_UTIME +#define __NR_creat 1064 +#define __NR_getdents 1065 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __ARCH_WANT_SYS_GETDENTS +#define __NR_futimesat 1066 +#define __NR_select 1067 +#define __ARCH_WANT_SYS_SELECT +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_poll 1068 +#define __NR_epoll_wait 1069 +#define __NR_ustat 1070 +#define __NR_vfork 1071 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_oldwait4 1072 +#define __NR_recv 1073 +#define __NR_send 1074 +#define __NR_bdflush 1075 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_umount 1076 +#define __ARCH_WANT_SYS_OLDUMOUNT +#define __NR_uselib 1077 +#define __NR__sysctl 1078 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_fork 1079 +#undef __NR_syscalls +#define __NR_syscalls (__NR_fork+1) +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#if __BITS_PER_LONG == 64 && !defined(__SYSCALL_COMPAT) +#define __NR_fcntl __NR3264_fcntl +#define __NR_statfs __NR3264_statfs +#define __NR_fstatfs __NR3264_fstatfs +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_truncate __NR3264_truncate +#define __NR_ftruncate __NR3264_ftruncate +#define __NR_lseek __NR3264_lseek +#define __NR_sendfile __NR3264_sendfile +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_newfstatat __NR3264_fstatat +#define __NR_fstat __NR3264_fstat +#define __NR_mmap __NR3264_mmap +#define __NR_fadvise64 __NR3264_fadvise64 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#ifdef __NR3264_stat +#define __NR_stat __NR3264_stat +#define __NR_lstat __NR3264_lstat +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#else +#define __NR_fcntl64 __NR3264_fcntl +#define __NR_statfs64 __NR3264_statfs +#define __NR_fstatfs64 __NR3264_fstatfs +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_truncate64 __NR3264_truncate +#define __NR_ftruncate64 __NR3264_ftruncate +#define __NR_llseek __NR3264_lseek +#define __NR_sendfile64 __NR3264_sendfile +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_fstatat64 __NR3264_fstatat +#define __NR_fstat64 __NR3264_fstat +#define __NR_mmap2 __NR3264_mmap +#define __NR_fadvise64_64 __NR3264_fadvise64 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#ifdef __NR3264_stat +#define __NR_stat64 __NR3264_stat +#define __NR_lstat64 __NR3264_lstat +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/auxvec.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/auxvec.h new file mode 100644 index 0000000..2fa0e6b --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/auxvec.h @@ -0,0 +1,19 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#include diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/bitsperlong.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/bitsperlong.h new file mode 100644 index 0000000..9c6d022 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/bitsperlong.h @@ -0,0 +1,24 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef __ASM_MIPS_BITSPERLONG_H +#define __ASM_MIPS_BITSPERLONG_H +#define __BITS_PER_LONG _MIPS_SZLONG +#include +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/break.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/break.h new file mode 100644 index 0000000..7834e51 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/break.h @@ -0,0 +1,34 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef __UAPI_ASM_BREAK_H +#define __UAPI_ASM_BREAK_H +#define BRK_USERBP 0 +#define BRK_SSTEPBP 5 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define BRK_OVERFLOW 6 +#define BRK_DIVZERO 7 +#define BRK_RANGE 8 +#define BRK_BUG 12 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define BRK_MEMU 514 +#define BRK_KPROBE_BP 515 +#define BRK_KPROBE_SSTEPBP 516 +#define BRK_MULOVF 1023 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/byteorder.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/byteorder.h new file mode 100644 index 0000000..965fd8f --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/byteorder.h @@ -0,0 +1,23 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _ASM_BYTEORDER_H +#define _ASM_BYTEORDER_H +#include +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/cachectl.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/cachectl.h new file mode 100644 index 0000000..6cc6f28 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/cachectl.h @@ -0,0 +1,28 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _ASM_CACHECTL +#define _ASM_CACHECTL +#define ICACHE (1<<0) +#define DCACHE (1<<1) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define BCACHE (ICACHE|DCACHE) +#define CACHEABLE 0 +#define UNCACHEABLE 1 +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/errno.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/errno.h new file mode 100644 index 0000000..d56bec7 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/errno.h @@ -0,0 +1,149 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _UAPI_ASM_ERRNO_H +#define _UAPI_ASM_ERRNO_H +#include +#define ENOMSG 35 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define EIDRM 36 +#define ECHRNG 37 +#define EL2NSYNC 38 +#define EL3HLT 39 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define EL3RST 40 +#define ELNRNG 41 +#define EUNATCH 42 +#define ENOCSI 43 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define EL2HLT 44 +#define EDEADLK 45 +#define ENOLCK 46 +#define EBADE 50 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define EBADR 51 +#define EXFULL 52 +#define ENOANO 53 +#define EBADRQC 54 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define EBADSLT 55 +#define EDEADLOCK 56 +#define EBFONT 59 +#define ENOSTR 60 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ENODATA 61 +#define ETIME 62 +#define ENOSR 63 +#define ENONET 64 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ENOPKG 65 +#define EREMOTE 66 +#define ENOLINK 67 +#define EADV 68 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ESRMNT 69 +#define ECOMM 70 +#define EPROTO 71 +#define EDOTDOT 73 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define EMULTIHOP 74 +#define EBADMSG 77 +#define ENAMETOOLONG 78 +#define EOVERFLOW 79 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ENOTUNIQ 80 +#define EBADFD 81 +#define EREMCHG 82 +#define ELIBACC 83 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ELIBBAD 84 +#define ELIBSCN 85 +#define ELIBMAX 86 +#define ELIBEXEC 87 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define EILSEQ 88 +#define ENOSYS 89 +#define ELOOP 90 +#define ERESTART 91 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ESTRPIPE 92 +#define ENOTEMPTY 93 +#define EUSERS 94 +#define ENOTSOCK 95 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define EDESTADDRREQ 96 +#define EMSGSIZE 97 +#define EPROTOTYPE 98 +#define ENOPROTOOPT 99 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define EPROTONOSUPPORT 120 +#define ESOCKTNOSUPPORT 121 +#define EOPNOTSUPP 122 +#define EPFNOSUPPORT 123 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define EAFNOSUPPORT 124 +#define EADDRINUSE 125 +#define EADDRNOTAVAIL 126 +#define ENETDOWN 127 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ENETUNREACH 128 +#define ENETRESET 129 +#define ECONNABORTED 130 +#define ECONNRESET 131 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ENOBUFS 132 +#define EISCONN 133 +#define ENOTCONN 134 +#define EUCLEAN 135 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ENOTNAM 137 +#define ENAVAIL 138 +#define EISNAM 139 +#define EREMOTEIO 140 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define EINIT 141 +#define EREMDEV 142 +#define ESHUTDOWN 143 +#define ETOOMANYREFS 144 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ETIMEDOUT 145 +#define ECONNREFUSED 146 +#define EHOSTDOWN 147 +#define EHOSTUNREACH 148 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define EWOULDBLOCK EAGAIN +#define EALREADY 149 +#define EINPROGRESS 150 +#define ESTALE 151 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ECANCELED 158 +#define ENOMEDIUM 159 +#define EMEDIUMTYPE 160 +#define ENOKEY 161 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define EKEYEXPIRED 162 +#define EKEYREVOKED 163 +#define EKEYREJECTED 164 +#define EOWNERDEAD 165 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ENOTRECOVERABLE 166 +#define ERFKILL 167 +#define EHWPOISON 168 +#define EDQUOT 1133 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/fcntl.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/fcntl.h new file mode 100644 index 0000000..02ea3ac --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/fcntl.h @@ -0,0 +1,68 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _UAPI_ASM_FCNTL_H +#define _UAPI_ASM_FCNTL_H +#include +#define O_APPEND 0x0008 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define O_DSYNC 0x0010 +#define O_NONBLOCK 0x0080 +#define O_CREAT 0x0100 +#define O_TRUNC 0x0200 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define O_EXCL 0x0400 +#define O_NOCTTY 0x0800 +#define FASYNC 0x1000 +#define O_LARGEFILE 0x2000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __O_SYNC 0x4000 +#define O_SYNC (__O_SYNC|O_DSYNC) +#define O_DIRECT 0x8000 +#define F_GETLK 14 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define F_SETLK 6 +#define F_SETLKW 7 +#define F_SETOWN 24 +#define F_GETOWN 23 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#ifndef __mips64 +#define F_GETLK64 33 +#define F_SETLK64 34 +#define F_SETLKW64 35 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif +#if _MIPS_SIM != _MIPS_SIM_ABI64 +#include +struct flock { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + short l_type; + short l_whence; + __kernel_off_t l_start; + __kernel_off_t l_len; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + long l_sysid; + __kernel_pid_t l_pid; + long pad[4]; +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define HAVE_ARCH_STRUCT_FLOCK +#endif +#include +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/inst.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/inst.h new file mode 100644 index 0000000..c46d09b --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/inst.h @@ -0,0 +1,884 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _UAPI_ASM_INST_H +#define _UAPI_ASM_INST_H +enum major_op { + spec_op, bcond_op, j_op, jal_op, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + beq_op, bne_op, blez_op, bgtz_op, + addi_op, addiu_op, slti_op, sltiu_op, + andi_op, ori_op, xori_op, lui_op, + cop0_op, cop1_op, cop2_op, cop1x_op, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + beql_op, bnel_op, blezl_op, bgtzl_op, + daddi_op, daddiu_op, ldl_op, ldr_op, + spec2_op, jalx_op, mdmx_op, spec3_op, + lb_op, lh_op, lwl_op, lw_op, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + lbu_op, lhu_op, lwr_op, lwu_op, + sb_op, sh_op, swl_op, sw_op, + sdl_op, sdr_op, swr_op, cache_op, + ll_op, lwc1_op, lwc2_op, pref_op, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + lld_op, ldc1_op, ldc2_op, ld_op, + sc_op, swc1_op, swc2_op, major_3b_op, + scd_op, sdc1_op, sdc2_op, sd_op +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +enum spec_op { + sll_op, movc_op, srl_op, sra_op, + sllv_op, pmon_op, srlv_op, srav_op, + jr_op, jalr_op, movz_op, movn_op, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + syscall_op, break_op, spim_op, sync_op, + mfhi_op, mthi_op, mflo_op, mtlo_op, + dsllv_op, spec2_unused_op, dsrlv_op, dsrav_op, + mult_op, multu_op, div_op, divu_op, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + dmult_op, dmultu_op, ddiv_op, ddivu_op, + add_op, addu_op, sub_op, subu_op, + and_op, or_op, xor_op, nor_op, + spec3_unused_op, spec4_unused_op, slt_op, sltu_op, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + dadd_op, daddu_op, dsub_op, dsubu_op, + tge_op, tgeu_op, tlt_op, tltu_op, + teq_op, spec5_unused_op, tne_op, spec6_unused_op, + dsll_op, spec7_unused_op, dsrl_op, dsra_op, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + dsll32_op, spec8_unused_op, dsrl32_op, dsra32_op +}; +enum spec2_op { + madd_op, maddu_op, mul_op, spec2_3_unused_op, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + msub_op, msubu_op, + clz_op = 0x20, clo_op, + dclz_op = 0x24, dclo_op, + sdbpp_op = 0x3f +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +}; +enum spec3_op { + ext_op, dextm_op, dextu_op, dext_op, + ins_op, dinsm_op, dinsu_op, dins_op, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + lx_op = 0x0a, + bshfl_op = 0x20, + dbshfl_op = 0x24, + rdhwr_op = 0x3b +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +}; +enum rt_op { + bltz_op, bgez_op, bltzl_op, bgezl_op, + spimi_op, unused_rt_op_0x05, unused_rt_op_0x06, unused_rt_op_0x07, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + tgei_op, tgeiu_op, tlti_op, tltiu_op, + teqi_op, unused_0x0d_rt_op, tnei_op, unused_0x0f_rt_op, + bltzal_op, bgezal_op, bltzall_op, bgezall_op, + rt_op_0x14, rt_op_0x15, rt_op_0x16, rt_op_0x17, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + rt_op_0x18, rt_op_0x19, rt_op_0x1a, rt_op_0x1b, + bposge32_op, rt_op_0x1d, rt_op_0x1e, rt_op_0x1f +}; +enum cop_op { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + mfc_op = 0x00, dmfc_op = 0x01, + cfc_op = 0x02, mfhc_op = 0x03, + mtc_op = 0x04, dmtc_op = 0x05, + ctc_op = 0x06, mthc_op = 0x07, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + bc_op = 0x08, cop_op = 0x10, + copm_op = 0x18 +}; +enum bcop_op { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + bcf_op, bct_op, bcfl_op, bctl_op +}; +enum cop0_coi_func { + tlbr_op = 0x01, tlbwi_op = 0x02, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + tlbwr_op = 0x06, tlbp_op = 0x08, + rfe_op = 0x10, eret_op = 0x18 +}; +enum cop0_com_func { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + tlbr1_op = 0x01, tlbw_op = 0x02, + tlbp1_op = 0x08, dctr_op = 0x09, + dctw_op = 0x0a +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +enum cop1_fmt { + s_fmt, d_fmt, e_fmt, q_fmt, + w_fmt, l_fmt +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +enum cop1_sdw_func { + fadd_op = 0x00, fsub_op = 0x01, + fmul_op = 0x02, fdiv_op = 0x03, + fsqrt_op = 0x04, fabs_op = 0x05, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + fmov_op = 0x06, fneg_op = 0x07, + froundl_op = 0x08, ftruncl_op = 0x09, + fceill_op = 0x0a, ffloorl_op = 0x0b, + fround_op = 0x0c, ftrunc_op = 0x0d, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + fceil_op = 0x0e, ffloor_op = 0x0f, + fmovc_op = 0x11, fmovz_op = 0x12, + fmovn_op = 0x13, frecip_op = 0x15, + frsqrt_op = 0x16, fcvts_op = 0x20, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + fcvtd_op = 0x21, fcvte_op = 0x22, + fcvtw_op = 0x24, fcvtl_op = 0x25, + fcmp_op = 0x30 +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +enum cop1x_func { + lwxc1_op = 0x00, ldxc1_op = 0x01, + swxc1_op = 0x08, sdxc1_op = 0x09, + pfetch_op = 0x0f, madd_s_op = 0x20, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + madd_d_op = 0x21, madd_e_op = 0x22, + msub_s_op = 0x28, msub_d_op = 0x29, + msub_e_op = 0x2a, nmadd_s_op = 0x30, + nmadd_d_op = 0x31, nmadd_e_op = 0x32, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + nmsub_s_op = 0x38, nmsub_d_op = 0x39, + nmsub_e_op = 0x3a +}; +enum mad_func { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + madd_fp_op = 0x08, msub_fp_op = 0x0a, + nmadd_fp_op = 0x0c, nmsub_fp_op = 0x0e +}; +enum lx_func { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + lwx_op = 0x00, + lhx_op = 0x04, + lbux_op = 0x06, + ldx_op = 0x08, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + lwux_op = 0x10, + lhux_op = 0x14, + lbx_op = 0x16, +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +enum mm_major_op { + mm_pool32a_op, mm_pool16a_op, mm_lbu16_op, mm_move16_op, + mm_addi32_op, mm_lbu32_op, mm_sb32_op, mm_lb32_op, + mm_pool32b_op, mm_pool16b_op, mm_lhu16_op, mm_andi16_op, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + mm_addiu32_op, mm_lhu32_op, mm_sh32_op, mm_lh32_op, + mm_pool32i_op, mm_pool16c_op, mm_lwsp16_op, mm_pool16d_op, + mm_ori32_op, mm_pool32f_op, mm_reserved1_op, mm_reserved2_op, + mm_pool32c_op, mm_lwgp16_op, mm_lw16_op, mm_pool16e_op, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + mm_xori32_op, mm_jals32_op, mm_addiupc_op, mm_reserved3_op, + mm_reserved4_op, mm_pool16f_op, mm_sb16_op, mm_beqz16_op, + mm_slti32_op, mm_beq32_op, mm_swc132_op, mm_lwc132_op, + mm_reserved5_op, mm_reserved6_op, mm_sh16_op, mm_bnez16_op, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + mm_sltiu32_op, mm_bne32_op, mm_sdc132_op, mm_ldc132_op, + mm_reserved7_op, mm_reserved8_op, mm_swsp16_op, mm_b16_op, + mm_andi32_op, mm_j32_op, mm_sd32_op, mm_ld32_op, + mm_reserved11_op, mm_reserved12_op, mm_sw16_op, mm_li16_op, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + mm_jalx32_op, mm_jal32_op, mm_sw32_op, mm_lw32_op, +}; +enum mm_32i_minor_op { + mm_bltz_op, mm_bltzal_op, mm_bgez_op, mm_bgezal_op, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + mm_blez_op, mm_bnezc_op, mm_bgtz_op, mm_beqzc_op, + mm_tlti_op, mm_tgei_op, mm_tltiu_op, mm_tgeiu_op, + mm_tnei_op, mm_lui_op, mm_teqi_op, mm_reserved13_op, + mm_synci_op, mm_bltzals_op, mm_reserved14_op, mm_bgezals_op, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + mm_bc2f_op, mm_bc2t_op, mm_reserved15_op, mm_reserved16_op, + mm_reserved17_op, mm_reserved18_op, mm_bposge64_op, mm_bposge32_op, + mm_bc1f_op, mm_bc1t_op, mm_reserved19_op, mm_reserved20_op, + mm_bc1any2f_op, mm_bc1any2t_op, mm_bc1any4f_op, mm_bc1any4t_op, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +}; +enum mm_32a_minor_op { + mm_sll32_op = 0x000, + mm_ins_op = 0x00c, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + mm_ext_op = 0x02c, + mm_pool32axf_op = 0x03c, + mm_srl32_op = 0x040, + mm_sra_op = 0x080, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + mm_rotr_op = 0x0c0, + mm_lwxs_op = 0x118, + mm_addu32_op = 0x150, + mm_subu32_op = 0x1d0, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + mm_and_op = 0x250, + mm_or32_op = 0x290, + mm_xor32_op = 0x310, +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +enum mm_32b_func { + mm_lwc2_func = 0x0, + mm_lwp_func = 0x1, + mm_ldc2_func = 0x2, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + mm_ldp_func = 0x4, + mm_lwm32_func = 0x5, + mm_cache_func = 0x6, + mm_ldm_func = 0x7, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + mm_swc2_func = 0x8, + mm_swp_func = 0x9, + mm_sdc2_func = 0xa, + mm_sdp_func = 0xc, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + mm_swm32_func = 0xd, + mm_sdm_func = 0xf, +}; +enum mm_32c_func { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + mm_pref_func = 0x2, + mm_ll_func = 0x3, + mm_swr_func = 0x9, + mm_sc_func = 0xb, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + mm_lwu_func = 0xe, +}; +enum mm_32axf_minor_op { + mm_mfc0_op = 0x003, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + mm_mtc0_op = 0x00b, + mm_tlbp_op = 0x00d, + mm_jalr_op = 0x03c, + mm_tlbr_op = 0x04d, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + mm_jalrhb_op = 0x07c, + mm_tlbwi_op = 0x08d, + mm_tlbwr_op = 0x0cd, + mm_jalrs_op = 0x13c, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + mm_jalrshb_op = 0x17c, + mm_syscall_op = 0x22d, + mm_eret_op = 0x3cd, +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +enum mm_32f_minor_op { + mm_32f_00_op = 0x00, + mm_32f_01_op = 0x01, + mm_32f_02_op = 0x02, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + mm_32f_10_op = 0x08, + mm_32f_11_op = 0x09, + mm_32f_12_op = 0x0a, + mm_32f_20_op = 0x10, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + mm_32f_30_op = 0x18, + mm_32f_40_op = 0x20, + mm_32f_41_op = 0x21, + mm_32f_42_op = 0x22, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + mm_32f_50_op = 0x28, + mm_32f_51_op = 0x29, + mm_32f_52_op = 0x2a, + mm_32f_60_op = 0x30, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + mm_32f_70_op = 0x38, + mm_32f_73_op = 0x3b, + mm_32f_74_op = 0x3c, +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +enum mm_32f_10_minor_op { + mm_lwxc1_op = 0x1, + mm_swxc1_op, + mm_ldxc1_op, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + mm_sdxc1_op, + mm_luxc1_op, + mm_suxc1_op, +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +enum mm_32f_func { + mm_lwxc1_func = 0x048, + mm_swxc1_func = 0x088, + mm_ldxc1_func = 0x0c8, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + mm_sdxc1_func = 0x108, +}; +enum mm_32f_40_minor_op { + mm_fmovf_op, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + mm_fmovt_op, +}; +enum mm_32f_60_minor_op { + mm_fadd_op, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + mm_fsub_op, + mm_fmul_op, + mm_fdiv_op, +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +enum mm_32f_70_minor_op { + mm_fmovn_op, + mm_fmovz_op, +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +enum mm_32f_73_minor_op { + mm_fmov0_op = 0x01, + mm_fcvtl_op = 0x04, + mm_movf0_op = 0x05, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + mm_frsqrt_op = 0x08, + mm_ffloorl_op = 0x0c, + mm_fabs0_op = 0x0d, + mm_fcvtw_op = 0x24, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + mm_movt0_op = 0x25, + mm_fsqrt_op = 0x28, + mm_ffloorw_op = 0x2c, + mm_fneg0_op = 0x2d, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + mm_cfc1_op = 0x40, + mm_frecip_op = 0x48, + mm_fceill_op = 0x4c, + mm_fcvtd0_op = 0x4d, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + mm_ctc1_op = 0x60, + mm_fceilw_op = 0x6c, + mm_fcvts0_op = 0x6d, + mm_mfc1_op = 0x80, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + mm_fmov1_op = 0x81, + mm_movf1_op = 0x85, + mm_ftruncl_op = 0x8c, + mm_fabs1_op = 0x8d, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + mm_mtc1_op = 0xa0, + mm_movt1_op = 0xa5, + mm_ftruncw_op = 0xac, + mm_fneg1_op = 0xad, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + mm_mfhc1_op = 0xc0, + mm_froundl_op = 0xcc, + mm_fcvtd1_op = 0xcd, + mm_mthc1_op = 0xe0, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + mm_froundw_op = 0xec, + mm_fcvts1_op = 0xed, +}; +enum mm_16c_minor_op { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + mm_lwm16_op = 0x04, + mm_swm16_op = 0x05, + mm_jr16_op = 0x0c, + mm_jrc_op = 0x0d, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + mm_jalr16_op = 0x0e, + mm_jalrs16_op = 0x0f, + mm_jraddiusp_op = 0x18, +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +enum mm_16d_minor_op { + mm_addius5_func, + mm_addiusp_func, +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +enum MIPS16e_ops { + MIPS16e_jal_op = 003, + MIPS16e_ld_op = 007, + MIPS16e_i8_op = 014, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + MIPS16e_sd_op = 017, + MIPS16e_lb_op = 020, + MIPS16e_lh_op = 021, + MIPS16e_lwsp_op = 022, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + MIPS16e_lw_op = 023, + MIPS16e_lbu_op = 024, + MIPS16e_lhu_op = 025, + MIPS16e_lwpc_op = 026, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + MIPS16e_lwu_op = 027, + MIPS16e_sb_op = 030, + MIPS16e_sh_op = 031, + MIPS16e_swsp_op = 032, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + MIPS16e_sw_op = 033, + MIPS16e_rr_op = 035, + MIPS16e_extend_op = 036, + MIPS16e_i64_op = 037, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +}; +enum MIPS16e_i64_func { + MIPS16e_ldsp_func, + MIPS16e_sdsp_func, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + MIPS16e_sdrasp_func, + MIPS16e_dadjsp_func, + MIPS16e_ldpc_func, +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +enum MIPS16e_rr_func { + MIPS16e_jr_func, +}; +enum MIPS6e_i8_func { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + MIPS16e_swrasp_func = 02, +}; +#define MM_NOP16 0x0c00 +#define BITFIELD_FIELD(field, more) more field; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +struct j_format { + BITFIELD_FIELD(unsigned int opcode : 6, + BITFIELD_FIELD(unsigned int target : 26, + ;)) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +}; +struct i_format { + BITFIELD_FIELD(unsigned int opcode : 6, + BITFIELD_FIELD(unsigned int rs : 5, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int rt : 5, + BITFIELD_FIELD(signed int simmediate : 16, + ;)))) +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +struct u_format { + BITFIELD_FIELD(unsigned int opcode : 6, + BITFIELD_FIELD(unsigned int rs : 5, + BITFIELD_FIELD(unsigned int rt : 5, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int uimmediate : 16, + ;)))) +}; +struct c_format { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int opcode : 6, + BITFIELD_FIELD(unsigned int rs : 5, + BITFIELD_FIELD(unsigned int c_op : 3, + BITFIELD_FIELD(unsigned int cache : 2, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int simmediate : 16, + ;))))) +}; +struct r_format { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int opcode : 6, + BITFIELD_FIELD(unsigned int rs : 5, + BITFIELD_FIELD(unsigned int rt : 5, + BITFIELD_FIELD(unsigned int rd : 5, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int re : 5, + BITFIELD_FIELD(unsigned int func : 6, + ;)))))) +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +struct p_format { + BITFIELD_FIELD(unsigned int opcode : 6, + BITFIELD_FIELD(unsigned int rs : 5, + BITFIELD_FIELD(unsigned int rt : 5, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int rd : 5, + BITFIELD_FIELD(unsigned int re : 5, + BITFIELD_FIELD(unsigned int func : 6, + ;)))))) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +}; +struct f_format { + BITFIELD_FIELD(unsigned int opcode : 6, + BITFIELD_FIELD(unsigned int : 1, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int fmt : 4, + BITFIELD_FIELD(unsigned int rt : 5, + BITFIELD_FIELD(unsigned int rd : 5, + BITFIELD_FIELD(unsigned int re : 5, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int func : 6, + ;))))))) +}; +struct ma_format { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int opcode : 6, + BITFIELD_FIELD(unsigned int fr : 5, + BITFIELD_FIELD(unsigned int ft : 5, + BITFIELD_FIELD(unsigned int fs : 5, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int fd : 5, + BITFIELD_FIELD(unsigned int func : 4, + BITFIELD_FIELD(unsigned int fmt : 2, + ;))))))) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +}; +struct b_format { + BITFIELD_FIELD(unsigned int opcode : 6, + BITFIELD_FIELD(unsigned int code : 20, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int func : 6, + ;))) +}; +struct ps_format { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int opcode : 6, + BITFIELD_FIELD(unsigned int rs : 5, + BITFIELD_FIELD(unsigned int ft : 5, + BITFIELD_FIELD(unsigned int fs : 5, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int fd : 5, + BITFIELD_FIELD(unsigned int func : 6, + ;)))))) +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +struct v_format { + BITFIELD_FIELD(unsigned int opcode : 6, + BITFIELD_FIELD(unsigned int sel : 4, + BITFIELD_FIELD(unsigned int fmt : 1, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int vt : 5, + BITFIELD_FIELD(unsigned int vs : 5, + BITFIELD_FIELD(unsigned int vd : 5, + BITFIELD_FIELD(unsigned int func : 6, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + ;))))))) +}; +struct fb_format { + BITFIELD_FIELD(unsigned int opcode : 6, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int bc : 5, + BITFIELD_FIELD(unsigned int cc : 3, + BITFIELD_FIELD(unsigned int flag : 2, + BITFIELD_FIELD(signed int simmediate : 16, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + ;))))) +}; +struct fp0_format { + BITFIELD_FIELD(unsigned int opcode : 6, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int fmt : 5, + BITFIELD_FIELD(unsigned int ft : 5, + BITFIELD_FIELD(unsigned int fs : 5, + BITFIELD_FIELD(unsigned int fd : 5, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int func : 6, + ;)))))) +}; +struct mm_fp0_format { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int opcode : 6, + BITFIELD_FIELD(unsigned int ft : 5, + BITFIELD_FIELD(unsigned int fs : 5, + BITFIELD_FIELD(unsigned int fd : 5, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int fmt : 3, + BITFIELD_FIELD(unsigned int op : 2, + BITFIELD_FIELD(unsigned int func : 6, + ;))))))) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +}; +struct fp1_format { + BITFIELD_FIELD(unsigned int opcode : 6, + BITFIELD_FIELD(unsigned int op : 5, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int rt : 5, + BITFIELD_FIELD(unsigned int fs : 5, + BITFIELD_FIELD(unsigned int fd : 5, + BITFIELD_FIELD(unsigned int func : 6, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + ;)))))) +}; +struct mm_fp1_format { + BITFIELD_FIELD(unsigned int opcode : 6, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int rt : 5, + BITFIELD_FIELD(unsigned int fs : 5, + BITFIELD_FIELD(unsigned int fmt : 2, + BITFIELD_FIELD(unsigned int op : 8, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int func : 6, + ;)))))) +}; +struct mm_fp2_format { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int opcode : 6, + BITFIELD_FIELD(unsigned int fd : 5, + BITFIELD_FIELD(unsigned int fs : 5, + BITFIELD_FIELD(unsigned int cc : 3, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int zero : 2, + BITFIELD_FIELD(unsigned int fmt : 2, + BITFIELD_FIELD(unsigned int op : 3, + BITFIELD_FIELD(unsigned int func : 6, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + ;)))))))) +}; +struct mm_fp3_format { + BITFIELD_FIELD(unsigned int opcode : 6, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int rt : 5, + BITFIELD_FIELD(unsigned int fs : 5, + BITFIELD_FIELD(unsigned int fmt : 3, + BITFIELD_FIELD(unsigned int op : 7, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int func : 6, + ;)))))) +}; +struct mm_fp4_format { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int opcode : 6, + BITFIELD_FIELD(unsigned int rt : 5, + BITFIELD_FIELD(unsigned int fs : 5, + BITFIELD_FIELD(unsigned int cc : 3, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int fmt : 3, + BITFIELD_FIELD(unsigned int cond : 4, + BITFIELD_FIELD(unsigned int func : 6, + ;))))))) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +}; +struct mm_fp5_format { + BITFIELD_FIELD(unsigned int opcode : 6, + BITFIELD_FIELD(unsigned int index : 5, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int base : 5, + BITFIELD_FIELD(unsigned int fd : 5, + BITFIELD_FIELD(unsigned int op : 5, + BITFIELD_FIELD(unsigned int func : 6, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + ;)))))) +}; +struct fp6_format { + BITFIELD_FIELD(unsigned int opcode : 6, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int fr : 5, + BITFIELD_FIELD(unsigned int ft : 5, + BITFIELD_FIELD(unsigned int fs : 5, + BITFIELD_FIELD(unsigned int fd : 5, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int func : 6, + ;)))))) +}; +struct mm_fp6_format { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int opcode : 6, + BITFIELD_FIELD(unsigned int ft : 5, + BITFIELD_FIELD(unsigned int fs : 5, + BITFIELD_FIELD(unsigned int fd : 5, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int fr : 5, + BITFIELD_FIELD(unsigned int func : 6, + ;)))))) +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +struct mm_i_format { + BITFIELD_FIELD(unsigned int opcode : 6, + BITFIELD_FIELD(unsigned int rt : 5, + BITFIELD_FIELD(unsigned int rs : 5, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(signed int simmediate : 16, + ;)))) +}; +struct mm_m_format { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int opcode : 6, + BITFIELD_FIELD(unsigned int rd : 5, + BITFIELD_FIELD(unsigned int base : 5, + BITFIELD_FIELD(unsigned int func : 4, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(signed int simmediate : 12, + ;))))) +}; +struct mm_x_format { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int opcode : 6, + BITFIELD_FIELD(unsigned int index : 5, + BITFIELD_FIELD(unsigned int base : 5, + BITFIELD_FIELD(unsigned int rd : 5, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int func : 11, + ;))))) +}; +struct mm_b0_format { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int opcode : 6, + BITFIELD_FIELD(signed int simmediate : 10, + BITFIELD_FIELD(unsigned int : 16, + ;))) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +}; +struct mm_b1_format { + BITFIELD_FIELD(unsigned int opcode : 6, + BITFIELD_FIELD(unsigned int rs : 3, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(signed int simmediate : 7, + BITFIELD_FIELD(unsigned int : 16, + ;)))) +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +struct mm16_m_format { + BITFIELD_FIELD(unsigned int opcode : 6, + BITFIELD_FIELD(unsigned int func : 4, + BITFIELD_FIELD(unsigned int rlist : 2, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int imm : 4, + BITFIELD_FIELD(unsigned int : 16, + ;))))) +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +struct mm16_rb_format { + BITFIELD_FIELD(unsigned int opcode : 6, + BITFIELD_FIELD(unsigned int rt : 3, + BITFIELD_FIELD(unsigned int base : 3, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(signed int simmediate : 4, + BITFIELD_FIELD(unsigned int : 16, + ;))))) +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +struct mm16_r3_format { + BITFIELD_FIELD(unsigned int opcode : 6, + BITFIELD_FIELD(unsigned int rt : 3, + BITFIELD_FIELD(signed int simmediate : 7, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int : 16, + ;)))) +}; +struct mm16_r5_format { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int opcode : 6, + BITFIELD_FIELD(unsigned int rt : 5, + BITFIELD_FIELD(signed int simmediate : 5, + BITFIELD_FIELD(unsigned int : 16, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + ;)))) +}; +struct m16e_rr { + BITFIELD_FIELD(unsigned int opcode : 5, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int rx : 3, + BITFIELD_FIELD(unsigned int nd : 1, + BITFIELD_FIELD(unsigned int l : 1, + BITFIELD_FIELD(unsigned int ra : 1, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int func : 5, + ;)))))) +}; +struct m16e_jal { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int opcode : 5, + BITFIELD_FIELD(unsigned int x : 1, + BITFIELD_FIELD(unsigned int imm20_16 : 5, + BITFIELD_FIELD(signed int imm25_21 : 5, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + ;)))) +}; +struct m16e_i64 { + BITFIELD_FIELD(unsigned int opcode : 5, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int func : 3, + BITFIELD_FIELD(unsigned int imm : 8, + ;))) +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +struct m16e_ri64 { + BITFIELD_FIELD(unsigned int opcode : 5, + BITFIELD_FIELD(unsigned int func : 3, + BITFIELD_FIELD(unsigned int ry : 3, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int imm : 5, + ;)))) +}; +struct m16e_ri { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int opcode : 5, + BITFIELD_FIELD(unsigned int rx : 3, + BITFIELD_FIELD(unsigned int imm : 8, + ;))) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +}; +struct m16e_rri { + BITFIELD_FIELD(unsigned int opcode : 5, + BITFIELD_FIELD(unsigned int rx : 3, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + BITFIELD_FIELD(unsigned int ry : 3, + BITFIELD_FIELD(unsigned int imm : 5, + ;)))) +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +struct m16e_i8 { + BITFIELD_FIELD(unsigned int opcode : 5, + BITFIELD_FIELD(unsigned int func : 3, + BITFIELD_FIELD(unsigned int imm : 8, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + ;))) +}; +union mips_instruction { + unsigned int word; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned short halfword[2]; + unsigned char byte[4]; + struct j_format j_format; + struct i_format i_format; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + struct u_format u_format; + struct c_format c_format; + struct r_format r_format; + struct p_format p_format; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + struct f_format f_format; + struct ma_format ma_format; + struct b_format b_format; + struct ps_format ps_format; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + struct v_format v_format; + struct fb_format fb_format; + struct fp0_format fp0_format; + struct mm_fp0_format mm_fp0_format; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + struct fp1_format fp1_format; + struct mm_fp1_format mm_fp1_format; + struct mm_fp2_format mm_fp2_format; + struct mm_fp3_format mm_fp3_format; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + struct mm_fp4_format mm_fp4_format; + struct mm_fp5_format mm_fp5_format; + struct fp6_format fp6_format; + struct mm_fp6_format mm_fp6_format; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + struct mm_i_format mm_i_format; + struct mm_m_format mm_m_format; + struct mm_x_format mm_x_format; + struct mm_b0_format mm_b0_format; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + struct mm_b1_format mm_b1_format; + struct mm16_m_format mm16_m_format ; + struct mm16_rb_format mm16_rb_format; + struct mm16_r3_format mm16_r3_format; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + struct mm16_r5_format mm16_r5_format; +}; +union mips16e_instruction { + unsigned int full : 16; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + struct m16e_rr rr; + struct m16e_jal jal; + struct m16e_i64 i64; + struct m16e_ri64 ri64; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + struct m16e_ri ri; + struct m16e_rri rri; + struct m16e_i8 i8; +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/ioctl.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/ioctl.h new file mode 100644 index 0000000..f138c77 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/ioctl.h @@ -0,0 +1,29 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef __ASM_IOCTL_H +#define __ASM_IOCTL_H +#define _IOC_SIZEBITS 13 +#define _IOC_DIRBITS 3 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define _IOC_NONE 1U +#define _IOC_READ 2U +#define _IOC_WRITE 4U +#include +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/ioctls.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/ioctls.h new file mode 100644 index 0000000..32e6e34 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/ioctls.h @@ -0,0 +1,124 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef __ASM_IOCTLS_H +#define __ASM_IOCTLS_H +#include +#define TCGETA 0x5401 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TCSETA 0x5402 +#define TCSETAW 0x5403 +#define TCSETAF 0x5404 +#define TCSBRK 0x5405 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TCXONC 0x5406 +#define TCFLSH 0x5407 +#define TCGETS 0x540d +#define TCSETS 0x540e +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TCSETSW 0x540f +#define TCSETSF 0x5410 +#define TIOCEXCL 0x740d +#define TIOCNXCL 0x740e +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TIOCOUTQ 0x7472 +#define TIOCSTI 0x5472 +#define TIOCMGET 0x741d +#define TIOCMBIS 0x741b +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TIOCMBIC 0x741c +#define TIOCMSET 0x741a +#define TIOCPKT 0x5470 +#define TIOCPKT_DATA 0x00 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TIOCPKT_FLUSHREAD 0x01 +#define TIOCPKT_FLUSHWRITE 0x02 +#define TIOCPKT_STOP 0x04 +#define TIOCPKT_START 0x08 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TIOCPKT_NOSTOP 0x10 +#define TIOCPKT_DOSTOP 0x20 +#define TIOCPKT_IOCTL 0x40 +#define TIOCSWINSZ _IOW('t', 103, struct winsize) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TIOCGWINSZ _IOR('t', 104, struct winsize) +#define TIOCNOTTY 0x5471 +#define TIOCSETD 0x7401 +#define TIOCGETD 0x7400 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define FIOCLEX 0x6601 +#define FIONCLEX 0x6602 +#define FIOASYNC 0x667d +#define FIONBIO 0x667e +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define FIOQSIZE 0x667f +#define TIOCGLTC 0x7474 +#define TIOCSLTC 0x7475 +#define TIOCSPGRP _IOW('t', 118, int) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TIOCGPGRP _IOR('t', 119, int) +#define TIOCCONS _IOW('t', 120, int) +#define FIONREAD 0x467f +#define TIOCINQ FIONREAD +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TIOCGETP 0x7408 +#define TIOCSETP 0x7409 +#define TIOCSETN 0x740a +#define TIOCSBRK 0x5427 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TIOCCBRK 0x5428 +#define TIOCGSID 0x7416 +#define TCGETS2 _IOR('T', 0x2A, struct termios2) +#define TCSETS2 _IOW('T', 0x2B, struct termios2) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TCSETSW2 _IOW('T', 0x2C, struct termios2) +#define TCSETSF2 _IOW('T', 0x2D, struct termios2) +#define TIOCGPTN _IOR('T', 0x30, unsigned int) +#define TIOCSPTLCK _IOW('T', 0x31, int) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TIOCGDEV _IOR('T', 0x32, unsigned int) +#define TIOCSIG _IOW('T', 0x36, int) +#define TIOCVHANGUP 0x5437 +#define TIOCGPKT _IOR('T', 0x38, int) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TIOCGPTLCK _IOR('T', 0x39, int) +#define TIOCGEXCL _IOR('T', 0x40, int) +#define TIOCSCTTY 0x5480 +#define TIOCGSOFTCAR 0x5481 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TIOCSSOFTCAR 0x5482 +#define TIOCLINUX 0x5483 +#define TIOCGSERIAL 0x5484 +#define TIOCSSERIAL 0x5485 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TCSBRKP 0x5486 +#define TIOCSERCONFIG 0x5488 +#define TIOCSERGWILD 0x5489 +#define TIOCSERSWILD 0x548a +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TIOCGLCKTRMIOS 0x548b +#define TIOCSLCKTRMIOS 0x548c +#define TIOCSERGSTRUCT 0x548d +#define TIOCSERGETLSR 0x548e +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TIOCSERGETMULTI 0x548f +#define TIOCSERSETMULTI 0x5490 +#define TIOCMIWAIT 0x5491 +#define TIOCGICOUNT 0x5492 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/ipcbuf.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/ipcbuf.h new file mode 100644 index 0000000..0021f14 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/ipcbuf.h @@ -0,0 +1,19 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#include diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/kvm.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/kvm.h new file mode 100644 index 0000000..69084ee --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/kvm.h @@ -0,0 +1,101 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef __LINUX_KVM_MIPS_H +#define __LINUX_KVM_MIPS_H +#include +struct kvm_regs { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __u64 gpr[32]; + __u64 hi; + __u64 lo; + __u64 pc; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +}; +struct kvm_fpu { + __u64 fpr[32]; + __u32 fir; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __u32 fccr; + __u32 fexr; + __u32 fenr; + __u32 fcsr; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __u32 pad; +}; +#define KVM_REG_MIPS_R0 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 0) +#define KVM_REG_MIPS_R1 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 1) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_REG_MIPS_R2 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 2) +#define KVM_REG_MIPS_R3 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 3) +#define KVM_REG_MIPS_R4 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 4) +#define KVM_REG_MIPS_R5 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 5) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_REG_MIPS_R6 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 6) +#define KVM_REG_MIPS_R7 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 7) +#define KVM_REG_MIPS_R8 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 8) +#define KVM_REG_MIPS_R9 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 9) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_REG_MIPS_R10 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 10) +#define KVM_REG_MIPS_R11 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 11) +#define KVM_REG_MIPS_R12 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 12) +#define KVM_REG_MIPS_R13 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 13) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_REG_MIPS_R14 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 14) +#define KVM_REG_MIPS_R15 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 15) +#define KVM_REG_MIPS_R16 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 16) +#define KVM_REG_MIPS_R17 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 17) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_REG_MIPS_R18 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 18) +#define KVM_REG_MIPS_R19 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 19) +#define KVM_REG_MIPS_R20 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 20) +#define KVM_REG_MIPS_R21 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 21) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_REG_MIPS_R22 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 22) +#define KVM_REG_MIPS_R23 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 23) +#define KVM_REG_MIPS_R24 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 24) +#define KVM_REG_MIPS_R25 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 25) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_REG_MIPS_R26 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 26) +#define KVM_REG_MIPS_R27 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 27) +#define KVM_REG_MIPS_R28 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 28) +#define KVM_REG_MIPS_R29 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 29) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_REG_MIPS_R30 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 30) +#define KVM_REG_MIPS_R31 (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 31) +#define KVM_REG_MIPS_HI (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 32) +#define KVM_REG_MIPS_LO (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 33) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KVM_REG_MIPS_PC (KVM_REG_MIPS | KVM_REG_SIZE_U64 | 34) +struct kvm_debug_exit_arch { + __u64 epc; +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +struct kvm_guest_debug_arch { +}; +struct kvm_sync_regs { +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +struct kvm_sregs { +}; +struct kvm_mips_interrupt { + __u32 cpu; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __u32 irq; +}; +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/kvm_para.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/kvm_para.h new file mode 100644 index 0000000..e19f7a0 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/kvm_para.h @@ -0,0 +1,19 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#include diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/mman.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/mman.h new file mode 100644 index 0000000..b9a9031 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/mman.h @@ -0,0 +1,81 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _ASM_MMAN_H +#define _ASM_MMAN_H +#define PROT_NONE 0x00 +#define PROT_READ 0x01 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define PROT_WRITE 0x02 +#define PROT_EXEC 0x04 +#define PROT_SEM 0x10 +#define PROT_GROWSDOWN 0x01000000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define PROT_GROWSUP 0x02000000 +#define MAP_SHARED 0x001 +#define MAP_PRIVATE 0x002 +#define MAP_TYPE 0x00f +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define MAP_FIXED 0x010 +#define MAP_RENAME 0x020 +#define MAP_AUTOGROW 0x040 +#define MAP_LOCAL 0x080 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define MAP_AUTORSRV 0x100 +#define MAP_NORESERVE 0x0400 +#define MAP_ANONYMOUS 0x0800 +#define MAP_GROWSDOWN 0x1000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define MAP_DENYWRITE 0x2000 +#define MAP_EXECUTABLE 0x4000 +#define MAP_LOCKED 0x8000 +#define MAP_POPULATE 0x10000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define MAP_NONBLOCK 0x20000 +#define MAP_STACK 0x40000 +#define MAP_HUGETLB 0x80000 +#define MS_ASYNC 0x0001 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define MS_INVALIDATE 0x0002 +#define MS_SYNC 0x0004 +#define MCL_CURRENT 1 +#define MCL_FUTURE 2 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define MADV_NORMAL 0 +#define MADV_RANDOM 1 +#define MADV_SEQUENTIAL 2 +#define MADV_WILLNEED 3 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define MADV_DONTNEED 4 +#define MADV_REMOVE 9 +#define MADV_DONTFORK 10 +#define MADV_DOFORK 11 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define MADV_MERGEABLE 12 +#define MADV_UNMERGEABLE 13 +#define MADV_HWPOISON 100 +#define MADV_HUGEPAGE 14 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define MADV_NOHUGEPAGE 15 +#define MADV_DONTDUMP 16 +#define MADV_DODUMP 17 +#define MAP_FILE 0 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define MAP_HUGE_SHIFT 26 +#define MAP_HUGE_MASK 0x3f +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/msgbuf.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/msgbuf.h new file mode 100644 index 0000000..efae148 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/msgbuf.h @@ -0,0 +1,49 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _ASM_MSGBUF_H +#define _ASM_MSGBUF_H +struct msqid64_ds { + struct ipc64_perm msg_perm; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __kernel_time_t msg_stime; +#ifndef __mips64 + unsigned long __unused1; +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __kernel_time_t msg_rtime; +#ifndef __mips64 + unsigned long __unused2; +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __kernel_time_t msg_ctime; +#ifndef __mips64 + unsigned long __unused3; +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned long msg_cbytes; + unsigned long msg_qnum; + unsigned long msg_qbytes; + __kernel_pid_t msg_lspid; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __kernel_pid_t msg_lrpid; + unsigned long __unused4; + unsigned long __unused5; +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/param.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/param.h new file mode 100644 index 0000000..b087c6c --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/param.h @@ -0,0 +1,24 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _ASM_PARAM_H +#define _ASM_PARAM_H +#define EXEC_PAGESIZE 65536 +#include +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/poll.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/poll.h new file mode 100644 index 0000000..8d6a297 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/poll.h @@ -0,0 +1,25 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef __ASM_POLL_H +#define __ASM_POLL_H +#define POLLWRNORM POLLOUT +#define POLLWRBAND 0x0100 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#include +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/posix_types.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/posix_types.h new file mode 100644 index 0000000..e85821c --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/posix_types.h @@ -0,0 +1,34 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _ASM_POSIX_TYPES_H +#define _ASM_POSIX_TYPES_H +#include +typedef long __kernel_daddr_t; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __kernel_daddr_t __kernel_daddr_t +#if _MIPS_SZLONG == 32 +typedef struct { + long val[2]; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +} __kernel_fsid_t; +#define __kernel_fsid_t __kernel_fsid_t +#endif +#include +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/ptrace.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/ptrace.h new file mode 100644 index 0000000..0296cf3 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/ptrace.h @@ -0,0 +1,93 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _UAPI_ASM_PTRACE_H +#define _UAPI_ASM_PTRACE_H +#define FPR_BASE 32 +#define PC 64 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define CAUSE 65 +#define BADVADDR 66 +#define MMHI 67 +#define MMLO 68 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define FPC_CSR 69 +#define FPC_EIR 70 +#define DSP_BASE 71 +#define DSP_CONTROL 77 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ACX 78 +struct pt_regs { + unsigned long regs[32]; + unsigned long cp0_status; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned long hi; + unsigned long lo; + unsigned long cp0_badvaddr; + unsigned long cp0_cause; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned long cp0_epc; +} __attribute__ ((aligned (8))); +#define PTRACE_GETREGS 12 +#define PTRACE_SETREGS 13 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define PTRACE_GETFPREGS 14 +#define PTRACE_SETFPREGS 15 +#define PTRACE_OLDSETOPTIONS 21 +#define PTRACE_GET_THREAD_AREA 25 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define PTRACE_SET_THREAD_AREA 26 +#define PTRACE_PEEKTEXT_3264 0xc0 +#define PTRACE_PEEKDATA_3264 0xc1 +#define PTRACE_POKETEXT_3264 0xc2 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define PTRACE_POKEDATA_3264 0xc3 +#define PTRACE_GET_THREAD_AREA_3264 0xc4 +enum pt_watch_style { + pt_watch_style_mips32, +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + pt_watch_style_mips64 +}; +struct mips32_watch_regs { + unsigned int watchlo[8]; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned short watchhi[8]; + unsigned short watch_masks[8]; + unsigned int num_valid; +} __attribute__((aligned(8))); +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +struct mips64_watch_regs { + unsigned long long watchlo[8]; + unsigned short watchhi[8]; + unsigned short watch_masks[8]; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned int num_valid; +} __attribute__((aligned(8))); +struct pt_watch_regs { + enum pt_watch_style style; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + union { + struct mips32_watch_regs mips32; + struct mips64_watch_regs mips64; + }; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +}; +#define PTRACE_GET_WATCH_REGS 0xd0 +#define PTRACE_SET_WATCH_REGS 0xd1 +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/resource.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/resource.h new file mode 100644 index 0000000..728a519 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/resource.h @@ -0,0 +1,33 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _ASM_RESOURCE_H +#define _ASM_RESOURCE_H +#define RLIMIT_NOFILE 5 +#define RLIMIT_AS 6 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define RLIMIT_RSS 7 +#define RLIMIT_NPROC 8 +#define RLIMIT_MEMLOCK 9 +#ifndef __mips64 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define RLIM_INFINITY 0x7fffffffUL +#endif +#include +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/sembuf.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/sembuf.h new file mode 100644 index 0000000..b524f68 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/sembuf.h @@ -0,0 +1,31 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _ASM_SEMBUF_H +#define _ASM_SEMBUF_H +struct semid64_ds { + struct ipc64_perm sem_perm; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __kernel_time_t sem_otime; + __kernel_time_t sem_ctime; + unsigned long sem_nsems; + unsigned long __unused1; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned long __unused2; +}; +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/setup.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/setup.h new file mode 100644 index 0000000..ab48354 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/setup.h @@ -0,0 +1,23 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _UAPI_MIPS_SETUP_H +#define _UAPI_MIPS_SETUP_H +#define COMMAND_LINE_SIZE 4096 +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/sgidefs.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/sgidefs.h new file mode 100644 index 0000000..d63f15e --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/sgidefs.h @@ -0,0 +1,38 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef __ASM_SGIDEFS_H +#define __ASM_SGIDEFS_H +#ifndef __linux__ +#error Use a Linux compiler or give up. +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif +#define _MIPS_ISA_MIPS1 1 +#define _MIPS_ISA_MIPS2 2 +#define _MIPS_ISA_MIPS3 3 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define _MIPS_ISA_MIPS4 4 +#define _MIPS_ISA_MIPS5 5 +#define _MIPS_ISA_MIPS32 6 +#define _MIPS_ISA_MIPS64 7 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define _MIPS_SIM_ABI32 1 +#define _MIPS_SIM_NABI32 2 +#define _MIPS_SIM_ABI64 3 +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/shmbuf.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/shmbuf.h new file mode 100644 index 0000000..3f7d0b1 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/shmbuf.h @@ -0,0 +1,50 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _ASM_SHMBUF_H +#define _ASM_SHMBUF_H +struct shmid64_ds { + struct ipc64_perm shm_perm; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + size_t shm_segsz; + __kernel_time_t shm_atime; + __kernel_time_t shm_dtime; + __kernel_time_t shm_ctime; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __kernel_pid_t shm_cpid; + __kernel_pid_t shm_lpid; + unsigned long shm_nattch; + unsigned long __unused1; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned long __unused2; +}; +struct shminfo64 { + unsigned long shmmax; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned long shmmin; + unsigned long shmmni; + unsigned long shmseg; + unsigned long shmall; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned long __unused1; + unsigned long __unused2; + unsigned long __unused3; + unsigned long __unused4; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +}; +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/sigcontext.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/sigcontext.h new file mode 100644 index 0000000..8a877db --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/sigcontext.h @@ -0,0 +1,76 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _UAPI_ASM_SIGCONTEXT_H +#define _UAPI_ASM_SIGCONTEXT_H +#include +#include +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#if _MIPS_SIM == _MIPS_SIM_ABI32 +struct sigcontext { + unsigned int sc_regmask; + unsigned int sc_status; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned long long sc_pc; + unsigned long long sc_regs[32]; + unsigned long long sc_fpregs[32]; + unsigned int sc_acx; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned int sc_fpc_csr; + unsigned int sc_fpc_eir; + unsigned int sc_used_math; + unsigned int sc_dsp; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned long long sc_mdhi; + unsigned long long sc_mdlo; + unsigned long sc_hi1; + unsigned long sc_lo1; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned long sc_hi2; + unsigned long sc_lo2; + unsigned long sc_hi3; + unsigned long sc_lo3; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +}; +#endif +#if _MIPS_SIM == _MIPS_SIM_ABI64 || _MIPS_SIM == _MIPS_SIM_NABI32 +#include +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +struct sigcontext { + __u64 sc_regs[32]; + __u64 sc_fpregs[32]; + __u64 sc_mdhi; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __u64 sc_hi1; + __u64 sc_hi2; + __u64 sc_hi3; + __u64 sc_mdlo; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __u64 sc_lo1; + __u64 sc_lo2; + __u64 sc_lo3; + __u64 sc_pc; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __u32 sc_fpc_csr; + __u32 sc_used_math; + __u32 sc_dsp; + __u32 sc_reserved; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +}; +#endif +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/siginfo.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/siginfo.h new file mode 100644 index 0000000..599c875 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/siginfo.h @@ -0,0 +1,114 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _UAPI_ASM_SIGINFO_H +#define _UAPI_ASM_SIGINFO_H +#define __ARCH_SIGEV_PREAMBLE_SIZE (sizeof(long) + 2*sizeof(int)) +#undef __ARCH_SI_TRAPNO +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define HAVE_ARCH_SIGINFO_T +#define HAVE_ARCH_COPY_SIGINFO +struct siginfo; +#if _MIPS_SZLONG == 32 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __ARCH_SI_PREAMBLE_SIZE (3 * sizeof(int)) +#elif _MIPS_SZLONG == 64 +#define __ARCH_SI_PREAMBLE_SIZE (4 * sizeof(int)) +#else +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#error _MIPS_SZLONG neither 32 nor 64 +#endif +#define __ARCH_SIGSYS +#include +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +typedef struct siginfo { + int si_signo; + int si_code; + int si_errno; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + int __pad0[SI_MAX_SIZE / sizeof(int) - SI_PAD_SIZE - 3]; + union { + int _pad[SI_PAD_SIZE]; + struct { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + pid_t _pid; + __ARCH_SI_UID_T _uid; + } _kill; + struct { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + timer_t _tid; + int _overrun; + char _pad[sizeof( __ARCH_SI_UID_T) - sizeof(int)]; + sigval_t _sigval; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + int _sys_private; + } _timer; + struct { + pid_t _pid; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __ARCH_SI_UID_T _uid; + sigval_t _sigval; + } _rt; + struct { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + pid_t _pid; + __ARCH_SI_UID_T _uid; + int _status; + clock_t _utime; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + clock_t _stime; + } _sigchld; + struct { + pid_t _pid; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + clock_t _utime; + int _status; + clock_t _stime; + } _irix_sigchld; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + struct { + void __user *_addr; +#ifdef __ARCH_SI_TRAPNO + int _trapno; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif + short _addr_lsb; + } _sigfault; + struct { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __ARCH_SI_BAND_T _band; + int _fd; + } _sigpoll; + struct { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + void __user *_call_addr; + int _syscall; + unsigned int _arch; + } _sigsys; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + } _sifields; +} siginfo_t; +#undef SI_ASYNCIO +#undef SI_TIMER +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#undef SI_MESGQ +#define SI_ASYNCIO -2 +#define SI_TIMER __SI_CODE(__SI_TIMER, -3) +#define SI_MESGQ __SI_CODE(__SI_MESGQ, -4) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/signal.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/signal.h new file mode 100644 index 0000000..b774a66 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/signal.h @@ -0,0 +1,108 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _UAPI_ASM_SIGNAL_H +#define _UAPI_ASM_SIGNAL_H +#include +#define _KERNEL__NSIG 128 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define _NSIG_BPW (sizeof(unsigned long) * 8) +#define _NSIG_WORDS (_KERNEL__NSIG / _NSIG_BPW) +typedef struct { + unsigned long sig[_NSIG_WORDS]; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +} sigset_t; +typedef unsigned long old_sigset_t; +#define SIGHUP 1 +#define SIGINT 2 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SIGQUIT 3 +#define SIGILL 4 +#define SIGTRAP 5 +#define SIGIOT 6 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SIGABRT SIGIOT +#define SIGEMT 7 +#define SIGFPE 8 +#define SIGKILL 9 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SIGBUS 10 +#define SIGSEGV 11 +#define SIGSYS 12 +#define SIGPIPE 13 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SIGALRM 14 +#define SIGTERM 15 +#define SIGUSR1 16 +#define SIGUSR2 17 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SIGCHLD 18 +#define SIGCLD SIGCHLD +#define SIGPWR 19 +#define SIGWINCH 20 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SIGURG 21 +#define SIGIO 22 +#define SIGPOLL SIGIO +#define SIGSTOP 23 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SIGTSTP 24 +#define SIGCONT 25 +#define SIGTTIN 26 +#define SIGTTOU 27 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SIGVTALRM 28 +#define SIGPROF 29 +#define SIGXCPU 30 +#define SIGXFSZ 31 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __SIGRTMIN 32 +#define __SIGRTMAX _KERNEL__NSIG +#define SA_ONSTACK 0x08000000 +#define SA_RESETHAND 0x80000000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SA_RESTART 0x10000000 +#define SA_SIGINFO 0x00000008 +#define SA_NODEFER 0x40000000 +#define SA_NOCLDWAIT 0x00010000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SA_NOCLDSTOP 0x00000001 +#define SA_NOMASK SA_NODEFER +#define SA_ONESHOT SA_RESETHAND +#define MINSIGSTKSZ 2048 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SIGSTKSZ 8192 +#define SIG_BLOCK 1 +#define SIG_UNBLOCK 2 +#define SIG_SETMASK 3 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#include +struct sigaction { + unsigned int sa_flags; + __sighandler_t sa_handler; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + sigset_t sa_mask; +}; +typedef struct sigaltstack { + void __user *ss_sp; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + size_t ss_size; + int ss_flags; +} stack_t; +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/socket.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/socket.h new file mode 100644 index 0000000..38e4e63 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/socket.h @@ -0,0 +1,91 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _UAPI_ASM_SOCKET_H +#define _UAPI_ASM_SOCKET_H +#include +#define SOL_SOCKET 0xffff +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SO_DEBUG 0x0001 +#define SO_REUSEADDR 0x0004 +#define SO_KEEPALIVE 0x0008 +#define SO_DONTROUTE 0x0010 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SO_BROADCAST 0x0020 +#define SO_LINGER 0x0080 +#define SO_OOBINLINE 0x0100 +#define SO_REUSEPORT 0x0200 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SO_TYPE 0x1008 +#define SO_STYLE SO_TYPE +#define SO_ERROR 0x1007 +#define SO_SNDBUF 0x1001 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SO_RCVBUF 0x1002 +#define SO_SNDLOWAT 0x1003 +#define SO_RCVLOWAT 0x1004 +#define SO_SNDTIMEO 0x1005 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SO_RCVTIMEO 0x1006 +#define SO_ACCEPTCONN 0x1009 +#define SO_PROTOCOL 0x1028 +#define SO_DOMAIN 0x1029 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SO_NO_CHECK 11 +#define SO_PRIORITY 12 +#define SO_BSDCOMPAT 14 +#define SO_PASSCRED 17 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SO_PEERCRED 18 +#define SO_SECURITY_AUTHENTICATION 22 +#define SO_SECURITY_ENCRYPTION_TRANSPORT 23 +#define SO_SECURITY_ENCRYPTION_NETWORK 24 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SO_BINDTODEVICE 25 +#define SO_ATTACH_FILTER 26 +#define SO_DETACH_FILTER 27 +#define SO_GET_FILTER SO_ATTACH_FILTER +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SO_PEERNAME 28 +#define SO_TIMESTAMP 29 +#define SCM_TIMESTAMP SO_TIMESTAMP +#define SO_PEERSEC 30 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SO_SNDBUFFORCE 31 +#define SO_RCVBUFFORCE 33 +#define SO_PASSSEC 34 +#define SO_TIMESTAMPNS 35 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SCM_TIMESTAMPNS SO_TIMESTAMPNS +#define SO_MARK 36 +#define SO_TIMESTAMPING 37 +#define SCM_TIMESTAMPING SO_TIMESTAMPING +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SO_RXQ_OVFL 40 +#define SO_WIFI_STATUS 41 +#define SCM_WIFI_STATUS SO_WIFI_STATUS +#define SO_PEEK_OFF 42 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SO_NOFCS 43 +#define SO_LOCK_FILTER 44 +#define SO_SELECT_ERR_QUEUE 45 +#define SO_BUSY_POLL 46 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SO_MAX_PACING_RATE 47 +#define SO_BPF_EXTENSIONS 48 +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/sockios.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/sockios.h new file mode 100644 index 0000000..c3b3334 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/sockios.h @@ -0,0 +1,31 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _ASM_SOCKIOS_H +#define _ASM_SOCKIOS_H +#include +#define FIOGETOWN _IOR('f', 123, int) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define FIOSETOWN _IOW('f', 124, int) +#define SIOCATMARK _IOR('s', 7, int) +#define SIOCSPGRP _IOW('s', 8, pid_t) +#define SIOCGPGRP _IOR('s', 9, pid_t) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SIOCGSTAMP 0x8906 +#define SIOCGSTAMPNS 0x8907 +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/stat.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/stat.h new file mode 100644 index 0000000..a71eecb --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/stat.h @@ -0,0 +1,110 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _ASM_STAT_H +#define _ASM_STAT_H +#include +#include +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#if _MIPS_SIM == _MIPS_SIM_ABI32 || _MIPS_SIM == _MIPS_SIM_NABI32 +struct stat { + unsigned st_dev; + long st_pad1[3]; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + ino_t st_ino; + mode_t st_mode; + __u32 st_nlink; + uid_t st_uid; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + gid_t st_gid; + unsigned st_rdev; + long st_pad2[2]; + __kernel_off_t st_size; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + long st_pad3; + time_t st_atime; + long st_atime_nsec; + time_t st_mtime; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + long st_mtime_nsec; + time_t st_ctime; + long st_ctime_nsec; + long st_blksize; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + long st_blocks; + long st_pad4[14]; +}; +struct stat64 { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned long st_dev; + unsigned long st_pad0[3]; + unsigned long long st_ino; + mode_t st_mode; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __u32 st_nlink; + uid_t st_uid; + gid_t st_gid; + unsigned long st_rdev; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned long st_pad1[3]; + long long st_size; + time_t st_atime; + unsigned long st_atime_nsec; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + time_t st_mtime; + unsigned long st_mtime_nsec; + time_t st_ctime; + unsigned long st_ctime_nsec; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned long st_blksize; + unsigned long st_pad2; + long long st_blocks; +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif +#if _MIPS_SIM == _MIPS_SIM_ABI64 +struct stat { + unsigned int st_dev; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned int st_pad0[3]; + unsigned long st_ino; + mode_t st_mode; + __u32 st_nlink; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + uid_t st_uid; + gid_t st_gid; + unsigned int st_rdev; + unsigned int st_pad1[3]; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __kernel_off_t st_size; + unsigned int st_atime; + unsigned int st_atime_nsec; + unsigned int st_mtime; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned int st_mtime_nsec; + unsigned int st_ctime; + unsigned int st_ctime_nsec; + unsigned int st_blksize; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned int st_pad2; + unsigned long st_blocks; +}; +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define STAT_HAVE_NSEC 1 +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/statfs.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/statfs.h new file mode 100644 index 0000000..390b751 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/statfs.h @@ -0,0 +1,103 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _ASM_STATFS_H +#define _ASM_STATFS_H +#include +#include +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +struct statfs { + long f_type; +#define f_fstyp f_type + long f_bsize; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + long f_frsize; + long f_blocks; + long f_bfree; + long f_files; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + long f_ffree; + long f_bavail; + __kernel_fsid_t f_fsid; + long f_namelen; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + long f_flags; + long f_spare[5]; +}; +#if _MIPS_SIM == _MIPS_SIM_ABI32 || _MIPS_SIM == _MIPS_SIM_NABI32 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +struct statfs64 { + __u32 f_type; + __u32 f_bsize; + __u32 f_frsize; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __u32 __pad; + __u64 f_blocks; + __u64 f_bfree; + __u64 f_files; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __u64 f_ffree; + __u64 f_bavail; + __kernel_fsid_t f_fsid; + __u32 f_namelen; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __u32 f_flags; + __u32 f_spare[5]; +}; +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#if _MIPS_SIM == _MIPS_SIM_ABI64 +struct statfs64 { + long f_type; + long f_bsize; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + long f_frsize; + long f_blocks; + long f_bfree; + long f_files; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + long f_ffree; + long f_bavail; + __kernel_fsid_t f_fsid; + long f_namelen; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + long f_flags; + long f_spare[5]; +}; +struct compat_statfs64 { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __u32 f_type; + __u32 f_bsize; + __u32 f_frsize; + __u32 __pad; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __u64 f_blocks; + __u64 f_bfree; + __u64 f_files; + __u64 f_ffree; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __u64 f_bavail; + __kernel_fsid_t f_fsid; + __u32 f_namelen; + __u32 f_flags; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + __u32 f_spare[5]; +}; +#endif +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/swab.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/swab.h new file mode 100644 index 0000000..41660d0 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/swab.h @@ -0,0 +1,34 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _ASM_SWAB_H +#define _ASM_SWAB_H +#include +#include +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __SWAB_64_THRU_32__ +#if defined(__mips_isa_rev) && __mips_isa_rev >= 2 +#define __arch_swab16 __arch_swab16 +#define __arch_swab32 __arch_swab32 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#ifdef __mips64 +#define __arch_swab64 __arch_swab64 +#endif +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/sysmips.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/sysmips.h new file mode 100644 index 0000000..96b18b8 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/sysmips.h @@ -0,0 +1,28 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _ASM_SYSMIPS_H +#define _ASM_SYSMIPS_H +#define SETNAME 1 +#define FLUSH_CACHE 3 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define MIPS_FIXADE 7 +#define MIPS_RDNVRAM 10 +#define MIPS_ATOMIC_SET 2001 +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/termbits.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/termbits.h new file mode 100644 index 0000000..56cab21 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/termbits.h @@ -0,0 +1,241 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _ASM_TERMBITS_H +#define _ASM_TERMBITS_H +#include +typedef unsigned char cc_t; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +typedef unsigned int speed_t; +typedef unsigned int tcflag_t; +#define NCCS 23 +struct termios { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + tcflag_t c_iflag; + tcflag_t c_oflag; + tcflag_t c_cflag; + tcflag_t c_lflag; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + cc_t c_line; + cc_t c_cc[NCCS]; +}; +struct termios2 { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + tcflag_t c_iflag; + tcflag_t c_oflag; + tcflag_t c_cflag; + tcflag_t c_lflag; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + cc_t c_line; + cc_t c_cc[NCCS]; + speed_t c_ispeed; + speed_t c_ospeed; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +}; +struct ktermios { + tcflag_t c_iflag; + tcflag_t c_oflag; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + tcflag_t c_cflag; + tcflag_t c_lflag; + cc_t c_line; + cc_t c_cc[NCCS]; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + speed_t c_ispeed; + speed_t c_ospeed; +}; +#define VINTR 0 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define VQUIT 1 +#define VERASE 2 +#define VKILL 3 +#define VMIN 4 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define VTIME 5 +#define VEOL2 6 +#define VSWTC 7 +#define VSWTCH VSWTC +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define VSTART 8 +#define VSTOP 9 +#define VSUSP 10 +#define VREPRINT 12 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define VDISCARD 13 +#define VWERASE 14 +#define VLNEXT 15 +#define VEOF 16 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define VEOL 17 +#define IGNBRK 0000001 +#define BRKINT 0000002 +#define IGNPAR 0000004 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define PARMRK 0000010 +#define INPCK 0000020 +#define ISTRIP 0000040 +#define INLCR 0000100 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define IGNCR 0000200 +#define ICRNL 0000400 +#define IUCLC 0001000 +#define IXON 0002000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define IXANY 0004000 +#define IXOFF 0010000 +#define IMAXBEL 0020000 +#define IUTF8 0040000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define OPOST 0000001 +#define OLCUC 0000002 +#define ONLCR 0000004 +#define OCRNL 0000010 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ONOCR 0000020 +#define ONLRET 0000040 +#define OFILL 0000100 +#define OFDEL 0000200 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define NLDLY 0000400 +#define NL0 0000000 +#define NL1 0000400 +#define CRDLY 0003000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define CR0 0000000 +#define CR1 0001000 +#define CR2 0002000 +#define CR3 0003000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TABDLY 0014000 +#define TAB0 0000000 +#define TAB1 0004000 +#define TAB2 0010000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TAB3 0014000 +#define XTABS 0014000 +#define BSDLY 0020000 +#define BS0 0000000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define BS1 0020000 +#define VTDLY 0040000 +#define VT0 0000000 +#define VT1 0040000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define FFDLY 0100000 +#define FF0 0000000 +#define FF1 0100000 +#define CBAUD 0010017 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define B0 0000000 +#define B50 0000001 +#define B75 0000002 +#define B110 0000003 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define B134 0000004 +#define B150 0000005 +#define B200 0000006 +#define B300 0000007 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define B600 0000010 +#define B1200 0000011 +#define B1800 0000012 +#define B2400 0000013 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define B4800 0000014 +#define B9600 0000015 +#define B19200 0000016 +#define B38400 0000017 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define EXTA B19200 +#define EXTB B38400 +#define CSIZE 0000060 +#define CS5 0000000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define CS6 0000020 +#define CS7 0000040 +#define CS8 0000060 +#define CSTOPB 0000100 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define CREAD 0000200 +#define PARENB 0000400 +#define PARODD 0001000 +#define HUPCL 0002000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define CLOCAL 0004000 +#define CBAUDEX 0010000 +#define BOTHER 0010000 +#define B57600 0010001 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define B115200 0010002 +#define B230400 0010003 +#define B460800 0010004 +#define B500000 0010005 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define B576000 0010006 +#define B921600 0010007 +#define B1000000 0010010 +#define B1152000 0010011 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define B1500000 0010012 +#define B2000000 0010013 +#define B2500000 0010014 +#define B3000000 0010015 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define B3500000 0010016 +#define B4000000 0010017 +#define CIBAUD 002003600000 +#define CMSPAR 010000000000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define CRTSCTS 020000000000 +#define IBSHIFT 16 +#define ISIG 0000001 +#define ICANON 0000002 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define XCASE 0000004 +#define ECHO 0000010 +#define ECHOE 0000020 +#define ECHOK 0000040 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ECHONL 0000100 +#define NOFLSH 0000200 +#define IEXTEN 0000400 +#define ECHOCTL 0001000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ECHOPRT 0002000 +#define ECHOKE 0004000 +#define FLUSHO 0020000 +#define PENDIN 0040000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TOSTOP 0100000 +#define ITOSTOP TOSTOP +#define EXTPROC 0200000 +#define TIOCSER_TEMT 0x01 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TCOOFF 0 +#define TCOON 1 +#define TCIOFF 2 +#define TCION 3 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TCIFLUSH 0 +#define TCOFLUSH 1 +#define TCIOFLUSH 2 +#define TCSANOW TCSETS +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TCSADRAIN TCSETSW +#define TCSAFLUSH TCSETSF +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/termios.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/termios.h new file mode 100644 index 0000000..16d822a --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/termios.h @@ -0,0 +1,90 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _UAPI_ASM_TERMIOS_H +#define _UAPI_ASM_TERMIOS_H +#include +#include +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#include +struct sgttyb { + char sg_ispeed; + char sg_ospeed; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + char sg_erase; + char sg_kill; + int sg_flags; +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +struct tchars { + char t_intrc; + char t_quitc; + char t_startc; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + char t_stopc; + char t_eofc; + char t_brkc; +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +struct ltchars { + char t_suspc; + char t_dsuspc; + char t_rprntc; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + char t_flushc; + char t_werasc; + char t_lnextc; +}; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +struct winsize { + unsigned short ws_row; + unsigned short ws_col; + unsigned short ws_xpixel; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned short ws_ypixel; +}; +#define NCC 8 +struct termio { +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned short c_iflag; + unsigned short c_oflag; + unsigned short c_cflag; + unsigned short c_lflag; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + char c_line; + unsigned char c_cc[NCCS]; +}; +#define TIOCM_LE 0x001 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TIOCM_DTR 0x002 +#define TIOCM_RTS 0x004 +#define TIOCM_ST 0x010 +#define TIOCM_SR 0x020 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TIOCM_CTS 0x040 +#define TIOCM_CAR 0x100 +#define TIOCM_CD TIOCM_CAR +#define TIOCM_RNG 0x200 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TIOCM_RI TIOCM_RNG +#define TIOCM_DSR 0x400 +#define TIOCM_OUT1 0x2000 +#define TIOCM_OUT2 0x4000 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define TIOCM_LOOP 0x8000 +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/types.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/types.h new file mode 100644 index 0000000..45fea6c --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/types.h @@ -0,0 +1,28 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _UAPI_ASM_TYPES_H +#define _UAPI_ASM_TYPES_H +#if _MIPS_SZLONG == 64 +#include +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#else +#include +#endif +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/ucontext.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/ucontext.h new file mode 100644 index 0000000..aa4d67d --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/ucontext.h @@ -0,0 +1,19 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#include diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/unistd.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/unistd.h new file mode 100644 index 0000000..37c3da1 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-mips/asm/unistd.h @@ -0,0 +1,1263 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _UAPI_ASM_UNISTD_H +#define _UAPI_ASM_UNISTD_H +#include +#if _MIPS_SIM == _MIPS_SIM_ABI32 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_Linux 4000 +#define __NR_syscall (__NR_Linux + 0) +#define __NR_exit (__NR_Linux + 1) +#define __NR_fork (__NR_Linux + 2) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_read (__NR_Linux + 3) +#define __NR_write (__NR_Linux + 4) +#define __NR_open (__NR_Linux + 5) +#define __NR_close (__NR_Linux + 6) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_waitpid (__NR_Linux + 7) +#define __NR_creat (__NR_Linux + 8) +#define __NR_link (__NR_Linux + 9) +#define __NR_unlink (__NR_Linux + 10) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_execve (__NR_Linux + 11) +#define __NR_chdir (__NR_Linux + 12) +#define __NR_time (__NR_Linux + 13) +#define __NR_mknod (__NR_Linux + 14) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_chmod (__NR_Linux + 15) +#define __NR_lchown (__NR_Linux + 16) +#define __NR_break (__NR_Linux + 17) +#define __NR_unused18 (__NR_Linux + 18) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_lseek (__NR_Linux + 19) +#define __NR_getpid (__NR_Linux + 20) +#define __NR_mount (__NR_Linux + 21) +#define __NR_umount (__NR_Linux + 22) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_setuid (__NR_Linux + 23) +#define __NR_getuid (__NR_Linux + 24) +#define __NR_stime (__NR_Linux + 25) +#define __NR_ptrace (__NR_Linux + 26) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_alarm (__NR_Linux + 27) +#define __NR_unused28 (__NR_Linux + 28) +#define __NR_pause (__NR_Linux + 29) +#define __NR_utime (__NR_Linux + 30) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_stty (__NR_Linux + 31) +#define __NR_gtty (__NR_Linux + 32) +#define __NR_access (__NR_Linux + 33) +#define __NR_nice (__NR_Linux + 34) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_ftime (__NR_Linux + 35) +#define __NR_sync (__NR_Linux + 36) +#define __NR_kill (__NR_Linux + 37) +#define __NR_rename (__NR_Linux + 38) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_mkdir (__NR_Linux + 39) +#define __NR_rmdir (__NR_Linux + 40) +#define __NR_dup (__NR_Linux + 41) +#define __NR_pipe (__NR_Linux + 42) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_times (__NR_Linux + 43) +#define __NR_prof (__NR_Linux + 44) +#define __NR_brk (__NR_Linux + 45) +#define __NR_setgid (__NR_Linux + 46) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_getgid (__NR_Linux + 47) +#define __NR_signal (__NR_Linux + 48) +#define __NR_geteuid (__NR_Linux + 49) +#define __NR_getegid (__NR_Linux + 50) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_acct (__NR_Linux + 51) +#define __NR_umount2 (__NR_Linux + 52) +#define __NR_lock (__NR_Linux + 53) +#define __NR_ioctl (__NR_Linux + 54) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_fcntl (__NR_Linux + 55) +#define __NR_mpx (__NR_Linux + 56) +#define __NR_setpgid (__NR_Linux + 57) +#define __NR_ulimit (__NR_Linux + 58) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_unused59 (__NR_Linux + 59) +#define __NR_umask (__NR_Linux + 60) +#define __NR_chroot (__NR_Linux + 61) +#define __NR_ustat (__NR_Linux + 62) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_dup2 (__NR_Linux + 63) +#define __NR_getppid (__NR_Linux + 64) +#define __NR_getpgrp (__NR_Linux + 65) +#define __NR_setsid (__NR_Linux + 66) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_sigaction (__NR_Linux + 67) +#define __NR_sgetmask (__NR_Linux + 68) +#define __NR_ssetmask (__NR_Linux + 69) +#define __NR_setreuid (__NR_Linux + 70) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_setregid (__NR_Linux + 71) +#define __NR_sigsuspend (__NR_Linux + 72) +#define __NR_sigpending (__NR_Linux + 73) +#define __NR_sethostname (__NR_Linux + 74) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_setrlimit (__NR_Linux + 75) +#define __NR_getrlimit (__NR_Linux + 76) +#define __NR_getrusage (__NR_Linux + 77) +#define __NR_gettimeofday (__NR_Linux + 78) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_settimeofday (__NR_Linux + 79) +#define __NR_getgroups (__NR_Linux + 80) +#define __NR_setgroups (__NR_Linux + 81) +#define __NR_reserved82 (__NR_Linux + 82) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_symlink (__NR_Linux + 83) +#define __NR_unused84 (__NR_Linux + 84) +#define __NR_readlink (__NR_Linux + 85) +#define __NR_uselib (__NR_Linux + 86) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_swapon (__NR_Linux + 87) +#define __NR_reboot (__NR_Linux + 88) +#define __NR_readdir (__NR_Linux + 89) +#define __NR_mmap (__NR_Linux + 90) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_munmap (__NR_Linux + 91) +#define __NR_truncate (__NR_Linux + 92) +#define __NR_ftruncate (__NR_Linux + 93) +#define __NR_fchmod (__NR_Linux + 94) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_fchown (__NR_Linux + 95) +#define __NR_getpriority (__NR_Linux + 96) +#define __NR_setpriority (__NR_Linux + 97) +#define __NR_profil (__NR_Linux + 98) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_statfs (__NR_Linux + 99) +#define __NR_fstatfs (__NR_Linux + 100) +#define __NR_ioperm (__NR_Linux + 101) +#define __NR_socketcall (__NR_Linux + 102) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_syslog (__NR_Linux + 103) +#define __NR_setitimer (__NR_Linux + 104) +#define __NR_getitimer (__NR_Linux + 105) +#define __NR_stat (__NR_Linux + 106) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_lstat (__NR_Linux + 107) +#define __NR_fstat (__NR_Linux + 108) +#define __NR_unused109 (__NR_Linux + 109) +#define __NR_iopl (__NR_Linux + 110) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_vhangup (__NR_Linux + 111) +#define __NR_idle (__NR_Linux + 112) +#define __NR_vm86 (__NR_Linux + 113) +#define __NR_wait4 (__NR_Linux + 114) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_swapoff (__NR_Linux + 115) +#define __NR_sysinfo (__NR_Linux + 116) +#define __NR_ipc (__NR_Linux + 117) +#define __NR_fsync (__NR_Linux + 118) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_sigreturn (__NR_Linux + 119) +#define __NR_clone (__NR_Linux + 120) +#define __NR_setdomainname (__NR_Linux + 121) +#define __NR_uname (__NR_Linux + 122) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_modify_ldt (__NR_Linux + 123) +#define __NR_adjtimex (__NR_Linux + 124) +#define __NR_mprotect (__NR_Linux + 125) +#define __NR_sigprocmask (__NR_Linux + 126) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_create_module (__NR_Linux + 127) +#define __NR_init_module (__NR_Linux + 128) +#define __NR_delete_module (__NR_Linux + 129) +#define __NR_get_kernel_syms (__NR_Linux + 130) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_quotactl (__NR_Linux + 131) +#define __NR_getpgid (__NR_Linux + 132) +#define __NR_fchdir (__NR_Linux + 133) +#define __NR_bdflush (__NR_Linux + 134) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_sysfs (__NR_Linux + 135) +#define __NR_personality (__NR_Linux + 136) +#define __NR_afs_syscall (__NR_Linux + 137) +#define __NR_setfsuid (__NR_Linux + 138) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_setfsgid (__NR_Linux + 139) +#define __NR__llseek (__NR_Linux + 140) +#define __NR_getdents (__NR_Linux + 141) +#define __NR__newselect (__NR_Linux + 142) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_flock (__NR_Linux + 143) +#define __NR_msync (__NR_Linux + 144) +#define __NR_readv (__NR_Linux + 145) +#define __NR_writev (__NR_Linux + 146) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_cacheflush (__NR_Linux + 147) +#define __NR_cachectl (__NR_Linux + 148) +#define __NR_sysmips (__NR_Linux + 149) +#define __NR_unused150 (__NR_Linux + 150) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_getsid (__NR_Linux + 151) +#define __NR_fdatasync (__NR_Linux + 152) +#define __NR__sysctl (__NR_Linux + 153) +#define __NR_mlock (__NR_Linux + 154) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_munlock (__NR_Linux + 155) +#define __NR_mlockall (__NR_Linux + 156) +#define __NR_munlockall (__NR_Linux + 157) +#define __NR_sched_setparam (__NR_Linux + 158) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_sched_getparam (__NR_Linux + 159) +#define __NR_sched_setscheduler (__NR_Linux + 160) +#define __NR_sched_getscheduler (__NR_Linux + 161) +#define __NR_sched_yield (__NR_Linux + 162) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_sched_get_priority_max (__NR_Linux + 163) +#define __NR_sched_get_priority_min (__NR_Linux + 164) +#define __NR_sched_rr_get_interval (__NR_Linux + 165) +#define __NR_nanosleep (__NR_Linux + 166) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_mremap (__NR_Linux + 167) +#define __NR_accept (__NR_Linux + 168) +#define __NR_bind (__NR_Linux + 169) +#define __NR_connect (__NR_Linux + 170) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_getpeername (__NR_Linux + 171) +#define __NR_getsockname (__NR_Linux + 172) +#define __NR_getsockopt (__NR_Linux + 173) +#define __NR_listen (__NR_Linux + 174) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_recv (__NR_Linux + 175) +#define __NR_recvfrom (__NR_Linux + 176) +#define __NR_recvmsg (__NR_Linux + 177) +#define __NR_send (__NR_Linux + 178) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_sendmsg (__NR_Linux + 179) +#define __NR_sendto (__NR_Linux + 180) +#define __NR_setsockopt (__NR_Linux + 181) +#define __NR_shutdown (__NR_Linux + 182) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_socket (__NR_Linux + 183) +#define __NR_socketpair (__NR_Linux + 184) +#define __NR_setresuid (__NR_Linux + 185) +#define __NR_getresuid (__NR_Linux + 186) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_query_module (__NR_Linux + 187) +#define __NR_poll (__NR_Linux + 188) +#define __NR_nfsservctl (__NR_Linux + 189) +#define __NR_setresgid (__NR_Linux + 190) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_getresgid (__NR_Linux + 191) +#define __NR_prctl (__NR_Linux + 192) +#define __NR_rt_sigreturn (__NR_Linux + 193) +#define __NR_rt_sigaction (__NR_Linux + 194) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_rt_sigprocmask (__NR_Linux + 195) +#define __NR_rt_sigpending (__NR_Linux + 196) +#define __NR_rt_sigtimedwait (__NR_Linux + 197) +#define __NR_rt_sigqueueinfo (__NR_Linux + 198) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_rt_sigsuspend (__NR_Linux + 199) +#define __NR_pread64 (__NR_Linux + 200) +#define __NR_pwrite64 (__NR_Linux + 201) +#define __NR_chown (__NR_Linux + 202) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_getcwd (__NR_Linux + 203) +#define __NR_capget (__NR_Linux + 204) +#define __NR_capset (__NR_Linux + 205) +#define __NR_sigaltstack (__NR_Linux + 206) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_sendfile (__NR_Linux + 207) +#define __NR_getpmsg (__NR_Linux + 208) +#define __NR_putpmsg (__NR_Linux + 209) +#define __NR_mmap2 (__NR_Linux + 210) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_truncate64 (__NR_Linux + 211) +#define __NR_ftruncate64 (__NR_Linux + 212) +#define __NR_stat64 (__NR_Linux + 213) +#define __NR_lstat64 (__NR_Linux + 214) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_fstat64 (__NR_Linux + 215) +#define __NR_pivot_root (__NR_Linux + 216) +#define __NR_mincore (__NR_Linux + 217) +#define __NR_madvise (__NR_Linux + 218) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_getdents64 (__NR_Linux + 219) +#define __NR_fcntl64 (__NR_Linux + 220) +#define __NR_reserved221 (__NR_Linux + 221) +#define __NR_gettid (__NR_Linux + 222) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_readahead (__NR_Linux + 223) +#define __NR_setxattr (__NR_Linux + 224) +#define __NR_lsetxattr (__NR_Linux + 225) +#define __NR_fsetxattr (__NR_Linux + 226) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_getxattr (__NR_Linux + 227) +#define __NR_lgetxattr (__NR_Linux + 228) +#define __NR_fgetxattr (__NR_Linux + 229) +#define __NR_listxattr (__NR_Linux + 230) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_llistxattr (__NR_Linux + 231) +#define __NR_flistxattr (__NR_Linux + 232) +#define __NR_removexattr (__NR_Linux + 233) +#define __NR_lremovexattr (__NR_Linux + 234) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_fremovexattr (__NR_Linux + 235) +#define __NR_tkill (__NR_Linux + 236) +#define __NR_sendfile64 (__NR_Linux + 237) +#define __NR_futex (__NR_Linux + 238) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_sched_setaffinity (__NR_Linux + 239) +#define __NR_sched_getaffinity (__NR_Linux + 240) +#define __NR_io_setup (__NR_Linux + 241) +#define __NR_io_destroy (__NR_Linux + 242) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_io_getevents (__NR_Linux + 243) +#define __NR_io_submit (__NR_Linux + 244) +#define __NR_io_cancel (__NR_Linux + 245) +#define __NR_exit_group (__NR_Linux + 246) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_lookup_dcookie (__NR_Linux + 247) +#define __NR_epoll_create (__NR_Linux + 248) +#define __NR_epoll_ctl (__NR_Linux + 249) +#define __NR_epoll_wait (__NR_Linux + 250) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_remap_file_pages (__NR_Linux + 251) +#define __NR_set_tid_address (__NR_Linux + 252) +#define __NR_restart_syscall (__NR_Linux + 253) +#define __NR_fadvise64 (__NR_Linux + 254) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_statfs64 (__NR_Linux + 255) +#define __NR_fstatfs64 (__NR_Linux + 256) +#define __NR_timer_create (__NR_Linux + 257) +#define __NR_timer_settime (__NR_Linux + 258) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_timer_gettime (__NR_Linux + 259) +#define __NR_timer_getoverrun (__NR_Linux + 260) +#define __NR_timer_delete (__NR_Linux + 261) +#define __NR_clock_settime (__NR_Linux + 262) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_clock_gettime (__NR_Linux + 263) +#define __NR_clock_getres (__NR_Linux + 264) +#define __NR_clock_nanosleep (__NR_Linux + 265) +#define __NR_tgkill (__NR_Linux + 266) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_utimes (__NR_Linux + 267) +#define __NR_mbind (__NR_Linux + 268) +#define __NR_get_mempolicy (__NR_Linux + 269) +#define __NR_set_mempolicy (__NR_Linux + 270) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_mq_open (__NR_Linux + 271) +#define __NR_mq_unlink (__NR_Linux + 272) +#define __NR_mq_timedsend (__NR_Linux + 273) +#define __NR_mq_timedreceive (__NR_Linux + 274) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_mq_notify (__NR_Linux + 275) +#define __NR_mq_getsetattr (__NR_Linux + 276) +#define __NR_vserver (__NR_Linux + 277) +#define __NR_waitid (__NR_Linux + 278) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_add_key (__NR_Linux + 280) +#define __NR_request_key (__NR_Linux + 281) +#define __NR_keyctl (__NR_Linux + 282) +#define __NR_set_thread_area (__NR_Linux + 283) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_inotify_init (__NR_Linux + 284) +#define __NR_inotify_add_watch (__NR_Linux + 285) +#define __NR_inotify_rm_watch (__NR_Linux + 286) +#define __NR_migrate_pages (__NR_Linux + 287) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_openat (__NR_Linux + 288) +#define __NR_mkdirat (__NR_Linux + 289) +#define __NR_mknodat (__NR_Linux + 290) +#define __NR_fchownat (__NR_Linux + 291) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_futimesat (__NR_Linux + 292) +#define __NR_fstatat64 (__NR_Linux + 293) +#define __NR_unlinkat (__NR_Linux + 294) +#define __NR_renameat (__NR_Linux + 295) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_linkat (__NR_Linux + 296) +#define __NR_symlinkat (__NR_Linux + 297) +#define __NR_readlinkat (__NR_Linux + 298) +#define __NR_fchmodat (__NR_Linux + 299) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_faccessat (__NR_Linux + 300) +#define __NR_pselect6 (__NR_Linux + 301) +#define __NR_ppoll (__NR_Linux + 302) +#define __NR_unshare (__NR_Linux + 303) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_splice (__NR_Linux + 304) +#define __NR_sync_file_range (__NR_Linux + 305) +#define __NR_tee (__NR_Linux + 306) +#define __NR_vmsplice (__NR_Linux + 307) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_move_pages (__NR_Linux + 308) +#define __NR_set_robust_list (__NR_Linux + 309) +#define __NR_get_robust_list (__NR_Linux + 310) +#define __NR_kexec_load (__NR_Linux + 311) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_getcpu (__NR_Linux + 312) +#define __NR_epoll_pwait (__NR_Linux + 313) +#define __NR_ioprio_set (__NR_Linux + 314) +#define __NR_ioprio_get (__NR_Linux + 315) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_utimensat (__NR_Linux + 316) +#define __NR_signalfd (__NR_Linux + 317) +#define __NR_timerfd (__NR_Linux + 318) +#define __NR_eventfd (__NR_Linux + 319) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_fallocate (__NR_Linux + 320) +#define __NR_timerfd_create (__NR_Linux + 321) +#define __NR_timerfd_gettime (__NR_Linux + 322) +#define __NR_timerfd_settime (__NR_Linux + 323) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_signalfd4 (__NR_Linux + 324) +#define __NR_eventfd2 (__NR_Linux + 325) +#define __NR_epoll_create1 (__NR_Linux + 326) +#define __NR_dup3 (__NR_Linux + 327) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_pipe2 (__NR_Linux + 328) +#define __NR_inotify_init1 (__NR_Linux + 329) +#define __NR_preadv (__NR_Linux + 330) +#define __NR_pwritev (__NR_Linux + 331) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_rt_tgsigqueueinfo (__NR_Linux + 332) +#define __NR_perf_event_open (__NR_Linux + 333) +#define __NR_accept4 (__NR_Linux + 334) +#define __NR_recvmmsg (__NR_Linux + 335) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_fanotify_init (__NR_Linux + 336) +#define __NR_fanotify_mark (__NR_Linux + 337) +#define __NR_prlimit64 (__NR_Linux + 338) +#define __NR_name_to_handle_at (__NR_Linux + 339) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_open_by_handle_at (__NR_Linux + 340) +#define __NR_clock_adjtime (__NR_Linux + 341) +#define __NR_syncfs (__NR_Linux + 342) +#define __NR_sendmmsg (__NR_Linux + 343) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_setns (__NR_Linux + 344) +#define __NR_process_vm_readv (__NR_Linux + 345) +#define __NR_process_vm_writev (__NR_Linux + 346) +#define __NR_kcmp (__NR_Linux + 347) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_finit_module (__NR_Linux + 348) +#define __NR_sched_setattr (__NR_Linux + 349) +#define __NR_sched_getattr (__NR_Linux + 350) +#define __NR_Linux_syscalls 350 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif +#define __NR_O32_Linux 4000 +#define __NR_O32_Linux_syscalls 350 +#if _MIPS_SIM == _MIPS_SIM_ABI64 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_Linux 5000 +#define __NR_read (__NR_Linux + 0) +#define __NR_write (__NR_Linux + 1) +#define __NR_open (__NR_Linux + 2) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_close (__NR_Linux + 3) +#define __NR_stat (__NR_Linux + 4) +#define __NR_fstat (__NR_Linux + 5) +#define __NR_lstat (__NR_Linux + 6) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_poll (__NR_Linux + 7) +#define __NR_lseek (__NR_Linux + 8) +#define __NR_mmap (__NR_Linux + 9) +#define __NR_mprotect (__NR_Linux + 10) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_munmap (__NR_Linux + 11) +#define __NR_brk (__NR_Linux + 12) +#define __NR_rt_sigaction (__NR_Linux + 13) +#define __NR_rt_sigprocmask (__NR_Linux + 14) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_ioctl (__NR_Linux + 15) +#define __NR_pread64 (__NR_Linux + 16) +#define __NR_pwrite64 (__NR_Linux + 17) +#define __NR_readv (__NR_Linux + 18) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_writev (__NR_Linux + 19) +#define __NR_access (__NR_Linux + 20) +#define __NR_pipe (__NR_Linux + 21) +#define __NR__newselect (__NR_Linux + 22) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_sched_yield (__NR_Linux + 23) +#define __NR_mremap (__NR_Linux + 24) +#define __NR_msync (__NR_Linux + 25) +#define __NR_mincore (__NR_Linux + 26) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_madvise (__NR_Linux + 27) +#define __NR_shmget (__NR_Linux + 28) +#define __NR_shmat (__NR_Linux + 29) +#define __NR_shmctl (__NR_Linux + 30) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_dup (__NR_Linux + 31) +#define __NR_dup2 (__NR_Linux + 32) +#define __NR_pause (__NR_Linux + 33) +#define __NR_nanosleep (__NR_Linux + 34) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_getitimer (__NR_Linux + 35) +#define __NR_setitimer (__NR_Linux + 36) +#define __NR_alarm (__NR_Linux + 37) +#define __NR_getpid (__NR_Linux + 38) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_sendfile (__NR_Linux + 39) +#define __NR_socket (__NR_Linux + 40) +#define __NR_connect (__NR_Linux + 41) +#define __NR_accept (__NR_Linux + 42) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_sendto (__NR_Linux + 43) +#define __NR_recvfrom (__NR_Linux + 44) +#define __NR_sendmsg (__NR_Linux + 45) +#define __NR_recvmsg (__NR_Linux + 46) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_shutdown (__NR_Linux + 47) +#define __NR_bind (__NR_Linux + 48) +#define __NR_listen (__NR_Linux + 49) +#define __NR_getsockname (__NR_Linux + 50) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_getpeername (__NR_Linux + 51) +#define __NR_socketpair (__NR_Linux + 52) +#define __NR_setsockopt (__NR_Linux + 53) +#define __NR_getsockopt (__NR_Linux + 54) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_clone (__NR_Linux + 55) +#define __NR_fork (__NR_Linux + 56) +#define __NR_execve (__NR_Linux + 57) +#define __NR_exit (__NR_Linux + 58) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_wait4 (__NR_Linux + 59) +#define __NR_kill (__NR_Linux + 60) +#define __NR_uname (__NR_Linux + 61) +#define __NR_semget (__NR_Linux + 62) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_semop (__NR_Linux + 63) +#define __NR_semctl (__NR_Linux + 64) +#define __NR_shmdt (__NR_Linux + 65) +#define __NR_msgget (__NR_Linux + 66) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_msgsnd (__NR_Linux + 67) +#define __NR_msgrcv (__NR_Linux + 68) +#define __NR_msgctl (__NR_Linux + 69) +#define __NR_fcntl (__NR_Linux + 70) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_flock (__NR_Linux + 71) +#define __NR_fsync (__NR_Linux + 72) +#define __NR_fdatasync (__NR_Linux + 73) +#define __NR_truncate (__NR_Linux + 74) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_ftruncate (__NR_Linux + 75) +#define __NR_getdents (__NR_Linux + 76) +#define __NR_getcwd (__NR_Linux + 77) +#define __NR_chdir (__NR_Linux + 78) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_fchdir (__NR_Linux + 79) +#define __NR_rename (__NR_Linux + 80) +#define __NR_mkdir (__NR_Linux + 81) +#define __NR_rmdir (__NR_Linux + 82) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_creat (__NR_Linux + 83) +#define __NR_link (__NR_Linux + 84) +#define __NR_unlink (__NR_Linux + 85) +#define __NR_symlink (__NR_Linux + 86) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_readlink (__NR_Linux + 87) +#define __NR_chmod (__NR_Linux + 88) +#define __NR_fchmod (__NR_Linux + 89) +#define __NR_chown (__NR_Linux + 90) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_fchown (__NR_Linux + 91) +#define __NR_lchown (__NR_Linux + 92) +#define __NR_umask (__NR_Linux + 93) +#define __NR_gettimeofday (__NR_Linux + 94) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_getrlimit (__NR_Linux + 95) +#define __NR_getrusage (__NR_Linux + 96) +#define __NR_sysinfo (__NR_Linux + 97) +#define __NR_times (__NR_Linux + 98) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_ptrace (__NR_Linux + 99) +#define __NR_getuid (__NR_Linux + 100) +#define __NR_syslog (__NR_Linux + 101) +#define __NR_getgid (__NR_Linux + 102) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_setuid (__NR_Linux + 103) +#define __NR_setgid (__NR_Linux + 104) +#define __NR_geteuid (__NR_Linux + 105) +#define __NR_getegid (__NR_Linux + 106) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_setpgid (__NR_Linux + 107) +#define __NR_getppid (__NR_Linux + 108) +#define __NR_getpgrp (__NR_Linux + 109) +#define __NR_setsid (__NR_Linux + 110) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_setreuid (__NR_Linux + 111) +#define __NR_setregid (__NR_Linux + 112) +#define __NR_getgroups (__NR_Linux + 113) +#define __NR_setgroups (__NR_Linux + 114) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_setresuid (__NR_Linux + 115) +#define __NR_getresuid (__NR_Linux + 116) +#define __NR_setresgid (__NR_Linux + 117) +#define __NR_getresgid (__NR_Linux + 118) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_getpgid (__NR_Linux + 119) +#define __NR_setfsuid (__NR_Linux + 120) +#define __NR_setfsgid (__NR_Linux + 121) +#define __NR_getsid (__NR_Linux + 122) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_capget (__NR_Linux + 123) +#define __NR_capset (__NR_Linux + 124) +#define __NR_rt_sigpending (__NR_Linux + 125) +#define __NR_rt_sigtimedwait (__NR_Linux + 126) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_rt_sigqueueinfo (__NR_Linux + 127) +#define __NR_rt_sigsuspend (__NR_Linux + 128) +#define __NR_sigaltstack (__NR_Linux + 129) +#define __NR_utime (__NR_Linux + 130) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_mknod (__NR_Linux + 131) +#define __NR_personality (__NR_Linux + 132) +#define __NR_ustat (__NR_Linux + 133) +#define __NR_statfs (__NR_Linux + 134) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_fstatfs (__NR_Linux + 135) +#define __NR_sysfs (__NR_Linux + 136) +#define __NR_getpriority (__NR_Linux + 137) +#define __NR_setpriority (__NR_Linux + 138) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_sched_setparam (__NR_Linux + 139) +#define __NR_sched_getparam (__NR_Linux + 140) +#define __NR_sched_setscheduler (__NR_Linux + 141) +#define __NR_sched_getscheduler (__NR_Linux + 142) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_sched_get_priority_max (__NR_Linux + 143) +#define __NR_sched_get_priority_min (__NR_Linux + 144) +#define __NR_sched_rr_get_interval (__NR_Linux + 145) +#define __NR_mlock (__NR_Linux + 146) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_munlock (__NR_Linux + 147) +#define __NR_mlockall (__NR_Linux + 148) +#define __NR_munlockall (__NR_Linux + 149) +#define __NR_vhangup (__NR_Linux + 150) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_pivot_root (__NR_Linux + 151) +#define __NR__sysctl (__NR_Linux + 152) +#define __NR_prctl (__NR_Linux + 153) +#define __NR_adjtimex (__NR_Linux + 154) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_setrlimit (__NR_Linux + 155) +#define __NR_chroot (__NR_Linux + 156) +#define __NR_sync (__NR_Linux + 157) +#define __NR_acct (__NR_Linux + 158) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_settimeofday (__NR_Linux + 159) +#define __NR_mount (__NR_Linux + 160) +#define __NR_umount2 (__NR_Linux + 161) +#define __NR_swapon (__NR_Linux + 162) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_swapoff (__NR_Linux + 163) +#define __NR_reboot (__NR_Linux + 164) +#define __NR_sethostname (__NR_Linux + 165) +#define __NR_setdomainname (__NR_Linux + 166) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_create_module (__NR_Linux + 167) +#define __NR_init_module (__NR_Linux + 168) +#define __NR_delete_module (__NR_Linux + 169) +#define __NR_get_kernel_syms (__NR_Linux + 170) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_query_module (__NR_Linux + 171) +#define __NR_quotactl (__NR_Linux + 172) +#define __NR_nfsservctl (__NR_Linux + 173) +#define __NR_getpmsg (__NR_Linux + 174) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_putpmsg (__NR_Linux + 175) +#define __NR_afs_syscall (__NR_Linux + 176) +#define __NR_reserved177 (__NR_Linux + 177) +#define __NR_gettid (__NR_Linux + 178) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_readahead (__NR_Linux + 179) +#define __NR_setxattr (__NR_Linux + 180) +#define __NR_lsetxattr (__NR_Linux + 181) +#define __NR_fsetxattr (__NR_Linux + 182) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_getxattr (__NR_Linux + 183) +#define __NR_lgetxattr (__NR_Linux + 184) +#define __NR_fgetxattr (__NR_Linux + 185) +#define __NR_listxattr (__NR_Linux + 186) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_llistxattr (__NR_Linux + 187) +#define __NR_flistxattr (__NR_Linux + 188) +#define __NR_removexattr (__NR_Linux + 189) +#define __NR_lremovexattr (__NR_Linux + 190) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_fremovexattr (__NR_Linux + 191) +#define __NR_tkill (__NR_Linux + 192) +#define __NR_reserved193 (__NR_Linux + 193) +#define __NR_futex (__NR_Linux + 194) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_sched_setaffinity (__NR_Linux + 195) +#define __NR_sched_getaffinity (__NR_Linux + 196) +#define __NR_cacheflush (__NR_Linux + 197) +#define __NR_cachectl (__NR_Linux + 198) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_sysmips (__NR_Linux + 199) +#define __NR_io_setup (__NR_Linux + 200) +#define __NR_io_destroy (__NR_Linux + 201) +#define __NR_io_getevents (__NR_Linux + 202) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_io_submit (__NR_Linux + 203) +#define __NR_io_cancel (__NR_Linux + 204) +#define __NR_exit_group (__NR_Linux + 205) +#define __NR_lookup_dcookie (__NR_Linux + 206) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_epoll_create (__NR_Linux + 207) +#define __NR_epoll_ctl (__NR_Linux + 208) +#define __NR_epoll_wait (__NR_Linux + 209) +#define __NR_remap_file_pages (__NR_Linux + 210) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_rt_sigreturn (__NR_Linux + 211) +#define __NR_set_tid_address (__NR_Linux + 212) +#define __NR_restart_syscall (__NR_Linux + 213) +#define __NR_semtimedop (__NR_Linux + 214) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_fadvise64 (__NR_Linux + 215) +#define __NR_timer_create (__NR_Linux + 216) +#define __NR_timer_settime (__NR_Linux + 217) +#define __NR_timer_gettime (__NR_Linux + 218) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_timer_getoverrun (__NR_Linux + 219) +#define __NR_timer_delete (__NR_Linux + 220) +#define __NR_clock_settime (__NR_Linux + 221) +#define __NR_clock_gettime (__NR_Linux + 222) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_clock_getres (__NR_Linux + 223) +#define __NR_clock_nanosleep (__NR_Linux + 224) +#define __NR_tgkill (__NR_Linux + 225) +#define __NR_utimes (__NR_Linux + 226) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_mbind (__NR_Linux + 227) +#define __NR_get_mempolicy (__NR_Linux + 228) +#define __NR_set_mempolicy (__NR_Linux + 229) +#define __NR_mq_open (__NR_Linux + 230) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_mq_unlink (__NR_Linux + 231) +#define __NR_mq_timedsend (__NR_Linux + 232) +#define __NR_mq_timedreceive (__NR_Linux + 233) +#define __NR_mq_notify (__NR_Linux + 234) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_mq_getsetattr (__NR_Linux + 235) +#define __NR_vserver (__NR_Linux + 236) +#define __NR_waitid (__NR_Linux + 237) +#define __NR_add_key (__NR_Linux + 239) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_request_key (__NR_Linux + 240) +#define __NR_keyctl (__NR_Linux + 241) +#define __NR_set_thread_area (__NR_Linux + 242) +#define __NR_inotify_init (__NR_Linux + 243) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_inotify_add_watch (__NR_Linux + 244) +#define __NR_inotify_rm_watch (__NR_Linux + 245) +#define __NR_migrate_pages (__NR_Linux + 246) +#define __NR_openat (__NR_Linux + 247) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_mkdirat (__NR_Linux + 248) +#define __NR_mknodat (__NR_Linux + 249) +#define __NR_fchownat (__NR_Linux + 250) +#define __NR_futimesat (__NR_Linux + 251) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_newfstatat (__NR_Linux + 252) +#define __NR_unlinkat (__NR_Linux + 253) +#define __NR_renameat (__NR_Linux + 254) +#define __NR_linkat (__NR_Linux + 255) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_symlinkat (__NR_Linux + 256) +#define __NR_readlinkat (__NR_Linux + 257) +#define __NR_fchmodat (__NR_Linux + 258) +#define __NR_faccessat (__NR_Linux + 259) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_pselect6 (__NR_Linux + 260) +#define __NR_ppoll (__NR_Linux + 261) +#define __NR_unshare (__NR_Linux + 262) +#define __NR_splice (__NR_Linux + 263) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_sync_file_range (__NR_Linux + 264) +#define __NR_tee (__NR_Linux + 265) +#define __NR_vmsplice (__NR_Linux + 266) +#define __NR_move_pages (__NR_Linux + 267) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_set_robust_list (__NR_Linux + 268) +#define __NR_get_robust_list (__NR_Linux + 269) +#define __NR_kexec_load (__NR_Linux + 270) +#define __NR_getcpu (__NR_Linux + 271) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_epoll_pwait (__NR_Linux + 272) +#define __NR_ioprio_set (__NR_Linux + 273) +#define __NR_ioprio_get (__NR_Linux + 274) +#define __NR_utimensat (__NR_Linux + 275) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_signalfd (__NR_Linux + 276) +#define __NR_timerfd (__NR_Linux + 277) +#define __NR_eventfd (__NR_Linux + 278) +#define __NR_fallocate (__NR_Linux + 279) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_timerfd_create (__NR_Linux + 280) +#define __NR_timerfd_gettime (__NR_Linux + 281) +#define __NR_timerfd_settime (__NR_Linux + 282) +#define __NR_signalfd4 (__NR_Linux + 283) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_eventfd2 (__NR_Linux + 284) +#define __NR_epoll_create1 (__NR_Linux + 285) +#define __NR_dup3 (__NR_Linux + 286) +#define __NR_pipe2 (__NR_Linux + 287) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_inotify_init1 (__NR_Linux + 288) +#define __NR_preadv (__NR_Linux + 289) +#define __NR_pwritev (__NR_Linux + 290) +#define __NR_rt_tgsigqueueinfo (__NR_Linux + 291) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_perf_event_open (__NR_Linux + 292) +#define __NR_accept4 (__NR_Linux + 293) +#define __NR_recvmmsg (__NR_Linux + 294) +#define __NR_fanotify_init (__NR_Linux + 295) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_fanotify_mark (__NR_Linux + 296) +#define __NR_prlimit64 (__NR_Linux + 297) +#define __NR_name_to_handle_at (__NR_Linux + 298) +#define __NR_open_by_handle_at (__NR_Linux + 299) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_clock_adjtime (__NR_Linux + 300) +#define __NR_syncfs (__NR_Linux + 301) +#define __NR_sendmmsg (__NR_Linux + 302) +#define __NR_setns (__NR_Linux + 303) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_process_vm_readv (__NR_Linux + 304) +#define __NR_process_vm_writev (__NR_Linux + 305) +#define __NR_kcmp (__NR_Linux + 306) +#define __NR_finit_module (__NR_Linux + 307) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_getdents64 (__NR_Linux + 308) +#define __NR_sched_setattr (__NR_Linux + 309) +#define __NR_sched_getattr (__NR_Linux + 310) +#define __NR_Linux_syscalls 310 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif +#define __NR_64_Linux 5000 +#define __NR_64_Linux_syscalls 310 +#if _MIPS_SIM == _MIPS_SIM_NABI32 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_Linux 6000 +#define __NR_read (__NR_Linux + 0) +#define __NR_write (__NR_Linux + 1) +#define __NR_open (__NR_Linux + 2) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_close (__NR_Linux + 3) +#define __NR_stat (__NR_Linux + 4) +#define __NR_fstat (__NR_Linux + 5) +#define __NR_lstat (__NR_Linux + 6) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_poll (__NR_Linux + 7) +#define __NR_lseek (__NR_Linux + 8) +#define __NR_mmap (__NR_Linux + 9) +#define __NR_mprotect (__NR_Linux + 10) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_munmap (__NR_Linux + 11) +#define __NR_brk (__NR_Linux + 12) +#define __NR_rt_sigaction (__NR_Linux + 13) +#define __NR_rt_sigprocmask (__NR_Linux + 14) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_ioctl (__NR_Linux + 15) +#define __NR_pread64 (__NR_Linux + 16) +#define __NR_pwrite64 (__NR_Linux + 17) +#define __NR_readv (__NR_Linux + 18) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_writev (__NR_Linux + 19) +#define __NR_access (__NR_Linux + 20) +#define __NR_pipe (__NR_Linux + 21) +#define __NR__newselect (__NR_Linux + 22) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_sched_yield (__NR_Linux + 23) +#define __NR_mremap (__NR_Linux + 24) +#define __NR_msync (__NR_Linux + 25) +#define __NR_mincore (__NR_Linux + 26) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_madvise (__NR_Linux + 27) +#define __NR_shmget (__NR_Linux + 28) +#define __NR_shmat (__NR_Linux + 29) +#define __NR_shmctl (__NR_Linux + 30) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_dup (__NR_Linux + 31) +#define __NR_dup2 (__NR_Linux + 32) +#define __NR_pause (__NR_Linux + 33) +#define __NR_nanosleep (__NR_Linux + 34) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_getitimer (__NR_Linux + 35) +#define __NR_setitimer (__NR_Linux + 36) +#define __NR_alarm (__NR_Linux + 37) +#define __NR_getpid (__NR_Linux + 38) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_sendfile (__NR_Linux + 39) +#define __NR_socket (__NR_Linux + 40) +#define __NR_connect (__NR_Linux + 41) +#define __NR_accept (__NR_Linux + 42) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_sendto (__NR_Linux + 43) +#define __NR_recvfrom (__NR_Linux + 44) +#define __NR_sendmsg (__NR_Linux + 45) +#define __NR_recvmsg (__NR_Linux + 46) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_shutdown (__NR_Linux + 47) +#define __NR_bind (__NR_Linux + 48) +#define __NR_listen (__NR_Linux + 49) +#define __NR_getsockname (__NR_Linux + 50) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_getpeername (__NR_Linux + 51) +#define __NR_socketpair (__NR_Linux + 52) +#define __NR_setsockopt (__NR_Linux + 53) +#define __NR_getsockopt (__NR_Linux + 54) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_clone (__NR_Linux + 55) +#define __NR_fork (__NR_Linux + 56) +#define __NR_execve (__NR_Linux + 57) +#define __NR_exit (__NR_Linux + 58) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_wait4 (__NR_Linux + 59) +#define __NR_kill (__NR_Linux + 60) +#define __NR_uname (__NR_Linux + 61) +#define __NR_semget (__NR_Linux + 62) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_semop (__NR_Linux + 63) +#define __NR_semctl (__NR_Linux + 64) +#define __NR_shmdt (__NR_Linux + 65) +#define __NR_msgget (__NR_Linux + 66) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_msgsnd (__NR_Linux + 67) +#define __NR_msgrcv (__NR_Linux + 68) +#define __NR_msgctl (__NR_Linux + 69) +#define __NR_fcntl (__NR_Linux + 70) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_flock (__NR_Linux + 71) +#define __NR_fsync (__NR_Linux + 72) +#define __NR_fdatasync (__NR_Linux + 73) +#define __NR_truncate (__NR_Linux + 74) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_ftruncate (__NR_Linux + 75) +#define __NR_getdents (__NR_Linux + 76) +#define __NR_getcwd (__NR_Linux + 77) +#define __NR_chdir (__NR_Linux + 78) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_fchdir (__NR_Linux + 79) +#define __NR_rename (__NR_Linux + 80) +#define __NR_mkdir (__NR_Linux + 81) +#define __NR_rmdir (__NR_Linux + 82) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_creat (__NR_Linux + 83) +#define __NR_link (__NR_Linux + 84) +#define __NR_unlink (__NR_Linux + 85) +#define __NR_symlink (__NR_Linux + 86) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_readlink (__NR_Linux + 87) +#define __NR_chmod (__NR_Linux + 88) +#define __NR_fchmod (__NR_Linux + 89) +#define __NR_chown (__NR_Linux + 90) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_fchown (__NR_Linux + 91) +#define __NR_lchown (__NR_Linux + 92) +#define __NR_umask (__NR_Linux + 93) +#define __NR_gettimeofday (__NR_Linux + 94) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_getrlimit (__NR_Linux + 95) +#define __NR_getrusage (__NR_Linux + 96) +#define __NR_sysinfo (__NR_Linux + 97) +#define __NR_times (__NR_Linux + 98) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_ptrace (__NR_Linux + 99) +#define __NR_getuid (__NR_Linux + 100) +#define __NR_syslog (__NR_Linux + 101) +#define __NR_getgid (__NR_Linux + 102) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_setuid (__NR_Linux + 103) +#define __NR_setgid (__NR_Linux + 104) +#define __NR_geteuid (__NR_Linux + 105) +#define __NR_getegid (__NR_Linux + 106) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_setpgid (__NR_Linux + 107) +#define __NR_getppid (__NR_Linux + 108) +#define __NR_getpgrp (__NR_Linux + 109) +#define __NR_setsid (__NR_Linux + 110) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_setreuid (__NR_Linux + 111) +#define __NR_setregid (__NR_Linux + 112) +#define __NR_getgroups (__NR_Linux + 113) +#define __NR_setgroups (__NR_Linux + 114) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_setresuid (__NR_Linux + 115) +#define __NR_getresuid (__NR_Linux + 116) +#define __NR_setresgid (__NR_Linux + 117) +#define __NR_getresgid (__NR_Linux + 118) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_getpgid (__NR_Linux + 119) +#define __NR_setfsuid (__NR_Linux + 120) +#define __NR_setfsgid (__NR_Linux + 121) +#define __NR_getsid (__NR_Linux + 122) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_capget (__NR_Linux + 123) +#define __NR_capset (__NR_Linux + 124) +#define __NR_rt_sigpending (__NR_Linux + 125) +#define __NR_rt_sigtimedwait (__NR_Linux + 126) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_rt_sigqueueinfo (__NR_Linux + 127) +#define __NR_rt_sigsuspend (__NR_Linux + 128) +#define __NR_sigaltstack (__NR_Linux + 129) +#define __NR_utime (__NR_Linux + 130) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_mknod (__NR_Linux + 131) +#define __NR_personality (__NR_Linux + 132) +#define __NR_ustat (__NR_Linux + 133) +#define __NR_statfs (__NR_Linux + 134) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_fstatfs (__NR_Linux + 135) +#define __NR_sysfs (__NR_Linux + 136) +#define __NR_getpriority (__NR_Linux + 137) +#define __NR_setpriority (__NR_Linux + 138) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_sched_setparam (__NR_Linux + 139) +#define __NR_sched_getparam (__NR_Linux + 140) +#define __NR_sched_setscheduler (__NR_Linux + 141) +#define __NR_sched_getscheduler (__NR_Linux + 142) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_sched_get_priority_max (__NR_Linux + 143) +#define __NR_sched_get_priority_min (__NR_Linux + 144) +#define __NR_sched_rr_get_interval (__NR_Linux + 145) +#define __NR_mlock (__NR_Linux + 146) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_munlock (__NR_Linux + 147) +#define __NR_mlockall (__NR_Linux + 148) +#define __NR_munlockall (__NR_Linux + 149) +#define __NR_vhangup (__NR_Linux + 150) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_pivot_root (__NR_Linux + 151) +#define __NR__sysctl (__NR_Linux + 152) +#define __NR_prctl (__NR_Linux + 153) +#define __NR_adjtimex (__NR_Linux + 154) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_setrlimit (__NR_Linux + 155) +#define __NR_chroot (__NR_Linux + 156) +#define __NR_sync (__NR_Linux + 157) +#define __NR_acct (__NR_Linux + 158) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_settimeofday (__NR_Linux + 159) +#define __NR_mount (__NR_Linux + 160) +#define __NR_umount2 (__NR_Linux + 161) +#define __NR_swapon (__NR_Linux + 162) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_swapoff (__NR_Linux + 163) +#define __NR_reboot (__NR_Linux + 164) +#define __NR_sethostname (__NR_Linux + 165) +#define __NR_setdomainname (__NR_Linux + 166) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_create_module (__NR_Linux + 167) +#define __NR_init_module (__NR_Linux + 168) +#define __NR_delete_module (__NR_Linux + 169) +#define __NR_get_kernel_syms (__NR_Linux + 170) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_query_module (__NR_Linux + 171) +#define __NR_quotactl (__NR_Linux + 172) +#define __NR_nfsservctl (__NR_Linux + 173) +#define __NR_getpmsg (__NR_Linux + 174) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_putpmsg (__NR_Linux + 175) +#define __NR_afs_syscall (__NR_Linux + 176) +#define __NR_reserved177 (__NR_Linux + 177) +#define __NR_gettid (__NR_Linux + 178) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_readahead (__NR_Linux + 179) +#define __NR_setxattr (__NR_Linux + 180) +#define __NR_lsetxattr (__NR_Linux + 181) +#define __NR_fsetxattr (__NR_Linux + 182) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_getxattr (__NR_Linux + 183) +#define __NR_lgetxattr (__NR_Linux + 184) +#define __NR_fgetxattr (__NR_Linux + 185) +#define __NR_listxattr (__NR_Linux + 186) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_llistxattr (__NR_Linux + 187) +#define __NR_flistxattr (__NR_Linux + 188) +#define __NR_removexattr (__NR_Linux + 189) +#define __NR_lremovexattr (__NR_Linux + 190) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_fremovexattr (__NR_Linux + 191) +#define __NR_tkill (__NR_Linux + 192) +#define __NR_reserved193 (__NR_Linux + 193) +#define __NR_futex (__NR_Linux + 194) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_sched_setaffinity (__NR_Linux + 195) +#define __NR_sched_getaffinity (__NR_Linux + 196) +#define __NR_cacheflush (__NR_Linux + 197) +#define __NR_cachectl (__NR_Linux + 198) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_sysmips (__NR_Linux + 199) +#define __NR_io_setup (__NR_Linux + 200) +#define __NR_io_destroy (__NR_Linux + 201) +#define __NR_io_getevents (__NR_Linux + 202) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_io_submit (__NR_Linux + 203) +#define __NR_io_cancel (__NR_Linux + 204) +#define __NR_exit_group (__NR_Linux + 205) +#define __NR_lookup_dcookie (__NR_Linux + 206) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_epoll_create (__NR_Linux + 207) +#define __NR_epoll_ctl (__NR_Linux + 208) +#define __NR_epoll_wait (__NR_Linux + 209) +#define __NR_remap_file_pages (__NR_Linux + 210) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_rt_sigreturn (__NR_Linux + 211) +#define __NR_fcntl64 (__NR_Linux + 212) +#define __NR_set_tid_address (__NR_Linux + 213) +#define __NR_restart_syscall (__NR_Linux + 214) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_semtimedop (__NR_Linux + 215) +#define __NR_fadvise64 (__NR_Linux + 216) +#define __NR_statfs64 (__NR_Linux + 217) +#define __NR_fstatfs64 (__NR_Linux + 218) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_sendfile64 (__NR_Linux + 219) +#define __NR_timer_create (__NR_Linux + 220) +#define __NR_timer_settime (__NR_Linux + 221) +#define __NR_timer_gettime (__NR_Linux + 222) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_timer_getoverrun (__NR_Linux + 223) +#define __NR_timer_delete (__NR_Linux + 224) +#define __NR_clock_settime (__NR_Linux + 225) +#define __NR_clock_gettime (__NR_Linux + 226) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_clock_getres (__NR_Linux + 227) +#define __NR_clock_nanosleep (__NR_Linux + 228) +#define __NR_tgkill (__NR_Linux + 229) +#define __NR_utimes (__NR_Linux + 230) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_mbind (__NR_Linux + 231) +#define __NR_get_mempolicy (__NR_Linux + 232) +#define __NR_set_mempolicy (__NR_Linux + 233) +#define __NR_mq_open (__NR_Linux + 234) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_mq_unlink (__NR_Linux + 235) +#define __NR_mq_timedsend (__NR_Linux + 236) +#define __NR_mq_timedreceive (__NR_Linux + 237) +#define __NR_mq_notify (__NR_Linux + 238) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_mq_getsetattr (__NR_Linux + 239) +#define __NR_vserver (__NR_Linux + 240) +#define __NR_waitid (__NR_Linux + 241) +#define __NR_add_key (__NR_Linux + 243) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_request_key (__NR_Linux + 244) +#define __NR_keyctl (__NR_Linux + 245) +#define __NR_set_thread_area (__NR_Linux + 246) +#define __NR_inotify_init (__NR_Linux + 247) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_inotify_add_watch (__NR_Linux + 248) +#define __NR_inotify_rm_watch (__NR_Linux + 249) +#define __NR_migrate_pages (__NR_Linux + 250) +#define __NR_openat (__NR_Linux + 251) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_mkdirat (__NR_Linux + 252) +#define __NR_mknodat (__NR_Linux + 253) +#define __NR_fchownat (__NR_Linux + 254) +#define __NR_futimesat (__NR_Linux + 255) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_newfstatat (__NR_Linux + 256) +#define __NR_unlinkat (__NR_Linux + 257) +#define __NR_renameat (__NR_Linux + 258) +#define __NR_linkat (__NR_Linux + 259) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_symlinkat (__NR_Linux + 260) +#define __NR_readlinkat (__NR_Linux + 261) +#define __NR_fchmodat (__NR_Linux + 262) +#define __NR_faccessat (__NR_Linux + 263) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_pselect6 (__NR_Linux + 264) +#define __NR_ppoll (__NR_Linux + 265) +#define __NR_unshare (__NR_Linux + 266) +#define __NR_splice (__NR_Linux + 267) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_sync_file_range (__NR_Linux + 268) +#define __NR_tee (__NR_Linux + 269) +#define __NR_vmsplice (__NR_Linux + 270) +#define __NR_move_pages (__NR_Linux + 271) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_set_robust_list (__NR_Linux + 272) +#define __NR_get_robust_list (__NR_Linux + 273) +#define __NR_kexec_load (__NR_Linux + 274) +#define __NR_getcpu (__NR_Linux + 275) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_epoll_pwait (__NR_Linux + 276) +#define __NR_ioprio_set (__NR_Linux + 277) +#define __NR_ioprio_get (__NR_Linux + 278) +#define __NR_utimensat (__NR_Linux + 279) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_signalfd (__NR_Linux + 280) +#define __NR_timerfd (__NR_Linux + 281) +#define __NR_eventfd (__NR_Linux + 282) +#define __NR_fallocate (__NR_Linux + 283) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_timerfd_create (__NR_Linux + 284) +#define __NR_timerfd_gettime (__NR_Linux + 285) +#define __NR_timerfd_settime (__NR_Linux + 286) +#define __NR_signalfd4 (__NR_Linux + 287) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_eventfd2 (__NR_Linux + 288) +#define __NR_epoll_create1 (__NR_Linux + 289) +#define __NR_dup3 (__NR_Linux + 290) +#define __NR_pipe2 (__NR_Linux + 291) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_inotify_init1 (__NR_Linux + 292) +#define __NR_preadv (__NR_Linux + 293) +#define __NR_pwritev (__NR_Linux + 294) +#define __NR_rt_tgsigqueueinfo (__NR_Linux + 295) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_perf_event_open (__NR_Linux + 296) +#define __NR_accept4 (__NR_Linux + 297) +#define __NR_recvmmsg (__NR_Linux + 298) +#define __NR_getdents64 (__NR_Linux + 299) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_fanotify_init (__NR_Linux + 300) +#define __NR_fanotify_mark (__NR_Linux + 301) +#define __NR_prlimit64 (__NR_Linux + 302) +#define __NR_name_to_handle_at (__NR_Linux + 303) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_open_by_handle_at (__NR_Linux + 304) +#define __NR_clock_adjtime (__NR_Linux + 305) +#define __NR_syncfs (__NR_Linux + 306) +#define __NR_sendmmsg (__NR_Linux + 307) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_setns (__NR_Linux + 308) +#define __NR_process_vm_readv (__NR_Linux + 309) +#define __NR_process_vm_writev (__NR_Linux + 310) +#define __NR_kcmp (__NR_Linux + 311) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define __NR_finit_module (__NR_Linux + 312) +#define __NR_sched_setattr (__NR_Linux + 313) +#define __NR_sched_getattr (__NR_Linux + 314) +#define __NR_Linux_syscalls 314 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif +#define __NR_N32_Linux 6000 +#define __NR_N32_Linux_syscalls 314 +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-x86/asm/a.out.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-x86/asm/a.out.h new file mode 100644 index 0000000..fa287b5 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-x86/asm/a.out.h @@ -0,0 +1,39 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _ASM_X86_A_OUT_H +#define _ASM_X86_A_OUT_H +struct exec +{ +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned int a_info; + unsigned a_text; + unsigned a_data; + unsigned a_bss; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ + unsigned a_syms; + unsigned a_entry; + unsigned a_trsize; + unsigned a_drsize; +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +}; +#define N_TRSIZE(a) ((a).a_trsize) +#define N_DRSIZE(a) ((a).a_drsize) +#define N_SYMSIZE(a) ((a).a_syms) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-x86/asm/auxvec.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-x86/asm/auxvec.h new file mode 100644 index 0000000..3ff7f71 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-x86/asm/auxvec.h @@ -0,0 +1,28 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _ASM_X86_AUXVEC_H +#define _ASM_X86_AUXVEC_H +#ifdef __i386__ +#define AT_SYSINFO 32 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif +#define AT_SYSINFO_EHDR 33 +#define AT_VECTOR_SIZE_ARCH 2 +#endif +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-x86/asm/bitsperlong.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-x86/asm/bitsperlong.h new file mode 100644 index 0000000..2deae24 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-x86/asm/bitsperlong.h @@ -0,0 +1,29 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef __ASM_X86_BITSPERLONG_H +#define __ASM_X86_BITSPERLONG_H +#ifdef __x86_64__ +#define __BITS_PER_LONG 64 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#else +#define __BITS_PER_LONG 32 +#endif +#include +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-x86/asm/boot.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-x86/asm/boot.h new file mode 100644 index 0000000..1560dd0 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-x86/asm/boot.h @@ -0,0 +1,25 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _UAPI_ASM_X86_BOOT_H +#define _UAPI_ASM_X86_BOOT_H +#define NORMAL_VGA 0xffff +#define EXTENDED_VGA 0xfffe +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define ASK_VGA 0xfffd +#endif diff --git a/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-x86/asm/bootparam.h b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-x86/asm/bootparam.h new file mode 100644 index 0000000..b576825 --- /dev/null +++ b/pinplay-drdebug-3.5-pin-3.5-97503-gac534ca30-gcc-linux/extras/crt/include/kernel/uapi/asm-x86/asm/bootparam.h @@ -0,0 +1,189 @@ +/**************************************************************************** + **************************************************************************** + *** + *** This header was automatically generated from a Linux kernel header + *** of the same name, to make information necessary for userspace to + *** call into the kernel available to libc. It contains only constants, + *** structures, and macros generated from the original header, and thus, + *** contains no copyrightable information. + *** + *** To edit the content of this header, modify the corresponding + *** source file (e.g. under external/kernel-headers/original/) then + *** run bionic/libc/kernel/tools/update_all.py + *** + *** Any manual change here will be lost the next time this script will + *** be run. You've been warned! + *** + **************************************************************************** + ****************************************************************************/ +#ifndef _ASM_X86_BOOTPARAM_H +#define _ASM_X86_BOOTPARAM_H +#define SETUP_NONE 0 +#define SETUP_E820_EXT 1 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define SETUP_DTB 2 +#define SETUP_PCI 3 +#define SETUP_EFI 4 +#define RAMDISK_IMAGE_START_MASK 0x07FF +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define RAMDISK_PROMPT_FLAG 0x8000 +#define RAMDISK_LOAD_FLAG 0x4000 +#define LOADED_HIGH (1<<0) +#define QUIET_FLAG (1<<5) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define KEEP_SEGMENTS (1<<6) +#define CAN_USE_HEAP (1<<7) +#define XLF_KERNEL_64 (1<<0) +#define XLF_CAN_BE_LOADED_ABOVE_4G (1<<1) +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#define XLF_EFI_HANDOVER_32 (1<<2) +#define XLF_EFI_HANDOVER_64 (1<<3) +#define XLF_EFI_KEXEC (1<<4) +#ifndef __ASSEMBLY__ +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#include +#include +#include +#include +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ +#include +#include +#include