From 09c63b90180836f87f0e57217bb6a9807fad817a Mon Sep 17 00:00:00 2001 From: Vignesh Babu Date: Sat, 26 Sep 2020 23:25:41 -0700 Subject: [PATCH] updating files for version-1.3 which includes app-vt tracer support with pintool --- Makefile | 22 +- examples/cmds_to_run_file.txt | 10 +- examples/example_app_vt_experiment.py | 26 +- src/core/common.c | 4 +- src/core/sync_experiment.c | 40 +- src/core/vt_module.c | 11 +- src/tracer/app_vt_tracer.c | 22 +- src/tracer/pintool/inscount_tls.cpp | 21 +- src/tracer/pintool/makefile | 12 +- src/tracer/pintool/pin-3.13/README | 838 + .../pintool/pin-3.13/doc/html/annotated.html | 213 + src/tracer/pintool/pin-3.13/doc/html/bc_s.png | Bin 0 -> 677 bytes .../classCALLSTACK_1_1CallEntry-members.html | 97 + .../doc/html/classCALLSTACK_1_1CallEntry.html | 110 + .../classCALLSTACK_1_1CallStack-members.html | 101 + .../doc/html/classCALLSTACK_1_1CallStack.html | 120 + ...ACK_1_1CallStackHandlerParams-members.html | 99 + ...ssCALLSTACK_1_1CallStackHandlerParams.html | 119 + ...CALLSTACK_1_1CallStackManager-members.html | 105 + .../classCALLSTACK_1_1CallStackManager.html | 131 + ...sCONTROLLER_1_1ALARM__ADDRESS-members.html | 132 + .../classCONTROLLER_1_1ALARM__ADDRESS.html | 104 + ...assCONTROLLER_1_1ALARM__CPUID-members.html | 132 + .../html/classCONTROLLER_1_1ALARM__CPUID.html | 104 + ...TROLLER_1_1ALARM__ENTER__FUNC-members.html | 132 + ...classCONTROLLER_1_1ALARM__ENTER__FUNC.html | 104 + ...NTROLLER_1_1ALARM__EXIT__FUNC-members.html | 132 + .../classCONTROLLER_1_1ALARM__EXIT__FUNC.html | 104 + ...ssCONTROLLER_1_1ALARM__ICOUNT-members.html | 132 + .../classCONTROLLER_1_1ALARM__ICOUNT.html | 106 + ...assCONTROLLER_1_1ALARM__IMAGE-members.html | 132 + .../html/classCONTROLLER_1_1ALARM__IMAGE.html | 104 + ...lassCONTROLLER_1_1ALARM__INT3-members.html | 132 + .../html/classCONTROLLER_1_1ALARM__INT3.html | 104 + ...TROLLER_1_1ALARM__INTERACTIVE-members.html | 133 + ...classCONTROLLER_1_1ALARM__INTERACTIVE.html | 106 + ...OLLER_1_1ALARM__ISA__CATEGORY-members.html | 132 + ...assCONTROLLER_1_1ALARM__ISA__CATEGORY.html | 104 + ...LLER_1_1ALARM__ISA__EXTENSION-members.html | 132 + ...ssCONTROLLER_1_1ALARM__ISA__EXTENSION.html | 104 + ...assCONTROLLER_1_1ALARM__ITEXT-members.html | 132 + .../html/classCONTROLLER_1_1ALARM__ITEXT.html | 104 + ...assCONTROLLER_1_1ALARM__MAGIC-members.html | 132 + .../html/classCONTROLLER_1_1ALARM__MAGIC.html | 104 + ...sCONTROLLER_1_1ALARM__MANAGER-members.html | 112 + .../classCONTROLLER_1_1ALARM__MANAGER.html | 142 + ...CONTROLLER_1_1ALARM__PCONTROL-members.html | 132 + .../classCONTROLLER_1_1ALARM__PCONTROL.html | 104 + ...ssCONTROLLER_1_1ALARM__SIGNAL-members.html | 132 + .../classCONTROLLER_1_1ALARM__SIGNAL.html | 104 + ...classCONTROLLER_1_1ALARM__SSC-members.html | 132 + .../html/classCONTROLLER_1_1ALARM__SSC.html | 104 + ...ssCONTROLLER_1_1ALARM__SYMBOL-members.html | 132 + .../classCONTROLLER_1_1ALARM__SYMBOL.html | 104 + ...sCONTROLLER_1_1ALARM__TIMEOUT-members.html | 132 + .../classCONTROLLER_1_1ALARM__TIMEOUT.html | 104 + ...TROLLER_1_1CONTROLLER__EVENTS-members.html | 96 + ...classCONTROLLER_1_1CONTROLLER__EVENTS.html | 113 + ...ssCONTROLLER_1_1CONTROL__ARGS-members.html | 96 + .../classCONTROLLER_1_1CONTROL__ARGS.html | 110 + ...sCONTROLLER_1_1CONTROL__CHAIN-members.html | 116 + .../classCONTROLLER_1_1CONTROL__CHAIN.html | 151 + ...NTROLLER_1_1CONTROL__IREGIONS-members.html | 98 + .../classCONTROLLER_1_1CONTROL__IREGIONS.html | 146 + ...ONTROLLER_1_1CONTROL__MANAGER-members.html | 120 + .../classCONTROLLER_1_1CONTROL__MANAGER.html | 161 + ...TROLLER_1_1CONTROL__PCREGIONS-members.html | 100 + ...classCONTROLLER_1_1CONTROL__PCREGIONS.html | 120 + .../classCONTROLLER_1_1IALARM-members.html | 131 + .../doc/html/classCONTROLLER_1_1IALARM.html | 200 + .../classCONTROLLER_1_1IEVENT-members.html | 96 + .../doc/html/classCONTROLLER_1_1IEVENT.html | 111 + ...lassCONTROLLER_1_1INIT__ALARM-members.html | 93 + .../html/classCONTROLLER_1_1INIT__ALARM.html | 104 + ...LLER_1_1INTERACTIVE__LISTENER-members.html | 96 + ...ssCONTROLLER_1_1INTERACTIVE__LISTENER.html | 110 + .../classCONTROLLER_1_1IREGION-members.html | 105 + .../doc/html/classCONTROLLER_1_1IREGION.html | 129 + .../classCONTROLLER_1_1PARSER-members.html | 106 + .../doc/html/classCONTROLLER_1_1PARSER.html | 130 + .../classCONTROLLER_1_1PCREGION-members.html | 106 + .../doc/html/classCONTROLLER_1_1PCREGION.html | 135 + ...ssCONTROLLER_1_1REGION__UTILS-members.html | 97 + .../classCONTROLLER_1_1REGION__UTILS.html | 112 + ...HELL_1_1ICUSTOM__INSTRUMENTOR-members.html | 95 + ...UGGER__SHELL_1_1ICUSTOM__INSTRUMENTOR.html | 256 + ...lassDEBUGGER__SHELL_1_1ISHELL-members.html | 97 + .../html/classDEBUGGER__SHELL_1_1ISHELL.html | 249 + .../html/classINSTLIB_1_1FILTER-members.html | 95 + .../doc/html/classINSTLIB_1_1FILTER.html | 106 + .../classINSTLIB_1_1FILTER__LIB-members.html | 95 + .../doc/html/classINSTLIB_1_1FILTER__LIB.html | 106 + .../classINSTLIB_1_1FILTER__RTN-members.html | 96 + .../doc/html/classINSTLIB_1_1FILTER__RTN.html | 107 + ...classINSTLIB_1_1FOLLOW__CHILD-members.html | 95 + .../html/classINSTLIB_1_1FOLLOW__CHILD.html | 149 + .../html/classINSTLIB_1_1ICOUNT-members.html | 103 + .../doc/html/classINSTLIB_1_1ICOUNT.html | 171 + .../html/classINSTLIB_1_1SKIPPER-members.html | 95 + .../doc/html/classINSTLIB_1_1SKIPPER.html | 107 + .../classINSTLIB_1_1SKIP__INT3-members.html | 95 + .../doc/html/classINSTLIB_1_1SKIP__INT3.html | 107 + .../classINSTLIB_1_1TIME__WARP-members.html | 94 + .../doc/html/classINSTLIB_1_1TIME__WARP.html | 124 + ...sINSTLIB_1_1TIME__WARP__RDTSC-members.html | 95 + .../classINSTLIB_1_1TIME__WARP__RDTSC.html | 105 + ...LEVEL__BASE_1_1ADDRESS__RANGE-members.html | 100 + .../classLEVEL__BASE_1_1ADDRESS__RANGE.html | 121 + ...E_1_1COMMAND__LINE__ARGUMENTS-members.html | 106 + ...VEL__BASE_1_1COMMAND__LINE__ARGUMENTS.html | 490 + .../classLEVEL__BASE_1_1KNOB-members.html | 133 + .../doc/html/classLEVEL__BASE_1_1KNOB.html | 125 + ...classLEVEL__BASE_1_1KNOBVALUE-members.html | 104 + .../html/classLEVEL__BASE_1_1KNOBVALUE.html | 166 + ...EVEL__BASE_1_1KNOBVALUE__LIST-members.html | 102 + .../classLEVEL__BASE_1_1KNOBVALUE__LIST.html | 125 + ...lassLEVEL__BASE_1_1KNOB__BASE-members.html | 128 + .../html/classLEVEL__BASE_1_1KNOB__BASE.html | 164 + ...sLEVEL__BASE_1_1KNOB__COMMENT-members.html | 134 + .../classLEVEL__BASE_1_1KNOB__COMMENT.html | 106 + .../classLEVEL__BASE_1_1PARSER-members.html | 98 + .../doc/html/classLEVEL__BASE_1_1PARSER.html | 424 + ...ASE_1_1PIN__ERROR__DESCRIPTOR-members.html | 92 + ...LEVEL__BASE_1_1PIN__ERROR__DESCRIPTOR.html | 98 + ...EVEL__BASE_1_1SimpleXMLParser-members.html | 99 + .../classLEVEL__BASE_1_1SimpleXMLParser.html | 252 + ..._1_1BBL__EDG__CONTAINER__PRED-members.html | 100 + ...EL__CORE_1_1BBL__EDG__CONTAINER__PRED.html | 118 + ..._1_1BBL__EDG__CONTAINER__SUCC-members.html | 100 + ...EL__CORE_1_1BBL__EDG__CONTAINER__SUCC.html | 118 + ...CORE_1_1CHUNK__REL__CONTAINER-members.html | 104 + ...sLEVEL__CORE_1_1CHUNK__REL__CONTAINER.html | 127 + ...sLEVEL__CORE_1_1REGISTER__SET-members.html | 120 + .../classLEVEL__CORE_1_1REGISTER__SET.html | 159 + ...VEL__PINCLIENT_1_1CLIENT__TLS-members.html | 103 + .../classLEVEL__PINCLIENT_1_1CLIENT__TLS.html | 371 + ..._PINCLIENT_1_1IMAGE__LOAD__OP-members.html | 94 + ...ssLEVEL__PINCLIENT_1_1IMAGE__LOAD__OP.html | 106 + ...PINCLIENT_1_1IMAGE__LOAD__OP2-members.html | 94 + ...sLEVEL__PINCLIENT_1_1IMAGE__LOAD__OP2.html | 106 + ..._PINCLIENT_1_1IMG__IDENTIFIER-members.html | 95 + ...ssLEVEL__PINCLIENT_1_1IMG__IDENTIFIER.html | 108 + ...lassLEVEL__PINCLIENT_1_1INSTR-members.html | 95 + .../html/classLEVEL__PINCLIENT_1_1INSTR.html | 111 + ...VEL__PINCLIENT_1_1INSTR__INFO-members.html | 96 + .../classLEVEL__PINCLIENT_1_1INSTR__INFO.html | 106 + ...VEL__PINCLIENT_1_1REPLACEDFUN-members.html | 98 + .../classLEVEL__PINCLIENT_1_1REPLACEDFUN.html | 120 + ...sLEVEL__PINCLIENT_1_1RTN__KEY-members.html | 97 + .../classLEVEL__PINCLIENT_1_1RTN__KEY.html | 115 + ...LIENT_1_1RTN__OUTSIDE__RANGES-members.html | 117 + ...EL__PINCLIENT_1_1RTN__OUTSIDE__RANGES.html | 155 + ...NCLIENT_1_1SymbolAddressRange-members.html | 101 + ...EVEL__PINCLIENT_1_1SymbolAddressRange.html | 123 + .../pin-3.13/doc/html/classSHELL-members.html | 92 + .../pintool/pin-3.13/doc/html/classSHELL.html | 249 + .../pintool/pin-3.13/doc/html/classes.html | 106 + .../pintool/pin-3.13/doc/html/closed.png | Bin 0 -> 126 bytes .../pintool/pin-3.13/doc/html/doxygen.css | 835 + .../pintool/pin-3.13/doc/html/doxygen.png | Bin 0 -> 3942 bytes .../pintool/pin-3.13/doc/html/functions.html | 467 + .../pin-3.13/doc/html/functions_enum.html | 95 + .../pin-3.13/doc/html/functions_eval.html | 98 + .../pin-3.13/doc/html/functions_func.html | 409 + .../pin-3.13/doc/html/functions_vars.html | 136 + .../pin-3.13/doc/html/group__ALARM.html | 80 + .../pin-3.13/doc/html/group__API__REF.html | 116 + .../doc/html/group__APPDEBUG__API.html | 783 + .../doc/html/group__BBL__BASIC__API.html | 516 + .../pin-3.13/doc/html/group__BUFFER__API.html | 287 + .../doc/html/group__CHILD__PROCESS__API.html | 272 + .../doc/html/group__CONTEXT__API.html | 677 + .../html/group__CONTROLLER__PCREGIONS.html | 133 + .../doc/html/group__CONTROLLER__REGIONS.html | 90 + .../doc/html/group__DEBUGGER__SHELL.html | 176 + .../pin-3.13/doc/html/group__DEBUG__API.html | 147 + .../doc/html/group__DEPRECATED__PIN__API.html | 247 + .../doc/html/group__ERROR__FILE__BASIC.html | 487 + .../doc/html/group__EXCEPTION__API.html | 1058 + .../pin-3.13/doc/html/group__FILTER.html | 169 + .../pin-3.13/doc/html/group__FILTER__LIB.html | 127 + .../doc/html/group__FILTER__MULTI.html | 127 + .../pin-3.13/doc/html/group__FILTER__RTN.html | 146 + .../doc/html/group__FOLLOW__CHILD.html | 145 + .../pin-3.13/doc/html/group__ICOUNT.html | 217 + .../doc/html/group__IMG__BASIC__API.html | 1137 ++ .../pin-3.13/doc/html/group__INSTLIB.html | 87 + .../pin-3.13/doc/html/group__INST__ARGS.html | 664 + .../doc/html/group__INS__BASIC__API.html | 141 + .../group__INS__BASIC__API__GEN__IA32.html | 1595 ++ .../html/group__INS__BASIC__API__IA32.html | 1896 ++ .../doc/html/group__INS__INST__API.html | 671 + .../html/group__INS__MOD__API__GEN__IA32.html | 280 + .../pin-3.13/doc/html/group__KNOBS.html | 169 + .../pin-3.13/doc/html/group__KNOB__API.html | 87 + .../pin-3.13/doc/html/group__KNOB__BASIC.html | 463 + .../pin-3.13/doc/html/group__KNOB__PRINT.html | 107 + .../pin-3.13/doc/html/group__LOCK.html | 731 + .../pin-3.13/doc/html/group__MISC.html | 150 + .../pin-3.13/doc/html/group__MISC__PARSE.html | 288 + .../pin-3.13/doc/html/group__MISC__PRINT.html | 974 + .../html/group__PHYSICAL__CONTEXT__API.html | 275 + .../doc/html/group__PIN__CALLBACKS.html | 197 + .../doc/html/group__PIN__CONTROL.html | 3076 +++ .../doc/html/group__PIN__PROCESS__API.html | 172 + .../doc/html/group__PIN__SYSCALL__API.html | 507 + .../doc/html/group__PIN__THREAD__API.html | 730 + .../pin-3.13/doc/html/group__PROTO.html | 80 + .../pin-3.13/doc/html/group__PROTO__API.html | 268 + .../doc/html/group__REG__BASIC__API.html | 91 + .../doc/html/group__REG__CPU__GENERIC.html | 437 + .../doc/html/group__REG__CPU__IA32.html | 3051 +++ .../doc/html/group__RTN__BASIC__API.html | 1541 ++ .../doc/html/group__SEC__BASIC__API.html | 556 + .../pin-3.13/doc/html/group__SKIPPER.html | 115 + .../pin-3.13/doc/html/group__SKIP__INT3.html | 110 + .../doc/html/group__STOPPED__THREAD__API.html | 80 + .../doc/html/group__SYM__BASIC__API.html | 435 + .../doc/html/group__TIME__WARPER.html | 86 + .../doc/html/group__TIME__WARPER__RDTSC.html | 110 + .../doc/html/group__TRACE__BASIC__API.html | 593 + .../doc/html/group__TRACE__VERSION__API.html | 215 + .../pin-3.13/doc/html/group__TYPE__BASE.html | 79 + .../pin-3.13/doc/html/group__UTILS.html | 79 + .../pintool/pin-3.13/doc/html/hierarchy.html | 224 + .../pintool/pin-3.13/doc/html/index.html | 4162 ++++ .../pintool/pin-3.13/doc/html/installdox | 112 + .../pintool/pin-3.13/doc/html/jquery.js | 54 + .../pintool/pin-3.13/doc/html/modules.html | 150 + .../doc/html/namespaceLEVEL__BASE.html | 1604 ++ .../doc/html/namespaceLEVEL__CORE.html | 1277 ++ .../doc/html/namespaceLEVEL__PINCLIENT.html | 1855 ++ .../pin-3.13/doc/html/namespacemembers.html | 120 + .../doc/html/namespacemembers_0x61.html | 159 + .../doc/html/namespacemembers_0x62.html | 177 + .../doc/html/namespacemembers_0x63.html | 159 + .../doc/html/namespacemembers_0x64.html | 144 + .../doc/html/namespacemembers_0x65.html | 303 + .../doc/html/namespacemembers_0x66.html | 195 + .../doc/html/namespacemembers_0x68.html | 123 + .../doc/html/namespacemembers_0x69.html | 732 + .../doc/html/namespacemembers_0x6b.html | 147 + .../doc/html/namespacemembers_0x6c.html | 120 + .../doc/html/namespacemembers_0x6d.html | 129 + .../doc/html/namespacemembers_0x6e.html | 120 + .../doc/html/namespacemembers_0x6f.html | 123 + .../doc/html/namespacemembers_0x70.html | 702 + .../doc/html/namespacemembers_0x72.html | 858 + .../doc/html/namespacemembers_0x73.html | 327 + .../doc/html/namespacemembers_0x74.html | 192 + .../doc/html/namespacemembers_0x75.html | 132 + .../doc/html/namespacemembers_0x76.html | 120 + .../doc/html/namespacemembers_enum.html | 169 + .../doc/html/namespacemembers_eval.html | 114 + .../doc/html/namespacemembers_eval_0x64.html | 114 + .../doc/html/namespacemembers_eval_0x65.html | 270 + .../doc/html/namespacemembers_eval_0x66.html | 150 + .../doc/html/namespacemembers_eval_0x69.html | 135 + .../doc/html/namespacemembers_eval_0x6b.html | 123 + .../doc/html/namespacemembers_eval_0x6e.html | 111 + .../doc/html/namespacemembers_eval_0x70.html | 171 + .../doc/html/namespacemembers_eval_0x72.html | 354 + .../doc/html/namespacemembers_eval_0x73.html | 171 + .../doc/html/namespacemembers_eval_0x75.html | 114 + .../doc/html/namespacemembers_func.html | 134 + .../doc/html/namespacemembers_func_0x62.html | 173 + .../doc/html/namespacemembers_func_0x63.html | 149 + .../doc/html/namespacemembers_func_0x64.html | 122 + .../doc/html/namespacemembers_func_0x65.html | 122 + .../doc/html/namespacemembers_func_0x66.html | 125 + .../doc/html/namespacemembers_func_0x68.html | 119 + .../doc/html/namespacemembers_func_0x69.html | 680 + .../doc/html/namespacemembers_func_0x6b.html | 122 + .../doc/html/namespacemembers_func_0x6c.html | 116 + .../doc/html/namespacemembers_func_0x6f.html | 116 + .../doc/html/namespacemembers_func_0x70.html | 599 + .../doc/html/namespacemembers_func_0x72.html | 554 + .../doc/html/namespacemembers_func_0x73.html | 236 + .../doc/html/namespacemembers_func_0x74.html | 158 + .../doc/html/namespacemembers_func_0x75.html | 119 + .../doc/html/namespacemembers_type.html | 291 + .../doc/html/namespacemembers_vars.html | 142 + .../pintool/pin-3.13/doc/html/namespaces.html | 88 + .../pintool/pin-3.13/doc/html/nav_f.png | Bin 0 -> 159 bytes .../pintool/pin-3.13/doc/html/nav_h.png | Bin 0 -> 97 bytes src/tracer/pintool/pin-3.13/doc/html/open.png | Bin 0 -> 118 bytes .../pin-3.13/doc/html/pin-debugger-attach.png | Bin 0 -> 28919 bytes .../pin-debugger-option-pages-properties.png | Bin 0 -> 21093 bytes .../html/pin-debugger-project-properties1.png | Bin 0 -> 27212 bytes .../html/pin-debugger-project-properties2.png | Bin 0 -> 34174 bytes .../pin-3.13/doc/html/search/all_5f.html | 210 + .../pin-3.13/doc/html/search/all_61.html | 274 + .../pin-3.13/doc/html/search/all_62.html | 158 + .../pin-3.13/doc/html/search/all_63.html | 257 + .../pin-3.13/doc/html/search/all_64.html | 115 + .../pin-3.13/doc/html/search/all_65.html | 449 + .../pin-3.13/doc/html/search/all_66.html | 242 + .../pin-3.13/doc/html/search/all_67.html | 65 + .../pin-3.13/doc/html/search/all_68.html | 47 + .../pin-3.13/doc/html/search/all_69.html | 1418 ++ .../pin-3.13/doc/html/search/all_6b.html | 134 + .../pin-3.13/doc/html/search/all_6c.html | 47 + .../pin-3.13/doc/html/search/all_6d.html | 71 + .../pin-3.13/doc/html/search/all_6e.html | 38 + .../pin-3.13/doc/html/search/all_6f.html | 50 + .../pin-3.13/doc/html/search/all_70.html | 1273 ++ .../pin-3.13/doc/html/search/all_72.html | 1549 ++ .../pin-3.13/doc/html/search/all_73.html | 548 + .../pin-3.13/doc/html/search/all_74.html | 188 + .../pin-3.13/doc/html/search/all_75.html | 50 + .../pin-3.13/doc/html/search/all_76.html | 38 + .../pin-3.13/doc/html/search/all_7e.html | 38 + .../pin-3.13/doc/html/search/classes_5f.html | 120 + .../pin-3.13/doc/html/search/classes_61.html | 134 + .../pin-3.13/doc/html/search/classes_62.html | 32 + .../pin-3.13/doc/html/search/classes_63.html | 133 + .../pin-3.13/doc/html/search/classes_64.html | 36 + .../pin-3.13/doc/html/search/classes_65.html | 26 + .../pin-3.13/doc/html/search/classes_66.html | 50 + .../pin-3.13/doc/html/search/classes_68.html | 26 + .../pin-3.13/doc/html/search/classes_69.html | 122 + .../pin-3.13/doc/html/search/classes_6b.html | 68 + .../pin-3.13/doc/html/search/classes_6c.html | 26 + .../pin-3.13/doc/html/search/classes_6d.html | 26 + .../pin-3.13/doc/html/search/classes_6f.html | 32 + .../pin-3.13/doc/html/search/classes_70.html | 91 + .../pin-3.13/doc/html/search/classes_72.html | 61 + .../pin-3.13/doc/html/search/classes_73.html | 61 + .../pin-3.13/doc/html/search/classes_74.html | 32 + .../pin-3.13/doc/html/search/classes_76.html | 26 + .../pin-3.13/doc/html/search/close.png | Bin 0 -> 273 bytes .../pin-3.13/doc/html/search/enums_61.html | 26 + .../pin-3.13/doc/html/search/enums_65.html | 44 + .../pin-3.13/doc/html/search/enums_66.html | 38 + .../pin-3.13/doc/html/search/enums_69.html | 32 + .../pin-3.13/doc/html/search/enums_6b.html | 26 + .../pin-3.13/doc/html/search/enums_6d.html | 32 + .../pin-3.13/doc/html/search/enums_70.html | 32 + .../pin-3.13/doc/html/search/enums_72.html | 56 + .../pin-3.13/doc/html/search/enums_73.html | 44 + .../pin-3.13/doc/html/search/enums_75.html | 26 + .../pin-3.13/doc/html/search/enums_76.html | 26 + .../doc/html/search/enumvalues_61.html | 32 + .../doc/html/search/enumvalues_64.html | 32 + .../doc/html/search/enumvalues_65.html | 344 + .../doc/html/search/enumvalues_66.html | 104 + .../doc/html/search/enumvalues_69.html | 74 + .../doc/html/search/enumvalues_6b.html | 50 + .../doc/html/search/enumvalues_6d.html | 32 + .../doc/html/search/enumvalues_6e.html | 26 + .../doc/html/search/enumvalues_70.html | 146 + .../doc/html/search/enumvalues_72.html | 512 + .../doc/html/search/enumvalues_73.html | 146 + .../doc/html/search/enumvalues_75.html | 32 + .../doc/html/search/functions_61.html | 118 + .../doc/html/search/functions_62.html | 146 + .../doc/html/search/functions_63.html | 132 + .../doc/html/search/functions_64.html | 63 + .../doc/html/search/functions_65.html | 89 + .../doc/html/search/functions_66.html | 80 + .../doc/html/search/functions_67.html | 65 + .../doc/html/search/functions_68.html | 41 + .../doc/html/search/functions_69.html | 1223 ++ .../doc/html/search/functions_6b.html | 44 + .../doc/html/search/functions_6c.html | 26 + .../doc/html/search/functions_6d.html | 26 + .../doc/html/search/functions_6e.html | 26 + .../doc/html/search/functions_6f.html | 32 + .../doc/html/search/functions_70.html | 1004 + .../doc/html/search/functions_72.html | 908 + .../doc/html/search/functions_73.html | 336 + .../doc/html/search/functions_74.html | 116 + .../doc/html/search/functions_75.html | 32 + .../doc/html/search/functions_76.html | 26 + .../doc/html/search/functions_7e.html | 38 + .../pin-3.13/doc/html/search/mag_sel.png | Bin 0 -> 563 bytes .../doc/html/search/namespaces_6c.html | 35 + .../pin-3.13/doc/html/search/nomatches.html | 12 + .../pin-3.13/doc/html/search/search.css | 240 + .../pin-3.13/doc/html/search/search.js | 740 + .../pin-3.13/doc/html/search/search_l.png | Bin 0 -> 604 bytes .../pin-3.13/doc/html/search/search_m.png | Bin 0 -> 158 bytes .../pin-3.13/doc/html/search/search_r.png | Bin 0 -> 612 bytes .../pin-3.13/doc/html/search/typedefs_61.html | 38 + .../pin-3.13/doc/html/search/typedefs_63.html | 32 + .../pin-3.13/doc/html/search/typedefs_64.html | 44 + .../pin-3.13/doc/html/search/typedefs_65.html | 26 + .../pin-3.13/doc/html/search/typedefs_66.html | 50 + .../pin-3.13/doc/html/search/typedefs_69.html | 44 + .../pin-3.13/doc/html/search/typedefs_6d.html | 26 + .../pin-3.13/doc/html/search/typedefs_6f.html | 26 + .../pin-3.13/doc/html/search/typedefs_70.html | 68 + .../pin-3.13/doc/html/search/typedefs_72.html | 44 + .../pin-3.13/doc/html/search/typedefs_73.html | 38 + .../pin-3.13/doc/html/search/typedefs_74.html | 80 + .../doc/html/search/variables_5f.html | 110 + .../doc/html/search/variables_61.html | 26 + .../doc/html/search/variables_69.html | 26 + .../doc/html/search/variables_6b.html | 26 + .../doc/html/search/variables_6d.html | 32 + .../doc/html/search/variables_6e.html | 26 + .../doc/html/search/variables_70.html | 32 + .../doc/html/search/variables_72.html | 68 + .../doc/html/search/variables_73.html | 26 + .../doc/html/stack-debugger-commands.png | Bin 0 -> 7078 bytes .../doc/html/stack-debugger-custom-break.png | Bin 0 -> 31884 bytes ...LSTACK_1_1CallStackInfoStruct-members.html | 99 + ...tructCALLSTACK_1_1CallStackInfoStruct.html | 114 + ..._APPLICATION__FUNCTION__PARAM-members.html | 87 + ...uctCALL__APPLICATION__FUNCTION__PARAM.html | 102 + ...TROLLER_1_1CACHELINE__COUNTER-members.html | 94 + ...tructCONTROLLER_1_1CACHELINE__COUNTER.html | 106 + ...uctCONTROLLER_1_1CHAIN__EVENT-members.html | 95 + .../structCONTROLLER_1_1CHAIN__EVENT.html | 108 + ...R_1_1CONTROL__HANDLER__PARAMS-members.html | 95 + ...ONTROLLER_1_1CONTROL__HANDLER__PARAMS.html | 108 + ...LLER_1_1CONTROL__REGION__INFO-members.html | 94 + ...ctCONTROLLER_1_1CONTROL__REGION__INFO.html | 106 + ...__SHELL_1_1STARTUP__ARGUMENTS-members.html | 99 + ...DEBUGGER__SHELL_1_1STARTUP__ARGUMENTS.html | 145 + ...structDEBUG__CONNECTION__INFO-members.html | 89 + .../html/structDEBUG__CONNECTION__INFO.html | 108 + .../doc/html/structDEBUG__MODE-members.html | 89 + .../pin-3.13/doc/html/structDEBUG__MODE.html | 123 + .../structLEVEL__BASE_1_1DECSTR-members.html | 95 + .../doc/html/structLEVEL__BASE_1_1DECSTR.html | 114 + .../structLEVEL__BASE_1_1FLTSTR-members.html | 96 + .../doc/html/structLEVEL__BASE_1_1FLTSTR.html | 116 + .../structLEVEL__BASE_1_1HEXSTR-members.html | 95 + .../doc/html/structLEVEL__BASE_1_1HEXSTR.html | 114 + ...EVEL__BASE_1_1ImageLoaderInfo-members.html | 108 + .../structLEVEL__BASE_1_1ImageLoaderInfo.html | 135 + ...1_1LINUX__LOADER__IMAGE__INFO-members.html | 96 + ...L__BASE_1_1LINUX__LOADER__IMAGE__INFO.html | 107 + ...tructLEVEL__BASE_1_1PIN__LOCK-members.html | 94 + .../html/structLEVEL__BASE_1_1PIN__LOCK.html | 108 + ...tLEVEL__BASE_1_1REGDEF__ENTRY-members.html | 101 + .../structLEVEL__BASE_1_1REGDEF__ENTRY.html | 122 + ...EL__CORE_1_1EDG__STRUCT__BASE-members.html | 105 + ...tructLEVEL__CORE_1_1EDG__STRUCT__BASE.html | 130 + ...uctLEVEL__CORE_1_1IMG__REGION-members.html | 95 + .../structLEVEL__CORE_1_1IMG__REGION.html | 110 + ...LEVEL__CORE_1_1MEM__ADDR__EXP-members.html | 105 + .../structLEVEL__CORE_1_1MEM__ADDR__EXP.html | 266 + ...LIENT_1_1IMAGE__INIT__SESSION-members.html | 118 + ...EL__PINCLIENT_1_1IMAGE__INIT__SESSION.html | 161 + ...L__PINCLIENT_1_1ImageLoadArgs-members.html | 96 + ...ructLEVEL__PINCLIENT_1_1ImageLoadArgs.html | 110 + ..._PINCLIENT_1_1OUTSIDE__TARGET-members.html | 94 + ...ctLEVEL__PINCLIENT_1_1OUTSIDE__TARGET.html | 106 + ..._1OUTSIDE__TARGET__MEM__RANGE-members.html | 94 + ...CLIENT_1_1OUTSIDE__TARGET__MEM__RANGE.html | 106 + ...NCLIENT_1_1PIN__CLIENT__MUTEX-members.html | 96 + ...EVEL__PINCLIENT_1_1PIN__CLIENT__MUTEX.html | 109 + ..._PINCLIENT_1_1SymbolDebugInfo-members.html | 95 + ...ctLEVEL__PINCLIENT_1_1SymbolDebugInfo.html | 113 + .../doc/html/structPARG__T-members.html | 88 + .../pin-3.13/doc/html/structPARG__T.html | 100 + .../html/structPIN__CODE__RANGE-members.html | 88 + .../doc/html/structPIN__CODE__RANGE.html | 104 + .../structPIN__MEM__ACCESS__INFO-members.html | 90 + .../html/structPIN__MEM__ACCESS__INFO.html | 108 + .../structPIN__MEM__TRANS__INFO-members.html | 93 + .../doc/html/structPIN__MEM__TRANS__INFO.html | 110 + ...PIN__MULTI__MEM__ACCESS__INFO-members.html | 88 + .../structPIN__MULTI__MEM__ACCESS__INFO.html | 104 + .../doc/html/structREG__INFO-members.html | 88 + .../pin-3.13/doc/html/structREG__INFO.html | 100 + .../html/struct__PinPargClass-members.html | 87 + .../doc/html/struct__PinPargClass.html | 101 + ..._PinPargClass_3_01T_01_5_01_4-members.html | 87 + .../struct__PinPargClass_3_01T_01_5_01_4.html | 101 + ..._PinPargClass_3_01T_01_6_01_4-members.html | 87 + .../struct__PinPargClass_3_01T_01_6_01_4.html | 101 + ...t__PinPargClass_3_01bool_01_4-members.html | 87 + .../struct__PinPargClass_3_01bool_01_4.html | 101 + ...t__PinPargClass_3_01char_01_4-members.html | 87 + .../struct__PinPargClass_3_01char_01_4.html | 101 + ..._PinPargClass_3_01double_01_4-members.html | 87 + .../struct__PinPargClass_3_01double_01_4.html | 101 + ...__PinPargClass_3_01float_01_4-members.html | 87 + .../struct__PinPargClass_3_01float_01_4.html | 101 + ...ct__PinPargClass_3_01int_01_4-members.html | 87 + .../struct__PinPargClass_3_01int_01_4.html | 101 + ...t__PinPargClass_3_01long_01_4-members.html | 87 + .../struct__PinPargClass_3_01long_01_4.html | 101 + ...argClass_3_01long_01long_01_4-members.html | 87 + ...ct__PinPargClass_3_01long_01long_01_4.html | 101 + ...__PinPargClass_3_01short_01_4-members.html | 87 + .../struct__PinPargClass_3_01short_01_4.html | 101 + ...gClass_3_01signed_01char_01_4-members.html | 87 + ...__PinPargClass_3_01signed_01char_01_4.html | 101 + ...lass_3_01unsigned_01char_01_4-members.html | 87 + ...PinPargClass_3_01unsigned_01char_01_4.html | 101 + ...Class_3_01unsigned_01int_01_4-members.html | 87 + ..._PinPargClass_3_01unsigned_01int_01_4.html | 101 + ...lass_3_01unsigned_01long_01_4-members.html | 87 + ...PinPargClass_3_01unsigned_01long_01_4.html | 101 + ...01unsigned_01long_01long_01_4-members.html | 87 + ...Class_3_01unsigned_01long_01long_01_4.html | 101 + ...ass_3_01unsigned_01short_01_4-members.html | 87 + ...inPargClass_3_01unsigned_01short_01_4.html | 101 + ...t__PinPargClass_3_01void_01_4-members.html | 87 + .../struct__PinPargClass_3_01void_01_4.html | 101 + .../html/struct__tcpClientStruct-members.html | 88 + .../doc/html/struct__tcpClientStruct.html | 104 + .../html/struct__tcpServerStruct-members.html | 87 + .../doc/html/struct__tcpServerStruct.html | 102 + .../pintool/pin-3.13/doc/html/tab_a.png | Bin 0 -> 140 bytes .../pintool/pin-3.13/doc/html/tab_b.png | Bin 0 -> 178 bytes .../pintool/pin-3.13/doc/html/tab_h.png | Bin 0 -> 192 bytes .../pintool/pin-3.13/doc/html/tab_s.png | Bin 0 -> 189 bytes src/tracer/pintool/pin-3.13/doc/html/tabs.css | 59 + .../html/unionLEVEL__CORE_1_1VAL-members.html | 134 + .../doc/html/unionLEVEL__CORE_1_1VAL.html | 195 + .../unionPIN__MEM__TRANS__FLAGS-members.html | 92 + .../doc/html/unionPIN__MEM__TRANS__FLAGS.html | 109 + .../doc/html/unionPIN__REGISTER-members.html | 96 + .../pin-3.13/doc/html/unionPIN__REGISTER.html | 120 + .../pin-3.13/extras/components/include/asm.h | 144 + .../extras/components/include/asm/gas-x86.h | 96 + .../extras/components/include/asm/masm-x86.h | 57 + .../extras/components/include/asm/nasm-x86.h | 76 + .../components/include/asm/unix-intel64.h | 36 + .../components/include/asm/windows-intel64.h | 32 + .../extras/components/include/atomic.hpp | 60 + .../components/include/atomic/config.hpp | 60 + .../include/atomic/exponential-backoff.hpp | 111 + .../components/include/atomic/fixed-lifo.hpp | 282 + .../include/atomic/fixed-multimap.hpp | 405 + .../include/atomic/fixed-multiset.hpp | 149 + .../components/include/atomic/idset.hpp | 158 + .../components/include/atomic/lifo-ctr.hpp | 283 + .../components/include/atomic/lifo-ptr.hpp | 378 + .../components/include/atomic/nullstats.hpp | 44 + .../components/include/atomic/ops-enum.hpp | 66 + .../extras/components/include/atomic/ops.hpp | 198 + .../include/atomic/private/backoff-impl.hpp | 23 + .../atomic/private/ia32/ops-impl-ia32-asm.hpp | 33 + .../include/atomic/private/ia32/ops-impl.hpp | 178 + .../private/intel64/ops-impl-intel64-asm.hpp | 34 + .../atomic/private/intel64/ops-impl.hpp | 172 + .../atomic/private/ops-common-impl.hpp | 93 + .../components/include/debugger-protocol.hpp | 2014 ++ .../include/debugger-protocol/event-linux.hpp | 210 + .../include/debugger-protocol/event-mac.hpp | 142 + .../debugger-protocol/event-windows.hpp | 96 + .../include/debugger-protocol/forward.hpp | 31 + .../include/debugger-protocol/image-linux.hpp | 83 + .../include/debugger-protocol/image-mac.hpp | 61 + .../debugger-protocol/image-windows.hpp | 70 + .../regs-gdb-linux-avx32.hpp | 157 + .../regs-gdb-linux-avx512-32.hpp | 189 + .../regs-gdb-linux-avx512-64.hpp | 349 + .../regs-gdb-linux-avx64.hpp | 205 + .../debugger-protocol/regs-gdb-linux-ia32.hpp | 141 + .../regs-gdb-linux-intel64.hpp | 173 + .../debugger-protocol/regs-gdb-mac-ia32.hpp | 155 + .../regs-gdb-mac-intel64.hpp | 203 + .../debugger-protocol/regs-windows-avx32.hpp | 157 + .../regs-windows-avx512-32.hpp | 189 + .../regs-windows-avx512-64.hpp | 349 + .../debugger-protocol/regs-windows-avx64.hpp | 205 + .../debugger-protocol/regs-windows-ia32.hpp | 141 + .../regs-windows-intel64.hpp | 173 + .../debugger-protocol/thread-linux.hpp | 53 + .../include/debugger-protocol/thread-mac.hpp | 53 + .../debugger-protocol/thread-windows.hpp | 59 + .../extras/components/include/types.h | 208 + .../extras/components/include/util.hpp | 41 + .../extras/components/include/util/data.hpp | 606 + .../components/include/util/intel-fp.hpp | 245 + .../extras/components/include/util/locker.hpp | 296 + .../components/include/util/numberbits.hpp | 80 + .../include/util/quote-argument-ms.hpp | 164 + .../extras/components/include/util/range.hpp | 125 + .../components/include/util/regvalue.hpp | 530 + .../extras/components/include/util/round.hpp | 145 + .../components/include/util/scoped-array.hpp | 111 + .../components/include/util/scoped-ptr.hpp | 126 + .../components/include/util/singleton.hpp | 81 + .../components/include/util/strings.hpp | 217 + .../extras/crt/doc/html/annotated.html | 93 + .../pin-3.13/extras/crt/doc/html/bc_s.png | Bin 0 -> 677 bytes .../pin-3.13/extras/crt/doc/html/classes.html | 90 + .../pin-3.13/extras/crt/doc/html/closed.png | Bin 0 -> 126 bytes .../pin-3.13/extras/crt/doc/html/doxygen.css | 835 + .../pin-3.13/extras/crt/doc/html/doxygen.png | Bin 0 -> 3942 bytes .../extras/crt/doc/html/functions.html | 120 + .../extras/crt/doc/html/functions_vars.html | 120 + .../crt/doc/html/group__OS__APIS__DEF.html | 201 + .../crt/doc/html/group__OS__APIS__FILE.html | 1547 ++ .../crt/doc/html/group__OS__APIS__HOST.html | 403 + .../crt/doc/html/group__OS__APIS__IPC.html | 742 + .../crt/doc/html/group__OS__APIS__MEMORY.html | 542 + .../crt/doc/html/group__OS__APIS__MUTEX.html | 667 + .../doc/html/group__OS__APIS__PIN__TLS.html | 464 + .../doc/html/group__OS__APIS__PROCESS.html | 587 + .../doc/html/group__OS__APIS__RW__LOCK.html | 341 + .../doc/html/group__OS__APIS__SIGNALS.html | 329 + .../crt/doc/html/group__OS__APIS__THREAD.html | 465 + .../group__OS__APIS__THREAD__MANAGEMENT.html | 140 + .../crt/doc/html/group__OS__APIS__TIME.html | 169 + .../crt/doc/html/group__OS__APIS__TYPES.html | 208 + .../pin-3.13/extras/crt/doc/html/index.html | 163 + .../pin-3.13/extras/crt/doc/html/installdox | 112 + .../pin-3.13/extras/crt/doc/html/jquery.js | 54 + .../pin-3.13/extras/crt/doc/html/modules.html | 92 + .../pin-3.13/extras/crt/doc/html/nav_f.png | Bin 0 -> 159 bytes .../pin-3.13/extras/crt/doc/html/nav_h.png | Bin 0 -> 97 bytes .../pin-3.13/extras/crt/doc/html/open.png | Bin 0 -> 118 bytes .../extras/crt/doc/html/search/all_5f.html | 52 + .../extras/crt/doc/html/search/all_62.html | 26 + .../extras/crt/doc/html/search/all_67.html | 26 + .../extras/crt/doc/html/search/all_6b.html | 25 + .../extras/crt/doc/html/search/all_6d.html | 26 + .../extras/crt/doc/html/search/all_6f.html | 36 + .../extras/crt/doc/html/search/all_70.html | 26 + .../extras/crt/doc/html/search/all_73.html | 43 + .../extras/crt/doc/html/search/all_74.html | 26 + .../crt/doc/html/search/classes_5f.html | 40 + .../crt/doc/html/search/classes_6b.html | 25 + .../crt/doc/html/search/classes_6f.html | 30 + .../crt/doc/html/search/classes_73.html | 25 + .../extras/crt/doc/html/search/close.png | Bin 0 -> 273 bytes .../extras/crt/doc/html/search/mag_sel.png | Bin 0 -> 563 bytes .../extras/crt/doc/html/search/nomatches.html | 12 + .../extras/crt/doc/html/search/search.css | 240 + .../extras/crt/doc/html/search/search.js | 730 + .../extras/crt/doc/html/search/search_l.png | Bin 0 -> 604 bytes .../extras/crt/doc/html/search/search_m.png | Bin 0 -> 158 bytes .../extras/crt/doc/html/search/search_r.png | Bin 0 -> 612 bytes .../crt/doc/html/search/variables_5f.html | 32 + .../crt/doc/html/search/variables_62.html | 26 + .../crt/doc/html/search/variables_67.html | 26 + .../crt/doc/html/search/variables_6d.html | 26 + .../crt/doc/html/search/variables_6f.html | 26 + .../crt/doc/html/search/variables_70.html | 26 + .../crt/doc/html/search/variables_73.html | 38 + .../crt/doc/html/search/variables_74.html | 26 + ...ctOS__APIS__RW__LOCK__IMPL__T-members.html | 90 + .../structOS__APIS__RW__LOCK__IMPL__T.html | 110 + ...MEMORY__AT__ADDR__INFORMATION-members.html | 89 + ...ructOS__MEMORY__AT__ADDR__INFORMATION.html | 108 + .../crt/doc/html/structSIGACTION-members.html | 91 + .../extras/crt/doc/html/structSIGACTION.html | 110 + ...struct__OS__APIS__MUTEX__TYPE-members.html | 90 + .../html/struct__OS__APIS__MUTEX__TYPE.html | 115 + .../struct__OS__FILE__UNIQUE__ID-members.html | 85 + .../html/struct__OS__FILE__UNIQUE__ID.html | 100 + .../struct__OS__RETURN__CODE-members.html | 86 + .../doc/html/struct__OS__RETURN__CODE.html | 102 + ...ruct__OS__RETURN__CODE__POSIX-members.html | 86 + .../html/struct__OS__RETURN__CODE__POSIX.html | 98 + .../html/structkernel__sigaction-members.html | 88 + .../crt/doc/html/structkernel__sigaction.html | 102 + .../pin-3.13/extras/crt/doc/html/tab_a.png | Bin 0 -> 140 bytes .../pin-3.13/extras/crt/doc/html/tab_b.png | Bin 0 -> 178 bytes .../pin-3.13/extras/crt/doc/html/tab_h.png | Bin 0 -> 192 bytes .../pin-3.13/extras/crt/doc/html/tab_s.png | Bin 0 -> 189 bytes .../pin-3.13/extras/crt/doc/html/tabs.css | 59 + .../pin-3.13/extras/crt/include/alloca.h | 62 + .../extras/crt/include/amd64/machine/fenv.h | 95 + .../extras/crt/include/android/api-level.h | 38 + .../extras/crt/include/android/dlext.h | 77 + .../crt/include/android/set_abort_message.h | 40 + .../pintool/pin-3.13/extras/crt/include/ar.h | 66 + .../extras/crt/include/arch-x86/machine/asm.h | 54 + .../include/arch-x86/machine/elf_machdep.h | 64 + .../crt/include/arch-x86/machine/endian.h | 61 + .../crt/include/arch-x86/machine/exec.h | 51 + .../crt/include/arch-x86/machine/setjmp.h | 31 + .../crt/include/arch-x86_64/machine/asm.h | 45 + .../include/arch-x86_64/machine/elf_machdep.h | 57 + .../crt/include/arch-x86_64/machine/endian.h | 61 + .../crt/include/arch-x86_64/machine/exec.h | 20 + .../crt/include/arch-x86_64/machine/fpu.h | 89 + .../crt/include/arch-x86_64/machine/setjmp.h | 58 + .../pin-3.13/extras/crt/include/arpa/inet.h | 52 + .../extras/crt/include/arpa/nameser.h | 668 + .../extras/crt/include/arpa/nameser_compat.h | 253 + .../pin-3.13/extras/crt/include/arpa/telnet.h | 316 + .../pin-3.13/extras/crt/include/assert.h | 93 + .../crt/include/baresyscall/baresyscall.h | 63 + .../baresyscall/ia32-linux/baresyscall.h | 48 + .../baresyscall/intel64-linux/baresyscall.h | 39 + .../include/baresyscall/linux-baresyscall.h | 66 + .../crt/include/baresyscall/syscalltypes.h | 29 + .../include/baresyscall/unix-baresyscall.h | 58 + .../pin-3.13/extras/crt/include/byteswap.h | 38 + .../pin-3.13/extras/crt/include/complex.h | 111 + .../pin-3.13/extras/crt/include/ctype.h | 122 + .../pin-3.13/extras/crt/include/dirent.h | 104 + .../pin-3.13/extras/crt/include/dlfcn.h | 132 + .../pintool/pin-3.13/extras/crt/include/elf.h | 67 + .../pin-3.13/extras/crt/include/endian.h | 33 + .../pintool/pin-3.13/extras/crt/include/err.h | 74 + .../pin-3.13/extras/crt/include/errno.h | 51 + .../pin-3.13/extras/crt/include/execinfo.h | 21 + .../pin-3.13/extras/crt/include/fcntl.h | 160 + .../pin-3.13/extras/crt/include/features.h | 35 + .../pin-3.13/extras/crt/include/fenv.h | 90 + .../pin-3.13/extras/crt/include/fnmatch.h | 52 + .../extras/crt/include/freebsd/include/elf.h | 55 + .../freebsd/sys/compat/linux/linux_misc.h | 154 + .../crt/include/freebsd/sys/sys/elf32.h | 278 + .../crt/include/freebsd/sys/sys/elf64.h | 282 + .../crt/include/freebsd/sys/sys/elf_common.h | 1361 ++ .../crt/include/freebsd/sys/x86/include/elf.h | 132 + .../pintool/pin-3.13/extras/crt/include/fts.h | 125 + .../pintool/pin-3.13/extras/crt/include/ftw.h | 65 + .../pin-3.13/extras/crt/include/getopt.h | 78 + .../pintool/pin-3.13/extras/crt/include/grp.h | 73 + .../extras/crt/include/i387/machine/fenv.h | 69 + .../pin-3.13/extras/crt/include/inttypes.h | 267 + .../include/kernel/uapi/asm-generic/auxvec.h | 21 + .../kernel/uapi/asm-generic/bitsperlong.h | 25 + .../kernel/uapi/asm-generic/errno-base.h | 64 + .../include/kernel/uapi/asm-generic/errno.h | 146 + .../include/kernel/uapi/asm-generic/fcntl.h | 206 + .../include/kernel/uapi/asm-generic/int-l64.h | 35 + .../kernel/uapi/asm-generic/int-ll64.h | 41 + .../include/kernel/uapi/asm-generic/ioctl.h | 75 + .../include/kernel/uapi/asm-generic/ioctls.h | 131 + .../include/kernel/uapi/asm-generic/ipcbuf.h | 38 + .../kernel/uapi/asm-generic/kvm_para.h | 18 + .../kernel/uapi/asm-generic/mman-common.h | 80 + .../include/kernel/uapi/asm-generic/mman.h | 55 + .../include/kernel/uapi/asm-generic/msgbuf.h | 50 + .../include/kernel/uapi/asm-generic/param.h | 33 + .../include/kernel/uapi/asm-generic/poll.h | 59 + .../kernel/uapi/asm-generic/posix_types.h | 124 + .../kernel/uapi/asm-generic/resource.h | 97 + .../include/kernel/uapi/asm-generic/sembuf.h | 40 + .../include/kernel/uapi/asm-generic/setup.h | 23 + .../include/kernel/uapi/asm-generic/shmbuf.h | 63 + .../kernel/uapi/asm-generic/shmparam.h | 23 + .../include/kernel/uapi/asm-generic/siginfo.h | 280 + .../kernel/uapi/asm-generic/signal-defs.h | 45 + .../include/kernel/uapi/asm-generic/signal.h | 131 + .../include/kernel/uapi/asm-generic/socket.h | 148 + .../include/kernel/uapi/asm-generic/sockios.h | 30 + .../include/kernel/uapi/asm-generic/stat.h | 81 + .../include/kernel/uapi/asm-generic/statfs.h | 91 + .../include/kernel/uapi/asm-generic/swab.h | 29 + .../kernel/uapi/asm-generic/termbits.h | 238 + .../include/kernel/uapi/asm-generic/termios.h | 60 + .../include/kernel/uapi/asm-generic/types.h | 23 + .../kernel/uapi/asm-generic/ucontext.h | 30 + .../include/kernel/uapi/asm-generic/unistd.h | 519 + .../include/kernel/uapi/asm-x86/asm/a.out.h | 39 + .../include/kernel/uapi/asm-x86/asm/auxvec.h | 41 + .../kernel/uapi/asm-x86/asm/bitsperlong.h | 29 + .../include/kernel/uapi/asm-x86/asm/boot.h | 25 + .../kernel/uapi/asm-x86/asm/bootparam.h | 189 + .../kernel/uapi/asm-x86/asm/byteorder.h | 23 + .../kernel/uapi/asm-x86/asm/debugreg.h | 65 + .../include/kernel/uapi/asm-x86/asm/e820.h | 56 + .../include/kernel/uapi/asm-x86/asm/errno.h | 19 + .../include/kernel/uapi/asm-x86/asm/fcntl.h | 19 + .../kernel/uapi/asm-x86/asm/hw_breakpoint.h | 18 + .../include/kernel/uapi/asm-x86/asm/hyperv.h | 148 + .../include/kernel/uapi/asm-x86/asm/ioctl.h | 19 + .../include/kernel/uapi/asm-x86/asm/ioctls.h | 19 + .../include/kernel/uapi/asm-x86/asm/ipcbuf.h | 19 + .../crt/include/kernel/uapi/asm-x86/asm/ist.h | 30 + .../crt/include/kernel/uapi/asm-x86/asm/kvm.h | 363 + .../kernel/uapi/asm-x86/asm/kvm_para.h | 100 + .../crt/include/kernel/uapi/asm-x86/asm/ldt.h | 48 + .../crt/include/kernel/uapi/asm-x86/asm/mce.h | 54 + .../include/kernel/uapi/asm-x86/asm/mman.h | 26 + .../include/kernel/uapi/asm-x86/asm/msgbuf.h | 19 + .../kernel/uapi/asm-x86/asm/msr-index.h | 564 + .../crt/include/kernel/uapi/asm-x86/asm/msr.h | 30 + .../include/kernel/uapi/asm-x86/asm/mtrr.h | 101 + .../include/kernel/uapi/asm-x86/asm/param.h | 19 + .../kernel/uapi/asm-x86/asm/perf_regs.h | 56 + .../include/kernel/uapi/asm-x86/asm/poll.h | 19 + .../kernel/uapi/asm-x86/asm/posix_types.h | 26 + .../kernel/uapi/asm-x86/asm/posix_types_32.h | 34 + .../kernel/uapi/asm-x86/asm/posix_types_64.h | 29 + .../kernel/uapi/asm-x86/asm/posix_types_x32.h | 26 + .../include/kernel/uapi/asm-x86/asm/prctl.h | 26 + .../kernel/uapi/asm-x86/asm/processor-flags.h | 169 + .../kernel/uapi/asm-x86/asm/ptrace-abi.h | 101 + .../include/kernel/uapi/asm-x86/asm/ptrace.h | 84 + .../kernel/uapi/asm-x86/asm/resource.h | 19 + .../include/kernel/uapi/asm-x86/asm/sembuf.h | 34 + .../include/kernel/uapi/asm-x86/asm/setup.h | 18 + .../include/kernel/uapi/asm-x86/asm/shmbuf.h | 19 + .../kernel/uapi/asm-x86/asm/sigcontext.h | 208 + .../kernel/uapi/asm-x86/asm/sigcontext32.h | 96 + .../include/kernel/uapi/asm-x86/asm/siginfo.h | 34 + .../include/kernel/uapi/asm-x86/asm/signal.h | 147 + .../include/kernel/uapi/asm-x86/asm/socket.h | 19 + .../include/kernel/uapi/asm-x86/asm/sockios.h | 19 + .../include/kernel/uapi/asm-x86/asm/stat.h | 134 + .../include/kernel/uapi/asm-x86/asm/statfs.h | 24 + .../crt/include/kernel/uapi/asm-x86/asm/svm.h | 114 + .../include/kernel/uapi/asm-x86/asm/swab.h | 30 + .../kernel/uapi/asm-x86/asm/termbits.h | 19 + .../include/kernel/uapi/asm-x86/asm/termios.h | 19 + .../include/kernel/uapi/asm-x86/asm/types.h | 23 + .../kernel/uapi/asm-x86/asm/ucontext.h | 24 + .../include/kernel/uapi/asm-x86/asm/unistd.h | 31 + .../kernel/uapi/asm-x86/asm/unistd_32.h | 458 + .../kernel/uapi/asm-x86/asm/unistd_64.h | 416 + .../kernel/uapi/asm-x86/asm/unistd_x32.h | 403 + .../include/kernel/uapi/asm-x86/asm/vm86.h | 115 + .../crt/include/kernel/uapi/asm-x86/asm/vmx.h | 78 + .../kernel/uapi/asm-x86/asm/vsyscall.h | 34 + .../crt/include/kernel/uapi/linux/a.out.h | 226 + .../crt/include/kernel/uapi/linux/acct.h | 105 + .../crt/include/kernel/uapi/linux/adb.h | 48 + .../crt/include/kernel/uapi/linux/adfs_fs.h | 63 + .../kernel/uapi/linux/affs_hardblocks.h | 91 + .../crt/include/kernel/uapi/linux/agpgart.h | 98 + .../crt/include/kernel/uapi/linux/aio_abi.h | 73 + .../include/kernel/uapi/linux/android_alarm.h | 58 + .../crt/include/kernel/uapi/linux/apm_bios.h | 124 + .../crt/include/kernel/uapi/linux/arcfb.h | 24 + .../crt/include/kernel/uapi/linux/ashmem.h | 49 + .../crt/include/kernel/uapi/linux/atalk.h | 56 + .../crt/include/kernel/uapi/linux/atm.h | 178 + .../crt/include/kernel/uapi/linux/atm_eni.h | 29 + .../crt/include/kernel/uapi/linux/atm_he.h | 34 + .../include/kernel/uapi/linux/atm_idt77105.h | 35 + .../include/kernel/uapi/linux/atm_nicstar.h | 48 + .../crt/include/kernel/uapi/linux/atm_tcp.h | 50 + .../crt/include/kernel/uapi/linux/atm_zatm.h | 53 + .../crt/include/kernel/uapi/linux/atmapi.h | 29 + .../crt/include/kernel/uapi/linux/atmarp.h | 48 + .../crt/include/kernel/uapi/linux/atmbr2684.h | 98 + .../crt/include/kernel/uapi/linux/atmclip.h | 30 + .../crt/include/kernel/uapi/linux/atmdev.h | 138 + .../crt/include/kernel/uapi/linux/atmioc.h | 49 + .../crt/include/kernel/uapi/linux/atmlec.h | 103 + .../crt/include/kernel/uapi/linux/atmmpc.h | 136 + .../crt/include/kernel/uapi/linux/atmppp.h | 31 + .../crt/include/kernel/uapi/linux/atmsap.h | 124 + .../crt/include/kernel/uapi/linux/atmsvc.h | 48 + .../crt/include/kernel/uapi/linux/audit.h | 394 + .../crt/include/kernel/uapi/linux/auto_fs.h | 64 + .../crt/include/kernel/uapi/linux/auto_fs4.h | 104 + .../crt/include/kernel/uapi/linux/auxvec.h | 51 + .../crt/include/kernel/uapi/linux/ax25.h | 131 + .../crt/include/kernel/uapi/linux/b1lli.h | 75 + .../crt/include/kernel/uapi/linux/baycom.h | 36 + .../crt/include/kernel/uapi/linux/bcache.h | 209 + .../include/kernel/uapi/linux/bcm933xx_hcs.h | 39 + .../crt/include/kernel/uapi/linux/bfs_fs.h | 83 + .../crt/include/kernel/uapi/linux/binder.h | 190 + .../crt/include/kernel/uapi/linux/binfmts.h | 28 + .../crt/include/kernel/uapi/linux/blkpg.h | 48 + .../include/kernel/uapi/linux/blktrace_api.h | 149 + .../crt/include/kernel/uapi/linux/bpqether.h | 49 + .../crt/include/kernel/uapi/linux/bsg.h | 73 + .../crt/include/kernel/uapi/linux/btrfs.h | 489 + .../kernel/uapi/linux/byteorder/big_endian.h | 81 + .../uapi/linux/byteorder/little_endian.h | 81 + .../kernel/uapi/linux/caif/caif_socket.h | 100 + .../include/kernel/uapi/linux/caif/if_caif.h | 35 + .../crt/include/kernel/uapi/linux/can.h | 88 + .../crt/include/kernel/uapi/linux/can/bcm.h | 66 + .../crt/include/kernel/uapi/linux/can/error.h | 93 + .../crt/include/kernel/uapi/linux/can/gw.h | 110 + .../include/kernel/uapi/linux/can/netlink.h | 106 + .../crt/include/kernel/uapi/linux/can/raw.h | 33 + .../include/kernel/uapi/linux/capability.h | 121 + .../crt/include/kernel/uapi/linux/capi.h | 89 + .../include/kernel/uapi/linux/cciss_defs.h | 148 + .../include/kernel/uapi/linux/cciss_ioctl.h | 100 + .../crt/include/kernel/uapi/linux/cdrom.h | 830 + .../include/kernel/uapi/linux/cgroupstats.h | 56 + .../crt/include/kernel/uapi/linux/chio.h | 143 + .../kernel/uapi/linux/cifs/cifs_mount.h | 28 + .../crt/include/kernel/uapi/linux/cm4000_cs.h | 63 + .../crt/include/kernel/uapi/linux/cn_proc.h | 111 + .../crt/include/kernel/uapi/linux/coda.h | 626 + .../include/kernel/uapi/linux/coda_psdev.h | 43 + .../crt/include/kernel/uapi/linux/coff.h | 243 + .../crt/include/kernel/uapi/linux/compiler.h | 18 + .../crt/include/kernel/uapi/linux/connector.h | 64 + .../crt/include/kernel/uapi/linux/const.h | 34 + .../crt/include/kernel/uapi/linux/cramfs_fs.h | 68 + .../crt/include/kernel/uapi/linux/cuda.h | 45 + .../crt/include/kernel/uapi/linux/cyclades.h | 378 + .../crt/include/kernel/uapi/linux/cycx_cfm.h | 74 + .../crt/include/kernel/uapi/linux/dcbnl.h | 386 + .../crt/include/kernel/uapi/linux/dccp.h | 205 + .../crt/include/kernel/uapi/linux/dlm.h | 40 + .../include/kernel/uapi/linux/dlm_device.h | 104 + .../include/kernel/uapi/linux/dlm_netlink.h | 68 + .../crt/include/kernel/uapi/linux/dlm_plock.h | 54 + .../include/kernel/uapi/linux/dlmconstants.h | 59 + .../crt/include/kernel/uapi/linux/dm-ioctl.h | 148 + .../kernel/uapi/linux/dm-log-userspace.h | 61 + .../extras/crt/include/kernel/uapi/linux/dn.h | 138 + .../crt/include/kernel/uapi/linux/dqblk_xfs.h | 158 + .../crt/include/kernel/uapi/linux/dvb/audio.h | 104 + .../crt/include/kernel/uapi/linux/dvb/ca.h | 81 + .../crt/include/kernel/uapi/linux/dvb/dmx.h | 145 + .../include/kernel/uapi/linux/dvb/frontend.h | 521 + .../crt/include/kernel/uapi/linux/dvb/net.h | 43 + .../crt/include/kernel/uapi/linux/dvb/osd.h | 100 + .../include/kernel/uapi/linux/dvb/version.h | 24 + .../crt/include/kernel/uapi/linux/dvb/video.h | 208 + .../crt/include/kernel/uapi/linux/edd.h | 201 + .../crt/include/kernel/uapi/linux/efs_fs_sb.h | 71 + .../crt/include/kernel/uapi/linux/elf-em.h | 66 + .../crt/include/kernel/uapi/linux/elf-fdpic.h | 38 + .../crt/include/kernel/uapi/linux/elfcore.h | 85 + .../crt/include/kernel/uapi/linux/errno.h | 19 + .../crt/include/kernel/uapi/linux/errqueue.h | 43 + .../crt/include/kernel/uapi/linux/ethtool.h | 683 + .../crt/include/kernel/uapi/linux/eventpoll.h | 44 + .../crt/include/kernel/uapi/linux/fadvise.h | 35 + .../crt/include/kernel/uapi/linux/falloc.h | 25 + .../crt/include/kernel/uapi/linux/fanotify.h | 88 + .../extras/crt/include/kernel/uapi/linux/fb.h | 399 + .../crt/include/kernel/uapi/linux/fcntl.h | 48 + .../extras/crt/include/kernel/uapi/linux/fd.h | 254 + .../crt/include/kernel/uapi/linux/fdreg.h | 121 + .../crt/include/kernel/uapi/linux/fib_rules.h | 91 + .../crt/include/kernel/uapi/linux/fiemap.h | 64 + .../crt/include/kernel/uapi/linux/filter.h | 130 + .../include/kernel/uapi/linux/firewire-cdev.h | 333 + .../kernel/uapi/linux/firewire-constants.h | 88 + .../crt/include/kernel/uapi/linux/flat.h | 48 + .../extras/crt/include/kernel/uapi/linux/fs.h | 186 + .../kernel/uapi/linux/fsl_hypervisor.h | 85 + .../crt/include/kernel/uapi/linux/fuse.h | 574 + .../crt/include/kernel/uapi/linux/futex.h | 91 + .../crt/include/kernel/uapi/linux/gameport.h | 38 + .../crt/include/kernel/uapi/linux/gen_stats.h | 69 + .../crt/include/kernel/uapi/linux/genetlink.h | 95 + .../kernel/uapi/linux/genwqe/genwqe_card.h | 331 + .../include/kernel/uapi/linux/gfs2_ondisk.h | 368 + .../include/kernel/uapi/linux/gigaset_dev.h | 33 + .../crt/include/kernel/uapi/linux/hash_info.h | 46 + .../crt/include/kernel/uapi/linux/hdlc.h | 24 + .../include/kernel/uapi/linux/hdlc/ioctl.h | 99 + .../crt/include/kernel/uapi/linux/hdlcdrv.h | 101 + .../crt/include/kernel/uapi/linux/hdreg.h | 483 + .../crt/include/kernel/uapi/linux/hid.h | 39 + .../crt/include/kernel/uapi/linux/hiddev.h | 153 + .../crt/include/kernel/uapi/linux/hidraw.h | 48 + .../crt/include/kernel/uapi/linux/hpet.h | 40 + .../include/kernel/uapi/linux/hsi/hsi_char.h | 59 + .../include/kernel/uapi/linux/hsr_netlink.h | 54 + .../include/kernel/uapi/linux/hw_breakpoint.h | 45 + .../crt/include/kernel/uapi/linux/hysdn_if.h | 34 + .../crt/include/kernel/uapi/linux/i2c-dev.h | 49 + .../crt/include/kernel/uapi/linux/i2c.h | 91 + .../crt/include/kernel/uapi/linux/i2o-dev.h | 391 + .../crt/include/kernel/uapi/linux/i8k.h | 48 + .../crt/include/kernel/uapi/linux/icmp.h | 94 + .../crt/include/kernel/uapi/linux/icmpv6.h | 164 + .../extras/crt/include/kernel/uapi/linux/if.h | 211 + .../crt/include/kernel/uapi/linux/if_addr.h | 73 + .../include/kernel/uapi/linux/if_addrlabel.h | 40 + .../crt/include/kernel/uapi/linux/if_alg.h | 43 + .../crt/include/kernel/uapi/linux/if_arcnet.h | 96 + .../crt/include/kernel/uapi/linux/if_arp.h | 145 + .../include/kernel/uapi/linux/if_bonding.h | 85 + .../crt/include/kernel/uapi/linux/if_bridge.h | 200 + .../include/kernel/uapi/linux/if_cablemodem.h | 29 + .../crt/include/kernel/uapi/linux/if_eql.h | 50 + .../crt/include/kernel/uapi/linux/if_ether.h | 133 + .../crt/include/kernel/uapi/linux/if_fc.h | 43 + .../crt/include/kernel/uapi/linux/if_fddi.h | 94 + .../crt/include/kernel/uapi/linux/if_frad.h | 96 + .../crt/include/kernel/uapi/linux/if_hippi.h | 108 + .../include/kernel/uapi/linux/if_infiniband.h | 23 + .../crt/include/kernel/uapi/linux/if_link.h | 508 + .../crt/include/kernel/uapi/linux/if_ltalk.h | 25 + .../crt/include/kernel/uapi/linux/if_packet.h | 261 + .../crt/include/kernel/uapi/linux/if_phonet.h | 25 + .../crt/include/kernel/uapi/linux/if_plip.h | 33 + .../crt/include/kernel/uapi/linux/if_ppp.h | 19 + .../include/kernel/uapi/linux/if_pppol2tp.h | 74 + .../include/kernel/uapi/linux/if_pppolac.h | 34 + .../include/kernel/uapi/linux/if_pppopns.h | 33 + .../crt/include/kernel/uapi/linux/if_pppox.h | 133 + .../crt/include/kernel/uapi/linux/if_slip.h | 35 + .../crt/include/kernel/uapi/linux/if_team.h | 90 + .../crt/include/kernel/uapi/linux/if_tun.h | 99 + .../crt/include/kernel/uapi/linux/if_tunnel.h | 139 + .../crt/include/kernel/uapi/linux/if_vlan.h | 69 + .../crt/include/kernel/uapi/linux/if_x25.h | 28 + .../crt/include/kernel/uapi/linux/igmp.h | 113 + .../extras/crt/include/kernel/uapi/linux/in.h | 260 + .../crt/include/kernel/uapi/linux/in6.h | 209 + .../crt/include/kernel/uapi/linux/in_route.h | 45 + .../crt/include/kernel/uapi/linux/inet_diag.h | 138 + .../crt/include/kernel/uapi/linux/inotify.h | 65 + .../crt/include/kernel/uapi/linux/input.h | 1045 + .../crt/include/kernel/uapi/linux/ioctl.h | 23 + .../crt/include/kernel/uapi/linux/ion.h | 71 + .../crt/include/kernel/uapi/linux/ioprio.h | 46 + .../extras/crt/include/kernel/uapi/linux/ip.h | 184 + .../include/kernel/uapi/linux/ip6_tunnel.h | 65 + .../crt/include/kernel/uapi/linux/ip_vs.h | 331 + .../crt/include/kernel/uapi/linux/ipc.h | 91 + .../crt/include/kernel/uapi/linux/ipmi.h | 165 + .../include/kernel/uapi/linux/ipmi_msgdefs.h | 99 + .../crt/include/kernel/uapi/linux/ipsec.h | 63 + .../crt/include/kernel/uapi/linux/ipv6.h | 157 + .../include/kernel/uapi/linux/ipv6_route.h | 63 + .../crt/include/kernel/uapi/linux/ipx.h | 94 + .../crt/include/kernel/uapi/linux/irda.h | 235 + .../crt/include/kernel/uapi/linux/irqnr.h | 18 + .../crt/include/kernel/uapi/linux/isdn.h | 151 + .../include/kernel/uapi/linux/isdn/capicmd.h | 115 + .../include/kernel/uapi/linux/isdn_divertif.h | 33 + .../crt/include/kernel/uapi/linux/isdn_ppp.h | 73 + .../crt/include/kernel/uapi/linux/isdnif.h | 53 + .../crt/include/kernel/uapi/linux/iso_fs.h | 188 + .../crt/include/kernel/uapi/linux/ivtv.h | 45 + .../crt/include/kernel/uapi/linux/ivtvfb.h | 31 + .../crt/include/kernel/uapi/linux/ixjuser.h | 505 + .../crt/include/kernel/uapi/linux/jffs2.h | 206 + .../crt/include/kernel/uapi/linux/joystick.h | 108 + .../extras/crt/include/kernel/uapi/linux/kd.h | 198 + .../crt/include/kernel/uapi/linux/kdev_t.h | 25 + .../kernel/uapi/linux/kernel-page-flags.h | 50 + .../crt/include/kernel/uapi/linux/kernel.h | 25 + .../include/kernel/uapi/linux/kernelcapi.h | 48 + .../crt/include/kernel/uapi/linux/kexec.h | 50 + .../crt/include/kernel/uapi/linux/keyboard.h | 536 + .../crt/include/kernel/uapi/linux/keychord.h | 31 + .../crt/include/kernel/uapi/linux/keyctl.h | 71 + .../crt/include/kernel/uapi/linux/kvm.h | 1014 + .../crt/include/kernel/uapi/linux/kvm_para.h | 34 + .../crt/include/kernel/uapi/linux/l2tp.h | 159 + .../include/kernel/uapi/linux/libc-compat.h | 53 + .../crt/include/kernel/uapi/linux/limits.h | 38 + .../crt/include/kernel/uapi/linux/llc.h | 96 + .../crt/include/kernel/uapi/linux/loop.h | 96 + .../extras/crt/include/kernel/uapi/linux/lp.h | 69 + .../crt/include/kernel/uapi/linux/magic.h | 98 + .../crt/include/kernel/uapi/linux/major.h | 198 + .../kernel/uapi/linux/map_to_7segment.h | 54 + .../crt/include/kernel/uapi/linux/matroxfb.h | 56 + .../crt/include/kernel/uapi/linux/mdio.h | 276 + .../crt/include/kernel/uapi/linux/media.h | 128 + .../crt/include/kernel/uapi/linux/mei.h | 38 + .../crt/include/kernel/uapi/linux/mempolicy.h | 61 + .../crt/include/kernel/uapi/linux/meye.h | 43 + .../include/kernel/uapi/linux/mic_common.h | 114 + .../crt/include/kernel/uapi/linux/mic_ioctl.h | 35 + .../crt/include/kernel/uapi/linux/mii.h | 171 + .../crt/include/kernel/uapi/linux/minix_fs.h | 103 + .../crt/include/kernel/uapi/linux/mman.h | 29 + .../crt/include/kernel/uapi/linux/mmc/ioctl.h | 46 + .../crt/include/kernel/uapi/linux/mmtimer.h | 30 + .../crt/include/kernel/uapi/linux/module.h | 24 + .../crt/include/kernel/uapi/linux/mqueue.h | 38 + .../crt/include/kernel/uapi/linux/mroute.h | 121 + .../crt/include/kernel/uapi/linux/mroute6.h | 118 + .../crt/include/kernel/uapi/linux/msdos_fs.h | 194 + .../crt/include/kernel/uapi/linux/msg.h | 79 + .../crt/include/kernel/uapi/linux/mtio.h | 179 + .../crt/include/kernel/uapi/linux/n_r3964.h | 49 + .../crt/include/kernel/uapi/linux/nbd.h | 69 + .../crt/include/kernel/uapi/linux/ncp.h | 218 + .../crt/include/kernel/uapi/linux/ncp_fs.h | 148 + .../crt/include/kernel/uapi/linux/ncp_mount.h | 71 + .../crt/include/kernel/uapi/linux/ncp_no.h | 38 + .../crt/include/kernel/uapi/linux/neighbour.h | 154 + .../crt/include/kernel/uapi/linux/net.h | 60 + .../include/kernel/uapi/linux/net_dropmon.h | 70 + .../include/kernel/uapi/linux/net_tstamp.h | 71 + .../crt/include/kernel/uapi/linux/netconf.h | 43 + .../crt/include/kernel/uapi/linux/netdevice.h | 40 + .../crt/include/kernel/uapi/linux/netfilter.h | 76 + .../uapi/linux/netfilter/ipset/ip_set.h | 274 + .../linux/netfilter/ipset/ip_set_bitmap.h | 26 + .../uapi/linux/netfilter/ipset/ip_set_hash.h | 31 + .../uapi/linux/netfilter/ipset/ip_set_list.h | 31 + .../linux/netfilter/nf_conntrack_common.h | 104 + .../uapi/linux/netfilter/nf_conntrack_ftp.h | 29 + .../uapi/linux/netfilter/nf_conntrack_sctp.h | 41 + .../uapi/linux/netfilter/nf_conntrack_tcp.h | 58 + .../netfilter/nf_conntrack_tuple_common.h | 55 + .../kernel/uapi/linux/netfilter/nf_nat.h | 54 + .../kernel/uapi/linux/netfilter/nf_tables.h | 454 + .../uapi/linux/netfilter/nf_tables_compat.h | 58 + .../kernel/uapi/linux/netfilter/nfnetlink.h | 78 + .../uapi/linux/netfilter/nfnetlink_acct.h | 45 + .../uapi/linux/netfilter/nfnetlink_compat.h | 54 + .../linux/netfilter/nfnetlink_conntrack.h | 313 + .../uapi/linux/netfilter/nfnetlink_cthelper.h | 78 + .../linux/netfilter/nfnetlink_cttimeout.h | 145 + .../uapi/linux/netfilter/nfnetlink_log.h | 114 + .../uapi/linux/netfilter/nfnetlink_queue.h | 131 + .../kernel/uapi/linux/netfilter/x_tables.h | 115 + .../kernel/uapi/linux/netfilter/xt_AUDIT.h | 35 + .../kernel/uapi/linux/netfilter/xt_CHECKSUM.h | 28 + .../kernel/uapi/linux/netfilter/xt_CLASSIFY.h | 26 + .../uapi/linux/netfilter/xt_CONNSECMARK.h | 31 + .../kernel/uapi/linux/netfilter/xt_CT.h | 50 + .../kernel/uapi/linux/netfilter/xt_HMARK.h | 74 + .../uapi/linux/netfilter/xt_IDLETIMER.h | 30 + .../kernel/uapi/linux/netfilter/xt_LED.h | 30 + .../kernel/uapi/linux/netfilter/xt_LOG.h | 36 + .../kernel/uapi/linux/netfilter/xt_NFLOG.h | 36 + .../kernel/uapi/linux/netfilter/xt_NFQUEUE.h | 48 + .../kernel/uapi/linux/netfilter/xt_SECMARK.h | 31 + .../kernel/uapi/linux/netfilter/xt_SYNPROXY.h | 34 + .../uapi/linux/netfilter/xt_TCPOPTSTRIP.h | 29 + .../kernel/uapi/linux/netfilter/xt_TEE.h | 28 + .../kernel/uapi/linux/netfilter/xt_TPROXY.h | 38 + .../kernel/uapi/linux/netfilter/xt_addrtype.h | 61 + .../kernel/uapi/linux/netfilter/xt_bpf.h | 31 + .../kernel/uapi/linux/netfilter/xt_cgroup.h | 28 + .../kernel/uapi/linux/netfilter/xt_cluster.h | 35 + .../kernel/uapi/linux/netfilter/xt_comment.h | 26 + .../uapi/linux/netfilter/xt_connbytes.h | 45 + .../uapi/linux/netfilter/xt_connlabel.h | 30 + .../uapi/linux/netfilter/xt_connlimit.h | 45 + .../kernel/uapi/linux/netfilter/xt_connmark.h | 39 + .../uapi/linux/netfilter/xt_conntrack.h | 99 + .../kernel/uapi/linux/netfilter/xt_cpu.h | 28 + .../kernel/uapi/linux/netfilter/xt_dccp.h | 39 + .../kernel/uapi/linux/netfilter/xt_devgroup.h | 39 + .../kernel/uapi/linux/netfilter/xt_dscp.h | 38 + .../kernel/uapi/linux/netfilter/xt_ecn.h | 43 + .../kernel/uapi/linux/netfilter/xt_esp.h | 30 + .../uapi/linux/netfilter/xt_hashlimit.h | 78 + .../kernel/uapi/linux/netfilter/xt_helper.h | 26 + .../kernel/uapi/linux/netfilter/xt_ipcomp.h | 31 + .../kernel/uapi/linux/netfilter/xt_iprange.h | 38 + .../kernel/uapi/linux/netfilter/xt_ipvs.h | 48 + .../kernel/uapi/linux/netfilter/xt_l2tp.h | 44 + .../kernel/uapi/linux/netfilter/xt_length.h | 28 + .../kernel/uapi/linux/netfilter/xt_limit.h | 35 + .../kernel/uapi/linux/netfilter/xt_mac.h | 26 + .../kernel/uapi/linux/netfilter/xt_mark.h | 31 + .../uapi/linux/netfilter/xt_multiport.h | 45 + .../kernel/uapi/linux/netfilter/xt_nfacct.h | 29 + .../kernel/uapi/linux/netfilter/xt_osf.h | 113 + .../kernel/uapi/linux/netfilter/xt_owner.h | 35 + .../kernel/uapi/linux/netfilter/xt_physdev.h | 40 + .../kernel/uapi/linux/netfilter/xt_pkttype.h | 26 + .../kernel/uapi/linux/netfilter/xt_policy.h | 78 + .../kernel/uapi/linux/netfilter/xt_quota.h | 36 + .../kernel/uapi/linux/netfilter/xt_rateest.h | 55 + .../kernel/uapi/linux/netfilter/xt_realm.h | 29 + .../kernel/uapi/linux/netfilter/xt_recent.h | 60 + .../kernel/uapi/linux/netfilter/xt_rpfilter.h | 34 + .../kernel/uapi/linux/netfilter/xt_sctp.h | 63 + .../kernel/uapi/linux/netfilter/xt_set.h | 80 + .../kernel/uapi/linux/netfilter/xt_socket.h | 38 + .../kernel/uapi/linux/netfilter/xt_state.h | 29 + .../uapi/linux/netfilter/xt_statistic.h | 55 + .../kernel/uapi/linux/netfilter/xt_string.h | 50 + .../kernel/uapi/linux/netfilter/xt_tcpmss.h | 28 + .../kernel/uapi/linux/netfilter/xt_tcpudp.h | 49 + .../kernel/uapi/linux/netfilter/xt_time.h | 45 + .../kernel/uapi/linux/netfilter/xt_u32.h | 55 + .../include/kernel/uapi/linux/netfilter_arp.h | 29 + .../uapi/linux/netfilter_arp/arp_tables.h | 131 + .../uapi/linux/netfilter_arp/arpt_mangle.h | 46 + .../kernel/uapi/linux/netfilter_bridge.h | 35 + .../uapi/linux/netfilter_bridge/ebt_802_3.h | 68 + .../uapi/linux/netfilter_bridge/ebt_among.h | 50 + .../uapi/linux/netfilter_bridge/ebt_arp.h | 55 + .../linux/netfilter_bridge/ebt_arpreply.h | 28 + .../uapi/linux/netfilter_bridge/ebt_ip.h | 48 + .../uapi/linux/netfilter_bridge/ebt_ip6.h | 56 + .../uapi/linux/netfilter_bridge/ebt_limit.h | 34 + .../uapi/linux/netfilter_bridge/ebt_log.h | 38 + .../uapi/linux/netfilter_bridge/ebt_mark_m.h | 34 + .../uapi/linux/netfilter_bridge/ebt_mark_t.h | 33 + .../uapi/linux/netfilter_bridge/ebt_nat.h | 30 + .../uapi/linux/netfilter_bridge/ebt_nflog.h | 39 + .../uapi/linux/netfilter_bridge/ebt_pkttype.h | 29 + .../linux/netfilter_bridge/ebt_redirect.h | 26 + .../uapi/linux/netfilter_bridge/ebt_stp.h | 65 + .../uapi/linux/netfilter_bridge/ebt_ulog.h | 56 + .../uapi/linux/netfilter_bridge/ebt_vlan.h | 38 + .../uapi/linux/netfilter_bridge/ebtables.h | 169 + .../kernel/uapi/linux/netfilter_decnet.h | 71 + .../kernel/uapi/linux/netfilter_ipv4.h | 68 + .../uapi/linux/netfilter_ipv4/ip_tables.h | 154 + .../uapi/linux/netfilter_ipv4/ipt_CLUSTERIP.h | 48 + .../uapi/linux/netfilter_ipv4/ipt_LOG.h | 38 + .../uapi/linux/netfilter_ipv4/ipt_REJECT.h | 39 + .../uapi/linux/netfilter_ipv4/ipt_ULOG.h | 55 + .../kernel/uapi/linux/netfilter_ipv4/ipt_ah.h | 30 + .../uapi/linux/netfilter_ipv4/ipt_ecn.h | 33 + .../uapi/linux/netfilter_ipv4/ipt_ttl.h | 35 + .../kernel/uapi/linux/netfilter_ipv6.h | 65 + .../uapi/linux/netfilter_ipv6/ip6_tables.h | 171 + .../uapi/linux/netfilter_ipv6/ip6t_LOG.h | 38 + .../uapi/linux/netfilter_ipv6/ip6t_NPT.h | 33 + .../uapi/linux/netfilter_ipv6/ip6t_REJECT.h | 38 + .../uapi/linux/netfilter_ipv6/ip6t_ah.h | 38 + .../uapi/linux/netfilter_ipv6/ip6t_frag.h | 41 + .../uapi/linux/netfilter_ipv6/ip6t_hl.h | 35 + .../linux/netfilter_ipv6/ip6t_ipv6header.h | 39 + .../uapi/linux/netfilter_ipv6/ip6t_mh.h | 30 + .../uapi/linux/netfilter_ipv6/ip6t_opts.h | 39 + .../uapi/linux/netfilter_ipv6/ip6t_rt.h | 49 + .../crt/include/kernel/uapi/linux/netlink.h | 170 + .../include/kernel/uapi/linux/netlink_diag.h | 69 + .../crt/include/kernel/uapi/linux/netrom.h | 48 + .../crt/include/kernel/uapi/linux/nfc.h | 188 + .../crt/include/kernel/uapi/linux/nfs.h | 154 + .../crt/include/kernel/uapi/linux/nfs2.h | 83 + .../crt/include/kernel/uapi/linux/nfs3.h | 118 + .../crt/include/kernel/uapi/linux/nfs4.h | 171 + .../include/kernel/uapi/linux/nfs4_mount.h | 61 + .../crt/include/kernel/uapi/linux/nfs_fs.h | 61 + .../crt/include/kernel/uapi/linux/nfs_idmap.h | 43 + .../crt/include/kernel/uapi/linux/nfs_mount.h | 84 + .../crt/include/kernel/uapi/linux/nfsacl.h | 36 + .../crt/include/kernel/uapi/linux/nfsd/cld.h | 49 + .../include/kernel/uapi/linux/nfsd/debug.h | 41 + .../include/kernel/uapi/linux/nfsd/export.h | 46 + .../include/kernel/uapi/linux/nfsd/nfsfh.h | 74 + .../include/kernel/uapi/linux/nfsd/stats.h | 24 + .../crt/include/kernel/uapi/linux/nl80211.h | 1309 ++ .../crt/include/kernel/uapi/linux/nubus.h | 208 + .../crt/include/kernel/uapi/linux/nvme.h | 554 + .../crt/include/kernel/uapi/linux/nvram.h | 28 + .../crt/include/kernel/uapi/linux/omap3isp.h | 416 + .../crt/include/kernel/uapi/linux/omapfb.h | 229 + .../crt/include/kernel/uapi/linux/oom.h | 28 + .../include/kernel/uapi/linux/openvswitch.h | 338 + .../include/kernel/uapi/linux/packet_diag.h | 100 + .../crt/include/kernel/uapi/linux/param.h | 23 + .../crt/include/kernel/uapi/linux/parport.h | 93 + .../crt/include/kernel/uapi/linux/patchkey.h | 38 + .../crt/include/kernel/uapi/linux/pci.h | 33 + .../crt/include/kernel/uapi/linux/pci_regs.h | 950 + .../include/kernel/uapi/linux/perf_event.h | 418 + .../include/kernel/uapi/linux/personality.h | 71 + .../crt/include/kernel/uapi/linux/pfkeyv2.h | 365 + .../extras/crt/include/kernel/uapi/linux/pg.h | 40 + .../crt/include/kernel/uapi/linux/phantom.h | 53 + .../crt/include/kernel/uapi/linux/phonet.h | 101 + .../crt/include/kernel/uapi/linux/pkt_cls.h | 448 + .../crt/include/kernel/uapi/linux/pkt_sched.h | 788 + .../crt/include/kernel/uapi/linux/pktcdvd.h | 73 + .../crt/include/kernel/uapi/linux/pmu.h | 130 + .../crt/include/kernel/uapi/linux/poll.h | 19 + .../include/kernel/uapi/linux/posix_types.h | 34 + .../crt/include/kernel/uapi/linux/ppdev.h | 64 + .../crt/include/kernel/uapi/linux/ppp-comp.h | 69 + .../crt/include/kernel/uapi/linux/ppp-ioctl.h | 131 + .../crt/include/kernel/uapi/linux/ppp_defs.h | 134 + .../crt/include/kernel/uapi/linux/pps.h | 89 + .../crt/include/kernel/uapi/linux/prctl.h | 120 + .../crt/include/kernel/uapi/linux/ptp_clock.h | 81 + .../crt/include/kernel/uapi/linux/ptrace.h | 85 + .../crt/include/kernel/uapi/linux/qnx4_fs.h | 101 + .../crt/include/kernel/uapi/linux/qnxtypes.h | 36 + .../crt/include/kernel/uapi/linux/quota.h | 135 + .../crt/include/kernel/uapi/linux/radeonfb.h | 29 + .../crt/include/kernel/uapi/linux/raid/md_p.h | 199 + .../crt/include/kernel/uapi/linux/raid/md_u.h | 119 + .../crt/include/kernel/uapi/linux/random.h | 39 + .../crt/include/kernel/uapi/linux/raw.h | 34 + .../crt/include/kernel/uapi/linux/rds.h | 223 + .../crt/include/kernel/uapi/linux/reboot.h | 38 + .../include/kernel/uapi/linux/reiserfs_fs.h | 30 + .../kernel/uapi/linux/reiserfs_xattr.h | 35 + .../crt/include/kernel/uapi/linux/resource.h | 73 + .../crt/include/kernel/uapi/linux/rfkill.h | 61 + .../crt/include/kernel/uapi/linux/romfs_fs.h | 70 + .../crt/include/kernel/uapi/linux/rose.h | 106 + .../crt/include/kernel/uapi/linux/route.h | 58 + .../crt/include/kernel/uapi/linux/rtc.h | 86 + .../crt/include/kernel/uapi/linux/rtnetlink.h | 581 + .../crt/include/kernel/uapi/linux/scc.h | 169 + .../crt/include/kernel/uapi/linux/sched.h | 60 + .../include/kernel/uapi/linux/screen_info.h | 88 + .../crt/include/kernel/uapi/linux/sctp.h | 526 + .../crt/include/kernel/uapi/linux/sdla.h | 109 + .../crt/include/kernel/uapi/linux/seccomp.h | 44 + .../include/kernel/uapi/linux/securebits.h | 41 + .../kernel/uapi/linux/selinux_netlink.h | 51 + .../crt/include/kernel/uapi/linux/sem.h | 91 + .../crt/include/kernel/uapi/linux/serial.h | 116 + .../include/kernel/uapi/linux/serial_core.h | 146 + .../include/kernel/uapi/linux/serial_reg.h | 314 + .../crt/include/kernel/uapi/linux/serio.h | 88 + .../crt/include/kernel/uapi/linux/shm.h | 117 + .../crt/include/kernel/uapi/linux/signal.h | 26 + .../crt/include/kernel/uapi/linux/signalfd.h | 51 + .../crt/include/kernel/uapi/linux/snmp.h | 334 + .../crt/include/kernel/uapi/linux/sock_diag.h | 43 + .../crt/include/kernel/uapi/linux/socket.h | 30 + .../crt/include/kernel/uapi/linux/sockios.h | 118 + .../crt/include/kernel/uapi/linux/som.h | 170 + .../crt/include/kernel/uapi/linux/sonet.h | 53 + .../crt/include/kernel/uapi/linux/sonypi.h | 134 + .../crt/include/kernel/uapi/linux/sound.h | 41 + .../crt/include/kernel/uapi/linux/soundcard.h | 846 + .../include/kernel/uapi/linux/spi/spidev.h | 64 + .../crt/include/kernel/uapi/linux/stat.h | 82 + .../crt/include/kernel/uapi/linux/stddef.h | 19 + .../crt/include/kernel/uapi/linux/string.h | 23 + .../include/kernel/uapi/linux/sunrpc/debug.h | 50 + .../kernel/uapi/linux/suspend_ioctls.h | 48 + .../crt/include/kernel/uapi/linux/sw_sync.h | 33 + .../crt/include/kernel/uapi/linux/swab.h | 99 + .../crt/include/kernel/uapi/linux/sync.h | 53 + .../crt/include/kernel/uapi/linux/synclink.h | 301 + .../crt/include/kernel/uapi/linux/sysctl.h | 983 + .../crt/include/kernel/uapi/linux/sysinfo.h | 44 + .../crt/include/kernel/uapi/linux/taskstats.h | 119 + .../kernel/uapi/linux/tc_act/tc_csum.h | 49 + .../kernel/uapi/linux/tc_act/tc_defact.h | 36 + .../kernel/uapi/linux/tc_act/tc_gact.h | 50 + .../include/kernel/uapi/linux/tc_act/tc_ipt.h | 39 + .../kernel/uapi/linux/tc_act/tc_mirred.h | 45 + .../include/kernel/uapi/linux/tc_act/tc_nat.h | 44 + .../kernel/uapi/linux/tc_act/tc_pedit.h | 53 + .../kernel/uapi/linux/tc_act/tc_skbedit.h | 44 + .../kernel/uapi/linux/tc_ematch/tc_em_cmp.h | 43 + .../kernel/uapi/linux/tc_ematch/tc_em_meta.h | 123 + .../kernel/uapi/linux/tc_ematch/tc_em_nbyte.h | 30 + .../kernel/uapi/linux/tc_ematch/tc_em_text.h | 36 + .../crt/include/kernel/uapi/linux/tcp.h | 208 + .../include/kernel/uapi/linux/tcp_metrics.h | 66 + .../crt/include/kernel/uapi/linux/telephony.h | 190 + .../crt/include/kernel/uapi/linux/termios.h | 39 + .../crt/include/kernel/uapi/linux/time.h | 75 + .../crt/include/kernel/uapi/linux/times.h | 30 + .../crt/include/kernel/uapi/linux/timex.h | 113 + .../crt/include/kernel/uapi/linux/tiocl.h | 55 + .../crt/include/kernel/uapi/linux/tipc.h | 129 + .../include/kernel/uapi/linux/tipc_config.h | 196 + .../crt/include/kernel/uapi/linux/toshiba.h | 35 + .../crt/include/kernel/uapi/linux/tty.h | 54 + .../crt/include/kernel/uapi/linux/tty_flags.h | 94 + .../crt/include/kernel/uapi/linux/types.h | 43 + .../crt/include/kernel/uapi/linux/udf_fs_i.h | 26 + .../crt/include/kernel/uapi/linux/udp.h | 36 + .../crt/include/kernel/uapi/linux/uhid.h | 108 + .../crt/include/kernel/uapi/linux/uinput.h | 78 + .../crt/include/kernel/uapi/linux/uio.h | 33 + .../include/kernel/uapi/linux/ultrasound.h | 65 + .../extras/crt/include/kernel/uapi/linux/un.h | 29 + .../crt/include/kernel/uapi/linux/unistd.h | 23 + .../crt/include/kernel/uapi/linux/unix_diag.h | 75 + .../crt/include/kernel/uapi/linux/usb/audio.h | 370 + .../include/kernel/uapi/linux/usb/cdc-wdm.h | 23 + .../crt/include/kernel/uapi/linux/usb/cdc.h | 373 + .../crt/include/kernel/uapi/linux/usb/ch11.h | 201 + .../crt/include/kernel/uapi/linux/usb/ch9.h | 540 + .../kernel/uapi/linux/usb/f_accessory.h | 53 + .../crt/include/kernel/uapi/linux/usb/f_mtp.h | 43 + .../kernel/uapi/linux/usb/functionfs.h | 81 + .../include/kernel/uapi/linux/usb/g_printer.h | 28 + .../include/kernel/uapi/linux/usb/gadgetfs.h | 46 + .../crt/include/kernel/uapi/linux/usb/midi.h | 83 + .../crt/include/kernel/uapi/linux/usb/tmc.h | 48 + .../crt/include/kernel/uapi/linux/usb/video.h | 453 + .../include/kernel/uapi/linux/usbdevice_fs.h | 165 + .../crt/include/kernel/uapi/linux/utime.h | 28 + .../crt/include/kernel/uapi/linux/utsname.h | 51 + .../crt/include/kernel/uapi/linux/uuid.h | 36 + .../crt/include/kernel/uapi/linux/uvcvideo.h | 75 + .../include/kernel/uapi/linux/v4l2-common.h | 45 + .../include/kernel/uapi/linux/v4l2-controls.h | 930 + .../kernel/uapi/linux/v4l2-dv-timings.h | 156 + .../include/kernel/uapi/linux/v4l2-mediabus.h | 116 + .../include/kernel/uapi/linux/v4l2-subdev.h | 119 + .../crt/include/kernel/uapi/linux/version.h | 20 + .../crt/include/kernel/uapi/linux/veth.h | 29 + .../crt/include/kernel/uapi/linux/vfio.h | 199 + .../crt/include/kernel/uapi/linux/vhost.h | 101 + .../crt/include/kernel/uapi/linux/videodev2.h | 1418 ++ .../crt/include/kernel/uapi/linux/virtio_9p.h | 31 + .../kernel/uapi/linux/virtio_balloon.h | 48 + .../include/kernel/uapi/linux/virtio_blk.h | 85 + .../include/kernel/uapi/linux/virtio_config.h | 33 + .../kernel/uapi/linux/virtio_console.h | 54 + .../include/kernel/uapi/linux/virtio_ids.h | 34 + .../include/kernel/uapi/linux/virtio_net.h | 126 + .../include/kernel/uapi/linux/virtio_pci.h | 44 + .../include/kernel/uapi/linux/virtio_ring.h | 66 + .../include/kernel/uapi/linux/virtio_rng.h | 24 + .../include/kernel/uapi/linux/vm_sockets.h | 56 + .../crt/include/kernel/uapi/linux/vsp1.h | 29 + .../extras/crt/include/kernel/uapi/linux/vt.h | 100 + .../crt/include/kernel/uapi/linux/wait.h | 36 + .../crt/include/kernel/uapi/linux/wanrouter.h | 30 + .../crt/include/kernel/uapi/linux/watchdog.h | 66 + .../crt/include/kernel/uapi/linux/wimax.h | 85 + .../include/kernel/uapi/linux/wimax/i2400m.h | 381 + .../crt/include/kernel/uapi/linux/wireless.h | 580 + .../crt/include/kernel/uapi/linux/x25.h | 116 + .../crt/include/kernel/uapi/linux/xattr.h | 71 + .../crt/include/kernel/uapi/linux/xfrm.h | 533 + .../crt/include/kernel/uapi/linux/zorro.h | 93 + .../crt/include/kernel/uapi/linux/zorro_ids.h | 553 + .../pin-3.13/extras/crt/include/lastlog.h | 0 .../pin-3.13/extras/crt/include/libgen.h | 59 + .../pin-3.13/extras/crt/include/limits.h | 143 + .../pin-3.13/extras/crt/include/link.h | 80 + .../pin-3.13/extras/crt/include/locale.h | 107 + .../extras/crt/include/machine/ieee.h | 164 + .../extras/crt/include/machine/wchar_limits.h | 42 + .../pin-3.13/extras/crt/include/malloc.h | 105 + .../pin-3.13/extras/crt/include/math.h | 500 + .../pin-3.13/extras/crt/include/memory.h | 1 + .../pin-3.13/extras/crt/include/mntent.h | 56 + .../extras/crt/include/net/ethernet.h | 32 + .../extras/crt/include/net/ethertypes.h | 313 + .../pin-3.13/extras/crt/include/net/if.h | 44 + .../pin-3.13/extras/crt/include/net/if_arp.h | 2 + .../extras/crt/include/net/if_ether.h | 219 + .../extras/crt/include/net/if_ieee1394.h | 127 + .../extras/crt/include/net/if_packet.h | 1 + .../extras/crt/include/net/if_types.h | 267 + .../pin-3.13/extras/crt/include/net/route.h | 1 + .../pin-3.13/extras/crt/include/netdb.h | 272 + .../extras/crt/include/netinet/ether.h | 28 + .../extras/crt/include/netinet/icmp6.h | 794 + .../extras/crt/include/netinet/if_ether.h | 35 + .../pin-3.13/extras/crt/include/netinet/in.h | 86 + .../pin-3.13/extras/crt/include/netinet/in6.h | 111 + .../extras/crt/include/netinet/in_systm.h | 59 + .../pin-3.13/extras/crt/include/netinet/ip.h | 275 + .../pin-3.13/extras/crt/include/netinet/ip6.h | 319 + .../extras/crt/include/netinet/ip_icmp.h | 214 + .../pin-3.13/extras/crt/include/netinet/tcp.h | 67 + .../pin-3.13/extras/crt/include/netinet/udp.h | 55 + .../extras/crt/include/netpacket/packet.h | 1 + .../pin-3.13/extras/crt/include/nsswitch.h | 230 + .../pin-3.13/extras/crt/include/os-apis.h | 62 + .../extras/crt/include/os-apis/file.h | 590 + .../extras/crt/include/os-apis/host.h | 138 + .../extras/crt/include/os-apis/ipc-pipe.h | 54 + .../pin-3.13/extras/crt/include/os-apis/ipc.h | 224 + .../extras/crt/include/os-apis/memory.h | 237 + .../extras/crt/include/os-apis/mutex.h | 305 + .../crt/include/os-apis/os_return_codes.h | 127 + .../extras/crt/include/os-apis/pin-tls.h | 190 + .../extras/crt/include/os-apis/process-core.h | 41 + .../extras/crt/include/os-apis/process.h | 216 + .../extras/crt/include/os-apis/rw-lock.h | 179 + .../crt/include/os-apis/sigaction_kernel.h | 43 + .../extras/crt/include/os-apis/signals-core.h | 222 + .../extras/crt/include/os-apis/signals.h | 158 + .../crt/include/os-apis/threads-management.h | 50 + .../extras/crt/include/os-apis/threads.h | 172 + .../extras/crt/include/os-apis/time.h | 56 + .../pin-3.13/extras/crt/include/pathconf.h | 64 + .../pin-3.13/extras/crt/include/paths.h | 93 + .../pin-3.13/extras/crt/include/poll.h | 46 + .../pin-3.13/extras/crt/include/pthread.h | 307 + .../pintool/pin-3.13/extras/crt/include/pwd.h | 128 + .../pin-3.13/extras/crt/include/regex.h | 105 + .../pin-3.13/extras/crt/include/resolv.h | 79 + .../pin-3.13/extras/crt/include/sched.h | 153 + .../pin-3.13/extras/crt/include/search.h | 46 + .../pin-3.13/extras/crt/include/semaphore.h | 61 + .../pin-3.13/extras/crt/include/setjmp.h | 77 + .../pin-3.13/extras/crt/include/sgidefs.h | 34 + .../pin-3.13/extras/crt/include/sgtty.h | 48 + .../pin-3.13/extras/crt/include/signal.h | 174 + .../pin-3.13/extras/crt/include/stdatomic.h | 575 + .../pin-3.13/extras/crt/include/stdint.h | 267 + .../pin-3.13/extras/crt/include/stdio.h | 499 + .../pin-3.13/extras/crt/include/stdio_ext.h | 54 + .../pin-3.13/extras/crt/include/stdlib.h | 186 + .../pin-3.13/extras/crt/include/string.h | 347 + .../pin-3.13/extras/crt/include/strings.h | 77 + .../extras/crt/include/sys/_errdefs.h | 170 + .../extras/crt/include/sys/_sigdefs.h | 92 + .../crt/include/sys/_system_properties.h | 153 + .../pin-3.13/extras/crt/include/sys/auxv.h | 40 + .../extras/crt/include/sys/cachectl.h | 35 + .../extras/crt/include/sys/capability.h | 42 + .../pin-3.13/extras/crt/include/sys/cdefs.h | 594 + .../extras/crt/include/sys/cdefs_elf.h | 74 + .../pin-3.13/extras/crt/include/sys/endian.h | 310 + .../pin-3.13/extras/crt/include/sys/epoll.h | 84 + .../pin-3.13/extras/crt/include/sys/errno.h | 1 + .../pin-3.13/extras/crt/include/sys/eventfd.h | 50 + .../pin-3.13/extras/crt/include/sys/file.h | 38 + .../pin-3.13/extras/crt/include/sys/fsuid.h | 42 + .../extras/crt/include/sys/glibc-syscalls.h | 1698 ++ .../pin-3.13/extras/crt/include/sys/inotify.h | 50 + .../pin-3.13/extras/crt/include/sys/ioctl.h | 49 + .../extras/crt/include/sys/ioctl_compat.h | 174 + .../pin-3.13/extras/crt/include/sys/ipc.h | 41 + .../pin-3.13/extras/crt/include/sys/klog.h | 53 + .../pin-3.13/extras/crt/include/sys/limits.h | 167 + .../extras/crt/include/sys/mac/mman.h | 103 + .../pin-3.13/extras/crt/include/sys/mman.h | 24 + .../pin-3.13/extras/crt/include/sys/mount.h | 68 + .../pin-3.13/extras/crt/include/sys/msg.h | 34 + .../extras/crt/include/sys/nonmac/mman.h | 66 + .../pin-3.13/extras/crt/include/sys/param.h | 83 + .../extras/crt/include/sys/personality.h | 41 + .../pin-3.13/extras/crt/include/sys/poll.h | 1 + .../pin-3.13/extras/crt/include/sys/prctl.h | 42 + .../pin-3.13/extras/crt/include/sys/ptrace.h | 67 + .../pin-3.13/extras/crt/include/sys/queue.h | 557 + .../pin-3.13/extras/crt/include/sys/reboot.h | 48 + .../pin-3.13/extras/crt/include/sys/reg.h | 84 + .../extras/crt/include/sys/resource.h | 60 + .../pin-3.13/extras/crt/include/sys/select.h | 88 + .../pin-3.13/extras/crt/include/sys/sem.h | 59 + .../extras/crt/include/sys/sendfile.h | 42 + .../pin-3.13/extras/crt/include/sys/shm.h | 34 + .../pin-3.13/extras/crt/include/sys/signal.h | 1 + .../extras/crt/include/sys/signalfd.h | 42 + .../pin-3.13/extras/crt/include/sys/socket.h | 355 + .../extras/crt/include/sys/socketcalls.h | 54 + .../pin-3.13/extras/crt/include/sys/stat.h | 196 + .../pin-3.13/extras/crt/include/sys/statfs.h | 1 + .../pin-3.13/extras/crt/include/sys/statvfs.h | 69 + .../pin-3.13/extras/crt/include/sys/swap.h | 46 + .../pin-3.13/extras/crt/include/sys/syscall.h | 76 + .../pin-3.13/extras/crt/include/sys/sysconf.h | 136 + .../pin-3.13/extras/crt/include/sys/sysinfo.h | 40 + .../extras/crt/include/sys/syslimits.h | 0 .../extras/crt/include/sys/sysmacros.h | 67 + .../crt/include/sys/system_properties.h | 102 + .../pin-3.13/extras/crt/include/sys/time.h | 78 + .../pin-3.13/extras/crt/include/sys/timerfd.h | 51 + .../pin-3.13/extras/crt/include/sys/times.h | 42 + .../pin-3.13/extras/crt/include/sys/timex.h | 34 + .../extras/crt/include/sys/ttychars.h | 0 .../extras/crt/include/sys/ttydefaults.h | 115 + .../pin-3.13/extras/crt/include/sys/ttydev.h | 0 .../pin-3.13/extras/crt/include/sys/types.h | 190 + .../extras/crt/include/sys/ucontext.h | 306 + .../pin-3.13/extras/crt/include/sys/uio.h | 42 + .../pin-3.13/extras/crt/include/sys/un.h | 54 + .../pin-3.13/extras/crt/include/sys/user.h | 242 + .../pin-3.13/extras/crt/include/sys/utime.h | 33 + .../pin-3.13/extras/crt/include/sys/utsname.h | 50 + .../pin-3.13/extras/crt/include/sys/vfs.h | 169 + .../pin-3.13/extras/crt/include/sys/vt.h | 28 + .../pin-3.13/extras/crt/include/sys/wait.h | 75 + .../pin-3.13/extras/crt/include/sys/xattr.h | 56 + .../pin-3.13/extras/crt/include/syslog.h | 95 + .../pin-3.13/extras/crt/include/termio.h | 32 + .../pin-3.13/extras/crt/include/termios.h | 54 + .../pin-3.13/extras/crt/include/time.h | 118 + .../pin-3.13/extras/crt/include/time64.h | 66 + .../pin-3.13/extras/crt/include/toolchains.h | 55 + .../pin-3.13/extras/crt/include/types.h | 208 + .../extras/crt/include/types_marker.h | 273 + .../pin-3.13/extras/crt/include/uchar.h | 53 + .../pin-3.13/extras/crt/include/ucontext.h | 34 + .../pin-3.13/extras/crt/include/unistd.h | 254 + .../pin-3.13/extras/crt/include/ustat.h | 27 + .../pin-3.13/extras/crt/include/util.h | 0 .../pin-3.13/extras/crt/include/utime.h | 42 + .../pin-3.13/extras/crt/include/utmp.h | 96 + .../pin-3.13/extras/crt/include/wchar.h | 201 + .../pin-3.13/extras/crt/include/wctype.h | 56 + .../pin-3.13/extras/crt/include/xlocale.h | 36 + src/tracer/pintool/pin-3.13/extras/crt/tzdata | Bin 0 -> 566837 bytes .../pin-3.13/extras/libstdc++/include/cassert | 39 + .../pin-3.13/extras/libstdc++/include/cctype | 60 + .../pin-3.13/extras/libstdc++/include/cerrno | 40 + .../pin-3.13/extras/libstdc++/include/cfloat | 39 + .../pin-3.13/extras/libstdc++/include/climits | 39 + .../pin-3.13/extras/libstdc++/include/cmath | 75 + .../pin-3.13/extras/libstdc++/include/csetjmp | 53 + .../pin-3.13/extras/libstdc++/include/csignal | 50 + .../pin-3.13/extras/libstdc++/include/cstddef | 50 + .../pin-3.13/extras/libstdc++/include/cstdint | 40 + .../pin-3.13/extras/libstdc++/include/cstdio | 98 + .../pin-3.13/extras/libstdc++/include/cstdlib | 116 + .../pin-3.13/extras/libstdc++/include/cstring | 70 + .../pin-3.13/extras/libstdc++/include/ctime | 63 + .../pin-3.13/extras/libstdc++/include/cwchar | 31 + .../include/cwctype_is_not_supported | 31 + .../pin-3.13/extras/libstdc++/include/new | 52 + .../extras/libstdc++/include/stl_pair.h | 122 + .../extras/libstdc++/include/typeinfo | 31 + .../pin-3.13/extras/libstdc++/include/utility | 38 + .../libunwind/include/__libunwind_config.h | 20 + .../extras/libunwind/include/libunwind.h | 552 + .../extras/libunwind/include/unwind.h | 387 + .../pin-3.13/extras/stlport/include/algorithm | 62 + .../pin-3.13/extras/stlport/include/assert.h | 50 + .../pin-3.13/extras/stlport/include/bitset | 70 + .../pin-3.13/extras/stlport/include/cassert | 46 + .../pin-3.13/extras/stlport/include/cctype | 47 + .../pin-3.13/extras/stlport/include/cerrno | 55 + .../pin-3.13/extras/stlport/include/cfloat | 45 + .../pin-3.13/extras/stlport/include/ciso646 | 45 + .../pin-3.13/extras/stlport/include/climits | 53 + .../pin-3.13/extras/stlport/include/clocale | 47 + .../pin-3.13/extras/stlport/include/cmath | 53 + .../pin-3.13/extras/stlport/include/complex | 57 + .../pin-3.13/extras/stlport/include/csetjmp | 47 + .../pin-3.13/extras/stlport/include/csignal | 47 + .../pin-3.13/extras/stlport/include/cstdarg | 47 + .../pin-3.13/extras/stlport/include/cstddef | 47 + .../pin-3.13/extras/stlport/include/cstdio | 53 + .../pin-3.13/extras/stlport/include/cstdlib | 54 + .../pin-3.13/extras/stlport/include/cstring | 47 + .../pin-3.13/extras/stlport/include/ctime | 53 + .../pin-3.13/extras/stlport/include/ctype.h | 114 + .../pin-3.13/extras/stlport/include/cwchar | 48 + .../pin-3.13/extras/stlport/include/cwctype | 47 + .../pin-3.13/extras/stlport/include/cxxabi.h | 58 + .../pin-3.13/extras/stlport/include/deque | 57 + .../pin-3.13/extras/stlport/include/errno.h | 70 + .../pin-3.13/extras/stlport/include/exception | 68 + .../extras/stlport/include/exception.h | 43 + .../pin-3.13/extras/stlport/include/float.h | 52 + .../pin-3.13/extras/stlport/include/fstream | 66 + .../pin-3.13/extras/stlport/include/fstream.h | 42 + .../extras/stlport/include/functional | 148 + .../pin-3.13/extras/stlport/include/hash_map | 49 + .../pin-3.13/extras/stlport/include/hash_set | 49 + .../pin-3.13/extras/stlport/include/iomanip | 53 + .../pin-3.13/extras/stlport/include/iomanip.h | 53 + .../pin-3.13/extras/stlport/include/ios | 53 + .../pin-3.13/extras/stlport/include/ios.h | 39 + .../pin-3.13/extras/stlport/include/iosfwd | 53 + .../pin-3.13/extras/stlport/include/iostream | 111 + .../extras/stlport/include/iostream.h | 106 + .../pin-3.13/extras/stlport/include/iso646.h | 39 + .../pin-3.13/extras/stlport/include/istream | 53 + .../pin-3.13/extras/stlport/include/istream.h | 50 + .../pin-3.13/extras/stlport/include/iterator | 61 + .../pin-3.13/extras/stlport/include/limits | 50 + .../pin-3.13/extras/stlport/include/limits.h | 39 + .../pin-3.13/extras/stlport/include/list | 57 + .../pin-3.13/extras/stlport/include/locale | 156 + .../pin-3.13/extras/stlport/include/locale.h | 43 + .../pin-3.13/extras/stlport/include/map | 57 + .../pin-3.13/extras/stlport/include/math.h | 53 + .../pin-3.13/extras/stlport/include/memory | 130 + .../pin-3.13/extras/stlport/include/new | 47 + .../pin-3.13/extras/stlport/include/new.h | 14 + .../pin-3.13/extras/stlport/include/numeric | 54 + .../pin-3.13/extras/stlport/include/ostream | 52 + .../pin-3.13/extras/stlport/include/ostream.h | 37 + .../pin-3.13/extras/stlport/include/pthread.h | 46 + .../extras/stlport/include/pthread_alloc | 49 + .../pin-3.13/extras/stlport/include/queue | 57 + .../pin-3.13/extras/stlport/include/rlocks.h | 11 + .../pin-3.13/extras/stlport/include/rope | 44 + .../pin-3.13/extras/stlport/include/set | 57 + .../pin-3.13/extras/stlport/include/setjmp.h | 52 + .../pin-3.13/extras/stlport/include/signal.h | 39 + .../pin-3.13/extras/stlport/include/slist | 54 + .../pin-3.13/extras/stlport/include/sstream | 57 + .../pin-3.13/extras/stlport/include/stack | 57 + .../pin-3.13/extras/stlport/include/stdarg.h | 47 + .../pin-3.13/extras/stlport/include/stddef.h | 44 + .../pin-3.13/extras/stlport/include/stdexcept | 56 + .../pin-3.13/extras/stlport/include/stdio.h | 57 + .../extras/stlport/include/stdiostream.h | 10 + .../pin-3.13/extras/stlport/include/stdlib.h | 67 + .../extras/stlport/include/stl/_abbrevs.h | 77 + .../extras/stlport/include/stl/_algo.c | 2028 ++ .../extras/stlport/include/stl/_algo.h | 745 + .../extras/stlport/include/stl/_algobase.c | 483 + .../extras/stlport/include/stl/_algobase.h | 728 + .../extras/stlport/include/stl/_alloc.c | 87 + .../extras/stlport/include/stl/_alloc.h | 583 + .../extras/stlport/include/stl/_auto_ptr.h | 133 + .../extras/stlport/include/stl/_bitset.c | 235 + .../extras/stlport/include/stl/_bitset.h | 880 + .../extras/stlport/include/stl/_bvector.h | 841 + .../extras/stlport/include/stl/_carray.h | 61 + .../extras/stlport/include/stl/_cctype.h | 49 + .../extras/stlport/include/stl/_clocale.h | 43 + .../extras/stlport/include/stl/_cmath.h | 620 + .../extras/stlport/include/stl/_codecvt.h | 442 + .../extras/stlport/include/stl/_collate.h | 176 + .../extras/stlport/include/stl/_complex.c | 145 + .../extras/stlport/include/stl/_complex.h | 935 + .../stlport/include/stl/_config_compat_post.h | 51 + .../extras/stlport/include/stl/_construct.h | 289 + .../extras/stlport/include/stl/_cprolog.h | 25 + .../extras/stlport/include/stl/_csetjmp.h | 68 + .../extras/stlport/include/stl/_csignal.h | 41 + .../extras/stlport/include/stl/_cstdarg.h | 34 + .../extras/stlport/include/stl/_cstddef.h | 44 + .../extras/stlport/include/stl/_cstdio.h | 127 + .../extras/stlport/include/stl/_cstdlib.h | 180 + .../extras/stlport/include/stl/_cstring.h | 35 + .../extras/stlport/include/stl/_ctime.h | 56 + .../extras/stlport/include/stl/_ctraits_fns.h | 91 + .../extras/stlport/include/stl/_ctype.h | 280 + .../extras/stlport/include/stl/_cwchar.h | 357 + .../extras/stlport/include/stl/_cwctype.h | 89 + .../extras/stlport/include/stl/_deque.c | 823 + .../extras/stlport/include/stl/_deque.h | 1115 ++ .../extras/stlport/include/stl/_epilog.h | 42 + .../extras/stlport/include/stl/_exception.h | 193 + .../extras/stlport/include/stl/_facets_fwd.h | 80 + .../extras/stlport/include/stl/_fstream.c | 766 + .../extras/stlport/include/stl/_fstream.h | 735 + .../extras/stlport/include/stl/_function.h | 433 + .../stlport/include/stl/_function_adaptors.h | 783 + .../stlport/include/stl/_function_base.h | 217 + .../extras/stlport/include/stl/_hash_fun.h | 146 + .../extras/stlport/include/stl/_hash_map.h | 500 + .../extras/stlport/include/stl/_hash_set.h | 495 + .../extras/stlport/include/stl/_hashtable.c | 553 + .../extras/stlport/include/stl/_hashtable.h | 658 + .../extras/stlport/include/stl/_heap.c | 246 + .../extras/stlport/include/stl/_heap.h | 125 + .../extras/stlport/include/stl/_iomanip.h | 165 + .../extras/stlport/include/stl/_ios.c | 127 + .../extras/stlport/include/stl/_ios.h | 187 + .../extras/stlport/include/stl/_ios_base.h | 345 + .../extras/stlport/include/stl/_ioserr.h | 12 + .../extras/stlport/include/stl/_iosfwd.h | 159 + .../stlport/include/stl/_iostream_string.h | 140 + .../extras/stlport/include/stl/_istream.c | 1466 ++ .../extras/stlport/include/stl/_istream.h | 359 + .../include/stl/_istreambuf_iterator.h | 161 + .../extras/stlport/include/stl/_iterator.h | 311 + .../stlport/include/stl/_iterator_base.h | 540 + .../stlport/include/stl/_iterator_old.h | 334 + .../extras/stlport/include/stl/_limits.c | 405 + .../extras/stlport/include/stl/_limits.h | 543 + .../extras/stlport/include/stl/_list.c | 266 + .../extras/stlport/include/stl/_list.h | 792 + .../extras/stlport/include/stl/_locale.h | 395 + .../extras/stlport/include/stl/_map.h | 435 + .../extras/stlport/include/stl/_mbstate_t.h | 43 + .../stlport/include/stl/_messages_facets.h | 185 + .../extras/stlport/include/stl/_monetary.c | 527 + .../extras/stlport/include/stl/_monetary.h | 435 + .../extras/stlport/include/stl/_move.h | 39 + .../stlport/include/stl/_move_construct_fwk.h | 159 + .../extras/stlport/include/stl/_new.h | 145 + .../extras/stlport/include/stl/_num_get.c | 626 + .../extras/stlport/include/stl/_num_get.h | 237 + .../extras/stlport/include/stl/_num_put.c | 538 + .../extras/stlport/include/stl/_num_put.h | 187 + .../extras/stlport/include/stl/_numeric.c | 106 + .../extras/stlport/include/stl/_numeric.h | 191 + .../extras/stlport/include/stl/_numpunct.h | 176 + .../extras/stlport/include/stl/_ostream.c | 455 + .../extras/stlport/include/stl/_ostream.h | 406 + .../include/stl/_ostreambuf_iterator.h | 102 + .../extras/stlport/include/stl/_pair.h | 186 + .../extras/stlport/include/stl/_prolog.h | 18 + .../stlport/include/stl/_pthread_alloc.h | 461 + .../stlport/include/stl/_ptrs_specialize.h | 83 + .../extras/stlport/include/stl/_queue.h | 268 + .../stlport/include/stl/_range_errors.c | 84 + .../stlport/include/stl/_range_errors.h | 60 + .../stlport/include/stl/_raw_storage_iter.h | 80 + .../extras/stlport/include/stl/_relops_cont.h | 29 + .../stlport/include/stl/_relops_hash_cont.h | 13 + .../extras/stlport/include/stl/_rope.c | 1407 ++ .../extras/stlport/include/stl/_rope.h | 2391 +++ .../extras/stlport/include/stl/_set.h | 412 + .../extras/stlport/include/stl/_slist.c | 230 + .../extras/stlport/include/stl/_slist.h | 914 + .../extras/stlport/include/stl/_slist_base.c | 104 + .../extras/stlport/include/stl/_slist_base.h | 90 + .../stlport/include/stl/_sparc_atomic.h | 61 + .../extras/stlport/include/stl/_sstream.c | 465 + .../extras/stlport/include/stl/_sstream.h | 266 + .../extras/stlport/include/stl/_stack.h | 133 + .../extras/stlport/include/stl/_stdexcept.h | 109 + .../stlport/include/stl/_stdexcept_base.c | 95 + .../stlport/include/stl/_stdexcept_base.h | 99 + .../stlport/include/stl/_stlport_version.h | 30 + .../stlport/include/stl/_stream_iterator.h | 253 + .../extras/stlport/include/stl/_streambuf.c | 208 + .../extras/stlport/include/stl/_streambuf.h | 287 + .../extras/stlport/include/stl/_string.c | 673 + .../extras/stlport/include/stl/_string.h | 1207 ++ .../extras/stlport/include/stl/_string_base.h | 231 + .../extras/stlport/include/stl/_string_fwd.h | 60 + .../extras/stlport/include/stl/_string_hash.h | 71 + .../extras/stlport/include/stl/_string_io.c | 195 + .../extras/stlport/include/stl/_string_io.h | 77 + .../extras/stlport/include/stl/_string_npos.h | 27 + .../stlport/include/stl/_string_operators.h | 602 + .../extras/stlport/include/stl/_string_sum.h | 414 + .../stlport/include/stl/_string_sum_methods.h | 155 + .../stlport/include/stl/_string_workaround.h | 599 + .../extras/stlport/include/stl/_strstream.h | 165 + .../extras/stlport/include/stl/_tempbuf.c | 57 + .../extras/stlport/include/stl/_tempbuf.h | 182 + .../extras/stlport/include/stl/_threads.c | 184 + .../extras/stlport/include/stl/_threads.h | 723 + .../extras/stlport/include/stl/_time_facets.c | 440 + .../extras/stlport/include/stl/_time_facets.h | 329 + .../extras/stlport/include/stl/_tree.c | 730 + .../extras/stlport/include/stl/_tree.h | 684 + .../extras/stlport/include/stl/_typeinfo.h | 79 + .../stlport/include/stl/_uninitialized.h | 443 + .../stlport/include/stl/_unordered_map.h | 463 + .../stlport/include/stl/_unordered_set.h | 418 + .../extras/stlport/include/stl/_valarray.c | 191 + .../extras/stlport/include/stl/_valarray.h | 1684 ++ .../extras/stlport/include/stl/_vector.c | 242 + .../extras/stlport/include/stl/_vector.h | 797 + .../stlport/include/stl/boost_type_traits.h | 150 + .../extras/stlport/include/stl/c_locale.h | 131 + .../extras/stlport/include/stl/char_traits.h | 299 + .../stlport/include/stl/concept_checks.h | 810 + .../extras/stlport/include/stl/config/_aix.h | 3 + .../stlport/include/stl/config/_android.h | 87 + .../extras/stlport/include/stl/config/_apcc.h | 30 + .../stlport/include/stl/config/_apple.h | 118 + .../stlport/include/stl/config/_as400.h | 55 + .../stlport/include/stl/config/_auto_link.h | 61 + .../extras/stlport/include/stl/config/_bc.h | 138 + .../stlport/include/stl/config/_clang.h | 208 + .../extras/stlport/include/stl/config/_como.h | 207 + .../extras/stlport/include/stl/config/_cray.h | 65 + .../stlport/include/stl/config/_cygwin.h | 9 + .../extras/stlport/include/stl/config/_dec.h | 113 + .../stlport/include/stl/config/_dec_vms.h | 89 + .../include/stl/config/_detect_dll_or_lib.h | 74 + .../extras/stlport/include/stl/config/_dm.h | 121 + .../stlport/include/stl/config/_epilog.h | 29 + .../extras/stlport/include/stl/config/_evc.h | 333 + .../stlport/include/stl/config/_feedback.h | 43 + .../stlport/include/stl/config/_freebsd.h | 3 + .../stlport/include/stl/config/_fujitsu.h | 7 + .../extras/stlport/include/stl/config/_gcc.h | 213 + .../stlport/include/stl/config/_hpacc.h | 129 + .../extras/stlport/include/stl/config/_hpux.h | 17 + .../extras/stlport/include/stl/config/_ibm.h | 144 + .../extras/stlport/include/stl/config/_icc.h | 44 + .../stlport/include/stl/config/_intel.h | 72 + .../extras/stlport/include/stl/config/_kai.h | 43 + .../stlport/include/stl/config/_linux.h | 125 + .../extras/stlport/include/stl/config/_mac.h | 6 + .../stlport/include/stl/config/_macosx.h | 9 + .../extras/stlport/include/stl/config/_mlc.h | 7 + .../extras/stlport/include/stl/config/_msvc.h | 285 + .../stlport/include/stl/config/_mwerks.h | 159 + .../include/stl/config/_native_headers.h | 50 + .../stlport/include/stl/config/_openbsd.h | 12 + .../extras/stlport/include/stl/config/_pin.h | 130 + .../stlport/include/stl/config/_prolog.h | 43 + .../extras/stlport/include/stl/config/_sgi.h | 94 + .../stlport/include/stl/config/_solaris.h | 77 + .../stlport/include/stl/config/_sunprocc.h | 166 + .../stlport/include/stl/config/_system.h | 192 + .../include/stl/config/_warnings_off.h | 51 + .../stlport/include/stl/config/_watcom.h | 151 + .../stlport/include/stl/config/_windows.h | 291 + .../stlport/include/stl/config/compat.h | 80 + .../stlport/include/stl/config/features.h | 1100 ++ .../extras/stlport/include/stl/config/host.h | 342 + .../stlport/include/stl/config/stl_confix.h | 97 + .../stlport/include/stl/config/stl_mycomp.h | 282 + .../stlport/include/stl/config/user_config.h | 326 + .../extras/stlport/include/stl/debug/_debug.c | 628 + .../extras/stlport/include/stl/debug/_debug.h | 473 + .../extras/stlport/include/stl/debug/_deque.h | 414 + .../stlport/include/stl/debug/_hashtable.h | 340 + .../stlport/include/stl/debug/_iterator.h | 457 + .../extras/stlport/include/stl/debug/_list.h | 495 + .../extras/stlport/include/stl/debug/_slist.h | 613 + .../stlport/include/stl/debug/_string.h | 828 + .../include/stl/debug/_string_sum_methods.h | 111 + .../extras/stlport/include/stl/debug/_tree.h | 317 + .../stlport/include/stl/debug/_vector.h | 425 + .../extras/stlport/include/stl/msl_string.h | 47 + .../stlport/include/stl/pointers/_deque.h | 390 + .../stlport/include/stl/pointers/_list.h | 345 + .../stlport/include/stl/pointers/_set.h | 564 + .../stlport/include/stl/pointers/_slist.h | 427 + .../stlport/include/stl/pointers/_tools.h | 474 + .../stlport/include/stl/pointers/_vector.h | 243 + .../extras/stlport/include/stl/type_manips.h | 321 + .../extras/stlport/include/stl/type_traits.h | 626 + .../pin-3.13/extras/stlport/include/streambuf | 52 + .../extras/stlport/include/streambuf.h | 53 + .../pin-3.13/extras/stlport/include/string | 59 + .../pin-3.13/extras/stlport/include/string.h | 66 + .../pin-3.13/extras/stlport/include/strstream | 61 + .../extras/stlport/include/strstream.h | 55 + .../pin-3.13/extras/stlport/include/time.h | 44 + .../extras/stlport/include/type_traits | 810 + .../pin-3.13/extras/stlport/include/typeinfo | 53 + .../extras/stlport/include/typeinfo.h | 87 + .../extras/stlport/include/unordered_map | 39 + .../extras/stlport/include/unordered_set | 39 + .../extras/stlport/include/using/cstring | 60 + .../extras/stlport/include/using/export | 12 + .../extras/stlport/include/using/fstream | 19 + .../extras/stlport/include/using/h/fstream.h | 4 + .../extras/stlport/include/using/h/iomanip.h | 6 + .../extras/stlport/include/using/h/iostream.h | 24 + .../extras/stlport/include/using/h/ostream.h | 6 + .../stlport/include/using/h/streambuf.h | 1 + .../stlport/include/using/h/strstream.h | 4 + .../extras/stlport/include/using/iomanip | 6 + .../pin-3.13/extras/stlport/include/using/ios | 41 + .../extras/stlport/include/using/iosfwd | 54 + .../extras/stlport/include/using/iostream | 14 + .../extras/stlport/include/using/istream | 16 + .../extras/stlport/include/using/locale | 65 + .../extras/stlport/include/using/ostream | 10 + .../extras/stlport/include/using/sstream | 16 + .../extras/stlport/include/using/streambuf | 5 + .../extras/stlport/include/using/strstream | 4 + .../pin-3.13/extras/stlport/include/utility | 66 + .../pin-3.13/extras/stlport/include/valarray | 51 + .../pin-3.13/extras/stlport/include/vector | 59 + .../pin-3.13/extras/stlport/include/wchar.h | 64 + .../pin-3.13/extras/stlport/include/wctype.h | 47 + .../include/xed/xed-address-width-enum.h | 44 + .../extras/xed-ia32/include/xed/xed-agen.h | 61 + .../xed-ia32/include/xed/xed-attribute-enum.h | 130 + .../xed-ia32/include/xed/xed-attributes.h | 23 + .../xed-ia32/include/xed/xed-build-defines.h | 55 + .../xed-ia32/include/xed/xed-category-enum.h | 134 + .../xed-ia32/include/xed/xed-chip-enum.h | 96 + .../xed-ia32/include/xed/xed-chip-features.h | 41 + .../xed-ia32/include/xed/xed-common-defs.h | 42 + .../xed-ia32/include/xed/xed-common-hdrs.h | 66 + .../include/xed/xed-convert-table-init.h | 31 + .../xed-ia32/include/xed/xed-cpuid-bit-enum.h | 128 + .../xed-ia32/include/xed/xed-cpuid-rec.h | 50 + .../extras/xed-ia32/include/xed/xed-decode.h | 64 + .../include/xed/xed-decoded-inst-api.h | 687 + .../xed-ia32/include/xed/xed-decoded-inst.h | 85 + .../extras/xed-ia32/include/xed/xed-disas.h | 47 + .../xed-ia32/include/xed/xed-encode-check.h | 26 + .../xed-ia32/include/xed/xed-encode-direct.h | 110 + .../extras/xed-ia32/include/xed/xed-encode.h | 286 + .../include/xed/xed-encoder-gen-defs.h | 27 + .../xed-ia32/include/xed/xed-encoder-hl.h | 664 + .../xed-ia32/include/xed/xed-encoder-iforms.h | 72 + .../xed-ia32/include/xed/xed-error-enum.h | 61 + .../xed-ia32/include/xed/xed-exception-enum.h | 89 + .../xed-ia32/include/xed/xed-extension-enum.h | 114 + .../include/xed/xed-flag-action-enum.h | 48 + .../xed-ia32/include/xed/xed-flag-enum.h | 62 + .../extras/xed-ia32/include/xed/xed-flags.h | 228 + .../xed-ia32/include/xed/xed-format-options.h | 59 + .../xed-ia32/include/xed/xed-gen-table-defs.h | 34 + .../xed-ia32/include/xed/xed-get-time.h | 68 + .../xed-ia32/include/xed/xed-iclass-enum.h | 1627 ++ .../xed-ia32/include/xed/xed-iform-enum.h | 6366 ++++++ .../xed-ia32/include/xed/xed-iform-map.h | 112 + .../xed-ia32/include/xed/xed-iformfl-enum.h | 3186 +++ .../extras/xed-ia32/include/xed/xed-ild.h | 56 + .../extras/xed-ia32/include/xed/xed-immdis.h | 194 + .../extras/xed-ia32/include/xed/xed-immed.h | 43 + .../include/xed/xed-init-pointer-names.h | 22 + .../extras/xed-ia32/include/xed/xed-init.h | 30 + .../extras/xed-ia32/include/xed/xed-inst.h | 363 + .../xed-ia32/include/xed/xed-interface.h | 84 + .../xed-ia32/include/xed/xed-isa-set-enum.h | 198 + .../extras/xed-ia32/include/xed/xed-isa-set.h | 32 + .../include/xed/xed-machine-mode-enum.h | 48 + .../include/xed/xed-nonterminal-enum.h | 293 + .../include/xed/xed-operand-accessors.h | 1526 ++ .../include/xed/xed-operand-action-enum.h | 48 + .../xed-ia32/include/xed/xed-operand-action.h | 31 + .../include/xed/xed-operand-convert-enum.h | 45 + .../include/xed/xed-operand-ctype-enum.h | 50 + .../include/xed/xed-operand-ctype-map.h | 23 + .../xed/xed-operand-element-type-enum.h | 50 + .../xed/xed-operand-element-xtype-enum.h | 62 + .../xed-ia32/include/xed/xed-operand-enum.h | 166 + .../include/xed/xed-operand-storage.h | 152 + .../include/xed/xed-operand-type-enum.h | 48 + .../xed/xed-operand-values-interface.h | 508 + .../include/xed/xed-operand-visibility-enum.h | 44 + .../include/xed/xed-operand-width-enum.h | 159 + .../extras/xed-ia32/include/xed/xed-patch.h | 58 + .../xed-ia32/include/xed/xed-portability.h | 181 + .../xed-ia32/include/xed/xed-print-info.h | 93 + .../xed-ia32/include/xed/xed-reg-class-enum.h | 66 + .../xed-ia32/include/xed/xed-reg-class.h | 57 + .../xed-ia32/include/xed/xed-reg-enum.h | 366 + .../xed-ia32/include/xed/xed-reg-role-enum.h | 47 + .../xed-ia32/include/xed/xed-rep-prefix.h | 56 + .../extras/xed-ia32/include/xed/xed-state.h | 188 + .../xed-ia32/include/xed/xed-syntax-enum.h | 44 + .../extras/xed-ia32/include/xed/xed-types.h | 126 + .../extras/xed-ia32/include/xed/xed-util.h | 249 + .../extras/xed-ia32/include/xed/xed-version.h | 24 + .../include/xed/xed-address-width-enum.h | 44 + .../extras/xed-intel64/include/xed/xed-agen.h | 61 + .../include/xed/xed-attribute-enum.h | 130 + .../xed-intel64/include/xed/xed-attributes.h | 23 + .../include/xed/xed-build-defines.h | 55 + .../include/xed/xed-category-enum.h | 134 + .../xed-intel64/include/xed/xed-chip-enum.h | 96 + .../include/xed/xed-chip-features.h | 41 + .../xed-intel64/include/xed/xed-common-defs.h | 42 + .../xed-intel64/include/xed/xed-common-hdrs.h | 66 + .../include/xed/xed-convert-table-init.h | 31 + .../include/xed/xed-cpuid-bit-enum.h | 128 + .../xed-intel64/include/xed/xed-cpuid-rec.h | 50 + .../xed-intel64/include/xed/xed-decode.h | 64 + .../include/xed/xed-decoded-inst-api.h | 687 + .../include/xed/xed-decoded-inst.h | 85 + .../xed-intel64/include/xed/xed-disas.h | 47 + .../include/xed/xed-encode-check.h | 26 + .../include/xed/xed-encode-direct.h | 110 + .../xed-intel64/include/xed/xed-encode.h | 286 + .../include/xed/xed-encoder-gen-defs.h | 27 + .../xed-intel64/include/xed/xed-encoder-hl.h | 664 + .../include/xed/xed-encoder-iforms.h | 72 + .../xed-intel64/include/xed/xed-error-enum.h | 61 + .../include/xed/xed-exception-enum.h | 89 + .../include/xed/xed-extension-enum.h | 114 + .../include/xed/xed-flag-action-enum.h | 48 + .../xed-intel64/include/xed/xed-flag-enum.h | 62 + .../xed-intel64/include/xed/xed-flags.h | 228 + .../include/xed/xed-format-options.h | 59 + .../include/xed/xed-gen-table-defs.h | 34 + .../xed-intel64/include/xed/xed-get-time.h | 68 + .../xed-intel64/include/xed/xed-iclass-enum.h | 1627 ++ .../xed-intel64/include/xed/xed-iform-enum.h | 6366 ++++++ .../xed-intel64/include/xed/xed-iform-map.h | 112 + .../include/xed/xed-iformfl-enum.h | 3186 +++ .../extras/xed-intel64/include/xed/xed-ild.h | 56 + .../xed-intel64/include/xed/xed-immdis.h | 194 + .../xed-intel64/include/xed/xed-immed.h | 43 + .../include/xed/xed-init-pointer-names.h | 22 + .../extras/xed-intel64/include/xed/xed-init.h | 30 + .../extras/xed-intel64/include/xed/xed-inst.h | 363 + .../xed-intel64/include/xed/xed-interface.h | 84 + .../include/xed/xed-isa-set-enum.h | 198 + .../xed-intel64/include/xed/xed-isa-set.h | 32 + .../include/xed/xed-machine-mode-enum.h | 48 + .../include/xed/xed-nonterminal-enum.h | 293 + .../include/xed/xed-operand-accessors.h | 1526 ++ .../include/xed/xed-operand-action-enum.h | 48 + .../include/xed/xed-operand-action.h | 31 + .../include/xed/xed-operand-convert-enum.h | 45 + .../include/xed/xed-operand-ctype-enum.h | 50 + .../include/xed/xed-operand-ctype-map.h | 23 + .../xed/xed-operand-element-type-enum.h | 50 + .../xed/xed-operand-element-xtype-enum.h | 62 + .../include/xed/xed-operand-enum.h | 166 + .../include/xed/xed-operand-storage.h | 152 + .../include/xed/xed-operand-type-enum.h | 48 + .../xed/xed-operand-values-interface.h | 508 + .../include/xed/xed-operand-visibility-enum.h | 44 + .../include/xed/xed-operand-width-enum.h | 159 + .../xed-intel64/include/xed/xed-patch.h | 58 + .../xed-intel64/include/xed/xed-portability.h | 181 + .../xed-intel64/include/xed/xed-print-info.h | 93 + .../include/xed/xed-reg-class-enum.h | 66 + .../xed-intel64/include/xed/xed-reg-class.h | 57 + .../xed-intel64/include/xed/xed-reg-enum.h | 366 + .../include/xed/xed-reg-role-enum.h | 47 + .../xed-intel64/include/xed/xed-rep-prefix.h | 56 + .../xed-intel64/include/xed/xed-state.h | 188 + .../xed-intel64/include/xed/xed-syntax-enum.h | 44 + .../xed-intel64/include/xed/xed-types.h | 126 + .../extras/xed-intel64/include/xed/xed-util.h | 249 + .../xed-intel64/include/xed/xed-version.h | 24 + src/tracer/pintool/pin-3.13/ia32/bin/pinbin | Bin 0 -> 5992204 bytes .../pintool/pin-3.13/ia32/bin/pinbin.sig | Bin 0 -> 7830 bytes src/tracer/pintool/pin-3.13/ia32/bin/pindb | Bin 0 -> 435564 bytes .../pintool/pin-3.13/ia32/bin/pindb.sig | Bin 0 -> 7830 bytes .../pin-3.13/ia32/lib-ext/libpin3dwarf.so.sig | Bin 0 -> 7830 bytes .../ia32/runtime/pincrt/crtbegin.o.sig | Bin 0 -> 7830 bytes .../ia32/runtime/pincrt/crtbeginS.o.sig | Bin 0 -> 7830 bytes .../pin-3.13/ia32/runtime/pincrt/crtend.o.sig | Bin 0 -> 7830 bytes .../ia32/runtime/pincrt/crtendS.o.sig | Bin 0 -> 7830 bytes .../ia32/runtime/pincrt/libc-dynamic.so.sig | Bin 0 -> 7830 bytes .../ia32/runtime/pincrt/libc-static.a.sig | Bin 0 -> 7830 bytes .../ia32/runtime/pincrt/libdl-dynamic.so.sig | Bin 0 -> 7830 bytes .../ia32/runtime/pincrt/libm-dynamic.so.sig | Bin 0 -> 7830 bytes .../ia32/runtime/pincrt/libos-apis.a.sig | Bin 0 -> 7830 bytes .../runtime/pincrt/libstlport-dynamic.so.sig | Bin 0 -> 7830 bytes .../runtime/pincrt/libunwind-dynamic.so.sig | Bin 0 -> 7830 bytes .../pin-3.13/ia32/runtime/pincrt/linker | Bin 0 -> 286119 bytes .../pin-3.13/ia32/runtime/pincrt/linker.sig | Bin 0 -> 7830 bytes src/tracer/pintool/pin-3.13/inscount.out | 0 .../pintool/pin-3.13/intel64/bin/pinbin | Bin 0 -> 5400304 bytes .../pintool/pin-3.13/intel64/bin/pinbin.sig | Bin 0 -> 7830 bytes src/tracer/pintool/pin-3.13/intel64/bin/pindb | Bin 0 -> 415768 bytes .../pintool/pin-3.13/intel64/bin/pindb.sig | Bin 0 -> 7830 bytes .../intel64/lib-ext/libpin3dwarf.so.sig | Bin 0 -> 7830 bytes .../intel64/runtime/pincrt/crtbegin.o.sig | Bin 0 -> 7830 bytes .../intel64/runtime/pincrt/crtbeginS.o.sig | Bin 0 -> 7830 bytes .../intel64/runtime/pincrt/crtend.o.sig | Bin 0 -> 7830 bytes .../intel64/runtime/pincrt/crtendS.o.sig | Bin 0 -> 7830 bytes .../runtime/pincrt/libc-dynamic.so.sig | Bin 0 -> 7830 bytes .../intel64/runtime/pincrt/libc-static.a.sig | Bin 0 -> 7829 bytes .../runtime/pincrt/libdl-dynamic.so.sig | Bin 0 -> 7830 bytes .../runtime/pincrt/libm-dynamic.so.sig | Bin 0 -> 7830 bytes .../intel64/runtime/pincrt/libos-apis.a.sig | Bin 0 -> 7830 bytes .../runtime/pincrt/libstlport-dynamic.so.sig | Bin 0 -> 7830 bytes .../runtime/pincrt/libunwind-dynamic.so.sig | Bin 0 -> 7830 bytes .../pin-3.13/intel64/runtime/pincrt/linker | Bin 0 -> 265107 bytes .../intel64/runtime/pincrt/linker.sig | Bin 0 -> 7830 bytes .../pintool/pin-3.13/licensing/EULA.txt | 707 + .../pin-3.13/licensing/LICENSE-FreeBSD | 144 + .../pin-3.13/licensing/LICENSE-STLport | 27 + .../pintool/pin-3.13/licensing/LICENSE-llvm | 72 + .../pintool/pin-3.13/licensing/NOTICE-libc | 5196 +++++ .../pintool/pin-3.13/licensing/NOTICE-libdl | 16 + .../pintool/pin-3.13/licensing/NOTICE-libm | 1015 + .../pin-3.13/licensing/NOTICE-libstdc++ | 81 + .../pintool/pin-3.13/licensing/NOTICE-linker | 5196 +++++ .../pintool/pin-3.13/licensing/redist.txt | 16 + .../licensing/third-party-programs.txt | 60 + src/tracer/pintool/pin-3.13/pin | Bin 0 -> 245272 bytes src/tracer/pintool/pin-3.13/pin.sig | Bin 0 -> 7830 bytes .../source/include/pin/foundation.PLH | 44 + .../source/include/pin/gen/backtrace_u.PH | 13 + .../source/include/pin/gen/base_ia32.PH | 41 + .../pin-3.13/source/include/pin/gen/bbl.PH | 25 + .../source/include/pin/gen/child_process.PH | 113 + .../include/pin/gen/child_process_client.PH | 27 + .../pin-3.13/source/include/pin/gen/debug.PH | 10 + .../source/include/pin/gen/debugger_client.PH | 83 + .../include/pin/gen/deprecated_client.PH | 19 + .../pin-3.13/source/include/pin/gen/edg.PH | 7 + .../source/include/pin/gen/exception.PH | 476 + .../source/include/pin/gen/fpstate_ia32.PH | 102 + .../source/include/pin/gen/fpstate_ia32e.PH | 100 + .../pin-3.13/source/include/pin/gen/image.PH | 397 + .../source/include/pin/gen/image_elf.PH | 7 + .../pin-3.13/source/include/pin/gen/img.PH | 40 + .../pin-3.13/source/include/pin/gen/ins.PH | 31 + .../include/pin/gen/ins_api_xed_ia32.PH | 246 + .../source/include/pin/gen/ins_ia32.PH | 82 + .../include/pin/gen/ins_syscall_ia32_unix.PH | 13 + .../source/include/pin/gen/ins_xed_ia32.PH | 13 + .../pin/gen/internal_exception_client.PH | 23 + .../pin-3.13/source/include/pin/gen/knob.PH | 404 + .../pin-3.13/source/include/pin/gen/lock.PH | 89 + .../source/include/pin/gen/message.PH | 292 + .../source/include/pin/gen/operand_ia32.PH | 94 + .../source/include/pin/gen/opin_client.PH | 59 + .../source/include/pin/gen/pin_client.PH | 559 + .../include/pin/gen/pin_client_replay.PH | 35 + .../source/include/pin/gen/pinsync.hpp | 890 + .../include/pin/gen/probe_instrument.PH | 13 + .../include/pin/gen/probe_instrument_ia32.PH | 7 + .../source/include/pin/gen/reg_ia32.PH | 1702 ++ .../include/pin/gen/reg_partial_ia32.PH | 60 + .../source/include/pin/gen/reginfo_ia32.PH | 224 + .../pin-3.13/source/include/pin/gen/regset.PH | 318 + .../source/include/pin/gen/regset_ia32.PH | 49 + .../pin-3.13/source/include/pin/gen/sec.PH | 39 + .../include/pin/gen/stopped_thread_client.PH | 28 + .../source/include/pin/gen/symbol_elf.PH | 13 + .../source/include/pin/gen/sysfuncs_linux.PH | 10 + .../source/include/pin/gen/thread_client.PH | 42 + .../pin-3.13/source/include/pin/gen/tls.PH | 75 + .../source/include/pin/gen/tls_client.PH | 195 + .../source/include/pin/gen/types_base.TLH | 238 + .../source/include/pin/gen/types_core.TLH | 204 + .../include/pin/gen/types_foundation.TLH | 164 + .../source/include/pin/gen/types_vmapi.TLH | 951 + .../pin-3.13/source/include/pin/gen/util.PH | 1229 ++ .../pin-3.13/source/include/pin/gen/val.PH | 9 + .../source/include/pin/gen/versions_client.PH | 16 + .../source/include/pin/level_base.PLH | 124 + .../source/include/pin/level_core.PLH | 63 + .../source/include/pin/level_foundation.PLH | 44 + .../source/include/pin/level_pinclient.PLH | 76 + .../source/include/pin/level_vmapi.PLH | 41 + .../pin-3.13/source/include/pin/pin-errtype.h | 106 + .../pintool/pin-3.13/source/include/pin/pin.H | 32 + .../pin-3.13/source/include/pin/pin_cache.H | 470 + .../pin-3.13/source/include/pin/pin_profile.H | 253 + .../pin-3.13/source/include/pin/pin_util.H | 57 + .../pin-3.13/source/include/pin/pin_version.h | 47 + .../pin-3.13/source/include/pin/pintool.exp | 3 + .../pin-3.13/source/include/pin/pintool.ver | 9 + .../pin-3.13/source/launcher/launcher_u.c | 132 + .../pin-3.13/source/launcher/os_specific.h | 40 + .../pin-3.13/source/launcher/os_specific_l.c | 318 + .../pin-3.13/source/launcher/os_specific_m.c | 164 + .../pintool/pin-3.13/source/launcher/utils.c | 198 + .../pintool/pin-3.13/source/launcher/utils.h | 89 + .../pin-3.13/source/tools/AlignChk/alignchk.H | 124 + .../source/tools/AlignChk/alignchk.cpp | 46 + .../pin-3.13/source/tools/AlignChk/makefile | 21 + .../source/tools/AlignChk/makefile.rules | 128 + .../source/tools/AlignChk/misaligned.c | 35 + .../source/tools/AlignChk/movdqa_test2.cpp | 51 + .../source/tools/AlignChk/movdqa_test2_ia32.s | 21 + .../tools/AlignChk/movdqa_test_ia32.asm | 24 + .../tools/AlignChk/movdqa_test_intel64.asm | 18 + .../source/tools/AttachDetach/add_floats.c | 36 + ...ttachReattachThreadDetachCallbacks_app.cpp | 167 + .../source/tools/AttachDetach/attach_app.cpp | 172 + .../AttachDetach/attach_in_sighandler_app.cpp | 369 + .../tools/AttachDetach/attach_read_stdin.py | 38 + .../tools/AttachDetach/attach_removed_app.cpp | 158 + .../source/tools/AttachDetach/change_mask.cpp | 98 + .../tools/AttachDetach/change_mask_app.cpp | 304 + .../source/tools/AttachDetach/chdir_app.cpp | 149 + .../check_blocking_real_time_signals_app.cpp | 191 + .../check_blocking_real_time_signals_tool.cpp | 105 + .../tools/AttachDetach/check_xmms_app.c | 84 + .../tools/AttachDetach/check_xmms_asm.asm | 157 + .../tools/AttachDetach/check_xmms_asm.s | 151 + .../tools/AttachDetach/check_xmms_tool.cpp | 78 + .../tools/AttachDetach/detach_after_addss.cpp | 113 + .../AttachDetach/detach_check_sigmask_app.cpp | 316 + .../tools/AttachDetach/detach_check_tool.cpp | 128 + .../AttachDetach/detach_in_sighandler_app.cpp | 283 + .../tools/AttachDetach/detach_probed_app.cpp | 106 + .../tools/AttachDetach/detach_probed_tool.cpp | 70 + .../detach_probed_wait_child_app.cpp | 141 + .../tools/AttachDetach/detach_syscall.cpp | 124 + .../tools/AttachDetach/detach_syscall_app.cpp | 84 + .../tools/AttachDetach/fp_save_restore_ia32.s | 111 + .../AttachDetach/fp_save_restore_intel64.s | 91 + .../tools/AttachDetach/jit_anls_detach.cpp | 92 + .../tools/AttachDetach/jit_detach_tool.cpp | 139 + .../tools/AttachDetach/jit_instr_detach.cpp | 129 + .../source/tools/AttachDetach/jit_tool.cpp | 250 + ...aunchReattachThreadDetachCallbacks_app.cpp | 109 + .../tools/AttachDetach/ld_linux_attach.cpp | 60 + .../AttachDetach/ld_linux_attach_app.cpp | 153 + .../tools/AttachDetach/main_attach_app.cpp | 168 + .../AttachDetach/main_command_line_app.cpp | 125 + .../source/tools/AttachDetach/makefile | 21 + .../source/tools/AttachDetach/makefile.rules | 876 + .../source/tools/AttachDetach/mt_attach.cpp | 380 + .../AttachDetach/mt_attach_and_execv.cpp | 234 + .../source/tools/AttachDetach/mt_blocked.cpp | 173 + .../source/tools/AttachDetach/mt_detach.cpp | 212 + .../source/tools/AttachDetach/mt_fork_app.cpp | 170 + .../source/tools/AttachDetach/mt_thread.cpp | 95 + .../source/tools/AttachDetach/my_dll.c | 23 + .../source/tools/AttachDetach/my_exe.c | 19 + .../tools/AttachDetach/pause_msg_app.cpp | 148 + .../source/tools/AttachDetach/probe_tool.cpp | 174 + .../source/tools/AttachDetach/read_stdin.cpp | 70 + .../tools/AttachDetach/read_stdin_app.cpp | 22 + .../tools/AttachDetach/read_write_app.cpp | 104 + ...reattachThreadDetachCallbacks_jit_tool.cpp | 308 + .../reattachThreadDetachCallbacks_tool.cpp | 298 + .../AttachDetach/reattachZombie_tool.cpp | 340 + .../tools/AttachDetach/reattach_jit_app.cpp | 111 + .../tools/AttachDetach/reattach_jit_tool.cpp | 383 + .../AttachDetach/reattach_probed_app.cpp | 114 + .../AttachDetach/reattach_probed_tool.cpp | 368 + .../reattach_verify_sigmask_app.cpp | 177 + .../AttachDetach/secondary_attach_app.cpp | 158 + .../secondary_command_line_app.cpp | 117 + .../source/tools/AttachDetach/send_signals.sh | 23 + .../tools/AttachDetach/short_func_app.cpp | 172 + .../tools/AttachDetach/short_func_ia32.s | 38 + .../tools/AttachDetach/short_func_intel64.s | 38 + .../tools/AttachDetach/short_func_tool.cpp | 129 + .../source/tools/AttachDetach/simple_tool.cpp | 38 + .../source/tools/AttachDetach/threadOrder.cpp | 99 + .../tools/AttachDetach/threadOrder_tool.cpp | 78 + .../tools/AttachDetach/tls_app_ia32.cpp | 236 + .../tools/AttachDetach/tls_app_intel64.cpp | 138 + .../source/tools/AttachDetach/tls_app_mac.cpp | 137 + .../tls_attach_detach_app_mac.cpp | 363 + .../tools/AttachDetach/verify_fpstate_app.cpp | 435 + .../tools/AttachDetach/verify_sigmask.cpp | 298 + .../source/tools/AttachDetach/w_app1.cpp | 245 + .../source/tools/AttachDetach/w_app2.cpp | 345 + .../source/tools/AttachDetach/w_app3.cpp | 140 + .../source/tools/AttachDetach/w_app4.cpp | 408 + .../tools/AttachDetach/w_app_launcher.cpp | 54 + .../tools/AttachDetach/w_app_launcher2.cpp | 108 + .../AttachDetach/w_attach_mt_thread_app.cpp | 140 + .../AttachDetach/w_attach_mt_thread_tool.cpp | 147 + .../tools/AttachDetach/w_attach_tool1.cpp | 362 + .../tools/AttachDetach/w_attach_tool2.cpp | 16263 ++++++++++++++++ .../tools/AttachDetach/w_attach_tool3.cpp | 192 + .../tools/AttachDetach/w_attach_tool4.cpp | 110 + .../tools/AttachDetach/w_attach_tool5.cpp | 116 + .../AttachDetach/w_pin_service_launcher.cpp | 492 + .../tools/AttachDetach/w_service_app1.cpp | 526 + .../tools/AttachDetach/w_simple_app.cpp | 55 + .../AttachDetach/w_simple_attach_tool.cpp | 167 + .../tools/AttachDetach/zombie_utils.cpp | 120 + .../source/tools/AttachDetach/zombie_utils.h | 65 + .../pin-3.13/source/tools/Buffer/allocate.cpp | 200 + .../source/tools/Buffer/buffer-lengths.cpp | 213 + .../source/tools/Buffer/buffer-predicate.cpp | 295 + .../source/tools/Buffer/buffer-then.cpp | 284 + .../tools/Buffer/buffer_invalid_reg.cpp | 138 + .../source/tools/Buffer/bufferaddr.cpp | 214 + .../source/tools/Buffer/buffererror.cpp | 187 + .../pin-3.13/source/tools/Buffer/makefile | 21 + .../source/tools/Buffer/makefile.rules | 139 + .../source/tools/Buffer/mlog_buffer.cpp | 287 + .../source/tools/Buffer/two_buffers.cpp | 242 + .../pin-3.13/source/tools/ChildProcess/1.sh | 3 + .../pin-3.13/source/tools/ChildProcess/2.sh | 2 + .../source/tools/ChildProcess/arglist.cpp | 93 + .../source/tools/ChildProcess/arglist.h | 40 + .../source/tools/ChildProcess/badexec.c | 22 + .../source/tools/ChildProcess/bind_now_app.c | 65 + .../tools/ChildProcess/child_injection_ppid.c | 95 + .../tools/ChildProcess/child_process.cpp | 57 + .../source/tools/ChildProcess/execvp.c | 28 + .../tools/ChildProcess/follow_child.cpp | 58 + .../ChildProcess/follow_child_3gen_tool.cpp | 70 + .../follow_child_3gen_tool_initsym.cpp | 44 + .../tools/ChildProcess/follow_child_tool.cpp | 109 + .../source/tools/ChildProcess/fork_app.c | 34 + .../source/tools/ChildProcess/fork_app2.c | 61 + .../tools/ChildProcess/fork_hang_app.cpp | 113 + .../tools/ChildProcess/fork_hang_tool.cpp | 74 + .../tools/ChildProcess/fork_jit_tool.cpp | 223 + .../tools/ChildProcess/fork_probed2.cpp | 124 + .../tools/ChildProcess/fork_probed_tool.cpp | 109 + .../tools/ChildProcess/grand_parent_tool.cpp | 152 + .../tools/ChildProcess/injection_test_app.c | 58 + .../source/tools/ChildProcess/makefile | 21 + .../source/tools/ChildProcess/makefile.rules | 797 + .../ChildProcess/null_arg_check_tool.cpp | 58 + .../tools/ChildProcess/null_check_app1.cpp | 51 + .../tools/ChildProcess/null_check_app2.cpp | 21 + .../tools/ChildProcess/parent_process.cpp | 63 + .../ChildProcess/parent_process_launcher.sh | 4 + .../ChildProcess/parent_process_popen.cpp | 50 + .../ChildProcess/parent_process_spawn.cpp | 59 + .../ChildProcess/parent_process_spawn2.cpp | 75 + .../parent_process_waitpid_bug.cpp | 97 + .../parent_process_waitpid_bug2.cpp | 147 + .../source/tools/ChildProcess/parent_tool.cpp | 142 + .../source/tools/ChildProcess/selfexec_app.c | 74 + .../source/tools/ChildProcess/sigchld_app.cpp | 56 + .../tools/ChildProcess/sigchld_app.reference | 1 + .../source/tools/ChildProcess/simple_tool.cpp | 38 + .../source/tools/ChildProcess/uname_script.sh | 2 + .../tools/ChildProcess/unix_parent_tool.cpp | 144 + .../source/tools/ChildProcess/vfork_app.c | 49 + .../tools/ChildProcess/win_child_process.cpp | 62 + .../ChildProcess/win_early_termination.cpp | 36 + .../win_launcher_debugged_process.cpp | 101 + .../ChildProcess/win_launcher_process.cpp | 97 + .../tools/ChildProcess/win_parent_process.cpp | 105 + .../win_parent_process1.reference | 25 + .../win_parent_process1_probed.reference | 25 + ...n_parent_process1_unicode_probed.reference | 25 + ..._process1_unicode_probed_withsym.reference | 25 + .../win_parent_process2.reference | 22 + .../win_parent_process2_jjj.reference | 22 + .../win_parent_process2_jjp.reference | 22 + .../win_parent_process2_jpj.reference | 22 + .../win_parent_process2_jpp.reference | 22 + .../win_parent_process2_pjj.reference | 22 + .../win_parent_process2_pjp.reference | 22 + .../win_parent_process2_ppj.reference | 22 + .../win_parent_process2_ppp.reference | 22 + .../win_parent_process2_unicode_ppp.reference | 22 + .../win_parent_process_launcher.bat | 9 + .../ChildProcess/win_parent_process_mt.cpp | 257 + .../win_parent_process_mt_launcher.bat | 6 + .../win_parent_process_mt_test_launcher.bat | 5 + ...rocess_mt_test_launcher_w_pintool_args.bat | 5 + .../win_parent_process_test_launcher.bat | 5 + ...t_process_test_launcher_w_pintool_args.bat | 5 + .../win_parent_process_unicode.cpp | 107 + .../win_parent_process_unicode_launcher.bat | 9 + .../win_terminate_process_dll.cpp | 69 + .../source/tools/Config/makefile.config | 338 + .../source/tools/Config/makefile.debug.rules | 87 + .../tools/Config/makefile.default.rules | 276 + .../source/tools/Config/makefile.rules.tmpl | 228 + .../source/tools/Config/makefile.tmpl | 21 + .../source/tools/Config/makefile.unix.config | 571 + .../pin-3.13/source/tools/Config/unix.vars | 194 + .../source/tools/Cpp11Tests/cpp11Threads.cpp | 201 + .../tools/Cpp11Tests/cpp11ThreadsApp.cpp | 80 + .../pin-3.13/source/tools/Cpp11Tests/makefile | 21 + .../source/tools/Cpp11Tests/makefile.rules | 104 + .../child_process_injection.cpp | 48 + .../child_process_injection_app.c | 50 + .../child_process_injection_app1.c | 48 + .../CrossIa32Intel64/child_process_linux.cpp | 51 + .../CrossIa32Intel64/child_process_mac.cpp | 52 + .../child_process_windows.cpp | 82 + .../tools/CrossIa32Intel64/compiler-env.bat | 60 + .../CrossIa32Intel64/early_termination.cpp | 30 + .../CrossIa32Intel64/follow_child_tool.cpp | 46 + .../follow_child_tool_sym.cpp | 51 + .../follow_child_tool_windows.cpp | 109 + .../grand_child_process_linux.cpp | 35 + .../grand_child_process_mac.cpp | 35 + .../grand_child_process_windows.cpp | 47 + .../source/tools/CrossIa32Intel64/makefile | 21 + .../tools/CrossIa32Intel64/makefile.rules | 616 + .../CrossIa32Intel64/parent_process_linux.cpp | 52 + .../CrossIa32Intel64/parent_process_mac.cpp | 54 + .../parent_process_windows.cpp | 96 + .../tools/CrossIa32Intel64/parent_tool.cpp | 45 + .../tools/CrossIa32Intel64/setuid_utility.c | 19 + .../tools/CrossIa32Intel64/sigchld_app.cpp | 55 + .../CrossIa32Intel64/sigchld_app.reference | 1 + .../w_terminate_process_dll.cpp | 69 + .../win_launcher_debugged_process.cpp | 122 + .../CrossIa32Intel64/win_launcher_process.cpp | 98 + .../source/tools/DebugInfo/app_backtrace.cpp | 71 + .../tools/DebugInfo/app_backtrace.reference | 7 + .../tools/DebugInfo/app_backtrace_app.cpp | 41 + .../source/tools/DebugInfo/backtrace.cpp | 74 + .../tools/DebugInfo/backtrace.reference | 3 + .../source/tools/DebugInfo/backtrace_dll.cpp | 55 + .../tools/DebugInfo/backtrace_from_dll.cpp | 50 + .../DebugInfo/backtrace_from_dll.reference | 3 + .../source/tools/DebugInfo/debugtest.cpp | 69 + .../pin-3.13/source/tools/DebugInfo/makefile | 21 + .../source/tools/DebugInfo/makefile.rules | 216 + .../tools/DebugInfo/omit_source_location.cpp | 96 + .../DebugInfo/pin_backtrace_on_assert.cpp | 51 + .../pin_backtrace_on_assert.reference | 6 + .../source/tools/DebugTrace/debugtrace.cpp | 823 + .../pin-3.13/source/tools/DebugTrace/makefile | 21 + .../source/tools/DebugTrace/makefile.rules | 86 + .../tools/Debugger/access-64-on-32.compare | 2 + .../tools/Debugger/access-64-on-32.pindb | 3 + .../tools/Debugger/action-pending-app.cpp | 71 + .../tools/Debugger/action-pending-tool.cpp | 87 + .../tools/Debugger/action-pending.compare | 2 + .../source/tools/Debugger/action-pending.gdb | 3 + .../source/tools/Debugger/app-pause-app.cpp | 70 + .../Debugger/app-pause-in-app-thread-tool.cpp | 133 + .../Debugger/app-pause-in-int-thread-tool.cpp | 142 + .../source/tools/Debugger/bp-icount.compare | 11 + .../source/tools/Debugger/bp-icount.gdb | 12 + .../source/tools/Debugger/bphandler.compare | 19 + .../tools/Debugger/bphandler.compare.lldb | 32 + .../source/tools/Debugger/bphandler.cpp | 125 + .../source/tools/Debugger/bphandler.gdb | 13 + .../source/tools/Debugger/bphandler.lldb | 13 + .../source/tools/Debugger/bphandler_app.c | 45 + .../source/tools/Debugger/bptest-asm-ia32.s | 25 + .../tools/Debugger/bptest-asm-intel64.s | 25 + .../source/tools/Debugger/bptest-ia32.compare | 6 + .../tools/Debugger/bptest-ia32.compareICC | 6 + .../source/tools/Debugger/bptest-ia32.gdb | 10 + .../tools/Debugger/bptest-intel64.compare | 6 + .../tools/Debugger/bptest-intel64.compareICC | 6 + .../source/tools/Debugger/bptest-intel64.gdb | 10 + .../pin-3.13/source/tools/Debugger/bptest.cpp | 18 + .../tools/Debugger/breaktool-wait.compare | 1 + .../source/tools/Debugger/breaktool-wait.gdb | 1 + .../source/tools/Debugger/breaktool.compare | 2 + .../tools/Debugger/breaktool.compare.lldb | 2 + .../source/tools/Debugger/breaktool.cpp | 119 + .../source/tools/Debugger/breaktool.gdb | 2 + .../source/tools/Debugger/breaktool.lldb | 2 + .../Debugger/breaktool_const_context.compare | 2 + .../Debugger/breaktool_const_context.gdb | 2 + .../source/tools/Debugger/callerapp.c | 38 + .../Debugger/check-if-thread-stopped.compare | 10 + .../Debugger/check-if-thread-stopped.cpp | 261 + .../Debugger/check-if-thread-stopped.pindb | 7 + .../source/tools/Debugger/checkpoint-app.c | 37 + .../tools/Debugger/checkpoint-app.compare | 4 + .../tools/Debugger/checkpoint-gdb.compare | 3 + .../source/tools/Debugger/checkpoint.cpp | 76 + .../source/tools/Debugger/checkpoint.gdb | 9 + .../tools/Debugger/debugger-shell-app-ia32.s | 18 + .../Debugger/debugger-shell-app-intel64.s | 18 + .../tools/Debugger/debugger-shell-app.cpp | 259 + .../source/tools/Debugger/debugger-type.cpp | 51 + .../source/tools/Debugger/debugger-type.gdb | 1 + .../source/tools/Debugger/debugger-type.lldb | 1 + .../tools/Debugger/default_mac_tool.cpp | 35 + .../source/tools/Debugger/dlopen-dlclose.c | 55 + .../pin-3.13/source/tools/Debugger/exec.cpp | 26 + .../source/tools/Debugger/execfail.compare | 3 + .../tools/Debugger/execfail.compare.lldb | 5 + .../source/tools/Debugger/execfail.gdb | 5 + .../source/tools/Debugger/execfail.lldb | 5 + .../source/tools/Debugger/fork.compare | 4 + .../source/tools/Debugger/fork.compare.lldb | 7 + .../pin-3.13/source/tools/Debugger/fork.cpp | 41 + .../pin-3.13/source/tools/Debugger/fork.gdb | 8 + .../pin-3.13/source/tools/Debugger/fork.lldb | 8 + .../tools/Debugger/gdb-detach-reattach-1.gdb | 7 + .../tools/Debugger/gdb-detach-reattach-2.gdb | 6 + .../Debugger/gdb-detach-reattach-app.compare | 2 + .../gdb-detach-reattach-fixed-port-1.gdb | 7 + .../gdb-detach-reattach-fixed-port-2.gdb | 6 + ...gdb-detach-reattach-fixed-port-app.compare | 2 + ...b-detach-reattach-fixed-port-gdb-1.compare | 3 + ...b-detach-reattach-fixed-port-gdb-2.compare | 3 + .../gdb-detach-reattach-gdb-1.compare | 3 + .../gdb-detach-reattach-gdb-2.compare | 3 + .../tools/Debugger/gdb-fixed-port.compare | 15 + .../source/tools/Debugger/gdb-fixed-port.gdb | 12 + .../Debugger/gdb-pthread-step-exit.compare | 1 + .../tools/Debugger/gdb-pthread-step-exit.gdb | 5 + .../gdb-svr4-libraries-extension.compare | 23 + .../Debugger/gdb-svr4-libraries-extension.gdb | 12 + .../source/tools/Debugger/int3-count.cpp | 71 + .../tools/Debugger/intercept-app-asm-ia32.s | 21 + .../Debugger/intercept-app-asm-intel64.s | 21 + .../source/tools/Debugger/intercept-app.cpp | 93 + .../Debugger/intercept-breakpoint-app.compare | 2 + .../Debugger/intercept-breakpoint-gdb.compare | 2 + .../tools/Debugger/intercept-breakpoint.gdb | 4 + .../source/tools/Debugger/intercept-tool.cpp | 139 + .../tools/Debugger/interpreter-remove.cpp | 44 + .../tools/Debugger/invalid-write.compare | 1 + .../source/tools/Debugger/invalid-write.gdb | 4 + .../source/tools/Debugger/invalidate-regs.cpp | 40 + .../source/tools/Debugger/launch-gdb-tool.cpp | 128 + .../source/tools/Debugger/launch-gdb.compare | 15 + .../source/tools/Debugger/launch-gdb.gdb | 12 + .../Debugger/launch-gdb_const_context.compare | 15 + .../Debugger/launch-gdb_const_context.gdb | 12 + .../Debugger/launch-pin-attach-debugger.py | 212 + .../tools/Debugger/library-load-tool.cpp | 91 + .../pin-3.13/source/tools/Debugger/makefile | 21 + .../source/tools/Debugger/makefile.rules | 1981 ++ .../pin-3.13/source/tools/Debugger/memlog.hpp | 48 + .../source/tools/Debugger/mt-exit-tool.cpp | 31 + .../source/tools/Debugger/mt-exit.cpp | 50 + .../source/tools/Debugger/mt-exit.gdb | 3 + .../tools/Debugger/null-emulator-ia32.cpp | 415 + .../tools/Debugger/null-emulator-intel64.cpp | 447 + .../tools/Debugger/pc-change-async-asm-ia32.s | 67 + .../Debugger/pc-change-async-asm-intel64.s | 66 + .../tools/Debugger/pc-change-async-tool.cpp | 199 + .../tools/Debugger/pc-change-async.compare | 1 + .../source/tools/Debugger/pc-change-async.cpp | 60 + .../source/tools/Debugger/pc-change-async.gdb | 3 + .../tools/Debugger/pc-change-bp-asm-ia32.s | 35 + .../tools/Debugger/pc-change-bp-asm-intel64.s | 34 + .../tools/Debugger/pc-change-bp.compare | 1 + .../source/tools/Debugger/pc-change-bp.cpp | 23 + .../source/tools/Debugger/pc-change-bp.gdb | 4 + .../source/tools/Debugger/pick-random-port.c | 161 + .../Debugger/pindb-abrupt-disconnect.pindb | 2 + .../tools/Debugger/pindb-async-stop.pindb | 3 + .../pindb-attach-after-custom-stop.compare | 3 + .../pindb-attach-after-custom-stop.pindbin | 2 + .../Debugger/pindb-invalidate-regs.compare | 2 + .../Debugger/pindb-invalidate-regs.pindb | 5 + .../tools/Debugger/pindb-kill-like-gdb.pindb | 2 + .../tools/Debugger/pindb-noprompt-kill.pindb | 1 + .../pindb-pthread-cont-exitgroup.compare | 1 + .../pindb-pthread-cont-exitgroup.pindb | 2 + .../Debugger/pindb-pthread-step-exit.compare | 3 + .../Debugger/pindb-pthread-step-exit.pindb | 5 + .../pindb-pthread-step-exitgroup.compare | 1 + .../pindb-pthread-step-exitgroup.pindb | 4 + .../Debugger/pindb-simple-command.compare | 2 + .../tools/Debugger/pindb-simple-command.pindb | 3 + ...mple-simultaneous-multi-serialize.compare1 | 9 + ...mple-simultaneous-multi-serialize.compare2 | 17 + ...-simple-simultaneous-multi-serialize.pindb | 11 + .../pindb-simple-simultaneous-multi.compare1 | 9 + .../pindb-simple-simultaneous-multi.compare2 | 17 + .../pindb-simple-simultaneous-multi.pindb | 14 + ...indb-simultaneous-multi-serialize.compare1 | 9 + ...indb-simultaneous-multi-serialize.compare2 | 9 + ...indb-simultaneous-multi-serialize.compare3 | 17 + ...indb-simultaneous-multi-serialize.compare4 | 9 + .../pindb-simultaneous-multi-serialize.pindb | 14 + .../pindb-simultaneous-multi.compare1 | 9 + .../pindb-simultaneous-multi.compare2 | 9 + .../pindb-simultaneous-multi.compare3 | 17 + .../pindb-simultaneous-multi.compare4 | 9 + .../Debugger/pindb-simultaneous-multi.pindb | 16 + ...indb-simultaneous-toolbreak-attach.compare | 11 + ...indb-simultaneous-toolbreak-attach.pindbin | 3 + ...indb-simultaneous-toolbreak-change.compare | 24 + .../pindb-simultaneous-toolbreak-change.pindb | 12 + ...b-simultaneous-toolbreak-serialize.compare | 19 + ...ndb-simultaneous-toolbreak-serialize.pindb | 10 + ...indb-simultaneous-toolbreak-squash.compare | 4 + .../pindb-simultaneous-toolbreak-squash.pindb | 4 + .../pindb-simultaneous-toolbreak-step.compare | 21 + .../pindb-simultaneous-toolbreak-step.pindb | 18 + .../pindb-simultaneous-toolbreak.compare | 11 + .../pindb-simultaneous-toolbreak.pindb | 4 + .../tools/Debugger/pindb-start-fini.pindb | 2 + .../pindb-win-continued-exception1.compare | 3 + .../pindb-win-continued-exception1.pindb | 4 + .../pindb-win-continued-exception2.compare | 3 + .../pindb-win-continued-exception2.pindb | 3 + .../Debugger/pindb-win-cpp-exception.compare | 3 + .../Debugger/pindb-win-cpp-exception.pindb | 3 + .../pindb-win-exception-after-exit.pindb | 2 + .../pindb-win-handled-exception.compare | 3 + .../pindb-win-handled-exception.pindb | 3 + .../pindb-win-library-notifications.compare | 5 + .../pindb-win-library-notifications.pindb | 10 + .../pindb-win-software-exception.compare | 3 + .../pindb-win-software-exception.pindb | 4 + .../pindb-win-squash-exception.compare | 6 + .../Debugger/pindb-win-squash-exception.pindb | 9 + .../Debugger/pindb-win-step-exception.compare | 4 + .../Debugger/pindb-win-step-exception.pindb | 6 + .../Debugger/pindb-win-step-library.compare | 6 + .../Debugger/pindb-win-step-library.pindb | 14 + .../Debugger/pindb-win-thread-stress.compare | 1 + .../Debugger/pindb-win-thread-stress.pindb | 4 + .../pindb-win-unhandled-exception.compare | 3 + .../pindb-win-unhandled-exception.pindb | 4 + .../source/tools/Debugger/pindb-zmm.compare | 5 + .../source/tools/Debugger/pindb-zmm.pindb | 8 + .../Debugger/pthread-bare-exit-asm-ia32.s | 29 + .../Debugger/pthread-bare-exit-asm-intel64.s | 25 + .../tools/Debugger/pthread-bare-exit.cpp | 43 + .../pthread-bare-exitgroup-asm-ia32.s | 28 + .../pthread-bare-exitgroup-asm-intel64.s | 24 + .../tools/Debugger/pthread-bare-exitgroup.cpp | 42 + .../pin-3.13/source/tools/Debugger/quit.gdb | 1 + .../source/tools/Debugger/reattach-loop.cpp | 39 + .../source/tools/Debugger/set-mode-tool.cpp | 68 + .../tools/Debugger/set_xmm_scratches.cpp | 89 + .../set_xmm_scratches_before_breakpoint.cpp | 163 + ...ches_before_breakpoint_and_set_xmm_reg.cpp | 157 + .../set_xmm_scratches_for_ymmtest.cpp | 91 + .../tools/Debugger/set_xmm_scratches_ia32.s | 29 + .../Debugger/set_xmm_scratches_intel64.s | 37 + .../source/tools/Debugger/siginfo.compare | 1 + .../source/tools/Debugger/siginfo.gdb | 3 + .../source/tools/Debugger/signal-catch.cpp | 36 + .../source/tools/Debugger/signal-step.compare | 1 + .../source/tools/Debugger/signal-step.gdb | 3 + .../tools/Debugger/simple-command-tool.cpp | 67 + .../tools/Debugger/simple-pindb-asm-ia32.asm | 45 + .../tools/Debugger/simple-pindb-asm-ia32.s | 39 + .../Debugger/simple-pindb-asm-intel64.asm | 43 + .../tools/Debugger/simple-pindb-asm-intel64.s | 39 + .../source/tools/Debugger/simple-pindb.cpp | 246 + .../pin-3.13/source/tools/Debugger/simple.c | 28 + .../source/tools/Debugger/simple.compare | 5 + .../source/tools/Debugger/simple.compare.lldb | 7 + .../pin-3.13/source/tools/Debugger/simple.gdb | 8 + .../source/tools/Debugger/simple.lldb | 8 + .../simultaneous-toolbreak-attach.compare | 12 + .../simultaneous-toolbreak-attach.gdb | 6 + .../simultaneous-toolbreak-change.compare | 13 + .../simultaneous-toolbreak-change.gdb | 8 + .../simultaneous-toolbreak-squash.compare | 4 + .../simultaneous-toolbreak-squash.gdb | 4 + .../Debugger/simultaneous-toolbreak.compare | 13 + .../tools/Debugger/simultaneous-toolbreak.cpp | 295 + .../tools/Debugger/simultaneous-toolbreak.gdb | 7 + ...multaneous-toolbreak_const_context.compare | 13 + .../simultaneous-toolbreak_const_context.gdb | 7 + .../source/tools/Debugger/sleep-unix.c | 32 + .../Debugger/stack-debugger-late.compare | 4 + .../tools/Debugger/stack-debugger-late.gdb | 3 + .../tools/Debugger/stack-debugger.compare | 8 + .../Debugger/stack-debugger.compare.lldb | 16 + .../source/tools/Debugger/stack-debugger.gdb | 11 + .../source/tools/Debugger/stack-debugger.lldb | 11 + .../tools/Debugger/start-fini-callback.cpp | 56 + .../tools/Debugger/start-fini.reference | 3 + .../Debugger/stop-resume-when-suspended.cpp | 99 + .../Debugger/stop-resume-when-suspended.pindb | 27 + .../stop-resume-when-suspended.reference | 1 + .../source/tools/Debugger/thread-unix.cpp | 101 + .../source/tools/Debugger/thread-win.cpp | 102 + .../source/tools/Debugger/thread.compare | 3 + .../pin-3.13/source/tools/Debugger/thread.cpp | 44 + .../pin-3.13/source/tools/Debugger/thread.gdb | 5 + .../tools/Debugger/use-debugger-shell.cpp | 31 + .../source/tools/Debugger/watchpoint-app.c | 46 + .../source/tools/Debugger/watchpoint.compare | 13 + .../source/tools/Debugger/watchpoint.cpp | 97 + .../Debugger/watchpoint_const_context.compare | 13 + .../Debugger/win-continued-exception1.cpp | 46 + .../Debugger/win-continued-exception2.cpp | 46 + .../tools/Debugger/win-cpp-exception.cpp | 25 + .../Debugger/win-exception-after-exit-dll.cpp | 39 + .../Debugger/win-exception-after-exit.cpp | 41 + .../source/tools/Debugger/win-foo-library.cpp | 17 + .../tools/Debugger/win-handled-exception.cpp | 53 + .../tools/Debugger/win-load-library.cpp | 43 + .../tools/Debugger/win-software-exception.cpp | 18 + .../tools/Debugger/win-thread-stress.cpp | 70 + .../Debugger/win-unhandled-exception.cpp | 17 + .../source/tools/Debugger/xmm-asm-ia32.s | 39 + .../source/tools/Debugger/xmm-asm-intel64.s | 40 + .../source/tools/Debugger/xmm-ia32.compare | 4 + .../source/tools/Debugger/xmm-ia32.gdb | 6 + ...cratch_regs_before_breakpoint_tool.compare | 4 + ...mm_scratch_regs_before_breakpoint_tool.gdb | 5 + ...before_breakpoint_tool_and_set_xmm_reg.gdb | 10 + ...s_before_breakpoint_tool_const_context.gdb | 5 + ...a32_with_set_xmm_scratch_regs_tool.compare | 4 + ...mm-ia32_with_set_xmm_scratch_regs_tool.gdb | 6 + .../source/tools/Debugger/xmm-intel64.compare | 4 + .../source/tools/Debugger/xmm-intel64.gdb | 6 + ...cratch_regs_before_breakpoint_tool.compare | 4 + ...mm_scratch_regs_before_breakpoint_tool.gdb | 5 + ...before_breakpoint_tool_and_set_xmm_reg.gdb | 10 + ...fore_breakpoint_tool_const_context.compare | 4 + ...s_before_breakpoint_tool_const_context.gdb | 5 + ...l64_with_set_xmm_scratch_regs_tool.compare | 4 + ...intel64_with_set_xmm_scratch_regs_tool.gdb | 6 + .../pin-3.13/source/tools/Debugger/xmm.c | 20 + .../source/tools/Debugger/ymm-asm-ia32.s | 27 + .../source/tools/Debugger/ymm-asm-intel64.s | 25 + .../source/tools/Debugger/ymm.compare | 2 + .../pin-3.13/source/tools/Debugger/ymm.cpp | 49 + .../pin-3.13/source/tools/Debugger/ymm.gdb | 7 + ...ymm_with_set_xmm_scratch_regs_tool.compare | 2 + .../ymm_with_set_xmm_scratch_regs_tool.gdb | 7 + .../source/tools/Debugger/zmm-asm-ia32.asm | 46 + .../source/tools/Debugger/zmm-asm-ia32.s | 54 + .../source/tools/Debugger/zmm-asm-intel64.asm | 40 + .../source/tools/Debugger/zmm-asm-intel64.s | 48 + .../source/tools/Debugger/zmm.compare | 6 + .../pin-3.13/source/tools/Debugger/zmm.cpp | 73 + .../pin-3.13/source/tools/Debugger/zmm.gdb | 13 + .../tools/GracefulExit/applicationexit.cpp | 78 + .../tools/GracefulExit/applicationexit.master | 2 + .../GracefulExit/create_and_exit_thread.cpp | 173 + .../create_and_exit_thread_app.cpp | 22 + .../create_and_exit_thread_utils.h | 31 + .../exitApplicationLocked_app.cpp | 55 + .../exitApplicationLocked_tool.cpp | 129 + .../tools/GracefulExit/exitFromFini_app.cpp | 95 + .../tools/GracefulExit/exitFromFini_tool.cpp | 194 + .../exitFromInstCallback_tool.cpp | 25 + .../source/tools/GracefulExit/makefile | 21 + .../source/tools/GracefulExit/makefile.rules | 319 + .../tools/GracefulExit/raceToEnterVm_app.cpp | 50 + .../tools/GracefulExit/raceToExit_app.cpp | 90 + .../tools/GracefulExit/threadFini_app.cpp | 242 + .../GracefulExit/threadFini_exception_app.cpp | 79 + .../tools/GracefulExit/threadFini_sendsig.cpp | 28 + .../tools/GracefulExit/threadFini_sig_app.cpp | 106 + .../tools/GracefulExit/threadFini_tool.cpp | 248 + .../source/tools/GracefulExit/threadUtils.h | 102 + .../GracefulExit/threadUtils_android.cpp | 153 + .../tools/GracefulExit/threadUtils_linux.cpp | 155 + .../GracefulExit/threadUtils_windows.cpp | 149 + .../pin-3.13/source/tools/I18N/i18n_tool.cpp | 107 + .../pin-3.13/source/tools/I18N/makefile | 21 + .../pin-3.13/source/tools/I18N/makefile.rules | 128 + .../tools/I18N/unix_i18n_tool.reference | 3 + .../source/tools/I18N/unix_unicode.cpp | 40 + .../source/tools/I18N/unix_unicode.reference | 1 + .../tools/I18N/unix_unicode_test_launcher.cpp | 149 + .../source/tools/I18N/win_i18n_tool.reference | 3 + .../source/tools/I18N/win_unicode.cpp | 41 + .../source/tools/I18N/win_unicode.reference | 1 + .../source/tools/I18N/win_unicode_ia32.pdb | Bin 0 -> 1526784 bytes .../source/tools/I18N/win_unicode_intel64.pdb | Bin 0 -> 1338368 bytes .../tools/I18N/win_unicode_test_launcher.cpp | 170 + .../pin-3.13/source/tools/IArg/DoFxsave.asm | 31 + .../pin-3.13/source/tools/IArg/DoFxsave.s | 32 + .../pin-3.13/source/tools/IArg/fxsave_app.cpp | 50 + .../source/tools/IArg/fxsave_size.cpp | 137 + .../tools/IArg/iarg_branch_taken_correct.cpp | 79 + .../tools/IArg/iarg_branch_taken_error.cpp | 89 + .../tools/IArg/iarg_explicit_memory_ea.cpp | 168 + .../IArg/iarg_explicit_memory_ea_app.cpp | 104 + .../iarg_explicit_memory_ea_app_asm_ia32.asm | 89 + ...arg_explicit_memory_ea_app_asm_intel64.asm | 81 + .../tools/IArg/iarg_inst_ptr_error_msg.cpp | 130 + .../source/tools/IArg/iarg_uint64.cpp | 106 + .../source/tools/IArg/iarg_uint64.reference | 6 + .../pin-3.13/source/tools/IArg/makefile | 21 + .../pin-3.13/source/tools/IArg/makefile.rules | 160 + .../source/tools/IArg/use_rtm_app.cpp | 29 + .../attachReattachImageLoadCallbacks_app.cpp | 169 + .../source/tools/ImageTests/badmunmap_app.cpp | 56 + .../tools/ImageTests/badmunmap_tool.cpp | 100 + .../source/tools/ImageTests/dummy_dll.c | 26 + .../source/tools/ImageTests/full_path_app.cpp | 45 + .../tools/ImageTests/full_path_tool.cpp | 47 + .../source/tools/ImageTests/gnu_hash.cpp | 103 + .../source/tools/ImageTests/gnu_hash_app.cpp | 60 + .../source/tools/ImageTests/hasLinesData.cpp | 86 + .../ImageTests/hasLinesData_app_main.cpp | 17 + .../tools/ImageTests/imageLoad_tool.cpp | 63 + .../source/tools/ImageTests/imageUnload_app.c | 39 + .../tools/ImageTests/imageUnload_tool.cpp | 84 + .../source/tools/ImageTests/image_load.cpp | 143 + .../tools/ImageTests/images_on_attach_app.cpp | 95 + .../ImageTests/images_on_attach_tool.cpp | 98 + .../source/tools/ImageTests/img_check_cet.cpp | 95 + .../tools/ImageTests/img_find_by_addr.cpp | 116 + .../tools/ImageTests/img_open_debug_info.cpp | 157 + .../source/tools/ImageTests/img_open_win.cpp | 83 + .../tools/ImageTests/l_imageLoad_app.cpp | 122 + .../source/tools/ImageTests/l_vdso_image.cpp | 165 + .../tools/ImageTests/l_vdso_image_app.cpp | 39 + .../launchReattachImageLoadCallbacks_app.cpp | 64 + .../source/tools/ImageTests/little_malloc.c | 73 + .../source/tools/ImageTests/load_dummy_dll.c | 24 + .../tools/ImageTests/load_dummy_dll_tool.cpp | 75 + .../pin-3.13/source/tools/ImageTests/makefile | 21 + .../source/tools/ImageTests/makefile.rules | 457 + .../pin-3.13/source/tools/ImageTests/my_dll.c | 23 + .../pin-3.13/source/tools/ImageTests/one.c | 27 + .../source/tools/ImageTests/pic_image.cpp | 117 + .../source/tools/ImageTests/pic_image_app.cpp | 19 + .../reattachImageLoadCallback_tool.cpp | 241 + .../source/tools/ImageTests/rebase_dll.c | 22 + .../tools/ImageTests/rebase_dll_tool.cpp | 71 + .../source/tools/ImageTests/region_compare.py | 52 + .../tools/ImageTests/single_segment.cpp | 71 + .../tools/ImageTests/single_segment_app.s | 27 + .../tools/ImageTests/split_image_linux.cpp | 209 + .../ImageTests/split_image_linux_app.cpp | 96 + .../ImageTests/split_image_linux_lib.cpp | 15 + .../tools/ImageTests/split_image_mac.cpp | 72 + .../tools/ImageTests/split_image_mac_app.cpp | 41 + .../pin-3.13/source/tools/ImageTests/two.c | 23 + .../tools/ImageTests/w_app_launcher.cpp | 55 + .../tools/ImageTests/w_imageLoad_app.cpp | 62 + .../source/tools/ImageTests/win_load_ntdll.c | 32 + .../source/tools/ImageTests/x86dll_app.cpp | 18 + .../InlinedFuncsOpt/inlined_funcs_ia32.asm | 353 + .../InlinedFuncsOpt/inlined_funcs_intel64.asm | 348 + .../InlinedFuncsOpt/inlined_funcs_opt.cpp | 776 + .../tools/InlinedFuncsOpt/inlined_shr.cpp | 52 + .../tools/InlinedFuncsOpt/inlined_shr_asm.asm | 28 + .../tools/InlinedFuncsOpt/inlined_shr_asm.s | 21 + .../InlinedFuncsOpt/inscount_for_lea_opt.cpp | 145 + .../source/tools/InlinedFuncsOpt/makefile | 21 + .../tools/InlinedFuncsOpt/makefile.rules | 97 + .../InlinedFuncsOpt/update_icount_intel64.asm | 60 + .../pin-3.13/source/tools/Insmix/insmix.cpp | 622 + .../pin-3.13/source/tools/Insmix/makefile | 21 + .../source/tools/Insmix/makefile.rules | 79 + .../source/tools/InstLib/alarm_manager.H | 177 + .../source/tools/InstLib/alarm_manager.cpp | 402 + .../pin-3.13/source/tools/InstLib/alarms.H | 398 + .../pin-3.13/source/tools/InstLib/alarms.cpp | 662 + .../source/tools/InstLib/asm_macros.h | 164 + .../source/tools/InstLib/asm_macros.inc | 113 + .../source/tools/InstLib/call-stack.H | 214 + .../source/tools/InstLib/call-stack.cpp | 654 + .../source/tools/InstLib/cntrl_client.py | 43 + .../source/tools/InstLib/control_chain.H | 161 + .../source/tools/InstLib/control_chain.cpp | 211 + .../source/tools/InstLib/control_manager.H | 296 + .../source/tools/InstLib/control_manager.cpp | 745 + .../source/tools/InstLib/controller_events.H | 71 + .../tools/InstLib/controller_events.cpp | 70 + .../source/tools/InstLib/debugger-shell.H | 278 + .../source/tools/InstLib/debugger-shell.cpp | 2988 +++ .../pin-3.13/source/tools/InstLib/filter.H | 194 + .../source/tools/InstLib/follow_child.H | 219 + .../pin-3.13/source/tools/InstLib/ialarm.H | 147 + .../pin-3.13/source/tools/InstLib/ialarm.cpp | 455 + .../pin-3.13/source/tools/InstLib/icount.H | 184 + .../source/tools/InstLib/init_alarm.H | 39 + .../source/tools/InstLib/init_alarm.cpp | 93 + .../pin-3.13/source/tools/InstLib/instlib.H | 33 + .../tools/InstLib/interactive_listener.H | 77 + .../tools/InstLib/interactive_listener.cpp | 196 + .../pin-3.13/source/tools/InstLib/makefile | 21 + .../source/tools/InstLib/makefile.rules | 77 + .../source/tools/InstLib/parse_control.H | 81 + .../source/tools/InstLib/parse_control.cpp | 222 + .../source/tools/InstLib/pcregions_control.H | 1101 ++ .../source/tools/InstLib/region_utils.H | 78 + .../source/tools/InstLib/regions_control.H | 751 + .../pin-3.13/source/tools/InstLib/skipper.H | 114 + .../pin-3.13/source/tools/InstLib/time_warp.H | 141 + .../source/tools/InstLibExamples/control.cpp | 100 + .../tools/InstLibExamples/control_detach.cpp | 99 + .../source/tools/InstLibExamples/filter.cpp | 91 + .../source/tools/InstLibExamples/filter_app.c | 45 + .../tools/InstLibExamples/follow_child.cpp | 51 + .../source/tools/InstLibExamples/icount.cpp | 55 + .../source/tools/InstLibExamples/int3-test.c | 22 + .../tools/InstLibExamples/itext-marker-test.c | 19 + .../source/tools/InstLibExamples/makefile | 21 + .../tools/InstLibExamples/makefile.rules | 173 + .../InstLibExamples/multi-start-stop-test.c | 43 + .../source/tools/InstLibExamples/one.c | 23 + .../source/tools/InstLibExamples/test-mt3.cpp | 192 + .../source/tools/InstructionTests/clflush.asm | 53 + .../source/tools/InstructionTests/clflush.s | 54 + .../InstructionTests/flush_cache_line.cpp | 103 + .../InstructionTests/flush_cache_line_app.cpp | 134 + .../source/tools/InstructionTests/makefile | 21 + .../tools/InstructionTests/makefile.rules | 105 + .../pushpopcall_riprelative.s | 61 + .../tools/InstructionTests/rewritememop1.cpp | 316 + .../callbacks_order.cpp | 96 + .../callbacks_order.reference | 8 + .../instrumentation_order.cpp | 133 + .../instrumentation_order.ref | 4 + .../instrumentation_order1.cpp | 133 + .../instrumentation_order1.ref | 4 + .../instrumentation_order10.cpp | 142 + .../instrumentation_order10.ref | 8 + .../instrumentation_order11.cpp | 85 + .../instrumentation_order11.ref | 3 + .../instrumentation_order12.cpp | 85 + .../instrumentation_order12.ref | 3 + .../instrumentation_order13.cpp | 80 + .../instrumentation_order13.ref | 3 + .../instrumentation_order14.cpp | 78 + .../instrumentation_order15.cpp | 79 + .../instrumentation_order15.ref | 1 + .../instrumentation_order16.cpp | 78 + .../instrumentation_order16.ref | 2 + .../instrumentation_order17.cpp | 78 + .../instrumentation_order17.ref | 2 + .../instrumentation_order18.cpp | 75 + .../instrumentation_order18.ref | 2 + .../instrumentation_order19.cpp | 75 + .../instrumentation_order19.ref | 2 + .../instrumentation_order2.cpp | 129 + .../instrumentation_order2.ref | 4 + .../instrumentation_order20.cpp | 94 + .../instrumentation_order21.cpp | 94 + .../instrumentation_order22.cpp | 84 + .../instrumentation_order23.cpp | 83 + .../instrumentation_order3.cpp | 129 + .../instrumentation_order3.ref | 4 + .../instrumentation_order4.cpp | 133 + .../instrumentation_order4.ref | 6 + .../instrumentation_order5.cpp | 129 + .../instrumentation_order5.ref | 4 + .../instrumentation_order6.cpp | 133 + .../instrumentation_order6.ref | 6 + .../instrumentation_order7.cpp | 133 + .../instrumentation_order7.ref | 6 + .../instrumentation_order8.cpp | 134 + .../instrumentation_order8.ref | 4 + .../instrumentation_order9.cpp | 142 + .../instrumentation_order9.ref | 8 + .../instrumentation_order_app.cpp | 33 + .../instrumentation_order_app.h | 16 + .../InstrumentationOrderAndVersion/makefile | 21 + .../makefile.rules | 315 + .../redblue.cpp | 23 + .../InstrumentationOrderAndVersion/redblue.s | 46 + .../redblue_ia32.asm | 51 + .../redblue_intel64.asm | 49 + .../special.cpp | 157 + .../special.ref | 14 + .../special_case.cpp | 155 + .../special_case.ref | 20 + .../special_case1.cpp | 147 + .../special_case1.ref | 14 + .../special_case2.cpp | 148 + .../special_case3.cpp | 159 + .../special_case_aoti.cpp | 165 + .../special_case_aoti.ref | 20 + .../special_case_aoti1.cpp | 166 + .../special_case_aoti1.ref | 26 + .../special_case_app.cpp | 39 + .../DynamicFuncInstrument.cpp | 238 + .../JitProfilingApiTests/DynamicInsCount.cpp | 166 + .../source/tools/JitProfilingApiTests/foo.s | 28 + .../tools/JitProfilingApiTests/jitprofiling.h | 595 + .../tools/JitProfilingApiTests/jitter_app.cpp | 178 + .../tools/JitProfilingApiTests/makefile | 21 + .../tools/JitProfilingApiTests/makefile.rules | 107 + .../tools/LinuxTests/check_low_high_image.cpp | 152 + .../pin-3.13/source/tools/LinuxTests/makefile | 21 + .../source/tools/LinuxTests/makefile.rules | 101 + .../source/tools/LinuxTests/plt_syms.cpp | 89 + .../source/tools/LinuxTests/plt_syms_app.cpp | 28 + .../source/tools/LinuxTests/unmap_relro.cpp | 139 + .../tools/LinuxTests/unmap_relro_app.cpp | 22 + .../pin-3.13/source/tools/Maid/CallStack.H | 69 + .../pin-3.13/source/tools/Maid/CallStack.cpp | 177 + .../pin-3.13/source/tools/Maid/Maid.cpp | 377 + .../pintool/pin-3.13/source/tools/Maid/README | 60 + .../pin-3.13/source/tools/Maid/addrfile.txt | 1 + .../source/tools/Maid/argv_readparam.cpp | 274 + .../source/tools/Maid/argv_readparam.h | 21 + .../pin-3.13/source/tools/Maid/makefile | 21 + .../pin-3.13/source/tools/Maid/makefile.rules | 103 + .../source/tools/Maid/syscall_names.H | 17 + .../source/tools/Maid/syscall_names.cpp | 927 + .../tools/ManualExamples/buffer_linux.cpp | 287 + .../tools/ManualExamples/buffer_windows.cpp | 247 + .../source/tools/ManualExamples/countreps.cpp | 588 + .../source/tools/ManualExamples/detach.cpp | 78 + .../ManualExamples/divide_by_zero_unix.c | 120 + .../tools/ManualExamples/divide_by_zero_win.c | 46 + .../source/tools/ManualExamples/emudiv.cpp | 144 + .../source/tools/ManualExamples/fibonacci.cpp | 67 + .../ManualExamples/follow_child_app1.cpp | 49 + .../ManualExamples/follow_child_app2.cpp | 47 + .../ManualExamples/follow_child_tool.cpp | 40 + .../source/tools/ManualExamples/fork_app.cpp | 36 + .../tools/ManualExamples/fork_jit_tool.cpp | 99 + .../source/tools/ManualExamples/imageload.cpp | 91 + .../source/tools/ManualExamples/inscount.out | 1 + .../source/tools/ManualExamples/inscount0.cpp | 83 + .../source/tools/ManualExamples/inscount1.cpp | 90 + .../source/tools/ManualExamples/inscount2.cpp | 89 + .../tools/ManualExamples/inscount_tls.cpp | 145 + .../tools/ManualExamples/invocation.cpp | 133 + .../source/tools/ManualExamples/isampling.cpp | 116 + .../source/tools/ManualExamples/itrace.cpp | 67 + .../tools/ManualExamples/little_malloc.c | 73 + .../source/tools/ManualExamples/makefile | 21 + .../tools/ManualExamples/makefile.rules | 189 + .../source/tools/ManualExamples/malloc_mt.cpp | 128 + .../source/tools/ManualExamples/malloc_mt.out | Bin 0 -> 3157 bytes .../tools/ManualExamples/malloctrace.cpp | 152 + .../tools/ManualExamples/nonstatica.cpp | 130 + .../source/tools/ManualExamples/pinatrace.cpp | 103 + .../source/tools/ManualExamples/proccount.cpp | 260 + .../source/tools/ManualExamples/proccount.out | 911 + .../tools/ManualExamples/proccount1.cpp | 260 + .../tools/ManualExamples/proccount1.out | 128 + .../tools/ManualExamples/replacesigprobed.cpp | 128 + .../source/tools/ManualExamples/safecopy.cpp | 92 + .../stack-debugger-tutorial.sln | 20 + .../stack-debugger-tutorial.vcxproj | 85 + .../stack-debugger-tutorial.vcxproj.filters | 6 + .../tools/ManualExamples/stack-debugger.cpp | 432 + .../source/tools/ManualExamples/statica.cpp | 135 + .../tools/ManualExamples/staticcount.cpp | 82 + .../source/tools/ManualExamples/strace.cpp | 142 + .../tools/ManualExamples/w_malloctrace.cpp | 149 + .../tools/MemTrace/atomic_increment_ia32.asm | 24 + .../tools/MemTrace/atomic_increment_ia32.s | 20 + .../MemTrace/atomic_increment_intel64.asm | 21 + .../tools/MemTrace/atomic_increment_intel64.s | 21 + .../pin-3.13/source/tools/MemTrace/makefile | 21 + .../source/tools/MemTrace/makefile.rules | 150 + .../source/tools/MemTrace/membuffer.cpp | 270 + .../tools/MemTrace/membuffer_simple.cpp | 265 + .../tools/MemTrace/membuffer_simple_tid.cpp | 363 + .../tools/MemTrace/membuffer_threadpool.cpp | 761 + .../source/tools/MemTrace/memtrace.cpp | 693 + .../source/tools/MemTrace/memtrace_simple.cpp | 484 + .../tools/MemTrace/memtrace_threadpool.cpp | 960 + .../pin-3.13/source/tools/MemTrace/thread.c | 61 + .../source/tools/MemTrace/thread2.cpp | 87 + .../tools/MemTrace/threadpool_statistics.h | 262 + .../tools/MemTranslate/indirect_jmp.asm | 30 + .../source/tools/MemTranslate/indirect_jmp.s | 28 + .../indirect_jmp_with_translation.cpp | 152 + .../source/tools/MemTranslate/makefile | 21 + .../source/tools/MemTranslate/makefile.rules | 138 + .../tools/MemTranslate/malloc_translation.cpp | 149 + .../MemTranslate/malloc_translation_app.c | 154 + .../MemTranslate/memory_addr_callback.cpp | 503 + .../memory_addr_callback_then.cpp | 197 + .../MemTranslate/memory_callback_error.cpp | 122 + .../tools/MemTranslate/rewrite_memory_ptr.cpp | 123 + .../MemTranslate/translate_32bit_register.cpp | 131 + .../translate_32bit_register_app.cpp | 39 + .../pin-3.13/source/tools/Memory/README | 9 + .../tools/Memory/access_protection_app.cpp | 123 + .../source/tools/Memory/address_mapping.cpp | 169 + .../tools/Memory/address_mapping_probe.cpp | 159 + .../pin-3.13/source/tools/Memory/allcache.cpp | 219 + .../source/tools/Memory/big_malloc.cpp | 94 + .../pin-3.13/source/tools/Memory/cache.H | 444 + .../tools/Memory/check_memory_access_app.cpp | 75 + .../tools/Memory/check_memory_access_tool.cpp | 79 + .../pin-3.13/source/tools/Memory/dcache.cpp | 351 + .../tools/Memory/dcache_xscale_config.cpp | 122 + .../pin-3.13/source/tools/Memory/footprint.H | 281 + .../source/tools/Memory/footprint.cpp | 42 + .../pin-3.13/source/tools/Memory/icache.cpp | 243 + .../pin-3.13/source/tools/Memory/makefile | 21 + .../source/tools/Memory/makefile.rules | 271 + .../source/tools/Memory/malloc_stress.cpp | 208 + .../pin-3.13/source/tools/Memory/memalign.cpp | 135 + .../pin-3.13/source/tools/Memory/memalloc.cpp | 168 + .../source/tools/Memory/memalloc2.cpp | 195 + ...cation_from_app_access_protection_tool.cpp | 90 + ...ation_from_tool_access_protection_tool.cpp | 114 + .../source/tools/Memory/memory_limit.cpp | 101 + .../source/tools/Memory/mmap_reader_app.cpp | 39 + .../source/tools/Memory/new_delete_app.cpp | 67 + .../source/tools/Memory/new_delete_tool.cpp | 52 + .../source/tools/Memory/print_stack.c | 53 + .../pin-3.13/source/tools/Memory/print_vdso.c | 46 + .../source/tools/Memory/print_vvar.cpp | 49 + .../tools/Memory/restrict_memory_vdso.cpp | 54 + .../pintool/pin-3.13/source/tools/Mix/README | 155 + .../source/tools/Mix/assy-support-ia32.asm | 31 + .../source/tools/Mix/assy-support-intel64.asm | 26 + .../pin-3.13/source/tools/Mix/makefile | 21 + .../pin-3.13/source/tools/Mix/makefile.rules | 123 + .../source/tools/Mix/marker-example.cpp | 46 + .../pin-3.13/source/tools/Mix/mix-fp-state.H | 41 + .../pin-3.13/source/tools/Mix/mix-mt.cpp | 1449 ++ .../pin-3.13/source/tools/Mix/summarize.py | 143 + .../pin-3.13/source/tools/Mix/test-mt.cpp | 146 + .../source/tools/Mmx/fpstack_ia32_win.asm | 67 + .../pin-3.13/source/tools/Mmx/makefile | 21 + .../pin-3.13/source/tools/Mmx/makefile.rules | 111 + .../source/tools/Mmx/mmx_test1_app.cpp | 42 + .../source/tools/Mmx/mmx_test1_tool.cpp | 71 + .../source/tools/Mmx/mmx_test2_app.cpp | 23 + .../source/tools/Mmx/mmx_test2_tool.cpp | 70 + .../source/tools/Mmx/mmxsequence_ia32_win.asm | 46 + .../source/tools/MyPinTool}/MyPinTool.cpp | 0 .../pin-3.13/source/tools/MyPinTool/makefile | 21 + .../source/tools/MyPinTool/makefile.rules | 74 + .../source/tools/NonInlinedFuncsOpt/makefile | 21 + .../tools/NonInlinedFuncsOpt/makefile.rules | 93 + .../NonInlinedFuncsOpt/multiple_analysis.cpp | 60 + .../pin-3.13/source/tools/Probes/app_trace.c | 64 + .../pin-3.13/source/tools/Probes/arglist.cpp | 93 + .../pin-3.13/source/tools/Probes/arglist.h | 40 + .../source/tools/Probes/atfork_callbacks.cpp | 86 + .../source/tools/Probes/atfork_callbacks.h | 109 + .../tools/Probes/atfork_callbacks_app.cpp | 118 + .../pin-3.13/source/tools/Probes/bad_call.c | 36 + .../pin-3.13/source/tools/Probes/bad_jump.c | 36 + .../tools/Probes/before_after_defaultcall.cpp | 416 + .../Probes/before_after_defaultcall_app.c | 382 + .../before_after_defaultcall_app_ia32.pdb | Bin 0 -> 1158144 bytes .../before_after_defaultcall_app_intel64.pdb | Bin 0 -> 1158144 bytes .../tools/Probes/before_after_fastcall.cpp | 416 + .../tools/Probes/before_after_fastcall_app.c | 383 + .../Probes/before_after_fastcall_app_ia32.pdb | Bin 0 -> 969728 bytes .../before_after_fastcall_app_intel64.pdb | Bin 0 -> 1043456 bytes .../tools/Probes/before_after_stdcall.cpp | 414 + .../tools/Probes/before_after_stdcall_app.c | 384 + .../Probes/before_after_stdcall_app_ia32.pdb | Bin 0 -> 969728 bytes .../before_after_stdcall_app_intel64.pdb | Bin 0 -> 1043456 bytes .../source/tools/Probes/child_process.cpp | 35 + .../source/tools/Probes/code_range.cpp | 180 + .../source/tools/Probes/context_probe.cpp | 94 + .../tools/Probes/create_process_app.cpp | 63 + .../source/tools/Probes/deadlock_in_ipc.cpp | 151 + .../tools/Probes/default_probe_size.cpp | 94 + .../source/tools/Probes/dltest_unix.c | 65 + .../pin-3.13/source/tools/Probes/dltest_win.c | 72 + .../source/tools/Probes/do_nothing_ia32.asm | 78 + .../source/tools/Probes/do_nothing_ia32.s | 81 + .../tools/Probes/do_nothing_intel64.asm | 75 + .../source/tools/Probes/do_nothing_intel64.s | 100 + .../pin-3.13/source/tools/Probes/empty.c | 36 + .../pin-3.13/source/tools/Probes/emptysub.c | 21 + .../pin-3.13/source/tools/Probes/err_call.c | 35 + .../source/tools/Probes/err_replace.c | 37 + .../pin-3.13/source/tools/Probes/error-main.c | 36 + .../pin-3.13/source/tools/Probes/error-sub.c | 43 + .../source/tools/Probes/error-unix-jit.cpp | 114 + .../source/tools/Probes/error-unix-probe.cpp | 103 + .../source/tools/Probes/error-win-jit.cpp | 97 + .../source/tools/Probes/error-win-probe.cpp | 90 + .../pin-3.13/source/tools/Probes/exc.cpp | 18 + .../tools/Probes/exception_in_dll_app.cpp | 138 + .../tools/Probes/exception_in_dll_tool.cpp | 122 + .../tools/Probes/exception_in_mt_attach.cpp | 155 + .../Probes/exception_in_mt_attach_app.cpp | 276 + .../tools/Probes/exception_in_probe.cpp | 132 + .../tools/Probes/exception_in_probe_app.c | 50 + .../Probes/exception_in_probe_on_probe.cpp | 75 + .../exception_in_probe_on_probe_sig.cpp | 87 + .../tools/Probes/exception_in_probe_sig.cpp | 130 + .../tools/Probes/exception_in_probed_call.cpp | 62 + .../Probes/exception_in_probed_call_after.cpp | 108 + .../exception_in_probed_call_after_app.c | 68 + .../Probes/exception_in_probed_call_app.c | 63 + ...exception_in_probed_call_cpp_after_app.cpp | 101 + .../exception_in_probed_call_cpp_app.cpp | 98 + .../Probes/exception_in_probed_call_sig.cpp | 76 + .../pin-3.13/source/tools/Probes/exit_app.cpp | 40 + .../source/tools/Probes/exit_repl.cpp | 108 + .../pin-3.13/source/tools/Probes/fall_thru.c | 36 + .../pin-3.13/source/tools/Probes/fork_app.cpp | 77 + .../pin-3.13/source/tools/Probes/func_nops.c | 19 + .../source/tools/Probes/func_nops_asm.asm | 36 + .../source/tools/Probes/func_nops_asm.s | 33 + .../source/tools/Probes/getesp_ia32.asm | 25 + .../source/tools/Probes/getesp_intel64.asm | 23 + .../source/tools/Probes/getstack_ia32.s | 27 + .../source/tools/Probes/getstack_intel64.s | 27 + .../pin-3.13/source/tools/Probes/good_jump.c | 36 + .../source/tools/Probes/heavy_stack_win.c | 50 + .../source/tools/Probes/high_target.c | 36 + .../pin-3.13/source/tools/Probes/init.cpp | 164 + .../source/tools/Probes/ins_fetch_overrun.cpp | 77 + .../tools/Probes/ins_fetch_overrun_app.asm | 30 + .../tools/Probes/ins_fetch_overrun_app.c | 19 + .../tools/Probes/ins_fetch_overrun_app.s | 32 + .../pin-3.13/source/tools/Probes/insert1.cpp | 97 + .../pin-3.13/source/tools/Probes/insert10.cpp | 144 + .../pin-3.13/source/tools/Probes/insert11.cpp | 142 + .../pin-3.13/source/tools/Probes/insert12.cpp | 130 + .../source/tools/Probes/insert1win.cpp | 79 + .../pin-3.13/source/tools/Probes/insert2.cpp | 115 + .../source/tools/Probes/insert2win.cpp | 110 + .../pin-3.13/source/tools/Probes/insert3.cpp | 136 + .../source/tools/Probes/insert3win.cpp | 116 + .../pin-3.13/source/tools/Probes/insert4.cpp | 132 + .../pin-3.13/source/tools/Probes/insert5.cpp | 144 + .../pin-3.13/source/tools/Probes/insert6.cpp | 151 + .../pin-3.13/source/tools/Probes/insert7.cpp | 118 + .../pin-3.13/source/tools/Probes/insert8.cpp | 136 + .../pin-3.13/source/tools/Probes/insert9.cpp | 122 + .../tools/Probes/insert_call_probed.cpp | 133 + .../tools/Probes/insert_call_probed.reference | 5 + .../tools/Probes/insert_call_probed_app.c | 73 + .../source/tools/Probes/insertfast.cpp | 192 + .../source/tools/Probes/insertstd.cpp | 197 + .../pin-3.13/source/tools/Probes/ipr.c | 43 + .../pin-3.13/source/tools/Probes/iprtool.cpp | 116 + .../source/tools/Probes/jmp_in_probe.cpp | 111 + .../source/tools/Probes/jmp_in_probe_app.cpp | 35 + .../source/tools/Probes/jmp_in_probe_app1.cpp | 36 + .../tools/Probes/jmp_in_probe_intel64.asm | 25 + .../tools/Probes/jmp_in_probe_intel64.s | 22 + .../source/tools/Probes/little_malloc.c | 80 + .../pin-3.13/source/tools/Probes/load_map.cpp | 232 + .../source/tools/Probes/load_map_app.cpp | 37 + .../source/tools/Probes/local_branch_ia32.s | 161 + .../tools/Probes/local_branch_intel64.s | 194 + .../pin-3.13/source/tools/Probes/makefile | 21 + .../source/tools/Probes/makefile.rules | 1247 ++ .../source/tools/Probes/malloctrace2.cpp | 272 + .../source/tools/Probes/malloctrace2win.cpp | 293 + .../tools/Probes/malloctrace_locktest.cpp | 118 + .../source/tools/Probes/mallocwrappers_unix.c | 219 + .../pin-3.13/source/tools/Probes/move_ip.c | 36 + .../pin-3.13/source/tools/Probes/one_unix.c | 23 + .../pin-3.13/source/tools/Probes/one_win.c | 29 + .../source/tools/Probes/parent_process.cpp | 51 + .../pin-3.13/source/tools/Probes/pc64.s | 58 + .../pin-3.13/source/tools/Probes/probe1.cpp | 139 + .../pin-3.13/source/tools/Probes/probe10.cpp | 93 + .../pin-3.13/source/tools/Probes/probe2.cpp | 121 + .../pin-3.13/source/tools/Probes/probe3.cpp | 139 + .../pin-3.13/source/tools/Probes/probe4.cpp | 112 + .../pin-3.13/source/tools/Probes/probe5.cpp | 139 + .../pin-3.13/source/tools/Probes/probe6.cpp | 114 + .../pin-3.13/source/tools/Probes/probe7.cpp | 114 + .../pin-3.13/source/tools/Probes/probe8.cpp | 116 + .../pin-3.13/source/tools/Probes/probe9.cpp | 114 + .../source/tools/Probes/probe_close.cpp | 120 + .../source/tools/Probes/probe_err1.cpp | 88 + .../source/tools/Probes/probe_err2.cpp | 86 + .../source/tools/Probes/probe_err4.cpp | 88 + .../source/tools/Probes/probe_err5.cpp | 88 + .../source/tools/Probes/probe_err6.cpp | 88 + .../source/tools/Probes/probe_movip.cpp | 87 + .../source/tools/Probes/probe_on_probe1.cpp | 189 + .../tools/Probes/probe_on_probe1.reference | 10 + .../source/tools/Probes/probe_on_probe2.cpp | 362 + .../source/tools/Probes/probe_overlap.cpp | 94 + .../tools/Probes/probe_safe_test_ia32.s | 75 + .../tools/Probes/probe_safe_test_intel64.s | 75 + .../tools/Probes/probe_stdcall_fastcall.h | 25 + .../source/tools/Probes/probecdecl.cpp | 106 + .../source/tools/Probes/probefastcall.cpp | 144 + .../source/tools/Probes/probefastcall_app.c | 89 + .../source/tools/Probes/probefastcall_app.pdb | Bin 0 -> 896000 bytes .../source/tools/Probes/probeheapalloc.cpp | 112 + .../source/tools/Probes/probemalloctrace.cpp | 185 + .../source/tools/Probes/probesafetest.cpp | 112 + .../source/tools/Probes/probesafetest_app.c | 22 + .../source/tools/Probes/probesleep.cpp | 119 + .../source/tools/Probes/probestdcall.cpp | 144 + .../source/tools/Probes/probestdcall_app.c | 89 + .../source/tools/Probes/probestdcall_app.pdb | Bin 0 -> 887808 bytes .../pin-3.13/source/tools/Probes/proto1.cpp | 136 + .../source/tools/Probes/proto1win-err.cpp | 97 + .../source/tools/Probes/proto1win.cpp | 102 + .../pin-3.13/source/tools/Probes/proto2.cpp | 141 + .../pin-3.13/source/tools/Probes/proto3.cpp | 168 + .../source/tools/Probes/proto3win.cpp | 150 + .../pin-3.13/source/tools/Probes/proto4.cpp | 159 + .../pin-3.13/source/tools/Probes/protobar.c | 24 + .../pin-3.13/source/tools/Probes/protofoo.c | 33 + .../pin-3.13/source/tools/Probes/protorbar.c | 27 + .../Probes/pthread_exit_after_fork_app.c | 72 + .../source/tools/Probes/pthread_exit_app.c | 49 + .../source/tools/Probes/pthread_exit_tool.cpp | 59 + .../pin-3.13/source/tools/Probes/redzone.cpp | 60 + .../source/tools/Probes/redzone_app.c | 25 + .../source/tools/Probes/redzone_app_asm.s | 33 + .../source/tools/Probes/relocate_app.cpp | 35 + .../source/tools/Probes/relocate_asm_ia32.s | 126 + .../tools/Probes/relocate_asm_intel64.s | 121 + .../source/tools/Probes/relocate_rtn.cpp | 232 + .../source/tools/Probes/remove_probe.cpp | 126 + .../source/tools/Probes/remove_probe2.cpp | 153 + .../source/tools/Probes/replace_empty.cpp | 75 + .../tools/Probes/replace_empty_twice.cpp | 80 + .../source/tools/Probes/replace_exit.cpp | 111 + .../pin-3.13/source/tools/Probes/replaceapp.c | 39 + .../source/tools/Probes/replaceapp.def | 3 + .../source/tools/Probes/replacecall.c | 40 + .../source/tools/Probes/replacedisp.c | 35 + .../pin-3.13/source/tools/Probes/replacefun.c | 40 + .../pin-3.13/source/tools/Probes/replacejmp.c | 35 + .../source/tools/Probes/replaceshorty.c | 35 + .../source/tools/Probes/replacesig_empty.cpp | 81 + .../tools/Probes/scan_all_rtns_for_probe.cpp | 70 + .../pin-3.13/source/tools/Probes/sectest.cpp | 119 + .../source/tools/Probes/sempost_app.cpp | 29 + .../source/tools/Probes/sempost_repl.cpp | 103 + .../pin-3.13/source/tools/Probes/set_tp.s | 40 + .../pin-3.13/source/tools/Probes/shortBB.cpp | 75 + .../source/tools/Probes/shortBB64.cpp | 71 + .../source/tools/Probes/shortBB64app.c | 23 + .../source/tools/Probes/shortBB64foo.asm | 19 + .../pin-3.13/source/tools/Probes/shortBBapp.c | 34 + .../pin-3.13/source/tools/Probes/signals.cpp | 52 + .../source/tools/Probes/signals_app.cpp | 96 + .../pin-3.13/source/tools/Probes/simplebar.c | 113 + .../pin-3.13/source/tools/Probes/simplefoo.c | 29 + .../source/tools/Probes/simplefoo10.c | 34 + .../pin-3.13/source/tools/Probes/simplefoo9.c | 34 + .../pin-3.13/source/tools/Probes/simplesp.s | 25 + .../source/tools/Probes/simplestd10.c | 27 + .../pin-3.13/source/tools/Probes/sleep_unix.c | 22 + .../pin-3.13/source/tools/Probes/sleep_win.c | 23 + .../Probes/spawn_internal_thread_probe.cpp | 170 + .../spawn_internal_thread_probe_app.cpp | 63 + .../source/tools/Probes/spin_lock_app.c | 50 + .../source/tools/Probes/spinlock_insert.cpp | 95 + .../source/tools/Probes/spinlock_repl.cpp | 111 + .../source/tools/Probes/spinlock_replsig.cpp | 132 + .../pin-3.13/source/tools/Probes/ssewin.cpp | 150 + .../source/tools/Probes/svcraw_app.cpp | 20 + .../source/tools/Probes/svcraw_repl.cpp | 110 + .../source/tools/Probes/symbolnames.cpp | 94 + .../source/tools/Probes/syscall_in_probe.cpp | 109 + .../tools/Probes/syscall_in_probe_app.c | 41 + .../source/tools/Probes/syscall_yield64.s | 28 + .../pin-3.13/source/tools/Probes/thd_malloc.c | 43 + .../pin-3.13/source/tools/Probes/tpss.cpp | 130 + .../source/tools/Probes/tpss_lin_libc.c | 1423 ++ .../tools/Probes/tpss_lin_libc_tool.cpp | 1575 ++ .../source/tools/Probes/tpss_lin_libdl.cpp | 257 + .../tools/Probes/tpss_lin_libncurses.cpp | 150 + .../source/tools/Probes/tpss_lin_libpthread.c | 681 + .../tools/Probes/tpss_lin_libpthread_tool.cpp | 791 + .../source/tools/Probes/tpss_lin_librt.c | 111 + .../tools/Probes/tpss_lin_librt_tool.cpp | 198 + .../pin-3.13/source/tools/Probes/two_unix.c | 23 + .../pin-3.13/source/tools/Probes/two_win.c | 29 + .../source/tools/Probes/unix_parent_tool.cpp | 167 + .../source/tools/Probes/unloadtest_unix.c | 56 + .../source/tools/Probes/unloadtest_win.c | 63 + .../source/tools/Probes/win_child_process.cpp | 47 + .../source/tools/Regvalue/changeRegs_ia32.asm | 224 + .../source/tools/Regvalue/changeRegs_ia32.s | 178 + .../tools/Regvalue/changeRegs_intel64.asm | 222 + .../tools/Regvalue/changeRegs_intel64.s | 180 + .../Regvalue/change_context_regvalue.cpp | 157 + .../tools/Regvalue/change_context_rflags.cpp | 244 + .../tools/Regvalue/checkXStateBV_app.cpp | 167 + .../tools/Regvalue/checkXStateBV_tool.cpp | 182 + .../source/tools/Regvalue/context_perf.cpp | 116 + .../tools/Regvalue/context_regvalue.cpp | 131 + .../source/tools/Regvalue/context_utils.cpp | 39 + .../source/tools/Regvalue/context_utils.h | 20 + .../source/tools/Regvalue/doXsave_ia32.asm | 95 + .../source/tools/Regvalue/doXsave_ia32.s | 87 + .../source/tools/Regvalue/doXsave_intel64.asm | 101 + .../source/tools/Regvalue/doXsave_intel64.s | 91 + .../source/tools/Regvalue/doXsavec.asm | 75 + .../pin-3.13/source/tools/Regvalue/doXsavec.s | 68 + .../tools/Regvalue/emu_context_regvalue.cpp | 119 + .../tools/Regvalue/iarg_reg_reference.cpp | 175 + .../Regvalue/iarg_reg_reference_flags.cpp | 134 + .../pin-3.13/source/tools/Regvalue/makefile | 21 + .../source/tools/Regvalue/makefile.rules | 381 + .../source/tools/Regvalue/print_flags.c | 34 + .../source/tools/Regvalue/print_flags_asm.asm | 40 + .../source/tools/Regvalue/print_flags_asm.s | 37 + .../Regvalue/register_modification_utils.cpp | 105 + .../Regvalue/register_modification_utils.h | 40 + .../source/tools/Regvalue/regvalue_app.cpp | 57 + .../tools/Regvalue/regvalue_test_utils.cpp | 333 + .../tools/Regvalue/regvalue_test_utils.h | 71 + .../source/tools/Regvalue/regvalues.cpp | 69 + .../source/tools/Regvalue/regvalues.h | 82 + .../source/tools/Regvalue/xsave_iarg_mem.cpp | 248 + .../tools/Regvalue/xsave_iarg_mem_app.cpp | 83 + .../xsave_memoryXXX_size_IPAFTER.compare | 12 + .../xsave_memoryXXX_size_IPBEFORE.compare | 8 + .../tools/Regvalue/xsavec_iarg_mem_app.cpp | 80 + .../xsavec_memoryXXX_size_IPAFTER.compare | 20 + .../xsavec_memoryXXX_size_IPBEFORE.compare | 20 + .../source/tools/Regvalue/xstateBVUtils.cpp | 72 + .../source/tools/Regvalue/xstateBVUtils.h | 57 + .../tools/Replay/call_function_natively.cpp | 195 + .../Replay/call_function_natively.reference | 10 + .../Replay/call_function_natively_app.cpp | 41 + .../tools/Replay/expand_replayed_rtn.cpp | 74 + .../tools/Replay/expand_replayed_rtn_app.asm | 27 + .../tools/Replay/expand_replayed_rtn_app.c | 19 + .../tools/Replay/expand_replayed_rtn_app.s | 25 + .../tools/Replay/ia32_cross_os_replay.record | 643 + .../Replay/ia32_cross_os_replay.reference | 679 + .../Replay/intel64_cross_os_replay.record | 619 + .../Replay/intel64_cross_os_replay.reference | 655 + .../pin-3.13/source/tools/Replay/makefile | 21 + .../source/tools/Replay/makefile.rules | 173 + .../source/tools/Replay/record_imageload.cpp | 315 + .../source/tools/Replay/record_imageload2.cpp | 525 + .../source/tools/Replay/replay_syscall.cpp | 139 + .../tools/Replay/set_loader_info_shift.cpp | 148 + .../source/tools/Replay/win_exception.c | 55 + .../tools/Replay/win_replay_exception.cpp | 145 + .../source/tools/RtnTests/checkflags.asm | 49 + .../source/tools/RtnTests/checkflags.s | 46 + .../source/tools/RtnTests/checkflags_app.c | 26 + .../source/tools/RtnTests/checkflags_tool.cpp | 86 + .../tools/RtnTests/ifuncInstrumentation.cpp | 97 + .../tools/RtnTests/ifuncInstrumentationApp.c | 43 + .../tools/RtnTests/ifunc_complex_resolver.cpp | 88 + .../RtnTests/ifunc_complex_resolver_app.c | 20 + .../RtnTests/ifunc_complex_resolver_lib_app.c | 47 + .../tools/RtnTests/is_ifunc_supported.py | 108 + .../pin-3.13/source/tools/RtnTests/makefile | 21 + .../source/tools/RtnTests/makefile.rules | 174 + .../source/tools/SegTrace/disasm_container.H | 56 + .../pin-3.13/source/tools/SegTrace/makefile | 21 + .../source/tools/SegTrace/makefile.rules | 114 + .../source/tools/SegTrace/pending_syscalls.H | 78 + .../source/tools/SegTrace/segtrace.cpp | 520 + .../pin-3.13/source/tools/SegTrace/thread.c | 31 + .../SegmentsVirtualization/fixed_base_reg.cpp | 149 + .../gcc_thread_local_vars.reference | 10 + .../gcc_thread_local_vars_app.c | 113 + .../load_far_pointer_ia32.cpp | 200 + .../load_far_pointer_ia32.s | 65 + .../load_far_pointer_intel64.cpp | 135 + .../load_far_pointer_intel64.s | 106 + .../tools/SegmentsVirtualization/makefile | 21 + .../SegmentsVirtualization/makefile.rules | 139 + .../SegmentsVirtualization/modify_ldt.cpp | 146 + .../tools/SegmentsVirtualization/movs.s | 67 + .../set_thread_area1.cpp | 148 + .../set_thread_area2.cpp | 174 + .../set_thread_area3.cpp | 167 + .../tools/SignalTests/action-pending.cpp | 76 + .../source/tools/SignalTests/altstack.c | 65 + .../tools/SignalTests/async_exceptions.c | 218 + .../SignalTests/async_multithreadingapp.c | 231 + .../SignalTests/async_multithreadingtool.cpp | 70 + .../source/tools/SignalTests/asyncfpe.c | 58 + .../bad-stack-alt-android.reference | 2 + .../bad-stack-alt-android.toolreference | 5 + .../SignalTests/bad-stack-alt-linux.reference | 2 + .../bad-stack-alt-linux.toolreference | 5 + .../SignalTests/bad-stack-alt-mac.reference | 2 + .../bad-stack-alt-mac.toolreference | 4 + .../tools/SignalTests/bad-stack-ia32-asm.s | 49 + .../tools/SignalTests/bad-stack-intel64-asm.s | 50 + .../bad-stack-noalt-android.reference | 0 .../bad-stack-noalt-android.toolreference | 5 + .../bad-stack-noalt-linux.reference | 0 .../bad-stack-noalt-linux.toolreference | 5 + .../SignalTests/bad-stack-noalt-mac.reference | 0 .../bad-stack-noalt-mac.toolreference | 3 + .../bad-stack-sigret-android.reference | 1 + .../bad-stack-sigret-android.toolreference | 3 + .../bad-stack-sigret-linux.reference | 1 + .../bad-stack-sigret-linux.toolreference | 3 + .../bad-stack-sigret-mac.reference | 2 + .../bad-stack-sigret-mac.toolreference | 1 + .../source/tools/SignalTests/bad-stack.c | 208 + .../tools/SignalTests/blockingsyscall.c | 58 + .../SignalTests/blockingsyscall.reference | 2 + .../source/tools/SignalTests/blockloop.c | 36 + .../SignalTests/call-app-stress-tool.cpp | 66 + .../tools/SignalTests/call-app-stress.cpp | 94 + .../tools/SignalTests/call-app-tool.cpp | 82 + .../source/tools/SignalTests/call-app.cpp | 68 + .../tools/SignalTests/call-app.reference | 5 + .../tools/SignalTests/copywithxmm_ia32.s | 156 + .../tools/SignalTests/copywithxmm_intel64.s | 117 + .../deprecated-intercept.app-handle.reference | 1 + ...eprecated-intercept.app-nohandle.reference | 1 + .../deprecated-intercept.tool.reference | 1 + .../source/tools/SignalTests/dfcheck.c | 83 + .../source/tools/SignalTests/dfcheck_ia32.s | 66 + .../tools/SignalTests/dfcheck_intel64.s | 49 + .../source/tools/SignalTests/double.c | 203 + .../source/tools/SignalTests/efault.c | 88 + .../source/tools/SignalTests/errcheck.c | 53 + .../source/tools/SignalTests/exithandler.c | 56 + .../source/tools/SignalTests/exittool.cpp | 41 + .../tools/SignalTests/fastsigchecktool.cpp | 47 + .../pin-3.13/source/tools/SignalTests/fatal.c | 29 + .../tools/SignalTests/fatal_block_sync.c | 62 + .../SignalTests/fatal_block_sync.reference | 1 + .../tools/SignalTests/fatallog.reference | 2 + .../source/tools/SignalTests/fatalsync.c | 20 + .../tools/SignalTests/faultcheck-ia32-asm.s | 687 + .../SignalTests/faultcheck-intel64-asm.s | 661 + .../tools/SignalTests/faultcheck-target.h | 29 + .../source/tools/SignalTests/faultcheck-x86.c | 645 + .../source/tools/SignalTests/faultcheck.c | 135 + .../tools/SignalTests/faultcheck_flags.c | 109 + .../SignalTests/faultcheck_flags_ia32_asm.s | 57 + .../SignalTests/faultcheck_flags_tool1.cpp | 48 + .../SignalTests/faultcheck_flags_tool2.cpp | 42 + .../SignalTests/faultcheck_flags_tool3.cpp | 42 + .../source/tools/SignalTests/faulttool.cpp | 46 + .../tools/SignalTests/forktest_altstack.c | 92 + .../source/tools/SignalTests/fpcheck.c | 186 + .../source/tools/SignalTests/fptags.c | 146 + .../source/tools/SignalTests/fptags_ia32.s | 34 + .../pin-3.13/source/tools/SignalTests/futex.c | 58 + .../source/tools/SignalTests/handle-usr1.c | 64 + .../tools/SignalTests/handlerAlignment.cpp | 242 + .../tools/SignalTests/handlerAlignment_ia32.s | 22 + .../pin-3.13/source/tools/SignalTests/hlt.c | 104 + .../tools/SignalTests/insfault-intel64-asm.s | 623 + .../tools/SignalTests/insfault-intel64.h | 46 + .../SignalTests/insfault-linux-intel64.cpp | 148 + .../source/tools/SignalTests/insfault.cpp | 362 + .../tools/SignalTests/inst-type-app.cpp | 169 + .../tools/SignalTests/inst-type-tool.cpp | 306 + .../SignalTests/intercept.tool.reference | 4 + .../source/tools/SignalTests/interceptall.cpp | 56 + ...interceptor_for_regbindings_cache_test.cpp | 46 + .../tools/SignalTests/interceptsegv.compare | 3 + .../tools/SignalTests/interceptsegv.cpp | 53 + .../tools/SignalTests/intercepttool.cpp | 156 + .../source/tools/SignalTests/log.reference | 5 + .../source/tools/SignalTests/logtool.cpp | 88 + .../source/tools/SignalTests/makefile | 21 + .../source/tools/SignalTests/makefile.rules | 687 + .../source/tools/SignalTests/maskcheck.c | 140 + .../source/tools/SignalTests/movsbtest.c | 172 + .../source/tools/SignalTests/movsbtest_ia32.s | 28 + .../tools/SignalTests/movsbtest_intel64.s | 27 + .../source/tools/SignalTests/mtstress.cpp | 215 + .../source/tools/SignalTests/nestmask.c | 104 + .../tools/SignalTests/null-rewrite-tool.cpp | 69 + .../source/tools/SignalTests/num_segvs.h | 12 + .../tools/SignalTests/raise-exception-addrs.h | 53 + .../SignalTests/raise-exception-tool.cpp | 880 + .../source/tools/SignalTests/recursive.c | 211 + .../tools/SignalTests/reg-pressure-tool.cpp | 59 + .../regbindings_cache_test_checker.c | 363 + .../tools/SignalTests/replay-signal-app.c | 90 + .../tools/SignalTests/replay-signal-tool.cpp | 146 + .../tools/SignalTests/replay-signal.reference | 8 + .../source/tools/SignalTests/reporter.cpp | 127 + .../source/tools/SignalTests/resetcont.c | 46 + .../tools/SignalTests/resetcont.reference | 3 + .../tools/SignalTests/resetsegv-safecopy.cpp | 80 + .../source/tools/SignalTests/resetsegv.c | 104 + .../tools/SignalTests/resetsegv.reference | 3 + .../pin-3.13/source/tools/SignalTests/segv.c | 68 + .../segv_for_regbindings_cache_test.c | 74 + .../source/tools/SignalTests/segv_on_fetch.c | 108 + .../source/tools/SignalTests/setcontext.c | 194 + .../source/tools/SignalTests/shortmask.c | 57 + .../source/tools/SignalTests/sig64.cpp | 61 + .../source/tools/SignalTests/sigaltstack.c | 320 + .../source/tools/SignalTests/sigcont.c | 23 + .../source/tools/SignalTests/sigenable.cpp | 98 + .../tools/SignalTests/sigenable.reference | 1 + .../source/tools/SignalTests/sigenableapp.c | 43 + .../source/tools/SignalTests/sigenableapp2.c | 18 + .../source/tools/SignalTests/sigflowcheck.cpp | 82 + .../tools/SignalTests/sigflowcheck1.reference | 1 + .../tools/SignalTests/sigflowcheck2.reference | 1 + .../tools/SignalTests/sigprocmask_short.cpp | 60 + .../tools/SignalTests/sigsegv_attach.cpp | 73 + .../tools/SignalTests/sigsegv_attach_app.c | 58 + .../source/tools/SignalTests/sigsuspend.c | 270 + .../source/tools/SignalTests/sigusr2.c | 215 + .../source/tools/SignalTests/simple.c | 63 + .../tools/SignalTests/simpleasync.reference | 2 + .../tools/SignalTests/simplesync.reference | 1 + .../source/tools/SignalTests/spilltool.cpp | 42 + .../source/tools/SignalTests/suspendmask.c | 89 + .../source/tools/SignalTests/syncasyncapp.c | 161 + .../tools/SignalTests/syncasynctool.cpp | 83 + .../tools/SignalTests/then-stress-app.cpp | 85 + .../tools/SignalTests/then-stress-tool.cpp | 81 + .../tools/SignalTests/threadtest_altstack.c | 85 + .../source/tools/SignalTests/xmmcheck.c | 226 + .../source/tools/SignalTests/xmmfaultcheck.c | 174 + .../source/tools/SimpleExamples/bsr_bsf.cpp | 141 + .../tools/SimpleExamples/bsr_bsf.reference | 4 + .../tools/SimpleExamples/bsr_bsf_app.cpp | 26 + .../tools/SimpleExamples/bsr_bsf_asm.asm | 41 + .../source/tools/SimpleExamples/bsr_bsf_asm.s | 40 + .../source/tools/SimpleExamples/callgraph.py | 430 + .../source/tools/SimpleExamples/calltrace.cpp | 219 + .../source/tools/SimpleExamples/catmix.cpp | 267 + .../source/tools/SimpleExamples/coco.cpp | 249 + .../source/tools/SimpleExamples/dcache.H | 444 + .../source/tools/SimpleExamples/dcache.cpp | 352 + .../source/tools/SimpleExamples/edgcnt.cpp | 303 + .../source/tools/SimpleExamples/emuload.cpp | 74 + .../source/tools/SimpleExamples/extmix.cpp | 275 + .../source/tools/SimpleExamples/fence.cpp | 410 + .../source/tools/SimpleExamples/flowgraph.py | 511 + .../tools/SimpleExamples/get_source_app.cpp | 16 + .../SimpleExamples/get_source_location.cpp | 149 + .../source/tools/SimpleExamples/icount.cpp | 94 + .../source/tools/SimpleExamples/ilenmix.cpp | 281 + .../tools/SimpleExamples/inscount2_mt.cpp | 143 + .../tools/SimpleExamples/inscount2_vregs.cpp | 128 + .../SimpleExamples/inscount_and_check_tls.cpp | 215 + .../source/tools/SimpleExamples/jumpmix.cpp | 190 + .../source/tools/SimpleExamples/ldstmix.cpp | 348 + .../source/tools/SimpleExamples/makefile | 21 + .../tools/SimpleExamples/makefile.rules | 193 + .../tools/SimpleExamples/malloctrace.cpp | 145 + .../tools/SimpleExamples/objdump-routine.csh | 34 + .../source/tools/SimpleExamples/opcodemix.cpp | 481 + .../source/tools/SimpleExamples/oper-imm.cpp | 169 + .../SimpleExamples/oper-imm.ia32.reference | 25 + .../SimpleExamples/oper-imm.intel64.reference | 25 + .../tools/SimpleExamples/oper_imm_app.cpp | 23 + .../tools/SimpleExamples/oper_imm_asm.asm | 36 + .../tools/SimpleExamples/oper_imm_asm.s | 35 + .../source/tools/SimpleExamples/pinatrace.cpp | 226 + .../source/tools/SimpleExamples/regmix.cpp | 271 + .../source/tools/SimpleExamples/regval.cpp | 141 + .../tools/SimpleExamples/regval_app.cpp | 53 + .../source/tools/SimpleExamples/topopcode.cpp | 426 + .../source/tools/SimpleExamples/toprtn.cpp | 236 + .../source/tools/SimpleExamples/trace.cpp | 155 + .../source/tools/SimpleExamples/xed-print.cpp | 110 + .../source/tools/SimpleExamples/xed-use.cpp | 81 + .../pin-3.13/source/tools/Smc/flag_ac_app.c | 48 + .../source/tools/Smc/flag_ac_app_ia32_unix.s | 51 + .../source/tools/Smc/flag_ac_app_ia32_win.asm | 58 + .../tools/Smc/flag_ac_app_intel64_unix.s | 49 + .../tools/Smc/flag_ac_app_intel64_win.asm | 44 + .../source/tools/Smc/flag_ac_inline.reference | 1 + .../source/tools/Smc/flag_ac_tool.cpp | 82 + .../pin-3.13/source/tools/Smc/makefile | 21 + .../pin-3.13/source/tools/Smc/makefile.rules | 172 + .../source/tools/Smc/smc_callback.cpp | 105 + .../pin-3.13/source/tools/Smc/smc_disable.cpp | 45 + .../pin-3.13/source/tools/Smc/smc_util.cpp | 129 + .../pin-3.13/source/tools/Smc/smc_util.h | 179 + .../pin-3.13/source/tools/Smc/smcapp.cpp | 95 + .../pin-3.13/source/tools/Smc/smcapp1.cpp | 96 + .../pin-3.13/source/tools/Smc/smcapp2.cpp | 53 + .../pin-3.13/source/tools/Smc/smcapp3.cpp | 73 + .../pin-3.13/source/tools/Smc/smcapp_bbl.cpp | 102 + .../source/tools/Smc/smcapp_except.cpp | 52 + .../pin-3.13/source/tools/Smc/smcapp_ia32.cpp | 89 + .../pin-3.13/source/tools/Smc/smcapp_mt.cpp | 113 + .../pin-3.13/source/tools/Smc/sse-ref.cpp | 174 + .../source/tools/Smc/sse-ref.reference | 2 + .../source/tools/Smc/sse-ref_ia32.asm | 168 + .../pin-3.13/source/tools/Smc/sse-ref_ia32.s | 86 + .../source/tools/Smc/sse-ref_intel64.asm | 254 + .../source/tools/Smc/sse-ref_intel64.s | 83 + .../pintool/pin-3.13/source/tools/Smc/sse.cpp | 211 + .../source/tools/SyncTests/lock-tester.cpp | 821 + .../pin-3.13/source/tools/SyncTests/makefile | 21 + .../source/tools/SyncTests/makefile.rules | 204 + .../source/tools/SyncTests/mt-worker-unix.cpp | 182 + .../source/tools/SyncTests/mt-worker-win.cpp | 152 + .../source/tools/SyncTests/rt-locks-app.cpp | 306 + .../source/tools/SyncTests/rt-locks-tool.cpp | 119 + .../SyncTests/stress-client-lock-app.cpp | 169 + .../SyncTests/stress-client-lock-tool.cpp | 134 + .../tools/SyscallsEmulation/check_prctl_app.c | 37 + .../SyscallsEmulation/close_all_files.cpp | 160 + .../SyscallsEmulation/close_all_files_app.c | 78 + .../exit_restartable_syscall_app.c | 71 + .../source/tools/SyscallsEmulation/makefile | 21 + .../tools/SyscallsEmulation/makefile.rules | 211 + .../source/tools/SyscallsEmulation/mmap.cpp | 166 + .../source/tools/SyscallsEmulation/mmap_app.c | 101 + .../tools/SyscallsEmulation/pin_clone_app.cpp | 96 + .../SyscallsEmulation/ppollEmulation_app.cpp | 266 + .../ptrace_deny_attach_app.c | 126 + .../tools/SyscallsEmulation/syscall_time.cpp | 152 + .../syscalls_and_locks_app.cpp | 172 + .../syscalls_and_locks_tool.cpp | 132 + .../pin-3.13/source/tools/Tests/IARGList.cpp | 57 + .../pin-3.13/source/tools/Tests/after.cpp | 191 + .../pin-3.13/source/tools/Tests/alah.cpp | 63 + .../source/tools/Tests/bblFallThrough.cpp | 40 + .../pin-3.13/source/tools/Tests/bblnull.cpp | 44 + .../pin-3.13/source/tools/Tests/brtaken.cpp | 47 + .../pin-3.13/source/tools/Tests/callargs.cpp | 160 + .../tools/Tests/callargs_probe_tool.cpp | 66 + .../source/tools/Tests/cflowcheck.cpp | 150 + .../pin-3.13/source/tools/Tests/check_env.cpp | 62 + .../pin-3.13/source/tools/Tests/check_env.sh | 8 + .../source/tools/Tests/checkaddress.cpp | 79 + .../source/tools/Tests/checkaddressapp.s | 22 + .../tools/Tests/child_sig_while_execv_app.c | 99 + .../Tests/child_sig_while_execv_simple_app.c | 21 + .../source/tools/Tests/clear_df_flag_tool.cpp | 43 + .../tools/Tests/const_context_at_ins.cpp | 60 + .../source/tools/Tests/context-pc.cpp | 208 + .../pin-3.13/source/tools/Tests/context.cpp | 96 + .../tools/Tests/context_stack_and_spill.cpp | 825 + .../Tests/correct_winapp_runs_pin_cmdline.cpp | 73 + .../pin-3.13/source/tools/Tests/detach.cpp | 72 + .../source/tools/Tests/df_flag_utils.asm | 29 + .../source/tools/Tests/df_flag_utils.s | 29 + .../source/tools/Tests/ea_verifier.cpp | 697 + .../pin-3.13/source/tools/Tests/emu.cpp | 133 + .../source/tools/Tests/exitProcess.cpp | 38 + .../source/tools/Tests/exitProcessApp.c | 39 + .../source/tools/Tests/finiRemove.cpp | 34 + .../pin-3.13/source/tools/Tests/foobar.c | 49 + .../pin-3.13/source/tools/Tests/hello.cpp | 26 + .../pin-3.13/source/tools/Tests/icount1.cpp | 44 + .../pin-3.13/source/tools/Tests/icount2.cpp | 47 + .../pin-3.13/source/tools/Tests/icount3.cpp | 53 + .../pin-3.13/source/tools/Tests/icount4.cpp | 43 + .../pin-3.13/source/tools/Tests/icount5.cpp | 67 + .../source/tools/Tests/icountcheck.cpp | 101 + .../pin-3.13/source/tools/Tests/ifunc_tst.cpp | 109 + .../source/tools/Tests/ifuncmemcpy.cpp | 174 + .../source/tools/Tests/illegalEnvp_app.c | 40 + .../pin-3.13/source/tools/Tests/imageLoad.cpp | 136 + .../source/tools/Tests/imageLoadBackward.cpp | 126 + .../pin-3.13/source/tools/Tests/insMix.cpp | 80 + .../pin-3.13/source/tools/Tests/insMixApp.s | 58 + .../tools/Tests/inscount2_mt_debuginfo.cpp | 172 + .../source/tools/Tests/inscount_per_image.cpp | 292 + .../pin-3.13/source/tools/Tests/int3test.c | 29 + .../source/tools/Tests/jecxz_ia32.asm | 30 + .../pin-3.13/source/tools/Tests/jecxz_ia32.s | 31 + .../source/tools/Tests/jecxz_intel64.asm | 27 + .../source/tools/Tests/jecxz_intel64.s | 31 + .../pin-3.13/source/tools/Tests/lasterror.cpp | 34 + .../source/tools/Tests/launcher_app.cpp | 78 + .../source/tools/Tests/launcher_tool.cpp | 90 + .../pin-3.13/source/tools/Tests/loop.s | 64 + .../pin-3.13/source/tools/Tests/makefile | 21 + .../source/tools/Tests/makefile.rules | 591 + .../pin-3.13/source/tools/Tests/malloc.cpp | 72 + .../pin-3.13/source/tools/Tests/memcpy_app.c | 26 + .../pin-3.13/source/tools/Tests/memident.cpp | 35 + .../pin-3.13/source/tools/Tests/mtest.cpp | 66 + .../tools/Tests/multipleinstrumentation.cpp | 92 + .../pin-3.13/source/tools/Tests/mysetenv.c | 38 + .../pin-3.13/source/tools/Tests/new.cpp | 44 + .../pin-3.13/source/tools/Tests/operand.cpp | 70 + .../pin-3.13/source/tools/Tests/pagetable.H | 203 + .../tools/Tests/parse_executed_rtns.cpp | 63 + .../source/tools/Tests/pin_tests_util.H | 37 + .../pin-3.13/source/tools/Tests/prefix.cpp | 84 + .../pin-3.13/source/tools/Tests/prefixApp.s | 60 + .../pin-3.13/source/tools/Tests/probe.cpp | 132 + .../pin-3.13/source/tools/Tests/reg.cpp | 198 + .../source/tools/Tests/reg_ref_inlined.cpp | 111 + .../tools/Tests/rep_ip_at_ipoint_after_app.c | 132 + .../Tests/rep_ip_at_ipoint_after_app_unix.s | 119 + .../Tests/rep_ip_at_ipoint_after_tool.cpp | 993 + .../pin-3.13/source/tools/Tests/rtnNumIns.cpp | 45 + .../source/tools/Tests/rtn_create_at_dup.cpp | 64 + .../tools/Tests/rtn_insert_call_probed.cpp | 92 + .../pin-3.13/source/tools/Tests/sampleApp.s | 74 + .../pin-3.13/source/tools/Tests/sec.cpp | 56 + .../pin-3.13/source/tools/Tests/segv.cpp | 44 + .../pin-3.13/source/tools/Tests/sequence.cpp | 46 + .../source/tools/Tests/sequencecheck.cpp | 57 + .../source/tools/Tests/set_df_flag_tool.cpp | 42 + .../tools/Tests/set_status_flags_tool.cpp | 44 + .../pin-3.13/source/tools/Tests/smc_check.cpp | 101 + .../pin-3.13/source/tools/Tests/smc_test_l.c | 54 + .../pin-3.13/source/tools/Tests/snprintf.cpp | 56 + .../source/tools/Tests/sourceLocation_app.cpp | 84 + .../tools/Tests/sourceLocation_img1.cpp | 12 + .../tools/Tests/sourceLocation_img2.cpp | 12 + .../tools/Tests/sourceLocation_tool.cpp | 37 + .../source/tools/Tests/statdyn_app.cpp | 36 + .../source/tools/Tests/statdyn_tool.cpp | 63 + .../pin-3.13/source/tools/Tests/strcmp_app.c | 29 + .../pin-3.13/source/tools/Tests/swizzle1.cpp | 48 + .../source/tools/Tests/symOutOfBound.cpp | 49 + .../pin-3.13/source/tools/Tests/syntax.cpp | 50 + .../source/tools/Tests/syntax_tst.cpp | 86 + .../Tests/test_ebx_in_exceptions_ia32_unix.s | 107 + .../Tests/test_ebx_in_exceptions_ia32_win.asm | 107 + .../Tests/test_ebx_in_exceptions_unix.cpp | 159 + .../Tests/test_ebx_in_exceptions_win.cpp | 114 + .../test_ebx_in_exceptions_xed_interface.cpp | 111 + .../pin-3.13/source/tools/Tests/thread.cpp | 51 + .../pin-3.13/source/tools/Tests/threadApp.cpp | 30 + .../source/tools/Tests/trace_address.cpp | 112 + .../source/tools/Tests/trace_address_app.cpp | 70 + .../source/tools/Tests/tracecount.cpp | 59 + .../source/tools/Tests/traceusage.cpp | 319 + .../pin-3.13/source/tools/Tests/util.cpp | 99 + .../pin-3.13/source/tools/Tests/verify.cpp | 236 + .../tools/Tests/win_cvapp_test_tool.cpp | 1227 ++ .../source/tools/Tests/winapp_runs_pin.cpp | 272 + .../source/tools/Tests/winapp_runs_pin.h | 14 + .../source/tools/Tests/winapp_runs_pin.ico | Bin 0 -> 23558 bytes .../source/tools/Tests/winapp_runs_pin.sln | 26 + .../tools/Tests/winapp_runs_pin.vcxproj | 165 + .../pin-3.13/source/tools/Tests/xedReg.cpp | 88 + .../source/tools/ToolUnitTests/addit.c | 25 + .../ToolUnitTests/addr32_override_app.cpp | 57 + .../ToolUnitTests/addr32_override_app_asm.s | 27 + .../tools/ToolUnitTests/align_access.cpp | 144 + .../tools/ToolUnitTests/align_access_app.c | 72 + .../analysis_flag_overwrite_app.c | 37 + .../analysis_flag_overwrite_app_win.asm | 29 + ...ysis_flag_overwrite_test1_inline.reference | 1 + ...is_flag_overwrite_test1_noinline.reference | 1 + ..._overwrite_test1_noinline_bridge.reference | 1 + ...ysis_flag_overwrite_test2_inline.reference | 1 + ...is_flag_overwrite_test2_noinline.reference | 1 + ..._overwrite_test2_noinline_bridge.reference | 1 + ...ysis_flag_overwrite_test3_inline.reference | 1 + ...is_flag_overwrite_test3_noinline.reference | 1 + ..._overwrite_test3_noinline_bridge.reference | 1 + .../analysis_flag_overwrite_tool1.cpp | 53 + .../analysis_flag_overwrite_tool1_win.asm | 24 + .../analysis_flag_overwrite_tool2.cpp | 53 + .../analysis_flag_overwrite_tool2_win.asm | 22 + .../analysis_flag_overwrite_tool3.cpp | 53 + .../analysis_flag_overwrite_tool3_win.asm | 22 + .../pin-3.13/source/tools/ToolUnitTests/and.s | 51 + .../ToolUnitTests/aoti_mutation_target.c | 87 + .../ToolUnitTests/aoti_mutation_tool.cpp | 195 + .../tools/ToolUnitTests/apc_monitor.cpp | 54 + .../tools/ToolUnitTests/apc_monitor.reference | 1 + .../app_inspects_internal_thread_win.cpp | 138 + .../app_inspects_internal_thread_win_app.c | 59 + .../source/tools/ToolUnitTests/args.cpp | 134 + .../source/tools/ToolUnitTests/args.reference | 8 + .../source/tools/ToolUnitTests/args_err.cpp | 134 + .../tools/ToolUnitTests/args_lineno.cpp | 134 + .../source/tools/ToolUnitTests/attach.cpp | 93 + .../source/tools/ToolUnitTests/attach_app.cpp | 143 + .../tools/ToolUnitTests/attach_tool.reference | 2 + .../tools/ToolUnitTests/badfile.reference | 1 + .../tools/ToolUnitTests/badpath.reference | 1 + .../ToolUnitTests/baserel_in_probe_tool.cpp | 204 + .../source/tools/ToolUnitTests/big_bss.c | 17 + .../tools/ToolUnitTests/bigrange.address | 2 + .../ToolUnitTests/branch_target_addr.cpp | 201 + .../pin-3.13/source/tools/ToolUnitTests/btc.s | 147 + .../source/tools/ToolUnitTests/btc_app.c | 132 + .../source/tools/ToolUnitTests/callapp0.cpp | 98 + .../source/tools/ToolUnitTests/callapp0i.cpp | 86 + .../source/tools/ToolUnitTests/callapp1.cpp | 101 + .../source/tools/ToolUnitTests/callapp10.cpp | 133 + .../source/tools/ToolUnitTests/callapp10i.cpp | 121 + .../source/tools/ToolUnitTests/callapp12.cpp | 125 + .../source/tools/ToolUnitTests/callapp13.cpp | 126 + .../source/tools/ToolUnitTests/callapp14.cpp | 198 + .../source/tools/ToolUnitTests/callapp15.cpp | 111 + .../source/tools/ToolUnitTests/callapp1i.cpp | 89 + .../source/tools/ToolUnitTests/callapp2.cpp | 109 + .../source/tools/ToolUnitTests/callapp3.cpp | 111 + .../source/tools/ToolUnitTests/callapp4.cpp | 100 + .../source/tools/ToolUnitTests/callapp5.cpp | 118 + .../source/tools/ToolUnitTests/callapp6.cpp | 129 + .../source/tools/ToolUnitTests/callapp7.cpp | 131 + .../source/tools/ToolUnitTests/callapp8.cpp | 91 + .../source/tools/ToolUnitTests/callapp9.cpp | 123 + .../ToolUnitTests/callapp_64bit_param_app_1.c | 55 + .../ToolUnitTests/callapp_64bit_param_app_2.c | 148 + .../callapp_64bit_param_tool.cpp | 215 + .../tools/ToolUnitTests/callapp_nested_app.c | 42 + .../tools/ToolUnitTests/callapp_nested_app1.c | 43 + .../ToolUnitTests/callapp_nested_tool.cpp | 196 + .../tools/ToolUnitTests/callapp_perf_app.c | 43 + .../tools/ToolUnitTests/callapp_perf_app1.c | 45 + .../tools/ToolUnitTests/callapp_perf_tool.cpp | 195 + .../tools/ToolUnitTests/callappfast10.cpp | 131 + .../tools/ToolUnitTests/callappstd10.cpp | 132 + .../source/tools/ToolUnitTests/callsp_ia32.s | 42 + .../tools/ToolUnitTests/callsp_intel64.s | 40 + .../source/tools/ToolUnitTests/cancel.c | 80 + .../tools/ToolUnitTests/change_syscall.cpp | 90 + .../tools/ToolUnitTests/change_syscall_app.c | 63 + .../ToolUnitTests/check_acall_inline_opt.cpp | 84 + .../source/tools/ToolUnitTests/check_env.cpp | 46 + .../tools/ToolUnitTests/check_env_app.cpp | 74 + .../tools/ToolUnitTests/check_fpstate.cpp | 193 + .../tools/ToolUnitTests/check_fpstate_app.c | 38 + .../ToolUnitTests/check_legal_callbacks.cpp | 91 + .../tools/ToolUnitTests/check_tool_malloc.sh | 30 + .../tools/ToolUnitTests/checkerrorfile.cpp | 48 + .../tools/ToolUnitTests/checkexecuting.cpp | 317 + .../tools/ToolUnitTests/checkinline.cpp | 185 + .../source/tools/ToolUnitTests/checkreps.cpp | 596 + .../source/tools/ToolUnitTests/claim_regs.cpp | 64 + .../source/tools/ToolUnitTests/clobber.cpp | 37 + .../source/tools/ToolUnitTests/clobber_asm.s | 43 + .../source/tools/ToolUnitTests/cmovstest.c | 106 + .../tools/ToolUnitTests/cmpxchg8b_unix.s | 116 + .../tools/ToolUnitTests/cmpxchg8b_win.asm | 126 + .../cmpxchg8b_with_explicit_ebx_win.asm | 37 + .../code_cache_block_overflow1.cpp | 70 + .../code_cache_block_overflow2.cpp | 74 + .../source/tools/ToolUnitTests/context.cpp | 215 + .../ToolUnitTests/context_state_apis.cpp | 109 + .../tools/ToolUnitTests/control_init.cpp | 60 + .../source/tools/ToolUnitTests/create_rtn.cpp | 179 + .../tools/ToolUnitTests/create_rtn.strip | 2 + .../tools/ToolUnitTests/create_rtn_app.cpp | 93 + .../tools/ToolUnitTests/data_in_code_win.cpp | 128 + .../ToolUnitTests/data_in_code_win_app.c | 19 + .../source/tools/ToolUnitTests/datasym.cpp | 94 + .../source/tools/ToolUnitTests/datasym_app.c | 17 + .../ToolUnitTests/debugservice_monitor.cpp | 90 + .../debugservice_monitor.reference | 101 + .../source/tools/ToolUnitTests/deepbind.cpp | 41 + .../source/tools/ToolUnitTests/deepbind.ver | 5 + .../source/tools/ToolUnitTests/deepbind_app.c | 19 + .../tools/ToolUnitTests/deepbind_syscalls.c | 18 + .../ToolUnitTests/df_test1_inline.reference | 1 + .../ToolUnitTests/df_test1_noinline.reference | 1 + .../df_test1_noinline_bridge.reference | 1 + .../ToolUnitTests/df_test2_inline.reference | 1 + .../ToolUnitTests/df_test2_noinline.reference | 1 + .../df_test2_noinline_bridge.reference | 1 + .../ToolUnitTests/df_test3_inline.reference | 1 + .../ToolUnitTests/df_test3_noinline.reference | 1 + .../df_test3_noinline_bridge.reference | 1 + .../ToolUnitTests/df_test4_inline.reference | 1 + .../ToolUnitTests/df_test4_noinline.reference | 1 + .../df_test4_noinline_bridge.reference | 1 + .../ToolUnitTests/df_test5_inline.reference | 1 + .../ToolUnitTests/df_test5_noinline.reference | 1 + .../df_test5_noinline_bridge.reference | 1 + .../source/tools/ToolUnitTests/df_test_app.c | 36 + .../tools/ToolUnitTests/df_test_app_win.asm | 29 + .../tools/ToolUnitTests/df_test_tool1.cpp | 61 + .../tools/ToolUnitTests/df_test_tool1_win.asm | 28 + .../tools/ToolUnitTests/df_test_tool2.cpp | 89 + .../tools/ToolUnitTests/df_test_tool2_win.asm | 33 + .../tools/ToolUnitTests/df_test_tool3.cpp | 89 + .../tools/ToolUnitTests/df_test_tool3_win.asm | 31 + .../tools/ToolUnitTests/df_test_tool4.cpp | 90 + .../tools/ToolUnitTests/df_test_tool4_win.asm | 34 + .../tools/ToolUnitTests/df_test_tool5.cpp | 90 + .../tools/ToolUnitTests/df_test_tool5_win.asm | 34 + .../source/tools/ToolUnitTests/dlclose.cpp | 91 + .../tools/ToolUnitTests/dlclose_app.cpp | 43 + .../source/tools/ToolUnitTests/dltest.c | 72 + .../source/tools/ToolUnitTests/dltest2.c | 73 + .../source/tools/ToolUnitTests/doint.c | 45 + .../source/tools/ToolUnitTests/doint_ia32.s | 23 + .../source/tools/ToolUnitTests/dummy_dll.c | 26 + .../ToolUnitTests/dynamic_secondary_dll.cpp | 68 + .../ToolUnitTests/ea_verifier_addr16.cpp | 790 + .../ToolUnitTests/ea_verifier_addr16_win.asm | 87 + .../tools/ToolUnitTests/ea_verifier_bt.cpp | 166 + .../tools/ToolUnitTests/earlymalloc.cpp | 56 + .../source/tools/ToolUnitTests/earlyout.cpp | 54 + .../tools/ToolUnitTests/elf_symbols.cpp | 109 + .../tools/ToolUnitTests/elf_symsize.cpp | 98 + .../source/tools/ToolUnitTests/emu_jumps.cpp | 151 + .../source/tools/ToolUnitTests/emu_stack.cpp | 286 + .../source/tools/ToolUnitTests/error_log.cpp | 112 + .../tools/ToolUnitTests/error_log_app.cpp | 17 + .../ToolUnitTests/exceptionAddress_lin.cpp | 226 + .../exceptionAddress_lin_app.cpp | 43 + .../tools/ToolUnitTests/exception_app_ia32.s | 137 + .../ToolUnitTests/exception_app_intel64.s | 120 + .../exception_context_monitor.cpp | 159 + .../tools/ToolUnitTests/exception_monitor.cpp | 150 + ...n_monitor_for_cpp_exception_test.reference | 5 + ..._monitor_for_divide_by_zero_test.reference | 4 + .../exception_monitor_for_iret_order.cpp | 264 + .../tools/ToolUnitTests/exception_tool_ia32.s | 67 + .../ToolUnitTests/exception_tool_intel64.s | 69 + .../ToolUnitTests/executeat_callback.cpp | 47 + .../tools/ToolUnitTests/executeat_lock.cpp | 72 + .../source/tools/ToolUnitTests/execvp.c | 28 + .../tools/ToolUnitTests/execvp.reference | 1 + .../tools/ToolUnitTests/exports_only_tool.cpp | 70 + .../source/tools/ToolUnitTests/factorial.c | 42 + .../pin-3.13/source/tools/ToolUnitTests/far.s | 249 + .../source/tools/ToolUnitTests/farmain.cpp | 288 + .../findthreadwithappstack.reference | 61 + .../source/tools/ToolUnitTests/fini.cpp | 31 + .../source/tools/ToolUnitTests/flag_ac_app.c | 48 + .../ToolUnitTests/flag_ac_app_ia32_unix.s | 51 + .../ToolUnitTests/flag_ac_app_ia32_win.asm | 58 + .../ToolUnitTests/flag_ac_app_intel64_unix.s | 49 + .../ToolUnitTests/flag_ac_app_intel64_win.asm | 44 + .../tools/ToolUnitTests/flag_ac_app_u_64.s | 53 + .../ToolUnitTests/flag_ac_inline.reference | 1 + .../ToolUnitTests/flag_ac_noinline.reference | 1 + .../flag_ac_noinline_bridge.reference | 1 + .../tools/ToolUnitTests/flag_ac_tool.cpp | 82 + .../tools/ToolUnitTests/flag_ac_win_app.c | 50 + .../flag_ac_win_inline.reference | 1 + .../flag_ac_win_noinline.reference | 1 + .../flag_ac_win_noinline_bridge.reference | 1 + .../tools/ToolUnitTests/flag_ac_win_tool.cpp | 89 + .../tools/ToolUnitTests/flag_spill_fill_app.c | 39 + .../ToolUnitTests/flag_spill_fill_app_win.asm | 35 + .../flag_spill_fill_test1_inline.reference | 1 + .../flag_spill_fill_test1_noinline.reference | 1 + ...spill_fill_test1_noinline_bridge.reference | 1 + .../ToolUnitTests/flag_spill_fill_tool1.cpp | 59 + .../flag_spill_fill_tool1.dll.reference | 1 + .../flag_spill_fill_tool1_win.asm | 25 + .../ToolUnitTests/flags_at_analysis_app.c | 35 + .../flags_at_analysis_app_win.asm | 29 + .../ToolUnitTests/flags_at_analysis_tool.cpp | 193 + .../source/tools/ToolUnitTests/fp_args.cpp | 353 + .../tools/ToolUnitTests/fp_args.reference | 13 + .../tools/ToolUnitTests/fp_args_app.cpp | 60 + .../fp_context_set_const_context.cpp | 58 + .../source/tools/ToolUnitTests/fp_insert.cpp | 94 + .../source/tools/ToolUnitTests/fp_replace.cpp | 109 + .../tools/ToolUnitTests/fp_replace_app.c | 44 + .../source/tools/ToolUnitTests/funcarg_ep.cpp | 223 + .../tools/ToolUnitTests/funcarg_ep_app.cpp | 73 + .../ToolUnitTests/funcarg_ep_ia32.reference | 56 + .../funcarg_ep_intel64.reference | 56 + .../tools/ToolUnitTests/funreplace.reference | 45 + .../tools/ToolUnitTests/funreplace_alert.cpp | 89 + .../ToolUnitTests/funreplace_alert.reference | 5 + .../source/tools/ToolUnitTests/guard_page.cpp | 55 + .../tools/ToolUnitTests/guard_page_app.cpp | 88 + .../tools/ToolUnitTests/hello.reference | 1 + .../source/tools/ToolUnitTests/htab.c | 152 + .../source/tools/ToolUnitTests/iarg_tsc1.cpp | 71 + .../source/tools/ToolUnitTests/iarg_tsc2.cpp | 70 + .../source/tools/ToolUnitTests/iarg_tsc3.cpp | 71 + .../source/tools/ToolUnitTests/iarg_tsc4.cpp | 70 + .../source/tools/ToolUnitTests/iarg_tsc5.cpp | 70 + .../tools/ToolUnitTests/iarg_tsc_probed1.cpp | 79 + .../tools/ToolUnitTests/illegal_call_app.cpp | 94 + .../ToolUnitTests/illegal_instrumentation.cpp | 69 + .../tools/ToolUnitTests/image_entry.cpp | 367 + .../tools/ToolUnitTests/image_entry.reference | 3 + .../source/tools/ToolUnitTests/image_load.cpp | 167 + .../ToolUnitTests/import_forwarder_error.cpp | 66 + .../source/tools/ToolUnitTests/incebx.cpp | 40 + .../indirect_call_branch_target_addr.cpp | 239 + .../tools/ToolUnitTests/inline_opt_test.cpp | 43 + .../ToolUnitTests/inline_opt_test_app.cpp | 449 + .../inline_opt_test_app_ia32.asm | 34 + .../ToolUnitTests/inline_opt_test_app_ia32.s | 24 + .../inline_opt_test_app_intel64.asm | 37 + .../inline_opt_test_app_intel64.s | 30 + .../ToolUnitTests/inline_opt_test_df1.cpp | 41 + .../ToolUnitTests/inline_opt_test_df3.cpp | 115 + .../ToolUnitTests/inline_opt_test_df_app.cpp | 95 + .../inline_opt_test_df_app_ia32.asm | 167 + .../ToolUnitTests/inline_opt_test_df_ia32.asm | 50 + .../ToolUnitTests/inline_opt_test_ia32.asm | 56 + .../ToolUnitTests/inline_opt_test_ia32.s | 51 + .../ToolUnitTests/inline_opt_test_intel64.asm | 62 + .../ToolUnitTests/inline_opt_test_intel64.s | 69 + .../source/tools/ToolUnitTests/inlinecall.cpp | 71 + .../tools/ToolUnitTests/inlinecall.reference | 3 + .../tools/ToolUnitTests/inlined-stack-arg.cpp | 137 + .../ToolUnitTests/inlined-stack-arg.reference | 1 + .../ToolUnitTests/inlined-stack-arg1.cpp | 895 + .../inlined-stack-arg1.reference | 1 + .../ToolUnitTests/inlined-stack-arg2.cpp | 126 + .../inlined-stack-arg2.reference | 1 + .../ToolUnitTests/inlined-stack-arg2_win.asm | 162 + .../inlined-stack-arg2_win_intel64.asm | 195 + .../source/tools/ToolUnitTests/inner.c | 64 + .../tools/ToolUnitTests/ins_check_fetcher.cpp | 87 + .../ToolUnitTests/inscount2_fornoinline.cpp | 72 + .../ToolUnitTests/insert_if_then_call.cpp | 97 + .../ToolUnitTests/insert_if_then_call1.cpp | 97 + .../ToolUnitTests/insert_if_then_call2.cpp | 99 + .../ToolUnitTests/insert_if_then_call_app.cpp | 17 + .../source/tools/ToolUnitTests/insertand.cpp | 79 + .../tools/ToolUnitTests/insfetch_tool.cpp | 118 + .../source/tools/ToolUnitTests/int3del.cpp | 28 + .../source/tools/ToolUnitTests/int3test.c | 18 + .../internal_exception_handler.cpp | 278 + .../internal_exception_handler_app.cpp | 226 + .../internal_exception_handler_app_lin.cpp | 245 + .../internal_exception_handler_lin.cpp | 438 + .../source/tools/ToolUnitTests/intrin.cpp | 53 + .../source/tools/ToolUnitTests/iret_ia32.asm | 38 + .../source/tools/ToolUnitTests/iret_ia32.s | 36 + .../tools/ToolUnitTests/iret_intel64.asm | 38 + .../source/tools/ToolUnitTests/iret_intel64.s | 61 + .../source/tools/ToolUnitTests/iretmain.c | 44 + .../source/tools/ToolUnitTests/isret.cpp | 120 + .../source/tools/ToolUnitTests/isret_app.cpp | 28 + .../tools/ToolUnitTests/jcx_addr16_app.c | 27 + .../tools/ToolUnitTests/jcx_addr16_tool.cpp | 57 + .../ToolUnitTests/jcx_addr16_tool.reference | 2 + .../tools/ToolUnitTests/jitmalloctrace.cpp | 203 + .../ToolUnitTests/knob_duplicate_name.cpp | 38 + .../tools/ToolUnitTests/knob_writeonce.cpp | 35 + .../source/tools/ToolUnitTests/kthread.c | 87 + .../tools/ToolUnitTests/kthread.reference | 1002 + .../source/tools/ToolUnitTests/large.address | 7028 +++++++ .../source/tools/ToolUnitTests/leave.cpp | 147 + .../source/tools/ToolUnitTests/line.cpp | 95 + .../source/tools/ToolUnitTests/line.reference | 1 + .../tools/ToolUnitTests/little_malloc.c | 62 + .../tools/ToolUnitTests/load_resource_app.c | 33 + .../pin-3.13/source/tools/ToolUnitTests/lpd.c | 44 + .../source/tools/ToolUnitTests/main_dll.cpp | 184 + .../source/tools/ToolUnitTests/makefile | 21 + .../source/tools/ToolUnitTests/makefile.rules | 3157 +++ .../source/tools/ToolUnitTests/malmalloc.cpp | 74 + .../tools/ToolUnitTests/malmalloc.reference | 9 + .../source/tools/ToolUnitTests/memalign.cpp | 125 + .../ToolUnitTests/memory_displacement.cpp | 144 + .../ToolUnitTests/memory_displacement_app.cpp | 93 + .../ToolUnitTests/memory_displacement_app.s | 16 + .../source/tools/ToolUnitTests/mmap.cpp | 56 + .../tools/ToolUnitTests/move_then_test.cpp | 285 + .../source/tools/ToolUnitTests/mt_app.cpp | 75 + .../source/tools/ToolUnitTests/mt_tool.cpp | 906 + .../tools/ToolUnitTests/mtstatic.reference | 9 + .../source/tools/ToolUnitTests/multimem.cpp | 216 + .../source/tools/ToolUnitTests/mxcsr_ia32.asm | 39 + .../source/tools/ToolUnitTests/mxcsr_ia32.s | 43 + .../tools/ToolUnitTests/mxcsr_intel64.asm | 24 + .../tools/ToolUnitTests/mxcsr_intel64.s | 35 + .../source/tools/ToolUnitTests/nops.cpp | 49 + .../pin-3.13/source/tools/ToolUnitTests/one.c | 27 + .../source/tools/ToolUnitTests/oneprog.c | 36 + .../tools/ToolUnitTests/operandtool.cpp | 259 + .../tools/ToolUnitTests/partialinline.cpp | 182 + .../ToolUnitTests/partialinline.reference | 1 + .../passthru_context_xmm_regs_app.cpp | 500 + .../passthru_context_xmm_regs_callapp.cpp | 118 + .../passthru_context_xmm_regs_executeat.cpp | 126 + .../source/tools/ToolUnitTests/pipeapp.c | 40 + .../tools/ToolUnitTests/popea_verifier.cpp | 107 + .../tools/ToolUnitTests/posix_memalign.cpp | 120 + .../source/tools/ToolUnitTests/pusha_popa.cpp | 318 + .../tools/ToolUnitTests/pusha_popa_asm.asm | 209 + .../tools/ToolUnitTests/pusha_popa_asm.s | 223 + .../source/tools/ToolUnitTests/pushtest.c | 248 + .../source/tools/ToolUnitTests/pushw.s | 20 + .../tools/ToolUnitTests/raise_exception.cpp | 128 + .../ToolUnitTests/raise_exception_app.cpp | 321 + .../source/tools/ToolUnitTests/realloc.cpp | 131 + .../source/tools/ToolUnitTests/rebase_dll.c | 22 + .../tools/ToolUnitTests/rebase_dll_tool.cpp | 70 + .../tools/ToolUnitTests/reg_context_fp_st.cpp | 46 + .../reg_context_set_const_context.cpp | 41 + .../ToolUnitTests/reg_context_set_fp_st.cpp | 42 + .../ToolUnitTests/reg_context_set_x87.cpp | 42 + .../ToolUnitTests/reg_context_set_xmm.cpp | 42 + .../ToolUnitTests/reg_context_set_ymm.cpp | 42 + .../tools/ToolUnitTests/reg_context_x87.cpp | 47 + .../tools/ToolUnitTests/reg_context_xmm.cpp | 46 + .../tools/ToolUnitTests/reg_context_ymm.cpp | 46 + .../tools/ToolUnitTests/reg_inst_gx.cpp | 135 + .../tools/ToolUnitTests/reg_inst_gx.reference | 9 + .../ToolUnitTests/reg_inst_gx.tool.reference | 1 + .../ToolUnitTests/reg_operands_test.reference | 1 + .../ToolUnitTests/reg_operands_test_app.c | 36 + .../reg_operands_test_app_win.asm | 28 + .../ToolUnitTests/reg_operands_test_tool.cpp | 101 + .../tools/ToolUnitTests/reg_ref_fp_st.cpp | 41 + .../tools/ToolUnitTests/reg_ref_x87.cpp | 41 + .../tools/ToolUnitTests/reg_ref_xmm.cpp | 42 + .../tools/ToolUnitTests/reg_ref_ymm.cpp | 42 + .../tools/ToolUnitTests/reg_value_fp_st.cpp | 41 + .../tools/ToolUnitTests/reg_value_x87.cpp | 41 + .../tools/ToolUnitTests/reg_value_xmm.cpp | 42 + .../tools/ToolUnitTests/reg_value_ymm.cpp | 42 + .../source/tools/ToolUnitTests/rep_ia32.s | 142 + .../source/tools/ToolUnitTests/rep_intel64.s | 154 + .../source/tools/ToolUnitTests/repcmpsz.c | 70 + .../source/tools/ToolUnitTests/repcmpsz.s | 78 + .../tools/ToolUnitTests/repcmpsz_tool.cpp | 417 + .../ToolUnitTests/repcmpsz_tool.reference | 54 + .../tools/ToolUnitTests/replace_free.cpp | 109 + .../ToolUnitTests/replace_malloc_inst.cpp | 200 + .../ToolUnitTests/replace_rtl_alloc_heap.cpp | 233 + .../ToolUnitTests/reppredicate_ia32.reference | 8 + .../reppredicate_intel64.reference | 9 + .../source/tools/ToolUnitTests/reptool.cpp | 188 + .../ToolUnitTests/reptool_ia32.reference | 89 + .../ToolUnitTests/reptool_intel64.reference | 101 + .../tools/ToolUnitTests/reserve_memory.c | 54 + .../ToolUnitTests/reserve_memory_win.cpp | 108 + .../tools/ToolUnitTests/returnflags.cpp | 106 + .../ToolUnitTests/returnflags_and_ref.cpp | 128 + .../source/tools/ToolUnitTests/returnreg.cpp | 94 + .../tools/ToolUnitTests/rewritememop.cpp | 77 + .../tools/ToolUnitTests/rewritememop1.cpp | 316 + .../rip_relative_prefix_67_app_intel64.c | 105 + .../rip_relative_prefix_67_asm_intel64.s | 49 + .../tools/ToolUnitTests/rtn_insert_call1.cpp | 255 + .../tools/ToolUnitTests/rtn_insert_call2.cpp | 239 + .../source/tools/ToolUnitTests/safecopy.cpp | 225 + .../tools/ToolUnitTests/safecopy_mxcsr.cpp | 246 + .../tools/ToolUnitTests/secname_app.cpp | 31 + .../tools/ToolUnitTests/secname_tool.cpp | 59 + .../tools/ToolUnitTests/seg_override_app1.c | 71 + .../ToolUnitTests/seg_override_app1_win.asm | 42 + .../ToolUnitTests/segmented_ea_verifier.cpp | 576 + .../segmented_ea_verifier_lin_ia32.s | 37 + .../segmented_ea_verifier_lin_intel64.s | 41 + .../segmented_ea_verifier_win1_ia32.asm | 39 + .../segmented_ea_verifier_win1_intel64.asm | 35 + .../ToolUnitTests/set_fp_context_xmm_regs.cpp | 355 + .../set_fp_context_xmm_regs_app.cpp | 581 + .../set_fp_context_xmm_regs_ia32.reference | 50 + .../set_fp_context_xmm_regs_intel64.reference | 82 + .../source/tools/ToolUnitTests/short_name.cpp | 121 + .../tools/ToolUnitTests/sigmask-mac.reference | 23 + .../source/tools/ToolUnitTests/sigmask.c | 90 + .../tools/ToolUnitTests/sigmask.reference | 22 + .../source/tools/ToolUnitTests/simple.c | 28 + .../source/tools/ToolUnitTests/simplebar.c | 363 + .../source/tools/ToolUnitTests/simplebar64.c | 121 + .../source/tools/ToolUnitTests/simplefast10.c | 28 + .../source/tools/ToolUnitTests/simplefoo.c | 28 + .../source/tools/ToolUnitTests/simplefoo1.c | 29 + .../source/tools/ToolUnitTests/simplefoo10.c | 29 + .../source/tools/ToolUnitTests/simplefoo12.c | 30 + .../source/tools/ToolUnitTests/simplefoo13.c | 31 + .../source/tools/ToolUnitTests/simplefoo14.c | 59 + .../source/tools/ToolUnitTests/simplefoo2.c | 33 + .../source/tools/ToolUnitTests/simplefoo3.c | 33 + .../source/tools/ToolUnitTests/simplefoo4.c | 41 + .../source/tools/ToolUnitTests/simplefoo6.c | 33 + .../source/tools/ToolUnitTests/simplefoo7.c | 33 + .../source/tools/ToolUnitTests/simplefoo8.c | 33 + .../source/tools/ToolUnitTests/simplefoo9.c | 33 + .../source/tools/ToolUnitTests/simplesp.s | 20 + .../source/tools/ToolUnitTests/simplestd10.c | 27 + .../tools/ToolUnitTests/smallpush_ia32.s | 262 + .../tools/ToolUnitTests/smallpush_intel64.s | 242 + .../source/tools/ToolUnitTests/socket_app.cpp | 68 + .../source/tools/ToolUnitTests/soload.cpp | 60 + .../tools/ToolUnitTests/soload.reference | 4 + .../tools/ToolUnitTests/soloadrange.cpp | 156 + .../tools/ToolUnitTests/sp_argument.cpp | 101 + .../tools/ToolUnitTests/sp_argument_app.c | 39 + .../source/tools/ToolUnitTests/spalign.cpp | 107 + .../ToolUnitTests/spalign_asm_intel64_unix.s | 30 + .../ToolUnitTests/spalign_asm_intel64_win.asm | 25 + .../source/tools/ToolUnitTests/spawntool.cpp | 195 + .../tools/ToolUnitTests/spawntool_app.c | 40 + .../source/tools/ToolUnitTests/sse-ref.cpp | 174 + .../tools/ToolUnitTests/sse-ref.reference | 2 + .../tools/ToolUnitTests/sse-ref_ia32.asm | 168 + .../source/tools/ToolUnitTests/sse-ref_ia32.s | 86 + .../tools/ToolUnitTests/sse-ref_intel64.asm | 254 + .../tools/ToolUnitTests/sse-ref_intel64.s | 83 + .../ToolUnitTests/sse-unaligned-class.cpp | 368 + .../ToolUnitTests/sse-unaligned-class2.cpp | 394 + .../source/tools/ToolUnitTests/sse.cpp | 211 + .../source/tools/ToolUnitTests/stackalign.cpp | 85 + .../ToolUnitTests/static_secondary_dll.cpp | 47 + .../tools/ToolUnitTests/statica_locktest.cpp | 50 + .../source/tools/ToolUnitTests/str2flt.cpp | 75 + .../source/tools/ToolUnitTests/str2int.cpp | 70 + .../source/tools/ToolUnitTests/str2int64.cpp | 71 + .../tools/ToolUnitTests/str2int64.reference | 5 + .../tools/ToolUnitTests/strace_ia32.cpp | 165 + .../tools/ToolUnitTests/stracewin_ia32.cpp | 98 + .../ToolUnitTests/stress_const_context.cpp | 98 + .../ToolUnitTests/stress_const_context2.cpp | 81 + .../stress_const_context_app.cpp | 50 + .../source/tools/ToolUnitTests/stringtest.c | 372 + .../tools/ToolUnitTests/suspend-mxcsr-asm.asm | 25 + .../tools/ToolUnitTests/suspend-mxcsr.cpp | 114 + .../tools/ToolUnitTests/suspend_app_win.cpp | 495 + .../ToolUnitTests/suspend_context_app_win.cpp | 502 + .../tools/ToolUnitTests/suspend_win.cpp | 170 + .../tools/ToolUnitTests/sw_interrupt.cpp | 76 + .../tools/ToolUnitTests/sw_interrupt_app.cpp | 362 + .../source/tools/ToolUnitTests/swizzle2.cpp | 106 + .../tools/ToolUnitTests/swizzle2.reference | 3 + .../source/tools/ToolUnitTests/swizzle3.cpp | 108 + .../source/tools/ToolUnitTests/swizzle5.cpp | 138 + .../tools/ToolUnitTests/swizzle5.reference | 4 + .../tools/ToolUnitTests/swizzle_seg.cpp | 81 + .../tools/ToolUnitTests/swizzle_seg.reference | 2 + .../tools/ToolUnitTests/swizzle_seg_app.cpp | 39 + .../tools/ToolUnitTests/swizzle_seg_app.def | 4 + .../ToolUnitTests/swizzle_seg_app_ia32_unix.s | 58 + .../swizzle_seg_app_ia32_win.asm | 64 + .../swizzle_seg_app_intel64_unix.s | 56 + .../source/tools/ToolUnitTests/swizzle_util.h | 86 + .../source/tools/ToolUnitTests/swizzlealloc.c | 120 + .../source/tools/ToolUnitTests/symsize.c | 21 + .../source/tools/ToolUnitTests/symsize_asm.s | 19 + .../source/tools/ToolUnitTests/sys_memory.h | 71 + .../tools/ToolUnitTests/sys_memory_unix.c | 71 + .../tools/ToolUnitTests/sys_memory_win.c | 63 + .../source/tools/ToolUnitTests/syscall.cpp | 107 + .../tools/ToolUnitTests/syscall_std.cpp | 113 + .../tools/ToolUnitTests/syscall_std.reference | 7 + .../tools/ToolUnitTests/syscall_std_app.cpp | 134 + .../tools/ToolUnitTests/tcreatehook.reference | 15 + .../source/tools/ToolUnitTests/teb.cpp | 96 + .../source/tools/ToolUnitTests/teb.reference | 2 + .../source/tools/ToolUnitTests/teb_app.cpp | 36 + .../test_iarg_partial_context.cpp | 1122 ++ .../test_iarg_partial_context_app.cpp | 1623 ++ .../ToolUnitTests/test_iarg_preserve.cpp | 626 + .../ToolUnitTests/test_iarg_preserve2.cpp | 224 + .../ToolUnitTests/test_iarg_preserve_app.cpp | 1291 ++ .../ToolUnitTests/test_iarg_preserve_app2.cpp | 644 + .../test_iarg_preserve_ia32_unix.s | 673 + .../test_iarg_preserve_ia32_win.asm | 702 + .../test_iarg_preserve_intel64_unix.s | 831 + .../test_iarg_preserve_intel64_win.asm | 896 + .../test_iarg_preserve_mxcsr.cpp | 264 + .../test_iarg_preserve_mxcsr1.cpp | 273 + .../test_iarg_preserve_mxcsr_app.cpp | 682 + .../test_iarg_preserve_probe.cpp | 261 + .../test_iarg_preserve_probe_app.cpp | 730 + .../ToolUnitTests/test_inlined_consts.cpp | 84 + .../test_inlined_consts_intel64.asm | 32 + .../tools/ToolUnitTests/test_ip_access.cpp | 216 + .../ToolUnitTests/test_ip_access_app.cpp | 89 + .../test_ip_access_app_intel64.asm | 42 + .../tools/ToolUnitTests/test_lea_rip_app.cpp | 26 + .../ToolUnitTests/test_lea_rip_intel64.asm | 46 + .../tools/ToolUnitTests/test_sysenter_win.cpp | 35 + .../tools/ToolUnitTests/thenpredicated.cpp | 111 + .../source/tools/ToolUnitTests/thread.c | 78 + .../tools/ToolUnitTests/thread_callback.cpp | 120 + .../tools/ToolUnitTests/thread_count.cpp | 101 + .../ToolUnitTests/thread_count.reference | 2 + .../tools/ToolUnitTests/thread_count2.cpp | 90 + ...thread_count2_debug_service.ia32.reference | 2 + ...ead_count2_debug_service.intel64.reference | 2 + .../thread_count2_divide_by_zero.reference | 2 + .../thread_count_cpp_exception.ia32.reference | 2 + ...read_count_cpp_exception.intel64.reference | 2 + .../thread_count_load_library.reference | 2 + .../thread_count_queue_apc.reference | 2 + .../thread_count_thread_creation.reference | 2 + .../tools/ToolUnitTests/thread_ea_addr16.c | 92 + .../tools/ToolUnitTests/thread_segmented_ea.c | 91 + .../tools/ToolUnitTests/thread_usestack.c | 146 + .../source/tools/ToolUnitTests/thread_wait.c | 76 + .../tools/ToolUnitTests/threadtestwin.c | 66 + .../tools/ToolUnitTests/tool_fetch_app.c | 49 + .../tools/ToolUnitTests/tool_full_path.cpp | 48 + .../tools/ToolUnitTests/tool_malloc.cpp | 111 + .../tools/ToolUnitTests/toolfetch_sub.cpp | 96 + .../ToolUnitTests/toolfetch_sub.reference | 1 + .../source/tools/ToolUnitTests/tstcmpxchg8b.c | 68 + .../tstcmpxchg8b_with_explicit_ebx.c | 43 + .../tstcmpxchg8b_with_explicit_ebx.reference | 1 + .../pin-3.13/source/tools/ToolUnitTests/two.c | 23 + .../source/tools/ToolUnitTests/undecorate.cpp | 146 + .../ToolUnitTests/undecorateOperator_app.cpp | 31 + .../tools/ToolUnitTests/undecorate_app.cpp | 61 + .../tools/ToolUnitTests/unsup_syscall.s | 109 + .../source/tools/ToolUnitTests/waitpidbug.c | 90 + .../tools/ToolUnitTests/win_callback.cpp | 89 + .../tools/ToolUnitTests/win_callback_app.cpp | 153 + .../win_code_on_reused_memory.cpp | 95 + .../win_code_on_reused_memory.reference | 2 + .../tools/ToolUnitTests/win_cpp_exception.cpp | 92 + .../ToolUnitTests/win_cpp_exception.reference | 5 + .../tools/ToolUnitTests/win_debug_service.cpp | 34 + .../ToolUnitTests/win_debug_service.reference | 1 + .../win_divide_by_zero_exception.cpp | 77 + .../win_divide_by_zero_exception.reference | 2 + .../tools/ToolUnitTests/win_early_thread.cpp | 27 + .../ToolUnitTests/win_early_thread_dll.cpp | 61 + .../ToolUnitTests/win_exception_test.cpp | 55 + .../tools/ToolUnitTests/win_load_library.cpp | 71 + .../ToolUnitTests/win_load_library.reference | 3 + .../tools/ToolUnitTests/win_mxcsr_app.cpp | 38 + .../ToolUnitTests/win_no_dependencies.cpp | 16 + .../tools/ToolUnitTests/win_queue_apc.cpp | 52 + .../ToolUnitTests/win_queue_apc.reference | 11 + .../tools/ToolUnitTests/win_syscallenum.cpp | 79 + .../ToolUnitTests/win_thread_create_apc.cpp | 68 + .../win_thread_create_apc.reference | 2 + .../tools/ToolUnitTests/win_tls_dll.cpp | 83 + .../winapp_exception_context.cpp | 248 + .../ToolUnitTests/winillegalrange.address | 1 + .../tools/ToolUnitTests/winrange.address | 7 + .../ToolUnitTests/write_debugger_error.cpp | 71 + .../tools/ToolUnitTests/write_user_error.cpp | 80 + .../ToolUnitTests/x87_regs_in_context.cpp | 526 + .../ToolUnitTests/x87_regs_in_context_app.cpp | 517 + .../source/tools/ToolUnitTests/xmmapp.cpp | 483 + .../source/tools/ToolUnitTests/xmmtest.cpp | 149 + .../tools/Utils/attachLauncher_unix.cpp | 296 + .../pin-3.13/source/tools/Utils/avx2_check.c | 23 + .../source/tools/Utils/avx512f_check.c | 23 + .../pin-3.13/source/tools/Utils/avx_check.c | 23 + .../source/tools/Utils/avx_check_ia32.asm | 50 + .../source/tools/Utils/avx_check_ia32.s | 48 + .../source/tools/Utils/avx_check_intel64.asm | 85 + .../source/tools/Utils/avx_check_intel64.s | 46 + .../pin-3.13/source/tools/Utils/compare.py | 91 + .../pin-3.13/source/tools/Utils/cp-pin.cpp | 58 + .../source/tools/Utils/disable-aslr.c | 51 + .../pin-3.13/source/tools/Utils/hello.c | 18 + .../pin-3.13/source/tools/Utils/mac-cmp | 18 + .../pin-3.13/source/tools/Utils/makefile | 22 + .../source/tools/Utils/makefile.rules | 113 + .../source/tools/Utils/printFunctionSize.py | 118 + .../source/tools/Utils/printLinuxDistName | 11 + .../source/tools/Utils/printLinuxDistVersion | 11 + .../source/tools/Utils/printWindowsVersion.py | 65 + .../source/tools/Utils/regvalue_utils.cpp | 97 + .../source/tools/Utils/regvalue_utils.h | 50 + .../pin-3.13/source/tools/Utils/run_many | 23 + .../source/tools/Utils/run_many_win.bat | 19 + .../pin-3.13/source/tools/Utils/runnable.cpp | 146 + .../pin-3.13/source/tools/Utils/runnable.h | 129 + .../tools/Utils/set_xmm_scratches_ia32.asm | 39 + .../tools/Utils/set_xmm_scratches_intel64.asm | 29 + .../source/tools/Utils/supports_avx2_ia32.asm | 56 + .../source/tools/Utils/supports_avx2_ia32.s | 54 + .../tools/Utils/supports_avx2_intel64.asm | 91 + .../tools/Utils/supports_avx2_intel64.s | 53 + .../tools/Utils/supports_avx512f_ia32.asm | 53 + .../tools/Utils/supports_avx512f_ia32.s | 53 + .../tools/Utils/supports_avx512f_intel64.asm | 54 + .../tools/Utils/supports_avx512f_intel64.s | 53 + .../source/tools/Utils/supports_avx_ia32.asm | 50 + .../source/tools/Utils/supports_avx_ia32.s | 50 + .../tools/Utils/supports_avx_intel64.asm | 52 + .../source/tools/Utils/supports_avx_intel64.s | 59 + .../pin-3.13/source/tools/Utils/sys_memory.h | 71 + .../source/tools/Utils/sys_memory_unix.c | 71 + .../source/tools/Utils/sys_memory_win.c | 63 + .../source/tools/Utils/testGccVersion | 7 + .../source/tools/Utils/testLibcVersion | 27 + .../source/tools/Utils/testLinuxDistName | 23 + .../source/tools/Utils/testLinuxDistVersion | 28 + .../source/tools/Utils/testMacOsVersion | 44 + .../source/tools/Utils/testReleaseVersion | 7 + .../tools/Utils/testReleaseVersionPython.py | 20 + .../source/tools/Utils/testStaticLibs | 12 + .../source/tools/Utils/testToolVersion | 29 + .../pin-3.13/source/tools/Utils/testsummary | 6 + .../source/tools/Utils/thread_pool.cpp | 112 + .../pin-3.13/source/tools/Utils/thread_pool.h | 97 + .../pin-3.13/source/tools/Utils/thread_unix.c | 58 + .../pin-3.13/source/tools/Utils/thread_win.c | 63 + .../pin-3.13/source/tools/Utils/threadlib.h | 52 + .../source/tools/Utils/threadlib_unix.c | 80 + .../source/tools/Utils/threadlib_win.c | 73 + .../pin-3.13/source/tools/Utils/tool_macros.h | 48 + .../pin-3.13/source/tools/Utils/tsx_check.c | 23 + .../source/tools/Utils/tsx_check_ia32.asm | 45 + .../source/tools/Utils/tsx_check_ia32.s | 44 + .../source/tools/Utils/tsx_check_intel64.asm | 51 + .../source/tools/Utils/tsx_check_intel64.s | 43 + .../pintool/pin-3.13/source/tools/makefile | 70 + .../source/tools/pintool.tscons-extension | 582 + 4453 files changed, 639381 insertions(+), 69 deletions(-) create mode 100755 src/tracer/pintool/pin-3.13/README create mode 100755 src/tracer/pintool/pin-3.13/doc/html/annotated.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/bc_s.png create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCALLSTACK_1_1CallEntry-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCALLSTACK_1_1CallEntry.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCALLSTACK_1_1CallStack-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCALLSTACK_1_1CallStack.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCALLSTACK_1_1CallStackHandlerParams-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCALLSTACK_1_1CallStackHandlerParams.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCALLSTACK_1_1CallStackManager-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCALLSTACK_1_1CallStackManager.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ADDRESS-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ADDRESS.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__CPUID-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__CPUID.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ENTER__FUNC-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ENTER__FUNC.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__EXIT__FUNC-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__EXIT__FUNC.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ICOUNT-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ICOUNT.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__IMAGE-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__IMAGE.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__INT3-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__INT3.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__INTERACTIVE-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__INTERACTIVE.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ISA__CATEGORY-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ISA__CATEGORY.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ISA__EXTENSION-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ISA__EXTENSION.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ITEXT-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ITEXT.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__MAGIC-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__MAGIC.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__MANAGER-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__MANAGER.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__PCONTROL-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__PCONTROL.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__SIGNAL-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__SIGNAL.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__SSC-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__SSC.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__SYMBOL-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__SYMBOL.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__TIMEOUT-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__TIMEOUT.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROLLER__EVENTS-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROLLER__EVENTS.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROL__ARGS-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROL__ARGS.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROL__CHAIN-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROL__CHAIN.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROL__IREGIONS-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROL__IREGIONS.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROL__MANAGER-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROL__MANAGER.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROL__PCREGIONS-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROL__PCREGIONS.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1IALARM-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1IALARM.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1IEVENT-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1IEVENT.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1INIT__ALARM-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1INIT__ALARM.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1INTERACTIVE__LISTENER-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1INTERACTIVE__LISTENER.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1IREGION-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1IREGION.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1PARSER-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1PARSER.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1PCREGION-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1PCREGION.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1REGION__UTILS-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1REGION__UTILS.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classDEBUGGER__SHELL_1_1ICUSTOM__INSTRUMENTOR-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classDEBUGGER__SHELL_1_1ICUSTOM__INSTRUMENTOR.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classDEBUGGER__SHELL_1_1ISHELL-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classDEBUGGER__SHELL_1_1ISHELL.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1FILTER-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1FILTER.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1FILTER__LIB-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1FILTER__LIB.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1FILTER__RTN-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1FILTER__RTN.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1FOLLOW__CHILD-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1FOLLOW__CHILD.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1ICOUNT-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1ICOUNT.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1SKIPPER-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1SKIPPER.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1SKIP__INT3-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1SKIP__INT3.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1TIME__WARP-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1TIME__WARP.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1TIME__WARP__RDTSC-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1TIME__WARP__RDTSC.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1ADDRESS__RANGE-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1ADDRESS__RANGE.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1COMMAND__LINE__ARGUMENTS-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1COMMAND__LINE__ARGUMENTS.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1KNOB-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1KNOB.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1KNOBVALUE-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1KNOBVALUE.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1KNOBVALUE__LIST-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1KNOBVALUE__LIST.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1KNOB__BASE-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1KNOB__BASE.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1KNOB__COMMENT-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1KNOB__COMMENT.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1PARSER-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1PARSER.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1PIN__ERROR__DESCRIPTOR-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1PIN__ERROR__DESCRIPTOR.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1SimpleXMLParser-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1SimpleXMLParser.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__CORE_1_1BBL__EDG__CONTAINER__PRED-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__CORE_1_1BBL__EDG__CONTAINER__PRED.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__CORE_1_1BBL__EDG__CONTAINER__SUCC-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__CORE_1_1BBL__EDG__CONTAINER__SUCC.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__CORE_1_1CHUNK__REL__CONTAINER-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__CORE_1_1CHUNK__REL__CONTAINER.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__CORE_1_1REGISTER__SET-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__CORE_1_1REGISTER__SET.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1CLIENT__TLS-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1CLIENT__TLS.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1IMAGE__LOAD__OP-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1IMAGE__LOAD__OP.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1IMAGE__LOAD__OP2-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1IMAGE__LOAD__OP2.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1IMG__IDENTIFIER-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1IMG__IDENTIFIER.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1INSTR-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1INSTR.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1INSTR__INFO-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1INSTR__INFO.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1REPLACEDFUN-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1REPLACEDFUN.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1RTN__KEY-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1RTN__KEY.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1RTN__OUTSIDE__RANGES-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1RTN__OUTSIDE__RANGES.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1SymbolAddressRange-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1SymbolAddressRange.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classSHELL-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classSHELL.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/classes.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/closed.png create mode 100755 src/tracer/pintool/pin-3.13/doc/html/doxygen.css create mode 100755 src/tracer/pintool/pin-3.13/doc/html/doxygen.png create mode 100755 src/tracer/pintool/pin-3.13/doc/html/functions.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/functions_enum.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/functions_eval.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/functions_func.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/functions_vars.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__ALARM.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__API__REF.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__APPDEBUG__API.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__BBL__BASIC__API.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__BUFFER__API.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__CHILD__PROCESS__API.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__CONTEXT__API.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__CONTROLLER__PCREGIONS.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__CONTROLLER__REGIONS.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__DEBUGGER__SHELL.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__DEBUG__API.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__DEPRECATED__PIN__API.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__ERROR__FILE__BASIC.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__EXCEPTION__API.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__FILTER.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__FILTER__LIB.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__FILTER__MULTI.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__FILTER__RTN.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__FOLLOW__CHILD.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__ICOUNT.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__IMG__BASIC__API.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__INSTLIB.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__INST__ARGS.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__INS__BASIC__API.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__INS__BASIC__API__GEN__IA32.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__INS__BASIC__API__IA32.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__INS__INST__API.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__INS__MOD__API__GEN__IA32.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__KNOBS.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__KNOB__API.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__KNOB__BASIC.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__KNOB__PRINT.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__LOCK.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__MISC.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__MISC__PARSE.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__MISC__PRINT.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__PHYSICAL__CONTEXT__API.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__PIN__CALLBACKS.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__PIN__CONTROL.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__PIN__PROCESS__API.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__PIN__SYSCALL__API.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__PIN__THREAD__API.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__PROTO.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__PROTO__API.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__REG__BASIC__API.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__REG__CPU__GENERIC.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__REG__CPU__IA32.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__RTN__BASIC__API.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__SEC__BASIC__API.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__SKIPPER.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__SKIP__INT3.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__STOPPED__THREAD__API.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__SYM__BASIC__API.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__TIME__WARPER.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__TIME__WARPER__RDTSC.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__TRACE__BASIC__API.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__TRACE__VERSION__API.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__TYPE__BASE.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/group__UTILS.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/hierarchy.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/index.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/installdox create mode 100755 src/tracer/pintool/pin-3.13/doc/html/jquery.js create mode 100755 src/tracer/pintool/pin-3.13/doc/html/modules.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespaceLEVEL__BASE.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespaceLEVEL__CORE.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespaceLEVEL__PINCLIENT.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x61.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x62.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x63.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x64.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x65.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x66.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x68.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x69.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x6b.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x6c.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x6d.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x6e.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x6f.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x70.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x72.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x73.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x74.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x75.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x76.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_enum.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_eval.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_eval_0x64.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_eval_0x65.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_eval_0x66.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_eval_0x69.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_eval_0x6b.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_eval_0x6e.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_eval_0x70.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_eval_0x72.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_eval_0x73.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_eval_0x75.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x62.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x63.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x64.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x65.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x66.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x68.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x69.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x6b.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x6c.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x6f.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x70.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x72.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x73.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x74.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x75.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_type.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespacemembers_vars.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/namespaces.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/nav_f.png create mode 100755 src/tracer/pintool/pin-3.13/doc/html/nav_h.png create mode 100755 src/tracer/pintool/pin-3.13/doc/html/open.png create mode 100755 src/tracer/pintool/pin-3.13/doc/html/pin-debugger-attach.png create mode 100755 src/tracer/pintool/pin-3.13/doc/html/pin-debugger-option-pages-properties.png create mode 100755 src/tracer/pintool/pin-3.13/doc/html/pin-debugger-project-properties1.png create mode 100755 src/tracer/pintool/pin-3.13/doc/html/pin-debugger-project-properties2.png create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/all_5f.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/all_61.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/all_62.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/all_63.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/all_64.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/all_65.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/all_66.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/all_67.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/all_68.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/all_69.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/all_6b.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/all_6c.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/all_6d.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/all_6e.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/all_6f.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/all_70.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/all_72.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/all_73.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/all_74.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/all_75.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/all_76.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/all_7e.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/classes_5f.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/classes_61.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/classes_62.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/classes_63.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/classes_64.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/classes_65.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/classes_66.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/classes_68.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/classes_69.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/classes_6b.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/classes_6c.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/classes_6d.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/classes_6f.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/classes_70.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/classes_72.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/classes_73.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/classes_74.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/classes_76.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/close.png create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/enums_61.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/enums_65.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/enums_66.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/enums_69.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/enums_6b.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/enums_6d.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/enums_70.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/enums_72.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/enums_73.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/enums_75.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/enums_76.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_61.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_64.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_65.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_66.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_69.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_6b.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_6d.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_6e.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_70.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_72.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_73.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_75.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/functions_61.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/functions_62.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/functions_63.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/functions_64.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/functions_65.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/functions_66.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/functions_67.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/functions_68.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/functions_69.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/functions_6b.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/functions_6c.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/functions_6d.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/functions_6e.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/functions_6f.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/functions_70.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/functions_72.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/functions_73.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/functions_74.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/functions_75.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/functions_76.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/functions_7e.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/mag_sel.png create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/namespaces_6c.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/nomatches.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/search.css create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/search.js create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/search_l.png create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/search_m.png create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/search_r.png create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/typedefs_61.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/typedefs_63.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/typedefs_64.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/typedefs_65.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/typedefs_66.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/typedefs_69.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/typedefs_6d.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/typedefs_6f.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/typedefs_70.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/typedefs_72.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/typedefs_73.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/typedefs_74.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/variables_5f.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/variables_61.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/variables_69.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/variables_6b.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/variables_6d.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/variables_6e.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/variables_70.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/variables_72.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/search/variables_73.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/stack-debugger-commands.png create mode 100755 src/tracer/pintool/pin-3.13/doc/html/stack-debugger-custom-break.png create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structCALLSTACK_1_1CallStackInfoStruct-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structCALLSTACK_1_1CallStackInfoStruct.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structCALL__APPLICATION__FUNCTION__PARAM-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structCALL__APPLICATION__FUNCTION__PARAM.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structCONTROLLER_1_1CACHELINE__COUNTER-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structCONTROLLER_1_1CACHELINE__COUNTER.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structCONTROLLER_1_1CHAIN__EVENT-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structCONTROLLER_1_1CHAIN__EVENT.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structCONTROLLER_1_1CONTROL__HANDLER__PARAMS-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structCONTROLLER_1_1CONTROL__HANDLER__PARAMS.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structCONTROLLER_1_1CONTROL__REGION__INFO-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structCONTROLLER_1_1CONTROL__REGION__INFO.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structDEBUGGER__SHELL_1_1STARTUP__ARGUMENTS-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structDEBUGGER__SHELL_1_1STARTUP__ARGUMENTS.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structDEBUG__CONNECTION__INFO-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structDEBUG__CONNECTION__INFO.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structDEBUG__MODE-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structDEBUG__MODE.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1DECSTR-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1DECSTR.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1FLTSTR-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1FLTSTR.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1HEXSTR-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1HEXSTR.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1ImageLoaderInfo-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1ImageLoaderInfo.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1LINUX__LOADER__IMAGE__INFO-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1LINUX__LOADER__IMAGE__INFO.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1PIN__LOCK-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1PIN__LOCK.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1REGDEF__ENTRY-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1REGDEF__ENTRY.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structLEVEL__CORE_1_1EDG__STRUCT__BASE-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structLEVEL__CORE_1_1EDG__STRUCT__BASE.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structLEVEL__CORE_1_1IMG__REGION-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structLEVEL__CORE_1_1IMG__REGION.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structLEVEL__CORE_1_1MEM__ADDR__EXP-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structLEVEL__CORE_1_1MEM__ADDR__EXP.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1IMAGE__INIT__SESSION-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1IMAGE__INIT__SESSION.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1ImageLoadArgs-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1ImageLoadArgs.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1OUTSIDE__TARGET-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1OUTSIDE__TARGET.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1OUTSIDE__TARGET__MEM__RANGE-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1OUTSIDE__TARGET__MEM__RANGE.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1PIN__CLIENT__MUTEX-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1PIN__CLIENT__MUTEX.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1SymbolDebugInfo-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1SymbolDebugInfo.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structPARG__T-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structPARG__T.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structPIN__CODE__RANGE-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structPIN__CODE__RANGE.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structPIN__MEM__ACCESS__INFO-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structPIN__MEM__ACCESS__INFO.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structPIN__MEM__TRANS__INFO-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structPIN__MEM__TRANS__INFO.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structPIN__MULTI__MEM__ACCESS__INFO-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structPIN__MULTI__MEM__ACCESS__INFO.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structREG__INFO-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/structREG__INFO.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01T_01_5_01_4-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01T_01_5_01_4.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01T_01_6_01_4-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01T_01_6_01_4.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01bool_01_4-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01bool_01_4.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01char_01_4-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01char_01_4.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01double_01_4-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01double_01_4.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01float_01_4-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01float_01_4.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01int_01_4-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01int_01_4.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01long_01_4-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01long_01_4.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01long_01long_01_4-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01long_01long_01_4.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01short_01_4-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01short_01_4.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01signed_01char_01_4-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01signed_01char_01_4.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01unsigned_01char_01_4-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01unsigned_01char_01_4.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01unsigned_01int_01_4-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01unsigned_01int_01_4.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01unsigned_01long_01_4-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01unsigned_01long_01_4.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01unsigned_01long_01long_01_4-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01unsigned_01long_01long_01_4.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01unsigned_01short_01_4-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01unsigned_01short_01_4.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01void_01_4-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01void_01_4.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/struct__tcpClientStruct-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/struct__tcpClientStruct.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/struct__tcpServerStruct-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/struct__tcpServerStruct.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/tab_a.png create mode 100755 src/tracer/pintool/pin-3.13/doc/html/tab_b.png create mode 100755 src/tracer/pintool/pin-3.13/doc/html/tab_h.png create mode 100755 src/tracer/pintool/pin-3.13/doc/html/tab_s.png create mode 100755 src/tracer/pintool/pin-3.13/doc/html/tabs.css create mode 100755 src/tracer/pintool/pin-3.13/doc/html/unionLEVEL__CORE_1_1VAL-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/unionLEVEL__CORE_1_1VAL.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/unionPIN__MEM__TRANS__FLAGS-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/unionPIN__MEM__TRANS__FLAGS.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/unionPIN__REGISTER-members.html create mode 100755 src/tracer/pintool/pin-3.13/doc/html/unionPIN__REGISTER.html create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/asm.h create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/asm/gas-x86.h create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/asm/masm-x86.h create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/asm/nasm-x86.h create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/asm/unix-intel64.h create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/asm/windows-intel64.h create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/atomic.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/atomic/config.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/atomic/exponential-backoff.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/atomic/fixed-lifo.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/atomic/fixed-multimap.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/atomic/fixed-multiset.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/atomic/idset.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/atomic/lifo-ctr.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/atomic/lifo-ptr.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/atomic/nullstats.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/atomic/ops-enum.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/atomic/ops.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/atomic/private/backoff-impl.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/atomic/private/ia32/ops-impl-ia32-asm.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/atomic/private/ia32/ops-impl.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/atomic/private/intel64/ops-impl-intel64-asm.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/atomic/private/intel64/ops-impl.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/atomic/private/ops-common-impl.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/event-linux.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/event-mac.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/event-windows.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/forward.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/image-linux.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/image-mac.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/image-windows.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-gdb-linux-avx32.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-gdb-linux-avx512-32.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-gdb-linux-avx512-64.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-gdb-linux-avx64.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-gdb-linux-ia32.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-gdb-linux-intel64.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-gdb-mac-ia32.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-gdb-mac-intel64.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-windows-avx32.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-windows-avx512-32.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-windows-avx512-64.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-windows-avx64.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-windows-ia32.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-windows-intel64.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/thread-linux.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/thread-mac.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/thread-windows.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/types.h create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/util.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/util/data.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/util/intel-fp.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/util/locker.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/util/numberbits.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/util/quote-argument-ms.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/util/range.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/util/regvalue.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/util/round.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/util/scoped-array.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/util/scoped-ptr.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/util/singleton.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/components/include/util/strings.hpp create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/annotated.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/bc_s.png create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/classes.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/closed.png create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/doxygen.css create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/doxygen.png create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/functions.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/functions_vars.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__DEF.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__FILE.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__HOST.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__IPC.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__MEMORY.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__MUTEX.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__PIN__TLS.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__PROCESS.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__RW__LOCK.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__SIGNALS.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__THREAD.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__THREAD__MANAGEMENT.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__TIME.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__TYPES.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/index.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/installdox create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/jquery.js create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/modules.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/nav_f.png create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/nav_h.png create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/open.png create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/all_5f.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/all_62.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/all_67.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/all_6b.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/all_6d.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/all_6f.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/all_70.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/all_73.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/all_74.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/classes_5f.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/classes_6b.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/classes_6f.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/classes_73.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/close.png create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/mag_sel.png create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/nomatches.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/search.css create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/search.js create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/search_l.png create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/search_m.png create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/search_r.png create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/variables_5f.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/variables_62.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/variables_67.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/variables_6d.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/variables_6f.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/variables_70.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/variables_73.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/variables_74.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/structOS__APIS__RW__LOCK__IMPL__T-members.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/structOS__APIS__RW__LOCK__IMPL__T.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/structOS__MEMORY__AT__ADDR__INFORMATION-members.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/structOS__MEMORY__AT__ADDR__INFORMATION.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/structSIGACTION-members.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/structSIGACTION.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/struct__OS__APIS__MUTEX__TYPE-members.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/struct__OS__APIS__MUTEX__TYPE.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/struct__OS__FILE__UNIQUE__ID-members.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/struct__OS__FILE__UNIQUE__ID.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/struct__OS__RETURN__CODE-members.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/struct__OS__RETURN__CODE.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/struct__OS__RETURN__CODE__POSIX-members.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/struct__OS__RETURN__CODE__POSIX.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/structkernel__sigaction-members.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/structkernel__sigaction.html create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/tab_a.png create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/tab_b.png create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/tab_h.png create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/tab_s.png create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/doc/html/tabs.css create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/alloca.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/amd64/machine/fenv.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/android/api-level.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/android/dlext.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/android/set_abort_message.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/ar.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/arch-x86/machine/asm.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/arch-x86/machine/elf_machdep.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/arch-x86/machine/endian.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/arch-x86/machine/exec.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/arch-x86/machine/setjmp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/arch-x86_64/machine/asm.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/arch-x86_64/machine/elf_machdep.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/arch-x86_64/machine/endian.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/arch-x86_64/machine/exec.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/arch-x86_64/machine/fpu.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/arch-x86_64/machine/setjmp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/arpa/inet.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/arpa/nameser.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/arpa/nameser_compat.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/arpa/telnet.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/assert.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/baresyscall/baresyscall.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/baresyscall/ia32-linux/baresyscall.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/baresyscall/intel64-linux/baresyscall.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/baresyscall/linux-baresyscall.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/baresyscall/syscalltypes.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/baresyscall/unix-baresyscall.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/byteswap.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/complex.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/ctype.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/dirent.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/dlfcn.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/elf.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/endian.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/err.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/errno.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/execinfo.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/fcntl.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/features.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/fenv.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/fnmatch.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/freebsd/include/elf.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/freebsd/sys/compat/linux/linux_misc.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/freebsd/sys/sys/elf32.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/freebsd/sys/sys/elf64.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/freebsd/sys/sys/elf_common.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/freebsd/sys/x86/include/elf.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/fts.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/ftw.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/getopt.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/grp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/i387/machine/fenv.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/inttypes.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/auxvec.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/bitsperlong.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/errno-base.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/errno.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/fcntl.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/int-l64.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/int-ll64.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/ioctl.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/ioctls.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/ipcbuf.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/kvm_para.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/mman-common.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/mman.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/msgbuf.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/param.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/poll.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/posix_types.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/resource.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/sembuf.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/setup.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/shmbuf.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/shmparam.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/siginfo.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/signal-defs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/signal.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/socket.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/sockios.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/stat.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/statfs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/swab.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/termbits.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/termios.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/types.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/ucontext.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/unistd.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/a.out.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/auxvec.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/bitsperlong.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/boot.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/bootparam.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/byteorder.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/debugreg.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/e820.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/errno.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/fcntl.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/hw_breakpoint.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/hyperv.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/ioctl.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/ioctls.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/ipcbuf.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/ist.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/kvm.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/kvm_para.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/ldt.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/mce.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/mman.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/msgbuf.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/msr-index.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/msr.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/mtrr.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/param.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/perf_regs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/poll.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/posix_types.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/posix_types_32.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/posix_types_64.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/posix_types_x32.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/prctl.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/processor-flags.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/ptrace-abi.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/ptrace.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/resource.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/sembuf.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/setup.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/shmbuf.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/sigcontext.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/sigcontext32.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/siginfo.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/signal.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/socket.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/sockios.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/stat.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/statfs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/svm.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/swab.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/termbits.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/termios.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/types.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/ucontext.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/unistd.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/unistd_32.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/unistd_64.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/unistd_x32.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/vm86.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/vmx.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/vsyscall.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/a.out.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/acct.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/adb.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/adfs_fs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/affs_hardblocks.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/agpgart.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/aio_abi.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/android_alarm.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/apm_bios.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/arcfb.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/ashmem.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/atalk.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/atm.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/atm_eni.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/atm_he.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/atm_idt77105.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/atm_nicstar.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/atm_tcp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/atm_zatm.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/atmapi.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/atmarp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/atmbr2684.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/atmclip.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/atmdev.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/atmioc.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/atmlec.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/atmmpc.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/atmppp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/atmsap.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/atmsvc.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/audit.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/auto_fs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/auto_fs4.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/auxvec.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/ax25.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/b1lli.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/baycom.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/bcache.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/bcm933xx_hcs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/bfs_fs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/binder.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/binfmts.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/blkpg.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/blktrace_api.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/bpqether.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/bsg.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/btrfs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/byteorder/big_endian.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/byteorder/little_endian.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/caif/caif_socket.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/caif/if_caif.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/can.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/can/bcm.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/can/error.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/can/gw.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/can/netlink.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/can/raw.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/capability.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/capi.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/cciss_defs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/cciss_ioctl.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/cdrom.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/cgroupstats.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/chio.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/cifs/cifs_mount.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/cm4000_cs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/cn_proc.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/coda.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/coda_psdev.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/coff.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/compiler.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/connector.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/const.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/cramfs_fs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/cuda.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/cyclades.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/cycx_cfm.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/dcbnl.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/dccp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/dlm.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/dlm_device.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/dlm_netlink.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/dlm_plock.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/dlmconstants.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/dm-ioctl.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/dm-log-userspace.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/dn.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/dqblk_xfs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/dvb/audio.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/dvb/ca.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/dvb/dmx.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/dvb/frontend.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/dvb/net.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/dvb/osd.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/dvb/version.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/dvb/video.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/edd.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/efs_fs_sb.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/elf-em.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/elf-fdpic.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/elfcore.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/errno.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/errqueue.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/ethtool.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/eventpoll.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/fadvise.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/falloc.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/fanotify.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/fb.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/fcntl.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/fd.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/fdreg.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/fib_rules.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/fiemap.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/filter.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/firewire-cdev.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/firewire-constants.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/flat.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/fs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/fsl_hypervisor.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/fuse.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/futex.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/gameport.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/gen_stats.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/genetlink.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/genwqe/genwqe_card.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/gfs2_ondisk.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/gigaset_dev.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/hash_info.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/hdlc.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/hdlc/ioctl.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/hdlcdrv.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/hdreg.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/hid.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/hiddev.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/hidraw.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/hpet.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/hsi/hsi_char.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/hsr_netlink.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/hw_breakpoint.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/hysdn_if.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/i2c-dev.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/i2c.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/i2o-dev.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/i8k.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/icmp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/icmpv6.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/if.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/if_addr.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/if_addrlabel.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/if_alg.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/if_arcnet.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/if_arp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/if_bonding.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/if_bridge.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/if_cablemodem.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/if_eql.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/if_ether.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/if_fc.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/if_fddi.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/if_frad.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/if_hippi.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/if_infiniband.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/if_link.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/if_ltalk.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/if_packet.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/if_phonet.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/if_plip.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/if_ppp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/if_pppol2tp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/if_pppolac.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/if_pppopns.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/if_pppox.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/if_slip.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/if_team.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/if_tun.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/if_tunnel.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/if_vlan.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/if_x25.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/igmp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/in.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/in6.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/in_route.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/inet_diag.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/inotify.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/input.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/ioctl.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/ion.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/ioprio.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/ip.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/ip6_tunnel.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/ip_vs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/ipc.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/ipmi.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/ipmi_msgdefs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/ipsec.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/ipv6.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/ipv6_route.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/ipx.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/irda.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/irqnr.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/isdn.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/isdn/capicmd.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/isdn_divertif.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/isdn_ppp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/isdnif.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/iso_fs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/ivtv.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/ivtvfb.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/ixjuser.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/jffs2.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/joystick.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/kd.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/kdev_t.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/kernel-page-flags.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/kernel.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/kernelcapi.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/kexec.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/keyboard.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/keychord.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/keyctl.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/kvm.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/kvm_para.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/l2tp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/libc-compat.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/limits.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/llc.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/loop.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/lp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/magic.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/major.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/map_to_7segment.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/matroxfb.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/mdio.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/media.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/mei.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/mempolicy.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/meye.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/mic_common.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/mic_ioctl.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/mii.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/minix_fs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/mman.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/mmc/ioctl.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/mmtimer.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/module.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/mqueue.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/mroute.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/mroute6.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/msdos_fs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/msg.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/mtio.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/n_r3964.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/nbd.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/ncp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/ncp_fs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/ncp_mount.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/ncp_no.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/neighbour.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/net.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/net_dropmon.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/net_tstamp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netconf.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netdevice.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/ipset/ip_set.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/ipset/ip_set_bitmap.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/ipset/ip_set_hash.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/ipset/ip_set_list.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/nf_conntrack_common.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/nf_conntrack_ftp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/nf_conntrack_sctp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/nf_conntrack_tcp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/nf_conntrack_tuple_common.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/nf_nat.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/nf_tables.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/nf_tables_compat.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/nfnetlink.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/nfnetlink_acct.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/nfnetlink_compat.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/nfnetlink_conntrack.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/nfnetlink_cthelper.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/nfnetlink_cttimeout.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/nfnetlink_log.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/nfnetlink_queue.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/x_tables.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_AUDIT.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_CHECKSUM.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_CLASSIFY.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_CONNSECMARK.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_CT.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_HMARK.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_IDLETIMER.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_LED.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_LOG.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_NFLOG.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_NFQUEUE.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_SECMARK.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_SYNPROXY.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_TCPOPTSTRIP.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_TEE.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_TPROXY.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_addrtype.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_bpf.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_cgroup.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_cluster.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_comment.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_connbytes.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_connlabel.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_connlimit.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_connmark.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_conntrack.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_cpu.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_dccp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_devgroup.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_dscp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_ecn.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_esp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_hashlimit.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_helper.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_ipcomp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_iprange.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_ipvs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_l2tp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_length.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_limit.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_mac.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_mark.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_multiport.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_nfacct.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_osf.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_owner.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_physdev.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_pkttype.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_policy.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_quota.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_rateest.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_realm.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_recent.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_rpfilter.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_sctp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_set.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_socket.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_state.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_statistic.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_string.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_tcpmss.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_tcpudp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_time.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter/xt_u32.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter_arp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter_arp/arp_tables.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter_arp/arpt_mangle.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter_bridge.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter_bridge/ebt_802_3.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter_bridge/ebt_among.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter_bridge/ebt_arp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter_bridge/ebt_arpreply.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter_bridge/ebt_ip.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter_bridge/ebt_ip6.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter_bridge/ebt_limit.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter_bridge/ebt_log.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter_bridge/ebt_mark_m.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter_bridge/ebt_mark_t.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter_bridge/ebt_nat.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter_bridge/ebt_nflog.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter_bridge/ebt_pkttype.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter_bridge/ebt_redirect.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter_bridge/ebt_stp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter_bridge/ebt_ulog.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter_bridge/ebt_vlan.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter_bridge/ebtables.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter_decnet.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter_ipv4.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter_ipv4/ip_tables.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter_ipv4/ipt_CLUSTERIP.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter_ipv4/ipt_LOG.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter_ipv4/ipt_REJECT.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter_ipv4/ipt_ULOG.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter_ipv4/ipt_ah.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter_ipv4/ipt_ecn.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter_ipv4/ipt_ttl.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter_ipv6.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter_ipv6/ip6_tables.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter_ipv6/ip6t_LOG.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter_ipv6/ip6t_NPT.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter_ipv6/ip6t_REJECT.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter_ipv6/ip6t_ah.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter_ipv6/ip6t_frag.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter_ipv6/ip6t_hl.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter_ipv6/ip6t_ipv6header.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter_ipv6/ip6t_mh.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter_ipv6/ip6t_opts.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netfilter_ipv6/ip6t_rt.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netlink.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netlink_diag.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/netrom.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/nfc.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/nfs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/nfs2.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/nfs3.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/nfs4.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/nfs4_mount.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/nfs_fs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/nfs_idmap.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/nfs_mount.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/nfsacl.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/nfsd/cld.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/nfsd/debug.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/nfsd/export.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/nfsd/nfsfh.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/nfsd/stats.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/nl80211.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/nubus.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/nvme.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/nvram.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/omap3isp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/omapfb.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/oom.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/openvswitch.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/packet_diag.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/param.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/parport.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/patchkey.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/pci.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/pci_regs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/perf_event.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/personality.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/pfkeyv2.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/pg.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/phantom.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/phonet.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/pkt_cls.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/pkt_sched.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/pktcdvd.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/pmu.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/poll.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/posix_types.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/ppdev.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/ppp-comp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/ppp-ioctl.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/ppp_defs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/pps.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/prctl.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/ptp_clock.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/ptrace.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/qnx4_fs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/qnxtypes.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/quota.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/radeonfb.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/raid/md_p.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/raid/md_u.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/random.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/raw.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/rds.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/reboot.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/reiserfs_fs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/reiserfs_xattr.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/resource.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/rfkill.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/romfs_fs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/rose.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/route.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/rtc.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/rtnetlink.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/scc.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/sched.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/screen_info.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/sctp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/sdla.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/seccomp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/securebits.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/selinux_netlink.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/sem.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/serial.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/serial_core.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/serial_reg.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/serio.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/shm.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/signal.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/signalfd.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/snmp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/sock_diag.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/socket.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/sockios.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/som.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/sonet.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/sonypi.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/sound.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/soundcard.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/spi/spidev.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/stat.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/stddef.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/string.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/sunrpc/debug.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/suspend_ioctls.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/sw_sync.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/swab.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/sync.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/synclink.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/sysctl.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/sysinfo.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/taskstats.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/tc_act/tc_csum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/tc_act/tc_defact.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/tc_act/tc_gact.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/tc_act/tc_ipt.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/tc_act/tc_mirred.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/tc_act/tc_nat.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/tc_act/tc_pedit.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/tc_act/tc_skbedit.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/tc_ematch/tc_em_cmp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/tc_ematch/tc_em_meta.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/tc_ematch/tc_em_nbyte.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/tc_ematch/tc_em_text.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/tcp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/tcp_metrics.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/telephony.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/termios.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/time.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/times.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/timex.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/tiocl.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/tipc.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/tipc_config.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/toshiba.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/tty.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/tty_flags.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/types.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/udf_fs_i.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/udp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/uhid.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/uinput.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/uio.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/ultrasound.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/un.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/unistd.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/unix_diag.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/usb/audio.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/usb/cdc-wdm.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/usb/cdc.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/usb/ch11.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/usb/ch9.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/usb/f_accessory.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/usb/f_mtp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/usb/functionfs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/usb/g_printer.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/usb/gadgetfs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/usb/midi.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/usb/tmc.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/usb/video.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/usbdevice_fs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/utime.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/utsname.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/uuid.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/uvcvideo.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/v4l2-common.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/v4l2-controls.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/v4l2-dv-timings.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/v4l2-mediabus.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/v4l2-subdev.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/version.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/veth.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/vfio.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/vhost.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/videodev2.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/virtio_9p.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/virtio_balloon.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/virtio_blk.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/virtio_config.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/virtio_console.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/virtio_ids.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/virtio_net.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/virtio_pci.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/virtio_ring.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/virtio_rng.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/vm_sockets.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/vsp1.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/vt.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/wait.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/wanrouter.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/watchdog.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/wimax.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/wimax/i2400m.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/wireless.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/x25.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/xattr.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/xfrm.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/zorro.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/linux/zorro_ids.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/lastlog.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/libgen.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/limits.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/link.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/locale.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/machine/ieee.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/machine/wchar_limits.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/malloc.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/math.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/memory.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/mntent.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/net/ethernet.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/net/ethertypes.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/net/if.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/net/if_arp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/net/if_ether.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/net/if_ieee1394.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/net/if_packet.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/net/if_types.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/net/route.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/netdb.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/netinet/ether.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/netinet/icmp6.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/netinet/if_ether.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/netinet/in.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/netinet/in6.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/netinet/in_systm.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/netinet/ip.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/netinet/ip6.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/netinet/ip_icmp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/netinet/tcp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/netinet/udp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/netpacket/packet.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/nsswitch.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/os-apis.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/os-apis/file.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/os-apis/host.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/os-apis/ipc-pipe.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/os-apis/ipc.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/os-apis/memory.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/os-apis/mutex.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/os-apis/os_return_codes.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/os-apis/pin-tls.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/os-apis/process-core.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/os-apis/process.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/os-apis/rw-lock.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/os-apis/sigaction_kernel.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/os-apis/signals-core.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/os-apis/signals.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/os-apis/threads-management.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/os-apis/threads.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/os-apis/time.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/pathconf.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/paths.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/poll.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/pthread.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/pwd.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/regex.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/resolv.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sched.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/search.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/semaphore.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/setjmp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sgidefs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sgtty.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/signal.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/stdatomic.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/stdint.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/stdio.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/stdio_ext.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/stdlib.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/string.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/strings.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/_errdefs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/_sigdefs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/_system_properties.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/auxv.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/cachectl.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/capability.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/cdefs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/cdefs_elf.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/endian.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/epoll.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/errno.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/eventfd.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/file.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/fsuid.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/glibc-syscalls.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/inotify.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/ioctl.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/ioctl_compat.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/ipc.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/klog.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/limits.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/mac/mman.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/mman.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/mount.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/msg.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/nonmac/mman.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/param.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/personality.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/poll.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/prctl.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/ptrace.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/queue.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/reboot.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/reg.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/resource.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/select.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/sem.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/sendfile.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/shm.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/signal.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/signalfd.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/socket.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/socketcalls.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/stat.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/statfs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/statvfs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/swap.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/syscall.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/sysconf.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/sysinfo.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/syslimits.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/sysmacros.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/system_properties.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/time.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/timerfd.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/times.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/timex.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/ttychars.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/ttydefaults.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/ttydev.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/types.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/ucontext.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/uio.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/un.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/user.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/utime.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/utsname.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/vfs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/vt.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/wait.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/sys/xattr.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/syslog.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/termio.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/termios.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/time.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/time64.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/toolchains.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/types.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/types_marker.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/uchar.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/ucontext.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/unistd.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/ustat.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/util.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/utime.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/utmp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/wchar.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/wctype.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/include/xlocale.h create mode 100755 src/tracer/pintool/pin-3.13/extras/crt/tzdata create mode 100755 src/tracer/pintool/pin-3.13/extras/libstdc++/include/cassert create mode 100755 src/tracer/pintool/pin-3.13/extras/libstdc++/include/cctype create mode 100755 src/tracer/pintool/pin-3.13/extras/libstdc++/include/cerrno create mode 100755 src/tracer/pintool/pin-3.13/extras/libstdc++/include/cfloat create mode 100755 src/tracer/pintool/pin-3.13/extras/libstdc++/include/climits create mode 100755 src/tracer/pintool/pin-3.13/extras/libstdc++/include/cmath create mode 100755 src/tracer/pintool/pin-3.13/extras/libstdc++/include/csetjmp create mode 100755 src/tracer/pintool/pin-3.13/extras/libstdc++/include/csignal create mode 100755 src/tracer/pintool/pin-3.13/extras/libstdc++/include/cstddef create mode 100755 src/tracer/pintool/pin-3.13/extras/libstdc++/include/cstdint create mode 100755 src/tracer/pintool/pin-3.13/extras/libstdc++/include/cstdio create mode 100755 src/tracer/pintool/pin-3.13/extras/libstdc++/include/cstdlib create mode 100755 src/tracer/pintool/pin-3.13/extras/libstdc++/include/cstring create mode 100755 src/tracer/pintool/pin-3.13/extras/libstdc++/include/ctime create mode 100755 src/tracer/pintool/pin-3.13/extras/libstdc++/include/cwchar create mode 100755 src/tracer/pintool/pin-3.13/extras/libstdc++/include/cwctype_is_not_supported create mode 100755 src/tracer/pintool/pin-3.13/extras/libstdc++/include/new create mode 100755 src/tracer/pintool/pin-3.13/extras/libstdc++/include/stl_pair.h create mode 100755 src/tracer/pintool/pin-3.13/extras/libstdc++/include/typeinfo create mode 100755 src/tracer/pintool/pin-3.13/extras/libstdc++/include/utility create mode 100755 src/tracer/pintool/pin-3.13/extras/libunwind/include/__libunwind_config.h create mode 100755 src/tracer/pintool/pin-3.13/extras/libunwind/include/libunwind.h create mode 100755 src/tracer/pintool/pin-3.13/extras/libunwind/include/unwind.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/algorithm create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/assert.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/bitset create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/cassert create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/cctype create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/cerrno create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/cfloat create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/ciso646 create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/climits create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/clocale create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/cmath create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/complex create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/csetjmp create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/csignal create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/cstdarg create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/cstddef create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/cstdio create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/cstdlib create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/cstring create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/ctime create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/ctype.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/cwchar create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/cwctype create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/cxxabi.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/deque create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/errno.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/exception create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/exception.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/float.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/fstream create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/fstream.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/functional create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/hash_map create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/hash_set create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/iomanip create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/iomanip.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/ios create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/ios.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/iosfwd create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/iostream create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/iostream.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/iso646.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/istream create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/istream.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/iterator create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/limits create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/limits.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/list create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/locale create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/locale.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/map create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/math.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/memory create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/new create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/new.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/numeric create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/ostream create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/ostream.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/pthread.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/pthread_alloc create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/queue create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/rlocks.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/rope create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/set create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/setjmp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/signal.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/slist create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/sstream create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stack create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stdarg.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stddef.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stdexcept create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stdio.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stdiostream.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stdlib.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_abbrevs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_algo.c create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_algo.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_algobase.c create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_algobase.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_alloc.c create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_alloc.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_auto_ptr.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_bitset.c create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_bitset.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_bvector.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_carray.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_cctype.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_clocale.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_cmath.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_codecvt.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_collate.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_complex.c create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_complex.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_config_compat_post.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_construct.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_cprolog.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_csetjmp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_csignal.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_cstdarg.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_cstddef.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_cstdio.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_cstdlib.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_cstring.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_ctime.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_ctraits_fns.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_ctype.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_cwchar.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_cwctype.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_deque.c create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_deque.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_epilog.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_exception.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_facets_fwd.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_fstream.c create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_fstream.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_function.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_function_adaptors.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_function_base.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_hash_fun.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_hash_map.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_hash_set.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_hashtable.c create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_hashtable.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_heap.c create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_heap.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_iomanip.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_ios.c create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_ios.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_ios_base.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_ioserr.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_iosfwd.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_iostream_string.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_istream.c create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_istream.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_istreambuf_iterator.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_iterator.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_iterator_base.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_iterator_old.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_limits.c create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_limits.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_list.c create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_list.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_locale.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_map.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_mbstate_t.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_messages_facets.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_monetary.c create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_monetary.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_move.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_move_construct_fwk.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_new.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_num_get.c create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_num_get.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_num_put.c create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_num_put.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_numeric.c create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_numeric.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_numpunct.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_ostream.c create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_ostream.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_ostreambuf_iterator.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_pair.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_prolog.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_pthread_alloc.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_ptrs_specialize.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_queue.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_range_errors.c create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_range_errors.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_raw_storage_iter.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_relops_cont.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_relops_hash_cont.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_rope.c create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_rope.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_set.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_slist.c create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_slist.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_slist_base.c create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_slist_base.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_sparc_atomic.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_sstream.c create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_sstream.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_stack.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_stdexcept.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_stdexcept_base.c create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_stdexcept_base.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_stlport_version.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_stream_iterator.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_streambuf.c create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_streambuf.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_string.c create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_string.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_string_base.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_string_fwd.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_string_hash.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_string_io.c create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_string_io.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_string_npos.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_string_operators.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_string_sum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_string_sum_methods.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_string_workaround.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_strstream.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_tempbuf.c create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_tempbuf.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_threads.c create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_threads.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_time_facets.c create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_time_facets.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_tree.c create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_tree.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_typeinfo.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_uninitialized.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_unordered_map.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_unordered_set.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_valarray.c create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_valarray.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_vector.c create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/_vector.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/boost_type_traits.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/c_locale.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/char_traits.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/concept_checks.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/_aix.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/_android.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/_apcc.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/_apple.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/_as400.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/_auto_link.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/_bc.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/_clang.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/_como.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/_cray.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/_cygwin.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/_dec.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/_dec_vms.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/_detect_dll_or_lib.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/_dm.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/_epilog.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/_evc.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/_feedback.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/_freebsd.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/_fujitsu.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/_gcc.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/_hpacc.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/_hpux.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/_ibm.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/_icc.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/_intel.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/_kai.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/_linux.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/_mac.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/_macosx.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/_mlc.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/_msvc.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/_mwerks.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/_native_headers.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/_openbsd.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/_pin.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/_prolog.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/_sgi.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/_solaris.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/_sunprocc.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/_system.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/_warnings_off.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/_watcom.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/_windows.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/compat.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/features.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/host.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/stl_confix.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/stl_mycomp.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/config/user_config.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/debug/_debug.c create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/debug/_debug.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/debug/_deque.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/debug/_hashtable.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/debug/_iterator.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/debug/_list.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/debug/_slist.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/debug/_string.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/debug/_string_sum_methods.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/debug/_tree.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/debug/_vector.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/msl_string.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/pointers/_deque.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/pointers/_list.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/pointers/_set.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/pointers/_slist.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/pointers/_tools.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/pointers/_vector.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/type_manips.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/stl/type_traits.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/streambuf create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/streambuf.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/string create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/string.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/strstream create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/strstream.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/time.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/type_traits create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/typeinfo create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/typeinfo.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/unordered_map create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/unordered_set create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/using/cstring create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/using/export create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/using/fstream create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/using/h/fstream.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/using/h/iomanip.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/using/h/iostream.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/using/h/ostream.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/using/h/streambuf.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/using/h/strstream.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/using/iomanip create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/using/ios create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/using/iosfwd create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/using/iostream create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/using/istream create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/using/locale create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/using/ostream create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/using/sstream create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/using/streambuf create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/using/strstream create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/utility create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/valarray create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/vector create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/wchar.h create mode 100755 src/tracer/pintool/pin-3.13/extras/stlport/include/wctype.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-address-width-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-agen.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-attribute-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-attributes.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-build-defines.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-category-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-chip-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-chip-features.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-common-defs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-common-hdrs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-convert-table-init.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-cpuid-bit-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-cpuid-rec.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-decode.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-decoded-inst-api.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-decoded-inst.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-disas.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-encode-check.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-encode-direct.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-encode.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-encoder-gen-defs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-encoder-hl.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-encoder-iforms.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-error-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-exception-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-extension-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-flag-action-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-flag-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-flags.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-format-options.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-gen-table-defs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-get-time.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-iclass-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-iform-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-iform-map.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-iformfl-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-ild.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-immdis.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-immed.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-init-pointer-names.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-init.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-inst.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-interface.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-isa-set-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-isa-set.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-machine-mode-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-nonterminal-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-operand-accessors.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-operand-action-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-operand-action.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-operand-convert-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-operand-ctype-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-operand-ctype-map.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-operand-element-type-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-operand-element-xtype-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-operand-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-operand-storage.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-operand-type-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-operand-values-interface.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-operand-visibility-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-operand-width-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-patch.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-portability.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-print-info.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-reg-class-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-reg-class.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-reg-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-reg-role-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-rep-prefix.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-state.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-syntax-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-types.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-util.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-ia32/include/xed/xed-version.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-address-width-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-agen.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-attribute-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-attributes.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-build-defines.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-category-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-chip-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-chip-features.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-common-defs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-common-hdrs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-convert-table-init.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-cpuid-bit-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-cpuid-rec.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-decode.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-decoded-inst-api.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-decoded-inst.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-disas.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-encode-check.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-encode-direct.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-encode.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-encoder-gen-defs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-encoder-hl.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-encoder-iforms.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-error-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-exception-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-extension-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-flag-action-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-flag-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-flags.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-format-options.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-gen-table-defs.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-get-time.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-iclass-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-iform-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-iform-map.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-iformfl-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-ild.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-immdis.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-immed.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-init-pointer-names.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-init.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-inst.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-interface.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-isa-set-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-isa-set.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-machine-mode-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-nonterminal-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-operand-accessors.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-operand-action-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-operand-action.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-operand-convert-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-operand-ctype-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-operand-ctype-map.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-operand-element-type-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-operand-element-xtype-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-operand-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-operand-storage.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-operand-type-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-operand-values-interface.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-operand-visibility-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-operand-width-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-patch.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-portability.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-print-info.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-reg-class-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-reg-class.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-reg-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-reg-role-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-rep-prefix.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-state.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-syntax-enum.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-types.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-util.h create mode 100755 src/tracer/pintool/pin-3.13/extras/xed-intel64/include/xed/xed-version.h create mode 100755 src/tracer/pintool/pin-3.13/ia32/bin/pinbin create mode 100755 src/tracer/pintool/pin-3.13/ia32/bin/pinbin.sig create mode 100755 src/tracer/pintool/pin-3.13/ia32/bin/pindb create mode 100755 src/tracer/pintool/pin-3.13/ia32/bin/pindb.sig create mode 100755 src/tracer/pintool/pin-3.13/ia32/lib-ext/libpin3dwarf.so.sig create mode 100755 src/tracer/pintool/pin-3.13/ia32/runtime/pincrt/crtbegin.o.sig create mode 100755 src/tracer/pintool/pin-3.13/ia32/runtime/pincrt/crtbeginS.o.sig create mode 100755 src/tracer/pintool/pin-3.13/ia32/runtime/pincrt/crtend.o.sig create mode 100755 src/tracer/pintool/pin-3.13/ia32/runtime/pincrt/crtendS.o.sig create mode 100755 src/tracer/pintool/pin-3.13/ia32/runtime/pincrt/libc-dynamic.so.sig create mode 100755 src/tracer/pintool/pin-3.13/ia32/runtime/pincrt/libc-static.a.sig create mode 100755 src/tracer/pintool/pin-3.13/ia32/runtime/pincrt/libdl-dynamic.so.sig create mode 100755 src/tracer/pintool/pin-3.13/ia32/runtime/pincrt/libm-dynamic.so.sig create mode 100755 src/tracer/pintool/pin-3.13/ia32/runtime/pincrt/libos-apis.a.sig create mode 100755 src/tracer/pintool/pin-3.13/ia32/runtime/pincrt/libstlport-dynamic.so.sig create mode 100755 src/tracer/pintool/pin-3.13/ia32/runtime/pincrt/libunwind-dynamic.so.sig create mode 100755 src/tracer/pintool/pin-3.13/ia32/runtime/pincrt/linker create mode 100755 src/tracer/pintool/pin-3.13/ia32/runtime/pincrt/linker.sig create mode 100755 src/tracer/pintool/pin-3.13/inscount.out create mode 100755 src/tracer/pintool/pin-3.13/intel64/bin/pinbin create mode 100755 src/tracer/pintool/pin-3.13/intel64/bin/pinbin.sig create mode 100755 src/tracer/pintool/pin-3.13/intel64/bin/pindb create mode 100755 src/tracer/pintool/pin-3.13/intel64/bin/pindb.sig create mode 100755 src/tracer/pintool/pin-3.13/intel64/lib-ext/libpin3dwarf.so.sig create mode 100755 src/tracer/pintool/pin-3.13/intel64/runtime/pincrt/crtbegin.o.sig create mode 100755 src/tracer/pintool/pin-3.13/intel64/runtime/pincrt/crtbeginS.o.sig create mode 100755 src/tracer/pintool/pin-3.13/intel64/runtime/pincrt/crtend.o.sig create mode 100755 src/tracer/pintool/pin-3.13/intel64/runtime/pincrt/crtendS.o.sig create mode 100755 src/tracer/pintool/pin-3.13/intel64/runtime/pincrt/libc-dynamic.so.sig create mode 100755 src/tracer/pintool/pin-3.13/intel64/runtime/pincrt/libc-static.a.sig create mode 100755 src/tracer/pintool/pin-3.13/intel64/runtime/pincrt/libdl-dynamic.so.sig create mode 100755 src/tracer/pintool/pin-3.13/intel64/runtime/pincrt/libm-dynamic.so.sig create mode 100755 src/tracer/pintool/pin-3.13/intel64/runtime/pincrt/libos-apis.a.sig create mode 100755 src/tracer/pintool/pin-3.13/intel64/runtime/pincrt/libstlport-dynamic.so.sig create mode 100755 src/tracer/pintool/pin-3.13/intel64/runtime/pincrt/libunwind-dynamic.so.sig create mode 100755 src/tracer/pintool/pin-3.13/intel64/runtime/pincrt/linker create mode 100755 src/tracer/pintool/pin-3.13/intel64/runtime/pincrt/linker.sig create mode 100755 src/tracer/pintool/pin-3.13/licensing/EULA.txt create mode 100755 src/tracer/pintool/pin-3.13/licensing/LICENSE-FreeBSD create mode 100755 src/tracer/pintool/pin-3.13/licensing/LICENSE-STLport create mode 100755 src/tracer/pintool/pin-3.13/licensing/LICENSE-llvm create mode 100755 src/tracer/pintool/pin-3.13/licensing/NOTICE-libc create mode 100755 src/tracer/pintool/pin-3.13/licensing/NOTICE-libdl create mode 100755 src/tracer/pintool/pin-3.13/licensing/NOTICE-libm create mode 100755 src/tracer/pintool/pin-3.13/licensing/NOTICE-libstdc++ create mode 100755 src/tracer/pintool/pin-3.13/licensing/NOTICE-linker create mode 100755 src/tracer/pintool/pin-3.13/licensing/redist.txt create mode 100755 src/tracer/pintool/pin-3.13/licensing/third-party-programs.txt create mode 100755 src/tracer/pintool/pin-3.13/pin create mode 100755 src/tracer/pintool/pin-3.13/pin.sig create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/foundation.PLH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/backtrace_u.PH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/base_ia32.PH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/bbl.PH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/child_process.PH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/child_process_client.PH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/debug.PH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/debugger_client.PH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/deprecated_client.PH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/edg.PH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/exception.PH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/fpstate_ia32.PH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/fpstate_ia32e.PH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/image.PH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/image_elf.PH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/img.PH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/ins.PH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/ins_api_xed_ia32.PH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/ins_ia32.PH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/ins_syscall_ia32_unix.PH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/ins_xed_ia32.PH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/internal_exception_client.PH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/knob.PH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/lock.PH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/message.PH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/operand_ia32.PH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/opin_client.PH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/pin_client.PH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/pin_client_replay.PH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/pinsync.hpp create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/probe_instrument.PH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/probe_instrument_ia32.PH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/reg_ia32.PH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/reg_partial_ia32.PH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/reginfo_ia32.PH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/regset.PH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/regset_ia32.PH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/sec.PH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/stopped_thread_client.PH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/symbol_elf.PH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/sysfuncs_linux.PH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/thread_client.PH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/tls.PH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/tls_client.PH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/types_base.TLH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/types_core.TLH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/types_foundation.TLH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/types_vmapi.TLH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/util.PH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/val.PH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/gen/versions_client.PH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/level_base.PLH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/level_core.PLH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/level_foundation.PLH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/level_pinclient.PLH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/level_vmapi.PLH create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/pin-errtype.h create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/pin.H create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/pin_cache.H create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/pin_profile.H create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/pin_util.H create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/pin_version.h create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/pintool.exp create mode 100755 src/tracer/pintool/pin-3.13/source/include/pin/pintool.ver create mode 100755 src/tracer/pintool/pin-3.13/source/launcher/launcher_u.c create mode 100755 src/tracer/pintool/pin-3.13/source/launcher/os_specific.h create mode 100755 src/tracer/pintool/pin-3.13/source/launcher/os_specific_l.c create mode 100755 src/tracer/pintool/pin-3.13/source/launcher/os_specific_m.c create mode 100755 src/tracer/pintool/pin-3.13/source/launcher/utils.c create mode 100755 src/tracer/pintool/pin-3.13/source/launcher/utils.h create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AlignChk/alignchk.H create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AlignChk/alignchk.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AlignChk/makefile create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AlignChk/makefile.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AlignChk/misaligned.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AlignChk/movdqa_test2.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AlignChk/movdqa_test2_ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AlignChk/movdqa_test_ia32.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AlignChk/movdqa_test_intel64.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/add_floats.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/attachReattachThreadDetachCallbacks_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/attach_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/attach_in_sighandler_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/attach_read_stdin.py create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/attach_removed_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/change_mask.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/change_mask_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/chdir_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/check_blocking_real_time_signals_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/check_blocking_real_time_signals_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/check_xmms_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/check_xmms_asm.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/check_xmms_asm.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/check_xmms_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/detach_after_addss.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/detach_check_sigmask_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/detach_check_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/detach_in_sighandler_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/detach_probed_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/detach_probed_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/detach_probed_wait_child_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/detach_syscall.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/detach_syscall_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/fp_save_restore_ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/fp_save_restore_intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/jit_anls_detach.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/jit_detach_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/jit_instr_detach.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/jit_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/launchReattachThreadDetachCallbacks_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/ld_linux_attach.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/ld_linux_attach_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/main_attach_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/main_command_line_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/makefile create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/makefile.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/mt_attach.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/mt_attach_and_execv.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/mt_blocked.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/mt_detach.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/mt_fork_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/mt_thread.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/my_dll.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/my_exe.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/pause_msg_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/probe_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/read_stdin.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/read_stdin_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/read_write_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/reattachThreadDetachCallbacks_jit_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/reattachThreadDetachCallbacks_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/reattachZombie_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/reattach_jit_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/reattach_jit_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/reattach_probed_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/reattach_probed_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/reattach_verify_sigmask_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/secondary_attach_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/secondary_command_line_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/send_signals.sh create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/short_func_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/short_func_ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/short_func_intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/short_func_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/simple_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/threadOrder.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/threadOrder_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/tls_app_ia32.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/tls_app_intel64.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/tls_app_mac.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/tls_attach_detach_app_mac.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/verify_fpstate_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/verify_sigmask.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/w_app1.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/w_app2.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/w_app3.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/w_app4.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/w_app_launcher.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/w_app_launcher2.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/w_attach_mt_thread_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/w_attach_mt_thread_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/w_attach_tool1.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/w_attach_tool2.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/w_attach_tool3.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/w_attach_tool4.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/w_attach_tool5.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/w_pin_service_launcher.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/w_service_app1.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/w_simple_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/w_simple_attach_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/zombie_utils.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/AttachDetach/zombie_utils.h create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Buffer/allocate.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Buffer/buffer-lengths.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Buffer/buffer-predicate.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Buffer/buffer-then.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Buffer/buffer_invalid_reg.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Buffer/bufferaddr.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Buffer/buffererror.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Buffer/makefile create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Buffer/makefile.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Buffer/mlog_buffer.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Buffer/two_buffers.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/1.sh create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/2.sh create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/arglist.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/arglist.h create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/badexec.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/bind_now_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/child_injection_ppid.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/child_process.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/execvp.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/follow_child.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/follow_child_3gen_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/follow_child_3gen_tool_initsym.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/follow_child_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/fork_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/fork_app2.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/fork_hang_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/fork_hang_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/fork_jit_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/fork_probed2.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/fork_probed_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/grand_parent_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/injection_test_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/makefile create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/makefile.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/null_arg_check_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/null_check_app1.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/null_check_app2.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/parent_process.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/parent_process_launcher.sh create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/parent_process_popen.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/parent_process_spawn.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/parent_process_spawn2.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/parent_process_waitpid_bug.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/parent_process_waitpid_bug2.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/parent_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/selfexec_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/sigchld_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/sigchld_app.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/simple_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/uname_script.sh create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/unix_parent_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/vfork_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/win_child_process.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/win_early_termination.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/win_launcher_debugged_process.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/win_launcher_process.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/win_parent_process.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/win_parent_process1.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/win_parent_process1_probed.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/win_parent_process1_unicode_probed.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/win_parent_process1_unicode_probed_withsym.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/win_parent_process2.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/win_parent_process2_jjj.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/win_parent_process2_jjp.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/win_parent_process2_jpj.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/win_parent_process2_jpp.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/win_parent_process2_pjj.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/win_parent_process2_pjp.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/win_parent_process2_ppj.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/win_parent_process2_ppp.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/win_parent_process2_unicode_ppp.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/win_parent_process_launcher.bat create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/win_parent_process_mt.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/win_parent_process_mt_launcher.bat create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/win_parent_process_mt_test_launcher.bat create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/win_parent_process_mt_test_launcher_w_pintool_args.bat create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/win_parent_process_test_launcher.bat create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/win_parent_process_test_launcher_w_pintool_args.bat create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/win_parent_process_unicode.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/win_parent_process_unicode_launcher.bat create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ChildProcess/win_terminate_process_dll.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Config/makefile.config create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Config/makefile.debug.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Config/makefile.default.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Config/makefile.rules.tmpl create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Config/makefile.tmpl create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Config/makefile.unix.config create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Config/unix.vars create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Cpp11Tests/cpp11Threads.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Cpp11Tests/cpp11ThreadsApp.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Cpp11Tests/makefile create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Cpp11Tests/makefile.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/CrossIa32Intel64/child_process_injection.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/CrossIa32Intel64/child_process_injection_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/CrossIa32Intel64/child_process_injection_app1.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/CrossIa32Intel64/child_process_linux.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/CrossIa32Intel64/child_process_mac.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/CrossIa32Intel64/child_process_windows.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/CrossIa32Intel64/compiler-env.bat create mode 100755 src/tracer/pintool/pin-3.13/source/tools/CrossIa32Intel64/early_termination.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/CrossIa32Intel64/follow_child_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/CrossIa32Intel64/follow_child_tool_sym.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/CrossIa32Intel64/follow_child_tool_windows.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/CrossIa32Intel64/grand_child_process_linux.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/CrossIa32Intel64/grand_child_process_mac.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/CrossIa32Intel64/grand_child_process_windows.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/CrossIa32Intel64/makefile create mode 100755 src/tracer/pintool/pin-3.13/source/tools/CrossIa32Intel64/makefile.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/CrossIa32Intel64/parent_process_linux.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/CrossIa32Intel64/parent_process_mac.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/CrossIa32Intel64/parent_process_windows.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/CrossIa32Intel64/parent_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/CrossIa32Intel64/setuid_utility.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/CrossIa32Intel64/sigchld_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/CrossIa32Intel64/sigchld_app.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/CrossIa32Intel64/w_terminate_process_dll.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/CrossIa32Intel64/win_launcher_debugged_process.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/CrossIa32Intel64/win_launcher_process.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/DebugInfo/app_backtrace.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/DebugInfo/app_backtrace.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/DebugInfo/app_backtrace_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/DebugInfo/backtrace.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/DebugInfo/backtrace.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/DebugInfo/backtrace_dll.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/DebugInfo/backtrace_from_dll.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/DebugInfo/backtrace_from_dll.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/DebugInfo/debugtest.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/DebugInfo/makefile create mode 100755 src/tracer/pintool/pin-3.13/source/tools/DebugInfo/makefile.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/DebugInfo/omit_source_location.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/DebugInfo/pin_backtrace_on_assert.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/DebugInfo/pin_backtrace_on_assert.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/DebugTrace/debugtrace.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/DebugTrace/makefile create mode 100755 src/tracer/pintool/pin-3.13/source/tools/DebugTrace/makefile.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/access-64-on-32.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/access-64-on-32.pindb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/action-pending-app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/action-pending-tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/action-pending.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/action-pending.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/app-pause-app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/app-pause-in-app-thread-tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/app-pause-in-int-thread-tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/bp-icount.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/bp-icount.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/bphandler.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/bphandler.compare.lldb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/bphandler.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/bphandler.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/bphandler.lldb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/bphandler_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/bptest-asm-ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/bptest-asm-intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/bptest-ia32.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/bptest-ia32.compareICC create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/bptest-ia32.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/bptest-intel64.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/bptest-intel64.compareICC create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/bptest-intel64.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/bptest.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/breaktool-wait.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/breaktool-wait.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/breaktool.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/breaktool.compare.lldb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/breaktool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/breaktool.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/breaktool.lldb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/breaktool_const_context.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/breaktool_const_context.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/callerapp.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/check-if-thread-stopped.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/check-if-thread-stopped.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/check-if-thread-stopped.pindb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/checkpoint-app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/checkpoint-app.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/checkpoint-gdb.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/checkpoint.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/checkpoint.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/debugger-shell-app-ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/debugger-shell-app-intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/debugger-shell-app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/debugger-type.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/debugger-type.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/debugger-type.lldb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/default_mac_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/dlopen-dlclose.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/exec.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/execfail.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/execfail.compare.lldb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/execfail.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/execfail.lldb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/fork.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/fork.compare.lldb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/fork.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/fork.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/fork.lldb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/gdb-detach-reattach-1.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/gdb-detach-reattach-2.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/gdb-detach-reattach-app.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/gdb-detach-reattach-fixed-port-1.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/gdb-detach-reattach-fixed-port-2.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/gdb-detach-reattach-fixed-port-app.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/gdb-detach-reattach-fixed-port-gdb-1.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/gdb-detach-reattach-fixed-port-gdb-2.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/gdb-detach-reattach-gdb-1.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/gdb-detach-reattach-gdb-2.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/gdb-fixed-port.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/gdb-fixed-port.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/gdb-pthread-step-exit.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/gdb-pthread-step-exit.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/gdb-svr4-libraries-extension.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/gdb-svr4-libraries-extension.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/int3-count.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/intercept-app-asm-ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/intercept-app-asm-intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/intercept-app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/intercept-breakpoint-app.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/intercept-breakpoint-gdb.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/intercept-breakpoint.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/intercept-tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/interpreter-remove.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/invalid-write.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/invalid-write.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/invalidate-regs.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/launch-gdb-tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/launch-gdb.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/launch-gdb.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/launch-gdb_const_context.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/launch-gdb_const_context.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/launch-pin-attach-debugger.py create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/library-load-tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/makefile create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/makefile.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/memlog.hpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/mt-exit-tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/mt-exit.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/mt-exit.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/null-emulator-ia32.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/null-emulator-intel64.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pc-change-async-asm-ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pc-change-async-asm-intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pc-change-async-tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pc-change-async.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pc-change-async.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pc-change-async.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pc-change-bp-asm-ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pc-change-bp-asm-intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pc-change-bp.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pc-change-bp.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pc-change-bp.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pick-random-port.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-abrupt-disconnect.pindb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-async-stop.pindb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-attach-after-custom-stop.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-attach-after-custom-stop.pindbin create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-invalidate-regs.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-invalidate-regs.pindb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-kill-like-gdb.pindb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-noprompt-kill.pindb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-pthread-cont-exitgroup.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-pthread-cont-exitgroup.pindb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-pthread-step-exit.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-pthread-step-exit.pindb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-pthread-step-exitgroup.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-pthread-step-exitgroup.pindb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-simple-command.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-simple-command.pindb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-simple-simultaneous-multi-serialize.compare1 create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-simple-simultaneous-multi-serialize.compare2 create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-simple-simultaneous-multi-serialize.pindb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-simple-simultaneous-multi.compare1 create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-simple-simultaneous-multi.compare2 create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-simple-simultaneous-multi.pindb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-simultaneous-multi-serialize.compare1 create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-simultaneous-multi-serialize.compare2 create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-simultaneous-multi-serialize.compare3 create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-simultaneous-multi-serialize.compare4 create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-simultaneous-multi-serialize.pindb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-simultaneous-multi.compare1 create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-simultaneous-multi.compare2 create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-simultaneous-multi.compare3 create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-simultaneous-multi.compare4 create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-simultaneous-multi.pindb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-simultaneous-toolbreak-attach.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-simultaneous-toolbreak-attach.pindbin create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-simultaneous-toolbreak-change.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-simultaneous-toolbreak-change.pindb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-simultaneous-toolbreak-serialize.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-simultaneous-toolbreak-serialize.pindb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-simultaneous-toolbreak-squash.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-simultaneous-toolbreak-squash.pindb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-simultaneous-toolbreak-step.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-simultaneous-toolbreak-step.pindb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-simultaneous-toolbreak.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-simultaneous-toolbreak.pindb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-start-fini.pindb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-win-continued-exception1.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-win-continued-exception1.pindb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-win-continued-exception2.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-win-continued-exception2.pindb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-win-cpp-exception.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-win-cpp-exception.pindb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-win-exception-after-exit.pindb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-win-handled-exception.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-win-handled-exception.pindb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-win-library-notifications.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-win-library-notifications.pindb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-win-software-exception.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-win-software-exception.pindb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-win-squash-exception.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-win-squash-exception.pindb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-win-step-exception.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-win-step-exception.pindb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-win-step-library.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-win-step-library.pindb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-win-thread-stress.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-win-thread-stress.pindb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-win-unhandled-exception.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-win-unhandled-exception.pindb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-zmm.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pindb-zmm.pindb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pthread-bare-exit-asm-ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pthread-bare-exit-asm-intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pthread-bare-exit.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pthread-bare-exitgroup-asm-ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pthread-bare-exitgroup-asm-intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/pthread-bare-exitgroup.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/quit.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/reattach-loop.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/set-mode-tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/set_xmm_scratches.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/set_xmm_scratches_before_breakpoint.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/set_xmm_scratches_before_breakpoint_and_set_xmm_reg.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/set_xmm_scratches_for_ymmtest.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/set_xmm_scratches_ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/set_xmm_scratches_intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/siginfo.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/siginfo.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/signal-catch.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/signal-step.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/signal-step.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/simple-command-tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/simple-pindb-asm-ia32.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/simple-pindb-asm-ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/simple-pindb-asm-intel64.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/simple-pindb-asm-intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/simple-pindb.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/simple.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/simple.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/simple.compare.lldb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/simple.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/simple.lldb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/simultaneous-toolbreak-attach.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/simultaneous-toolbreak-attach.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/simultaneous-toolbreak-change.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/simultaneous-toolbreak-change.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/simultaneous-toolbreak-squash.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/simultaneous-toolbreak-squash.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/simultaneous-toolbreak.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/simultaneous-toolbreak.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/simultaneous-toolbreak.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/simultaneous-toolbreak_const_context.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/simultaneous-toolbreak_const_context.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/sleep-unix.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/stack-debugger-late.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/stack-debugger-late.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/stack-debugger.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/stack-debugger.compare.lldb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/stack-debugger.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/stack-debugger.lldb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/start-fini-callback.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/start-fini.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/stop-resume-when-suspended.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/stop-resume-when-suspended.pindb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/stop-resume-when-suspended.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/thread-unix.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/thread-win.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/thread.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/thread.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/thread.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/use-debugger-shell.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/watchpoint-app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/watchpoint.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/watchpoint.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/watchpoint_const_context.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/win-continued-exception1.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/win-continued-exception2.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/win-cpp-exception.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/win-exception-after-exit-dll.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/win-exception-after-exit.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/win-foo-library.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/win-handled-exception.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/win-load-library.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/win-software-exception.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/win-thread-stress.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/win-unhandled-exception.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/xmm-asm-ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/xmm-asm-intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/xmm-ia32.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/xmm-ia32.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/xmm-ia32_with_set_xmm_scratch_regs_before_breakpoint_tool.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/xmm-ia32_with_set_xmm_scratch_regs_before_breakpoint_tool.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/xmm-ia32_with_set_xmm_scratch_regs_before_breakpoint_tool_and_set_xmm_reg.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/xmm-ia32_with_set_xmm_scratch_regs_before_breakpoint_tool_const_context.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/xmm-ia32_with_set_xmm_scratch_regs_tool.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/xmm-ia32_with_set_xmm_scratch_regs_tool.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/xmm-intel64.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/xmm-intel64.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/xmm-intel64_with_set_xmm_scratch_regs_before_breakpoint_tool.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/xmm-intel64_with_set_xmm_scratch_regs_before_breakpoint_tool.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/xmm-intel64_with_set_xmm_scratch_regs_before_breakpoint_tool_and_set_xmm_reg.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/xmm-intel64_with_set_xmm_scratch_regs_before_breakpoint_tool_const_context.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/xmm-intel64_with_set_xmm_scratch_regs_before_breakpoint_tool_const_context.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/xmm-intel64_with_set_xmm_scratch_regs_tool.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/xmm-intel64_with_set_xmm_scratch_regs_tool.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/xmm.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/ymm-asm-ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/ymm-asm-intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/ymm.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/ymm.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/ymm.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/ymm_with_set_xmm_scratch_regs_tool.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/ymm_with_set_xmm_scratch_regs_tool.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/zmm-asm-ia32.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/zmm-asm-ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/zmm-asm-intel64.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/zmm-asm-intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/zmm.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/zmm.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Debugger/zmm.gdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/GracefulExit/applicationexit.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/GracefulExit/applicationexit.master create mode 100755 src/tracer/pintool/pin-3.13/source/tools/GracefulExit/create_and_exit_thread.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/GracefulExit/create_and_exit_thread_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/GracefulExit/create_and_exit_thread_utils.h create mode 100755 src/tracer/pintool/pin-3.13/source/tools/GracefulExit/exitApplicationLocked_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/GracefulExit/exitApplicationLocked_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/GracefulExit/exitFromFini_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/GracefulExit/exitFromFini_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/GracefulExit/exitFromInstCallback_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/GracefulExit/makefile create mode 100755 src/tracer/pintool/pin-3.13/source/tools/GracefulExit/makefile.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/GracefulExit/raceToEnterVm_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/GracefulExit/raceToExit_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/GracefulExit/threadFini_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/GracefulExit/threadFini_exception_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/GracefulExit/threadFini_sendsig.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/GracefulExit/threadFini_sig_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/GracefulExit/threadFini_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/GracefulExit/threadUtils.h create mode 100755 src/tracer/pintool/pin-3.13/source/tools/GracefulExit/threadUtils_android.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/GracefulExit/threadUtils_linux.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/GracefulExit/threadUtils_windows.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/I18N/i18n_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/I18N/makefile create mode 100755 src/tracer/pintool/pin-3.13/source/tools/I18N/makefile.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/I18N/unix_i18n_tool.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/I18N/unix_unicode.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/I18N/unix_unicode.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/I18N/unix_unicode_test_launcher.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/I18N/win_i18n_tool.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/I18N/win_unicode.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/I18N/win_unicode.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/I18N/win_unicode_ia32.pdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/I18N/win_unicode_intel64.pdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/I18N/win_unicode_test_launcher.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/IArg/DoFxsave.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/IArg/DoFxsave.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/IArg/fxsave_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/IArg/fxsave_size.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/IArg/iarg_branch_taken_correct.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/IArg/iarg_branch_taken_error.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/IArg/iarg_explicit_memory_ea.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/IArg/iarg_explicit_memory_ea_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/IArg/iarg_explicit_memory_ea_app_asm_ia32.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/IArg/iarg_explicit_memory_ea_app_asm_intel64.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/IArg/iarg_inst_ptr_error_msg.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/IArg/iarg_uint64.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/IArg/iarg_uint64.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/IArg/makefile create mode 100755 src/tracer/pintool/pin-3.13/source/tools/IArg/makefile.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/IArg/use_rtm_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/attachReattachImageLoadCallbacks_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/badmunmap_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/badmunmap_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/dummy_dll.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/full_path_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/full_path_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/gnu_hash.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/gnu_hash_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/hasLinesData.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/hasLinesData_app_main.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/imageLoad_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/imageUnload_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/imageUnload_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/image_load.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/images_on_attach_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/images_on_attach_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/img_check_cet.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/img_find_by_addr.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/img_open_debug_info.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/img_open_win.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/l_imageLoad_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/l_vdso_image.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/l_vdso_image_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/launchReattachImageLoadCallbacks_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/little_malloc.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/load_dummy_dll.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/load_dummy_dll_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/makefile create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/makefile.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/my_dll.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/one.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/pic_image.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/pic_image_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/reattachImageLoadCallback_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/rebase_dll.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/rebase_dll_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/region_compare.py create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/single_segment.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/single_segment_app.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/split_image_linux.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/split_image_linux_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/split_image_linux_lib.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/split_image_mac.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/split_image_mac_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/two.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/w_app_launcher.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/w_imageLoad_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/win_load_ntdll.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ImageTests/x86dll_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InlinedFuncsOpt/inlined_funcs_ia32.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InlinedFuncsOpt/inlined_funcs_intel64.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InlinedFuncsOpt/inlined_funcs_opt.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InlinedFuncsOpt/inlined_shr.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InlinedFuncsOpt/inlined_shr_asm.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InlinedFuncsOpt/inlined_shr_asm.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InlinedFuncsOpt/inscount_for_lea_opt.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InlinedFuncsOpt/makefile create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InlinedFuncsOpt/makefile.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InlinedFuncsOpt/update_icount_intel64.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Insmix/insmix.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Insmix/makefile create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Insmix/makefile.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLib/alarm_manager.H create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLib/alarm_manager.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLib/alarms.H create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLib/alarms.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLib/asm_macros.h create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLib/asm_macros.inc create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLib/call-stack.H create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLib/call-stack.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLib/cntrl_client.py create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLib/control_chain.H create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLib/control_chain.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLib/control_manager.H create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLib/control_manager.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLib/controller_events.H create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLib/controller_events.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLib/debugger-shell.H create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLib/debugger-shell.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLib/filter.H create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLib/follow_child.H create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLib/ialarm.H create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLib/ialarm.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLib/icount.H create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLib/init_alarm.H create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLib/init_alarm.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLib/instlib.H create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLib/interactive_listener.H create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLib/interactive_listener.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLib/makefile create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLib/makefile.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLib/parse_control.H create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLib/parse_control.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLib/pcregions_control.H create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLib/region_utils.H create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLib/regions_control.H create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLib/skipper.H create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLib/time_warp.H create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLibExamples/control.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLibExamples/control_detach.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLibExamples/filter.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLibExamples/filter_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLibExamples/follow_child.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLibExamples/icount.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLibExamples/int3-test.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLibExamples/itext-marker-test.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLibExamples/makefile create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLibExamples/makefile.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLibExamples/multi-start-stop-test.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLibExamples/one.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstLibExamples/test-mt3.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstructionTests/clflush.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstructionTests/clflush.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstructionTests/flush_cache_line.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstructionTests/flush_cache_line_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstructionTests/makefile create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstructionTests/makefile.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstructionTests/pushpopcall_riprelative.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstructionTests/rewritememop1.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/callbacks_order.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/callbacks_order.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/instrumentation_order.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/instrumentation_order.ref create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/instrumentation_order1.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/instrumentation_order1.ref create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/instrumentation_order10.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/instrumentation_order10.ref create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/instrumentation_order11.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/instrumentation_order11.ref create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/instrumentation_order12.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/instrumentation_order12.ref create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/instrumentation_order13.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/instrumentation_order13.ref create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/instrumentation_order14.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/instrumentation_order15.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/instrumentation_order15.ref create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/instrumentation_order16.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/instrumentation_order16.ref create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/instrumentation_order17.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/instrumentation_order17.ref create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/instrumentation_order18.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/instrumentation_order18.ref create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/instrumentation_order19.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/instrumentation_order19.ref create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/instrumentation_order2.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/instrumentation_order2.ref create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/instrumentation_order20.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/instrumentation_order21.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/instrumentation_order22.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/instrumentation_order23.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/instrumentation_order3.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/instrumentation_order3.ref create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/instrumentation_order4.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/instrumentation_order4.ref create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/instrumentation_order5.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/instrumentation_order5.ref create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/instrumentation_order6.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/instrumentation_order6.ref create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/instrumentation_order7.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/instrumentation_order7.ref create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/instrumentation_order8.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/instrumentation_order8.ref create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/instrumentation_order9.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/instrumentation_order9.ref create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/instrumentation_order_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/instrumentation_order_app.h create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/makefile create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/makefile.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/redblue.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/redblue.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/redblue_ia32.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/redblue_intel64.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/special.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/special.ref create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/special_case.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/special_case.ref create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/special_case1.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/special_case1.ref create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/special_case2.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/special_case3.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/special_case_aoti.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/special_case_aoti.ref create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/special_case_aoti1.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/special_case_aoti1.ref create mode 100755 src/tracer/pintool/pin-3.13/source/tools/InstrumentationOrderAndVersion/special_case_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/JitProfilingApiTests/DynamicFuncInstrument.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/JitProfilingApiTests/DynamicInsCount.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/JitProfilingApiTests/foo.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/JitProfilingApiTests/jitprofiling.h create mode 100755 src/tracer/pintool/pin-3.13/source/tools/JitProfilingApiTests/jitter_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/JitProfilingApiTests/makefile create mode 100755 src/tracer/pintool/pin-3.13/source/tools/JitProfilingApiTests/makefile.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/LinuxTests/check_low_high_image.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/LinuxTests/makefile create mode 100755 src/tracer/pintool/pin-3.13/source/tools/LinuxTests/makefile.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/LinuxTests/plt_syms.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/LinuxTests/plt_syms_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/LinuxTests/unmap_relro.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/LinuxTests/unmap_relro_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Maid/CallStack.H create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Maid/CallStack.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Maid/Maid.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Maid/README create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Maid/addrfile.txt create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Maid/argv_readparam.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Maid/argv_readparam.h create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Maid/makefile create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Maid/makefile.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Maid/syscall_names.H create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Maid/syscall_names.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ManualExamples/buffer_linux.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ManualExamples/buffer_windows.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ManualExamples/countreps.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ManualExamples/detach.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ManualExamples/divide_by_zero_unix.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ManualExamples/divide_by_zero_win.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ManualExamples/emudiv.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ManualExamples/fibonacci.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ManualExamples/follow_child_app1.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ManualExamples/follow_child_app2.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ManualExamples/follow_child_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ManualExamples/fork_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ManualExamples/fork_jit_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ManualExamples/imageload.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ManualExamples/inscount.out create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ManualExamples/inscount0.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ManualExamples/inscount1.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ManualExamples/inscount2.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ManualExamples/inscount_tls.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ManualExamples/invocation.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ManualExamples/isampling.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ManualExamples/itrace.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ManualExamples/little_malloc.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ManualExamples/makefile create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ManualExamples/makefile.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ManualExamples/malloc_mt.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ManualExamples/malloc_mt.out create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ManualExamples/malloctrace.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ManualExamples/nonstatica.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ManualExamples/pinatrace.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ManualExamples/proccount.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ManualExamples/proccount.out create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ManualExamples/proccount1.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ManualExamples/proccount1.out create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ManualExamples/replacesigprobed.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ManualExamples/safecopy.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ManualExamples/stack-debugger-tutorial.sln create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ManualExamples/stack-debugger-tutorial.vcxproj create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ManualExamples/stack-debugger-tutorial.vcxproj.filters create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ManualExamples/stack-debugger.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ManualExamples/statica.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ManualExamples/staticcount.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ManualExamples/strace.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ManualExamples/w_malloctrace.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/MemTrace/atomic_increment_ia32.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/MemTrace/atomic_increment_ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/MemTrace/atomic_increment_intel64.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/MemTrace/atomic_increment_intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/MemTrace/makefile create mode 100755 src/tracer/pintool/pin-3.13/source/tools/MemTrace/makefile.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/MemTrace/membuffer.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/MemTrace/membuffer_simple.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/MemTrace/membuffer_simple_tid.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/MemTrace/membuffer_threadpool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/MemTrace/memtrace.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/MemTrace/memtrace_simple.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/MemTrace/memtrace_threadpool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/MemTrace/thread.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/MemTrace/thread2.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/MemTrace/threadpool_statistics.h create mode 100755 src/tracer/pintool/pin-3.13/source/tools/MemTranslate/indirect_jmp.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/MemTranslate/indirect_jmp.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/MemTranslate/indirect_jmp_with_translation.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/MemTranslate/makefile create mode 100755 src/tracer/pintool/pin-3.13/source/tools/MemTranslate/makefile.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/MemTranslate/malloc_translation.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/MemTranslate/malloc_translation_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/MemTranslate/memory_addr_callback.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/MemTranslate/memory_addr_callback_then.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/MemTranslate/memory_callback_error.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/MemTranslate/rewrite_memory_ptr.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/MemTranslate/translate_32bit_register.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/MemTranslate/translate_32bit_register_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Memory/README create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Memory/access_protection_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Memory/address_mapping.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Memory/address_mapping_probe.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Memory/allcache.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Memory/big_malloc.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Memory/cache.H create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Memory/check_memory_access_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Memory/check_memory_access_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Memory/dcache.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Memory/dcache_xscale_config.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Memory/footprint.H create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Memory/footprint.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Memory/icache.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Memory/makefile create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Memory/makefile.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Memory/malloc_stress.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Memory/memalign.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Memory/memalloc.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Memory/memalloc2.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Memory/memory_allocation_from_app_access_protection_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Memory/memory_allocation_from_tool_access_protection_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Memory/memory_limit.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Memory/mmap_reader_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Memory/new_delete_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Memory/new_delete_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Memory/print_stack.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Memory/print_vdso.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Memory/print_vvar.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Memory/restrict_memory_vdso.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Mix/README create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Mix/assy-support-ia32.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Mix/assy-support-intel64.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Mix/makefile create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Mix/makefile.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Mix/marker-example.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Mix/mix-fp-state.H create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Mix/mix-mt.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Mix/summarize.py create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Mix/test-mt.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Mmx/fpstack_ia32_win.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Mmx/makefile create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Mmx/makefile.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Mmx/mmx_test1_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Mmx/mmx_test1_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Mmx/mmx_test2_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Mmx/mmx_test2_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Mmx/mmxsequence_ia32_win.asm rename src/tracer/pintool/{ => pin-3.13/source/tools/MyPinTool}/MyPinTool.cpp (100%) create mode 100755 src/tracer/pintool/pin-3.13/source/tools/MyPinTool/makefile create mode 100755 src/tracer/pintool/pin-3.13/source/tools/MyPinTool/makefile.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/NonInlinedFuncsOpt/makefile create mode 100755 src/tracer/pintool/pin-3.13/source/tools/NonInlinedFuncsOpt/makefile.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/NonInlinedFuncsOpt/multiple_analysis.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/app_trace.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/arglist.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/arglist.h create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/atfork_callbacks.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/atfork_callbacks.h create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/atfork_callbacks_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/bad_call.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/bad_jump.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/before_after_defaultcall.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/before_after_defaultcall_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/before_after_defaultcall_app_ia32.pdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/before_after_defaultcall_app_intel64.pdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/before_after_fastcall.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/before_after_fastcall_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/before_after_fastcall_app_ia32.pdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/before_after_fastcall_app_intel64.pdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/before_after_stdcall.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/before_after_stdcall_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/before_after_stdcall_app_ia32.pdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/before_after_stdcall_app_intel64.pdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/child_process.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/code_range.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/context_probe.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/create_process_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/deadlock_in_ipc.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/default_probe_size.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/dltest_unix.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/dltest_win.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/do_nothing_ia32.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/do_nothing_ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/do_nothing_intel64.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/do_nothing_intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/empty.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/emptysub.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/err_call.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/err_replace.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/error-main.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/error-sub.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/error-unix-jit.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/error-unix-probe.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/error-win-jit.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/error-win-probe.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/exc.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/exception_in_dll_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/exception_in_dll_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/exception_in_mt_attach.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/exception_in_mt_attach_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/exception_in_probe.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/exception_in_probe_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/exception_in_probe_on_probe.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/exception_in_probe_on_probe_sig.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/exception_in_probe_sig.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/exception_in_probed_call.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/exception_in_probed_call_after.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/exception_in_probed_call_after_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/exception_in_probed_call_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/exception_in_probed_call_cpp_after_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/exception_in_probed_call_cpp_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/exception_in_probed_call_sig.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/exit_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/exit_repl.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/fall_thru.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/fork_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/func_nops.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/func_nops_asm.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/func_nops_asm.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/getesp_ia32.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/getesp_intel64.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/getstack_ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/getstack_intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/good_jump.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/heavy_stack_win.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/high_target.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/init.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/ins_fetch_overrun.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/ins_fetch_overrun_app.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/ins_fetch_overrun_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/ins_fetch_overrun_app.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/insert1.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/insert10.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/insert11.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/insert12.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/insert1win.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/insert2.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/insert2win.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/insert3.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/insert3win.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/insert4.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/insert5.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/insert6.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/insert7.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/insert8.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/insert9.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/insert_call_probed.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/insert_call_probed.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/insert_call_probed_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/insertfast.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/insertstd.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/ipr.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/iprtool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/jmp_in_probe.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/jmp_in_probe_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/jmp_in_probe_app1.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/jmp_in_probe_intel64.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/jmp_in_probe_intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/little_malloc.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/load_map.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/load_map_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/local_branch_ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/local_branch_intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/makefile create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/makefile.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/malloctrace2.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/malloctrace2win.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/malloctrace_locktest.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/mallocwrappers_unix.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/move_ip.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/one_unix.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/one_win.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/parent_process.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/pc64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/probe1.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/probe10.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/probe2.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/probe3.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/probe4.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/probe5.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/probe6.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/probe7.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/probe8.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/probe9.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/probe_close.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/probe_err1.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/probe_err2.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/probe_err4.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/probe_err5.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/probe_err6.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/probe_movip.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/probe_on_probe1.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/probe_on_probe1.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/probe_on_probe2.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/probe_overlap.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/probe_safe_test_ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/probe_safe_test_intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/probe_stdcall_fastcall.h create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/probecdecl.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/probefastcall.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/probefastcall_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/probefastcall_app.pdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/probeheapalloc.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/probemalloctrace.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/probesafetest.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/probesafetest_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/probesleep.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/probestdcall.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/probestdcall_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/probestdcall_app.pdb create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/proto1.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/proto1win-err.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/proto1win.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/proto2.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/proto3.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/proto3win.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/proto4.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/protobar.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/protofoo.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/protorbar.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/pthread_exit_after_fork_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/pthread_exit_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/pthread_exit_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/redzone.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/redzone_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/redzone_app_asm.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/relocate_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/relocate_asm_ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/relocate_asm_intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/relocate_rtn.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/remove_probe.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/remove_probe2.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/replace_empty.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/replace_empty_twice.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/replace_exit.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/replaceapp.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/replaceapp.def create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/replacecall.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/replacedisp.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/replacefun.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/replacejmp.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/replaceshorty.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/replacesig_empty.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/scan_all_rtns_for_probe.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/sectest.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/sempost_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/sempost_repl.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/set_tp.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/shortBB.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/shortBB64.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/shortBB64app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/shortBB64foo.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/shortBBapp.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/signals.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/signals_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/simplebar.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/simplefoo.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/simplefoo10.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/simplefoo9.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/simplesp.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/simplestd10.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/sleep_unix.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/sleep_win.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/spawn_internal_thread_probe.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/spawn_internal_thread_probe_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/spin_lock_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/spinlock_insert.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/spinlock_repl.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/spinlock_replsig.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/ssewin.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/svcraw_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/svcraw_repl.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/symbolnames.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/syscall_in_probe.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/syscall_in_probe_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/syscall_yield64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/thd_malloc.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/tpss.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/tpss_lin_libc.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/tpss_lin_libc_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/tpss_lin_libdl.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/tpss_lin_libncurses.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/tpss_lin_libpthread.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/tpss_lin_libpthread_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/tpss_lin_librt.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/tpss_lin_librt_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/two_unix.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/two_win.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/unix_parent_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/unloadtest_unix.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/unloadtest_win.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Probes/win_child_process.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Regvalue/changeRegs_ia32.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Regvalue/changeRegs_ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Regvalue/changeRegs_intel64.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Regvalue/changeRegs_intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Regvalue/change_context_regvalue.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Regvalue/change_context_rflags.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Regvalue/checkXStateBV_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Regvalue/checkXStateBV_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Regvalue/context_perf.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Regvalue/context_regvalue.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Regvalue/context_utils.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Regvalue/context_utils.h create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Regvalue/doXsave_ia32.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Regvalue/doXsave_ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Regvalue/doXsave_intel64.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Regvalue/doXsave_intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Regvalue/doXsavec.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Regvalue/doXsavec.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Regvalue/emu_context_regvalue.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Regvalue/iarg_reg_reference.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Regvalue/iarg_reg_reference_flags.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Regvalue/makefile create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Regvalue/makefile.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Regvalue/print_flags.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Regvalue/print_flags_asm.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Regvalue/print_flags_asm.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Regvalue/register_modification_utils.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Regvalue/register_modification_utils.h create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Regvalue/regvalue_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Regvalue/regvalue_test_utils.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Regvalue/regvalue_test_utils.h create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Regvalue/regvalues.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Regvalue/regvalues.h create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Regvalue/xsave_iarg_mem.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Regvalue/xsave_iarg_mem_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Regvalue/xsave_memoryXXX_size_IPAFTER.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Regvalue/xsave_memoryXXX_size_IPBEFORE.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Regvalue/xsavec_iarg_mem_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Regvalue/xsavec_memoryXXX_size_IPAFTER.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Regvalue/xsavec_memoryXXX_size_IPBEFORE.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Regvalue/xstateBVUtils.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Regvalue/xstateBVUtils.h create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Replay/call_function_natively.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Replay/call_function_natively.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Replay/call_function_natively_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Replay/expand_replayed_rtn.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Replay/expand_replayed_rtn_app.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Replay/expand_replayed_rtn_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Replay/expand_replayed_rtn_app.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Replay/ia32_cross_os_replay.record create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Replay/ia32_cross_os_replay.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Replay/intel64_cross_os_replay.record create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Replay/intel64_cross_os_replay.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Replay/makefile create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Replay/makefile.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Replay/record_imageload.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Replay/record_imageload2.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Replay/replay_syscall.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Replay/set_loader_info_shift.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Replay/win_exception.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Replay/win_replay_exception.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/RtnTests/checkflags.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/RtnTests/checkflags.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/RtnTests/checkflags_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/RtnTests/checkflags_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/RtnTests/ifuncInstrumentation.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/RtnTests/ifuncInstrumentationApp.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/RtnTests/ifunc_complex_resolver.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/RtnTests/ifunc_complex_resolver_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/RtnTests/ifunc_complex_resolver_lib_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/RtnTests/is_ifunc_supported.py create mode 100755 src/tracer/pintool/pin-3.13/source/tools/RtnTests/makefile create mode 100755 src/tracer/pintool/pin-3.13/source/tools/RtnTests/makefile.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SegTrace/disasm_container.H create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SegTrace/makefile create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SegTrace/makefile.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SegTrace/pending_syscalls.H create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SegTrace/segtrace.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SegTrace/thread.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SegmentsVirtualization/fixed_base_reg.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SegmentsVirtualization/gcc_thread_local_vars.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SegmentsVirtualization/gcc_thread_local_vars_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SegmentsVirtualization/load_far_pointer_ia32.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SegmentsVirtualization/load_far_pointer_ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SegmentsVirtualization/load_far_pointer_intel64.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SegmentsVirtualization/load_far_pointer_intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SegmentsVirtualization/makefile create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SegmentsVirtualization/makefile.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SegmentsVirtualization/modify_ldt.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SegmentsVirtualization/movs.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SegmentsVirtualization/set_thread_area1.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SegmentsVirtualization/set_thread_area2.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SegmentsVirtualization/set_thread_area3.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/action-pending.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/altstack.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/async_exceptions.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/async_multithreadingapp.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/async_multithreadingtool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/asyncfpe.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/bad-stack-alt-android.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/bad-stack-alt-android.toolreference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/bad-stack-alt-linux.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/bad-stack-alt-linux.toolreference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/bad-stack-alt-mac.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/bad-stack-alt-mac.toolreference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/bad-stack-ia32-asm.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/bad-stack-intel64-asm.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/bad-stack-noalt-android.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/bad-stack-noalt-android.toolreference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/bad-stack-noalt-linux.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/bad-stack-noalt-linux.toolreference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/bad-stack-noalt-mac.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/bad-stack-noalt-mac.toolreference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/bad-stack-sigret-android.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/bad-stack-sigret-android.toolreference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/bad-stack-sigret-linux.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/bad-stack-sigret-linux.toolreference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/bad-stack-sigret-mac.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/bad-stack-sigret-mac.toolreference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/bad-stack.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/blockingsyscall.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/blockingsyscall.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/blockloop.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/call-app-stress-tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/call-app-stress.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/call-app-tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/call-app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/call-app.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/copywithxmm_ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/copywithxmm_intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/deprecated-intercept.app-handle.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/deprecated-intercept.app-nohandle.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/deprecated-intercept.tool.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/dfcheck.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/dfcheck_ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/dfcheck_intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/double.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/efault.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/errcheck.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/exithandler.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/exittool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/fastsigchecktool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/fatal.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/fatal_block_sync.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/fatal_block_sync.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/fatallog.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/fatalsync.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/faultcheck-ia32-asm.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/faultcheck-intel64-asm.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/faultcheck-target.h create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/faultcheck-x86.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/faultcheck.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/faultcheck_flags.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/faultcheck_flags_ia32_asm.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/faultcheck_flags_tool1.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/faultcheck_flags_tool2.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/faultcheck_flags_tool3.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/faulttool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/forktest_altstack.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/fpcheck.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/fptags.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/fptags_ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/futex.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/handle-usr1.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/handlerAlignment.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/handlerAlignment_ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/hlt.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/insfault-intel64-asm.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/insfault-intel64.h create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/insfault-linux-intel64.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/insfault.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/inst-type-app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/inst-type-tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/intercept.tool.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/interceptall.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/interceptor_for_regbindings_cache_test.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/interceptsegv.compare create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/interceptsegv.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/intercepttool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/log.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/logtool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/makefile create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/makefile.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/maskcheck.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/movsbtest.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/movsbtest_ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/movsbtest_intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/mtstress.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/nestmask.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/null-rewrite-tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/num_segvs.h create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/raise-exception-addrs.h create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/raise-exception-tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/recursive.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/reg-pressure-tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/regbindings_cache_test_checker.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/replay-signal-app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/replay-signal-tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/replay-signal.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/reporter.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/resetcont.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/resetcont.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/resetsegv-safecopy.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/resetsegv.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/resetsegv.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/segv.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/segv_for_regbindings_cache_test.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/segv_on_fetch.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/setcontext.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/shortmask.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/sig64.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/sigaltstack.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/sigcont.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/sigenable.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/sigenable.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/sigenableapp.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/sigenableapp2.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/sigflowcheck.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/sigflowcheck1.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/sigflowcheck2.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/sigprocmask_short.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/sigsegv_attach.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/sigsegv_attach_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/sigsuspend.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/sigusr2.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/simple.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/simpleasync.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/simplesync.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/spilltool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/suspendmask.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/syncasyncapp.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/syncasynctool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/then-stress-app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/then-stress-tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/threadtest_altstack.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/xmmcheck.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SignalTests/xmmfaultcheck.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SimpleExamples/bsr_bsf.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SimpleExamples/bsr_bsf.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SimpleExamples/bsr_bsf_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SimpleExamples/bsr_bsf_asm.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SimpleExamples/bsr_bsf_asm.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SimpleExamples/callgraph.py create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SimpleExamples/calltrace.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SimpleExamples/catmix.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SimpleExamples/coco.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SimpleExamples/dcache.H create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SimpleExamples/dcache.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SimpleExamples/edgcnt.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SimpleExamples/emuload.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SimpleExamples/extmix.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SimpleExamples/fence.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SimpleExamples/flowgraph.py create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SimpleExamples/get_source_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SimpleExamples/get_source_location.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SimpleExamples/icount.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SimpleExamples/ilenmix.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SimpleExamples/inscount2_mt.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SimpleExamples/inscount2_vregs.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SimpleExamples/inscount_and_check_tls.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SimpleExamples/jumpmix.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SimpleExamples/ldstmix.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SimpleExamples/makefile create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SimpleExamples/makefile.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SimpleExamples/malloctrace.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SimpleExamples/objdump-routine.csh create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SimpleExamples/opcodemix.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SimpleExamples/oper-imm.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SimpleExamples/oper-imm.ia32.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SimpleExamples/oper-imm.intel64.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SimpleExamples/oper_imm_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SimpleExamples/oper_imm_asm.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SimpleExamples/oper_imm_asm.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SimpleExamples/pinatrace.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SimpleExamples/regmix.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SimpleExamples/regval.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SimpleExamples/regval_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SimpleExamples/topopcode.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SimpleExamples/toprtn.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SimpleExamples/trace.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SimpleExamples/xed-print.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SimpleExamples/xed-use.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Smc/flag_ac_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Smc/flag_ac_app_ia32_unix.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Smc/flag_ac_app_ia32_win.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Smc/flag_ac_app_intel64_unix.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Smc/flag_ac_app_intel64_win.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Smc/flag_ac_inline.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Smc/flag_ac_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Smc/makefile create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Smc/makefile.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Smc/smc_callback.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Smc/smc_disable.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Smc/smc_util.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Smc/smc_util.h create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Smc/smcapp.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Smc/smcapp1.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Smc/smcapp2.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Smc/smcapp3.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Smc/smcapp_bbl.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Smc/smcapp_except.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Smc/smcapp_ia32.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Smc/smcapp_mt.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Smc/sse-ref.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Smc/sse-ref.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Smc/sse-ref_ia32.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Smc/sse-ref_ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Smc/sse-ref_intel64.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Smc/sse-ref_intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Smc/sse.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SyncTests/lock-tester.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SyncTests/makefile create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SyncTests/makefile.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SyncTests/mt-worker-unix.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SyncTests/mt-worker-win.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SyncTests/rt-locks-app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SyncTests/rt-locks-tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SyncTests/stress-client-lock-app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SyncTests/stress-client-lock-tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SyscallsEmulation/check_prctl_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SyscallsEmulation/close_all_files.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SyscallsEmulation/close_all_files_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SyscallsEmulation/exit_restartable_syscall_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SyscallsEmulation/makefile create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SyscallsEmulation/makefile.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SyscallsEmulation/mmap.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SyscallsEmulation/mmap_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SyscallsEmulation/pin_clone_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SyscallsEmulation/ppollEmulation_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SyscallsEmulation/ptrace_deny_attach_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SyscallsEmulation/syscall_time.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SyscallsEmulation/syscalls_and_locks_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/SyscallsEmulation/syscalls_and_locks_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/IARGList.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/after.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/alah.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/bblFallThrough.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/bblnull.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/brtaken.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/callargs.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/callargs_probe_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/cflowcheck.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/check_env.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/check_env.sh create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/checkaddress.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/checkaddressapp.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/child_sig_while_execv_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/child_sig_while_execv_simple_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/clear_df_flag_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/const_context_at_ins.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/context-pc.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/context.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/context_stack_and_spill.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/correct_winapp_runs_pin_cmdline.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/detach.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/df_flag_utils.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/df_flag_utils.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/ea_verifier.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/emu.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/exitProcess.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/exitProcessApp.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/finiRemove.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/foobar.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/hello.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/icount1.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/icount2.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/icount3.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/icount4.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/icount5.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/icountcheck.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/ifunc_tst.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/ifuncmemcpy.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/illegalEnvp_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/imageLoad.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/imageLoadBackward.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/insMix.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/insMixApp.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/inscount2_mt_debuginfo.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/inscount_per_image.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/int3test.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/jecxz_ia32.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/jecxz_ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/jecxz_intel64.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/jecxz_intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/lasterror.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/launcher_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/launcher_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/loop.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/makefile create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/makefile.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/malloc.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/memcpy_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/memident.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/mtest.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/multipleinstrumentation.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/mysetenv.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/new.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/operand.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/pagetable.H create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/parse_executed_rtns.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/pin_tests_util.H create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/prefix.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/prefixApp.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/probe.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/reg.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/reg_ref_inlined.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/rep_ip_at_ipoint_after_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/rep_ip_at_ipoint_after_app_unix.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/rep_ip_at_ipoint_after_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/rtnNumIns.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/rtn_create_at_dup.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/rtn_insert_call_probed.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/sampleApp.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/sec.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/segv.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/sequence.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/sequencecheck.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/set_df_flag_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/set_status_flags_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/smc_check.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/smc_test_l.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/snprintf.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/sourceLocation_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/sourceLocation_img1.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/sourceLocation_img2.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/sourceLocation_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/statdyn_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/statdyn_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/strcmp_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/swizzle1.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/symOutOfBound.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/syntax.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/syntax_tst.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/test_ebx_in_exceptions_ia32_unix.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/test_ebx_in_exceptions_ia32_win.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/test_ebx_in_exceptions_unix.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/test_ebx_in_exceptions_win.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/test_ebx_in_exceptions_xed_interface.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/thread.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/threadApp.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/trace_address.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/trace_address_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/tracecount.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/traceusage.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/util.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/verify.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/win_cvapp_test_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/winapp_runs_pin.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/winapp_runs_pin.h create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/winapp_runs_pin.ico create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/winapp_runs_pin.sln create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/winapp_runs_pin.vcxproj create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Tests/xedReg.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/addit.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/addr32_override_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/addr32_override_app_asm.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/align_access.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/align_access_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/analysis_flag_overwrite_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/analysis_flag_overwrite_app_win.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/analysis_flag_overwrite_test1_inline.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/analysis_flag_overwrite_test1_noinline.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/analysis_flag_overwrite_test1_noinline_bridge.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/analysis_flag_overwrite_test2_inline.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/analysis_flag_overwrite_test2_noinline.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/analysis_flag_overwrite_test2_noinline_bridge.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/analysis_flag_overwrite_test3_inline.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/analysis_flag_overwrite_test3_noinline.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/analysis_flag_overwrite_test3_noinline_bridge.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/analysis_flag_overwrite_tool1.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/analysis_flag_overwrite_tool1_win.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/analysis_flag_overwrite_tool2.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/analysis_flag_overwrite_tool2_win.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/analysis_flag_overwrite_tool3.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/analysis_flag_overwrite_tool3_win.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/and.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/aoti_mutation_target.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/aoti_mutation_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/apc_monitor.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/apc_monitor.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/app_inspects_internal_thread_win.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/app_inspects_internal_thread_win_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/args.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/args.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/args_err.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/args_lineno.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/attach.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/attach_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/attach_tool.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/badfile.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/badpath.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/baserel_in_probe_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/big_bss.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/bigrange.address create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/branch_target_addr.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/btc.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/btc_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/callapp0.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/callapp0i.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/callapp1.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/callapp10.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/callapp10i.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/callapp12.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/callapp13.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/callapp14.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/callapp15.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/callapp1i.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/callapp2.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/callapp3.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/callapp4.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/callapp5.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/callapp6.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/callapp7.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/callapp8.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/callapp9.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/callapp_64bit_param_app_1.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/callapp_64bit_param_app_2.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/callapp_64bit_param_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/callapp_nested_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/callapp_nested_app1.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/callapp_nested_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/callapp_perf_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/callapp_perf_app1.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/callapp_perf_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/callappfast10.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/callappstd10.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/callsp_ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/callsp_intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/cancel.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/change_syscall.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/change_syscall_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/check_acall_inline_opt.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/check_env.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/check_env_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/check_fpstate.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/check_fpstate_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/check_legal_callbacks.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/check_tool_malloc.sh create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/checkerrorfile.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/checkexecuting.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/checkinline.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/checkreps.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/claim_regs.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/clobber.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/clobber_asm.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/cmovstest.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/cmpxchg8b_unix.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/cmpxchg8b_win.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/cmpxchg8b_with_explicit_ebx_win.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/code_cache_block_overflow1.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/code_cache_block_overflow2.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/context.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/context_state_apis.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/control_init.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/create_rtn.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/create_rtn.strip create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/create_rtn_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/data_in_code_win.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/data_in_code_win_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/datasym.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/datasym_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/debugservice_monitor.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/debugservice_monitor.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/deepbind.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/deepbind.ver create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/deepbind_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/deepbind_syscalls.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/df_test1_inline.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/df_test1_noinline.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/df_test1_noinline_bridge.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/df_test2_inline.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/df_test2_noinline.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/df_test2_noinline_bridge.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/df_test3_inline.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/df_test3_noinline.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/df_test3_noinline_bridge.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/df_test4_inline.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/df_test4_noinline.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/df_test4_noinline_bridge.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/df_test5_inline.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/df_test5_noinline.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/df_test5_noinline_bridge.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/df_test_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/df_test_app_win.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/df_test_tool1.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/df_test_tool1_win.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/df_test_tool2.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/df_test_tool2_win.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/df_test_tool3.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/df_test_tool3_win.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/df_test_tool4.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/df_test_tool4_win.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/df_test_tool5.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/df_test_tool5_win.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/dlclose.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/dlclose_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/dltest.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/dltest2.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/doint.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/doint_ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/dummy_dll.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/dynamic_secondary_dll.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/ea_verifier_addr16.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/ea_verifier_addr16_win.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/ea_verifier_bt.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/earlymalloc.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/earlyout.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/elf_symbols.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/elf_symsize.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/emu_jumps.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/emu_stack.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/error_log.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/error_log_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/exceptionAddress_lin.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/exceptionAddress_lin_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/exception_app_ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/exception_app_intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/exception_context_monitor.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/exception_monitor.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/exception_monitor_for_cpp_exception_test.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/exception_monitor_for_divide_by_zero_test.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/exception_monitor_for_iret_order.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/exception_tool_ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/exception_tool_intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/executeat_callback.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/executeat_lock.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/execvp.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/execvp.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/exports_only_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/factorial.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/far.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/farmain.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/findthreadwithappstack.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/fini.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/flag_ac_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/flag_ac_app_ia32_unix.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/flag_ac_app_ia32_win.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/flag_ac_app_intel64_unix.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/flag_ac_app_intel64_win.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/flag_ac_app_u_64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/flag_ac_inline.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/flag_ac_noinline.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/flag_ac_noinline_bridge.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/flag_ac_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/flag_ac_win_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/flag_ac_win_inline.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/flag_ac_win_noinline.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/flag_ac_win_noinline_bridge.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/flag_ac_win_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/flag_spill_fill_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/flag_spill_fill_app_win.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/flag_spill_fill_test1_inline.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/flag_spill_fill_test1_noinline.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/flag_spill_fill_test1_noinline_bridge.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/flag_spill_fill_tool1.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/flag_spill_fill_tool1.dll.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/flag_spill_fill_tool1_win.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/flags_at_analysis_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/flags_at_analysis_app_win.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/flags_at_analysis_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/fp_args.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/fp_args.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/fp_args_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/fp_context_set_const_context.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/fp_insert.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/fp_replace.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/fp_replace_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/funcarg_ep.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/funcarg_ep_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/funcarg_ep_ia32.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/funcarg_ep_intel64.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/funreplace.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/funreplace_alert.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/funreplace_alert.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/guard_page.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/guard_page_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/hello.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/htab.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/iarg_tsc1.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/iarg_tsc2.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/iarg_tsc3.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/iarg_tsc4.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/iarg_tsc5.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/iarg_tsc_probed1.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/illegal_call_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/illegal_instrumentation.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/image_entry.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/image_entry.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/image_load.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/import_forwarder_error.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/incebx.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/indirect_call_branch_target_addr.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/inline_opt_test.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/inline_opt_test_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/inline_opt_test_app_ia32.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/inline_opt_test_app_ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/inline_opt_test_app_intel64.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/inline_opt_test_app_intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/inline_opt_test_df1.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/inline_opt_test_df3.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/inline_opt_test_df_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/inline_opt_test_df_app_ia32.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/inline_opt_test_df_ia32.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/inline_opt_test_ia32.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/inline_opt_test_ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/inline_opt_test_intel64.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/inline_opt_test_intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/inlinecall.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/inlinecall.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/inlined-stack-arg.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/inlined-stack-arg.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/inlined-stack-arg1.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/inlined-stack-arg1.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/inlined-stack-arg2.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/inlined-stack-arg2.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/inlined-stack-arg2_win.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/inlined-stack-arg2_win_intel64.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/inner.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/ins_check_fetcher.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/inscount2_fornoinline.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/insert_if_then_call.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/insert_if_then_call1.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/insert_if_then_call2.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/insert_if_then_call_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/insertand.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/insfetch_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/int3del.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/int3test.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/internal_exception_handler.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/internal_exception_handler_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/internal_exception_handler_app_lin.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/internal_exception_handler_lin.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/intrin.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/iret_ia32.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/iret_ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/iret_intel64.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/iret_intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/iretmain.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/isret.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/isret_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/jcx_addr16_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/jcx_addr16_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/jcx_addr16_tool.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/jitmalloctrace.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/knob_duplicate_name.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/knob_writeonce.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/kthread.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/kthread.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/large.address create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/leave.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/line.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/line.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/little_malloc.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/load_resource_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/lpd.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/main_dll.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/makefile create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/makefile.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/malmalloc.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/malmalloc.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/memalign.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/memory_displacement.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/memory_displacement_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/memory_displacement_app.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/mmap.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/move_then_test.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/mt_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/mt_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/mtstatic.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/multimem.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/mxcsr_ia32.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/mxcsr_ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/mxcsr_intel64.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/mxcsr_intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/nops.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/one.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/oneprog.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/operandtool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/partialinline.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/partialinline.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/passthru_context_xmm_regs_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/passthru_context_xmm_regs_callapp.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/passthru_context_xmm_regs_executeat.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/pipeapp.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/popea_verifier.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/posix_memalign.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/pusha_popa.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/pusha_popa_asm.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/pusha_popa_asm.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/pushtest.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/pushw.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/raise_exception.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/raise_exception_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/realloc.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/rebase_dll.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/rebase_dll_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/reg_context_fp_st.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/reg_context_set_const_context.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/reg_context_set_fp_st.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/reg_context_set_x87.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/reg_context_set_xmm.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/reg_context_set_ymm.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/reg_context_x87.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/reg_context_xmm.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/reg_context_ymm.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/reg_inst_gx.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/reg_inst_gx.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/reg_inst_gx.tool.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/reg_operands_test.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/reg_operands_test_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/reg_operands_test_app_win.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/reg_operands_test_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/reg_ref_fp_st.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/reg_ref_x87.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/reg_ref_xmm.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/reg_ref_ymm.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/reg_value_fp_st.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/reg_value_x87.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/reg_value_xmm.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/reg_value_ymm.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/rep_ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/rep_intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/repcmpsz.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/repcmpsz.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/repcmpsz_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/repcmpsz_tool.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/replace_free.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/replace_malloc_inst.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/replace_rtl_alloc_heap.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/reppredicate_ia32.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/reppredicate_intel64.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/reptool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/reptool_ia32.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/reptool_intel64.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/reserve_memory.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/reserve_memory_win.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/returnflags.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/returnflags_and_ref.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/returnreg.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/rewritememop.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/rewritememop1.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/rip_relative_prefix_67_app_intel64.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/rip_relative_prefix_67_asm_intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/rtn_insert_call1.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/rtn_insert_call2.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/safecopy.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/safecopy_mxcsr.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/secname_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/secname_tool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/seg_override_app1.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/seg_override_app1_win.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/segmented_ea_verifier.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/segmented_ea_verifier_lin_ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/segmented_ea_verifier_lin_intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/segmented_ea_verifier_win1_ia32.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/segmented_ea_verifier_win1_intel64.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/set_fp_context_xmm_regs.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/set_fp_context_xmm_regs_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/set_fp_context_xmm_regs_ia32.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/set_fp_context_xmm_regs_intel64.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/short_name.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/sigmask-mac.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/sigmask.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/sigmask.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/simple.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/simplebar.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/simplebar64.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/simplefast10.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/simplefoo.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/simplefoo1.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/simplefoo10.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/simplefoo12.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/simplefoo13.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/simplefoo14.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/simplefoo2.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/simplefoo3.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/simplefoo4.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/simplefoo6.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/simplefoo7.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/simplefoo8.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/simplefoo9.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/simplesp.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/simplestd10.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/smallpush_ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/smallpush_intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/socket_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/soload.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/soload.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/soloadrange.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/sp_argument.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/sp_argument_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/spalign.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/spalign_asm_intel64_unix.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/spalign_asm_intel64_win.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/spawntool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/spawntool_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/sse-ref.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/sse-ref.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/sse-ref_ia32.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/sse-ref_ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/sse-ref_intel64.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/sse-ref_intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/sse-unaligned-class.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/sse-unaligned-class2.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/sse.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/stackalign.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/static_secondary_dll.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/statica_locktest.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/str2flt.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/str2int.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/str2int64.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/str2int64.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/strace_ia32.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/stracewin_ia32.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/stress_const_context.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/stress_const_context2.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/stress_const_context_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/stringtest.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/suspend-mxcsr-asm.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/suspend-mxcsr.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/suspend_app_win.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/suspend_context_app_win.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/suspend_win.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/sw_interrupt.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/sw_interrupt_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/swizzle2.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/swizzle2.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/swizzle3.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/swizzle5.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/swizzle5.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/swizzle_seg.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/swizzle_seg.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/swizzle_seg_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/swizzle_seg_app.def create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/swizzle_seg_app_ia32_unix.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/swizzle_seg_app_ia32_win.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/swizzle_seg_app_intel64_unix.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/swizzle_util.h create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/swizzlealloc.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/symsize.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/symsize_asm.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/sys_memory.h create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/sys_memory_unix.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/sys_memory_win.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/syscall.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/syscall_std.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/syscall_std.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/syscall_std_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/tcreatehook.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/teb.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/teb.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/teb_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/test_iarg_partial_context.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/test_iarg_partial_context_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/test_iarg_preserve.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/test_iarg_preserve2.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/test_iarg_preserve_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/test_iarg_preserve_app2.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/test_iarg_preserve_ia32_unix.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/test_iarg_preserve_ia32_win.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/test_iarg_preserve_intel64_unix.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/test_iarg_preserve_intel64_win.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/test_iarg_preserve_mxcsr.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/test_iarg_preserve_mxcsr1.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/test_iarg_preserve_mxcsr_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/test_iarg_preserve_probe.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/test_iarg_preserve_probe_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/test_inlined_consts.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/test_inlined_consts_intel64.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/test_ip_access.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/test_ip_access_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/test_ip_access_app_intel64.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/test_lea_rip_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/test_lea_rip_intel64.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/test_sysenter_win.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/thenpredicated.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/thread.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/thread_callback.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/thread_count.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/thread_count.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/thread_count2.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/thread_count2_debug_service.ia32.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/thread_count2_debug_service.intel64.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/thread_count2_divide_by_zero.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/thread_count_cpp_exception.ia32.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/thread_count_cpp_exception.intel64.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/thread_count_load_library.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/thread_count_queue_apc.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/thread_count_thread_creation.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/thread_ea_addr16.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/thread_segmented_ea.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/thread_usestack.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/thread_wait.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/threadtestwin.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/tool_fetch_app.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/tool_full_path.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/tool_malloc.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/toolfetch_sub.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/toolfetch_sub.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/tstcmpxchg8b.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/tstcmpxchg8b_with_explicit_ebx.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/tstcmpxchg8b_with_explicit_ebx.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/two.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/undecorate.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/undecorateOperator_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/undecorate_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/unsup_syscall.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/waitpidbug.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/win_callback.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/win_callback_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/win_code_on_reused_memory.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/win_code_on_reused_memory.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/win_cpp_exception.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/win_cpp_exception.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/win_debug_service.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/win_debug_service.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/win_divide_by_zero_exception.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/win_divide_by_zero_exception.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/win_early_thread.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/win_early_thread_dll.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/win_exception_test.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/win_load_library.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/win_load_library.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/win_mxcsr_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/win_no_dependencies.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/win_queue_apc.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/win_queue_apc.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/win_syscallenum.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/win_thread_create_apc.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/win_thread_create_apc.reference create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/win_tls_dll.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/winapp_exception_context.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/winillegalrange.address create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/winrange.address create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/write_debugger_error.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/write_user_error.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/x87_regs_in_context.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/x87_regs_in_context_app.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/xmmapp.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/ToolUnitTests/xmmtest.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/attachLauncher_unix.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/avx2_check.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/avx512f_check.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/avx_check.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/avx_check_ia32.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/avx_check_ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/avx_check_intel64.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/avx_check_intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/compare.py create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/cp-pin.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/disable-aslr.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/hello.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/mac-cmp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/makefile create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/makefile.rules create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/printFunctionSize.py create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/printLinuxDistName create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/printLinuxDistVersion create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/printWindowsVersion.py create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/regvalue_utils.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/regvalue_utils.h create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/run_many create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/run_many_win.bat create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/runnable.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/runnable.h create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/set_xmm_scratches_ia32.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/set_xmm_scratches_intel64.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/supports_avx2_ia32.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/supports_avx2_ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/supports_avx2_intel64.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/supports_avx2_intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/supports_avx512f_ia32.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/supports_avx512f_ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/supports_avx512f_intel64.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/supports_avx512f_intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/supports_avx_ia32.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/supports_avx_ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/supports_avx_intel64.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/supports_avx_intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/sys_memory.h create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/sys_memory_unix.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/sys_memory_win.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/testGccVersion create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/testLibcVersion create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/testLinuxDistName create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/testLinuxDistVersion create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/testMacOsVersion create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/testReleaseVersion create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/testReleaseVersionPython.py create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/testStaticLibs create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/testToolVersion create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/testsummary create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/thread_pool.cpp create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/thread_pool.h create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/thread_unix.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/thread_win.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/threadlib.h create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/threadlib_unix.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/threadlib_win.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/tool_macros.h create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/tsx_check.c create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/tsx_check_ia32.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/tsx_check_ia32.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/tsx_check_intel64.asm create mode 100755 src/tracer/pintool/pin-3.13/source/tools/Utils/tsx_check_intel64.s create mode 100755 src/tracer/pintool/pin-3.13/source/tools/makefile create mode 100755 src/tracer/pintool/pin-3.13/source/tools/pintool.tscons-extension diff --git a/Makefile b/Makefile index c2f6539..64eee52 100755 --- a/Makefile +++ b/Makefile @@ -4,17 +4,19 @@ SUBDIR= $(shell pwd) GCC:=gcc RM:=rm CD:=cd +CP:=cp ECHO:=echo +CHMOD:=chmod nCpus=$(shell nproc --all) all: clean build .PHONY : clean -clean: clean_core clean_utils clean_api clean_tracer clean_scripts +clean: clean_core clean_utils clean_api clean_tracer clean_scripts clean_pintool .PHONY : build -build: build_core build_api build_tracer build_scripts +build: build_core build_api build_tracer build_scripts build_pintool .PHONY : setup_kernel setup_kernel: download_4_4_kernel compile_4_4_kernel @@ -46,6 +48,15 @@ build_api: build_tracer: @$(CD) src/tracer; $(MAKE) build; +.PHONY : build_pintool +build_pintool: + @$(ECHO) "Building pintool ..." + @$(CD) src/tracer/pintool; $(MAKE) obj-intel64/inscount_tls.so TARGET=intel64 + @$(CP) src/tracer/pintool/pin-3.13/pin /usr/bin + @$(CHMOD) 0777 /usr/bin/pin + @$(CP) src/tracer/pintool/obj-intel64/inscount_tls.so /usr/lib/inscount_tls.so + @$(CHMOD) 0777 /usr/lib/inscount_tls.so + .PHONY : build_scripts build_scripts: @$(CD) scripts; $(MAKE) build; @@ -79,6 +90,13 @@ clean_api: @$(RM) -f src/api/*.o @$(CD) src/api && $(MAKE) clean +.PHONY : clean_pintool +clean_pintool: + @$(ECHO) "Cleaning pintool ..." + $(RM) -rf src/tracer/pintool/obj-intel64 > /dev/null + $(RM) -f /usr/bin/pin > /dev/null + $(RM) -f /usr/lib/inscount_tls.so > /dev/null + .PHONY : clean_tracer clean_tracer: @$(ECHO) "Cleaning Tracer files ..." diff --git a/examples/cmds_to_run_file.txt b/examples/cmds_to_run_file.txt index 32f2bc5..59e484a 100644 --- a/examples/cmds_to_run_file.txt +++ b/examples/cmds_to_run_file.txt @@ -1,5 +1,5 @@ -/home/kronos/Kronos/src/tracer/tests/sleep-test/test -/home/kronos/Kronos/src/tracer/tests/sleep-test/test -/home/kronos/Kronos/src/tracer/tests/sleep-test/test -/home/kronos/Kronos/src/tracer/tests/sleep-test/test -/home/kronos/Kronos/src/tracer/tests/sleep-test/test +/usr/bin/sysbench --test=cpu --cpu-max-prime=1000 run +/usr/bin/sysbench --test=cpu --cpu-max-prime=1000 run +/usr/bin/sysbench --test=cpu --cpu-max-prime=1000 run +/usr/bin/sysbench --test=cpu --cpu-max-prime=1000 run +/usr/bin/sysbench --test=cpu --cpu-max-prime=1000 run diff --git a/examples/example_app_vt_experiment.py b/examples/example_app_vt_experiment.py index 85a3e95..fcdedb6 100644 --- a/examples/example_app_vt_experiment.py +++ b/examples/example_app_vt_experiment.py @@ -4,17 +4,17 @@ import sys import os import time -import vt_functions as kf +import kronos_functions as kf import sys import argparse -def start_new_dilated_process(tracer_id, total_num_tracers, cmd_to_run, log_file_fd): +def start_new_dilated_process(total_num_tracers, cmd_to_run, log_file_fd): newpid = os.fork() if newpid == 0: os.dup2(log_file_fd, sys.stdout.fileno()) os.dup2(log_file_fd, sys.stderr.fileno()) - args = ["app_vt_tracer", "-n", str(total_num_tracers), "-i", str(tracer_id), "-c", cmd_to_run] + args = ["/usr/bin/app_vt_tracer", "-n", str(total_num_tracers), "-c", cmd_to_run] os.execvp(args[0], args) else: return newpid @@ -33,11 +33,11 @@ def main(): parser.add_argument('--num_insns_per_round', dest='num_insns_per_round', help='Number of insns per round', type=int, - default=100000) + default=1000000) parser.add_argument('--num_progress_rounds', dest='num_progress_rounds', help='Number of rounds to run', type=int, - default=200) + default=2000) args = parser.parse_args() log_fds = [] @@ -67,8 +67,8 @@ def main(): print ("Initializing VT Module !" ) if kf.initializeExp(num_tracers) < 0 : - print "VT module initialization failed ! Make sure you are running\ - the dilated kernel and kronos module is loaded !" + print ("VT module initialization failed ! Make sure you are running " + "the dilated kernel and kronos module is loaded !") sys.exit(0) input('Press any key to continue !') @@ -76,29 +76,27 @@ def main(): print ("Starting all commands to run !") for i in range(0, num_tracers): - print "Starting tracer: %d" %(i + 1) - start_new_dilated_process(i + 1, num_tracers, cmds_to_run[i], log_fds[i]) + print ("Starting tracer: %d" %(i + 1)) + start_new_dilated_process(num_tracers, cmds_to_run[i], log_fds[i]) print ("Synchronizing anf freezing tracers ...") while kf.synchronizeAndFreeze() <= 0: - print "VT Module >> Synchronize and Freeze failed. Retrying in 1 sec" + print ("VT Module >> Synchronize and Freeze failed. Retrying in 1 sec") time.sleep(1) input('Press any key to continue !') print ("Starting Synchronized Experiment !") - start_time = float(time.time()) if args.num_progress_rounds > 0 : print ("Running for %d rounds ... " %(args.num_progress_rounds)) num_finised_rounds = 0 - step_size = min(1, args.num_progress_rounds) + step_size = min(10, args.num_progress_rounds) while num_finised_rounds < args.num_progress_rounds: kf.progressBy(args.num_insns_per_round, step_size) num_finised_rounds += step_size + #input("Press Enter to continue...") print ("Ran %d rounds ..." %(num_finised_rounds), " elapsed time ...", float(time.time()) - start_time) - #time.sleep(0.1) - #input("Press Enter to continue...") elapsed_time = float(time.time()) - start_time print ("Total time elapsed (secs) = ", elapsed_time) diff --git a/src/core/common.c b/src/core/common.c index 955bbc0..2fdcf3b 100644 --- a/src/core/common.c +++ b/src/core/common.c @@ -213,13 +213,14 @@ void AddToTracerScheduleQueue(tracer * tracer_entry, tracee->pid, tracer_entry->tracer_id); new_elem = (lxc_schedule_elem *)kmalloc(sizeof(lxc_schedule_elem), GFP_KERNEL); - memset(new_elem, 0, sizeof(lxc_schedule_elem)); + if (!new_elem) { PDEBUG_E("AddToTracerScheduleQueue: " "Tracer %d, tracee %d. Failed to alot Memory\n", tracer_entry->tracer_id, tracee->pid); return; } + memset(new_elem, 0, sizeof(lxc_schedule_elem)); new_elem->pid = tracee->pid; new_elem->curr_task = tracee; @@ -252,6 +253,7 @@ void AddToTracerScheduleQueue(tracer * tracer_entry, tracee->wakeup_time = 0; tracee->burst_target = 0; } + tracee->assigned_timeline = tracer_entry->timeline_assignment; diff --git a/src/core/sync_experiment.c b/src/core/sync_experiment.c index d50c210..70df0d3 100644 --- a/src/core/sync_experiment.c +++ b/src/core/sync_experiment.c @@ -486,10 +486,10 @@ int InitializeExperimentComponents(int exp_type, int num_timelines, chaintask[i] = kthread_create(&PerTimelineWorker, &values[i], "PerTimelineWorker"); if (!IS_ERR(chaintask[i])) { - kthread_bind(chaintask[i], i % EXP_CPUS); + kthread_bind(chaintask[i], EXP_CPUS + i % (TOTAL_CPUS - EXP_CPUS)); wake_up_process(chaintask[i]); PDEBUG_A("Timeline Worker %d: Pid = %d\n", i, - chaintask[i]->pid); + chaintask[i]->pid); } } @@ -831,6 +831,21 @@ int UpdateAllRunnableTaskTimeslices(tracer * curr_tracer) { PutTracerStructRead(curr_tracer); GetTracerStructWrite(curr_tracer); + if (curr_tracer->last_run != NULL && curr_tracer->last_run->quanta_left_from_prev_round) { + + last_run = curr_tracer->last_run; + if (alotted_quanta + last_run->quanta_left_from_prev_round > total_quanta) { + last_run->quanta_curr_round = total_quanta - alotted_quanta; + last_run->quanta_left_from_prev_round = + last_run->quanta_left_from_prev_round - last_run->quanta_curr_round; + alotted_quanta = total_quanta; + curr_tracer->last_run = last_run; + PutTracerStructWrite(curr_tracer); + GetTracerStructRead(curr_tracer); + return 1; + } + + } while (head != NULL) { curr_elem = (lxc_schedule_elem *)head->item; @@ -894,24 +909,8 @@ int UpdateAllRunnableTaskTimeslices(tracer * curr_tracer) { return alteast_one_task_runnable; } - head = run_queue->head; - if (curr_tracer->last_run != NULL && curr_tracer->last_run->quanta_left_from_prev_round) { - - last_run = curr_tracer->last_run; - if (alotted_quanta + last_run->quanta_left_from_prev_round > total_quanta) { - last_run->quanta_curr_round = total_quanta - alotted_quanta; - last_run->quanta_left_from_prev_round = - last_run->quanta_left_from_prev_round - last_run->quanta_curr_round; - alotted_quanta = total_quanta; - curr_tracer->last_run = last_run; - PutTracerStructWrite(curr_tracer); - GetTracerStructRead(curr_tracer); - return 1; - } - - } while (head != NULL && alotted_quanta < total_quanta) { curr_elem = (lxc_schedule_elem *)head->item; @@ -984,6 +983,8 @@ int UpdateAllRunnableTaskTimeslices(tracer * curr_tracer) { curr_elem = (lxc_schedule_elem *)head->item; if (!curr_elem) { + PutTracerStructWrite(curr_tracer); + GetTracerStructRead(curr_tracer); return alteast_one_task_runnable; } @@ -998,7 +999,7 @@ int UpdateAllRunnableTaskTimeslices(tracer * curr_tracer) { if (alotted_quanta + curr_elem->base_quanta >= total_quanta) { - curr_elem->quanta_curr_round = total_quanta - alotted_quanta; + curr_elem->quanta_curr_round += total_quanta - alotted_quanta; curr_elem->quanta_left_from_prev_round = curr_elem->base_quanta - (total_quanta - alotted_quanta); alotted_quanta = total_quanta; @@ -1101,6 +1102,7 @@ int UnfreezeProcExpSingleCoreMode(tracer * curr_tracer) { } total_quanta = curr_tracer->nxt_round_burst_length; + PDEBUG_V("Tracer: %d, TOTAL QUANTA = %lld\n", curr_tracer->tracer_id, total_quanta); if (curr_tracer->last_run) PDEBUG_V("Tracer: %d, LAST RUN = %d\n", curr_tracer->tracer_id, curr_tracer->last_run->pid); diff --git a/src/core/vt_module.c b/src/core/vt_module.c index 36473df..bf30bbe 100644 --- a/src/core/vt_module.c +++ b/src/core/vt_module.c @@ -126,6 +126,8 @@ ssize_t vtWrite(struct file *file, const char __user *buffer, size_t count, int tracer_id; tracer *curr_tracer; + memset(api_integer_args, 0, sizeof(int) * MAX_API_ARGUMENT_SIZE); + if(count > MAX_API_ARGUMENT_SIZE) { buffer_size = MAX_API_ARGUMENT_SIZE; } else { @@ -170,8 +172,6 @@ ssize_t vtWrite(struct file *file, const char __user *buffer, size_t count, GetTracerStructWrite(curr_tracer); for (i = 1; i < num_integer_args; i++) { AddToTracerScheduleQueue(curr_tracer, api_integer_args[i]); - PDEBUG_E("VT_ADD_PROCESS_TO_SQ: Tracer : %d, process: %d\n", - tracer_id, api_integer_args[i]); } PutTracerStructWrite(curr_tracer); return 0; @@ -207,9 +207,8 @@ ssize_t vtWrite(struct file *file, const char __user *buffer, size_t count, current->ready = 1; - - HandleTracerResults(curr_tracer, &api_integer_args[1], - num_integer_args - 1); + HandleTracerResults(curr_tracer, &api_integer_args[1], + num_integer_args - 1); wait_event_interruptible( *curr_tracer->w_queue, @@ -371,7 +370,7 @@ long vtIoctl(struct file *filp, unsigned int cmd, unsigned long arg) { api_info_tmp.api_argument, api_integer_args, MAX_API_ARGUMENT_SIZE); if (num_integer_args < 1) { - PDEBUG_E("VT_RM_PROCESS_FROM_SQ: Not enough arguments !"); + PDEBUG_E("VT_WRITE_RESULTS: Not enough arguments !"); return -EINVAL; } diff --git a/src/tracer/app_vt_tracer.c b/src/tracer/app_vt_tracer.c index b426060..e0c0289 100644 --- a/src/tracer/app_vt_tracer.c +++ b/src/tracer/app_vt_tracer.c @@ -16,10 +16,16 @@ #include #include #include +#include +#include +#include + +const char *homedir; + #define MAX_COMMAND_LENGTH 1000 #define MAX_CONTROLLABLE_PROCESSES 100 -#define MAX_BUF_SIZ 100 +#define MAX_BUF_SIZ 1000 #define FAIL -1 #include "Kronos_functions.h" @@ -74,8 +80,13 @@ int createSpinnerTask(pid_t *child_pid) { //! Envelop orig command to be started under the control of intel-pin void envelopeCommandUnderPin(char * enveloped_cmd_str, char * orig_command_str, int total_num_tracers, int tracer_id) { - char * pin_binary_path = "/home/titan/pin/pin"; - char * pintool_path = "/home/titan/Titan/src/tracer/pintool/obj-intel64/inscount_tls.so"; + if ((homedir = getenv("HOME")) == NULL) { + homedir = getpwuid(getuid())->pw_dir; + } + char pin_binary_path[MAX_COMMAND_LENGTH]; + memset(pin_binary_path, 0, MAX_COMMAND_LENGTH); + sprintf(pin_binary_path, "%s/Kronos/src/tracer/pintool/pin-3.13/pin", homedir); + char * pintool_path = "/usr/lib/inscount_tls.so"; memset(enveloped_cmd_str, 0, MAX_COMMAND_LENGTH); sprintf(enveloped_cmd_str, "%s -t %s -n %d -i %d -- %s", pin_binary_path, pintool_path, total_num_tracers, tracer_id, orig_command_str); @@ -234,7 +245,10 @@ int main(int argc, char * argv[]) { while ((option = getopt(argc, argv, "i:f:n:st:c:h")) != -1) { switch (option) { case 'i' : tracer_id = atoi(optarg); - if (tracer_id <= 0) {fprintf(stderr, "Explicitly assigned tracer-id must be positive\n"); exit(FAIL); } + if (tracer_id <= 0) { + fprintf(stderr, "Explicitly assigned tracer-id must be positive > 0\n"); + exit(FAIL); + } break; case 'n' : total_num_tracers = atoi(optarg); break; diff --git a/src/tracer/pintool/inscount_tls.cpp b/src/tracer/pintool/inscount_tls.cpp index 10565df..beaa16b 100644 --- a/src/tracer/pintool/inscount_tls.cpp +++ b/src/tracer/pintool/inscount_tls.cpp @@ -42,7 +42,7 @@ #include "pin.H" -#define MAX_API_ARGUMENT_SIZE 100 +#define MAX_API_ARGUMENT_SIZE 1000 #define BUF_MAX_SIZE MAX_API_ARGUMENT_SIZE #define VT_ADD_TO_SQ 'a' #define VT_WRITE_RESULTS 'b' @@ -256,21 +256,16 @@ VOID PIN_FAST_ANALYSIS_CALL docount(UINT32 c, THREADID threadid) if (tdata->_increment <= 0) { tdata->_vt_enabled = 0; - cout << "Trigerring Application Exit !" << endl; + cout << "Trigerring Application Exit: TID:" << PIN_GetTid() << endl; PIN_ExitApplication(0); } else { tdata->_curr_clock = *myClock; tdata->_target_clock = tdata->_curr_clock + tdata->_increment; - } - } else { - - tdata->_curr_clock = 0; - tdata->_target_clock = ULLONG_MAX; } } - tdata->_curr_clock += c; + tdata->_curr_clock += c; } @@ -286,7 +281,7 @@ VOID ThreadStart(THREADID threadid, CONTEXT *ctxt, INT32 flags, VOID *v) } cout << "Calling ThreadStart for thread: " - << threadid << ", PID: " << PIN_GetPid() << endl; + << threadid << ", TID: " << PIN_GetTid() << endl; myPid = PIN_GetTid(); if (addProcessesToTracerSq(monitorTracerId, &myPid, 1) < 0) { tdata->_vt_enabled = 0; @@ -295,6 +290,7 @@ VOID ThreadStart(THREADID threadid, CONTEXT *ctxt, INT32 flags, VOID *v) tdata->_fp = -1; memset((char *)tdata->_buf, 0, 10); cout << "Thread: "<< myPid << " Add to TRACER SQ failed !" << endl; + PIN_ExitProcess(1); } else { tdata->_vt_enabled = 1; tdata->_curr_clock = *myClock; @@ -302,8 +298,8 @@ VOID ThreadStart(THREADID threadid, CONTEXT *ctxt, INT32 flags, VOID *v) tdata->_fp = -1; memset(tdata->_buf, 0, 10); } - cout << "Calling ThreadStart for thread: " << threadid << ", PID: " - << PIN_GetPid() << " Successfull !" << " FP = " << tdata->_fp << endl; + cout << "Calling ThreadStart for thread: " << threadid << ", TID: " + << PIN_GetTid() << " Successfull !" << " FP = " << tdata->_fp << endl; } @@ -336,6 +332,7 @@ VOID AfterForkInChild(THREADID threadid, const CONTEXT* ctxt, VOID * arg) tdata->_fp = -1; memset((char *)tdata->_buf, 0, 10); cout << "Process: "<< myPid << " Add to TRACER SQ failed !" << endl; + PIN_ExitProcess(1); } else { tdata->_vt_enabled = 1; tdata->_curr_clock = *myClock; @@ -439,7 +436,7 @@ int main(int argc, char * argv[]) return 1; } cout << "fd = " << fd << " attempting to MMAP: " << num_pages << " pages" << endl; - puts("mmaping /proc/dilation/status"); + puts("mmaping /proc/kronos"); tracerClockArray = (s64 *)mmap(NULL, page_size*num_pages, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); if (tracerClockArray == MAP_FAILED) { diff --git a/src/tracer/pintool/makefile b/src/tracer/pintool/makefile index da26698..07535eb 100644 --- a/src/tracer/pintool/makefile +++ b/src/tracer/pintool/makefile @@ -4,16 +4,16 @@ # ############################################################## -# If the tool is built out of the kit, PIN_ROOT must be specified in the make invocation and point to the kit root. -ifdef PIN_ROOT +PINTOOL_ROOT=$(HOME)/Kronos/src/tracer/pintool +PIN_ROOT=$(HOME)/Kronos/src/tracer/pintool/pin-3.13 +TOOLS_ROOT=$(HOME)/Kronos/src/tracer/pintool/pin-3.13/source/tools CONFIG_ROOT := $(PIN_ROOT)/source/tools/Config -else -CONFIG_ROOT := ../Config -endif + include $(CONFIG_ROOT)/makefile.config -include makefile.rules +include $(PINTOOL_ROOT)/makefile.rules include $(TOOLS_ROOT)/Config/makefile.default.rules + ############################################################## # # DO NOT EDIT THIS FILE! diff --git a/src/tracer/pintool/pin-3.13/README b/src/tracer/pintool/pin-3.13/README new file mode 100755 index 0000000..08547eb --- /dev/null +++ b/src/tracer/pintool/pin-3.13/README @@ -0,0 +1,838 @@ +Pin 3.11 Release Notes +===================== + +Pin is a tool for the instrumentation of programs. It supports the Linux*, macOS* +and Windows* operating systems and executables for the IA-32 and Intel(R) 64 +architectures. + +For license information, see the EULA.txt file and the licensing 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. + +PinADX support + + Pin Advanced Debugging Extensions (PinADX) is now supporting + Visual Studio 2012 up to Visual Studio 2017. + +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 macOS* +=============================================== + +General issues + + o Pin documentation is not yet updated with the macOS* 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". + o Pin ignores a ptrace command with PT_DENY_ATTACH request coming from the application. + This means that if Pin launched an application and this application used PTRACE with PT_DENY_ATTACH flag, then: + - Pin will be able to do detach/re-attach + - A debugger will be able to attach to the application process and debug Pin/tool + - Pin ADX will be able to attach to the application process and debug it while running under Pin + Note: Pin is currently unable to attach to an application which already executed ptrace with PT_DENY_ATTACH request. + + +******************************* Recent Changes ******************************* + +Changes added _After_ Pin 3.10 / 97984 +=========================================== + o Restored the PIN_PRODUCT_VERSION_MAJOR, PIN_PRODUCT_VERSION_MINOR and PIN_BUILD_NUMBER constants + and added a new constant - PIN_COMMIT_HASH. See the Misc section in the user guide for details. + +Changes added _After_ Pin 3.9 / 97939 +=========================================== + o Added a new API to retrieve dynamic functions Method Id attribute: RTN_DynamicMethodId. + This method is applicable for the JitProfiling feature. + o Added a new API, PIN_Version, which returns a string containing the Pin version. + +Changes added _After_ Pin 3.8 / 97903 +=========================================== + o Pin's license was changed to the End User License Agreement for the Intel(R) Software Development Products, + non-commercial type. The license can be found in /licensing/EULA.txt. Please review the licensing directory + for more information. + +Changes added _After_ Pin 3.7 / 97720 +=========================================== + o The following APIs which have been deprecated for a long time have been removed: + PIN_RegisterItcAuxCallBackPushFun + RTN_ReplaceWithUninstrumentedRoutine - See RTN_Replace and RTN_ReplaceProbed + RTN_ComplexReplaceWithUninstrumentedRoutine + PIN_FindLineFileByAddress - See PIN_FindColumnLineFileByAddress + PIN_FindColumnLineFileByAddress - See PIN_GetSourceLocation + o Adding new IMG API: + BOOL IMG_HasProperty(IMG img, IMG_PROPERTY property) + This API can be used to query various properties defined as meta data in the image. + Currently this API supports only CET properties for Linux only (for compiled code + with -fcf-protection=[full|branch|return|none]). + o IMG_Entry() is deprecated - use IMG_EntryAddress() instead. + o A new Instruction Generic Inspection API function: INS_IsControlFlow. + See its documentation for more details, note that it excludes system calls. + o New functions to check if instrumentation at a certain IPOINT is available: + - INS_IsValidForIpointTakenBranch - prior to instrumentation at + IPOINT_TAKEN_BRANCH, you should verify that this function returns true. + Previously, this check was done by INS_IsBranchOrCall. + - INS_IsValidForIpointAfter - prior to instrumentation at IPOINT_AFTER, + you should verify that this function returns true. + Previously, this check was done by INS_HasFallThrough. + o The function INS_IsBranchOrCall has been deprecated. You can choose an + alternative function according to the required usage: + - To check if instrumentation at IPOINT_TAKEN_BRANCH is available, use the + function INS_IsValidForIpointTakenBranch. + - To check if an instruction is a branch or a call instruction, use the + combination (INS_IsBranch || INS_IsCall). + - To check if an instruction is in general a control-flow instruction, use + the new function INS_IsControlFlow (see documentation for details). + o The function INS_IsBranch was updated to exclude system calls that are + implemented by branch instructions (e.g. JMP_FAR with selector 0x33 in + Windows on IA-32). + o The function INS_IsCall was updated to exclude system calls. + o The following functions' names were changed (old names are deprecated): + --- old function's name --- --- new function's name --- + INS_IsDirectBranchOrCall -> INS_IsDirectControlFlow + INS_IsIndirectBranchOrCall -> INS_IsIndirectControlFlow + INS_CallOrBranchIsRegisterIndirect -> INS_IsIndirectControlFlowViaRegister + INS_CallOrBranchIsMemoryIndirect -> INS_IsIndirectControlFlowViaMemory + INS_CallOrBranchGetIndirectRegister -> INS_GetIndirectControlFlowRegister + INS_DirectBranchOrCallTargetAddress -> INS_DirectControlFlowTargetAddress + ** There is no functionality change, simply renaming of the old functions + to keep consistency and compliance with other changes. + o passing IARG_BRANCH_TARGET_ADDR to an analysis routine is only allowed if + INS_IsControlFlow is true. However, passing this argument to an analysis + routine will not work for XBEGIN and XEND instructions. + o passing IARG_FALLTHROUGH_ADDR to an analysis routine is only allowed if + INS_HasFallThrough is true. + o Locking primitives such as PIN_SEMAPHORE and PIN_MUTEX requires cache line + (64byte) alignment for performance reasons. It is advisable to use aligned + allocation for these primitives. Note that new compiler (e.g. gcc >= 7.3) + may produce warning if aligned allocation is not used. + +Changes added _After_ Pin 3.7 / 97619 +=========================================== + o Enabled PinADX (Pin Advanced Debugging Extensions) on macOS (See user guide for more details) + o The following APIs which have been deprecated for a long time have been removed: + const VARIABLE_MEMORY_REFERENCE_SIZE is no longer defined + INS_IsRewritableMemOpBaseLimited - See INS_RewriteMemoryOperand + INS_IsDynamicRewritableMemOpBase - See INS_RewriteMemoryOperand + INS_IsRewritableMemOpBase - See INS_RewriteMemoryOperand + INS_MemoryOffset - See INS_MemoryDisplacement + INS_MemoryDisplacementSigned - See INS_MemoryDisplacement + ParseCommandLine - See the return value from PIN_Init + INS_OperandReadAndWriten - See INS_RewriteMemoryOperand + RTN_No - See RTN_Id + PIN_StartProbedProgram - See PIN_StartProgramProbed + PIN_AddSignalBeforeFunction - See PIN_AddContextChangeFunction + PIN_AddSignalAfterFunction - See PIN_AddContextChangeFunction + PIN_AddSignalInterceptFunction - See PIN_InterceptSignal and PIN_UnblockSignal + PIN_AddThreadBeginFunction - See PIN_AddThreadStartFunction + PIN_AddThreadEndFunction - See PIN_AddThreadFiniFunction + RTN_IsSafeForProbe - See RTN_IsSafeForProbedInsertion + PIN_FindAlternateAppStack + RTN_BblHead - See RTN_InsHead + RTN_BblTail - See RTN_InsTail + INS_ChangeMemOpToBaseRegisterAddressMode - See INS_RewriteMemoryOperand + INS_RewriteMemoryAddressingToBaseRegisterOnly - See INS_RewriteMemoryOperand + CODECACHE_InvalidateRange - See PIN_RemoveInstrumentationInRange + CODECACHE_InvalidateTraceAtProgramAddress - See PIN_RemoveInstrumentationInRange + CODECACHE_FlushCache - See PIN_RemoveInstrumentation + TRACE_Original + o Enable dynamic linking of Pin tools with PinCRT on Windows. + An example is available in the MyPinTool directory. + o Removed "using namespace std;" from Pin header files. + o Printing unmangled names in stack trace (on assert). + o Main bug fixes: + o Compilation error when building a PinTool with gcc version 7.0 or newer. + o Running child process natively if Pin fails on follow child due to permissions. + o Issue with Pin warning messages not being displayed. + o MyPinTool Visual Studio solution is broken (https://groups.yahoo.com/neo/groups/pinheads/conversations/messages/12865, + https://groups.yahoo.com/neo/groups/pinheads/conversations/messages/12997) + o Application extended state gets corrupted after Pin_Detach (https://groups.yahoo.com/neo/groups/pinheads/conversations/messages/12833) + (Fixed on macOS) + o Potential key duplication with PIN_CreateThreadDataKey + o Potential wrong result from PIN_CheckWriteAccess + o Performance penalty caused by AVX-SSE transitions in Probe mode + o Better handling long paths in Pin command line on Windows. + o Application forked child process output is written to pin log file on macOS + +Changes added _After_ Pin 3.6 / 97575 +=========================================== + o macOS* - Pin now ignores a ptrace command with PT_DENY_ATTACH request coming from the application. + This means that if Pin launched an application and this application used PTRACE with PT_DENY_ATTACH flag, then: + - Pin will be able to do detach/re-attach + - A debugger will be able to attach to the application process and debug Pin/tool + - Pin ADX will be able to attach to the application process and debug it while running under Pin + Note: Pin is currently unable to attach to an application which already executed ptrace with PT_DENY_ATTACH request. + o The APIs: CALLBACK_SetExecutionPriority, CALLBACK_GetExecutionPriority were deprecated and + replaced with CALLBACK_SetExecutionOrder, CALLBACK_GetExecutionOrder. + +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 macOS* 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 macOS*. + 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 2004-2019 Intel Corporation. + +Intel Corporation, 2200 Mission College Blvd., Santa Clara, CA 95052-8119, USA. diff --git a/src/tracer/pintool/pin-3.13/doc/html/annotated.html b/src/tracer/pintool/pin-3.13/doc/html/annotated.html new file mode 100755 index 0000000..9215527 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/annotated.html @@ -0,0 +1,213 @@ + + + + +Pin: Class List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_PinPargClass< T >
_PinPargClass< bool >
_PinPargClass< char >
_PinPargClass< double >
_PinPargClass< float >
_PinPargClass< int >
_PinPargClass< long >
_PinPargClass< long long >
_PinPargClass< short >
_PinPargClass< signed char >
_PinPargClass< T & >
_PinPargClass< T * >
_PinPargClass< unsigned char >
_PinPargClass< unsigned int >
_PinPargClass< unsigned long >
_PinPargClass< unsigned long long >
_PinPargClass< unsigned short >
_PinPargClass< void >
_tcpClientStruct
_tcpServerStruct
LEVEL_BASE::ADDRESS_RANGE
CONTROLLER::ALARM_ADDRESS
CONTROLLER::ALARM_CPUID
CONTROLLER::ALARM_ENTER_FUNC
CONTROLLER::ALARM_EXIT_FUNC
CONTROLLER::ALARM_ICOUNT
CONTROLLER::ALARM_IMAGE
CONTROLLER::ALARM_INT3
CONTROLLER::ALARM_INTERACTIVE
CONTROLLER::ALARM_ISA_CATEGORY
CONTROLLER::ALARM_ISA_EXTENSION
CONTROLLER::ALARM_ITEXT
CONTROLLER::ALARM_MAGIC
CONTROLLER::ALARM_MANAGER
CONTROLLER::ALARM_PCONTROL
CONTROLLER::ALARM_SIGNAL
CONTROLLER::ALARM_SSC
CONTROLLER::ALARM_SYMBOL
CONTROLLER::ALARM_TIMEOUT
LEVEL_CORE::BBL_EDG_CONTAINER_PRED
LEVEL_CORE::BBL_EDG_CONTAINER_SUCC
CONTROLLER::CACHELINE_COUNTER
CALL_APPLICATION_FUNCTION_PARAM
CALLSTACK::CallEntry
CALLSTACK::CallStack
CALLSTACK::CallStackHandlerParams
CALLSTACK::CallStackInfoStruct
CALLSTACK::CallStackManager
CONTROLLER::CHAIN_EVENT
LEVEL_CORE::CHUNK_REL_CONTAINER
LEVEL_PINCLIENT::CLIENT_TLS
LEVEL_BASE::COMMAND_LINE_ARGUMENTS
CONTROLLER::CONTROL_ARGS
CONTROLLER::CONTROL_CHAIN
CONTROLLER::CONTROL_HANDLER_PARAMS
CONTROLLER::CONTROL_IREGIONS
CONTROLLER::CONTROL_MANAGER
CONTROLLER::CONTROL_PCREGIONS
CONTROLLER::CONTROL_REGION_INFO
CONTROLLER::CONTROLLER_EVENTS
DEBUG_CONNECTION_INFO
DEBUG_MODE
LEVEL_BASE::DECSTR
LEVEL_CORE::EDG_STRUCT_BASE
INSTLIB::FILTER
INSTLIB::FILTER_LIB
INSTLIB::FILTER_RTN
LEVEL_BASE::FLTSTR
INSTLIB::FOLLOW_CHILD
LEVEL_BASE::HEXSTR
CONTROLLER::IALARM
INSTLIB::ICOUNT
DEBUGGER_SHELL::ICUSTOM_INSTRUMENTOR
CONTROLLER::IEVENT
LEVEL_PINCLIENT::IMAGE_INIT_SESSION
LEVEL_PINCLIENT::IMAGE_LOAD_OP
LEVEL_PINCLIENT::IMAGE_LOAD_OP2
LEVEL_PINCLIENT::ImageLoadArgs
LEVEL_BASE::ImageLoaderInfo
LEVEL_PINCLIENT::IMG_IDENTIFIER
LEVEL_CORE::IMG_REGION
CONTROLLER::INIT_ALARM
LEVEL_PINCLIENT::INSTR
LEVEL_PINCLIENT::INSTR_INFO
CONTROLLER::INTERACTIVE_LISTENER
CONTROLLER::IREGION
DEBUGGER_SHELL::ISHELL
LEVEL_BASE::KNOB< TYPE >
LEVEL_BASE::KNOB_BASE
LEVEL_BASE::KNOB_COMMENT
LEVEL_BASE::KNOBVALUE< TYPE >
LEVEL_BASE::KNOBVALUE_LIST< TYPE >
LEVEL_BASE::LINUX_LOADER_IMAGE_INFO
LEVEL_CORE::MEM_ADDR_EXP
LEVEL_PINCLIENT::OUTSIDE_TARGET
LEVEL_PINCLIENT::OUTSIDE_TARGET_MEM_RANGE
PARG_T
LEVEL_BASE::PARSER
CONTROLLER::PARSER
CONTROLLER::PCREGION
LEVEL_PINCLIENT::PIN_CLIENT_MUTEX
PIN_CODE_RANGE
LEVEL_BASE::PIN_ERROR_DESCRIPTOR
LEVEL_BASE::PIN_LOCK
PIN_MEM_ACCESS_INFO
PIN_MEM_TRANS_FLAGS
PIN_MEM_TRANS_INFO
PIN_MULTI_MEM_ACCESS_INFO
PIN_REGISTER
REG_INFO
LEVEL_BASE::REGDEF_ENTRY
CONTROLLER::REGION_UTILS
LEVEL_CORE::REGISTER_SET< _min, _max >
LEVEL_PINCLIENT::REPLACEDFUN
LEVEL_PINCLIENT::RTN_KEY
LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES
SHELL
LEVEL_BASE::SimpleXMLParser
INSTLIB::SKIP_INT3
INSTLIB::SKIPPER
DEBUGGER_SHELL::STARTUP_ARGUMENTS
LEVEL_PINCLIENT::SymbolAddressRange
LEVEL_PINCLIENT::SymbolDebugInfo
INSTLIB::TIME_WARP
INSTLIB::TIME_WARP_RDTSC
LEVEL_CORE::VAL
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/bc_s.png b/src/tracer/pintool/pin-3.13/doc/html/bc_s.png new file mode 100755 index 0000000000000000000000000000000000000000..e4018628b5b45cb4301037485a29d7d74ac22138 GIT binary patch literal 677 zcmV;W0$TlvP)X?0Pv5h+5!wElpi=&YL!gfY!djl#UDdPKy97F|A-deTa@qo3BWh1YQIvzmHR^g zFjV4I6pLB7_*vEZk^%p7c7Bh>0`4r^X#gpJE_Vz9fSHKqclcZaV^k3gX%h+1`u||O zZ+BY?7(R=ayr^kXE=E0Dw=$Ud3VJ?9^Cz@hP?388Cw5>9TloOJ>^KczCgj zns2=|0!a|)Yq3{hjL{xyy7|Tk0N}Pe+g9PUTL!4{#;eUhrNd@!_T<>Vu+35c)h>sq ztgb?(6W3oFLz#%?OMEV@{j#4LuDvjVGZ~6hpQT8li5b0yjvK8c4efl+vSz5)P6 zle78)00_Iv5)&E~hnOdcd}L}i+MU>k+Q8#@KjqJJN`gRj(~)RmNrck9ht@LelPtVO zwp(J;k!T=gC#%o(13-^E+g@aqc()pf{+j|0w)AH*Mq$54UjLv#jV$RYpz3Vjg$$=u z>yjfBQOhL=^@+#4#$l|{~}HZ-?1Yy{lI*$N}*YDC`<{+;>_#gMXZdz4NI00000 LNkvXXu0mjfx86dR literal 0 HcmV?d00001 diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCALLSTACK_1_1CallEntry-members.html b/src/tracer/pintool/pin-3.13/doc/html/classCALLSTACK_1_1CallEntry-members.html new file mode 100755 index 0000000..c128a00 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCALLSTACK_1_1CallEntry-members.html @@ -0,0 +1,97 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
CALLSTACK::CallEntry Member List
+
+
+This is the complete list of members for CALLSTACK::CallEntry, including all inherited members. + + + + + +
CallEntry() (defined in CALLSTACK::CallEntry)CALLSTACK::CallEntry [inline]
CallEntry(ADDRINT current_sp, ADDRINT target) (defined in CALLSTACK::CallEntry)CALLSTACK::CallEntry [inline]
operator==(const CallEntry &a) const (defined in CALLSTACK::CallEntry)CALLSTACK::CallEntry [inline]
sp() const (defined in CALLSTACK::CallEntry)CALLSTACK::CallEntry [inline]
target() const (defined in CALLSTACK::CallEntry)CALLSTACK::CallEntry [inline]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCALLSTACK_1_1CallEntry.html b/src/tracer/pintool/pin-3.13/doc/html/classCALLSTACK_1_1CallEntry.html new file mode 100755 index 0000000..b8d2435 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCALLSTACK_1_1CallEntry.html @@ -0,0 +1,110 @@ + + + + +Pin: CALLSTACK::CallEntry Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
CALLSTACK::CallEntry Class Reference
+
+
+ +

List of all members.

+ + + + + + +

+Public Member Functions

CallEntry (ADDRINT current_sp, ADDRINT target)
+bool operator== (const CallEntry &a) const
+ADDRINT sp () const
+ADDRINT target () const
+
The documentation for this class was generated from the following file:
    +
  • call-stack.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCALLSTACK_1_1CallStack-members.html b/src/tracer/pintool/pin-3.13/doc/html/classCALLSTACK_1_1CallStack-members.html new file mode 100755 index 0000000..d5927b4 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCALLSTACK_1_1CallStack-members.html @@ -0,0 +1,101 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
CALLSTACK::CallStack Member List
+
+
+This is the complete list of members for CALLSTACK::CallStack, including all inherited members. + + + + + + + + + +
depth() (defined in CALLSTACK::CallStack)CALLSTACK::CallStack
depth_target(UINT32 depth) (defined in CALLSTACK::CallStack)CALLSTACK::CallStack
emit_stack(UINT32 depth, vector< string > &out) (defined in CALLSTACK::CallStack)CALLSTACK::CallStack
get_targets(list< ADDRINT > &out) (defined in CALLSTACK::CallStack)CALLSTACK::CallStack
process_call(ADDRINT current_sp, ADDRINT target) (defined in CALLSTACK::CallStack)CALLSTACK::CallStack
process_return(ADDRINT current_sp, ADDRINT ip) (defined in CALLSTACK::CallStack)CALLSTACK::CallStack
push_head(ADDRINT current_sp, ADDRINT target) (defined in CALLSTACK::CallStack)CALLSTACK::CallStack
save_all_ips_info() (defined in CALLSTACK::CallStack)CALLSTACK::CallStack
top_target() (defined in CALLSTACK::CallStack)CALLSTACK::CallStack
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCALLSTACK_1_1CallStack.html b/src/tracer/pintool/pin-3.13/doc/html/classCALLSTACK_1_1CallStack.html new file mode 100755 index 0000000..c76a5ed --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCALLSTACK_1_1CallStack.html @@ -0,0 +1,120 @@ + + + + +Pin: CALLSTACK::CallStack Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
CALLSTACK::CallStack Class Reference
+
+
+ +

List of all members.

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

+Public Member Functions

+void emit_stack (UINT32 depth, vector< string > &out)
+UINT32 depth ()
+void push_head (ADDRINT current_sp, ADDRINT target)
+ADDRINT top_target ()
+ADDRINT depth_target (UINT32 depth)
+void save_all_ips_info ()
+void process_call (ADDRINT current_sp, ADDRINT target)
+void process_return (ADDRINT current_sp, ADDRINT ip)
+void get_targets (list< ADDRINT > &out)
+
The documentation for this class was generated from the following file:
    +
  • call-stack.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCALLSTACK_1_1CallStackHandlerParams-members.html b/src/tracer/pintool/pin-3.13/doc/html/classCALLSTACK_1_1CallStackHandlerParams-members.html new file mode 100755 index 0000000..ce2251d --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCALLSTACK_1_1CallStackHandlerParams-members.html @@ -0,0 +1,99 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
CALLSTACK::CallStackHandlerParams Member List
+
+
+This is the complete list of members for CALLSTACK::CallStackHandlerParams, including all inherited members. + + + + + + + +
_args (defined in CALLSTACK::CallStackHandlerParams)CALLSTACK::CallStackHandlerParams
_first_ip (defined in CALLSTACK::CallStackHandlerParams)CALLSTACK::CallStackHandlerParams
_function_ip (defined in CALLSTACK::CallStackHandlerParams)CALLSTACK::CallStackHandlerParams
_function_name (defined in CALLSTACK::CallStackHandlerParams)CALLSTACK::CallStackHandlerParams
_handler (defined in CALLSTACK::CallStackHandlerParams)CALLSTACK::CallStackHandlerParams
_name_handler (defined in CALLSTACK::CallStackHandlerParams)CALLSTACK::CallStackHandlerParams
CallStackHandlerParams(CALL_STACK_HANDLER h, const string &func_name, void *v, ADDRINT func_ip=0, BOOL name_handler=TRUE) (defined in CALLSTACK::CallStackHandlerParams)CALLSTACK::CallStackHandlerParams [inline]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCALLSTACK_1_1CallStackHandlerParams.html b/src/tracer/pintool/pin-3.13/doc/html/classCALLSTACK_1_1CallStackHandlerParams.html new file mode 100755 index 0000000..cc3364f --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCALLSTACK_1_1CallStackHandlerParams.html @@ -0,0 +1,119 @@ + + + + +Pin: CALLSTACK::CallStackHandlerParams Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
CALLSTACK::CallStackHandlerParams Class Reference
+
+
+ +

List of all members.

+ + + + + + + + + + +

+Public Member Functions

CallStackHandlerParams (CALL_STACK_HANDLER h, const string &func_name, void *v, ADDRINT func_ip=0, BOOL name_handler=TRUE)

+Public Attributes

+CALL_STACK_HANDLER _handler
+string _function_name
+string _function_ip
+BOOL _name_handler
+void * _args
+ADDRINT _first_ip
+
The documentation for this class was generated from the following file:
    +
  • call-stack.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCALLSTACK_1_1CallStackManager-members.html b/src/tracer/pintool/pin-3.13/doc/html/classCALLSTACK_1_1CallStackManager-members.html new file mode 100755 index 0000000..ad9f276 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCALLSTACK_1_1CallStackManager-members.html @@ -0,0 +1,105 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
CALLSTACK::CallStackManager Member List
+
+
+This is the complete list of members for CALLSTACK::CallStackManager, including all inherited members. + + + + + + + + + + + + + +
activate() (defined in CALLSTACK::CallStackManager)CALLSTACK::CallStackManager
get_instance() (defined in CALLSTACK::CallStackManager)CALLSTACK::CallStackManager [static]
get_ip_info(ADDRINT ip, CallStackInfo &info) (defined in CALLSTACK::CallStackManager)CALLSTACK::CallStackManager
get_stack(THREADID tid) (defined in CALLSTACK::CallStackManager)CALLSTACK::CallStackManager
NeedContext() (defined in CALLSTACK::CallStackManager)CALLSTACK::CallStackManager
on_call(THREADID tid, CONTEXT *ctxt, ADDRINT ip) (defined in CALLSTACK::CallStackManager)CALLSTACK::CallStackManager
on_function_enter(CALL_STACK_HANDLER handler, const string &func_name, void *v, BOOL use_ctxt) (defined in CALLSTACK::CallStackManager)CALLSTACK::CallStackManager
on_function_exit(CALL_STACK_HANDLER handler, const string &func_name, void *v, BOOL use_ctxt) (defined in CALLSTACK::CallStackManager)CALLSTACK::CallStackManager
on_function_ip_enter(CALL_STACK_HANDLER handler, ADDRINT func_ip, void *v, BOOL use_ctxt) (defined in CALLSTACK::CallStackManager)CALLSTACK::CallStackManager
on_function_ip_exit(CALL_STACK_HANDLER handler, ADDRINT func_ip, void *v, BOOL use_ctxt) (defined in CALLSTACK::CallStackManager)CALLSTACK::CallStackManager
on_ret_fire(THREADID tid, CONTEXT *ctxt, ADDRINT ip) (defined in CALLSTACK::CallStackManager)CALLSTACK::CallStackManager
on_ret_should_fire(THREADID tid) (defined in CALLSTACK::CallStackManager)CALLSTACK::CallStackManager
TargetInteresting(ADDRINT ip) (defined in CALLSTACK::CallStackManager)CALLSTACK::CallStackManager
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCALLSTACK_1_1CallStackManager.html b/src/tracer/pintool/pin-3.13/doc/html/classCALLSTACK_1_1CallStackManager.html new file mode 100755 index 0000000..55d9cb2 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCALLSTACK_1_1CallStackManager.html @@ -0,0 +1,131 @@ + + + + +Pin: CALLSTACK::CallStackManager Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
CALLSTACK::CallStackManager Class Reference
+
+
+ +

List of all members.

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

+Public Member Functions

+CallStack get_stack (THREADID tid)
+void activate ()
+void get_ip_info (ADDRINT ip, CallStackInfo &info)
+void on_function_enter (CALL_STACK_HANDLER handler, const string &func_name, void *v, BOOL use_ctxt)
+void on_function_exit (CALL_STACK_HANDLER handler, const string &func_name, void *v, BOOL use_ctxt)
+void on_function_ip_enter (CALL_STACK_HANDLER handler, ADDRINT func_ip, void *v, BOOL use_ctxt)
+void on_function_ip_exit (CALL_STACK_HANDLER handler, ADDRINT func_ip, void *v, BOOL use_ctxt)
+void on_call (THREADID tid, CONTEXT *ctxt, ADDRINT ip)
+void on_ret_fire (THREADID tid, CONTEXT *ctxt, ADDRINT ip)
+BOOL on_ret_should_fire (THREADID tid)
+BOOL NeedContext ()
+BOOL TargetInteresting (ADDRINT ip)

+Static Public Member Functions

+static CallStackManagerget_instance ()
+
The documentation for this class was generated from the following file:
    +
  • call-stack.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ADDRESS-members.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ADDRESS-members.html new file mode 100755 index 0000000..28a7781 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ADDRESS-members.html @@ -0,0 +1,132 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
CONTROLLER::ALARM_ADDRESS Member List
+
+
+This is the complete list of members for CONTROLLER::ALARM_ADDRESS, including all inherited members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_activate_late_handler (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_address (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_alarm_manager (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_armed (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_global_armed (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_global_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_need_context (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_target_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_thread_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_thread_first_ip (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
_threads_first_ip_vec (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
_tid (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
ActivateLate(IALARM *ialarm, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
ALARM_ADDRESS(const string &address, UINT32 tid, UINT32 count, BOOL need_ctxt, ALARM_MANAGER *manager) (defined in CONTROLLER::ALARM_ADDRESS)CONTROLLER::ALARM_ADDRESS [inline]
Arm() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Arm(THREADID tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
CheckFirstIp(IALARM *ialarm, UINT32 tid, ADDRINT addr) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckFirstIpGlobal(IALARM *ialarm, UINT32 tid, ADDRINT addr) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckTarget(IALARM *ialarm, UINT32 tid, ADDRINT branch_target) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckTargetGlobal(IALARM *ialarm, ADDRINT branch_target) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
Count(IALARM *ialarm, UINT32 tid, UINT32 ninst) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
Disarm(THREADID tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Disarm() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
DisarmGlobalArmed() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
Fire(IALARM *ialarm, CONTEXT *ctxt, VOID *ip, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
GetInstrumentOrder() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
GetLateInstrumentOrder() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
GlobalCount(IALARM *ialarm, UINT32 tid, UINT32 ninst) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
HasGlobalCounter() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
IALARM(UINT32 tid, UINT64 count, BOOL need_ctxt, ALARM_MANAGER *manager) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Insert_LateInstrumentation(IALARM *alarm, INS ins) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_Count(IALARM *alarm, INS ins, UINT32 ninst, IPOINT point=IPOINT_BEFORE) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_FirstIp(IALARM *ialarm, INS ins, IPOINT point) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_Target(IALARM *ialarm, INS ins) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertThenCall_Fire(IALARM *alarm, INS ins, IPOINT point=IPOINT_BEFORE) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
LateFire(IALARM *ialarm, CONTEXT *ctxt, VOID *ip, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
SetCount(UINT64 count) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
ThreadStart(THREADID tid, CONTEXT *ctxt, INT32 flags, VOID *v) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
TraceAddress(TRACE trace, VOID *v) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
UpdateAlarm(ALARM_MANAGER *alarm_manager, const string &icount_str) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline, virtual]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ADDRESS.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ADDRESS.html new file mode 100755 index 0000000..880c427 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ADDRESS.html @@ -0,0 +1,104 @@ + + + + +Pin: CONTROLLER::ALARM_ADDRESS Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
CONTROLLER::ALARM_ADDRESS Class Reference
+
+
+ +

List of all members.

+ + + +

+Public Member Functions

ALARM_ADDRESS (const string &address, UINT32 tid, UINT32 count, BOOL need_ctxt, ALARM_MANAGER *manager)
+
The documentation for this class was generated from the following file:
    +
  • alarms.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__CPUID-members.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__CPUID-members.html new file mode 100755 index 0000000..2980fa1 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__CPUID-members.html @@ -0,0 +1,132 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
CONTROLLER::ALARM_CPUID Member List
+
+
+This is the complete list of members for CONTROLLER::ALARM_CPUID, including all inherited members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_activate_late_handler (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_address (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_alarm_manager (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_armed (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_global_armed (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_global_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_need_context (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_target_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_thread_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_thread_first_ip (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
_threads_first_ip_vec (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
_tid (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
ActivateLate(IALARM *ialarm, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
ALARM_CPUID(const string &val_str, UINT32 tid, UINT32 count, BOOL need_ctxt, ALARM_MANAGER *manager) (defined in CONTROLLER::ALARM_CPUID)CONTROLLER::ALARM_CPUID [inline]
Arm() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Arm(THREADID tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
CheckFirstIp(IALARM *ialarm, UINT32 tid, ADDRINT addr) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckFirstIpGlobal(IALARM *ialarm, UINT32 tid, ADDRINT addr) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckTarget(IALARM *ialarm, UINT32 tid, ADDRINT branch_target) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckTargetGlobal(IALARM *ialarm, ADDRINT branch_target) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
Count(IALARM *ialarm, UINT32 tid, UINT32 ninst) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
Disarm(THREADID tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Disarm() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
DisarmGlobalArmed() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
Fire(IALARM *ialarm, CONTEXT *ctxt, VOID *ip, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
GetInstrumentOrder() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
GetLateInstrumentOrder() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
GlobalCount(IALARM *ialarm, UINT32 tid, UINT32 ninst) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
HasGlobalCounter() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
IALARM(UINT32 tid, UINT64 count, BOOL need_ctxt, ALARM_MANAGER *manager) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Insert_LateInstrumentation(IALARM *alarm, INS ins) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_Count(IALARM *alarm, INS ins, UINT32 ninst, IPOINT point=IPOINT_BEFORE) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_FirstIp(IALARM *ialarm, INS ins, IPOINT point) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_Target(IALARM *ialarm, INS ins) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertThenCall_Fire(IALARM *alarm, INS ins, IPOINT point=IPOINT_BEFORE) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
LateFire(IALARM *ialarm, CONTEXT *ctxt, VOID *ip, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
SetCount(UINT64 count) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
ThreadStart(THREADID tid, CONTEXT *ctxt, INT32 flags, VOID *v) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
TraceAddress(TRACE trace, VOID *v) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
UpdateAlarm(ALARM_MANAGER *alarm_manager, const string &icount_str) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline, virtual]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__CPUID.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__CPUID.html new file mode 100755 index 0000000..bdb7f6b --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__CPUID.html @@ -0,0 +1,104 @@ + + + + +Pin: CONTROLLER::ALARM_CPUID Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
CONTROLLER::ALARM_CPUID Class Reference
+
+
+ +

List of all members.

+ + + +

+Public Member Functions

ALARM_CPUID (const string &val_str, UINT32 tid, UINT32 count, BOOL need_ctxt, ALARM_MANAGER *manager)
+
The documentation for this class was generated from the following file:
    +
  • alarms.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ENTER__FUNC-members.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ENTER__FUNC-members.html new file mode 100755 index 0000000..351a2b0 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ENTER__FUNC-members.html @@ -0,0 +1,132 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
CONTROLLER::ALARM_ENTER_FUNC Member List
+
+
+This is the complete list of members for CONTROLLER::ALARM_ENTER_FUNC, including all inherited members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_activate_late_handler (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_address (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_alarm_manager (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_armed (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_global_armed (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_global_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_need_context (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_target_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_thread_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_thread_first_ip (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
_threads_first_ip_vec (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
_tid (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
ActivateLate(IALARM *ialarm, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
ALARM_ENTER_FUNC(const string &func, UINT32 tid, UINT32 count, BOOL need_ctxt, ALARM_MANAGER *manager) (defined in CONTROLLER::ALARM_ENTER_FUNC)CONTROLLER::ALARM_ENTER_FUNC [inline]
Arm() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Arm(THREADID tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
CheckFirstIp(IALARM *ialarm, UINT32 tid, ADDRINT addr) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckFirstIpGlobal(IALARM *ialarm, UINT32 tid, ADDRINT addr) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckTarget(IALARM *ialarm, UINT32 tid, ADDRINT branch_target) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckTargetGlobal(IALARM *ialarm, ADDRINT branch_target) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
Count(IALARM *ialarm, UINT32 tid, UINT32 ninst) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
Disarm(THREADID tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Disarm() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
DisarmGlobalArmed() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
Fire(IALARM *ialarm, CONTEXT *ctxt, VOID *ip, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
GetInstrumentOrder() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
GetLateInstrumentOrder() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
GlobalCount(IALARM *ialarm, UINT32 tid, UINT32 ninst) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
HasGlobalCounter() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
IALARM(UINT32 tid, UINT64 count, BOOL need_ctxt, ALARM_MANAGER *manager) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Insert_LateInstrumentation(IALARM *alarm, INS ins) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_Count(IALARM *alarm, INS ins, UINT32 ninst, IPOINT point=IPOINT_BEFORE) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_FirstIp(IALARM *ialarm, INS ins, IPOINT point) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_Target(IALARM *ialarm, INS ins) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertThenCall_Fire(IALARM *alarm, INS ins, IPOINT point=IPOINT_BEFORE) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
LateFire(IALARM *ialarm, CONTEXT *ctxt, VOID *ip, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
SetCount(UINT64 count) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
ThreadStart(THREADID tid, CONTEXT *ctxt, INT32 flags, VOID *v) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
TraceAddress(TRACE trace, VOID *v) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
UpdateAlarm(ALARM_MANAGER *alarm_manager, const string &icount_str) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline, virtual]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ENTER__FUNC.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ENTER__FUNC.html new file mode 100755 index 0000000..626f1c8 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ENTER__FUNC.html @@ -0,0 +1,104 @@ + + + + +Pin: CONTROLLER::ALARM_ENTER_FUNC Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
CONTROLLER::ALARM_ENTER_FUNC Class Reference
+
+
+ +

List of all members.

+ + + +

+Public Member Functions

ALARM_ENTER_FUNC (const string &func, UINT32 tid, UINT32 count, BOOL need_ctxt, ALARM_MANAGER *manager)
+
The documentation for this class was generated from the following file:
    +
  • alarms.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__EXIT__FUNC-members.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__EXIT__FUNC-members.html new file mode 100755 index 0000000..fbb224f --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__EXIT__FUNC-members.html @@ -0,0 +1,132 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
CONTROLLER::ALARM_EXIT_FUNC Member List
+
+
+This is the complete list of members for CONTROLLER::ALARM_EXIT_FUNC, including all inherited members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_activate_late_handler (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_address (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_alarm_manager (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_armed (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_global_armed (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_global_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_need_context (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_target_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_thread_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_thread_first_ip (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
_threads_first_ip_vec (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
_tid (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
ActivateLate(IALARM *ialarm, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
ALARM_EXIT_FUNC(const string &func, UINT32 tid, UINT32 count, BOOL need_ctxt, ALARM_MANAGER *manager) (defined in CONTROLLER::ALARM_EXIT_FUNC)CONTROLLER::ALARM_EXIT_FUNC [inline]
Arm() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Arm(THREADID tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
CheckFirstIp(IALARM *ialarm, UINT32 tid, ADDRINT addr) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckFirstIpGlobal(IALARM *ialarm, UINT32 tid, ADDRINT addr) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckTarget(IALARM *ialarm, UINT32 tid, ADDRINT branch_target) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckTargetGlobal(IALARM *ialarm, ADDRINT branch_target) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
Count(IALARM *ialarm, UINT32 tid, UINT32 ninst) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
Disarm(THREADID tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Disarm() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
DisarmGlobalArmed() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
Fire(IALARM *ialarm, CONTEXT *ctxt, VOID *ip, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
GetInstrumentOrder() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
GetLateInstrumentOrder() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
GlobalCount(IALARM *ialarm, UINT32 tid, UINT32 ninst) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
HasGlobalCounter() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
IALARM(UINT32 tid, UINT64 count, BOOL need_ctxt, ALARM_MANAGER *manager) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Insert_LateInstrumentation(IALARM *alarm, INS ins) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_Count(IALARM *alarm, INS ins, UINT32 ninst, IPOINT point=IPOINT_BEFORE) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_FirstIp(IALARM *ialarm, INS ins, IPOINT point) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_Target(IALARM *ialarm, INS ins) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertThenCall_Fire(IALARM *alarm, INS ins, IPOINT point=IPOINT_BEFORE) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
LateFire(IALARM *ialarm, CONTEXT *ctxt, VOID *ip, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
SetCount(UINT64 count) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
ThreadStart(THREADID tid, CONTEXT *ctxt, INT32 flags, VOID *v) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
TraceAddress(TRACE trace, VOID *v) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
UpdateAlarm(ALARM_MANAGER *alarm_manager, const string &icount_str) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline, virtual]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__EXIT__FUNC.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__EXIT__FUNC.html new file mode 100755 index 0000000..8445ecd --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__EXIT__FUNC.html @@ -0,0 +1,104 @@ + + + + +Pin: CONTROLLER::ALARM_EXIT_FUNC Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
CONTROLLER::ALARM_EXIT_FUNC Class Reference
+
+
+ +

List of all members.

+ + + +

+Public Member Functions

ALARM_EXIT_FUNC (const string &func, UINT32 tid, UINT32 count, BOOL need_ctxt, ALARM_MANAGER *manager)
+
The documentation for this class was generated from the following file:
    +
  • alarms.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ICOUNT-members.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ICOUNT-members.html new file mode 100755 index 0000000..ce2eae3 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ICOUNT-members.html @@ -0,0 +1,132 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
CONTROLLER::ALARM_ICOUNT Member List
+
+
+This is the complete list of members for CONTROLLER::ALARM_ICOUNT, including all inherited members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_activate_late_handler (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_address (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_alarm_manager (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_armed (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_global_armed (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_global_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_need_context (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_target_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_thread_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_thread_first_ip (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
_threads_first_ip_vec (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
_tid (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
ActivateLate(IALARM *ialarm, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
ALARM_ICOUNT(const string &icount_str, UINT32 tid, UINT32 count, BOOL need_ctxt, ALARM_MANAGER *manager) (defined in CONTROLLER::ALARM_ICOUNT)CONTROLLER::ALARM_ICOUNT [inline]
Arm() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Arm(THREADID tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
CheckFirstIp(IALARM *ialarm, UINT32 tid, ADDRINT addr) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckFirstIpGlobal(IALARM *ialarm, UINT32 tid, ADDRINT addr) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckTarget(IALARM *ialarm, UINT32 tid, ADDRINT branch_target) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckTargetGlobal(IALARM *ialarm, ADDRINT branch_target) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
Count(IALARM *ialarm, UINT32 tid, UINT32 ninst) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
Disarm(THREADID tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Disarm() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
DisarmGlobalArmed() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
Fire(IALARM *ialarm, CONTEXT *ctxt, VOID *ip, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
GetInstrumentOrder() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
GetLateInstrumentOrder() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
GlobalCount(IALARM *ialarm, UINT32 tid, UINT32 ninst) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
HasGlobalCounter() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
IALARM(UINT32 tid, UINT64 count, BOOL need_ctxt, ALARM_MANAGER *manager) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Insert_LateInstrumentation(IALARM *alarm, INS ins) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_Count(IALARM *alarm, INS ins, UINT32 ninst, IPOINT point=IPOINT_BEFORE) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_FirstIp(IALARM *ialarm, INS ins, IPOINT point) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_Target(IALARM *ialarm, INS ins) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertThenCall_Fire(IALARM *alarm, INS ins, IPOINT point=IPOINT_BEFORE) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
LateFire(IALARM *ialarm, CONTEXT *ctxt, VOID *ip, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
SetCount(UINT64 count) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
ThreadStart(THREADID tid, CONTEXT *ctxt, INT32 flags, VOID *v) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
TraceAddress(TRACE trace, VOID *v) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
UpdateAlarm(ALARM_MANAGER *alarm_manager, const string &icount_str) (defined in CONTROLLER::ALARM_ICOUNT)CONTROLLER::ALARM_ICOUNT [inline, virtual]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ICOUNT.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ICOUNT.html new file mode 100755 index 0000000..e12005a --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ICOUNT.html @@ -0,0 +1,106 @@ + + + + +Pin: CONTROLLER::ALARM_ICOUNT Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
CONTROLLER::ALARM_ICOUNT Class Reference
+
+
+ +

List of all members.

+ + + + +

+Public Member Functions

ALARM_ICOUNT (const string &icount_str, UINT32 tid, UINT32 count, BOOL need_ctxt, ALARM_MANAGER *manager)
+VOID UpdateAlarm (ALARM_MANAGER *alarm_manager, const string &icount_str)
+
The documentation for this class was generated from the following file:
    +
  • alarms.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__IMAGE-members.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__IMAGE-members.html new file mode 100755 index 0000000..1f6a322 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__IMAGE-members.html @@ -0,0 +1,132 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
CONTROLLER::ALARM_IMAGE Member List
+
+
+This is the complete list of members for CONTROLLER::ALARM_IMAGE, including all inherited members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_activate_late_handler (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_address (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_alarm_manager (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_armed (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_global_armed (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_global_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_need_context (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_target_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_thread_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_thread_first_ip (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
_threads_first_ip_vec (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
_tid (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
ActivateLate(IALARM *ialarm, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
ALARM_IMAGE(const string &image, const string &offset, UINT32 tid, UINT32 count, BOOL need_ctxt, ALARM_MANAGER *manager) (defined in CONTROLLER::ALARM_IMAGE)CONTROLLER::ALARM_IMAGE [inline]
Arm() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Arm(THREADID tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
CheckFirstIp(IALARM *ialarm, UINT32 tid, ADDRINT addr) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckFirstIpGlobal(IALARM *ialarm, UINT32 tid, ADDRINT addr) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckTarget(IALARM *ialarm, UINT32 tid, ADDRINT branch_target) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckTargetGlobal(IALARM *ialarm, ADDRINT branch_target) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
Count(IALARM *ialarm, UINT32 tid, UINT32 ninst) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
Disarm(THREADID tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Disarm() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
DisarmGlobalArmed() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
Fire(IALARM *ialarm, CONTEXT *ctxt, VOID *ip, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
GetInstrumentOrder() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
GetLateInstrumentOrder() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
GlobalCount(IALARM *ialarm, UINT32 tid, UINT32 ninst) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
HasGlobalCounter() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
IALARM(UINT32 tid, UINT64 count, BOOL need_ctxt, ALARM_MANAGER *manager) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Insert_LateInstrumentation(IALARM *alarm, INS ins) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_Count(IALARM *alarm, INS ins, UINT32 ninst, IPOINT point=IPOINT_BEFORE) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_FirstIp(IALARM *ialarm, INS ins, IPOINT point) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_Target(IALARM *ialarm, INS ins) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertThenCall_Fire(IALARM *alarm, INS ins, IPOINT point=IPOINT_BEFORE) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
LateFire(IALARM *ialarm, CONTEXT *ctxt, VOID *ip, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
SetCount(UINT64 count) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
ThreadStart(THREADID tid, CONTEXT *ctxt, INT32 flags, VOID *v) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
TraceAddress(TRACE trace, VOID *v) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
UpdateAlarm(ALARM_MANAGER *alarm_manager, const string &icount_str) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline, virtual]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__IMAGE.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__IMAGE.html new file mode 100755 index 0000000..9ec18e4 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__IMAGE.html @@ -0,0 +1,104 @@ + + + + +Pin: CONTROLLER::ALARM_IMAGE Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
CONTROLLER::ALARM_IMAGE Class Reference
+
+
+ +

List of all members.

+ + + +

+Public Member Functions

ALARM_IMAGE (const string &image, const string &offset, UINT32 tid, UINT32 count, BOOL need_ctxt, ALARM_MANAGER *manager)
+
The documentation for this class was generated from the following file:
    +
  • alarms.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__INT3-members.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__INT3-members.html new file mode 100755 index 0000000..79dfa3b --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__INT3-members.html @@ -0,0 +1,132 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
CONTROLLER::ALARM_INT3 Member List
+
+
+This is the complete list of members for CONTROLLER::ALARM_INT3, including all inherited members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_activate_late_handler (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_address (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_alarm_manager (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_armed (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_global_armed (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_global_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_need_context (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_target_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_thread_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_thread_first_ip (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
_threads_first_ip_vec (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
_tid (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
ActivateLate(IALARM *ialarm, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
ALARM_INT3(const string &icount_str, UINT32 tid, UINT32 count, BOOL need_ctxt, ALARM_MANAGER *manager) (defined in CONTROLLER::ALARM_INT3)CONTROLLER::ALARM_INT3 [inline]
Arm() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Arm(THREADID tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
CheckFirstIp(IALARM *ialarm, UINT32 tid, ADDRINT addr) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckFirstIpGlobal(IALARM *ialarm, UINT32 tid, ADDRINT addr) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckTarget(IALARM *ialarm, UINT32 tid, ADDRINT branch_target) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckTargetGlobal(IALARM *ialarm, ADDRINT branch_target) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
Count(IALARM *ialarm, UINT32 tid, UINT32 ninst) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
Disarm(THREADID tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Disarm() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
DisarmGlobalArmed() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
Fire(IALARM *ialarm, CONTEXT *ctxt, VOID *ip, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
GetInstrumentOrder() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
GetLateInstrumentOrder() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
GlobalCount(IALARM *ialarm, UINT32 tid, UINT32 ninst) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
HasGlobalCounter() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
IALARM(UINT32 tid, UINT64 count, BOOL need_ctxt, ALARM_MANAGER *manager) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Insert_LateInstrumentation(IALARM *alarm, INS ins) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_Count(IALARM *alarm, INS ins, UINT32 ninst, IPOINT point=IPOINT_BEFORE) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_FirstIp(IALARM *ialarm, INS ins, IPOINT point) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_Target(IALARM *ialarm, INS ins) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertThenCall_Fire(IALARM *alarm, INS ins, IPOINT point=IPOINT_BEFORE) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
LateFire(IALARM *ialarm, CONTEXT *ctxt, VOID *ip, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
SetCount(UINT64 count) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
ThreadStart(THREADID tid, CONTEXT *ctxt, INT32 flags, VOID *v) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
TraceAddress(TRACE trace, VOID *v) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
UpdateAlarm(ALARM_MANAGER *alarm_manager, const string &icount_str) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline, virtual]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__INT3.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__INT3.html new file mode 100755 index 0000000..8289ae8 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__INT3.html @@ -0,0 +1,104 @@ + + + + +Pin: CONTROLLER::ALARM_INT3 Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
CONTROLLER::ALARM_INT3 Class Reference
+
+
+ +

List of all members.

+ + + +

+Public Member Functions

ALARM_INT3 (const string &icount_str, UINT32 tid, UINT32 count, BOOL need_ctxt, ALARM_MANAGER *manager)
+
The documentation for this class was generated from the following file:
    +
  • alarms.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__INTERACTIVE-members.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__INTERACTIVE-members.html new file mode 100755 index 0000000..4e5dd3c --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__INTERACTIVE-members.html @@ -0,0 +1,133 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
CONTROLLER::ALARM_INTERACTIVE Member List
+
+
+This is the complete list of members for CONTROLLER::ALARM_INTERACTIVE, including all inherited members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_activate_late_handler (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_address (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_alarm_manager (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_armed (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_global_armed (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_global_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_need_context (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_target_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_thread_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_thread_first_ip (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
_threads_first_ip_vec (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
_tid (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
ActivateLate(IALARM *ialarm, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
ALARM_INTERACTIVE(UINT32 tid, BOOL need_ctxt, ALARM_MANAGER *manager) (defined in CONTROLLER::ALARM_INTERACTIVE)CONTROLLER::ALARM_INTERACTIVE [inline]
Arm() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Arm(THREADID tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
CheckFirstIp(IALARM *ialarm, UINT32 tid, ADDRINT addr) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckFirstIpGlobal(IALARM *ialarm, UINT32 tid, ADDRINT addr) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckTarget(IALARM *ialarm, UINT32 tid, ADDRINT branch_target) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckTargetGlobal(IALARM *ialarm, ADDRINT branch_target) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
Count(IALARM *ialarm, UINT32 tid, UINT32 ninst) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
Disarm(THREADID tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Disarm() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
DisarmGlobalArmed() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
Fire(IALARM *ialarm, CONTEXT *ctxt, VOID *ip, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
GetInstrumentOrder() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
GetLateInstrumentOrder() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
GetListener() (defined in CONTROLLER::ALARM_INTERACTIVE)CONTROLLER::ALARM_INTERACTIVE [inline]
GlobalCount(IALARM *ialarm, UINT32 tid, UINT32 ninst) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
HasGlobalCounter() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
IALARM(UINT32 tid, UINT64 count, BOOL need_ctxt, ALARM_MANAGER *manager) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Insert_LateInstrumentation(IALARM *alarm, INS ins) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_Count(IALARM *alarm, INS ins, UINT32 ninst, IPOINT point=IPOINT_BEFORE) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_FirstIp(IALARM *ialarm, INS ins, IPOINT point) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_Target(IALARM *ialarm, INS ins) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertThenCall_Fire(IALARM *alarm, INS ins, IPOINT point=IPOINT_BEFORE) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
LateFire(IALARM *ialarm, CONTEXT *ctxt, VOID *ip, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
SetCount(UINT64 count) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
ThreadStart(THREADID tid, CONTEXT *ctxt, INT32 flags, VOID *v) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
TraceAddress(TRACE trace, VOID *v) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
UpdateAlarm(ALARM_MANAGER *alarm_manager, const string &icount_str) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline, virtual]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__INTERACTIVE.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__INTERACTIVE.html new file mode 100755 index 0000000..c690813 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__INTERACTIVE.html @@ -0,0 +1,106 @@ + + + + +Pin: CONTROLLER::ALARM_INTERACTIVE Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
CONTROLLER::ALARM_INTERACTIVE Class Reference
+
+
+ +

List of all members.

+ + + + +

+Public Member Functions

ALARM_INTERACTIVE (UINT32 tid, BOOL need_ctxt, ALARM_MANAGER *manager)
+INTERACTIVE_LISTENERGetListener ()
+
The documentation for this class was generated from the following file:
    +
  • alarms.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ISA__CATEGORY-members.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ISA__CATEGORY-members.html new file mode 100755 index 0000000..cb73698 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ISA__CATEGORY-members.html @@ -0,0 +1,132 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
CONTROLLER::ALARM_ISA_CATEGORY Member List
+
+
+This is the complete list of members for CONTROLLER::ALARM_ISA_CATEGORY, including all inherited members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_activate_late_handler (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_address (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_alarm_manager (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_armed (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_global_armed (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_global_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_need_context (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_target_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_thread_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_thread_first_ip (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
_threads_first_ip_vec (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
_tid (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
ActivateLate(IALARM *ialarm, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
ALARM_ISA_CATEGORY(const string &isa_ctg, UINT32 tid, UINT32 count, BOOL need_ctxt, ALARM_MANAGER *manager) (defined in CONTROLLER::ALARM_ISA_CATEGORY)CONTROLLER::ALARM_ISA_CATEGORY [inline]
Arm() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Arm(THREADID tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
CheckFirstIp(IALARM *ialarm, UINT32 tid, ADDRINT addr) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckFirstIpGlobal(IALARM *ialarm, UINT32 tid, ADDRINT addr) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckTarget(IALARM *ialarm, UINT32 tid, ADDRINT branch_target) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckTargetGlobal(IALARM *ialarm, ADDRINT branch_target) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
Count(IALARM *ialarm, UINT32 tid, UINT32 ninst) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
Disarm(THREADID tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Disarm() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
DisarmGlobalArmed() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
Fire(IALARM *ialarm, CONTEXT *ctxt, VOID *ip, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
GetInstrumentOrder() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
GetLateInstrumentOrder() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
GlobalCount(IALARM *ialarm, UINT32 tid, UINT32 ninst) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
HasGlobalCounter() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
IALARM(UINT32 tid, UINT64 count, BOOL need_ctxt, ALARM_MANAGER *manager) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Insert_LateInstrumentation(IALARM *alarm, INS ins) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_Count(IALARM *alarm, INS ins, UINT32 ninst, IPOINT point=IPOINT_BEFORE) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_FirstIp(IALARM *ialarm, INS ins, IPOINT point) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_Target(IALARM *ialarm, INS ins) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertThenCall_Fire(IALARM *alarm, INS ins, IPOINT point=IPOINT_BEFORE) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
LateFire(IALARM *ialarm, CONTEXT *ctxt, VOID *ip, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
SetCount(UINT64 count) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
ThreadStart(THREADID tid, CONTEXT *ctxt, INT32 flags, VOID *v) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
TraceAddress(TRACE trace, VOID *v) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
UpdateAlarm(ALARM_MANAGER *alarm_manager, const string &icount_str) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline, virtual]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ISA__CATEGORY.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ISA__CATEGORY.html new file mode 100755 index 0000000..14051b9 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ISA__CATEGORY.html @@ -0,0 +1,104 @@ + + + + +Pin: CONTROLLER::ALARM_ISA_CATEGORY Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
CONTROLLER::ALARM_ISA_CATEGORY Class Reference
+
+
+ +

List of all members.

+ + + +

+Public Member Functions

ALARM_ISA_CATEGORY (const string &isa_ctg, UINT32 tid, UINT32 count, BOOL need_ctxt, ALARM_MANAGER *manager)
+
The documentation for this class was generated from the following file:
    +
  • alarms.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ISA__EXTENSION-members.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ISA__EXTENSION-members.html new file mode 100755 index 0000000..3d00418 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ISA__EXTENSION-members.html @@ -0,0 +1,132 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
CONTROLLER::ALARM_ISA_EXTENSION Member List
+
+
+This is the complete list of members for CONTROLLER::ALARM_ISA_EXTENSION, including all inherited members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_activate_late_handler (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_address (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_alarm_manager (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_armed (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_global_armed (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_global_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_need_context (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_target_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_thread_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_thread_first_ip (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
_threads_first_ip_vec (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
_tid (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
ActivateLate(IALARM *ialarm, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
ALARM_ISA_EXTENSION(const string &isa_ext, UINT32 tid, UINT32 count, BOOL need_ctxt, ALARM_MANAGER *manager) (defined in CONTROLLER::ALARM_ISA_EXTENSION)CONTROLLER::ALARM_ISA_EXTENSION [inline]
Arm() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Arm(THREADID tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
CheckFirstIp(IALARM *ialarm, UINT32 tid, ADDRINT addr) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckFirstIpGlobal(IALARM *ialarm, UINT32 tid, ADDRINT addr) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckTarget(IALARM *ialarm, UINT32 tid, ADDRINT branch_target) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckTargetGlobal(IALARM *ialarm, ADDRINT branch_target) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
Count(IALARM *ialarm, UINT32 tid, UINT32 ninst) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
Disarm(THREADID tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Disarm() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
DisarmGlobalArmed() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
Fire(IALARM *ialarm, CONTEXT *ctxt, VOID *ip, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
GetInstrumentOrder() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
GetLateInstrumentOrder() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
GlobalCount(IALARM *ialarm, UINT32 tid, UINT32 ninst) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
HasGlobalCounter() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
IALARM(UINT32 tid, UINT64 count, BOOL need_ctxt, ALARM_MANAGER *manager) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Insert_LateInstrumentation(IALARM *alarm, INS ins) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_Count(IALARM *alarm, INS ins, UINT32 ninst, IPOINT point=IPOINT_BEFORE) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_FirstIp(IALARM *ialarm, INS ins, IPOINT point) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_Target(IALARM *ialarm, INS ins) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertThenCall_Fire(IALARM *alarm, INS ins, IPOINT point=IPOINT_BEFORE) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
LateFire(IALARM *ialarm, CONTEXT *ctxt, VOID *ip, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
SetCount(UINT64 count) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
ThreadStart(THREADID tid, CONTEXT *ctxt, INT32 flags, VOID *v) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
TraceAddress(TRACE trace, VOID *v) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
UpdateAlarm(ALARM_MANAGER *alarm_manager, const string &icount_str) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline, virtual]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ISA__EXTENSION.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ISA__EXTENSION.html new file mode 100755 index 0000000..5144780 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ISA__EXTENSION.html @@ -0,0 +1,104 @@ + + + + +Pin: CONTROLLER::ALARM_ISA_EXTENSION Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
CONTROLLER::ALARM_ISA_EXTENSION Class Reference
+
+
+ +

List of all members.

+ + + +

+Public Member Functions

ALARM_ISA_EXTENSION (const string &isa_ext, UINT32 tid, UINT32 count, BOOL need_ctxt, ALARM_MANAGER *manager)
+
The documentation for this class was generated from the following file:
    +
  • alarms.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ITEXT-members.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ITEXT-members.html new file mode 100755 index 0000000..f2b54d1 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ITEXT-members.html @@ -0,0 +1,132 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
CONTROLLER::ALARM_ITEXT Member List
+
+
+This is the complete list of members for CONTROLLER::ALARM_ITEXT, including all inherited members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_activate_late_handler (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_address (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_alarm_manager (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_armed (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_global_armed (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_global_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_need_context (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_target_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_thread_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_thread_first_ip (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
_threads_first_ip_vec (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
_tid (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
ActivateLate(IALARM *ialarm, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
ALARM_ITEXT(const string &itext, UINT32 tid, UINT32 count, BOOL need_ctxt, ALARM_MANAGER *manager) (defined in CONTROLLER::ALARM_ITEXT)CONTROLLER::ALARM_ITEXT [inline]
Arm() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Arm(THREADID tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
CheckFirstIp(IALARM *ialarm, UINT32 tid, ADDRINT addr) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckFirstIpGlobal(IALARM *ialarm, UINT32 tid, ADDRINT addr) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckTarget(IALARM *ialarm, UINT32 tid, ADDRINT branch_target) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckTargetGlobal(IALARM *ialarm, ADDRINT branch_target) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
Count(IALARM *ialarm, UINT32 tid, UINT32 ninst) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
Disarm(THREADID tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Disarm() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
DisarmGlobalArmed() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
Fire(IALARM *ialarm, CONTEXT *ctxt, VOID *ip, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
GetInstrumentOrder() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
GetLateInstrumentOrder() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
GlobalCount(IALARM *ialarm, UINT32 tid, UINT32 ninst) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
HasGlobalCounter() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
IALARM(UINT32 tid, UINT64 count, BOOL need_ctxt, ALARM_MANAGER *manager) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Insert_LateInstrumentation(IALARM *alarm, INS ins) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_Count(IALARM *alarm, INS ins, UINT32 ninst, IPOINT point=IPOINT_BEFORE) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_FirstIp(IALARM *ialarm, INS ins, IPOINT point) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_Target(IALARM *ialarm, INS ins) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertThenCall_Fire(IALARM *alarm, INS ins, IPOINT point=IPOINT_BEFORE) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
LateFire(IALARM *ialarm, CONTEXT *ctxt, VOID *ip, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
SetCount(UINT64 count) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
ThreadStart(THREADID tid, CONTEXT *ctxt, INT32 flags, VOID *v) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
TraceAddress(TRACE trace, VOID *v) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
UpdateAlarm(ALARM_MANAGER *alarm_manager, const string &icount_str) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline, virtual]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ITEXT.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ITEXT.html new file mode 100755 index 0000000..c928813 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__ITEXT.html @@ -0,0 +1,104 @@ + + + + +Pin: CONTROLLER::ALARM_ITEXT Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
CONTROLLER::ALARM_ITEXT Class Reference
+
+
+ +

List of all members.

+ + + +

+Public Member Functions

ALARM_ITEXT (const string &itext, UINT32 tid, UINT32 count, BOOL need_ctxt, ALARM_MANAGER *manager)
+
The documentation for this class was generated from the following file:
    +
  • alarms.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__MAGIC-members.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__MAGIC-members.html new file mode 100755 index 0000000..f0e4f34 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__MAGIC-members.html @@ -0,0 +1,132 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
CONTROLLER::ALARM_MAGIC Member List
+
+
+This is the complete list of members for CONTROLLER::ALARM_MAGIC, including all inherited members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_activate_late_handler (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_address (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_alarm_manager (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_armed (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_global_armed (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_global_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_need_context (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_target_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_thread_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_thread_first_ip (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
_threads_first_ip_vec (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
_tid (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
ActivateLate(IALARM *ialarm, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
ALARM_MAGIC(const string &val_str, UINT32 tid, UINT32 count, BOOL need_ctxt, ALARM_MANAGER *manager) (defined in CONTROLLER::ALARM_MAGIC)CONTROLLER::ALARM_MAGIC
Arm() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Arm(THREADID tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
CheckFirstIp(IALARM *ialarm, UINT32 tid, ADDRINT addr) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckFirstIpGlobal(IALARM *ialarm, UINT32 tid, ADDRINT addr) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckTarget(IALARM *ialarm, UINT32 tid, ADDRINT branch_target) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckTargetGlobal(IALARM *ialarm, ADDRINT branch_target) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
Count(IALARM *ialarm, UINT32 tid, UINT32 ninst) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
Disarm(THREADID tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Disarm() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
DisarmGlobalArmed() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
Fire(IALARM *ialarm, CONTEXT *ctxt, VOID *ip, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
GetInstrumentOrder() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
GetLateInstrumentOrder() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
GlobalCount(IALARM *ialarm, UINT32 tid, UINT32 ninst) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
HasGlobalCounter() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
IALARM(UINT32 tid, UINT64 count, BOOL need_ctxt, ALARM_MANAGER *manager) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Insert_LateInstrumentation(IALARM *alarm, INS ins) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_Count(IALARM *alarm, INS ins, UINT32 ninst, IPOINT point=IPOINT_BEFORE) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_FirstIp(IALARM *ialarm, INS ins, IPOINT point) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_Target(IALARM *ialarm, INS ins) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertThenCall_Fire(IALARM *alarm, INS ins, IPOINT point=IPOINT_BEFORE) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
LateFire(IALARM *ialarm, CONTEXT *ctxt, VOID *ip, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
SetCount(UINT64 count) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
ThreadStart(THREADID tid, CONTEXT *ctxt, INT32 flags, VOID *v) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
TraceAddress(TRACE trace, VOID *v) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
UpdateAlarm(ALARM_MANAGER *alarm_manager, const string &icount_str) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline, virtual]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__MAGIC.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__MAGIC.html new file mode 100755 index 0000000..122228b --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__MAGIC.html @@ -0,0 +1,104 @@ + + + + +Pin: CONTROLLER::ALARM_MAGIC Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
CONTROLLER::ALARM_MAGIC Class Reference
+
+
+ +

List of all members.

+ + + +

+Public Member Functions

ALARM_MAGIC (const string &val_str, UINT32 tid, UINT32 count, BOOL need_ctxt, ALARM_MANAGER *manager)
+
The documentation for this class was generated from the following file:
    +
  • alarms.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__MANAGER-members.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__MANAGER-members.html new file mode 100755 index 0000000..4efae14 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__MANAGER-members.html @@ -0,0 +1,112 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
CONTROLLER::ALARM_MANAGER Member List
+
+
+This is the complete list of members for CONTROLLER::ALARM_MANAGER, including all inherited members. + + + + + + + + + + + + + + + + + + + + +
Activate() (defined in CONTROLLER::ALARM_MANAGER)CONTROLLER::ALARM_MANAGER
ALARM_MANAGER(const string &alarm_str, CONTROL_CHAIN *control_chain, UINT32 id, BOOL late_handler, BOOL vector_alarm, UINT32 vector_index) (defined in CONTROLLER::ALARM_MANAGER)CONTROLLER::ALARM_MANAGER
ArmAll() (defined in CONTROLLER::ALARM_MANAGER)CONTROLLER::ALARM_MANAGER [inline]
ArmNext() (defined in CONTROLLER::ALARM_MANAGER)CONTROLLER::ALARM_MANAGER [inline]
ArmTID(THREADID tid) (defined in CONTROLLER::ALARM_MANAGER)CONTROLLER::ALARM_MANAGER [inline]
Fire(CONTEXT *ctx, VOID *ip, THREADID tid) (defined in CONTROLLER::ALARM_MANAGER)CONTROLLER::ALARM_MANAGER
GetAlarmTypeFromManager() (defined in CONTROLLER::ALARM_MANAGER)CONTROLLER::ALARM_MANAGER [inline]
GetEventType() (defined in CONTROLLER::ALARM_MANAGER)CONTROLLER::ALARM_MANAGER [inline]
GetInsOrder() (defined in CONTROLLER::ALARM_MANAGER)CONTROLLER::ALARM_MANAGER [inline]
GetLateInsOrder() (defined in CONTROLLER::ALARM_MANAGER)CONTROLLER::ALARM_MANAGER [inline]
GetListener() (defined in CONTROLLER::ALARM_MANAGER)CONTROLLER::ALARM_MANAGER [inline]
GetTid() (defined in CONTROLLER::ALARM_MANAGER)CONTROLLER::ALARM_MANAGER [inline]
HasGlobalCounter() (defined in CONTROLLER::ALARM_MANAGER)CONTROLLER::ALARM_MANAGER [inline]
HasLateHandler() (defined in CONTROLLER::ALARM_MANAGER)CONTROLLER::ALARM_MANAGER [inline]
HasStartEvent() (defined in CONTROLLER::ALARM_MANAGER)CONTROLLER::ALARM_MANAGER
IsUniformDone() (defined in CONTROLLER::ALARM_MANAGER)CONTROLLER::ALARM_MANAGER
IsVectorAlarm() (defined in CONTROLLER::ALARM_MANAGER)CONTROLLER::ALARM_MANAGER [inline]
LateFire(CONTEXT *ctx, VOID *ip, THREADID tid) (defined in CONTROLLER::ALARM_MANAGER)CONTROLLER::ALARM_MANAGER
Print() (defined in CONTROLLER::ALARM_MANAGER)CONTROLLER::ALARM_MANAGER
SetLateHandler() (defined in CONTROLLER::ALARM_MANAGER)CONTROLLER::ALARM_MANAGER [inline]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__MANAGER.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__MANAGER.html new file mode 100755 index 0000000..ab4a6cf --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__MANAGER.html @@ -0,0 +1,142 @@ + + + + +Pin: CONTROLLER::ALARM_MANAGER Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
CONTROLLER::ALARM_MANAGER Class Reference
+
+
+ +

List of all members.

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

+Public Member Functions

ALARM_MANAGER (const string &alarm_str, CONTROL_CHAIN *control_chain, UINT32 id, BOOL late_handler, BOOL vector_alarm, UINT32 vector_index)
+VOID ArmAll ()
+VOID Activate ()
+VOID ArmTID (THREADID tid)
+BOOL HasStartEvent ()
+VOID Fire (CONTEXT *ctx, VOID *ip, THREADID tid)
+VOID LateFire (CONTEXT *ctx, VOID *ip, THREADID tid)
+BOOL ArmNext ()
+THREADID GetTid ()
+BOOL IsUniformDone ()
+VOID Print ()
+UINT32 GetInsOrder ()
+UINT32 GetLateInsOrder ()
+INTERACTIVE_LISTENERGetListener ()
+ALARM_TYPE GetAlarmTypeFromManager ()
+BOOL HasLateHandler ()
+VOID SetLateHandler ()
+EVENT_TYPE GetEventType ()
+BOOL HasGlobalCounter ()
+BOOL IsVectorAlarm ()
+
The documentation for this class was generated from the following file:
    +
  • alarm_manager.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__PCONTROL-members.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__PCONTROL-members.html new file mode 100755 index 0000000..5660873 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__PCONTROL-members.html @@ -0,0 +1,132 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
CONTROLLER::ALARM_PCONTROL Member List
+
+
+This is the complete list of members for CONTROLLER::ALARM_PCONTROL, including all inherited members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_activate_late_handler (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_address (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_alarm_manager (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_armed (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_global_armed (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_global_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_need_context (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_target_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_thread_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_thread_first_ip (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
_threads_first_ip_vec (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
_tid (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
ActivateLate(IALARM *ialarm, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
ALARM_PCONTROL(const string &region, UINT32 tid, UINT32 count, BOOL need_ctxt, ALARM_MANAGER *manager) (defined in CONTROLLER::ALARM_PCONTROL)CONTROLLER::ALARM_PCONTROL [inline]
Arm() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Arm(THREADID tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
CheckFirstIp(IALARM *ialarm, UINT32 tid, ADDRINT addr) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckFirstIpGlobal(IALARM *ialarm, UINT32 tid, ADDRINT addr) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckTarget(IALARM *ialarm, UINT32 tid, ADDRINT branch_target) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckTargetGlobal(IALARM *ialarm, ADDRINT branch_target) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
Count(IALARM *ialarm, UINT32 tid, UINT32 ninst) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
Disarm(THREADID tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Disarm() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
DisarmGlobalArmed() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
Fire(IALARM *ialarm, CONTEXT *ctxt, VOID *ip, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
GetInstrumentOrder() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
GetLateInstrumentOrder() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
GlobalCount(IALARM *ialarm, UINT32 tid, UINT32 ninst) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
HasGlobalCounter() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
IALARM(UINT32 tid, UINT64 count, BOOL need_ctxt, ALARM_MANAGER *manager) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Insert_LateInstrumentation(IALARM *alarm, INS ins) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_Count(IALARM *alarm, INS ins, UINT32 ninst, IPOINT point=IPOINT_BEFORE) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_FirstIp(IALARM *ialarm, INS ins, IPOINT point) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_Target(IALARM *ialarm, INS ins) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertThenCall_Fire(IALARM *alarm, INS ins, IPOINT point=IPOINT_BEFORE) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
LateFire(IALARM *ialarm, CONTEXT *ctxt, VOID *ip, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
SetCount(UINT64 count) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
ThreadStart(THREADID tid, CONTEXT *ctxt, INT32 flags, VOID *v) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
TraceAddress(TRACE trace, VOID *v) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
UpdateAlarm(ALARM_MANAGER *alarm_manager, const string &icount_str) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline, virtual]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__PCONTROL.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__PCONTROL.html new file mode 100755 index 0000000..4ba237f --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__PCONTROL.html @@ -0,0 +1,104 @@ + + + + +Pin: CONTROLLER::ALARM_PCONTROL Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
CONTROLLER::ALARM_PCONTROL Class Reference
+
+
+ +

List of all members.

+ + + +

+Public Member Functions

ALARM_PCONTROL (const string &region, UINT32 tid, UINT32 count, BOOL need_ctxt, ALARM_MANAGER *manager)
+
The documentation for this class was generated from the following file:
    +
  • alarms.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__SIGNAL-members.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__SIGNAL-members.html new file mode 100755 index 0000000..0ff758e --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__SIGNAL-members.html @@ -0,0 +1,132 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
CONTROLLER::ALARM_SIGNAL Member List
+
+
+This is the complete list of members for CONTROLLER::ALARM_SIGNAL, including all inherited members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_activate_late_handler (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_address (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_alarm_manager (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_armed (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_global_armed (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_global_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_need_context (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_target_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_thread_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_thread_first_ip (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
_threads_first_ip_vec (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
_tid (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
ActivateLate(IALARM *ialarm, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
ALARM_SIGNAL(const string &signal_str, UINT32 tid, UINT32 count, BOOL need_ctxt, ALARM_MANAGER *manager) (defined in CONTROLLER::ALARM_SIGNAL)CONTROLLER::ALARM_SIGNAL [inline]
Arm() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Arm(THREADID tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
CheckFirstIp(IALARM *ialarm, UINT32 tid, ADDRINT addr) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckFirstIpGlobal(IALARM *ialarm, UINT32 tid, ADDRINT addr) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckTarget(IALARM *ialarm, UINT32 tid, ADDRINT branch_target) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckTargetGlobal(IALARM *ialarm, ADDRINT branch_target) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
Count(IALARM *ialarm, UINT32 tid, UINT32 ninst) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
Disarm(THREADID tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Disarm() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
DisarmGlobalArmed() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
Fire(IALARM *ialarm, CONTEXT *ctxt, VOID *ip, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
GetInstrumentOrder() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
GetLateInstrumentOrder() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
GlobalCount(IALARM *ialarm, UINT32 tid, UINT32 ninst) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
HasGlobalCounter() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
IALARM(UINT32 tid, UINT64 count, BOOL need_ctxt, ALARM_MANAGER *manager) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Insert_LateInstrumentation(IALARM *alarm, INS ins) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_Count(IALARM *alarm, INS ins, UINT32 ninst, IPOINT point=IPOINT_BEFORE) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_FirstIp(IALARM *ialarm, INS ins, IPOINT point) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_Target(IALARM *ialarm, INS ins) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertThenCall_Fire(IALARM *alarm, INS ins, IPOINT point=IPOINT_BEFORE) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
LateFire(IALARM *ialarm, CONTEXT *ctxt, VOID *ip, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
SetCount(UINT64 count) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
ThreadStart(THREADID tid, CONTEXT *ctxt, INT32 flags, VOID *v) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
TraceAddress(TRACE trace, VOID *v) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
UpdateAlarm(ALARM_MANAGER *alarm_manager, const string &icount_str) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline, virtual]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__SIGNAL.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__SIGNAL.html new file mode 100755 index 0000000..7a1571b --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__SIGNAL.html @@ -0,0 +1,104 @@ + + + + +Pin: CONTROLLER::ALARM_SIGNAL Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
CONTROLLER::ALARM_SIGNAL Class Reference
+
+
+ +

List of all members.

+ + + +

+Public Member Functions

ALARM_SIGNAL (const string &signal_str, UINT32 tid, UINT32 count, BOOL need_ctxt, ALARM_MANAGER *manager)
+
The documentation for this class was generated from the following file:
    +
  • alarms.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__SSC-members.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__SSC-members.html new file mode 100755 index 0000000..399a4e0 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__SSC-members.html @@ -0,0 +1,132 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
CONTROLLER::ALARM_SSC Member List
+
+
+This is the complete list of members for CONTROLLER::ALARM_SSC, including all inherited members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_activate_late_handler (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_address (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_alarm_manager (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_armed (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_global_armed (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_global_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_need_context (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_target_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_thread_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_thread_first_ip (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
_threads_first_ip_vec (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
_tid (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
ActivateLate(IALARM *ialarm, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
ALARM_SSC(const string &ssc, UINT32 tid, UINT32 count, BOOL need_ctxt, ALARM_MANAGER *manager) (defined in CONTROLLER::ALARM_SSC)CONTROLLER::ALARM_SSC [inline]
Arm() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Arm(THREADID tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
CheckFirstIp(IALARM *ialarm, UINT32 tid, ADDRINT addr) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckFirstIpGlobal(IALARM *ialarm, UINT32 tid, ADDRINT addr) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckTarget(IALARM *ialarm, UINT32 tid, ADDRINT branch_target) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckTargetGlobal(IALARM *ialarm, ADDRINT branch_target) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
Count(IALARM *ialarm, UINT32 tid, UINT32 ninst) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
Disarm(THREADID tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Disarm() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
DisarmGlobalArmed() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
Fire(IALARM *ialarm, CONTEXT *ctxt, VOID *ip, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
GetInstrumentOrder() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
GetLateInstrumentOrder() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
GlobalCount(IALARM *ialarm, UINT32 tid, UINT32 ninst) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
HasGlobalCounter() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
IALARM(UINT32 tid, UINT64 count, BOOL need_ctxt, ALARM_MANAGER *manager) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Insert_LateInstrumentation(IALARM *alarm, INS ins) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_Count(IALARM *alarm, INS ins, UINT32 ninst, IPOINT point=IPOINT_BEFORE) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_FirstIp(IALARM *ialarm, INS ins, IPOINT point) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_Target(IALARM *ialarm, INS ins) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertThenCall_Fire(IALARM *alarm, INS ins, IPOINT point=IPOINT_BEFORE) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
LateFire(IALARM *ialarm, CONTEXT *ctxt, VOID *ip, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
SetCount(UINT64 count) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
ThreadStart(THREADID tid, CONTEXT *ctxt, INT32 flags, VOID *v) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
TraceAddress(TRACE trace, VOID *v) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
UpdateAlarm(ALARM_MANAGER *alarm_manager, const string &icount_str) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline, virtual]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__SSC.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__SSC.html new file mode 100755 index 0000000..5cd07e0 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__SSC.html @@ -0,0 +1,104 @@ + + + + +Pin: CONTROLLER::ALARM_SSC Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
CONTROLLER::ALARM_SSC Class Reference
+
+
+ +

List of all members.

+ + + +

+Public Member Functions

ALARM_SSC (const string &ssc, UINT32 tid, UINT32 count, BOOL need_ctxt, ALARM_MANAGER *manager)
+
The documentation for this class was generated from the following file:
    +
  • alarms.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__SYMBOL-members.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__SYMBOL-members.html new file mode 100755 index 0000000..6269620 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__SYMBOL-members.html @@ -0,0 +1,132 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
CONTROLLER::ALARM_SYMBOL Member List
+
+
+This is the complete list of members for CONTROLLER::ALARM_SYMBOL, including all inherited members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_activate_late_handler (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_address (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_alarm_manager (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_armed (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_global_armed (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_global_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_need_context (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_target_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_thread_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_thread_first_ip (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
_threads_first_ip_vec (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
_tid (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
ActivateLate(IALARM *ialarm, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
ALARM_SYMBOL(const string &symbol, UINT32 tid, UINT32 count, BOOL need_ctxt, ALARM_MANAGER *manager) (defined in CONTROLLER::ALARM_SYMBOL)CONTROLLER::ALARM_SYMBOL [inline]
Arm() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Arm(THREADID tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
CheckFirstIp(IALARM *ialarm, UINT32 tid, ADDRINT addr) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckFirstIpGlobal(IALARM *ialarm, UINT32 tid, ADDRINT addr) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckTarget(IALARM *ialarm, UINT32 tid, ADDRINT branch_target) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckTargetGlobal(IALARM *ialarm, ADDRINT branch_target) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
Count(IALARM *ialarm, UINT32 tid, UINT32 ninst) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
Disarm(THREADID tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Disarm() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
DisarmGlobalArmed() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
Fire(IALARM *ialarm, CONTEXT *ctxt, VOID *ip, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
GetInstrumentOrder() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
GetLateInstrumentOrder() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
GlobalCount(IALARM *ialarm, UINT32 tid, UINT32 ninst) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
HasGlobalCounter() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
IALARM(UINT32 tid, UINT64 count, BOOL need_ctxt, ALARM_MANAGER *manager) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Insert_LateInstrumentation(IALARM *alarm, INS ins) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_Count(IALARM *alarm, INS ins, UINT32 ninst, IPOINT point=IPOINT_BEFORE) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_FirstIp(IALARM *ialarm, INS ins, IPOINT point) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_Target(IALARM *ialarm, INS ins) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertThenCall_Fire(IALARM *alarm, INS ins, IPOINT point=IPOINT_BEFORE) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
LateFire(IALARM *ialarm, CONTEXT *ctxt, VOID *ip, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
SetCount(UINT64 count) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
ThreadStart(THREADID tid, CONTEXT *ctxt, INT32 flags, VOID *v) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
TraceAddress(TRACE trace, VOID *v) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
UpdateAlarm(ALARM_MANAGER *alarm_manager, const string &icount_str) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline, virtual]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__SYMBOL.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__SYMBOL.html new file mode 100755 index 0000000..d660ecf --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__SYMBOL.html @@ -0,0 +1,104 @@ + + + + +Pin: CONTROLLER::ALARM_SYMBOL Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
CONTROLLER::ALARM_SYMBOL Class Reference
+
+
+ +

List of all members.

+ + + +

+Public Member Functions

ALARM_SYMBOL (const string &symbol, UINT32 tid, UINT32 count, BOOL need_ctxt, ALARM_MANAGER *manager)
+
The documentation for this class was generated from the following file:
    +
  • alarms.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__TIMEOUT-members.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__TIMEOUT-members.html new file mode 100755 index 0000000..84f6a77 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__TIMEOUT-members.html @@ -0,0 +1,132 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
CONTROLLER::ALARM_TIMEOUT Member List
+
+
+This is the complete list of members for CONTROLLER::ALARM_TIMEOUT, including all inherited members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_activate_late_handler (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_address (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_alarm_manager (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_armed (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_global_armed (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_global_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_need_context (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_target_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_thread_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_thread_first_ip (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
_threads_first_ip_vec (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
_tid (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
ActivateLate(IALARM *ialarm, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
ALARM_TIMEOUT(const string &timeout_str, UINT32 tid, UINT32 count, BOOL need_ctxt, ALARM_MANAGER *manager) (defined in CONTROLLER::ALARM_TIMEOUT)CONTROLLER::ALARM_TIMEOUT [inline]
Arm() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Arm(THREADID tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
CheckFirstIp(IALARM *ialarm, UINT32 tid, ADDRINT addr) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckFirstIpGlobal(IALARM *ialarm, UINT32 tid, ADDRINT addr) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckTarget(IALARM *ialarm, UINT32 tid, ADDRINT branch_target) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckTargetGlobal(IALARM *ialarm, ADDRINT branch_target) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
Count(IALARM *ialarm, UINT32 tid, UINT32 ninst) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
Disarm(THREADID tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Disarm() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
DisarmGlobalArmed() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
Fire(IALARM *ialarm, CONTEXT *ctxt, VOID *ip, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
GetInstrumentOrder() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
GetLateInstrumentOrder() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
GlobalCount(IALARM *ialarm, UINT32 tid, UINT32 ninst) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
HasGlobalCounter() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
IALARM(UINT32 tid, UINT64 count, BOOL need_ctxt, ALARM_MANAGER *manager) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Insert_LateInstrumentation(IALARM *alarm, INS ins) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_Count(IALARM *alarm, INS ins, UINT32 ninst, IPOINT point=IPOINT_BEFORE) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_FirstIp(IALARM *ialarm, INS ins, IPOINT point) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_Target(IALARM *ialarm, INS ins) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertThenCall_Fire(IALARM *alarm, INS ins, IPOINT point=IPOINT_BEFORE) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
LateFire(IALARM *ialarm, CONTEXT *ctxt, VOID *ip, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
SetCount(UINT64 count) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
ThreadStart(THREADID tid, CONTEXT *ctxt, INT32 flags, VOID *v) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
TraceAddress(TRACE trace, VOID *v) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
UpdateAlarm(ALARM_MANAGER *alarm_manager, const string &icount_str) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline, virtual]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__TIMEOUT.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__TIMEOUT.html new file mode 100755 index 0000000..64872c9 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1ALARM__TIMEOUT.html @@ -0,0 +1,104 @@ + + + + +Pin: CONTROLLER::ALARM_TIMEOUT Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
CONTROLLER::ALARM_TIMEOUT Class Reference
+
+
+ +

List of all members.

+ + + +

+Public Member Functions

ALARM_TIMEOUT (const string &timeout_str, UINT32 tid, UINT32 count, BOOL need_ctxt, ALARM_MANAGER *manager)
+
The documentation for this class was generated from the following file:
    +
  • alarms.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROLLER__EVENTS-members.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROLLER__EVENTS-members.html new file mode 100755 index 0000000..215ac61 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROLLER__EVENTS-members.html @@ -0,0 +1,96 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
CONTROLLER::CONTROLLER_EVENTS Member List
+
+
+This is the complete list of members for CONTROLLER::CONTROLLER_EVENTS, including all inherited members. + + + + +
AddEvent(const string &event_name) (defined in CONTROLLER::CONTROLLER_EVENTS)CONTROLLER::CONTROLLER_EVENTS
CONTROL_MANAGER (defined in CONTROLLER::CONTROLLER_EVENTS)CONTROLLER::CONTROLLER_EVENTS [friend]
EventStringToType(const string &event_name) (defined in CONTROLLER::CONTROLLER_EVENTS)CONTROLLER::CONTROLLER_EVENTS
IDToString(EVENT_TYPE ev) (defined in CONTROLLER::CONTROLLER_EVENTS)CONTROLLER::CONTROLLER_EVENTS
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROLLER__EVENTS.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROLLER__EVENTS.html new file mode 100755 index 0000000..21c99aa --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROLLER__EVENTS.html @@ -0,0 +1,113 @@ + + + + +Pin: CONTROLLER::CONTROLLER_EVENTS Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
CONTROLLER::CONTROLLER_EVENTS Class Reference
+
+
+ +

List of all members.

+ + + + + + + +

+Public Member Functions

+EVENT_TYPE AddEvent (const string &event_name)
+string IDToString (EVENT_TYPE ev)
+EVENT_TYPE EventStringToType (const string &event_name)

+Friends

+class CONTROL_MANAGER
+
The documentation for this class was generated from the following file:
    +
  • controller_events.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROL__ARGS-members.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROL__ARGS-members.html new file mode 100755 index 0000000..1fbe1e9 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROL__ARGS-members.html @@ -0,0 +1,96 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
CONTROLLER::CONTROL_ARGS Member List
+
+
+This is the complete list of members for CONTROLLER::CONTROL_ARGS, including all inherited members. + + + + +
CONTROL_ARGS(const string &prefix, string knob_family, UINT32 instrument_order=CALL_ORDER_DEFAULT) (defined in CONTROLLER::CONTROL_ARGS)CONTROLLER::CONTROL_ARGS [inline]
get_instrument_order() const (defined in CONTROLLER::CONTROL_ARGS)CONTROLLER::CONTROL_ARGS [inline]
get_knob_family() const (defined in CONTROLLER::CONTROL_ARGS)CONTROLLER::CONTROL_ARGS [inline]
get_prefix() const (defined in CONTROLLER::CONTROL_ARGS)CONTROLLER::CONTROL_ARGS [inline]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROL__ARGS.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROL__ARGS.html new file mode 100755 index 0000000..a1d5aea --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROL__ARGS.html @@ -0,0 +1,110 @@ + + + + +Pin: CONTROLLER::CONTROL_ARGS Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
CONTROLLER::CONTROL_ARGS Class Reference
+
+
+ +

List of all members.

+ + + + + + +

+Public Member Functions

CONTROL_ARGS (const string &prefix, string knob_family, UINT32 instrument_order=CALL_ORDER_DEFAULT)
+string get_prefix () const
+string get_knob_family () const
+UINT32 get_instrument_order () const
+
The documentation for this class was generated from the following file:
    +
  • control_manager.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROL__CHAIN-members.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROL__CHAIN-members.html new file mode 100755 index 0000000..1753490 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROL__CHAIN-members.html @@ -0,0 +1,116 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
CONTROLLER::CONTROL_CHAIN Member List
+
+
+This is the complete list of members for CONTROLLER::CONTROL_CHAIN, including all inherited members. + + + + + + + + + + + + + + + + + + + + + + + + +
Activate() (defined in CONTROLLER::CONTROL_CHAIN)CONTROLLER::CONTROL_CHAIN
AddWaitingChain(CONTROL_CHAIN *chain) (defined in CONTROLLER::CONTROL_CHAIN)CONTROLLER::CONTROL_CHAIN
CONTROL_CHAIN(CONTROL_MANAGER *control_mngr, VOID *event_handler=NULL, BOOL vector_chain=FALSE) (defined in CONTROLLER::CONTROL_CHAIN)CONTROLLER::CONTROL_CHAIN
DebugPrint() (defined in CONTROLLER::CONTROL_CHAIN)CONTROLLER::CONTROL_CHAIN
EventStringToType(const string &event_name) (defined in CONTROLLER::CONTROL_CHAIN)CONTROLLER::CONTROL_CHAIN
Fire(EVENT_TYPE eventID, CONTEXT *ctx, VOID *ip, THREADID tid, BOOL bcast, UINT32 alarm_id) (defined in CONTROLLER::CONTROL_CHAIN)CONTROLLER::CONTROL_CHAIN
GetId() (defined in CONTROLLER::CONTROL_CHAIN)CONTROLLER::CONTROL_CHAIN [inline]
GetInsOrder() (defined in CONTROLLER::CONTROL_CHAIN)CONTROLLER::CONTROL_CHAIN [inline]
GetLateInsOrder() (defined in CONTROLLER::CONTROL_CHAIN)CONTROLLER::CONTROL_CHAIN [inline]
GetListener() (defined in CONTROLLER::CONTROL_CHAIN)CONTROLLER::CONTROL_CHAIN [inline]
GetName() (defined in CONTROLLER::CONTROL_CHAIN)CONTROLLER::CONTROL_CHAIN [inline]
GetNextAlaramManager(UINT32 index, THREADID tid) (defined in CONTROLLER::CONTROL_CHAIN)CONTROLLER::CONTROL_CHAIN [inline]
HasStartEvent() (defined in CONTROLLER::CONTROL_CHAIN)CONTROLLER::CONTROL_CHAIN
LateFire(EVENT_TYPE eventID, CONTEXT *ctx, VOID *ip, THREADID tid, BOOL bcast, UINT32 alarm_id) (defined in CONTROLLER::CONTROL_CHAIN)CONTROLLER::CONTROL_CHAIN
NeedContext() (defined in CONTROLLER::CONTROL_CHAIN)CONTROLLER::CONTROL_CHAIN
Parse(const string &chain_str) (defined in CONTROLLER::CONTROL_CHAIN)CONTROLLER::CONTROL_CHAIN
SetBlockFire() (defined in CONTROLLER::CONTROL_CHAIN)CONTROLLER::CONTROL_CHAIN [inline]
SetLateHandler() (defined in CONTROLLER::CONTROL_CHAIN)CONTROLLER::CONTROL_CHAIN
SetName(const string &name) (defined in CONTROLLER::CONTROL_CHAIN)CONTROLLER::CONTROL_CHAIN [inline]
SetRepeat(UINT32 repeat) (defined in CONTROLLER::CONTROL_CHAIN)CONTROLLER::CONTROL_CHAIN [inline]
SetUniformAlarm(ALARM_MANAGER *uniform_alarm) (defined in CONTROLLER::CONTROL_CHAIN)CONTROLLER::CONTROL_CHAIN
SetVectorIndex(UINT32 vector_index) (defined in CONTROLLER::CONTROL_CHAIN)CONTROLLER::CONTROL_CHAIN [inline]
SetWaitFor(UINT32 id) (defined in CONTROLLER::CONTROL_CHAIN)CONTROLLER::CONTROL_CHAIN
SetWaitFor(const string &chain_name) (defined in CONTROLLER::CONTROL_CHAIN)CONTROLLER::CONTROL_CHAIN
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROL__CHAIN.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROL__CHAIN.html new file mode 100755 index 0000000..b0a685f --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROL__CHAIN.html @@ -0,0 +1,151 @@ + + + + +Pin: CONTROLLER::CONTROL_CHAIN Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
CONTROLLER::CONTROL_CHAIN Class Reference
+
+
+ +

List of all members.

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

+Public Member Functions

CONTROL_CHAIN (CONTROL_MANAGER *control_mngr, VOID *event_handler=NULL, BOOL vector_chain=FALSE)
+VOID Parse (const string &chain_str)
+VOID SetRepeat (UINT32 repeat)
+VOID SetName (const string &name)
+string GetName ()
+UINT32 GetId ()
+VOID SetWaitFor (UINT32 id)
+VOID SetWaitFor (const string &chain_name)
+VOID AddWaitingChain (CONTROL_CHAIN *chain)
+BOOL HasStartEvent ()
+VOID Activate ()
+BOOL NeedContext ()
+VOID SetUniformAlarm (ALARM_MANAGER *uniform_alarm)
+VOID DebugPrint ()
+VOID Fire (EVENT_TYPE eventID, CONTEXT *ctx, VOID *ip, THREADID tid, BOOL bcast, UINT32 alarm_id)
+VOID LateFire (EVENT_TYPE eventID, CONTEXT *ctx, VOID *ip, THREADID tid, BOOL bcast, UINT32 alarm_id)
+EVENT_TYPE EventStringToType (const string &event_name)
+UINT32 GetInsOrder ()
+UINT32 GetLateInsOrder ()
+INTERACTIVE_LISTENERGetListener ()
+VOID SetLateHandler ()
+VOID SetBlockFire ()
+ALARM_MANAGERGetNextAlaramManager (UINT32 index, THREADID tid)
+VOID SetVectorIndex (UINT32 vector_index)
+
The documentation for this class was generated from the following files:
    +
  • control_chain.H
  • +
  • control_chain.cpp
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROL__IREGIONS-members.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROL__IREGIONS-members.html new file mode 100755 index 0000000..e699130 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROL__IREGIONS-members.html @@ -0,0 +1,98 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
CONTROLLER::CONTROL_IREGIONS Member List
+
+
+This is the complete list of members for CONTROLLER::CONTROL_IREGIONS, including all inherited members. + + + + + + +
Activate(BOOL passContext, CHAIN_EVENT_VECTOR **regionControlChains)CONTROLLER::CONTROL_IREGIONS [inline]
CONTROL_IREGIONS(CONTROL_ARGS &control_args, CONTROL_MANAGER *cm) (defined in CONTROLLER::CONTROL_IREGIONS)CONTROLLER::CONTROL_IREGIONS [inline]
IsActive() const (defined in CONTROLLER::CONTROL_IREGIONS)CONTROLLER::CONTROL_IREGIONS [inline]
LastTriggeredRegion(THREADID tid) const (defined in CONTROLLER::CONTROL_IREGIONS)CONTROLLER::CONTROL_IREGIONS [inline]
RegionInfoCallback(THREADID tid, VOID *region_info_param) (defined in CONTROLLER::CONTROL_IREGIONS)CONTROLLER::CONTROL_IREGIONS [inline, static]
SetTriggeredRegion(THREADID tid, VOID *event_handler) (defined in CONTROLLER::CONTROL_IREGIONS)CONTROLLER::CONTROL_IREGIONS [inline]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROL__IREGIONS.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROL__IREGIONS.html new file mode 100755 index 0000000..bb605da --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROL__IREGIONS.html @@ -0,0 +1,146 @@ + + + + +Pin: CONTROLLER::CONTROL_IREGIONS Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
CONTROLLER::CONTROL_IREGIONS Class Reference
+
+
+ +

List of all members.

+ + + + + + + + + +

+Public Member Functions

CONTROL_IREGIONS (CONTROL_ARGS &control_args, CONTROL_MANAGER *cm)
INT32 Activate (BOOL passContext, CHAIN_EVENT_VECTOR **regionControlChains)
+bool IsActive () const
+IREGIONLastTriggeredRegion (THREADID tid) const
+VOID SetTriggeredRegion (THREADID tid, VOID *event_handler)

+Static Public Member Functions

+static CONTROL_REGION_INFO RegionInfoCallback (THREADID tid, VOID *region_info_param)
+

Member Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
INT32 CONTROLLER::CONTROL_IREGIONS::Activate (BOOL passContext,
CHAIN_EVENT_VECTOR ** regionControlChains 
) [inline]
+
+
+

Activate the controller if the -regions knob is provided

+
Returns:
1 if controller can start an interval, otherwise 0
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • regions_control.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROL__MANAGER-members.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROL__MANAGER-members.html new file mode 100755 index 0000000..b3b42fb --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROL__MANAGER-members.html @@ -0,0 +1,120 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
CONTROLLER::CONTROL_MANAGER Member List
+
+
+This is the complete list of members for CONTROLLER::CONTROL_MANAGER, including all inherited members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Activate() (defined in CONTROLLER::CONTROL_MANAGER)CONTROLLER::CONTROL_MANAGER
AddDefaultStart() (defined in CONTROLLER::CONTROL_MANAGER)CONTROLLER::CONTROL_MANAGER
AddEvent(const string &event_name) (defined in CONTROLLER::CONTROL_MANAGER)CONTROLLER::CONTROL_MANAGER
CONTROL_CHAIN (defined in CONTROLLER::CONTROL_MANAGER)CONTROLLER::CONTROL_MANAGER [friend]
CONTROL_IREGIONS (defined in CONTROLLER::CONTROL_MANAGER)CONTROLLER::CONTROL_MANAGER [friend]
CONTROL_MANAGER(const string prefix="", const string family="pintool:control", const string description="Controller knobs") (defined in CONTROLLER::CONTROL_MANAGER)CONTROLLER::CONTROL_MANAGER
CONTROL_PCREGIONS (defined in CONTROLLER::CONTROL_MANAGER)CONTROLLER::CONTROL_MANAGER [friend]
CurrentIregion(THREADID tid=0) const (defined in CONTROLLER::CONTROL_MANAGER)CONTROLLER::CONTROL_MANAGER
CurrentPCregion(THREADID tid=0) const (defined in CONTROLLER::CONTROL_MANAGER)CONTROLLER::CONTROL_MANAGER
EventStringToType(const string &event_name) (defined in CONTROLLER::CONTROL_MANAGER)CONTROLLER::CONTROL_MANAGER
EventToString(EVENT_TYPE ev) (defined in CONTROLLER::CONTROL_MANAGER)CONTROLLER::CONTROL_MANAGER
Fire(EVENT_TYPE eventID, CONTEXT *ctx, VOID *ip, THREADID tid, BOOL bcast, VOID *event_handler=NULL, CONTROL_CHAIN *chain=NULL) (defined in CONTROLLER::CONTROL_MANAGER)CONTROLLER::CONTROL_MANAGER
GetInsOrder() (defined in CONTROLLER::CONTROL_MANAGER)CONTROLLER::CONTROL_MANAGER
GetLateInsOrder() (defined in CONTROLLER::CONTROL_MANAGER)CONTROLLER::CONTROL_MANAGER
GetNextControlChain(UINT32 index, THREADID tid) (defined in CONTROLLER::CONTROL_MANAGER)CONTROLLER::CONTROL_MANAGER
GetRegionInfoCallback() (defined in CONTROLLER::CONTROL_MANAGER)CONTROLLER::CONTROL_MANAGER [inline]
GetRegionInfoParam() (defined in CONTROLLER::CONTROL_MANAGER)CONTROLLER::CONTROL_MANAGER [inline]
GetUniformTid() (defined in CONTROLLER::CONTROL_MANAGER)CONTROLLER::CONTROL_MANAGER
HasLateHandler() (defined in CONTROLLER::CONTROL_MANAGER)CONTROLLER::CONTROL_MANAGER [inline]
INIT_ALARM (defined in CONTROLLER::CONTROL_MANAGER)CONTROLLER::CONTROL_MANAGER [friend]
IregionsActive() const (defined in CONTROLLER::CONTROL_MANAGER)CONTROLLER::CONTROL_MANAGER
LateFire(EVENT_TYPE eventID, CONTEXT *ctxt, VOID *ip, THREADID tid, BOOL bcast) (defined in CONTROLLER::CONTROL_MANAGER)CONTROLLER::CONTROL_MANAGER
PCregionsActive() const (defined in CONTROLLER::CONTROL_MANAGER)CONTROLLER::CONTROL_MANAGER
RegisterHandler(CONTROL_HANDLER ch, VOID *val, BOOL passContext=FALSE, CONTROL_HANDLER late_ch=NULL) (defined in CONTROLLER::CONTROL_MANAGER)CONTROLLER::CONTROL_MANAGER
SetRegionInfoCallback(REGION_INFO_CALLBACK region_info_callback, VOID *region_info_param) (defined in CONTROLLER::CONTROL_MANAGER)CONTROLLER::CONTROL_MANAGER [inline]
StartTIDActive() (defined in CONTROLLER::CONTROL_MANAGER)CONTROLLER::CONTROL_MANAGER [inline]
UniformActive() (defined in CONTROLLER::CONTROL_MANAGER)CONTROLLER::CONTROL_MANAGER
UniformIsDone() (defined in CONTROLLER::CONTROL_MANAGER)CONTROLLER::CONTROL_MANAGER
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROL__MANAGER.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROL__MANAGER.html new file mode 100755 index 0000000..93b9808 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROL__MANAGER.html @@ -0,0 +1,161 @@ + + + + +Pin: CONTROLLER::CONTROL_MANAGER Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
CONTROLLER::CONTROL_MANAGER Class Reference
+
+
+ +

List of all members.

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

+Public Member Functions

CONTROL_MANAGER (const string prefix="", const string family="pintool:control", const string description="Controller knobs")
+VOID RegisterHandler (CONTROL_HANDLER ch, VOID *val, BOOL passContext=FALSE, CONTROL_HANDLER late_ch=NULL)
+VOID Activate ()
+UINT32 GetInsOrder ()
+UINT32 GetLateInsOrder ()
+THREADID GetUniformTid ()
+BOOL UniformActive ()
+BOOL UniformIsDone ()
+IREGIONCurrentIregion (THREADID tid=0) const
+PCREGIONCurrentPCregion (THREADID tid=0) const
+BOOL IregionsActive () const
+BOOL PCregionsActive () const
+BOOL StartTIDActive ()
+EVENT_TYPE AddEvent (const string &event_name)
+string EventToString (EVENT_TYPE ev)
+EVENT_TYPE EventStringToType (const string &event_name)
+VOID AddDefaultStart ()
+VOID Fire (EVENT_TYPE eventID, CONTEXT *ctx, VOID *ip, THREADID tid, BOOL bcast, VOID *event_handler=NULL, CONTROL_CHAIN *chain=NULL)
+VOID LateFire (EVENT_TYPE eventID, CONTEXT *ctxt, VOID *ip, THREADID tid, BOOL bcast)
+BOOL HasLateHandler ()
+CONTROL_CHAINGetNextControlChain (UINT32 index, THREADID tid)
+REGION_INFO_CALLBACK GetRegionInfoCallback ()
+VOID * GetRegionInfoParam ()
+VOID SetRegionInfoCallback (REGION_INFO_CALLBACK region_info_callback, VOID *region_info_param)

+Friends

+class CONTROL_CHAIN
+class CONTROL_IREGIONS
+class CONTROL_PCREGIONS
+class INIT_ALARM
+
The documentation for this class was generated from the following file:
    +
  • control_manager.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROL__PCREGIONS-members.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROL__PCREGIONS-members.html new file mode 100755 index 0000000..51d10d2 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROL__PCREGIONS-members.html @@ -0,0 +1,100 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
CONTROLLER::CONTROL_PCREGIONS Member List
+
+
+This is the complete list of members for CONTROLLER::CONTROL_PCREGIONS, including all inherited members. + + + + + + + + +
Activate(BOOL passContext, CHAIN_EVENT_VECTOR **regionControlChains)CONTROLLER::CONTROL_PCREGIONS [inline]
CheckNewEventLegal(EVENT_TYPE last_event, EVENT_TYPE new_event) (defined in CONTROLLER::CONTROL_PCREGIONS)CONTROLLER::CONTROL_PCREGIONS [inline]
CheckNewPCRegionLegal(PCREGION *last_pcregion, PCREGION *new_pcregion, EVENT_TYPE new_event) (defined in CONTROLLER::CONTROL_PCREGIONS)CONTROLLER::CONTROL_PCREGIONS [inline]
CONTROL_PCREGIONS(CONTROL_ARGS &control_args, CONTROL_MANAGER *cm) (defined in CONTROLLER::CONTROL_PCREGIONS)CONTROLLER::CONTROL_PCREGIONS [inline]
IsActive() const (defined in CONTROLLER::CONTROL_PCREGIONS)CONTROLLER::CONTROL_PCREGIONS [inline]
LastTriggeredRegion(THREADID tid) const (defined in CONTROLLER::CONTROL_PCREGIONS)CONTROLLER::CONTROL_PCREGIONS [inline]
RegionInfoCallback(THREADID tid, VOID *region_info_param) (defined in CONTROLLER::CONTROL_PCREGIONS)CONTROLLER::CONTROL_PCREGIONS [inline, static]
SetTriggeredRegion(THREADID tid, EVENT_TYPE event_type, VOID *event_handler) (defined in CONTROLLER::CONTROL_PCREGIONS)CONTROLLER::CONTROL_PCREGIONS [inline]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROL__PCREGIONS.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROL__PCREGIONS.html new file mode 100755 index 0000000..d07e5b7 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1CONTROL__PCREGIONS.html @@ -0,0 +1,120 @@ + + + + +Pin: CONTROLLER::CONTROL_PCREGIONS Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
CONTROLLER::CONTROL_PCREGIONS Class Reference
+
+
+ +

List of all members.

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

+Public Member Functions

CONTROL_PCREGIONS (CONTROL_ARGS &control_args, CONTROL_MANAGER *cm)
BOOL Activate (BOOL passContext, CHAIN_EVENT_VECTOR **regionControlChains)
+bool IsActive () const
+PCREGIONLastTriggeredRegion (THREADID tid) const
+BOOL CheckNewEventLegal (EVENT_TYPE last_event, EVENT_TYPE new_event)
+BOOL CheckNewPCRegionLegal (PCREGION *last_pcregion, PCREGION *new_pcregion, EVENT_TYPE new_event)
+BOOL SetTriggeredRegion (THREADID tid, EVENT_TYPE event_type, VOID *event_handler)

+Static Public Member Functions

+static CONTROL_REGION_INFO RegionInfoCallback (THREADID tid, VOID *region_info_param)
+
The documentation for this class was generated from the following file:
    +
  • pcregions_control.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1IALARM-members.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1IALARM-members.html new file mode 100755 index 0000000..98c2243 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1IALARM-members.html @@ -0,0 +1,131 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
CONTROLLER::IALARM Member List
+
+
+This is the complete list of members for CONTROLLER::IALARM, including all inherited members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_activate_late_handler (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_address (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_alarm_manager (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_armed (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_global_armed (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_global_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_need_context (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_target_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_thread_count (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
_thread_first_ip (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
_threads_first_ip_vec (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
_tid (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
ActivateLate(IALARM *ialarm, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
Arm() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Arm(THREADID tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
CheckFirstIp(IALARM *ialarm, UINT32 tid, ADDRINT addr) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckFirstIpGlobal(IALARM *ialarm, UINT32 tid, ADDRINT addr) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckTarget(IALARM *ialarm, UINT32 tid, ADDRINT branch_target) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
CheckTargetGlobal(IALARM *ialarm, ADDRINT branch_target) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
Count(IALARM *ialarm, UINT32 tid, UINT32 ninst) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
Disarm(THREADID tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Disarm() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
DisarmGlobalArmed() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
Fire(IALARM *ialarm, CONTEXT *ctxt, VOID *ip, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
GetInstrumentOrder() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
GetLateInstrumentOrder() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected]
GlobalCount(IALARM *ialarm, UINT32 tid, UINT32 ninst) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
HasGlobalCounter() (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
IALARM(UINT32 tid, UINT64 count, BOOL need_ctxt, ALARM_MANAGER *manager) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM
Insert_LateInstrumentation(IALARM *alarm, INS ins) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_Count(IALARM *alarm, INS ins, UINT32 ninst, IPOINT point=IPOINT_BEFORE) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_FirstIp(IALARM *ialarm, INS ins, IPOINT point) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertIfCall_Target(IALARM *ialarm, INS ins) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
InsertThenCall_Fire(IALARM *alarm, INS ins, IPOINT point=IPOINT_BEFORE) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
LateFire(IALARM *ialarm, CONTEXT *ctxt, VOID *ip, UINT32 tid) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
SetCount(UINT64 count) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline]
ThreadStart(THREADID tid, CONTEXT *ctxt, INT32 flags, VOID *v) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
TraceAddress(TRACE trace, VOID *v) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [protected, static]
UpdateAlarm(ALARM_MANAGER *alarm_manager, const string &icount_str) (defined in CONTROLLER::IALARM)CONTROLLER::IALARM [inline, virtual]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1IALARM.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1IALARM.html new file mode 100755 index 0000000..e1fd8f0 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1IALARM.html @@ -0,0 +1,200 @@ + + + + +Pin: CONTROLLER::IALARM Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+ +
+ +

List of all members.

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

+Public Member Functions

IALARM (UINT32 tid, UINT64 count, BOOL need_ctxt, ALARM_MANAGER *manager)
+VOID Arm ()
+VOID Arm (THREADID tid)
+VOID Disarm (THREADID tid)
+VOID Disarm ()
+BOOL DisarmGlobalArmed ()
+VOID SetCount (UINT64 count)
+BOOL HasGlobalCounter ()
+virtual VOID UpdateAlarm (ALARM_MANAGER *alarm_manager, const string &icount_str)

+Protected Member Functions

+UINT32 GetInstrumentOrder ()
+UINT32 GetLateInstrumentOrder ()

+Static Protected Member Functions

+static VOID InsertIfCall_Count (IALARM *alarm, INS ins, UINT32 ninst, IPOINT point=IPOINT_BEFORE)
+static VOID InsertThenCall_Fire (IALARM *alarm, INS ins, IPOINT point=IPOINT_BEFORE)
+static VOID Insert_LateInstrumentation (IALARM *alarm, INS ins)
+static ADDRINT
+PIN_FAST_ANALYSIS_CALL 
Count (IALARM *ialarm, UINT32 tid, UINT32 ninst)
+static ADDRINT
+PIN_FAST_ANALYSIS_CALL 
GlobalCount (IALARM *ialarm, UINT32 tid, UINT32 ninst)
+static VOID Fire (IALARM *ialarm, CONTEXT *ctxt, VOID *ip, UINT32 tid)
+static ADDRINT
+PIN_FAST_ANALYSIS_CALL 
ActivateLate (IALARM *ialarm, UINT32 tid)
+static VOID LateFire (IALARM *ialarm, CONTEXT *ctxt, VOID *ip, UINT32 tid)
+static VOID TraceAddress (TRACE trace, VOID *v)
+static VOID InsertIfCall_Target (IALARM *ialarm, INS ins)
+static VOID InsertIfCall_FirstIp (IALARM *ialarm, INS ins, IPOINT point)
+static ADDRINT
+PIN_FAST_ANALYSIS_CALL 
CheckTarget (IALARM *ialarm, UINT32 tid, ADDRINT branch_target)
+static ADDRINT
+PIN_FAST_ANALYSIS_CALL 
CheckTargetGlobal (IALARM *ialarm, ADDRINT branch_target)
+static ADDRINT
+PIN_FAST_ANALYSIS_CALL 
CheckFirstIp (IALARM *ialarm, UINT32 tid, ADDRINT addr)
+static ADDRINT
+PIN_FAST_ANALYSIS_CALL 
CheckFirstIpGlobal (IALARM *ialarm, UINT32 tid, ADDRINT addr)
+static VOID ThreadStart (THREADID tid, CONTEXT *ctxt, INT32 flags, VOID *v)

+Protected Attributes

+BOOL _need_context
+UINT32 _tid
+CACHELINE_COUNTER _target_count
+CACHELINE_COUNTER _thread_count [PIN_MAX_THREADS]
+volatile CACHELINE_COUNTER _global_count
+BOOL _armed [PIN_MAX_THREADS]
+volatile BOOL _global_armed
+ALARM_MANAGER_alarm_manager
+volatile BOOL _activate_late_handler
+ADDRINT _address

+Static Protected Attributes

+static set< ADDRINT > _thread_first_ip
+static ADDRINT _threads_first_ip_vec [PIN_MAX_THREADS]
+
The documentation for this class was generated from the following files:
    +
  • ialarm.H
  • +
  • ialarm.cpp
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1IEVENT-members.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1IEVENT-members.html new file mode 100755 index 0000000..8de5ae0 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1IEVENT-members.html @@ -0,0 +1,96 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
CONTROLLER::IEVENT Member List
+
+
+This is the complete list of members for CONTROLLER::IEVENT, including all inherited members. + + + + +
CONTROL_IREGIONS (defined in CONTROLLER::IEVENT)CONTROLLER::IEVENT [friend]
EventLessThan(const IEVENT &a, const IEVENT &b) (defined in CONTROLLER::IEVENT)CONTROLLER::IEVENT [inline, static]
EventToString(EVENT_TYPE type) (defined in CONTROLLER::IEVENT)CONTROLLER::IEVENT [inline, static]
IEVENT() (defined in CONTROLLER::IEVENT)CONTROLLER::IEVENT [inline]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1IEVENT.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1IEVENT.html new file mode 100755 index 0000000..95e42d4 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1IEVENT.html @@ -0,0 +1,111 @@ + + + + +Pin: CONTROLLER::IEVENT Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
CONTROLLER::IEVENT Class Reference
+
+
+ +

List of all members.

+ + + + + + +

+Static Public Member Functions

+static BOOL EventLessThan (const IEVENT &a, const IEVENT &b)
+static const CHAR * EventToString (EVENT_TYPE type)

+Friends

+class CONTROL_IREGIONS
+
The documentation for this class was generated from the following file:
    +
  • regions_control.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1INIT__ALARM-members.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1INIT__ALARM-members.html new file mode 100755 index 0000000..5d6be7b --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1INIT__ALARM-members.html @@ -0,0 +1,93 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
CONTROLLER::INIT_ALARM Member List
+
+
+This is the complete list of members for CONTROLLER::INIT_ALARM, including all inherited members. + +
Activate(CONTROL_MANAGER *manager) (defined in CONTROLLER::INIT_ALARM)CONTROLLER::INIT_ALARM
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1INIT__ALARM.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1INIT__ALARM.html new file mode 100755 index 0000000..0c06086 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1INIT__ALARM.html @@ -0,0 +1,104 @@ + + + + +Pin: CONTROLLER::INIT_ALARM Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
CONTROLLER::INIT_ALARM Class Reference
+
+
+ +

List of all members.

+ + + +

+Public Member Functions

+VOID Activate (CONTROL_MANAGER *manager)
+
The documentation for this class was generated from the following file:
    +
  • init_alarm.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1INTERACTIVE__LISTENER-members.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1INTERACTIVE__LISTENER-members.html new file mode 100755 index 0000000..0f72b21 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1INTERACTIVE__LISTENER-members.html @@ -0,0 +1,96 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
CONTROLLER::INTERACTIVE_LISTENER Member List
+
+
+This is the complete list of members for CONTROLLER::INTERACTIVE_LISTENER, including all inherited members. + + + + +
Active() (defined in CONTROLLER::INTERACTIVE_LISTENER)CONTROLLER::INTERACTIVE_LISTENER
CheckClearSignal() (defined in CONTROLLER::INTERACTIVE_LISTENER)CONTROLLER::INTERACTIVE_LISTENER [inline]
GetClearSignal() (defined in CONTROLLER::INTERACTIVE_LISTENER)CONTROLLER::INTERACTIVE_LISTENER [inline]
INTERACTIVE_LISTENER(const std::string &name) (defined in CONTROLLER::INTERACTIVE_LISTENER)CONTROLLER::INTERACTIVE_LISTENER [inline]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1INTERACTIVE__LISTENER.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1INTERACTIVE__LISTENER.html new file mode 100755 index 0000000..60a9cfd --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1INTERACTIVE__LISTENER.html @@ -0,0 +1,110 @@ + + + + +Pin: CONTROLLER::INTERACTIVE_LISTENER Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
CONTROLLER::INTERACTIVE_LISTENER Class Reference
+
+
+ +

List of all members.

+ + + + + + +

+Public Member Functions

INTERACTIVE_LISTENER (const std::string &name)
+VOID Active ()
+UINT32 GetClearSignal ()
+UINT32 CheckClearSignal ()
+
The documentation for this class was generated from the following file:
    +
  • interactive_listener.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1IREGION-members.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1IREGION-members.html new file mode 100755 index 0000000..a371229 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1IREGION-members.html @@ -0,0 +1,105 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
CONTROLLER::IREGION Member List
+
+
+This is the complete list of members for CONTROLLER::IREGION, including all inherited members. + + + + + + + + + + + + + +
CONTROL_IREGIONS (defined in CONTROLLER::IREGION)CONTROLLER::IREGION [friend]
GetComment() const (defined in CONTROLLER::IREGION)CONTROLLER::IREGION [inline]
GetEpilogLength() const (defined in CONTROLLER::IREGION)CONTROLLER::IREGION [inline]
GetPrologLength() const (defined in CONTROLLER::IREGION)CONTROLLER::IREGION [inline]
GetRegionEndICount() const (defined in CONTROLLER::IREGION)CONTROLLER::IREGION [inline]
GetRegionId() const (defined in CONTROLLER::IREGION)CONTROLLER::IREGION [inline]
GetRegionLength() const (defined in CONTROLLER::IREGION)CONTROLLER::IREGION [inline]
GetRegionStartICount() const (defined in CONTROLLER::IREGION)CONTROLLER::IREGION [inline]
GetWarmupLength() const (defined in CONTROLLER::IREGION)CONTROLLER::IREGION [inline]
GetWeightTimesHundredThousand() const (defined in CONTROLLER::IREGION)CONTROLLER::IREGION [inline]
IREGION() (defined in CONTROLLER::IREGION)CONTROLLER::IREGION [inline]
SetEpilogLength(UINT64 epilog_length) (defined in CONTROLLER::IREGION)CONTROLLER::IREGION [inline]
SetICountEnd(UINT64 icountEnd) (defined in CONTROLLER::IREGION)CONTROLLER::IREGION [inline]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1IREGION.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1IREGION.html new file mode 100755 index 0000000..9d8a01f --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1IREGION.html @@ -0,0 +1,129 @@ + + + + +Pin: CONTROLLER::IREGION Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
CONTROLLER::IREGION Class Reference
+
+
+ +

List of all members.

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

+Public Member Functions

+string GetComment () const
+UINT32 GetRegionId () const
+UINT64 GetRegionStartICount () const
+UINT64 GetRegionEndICount () const
+UINT64 GetWarmupLength () const
+UINT64 GetPrologLength () const
+UINT64 GetRegionLength () const
+UINT64 GetEpilogLength () const
+UINT32 GetWeightTimesHundredThousand () const
+VOID SetICountEnd (UINT64 icountEnd)
+VOID SetEpilogLength (UINT64 epilog_length)

+Friends

+class CONTROL_IREGIONS
+
The documentation for this class was generated from the following file:
    +
  • regions_control.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1PARSER-members.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1PARSER-members.html new file mode 100755 index 0000000..033cbb4 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1PARSER-members.html @@ -0,0 +1,106 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
CONTROLLER::PARSER Member List
+
+
+This is the complete list of members for CONTROLLER::PARSER, including all inherited members. + + + + + + + + + + + + + + +
ConfigToken(const string &control_str) (defined in CONTROLLER::PARSER)CONTROLLER::PARSER [static]
GetTIDToken(const string &token) (defined in CONTROLLER::PARSER)CONTROLLER::PARSER [static]
ParseBcastToken(const string &token, BOOL *bcast) (defined in CONTROLLER::PARSER)CONTROLLER::PARSER [static]
ParseConfigTokens(const string &control_str, CONTROL_CHAIN *chain) (defined in CONTROLLER::PARSER)CONTROLLER::PARSER [static]
ParseCountToken(const string &token, UINT64 *count) (defined in CONTROLLER::PARSER)CONTROLLER::PARSER [static]
ParseGlobalToken(const string &token, BOOL *global_count) (defined in CONTROLLER::PARSER)CONTROLLER::PARSER [static]
ParseOldConfigTokens(const string &str, string &value, string &count, string &tid, BOOL &repeat) (defined in CONTROLLER::PARSER)CONTROLLER::PARSER [static]
ParseRepeatToken(const string &token) (defined in CONTROLLER::PARSER)CONTROLLER::PARSER [static]
ParseTIDToken(const string &token, UINT32 *tid) (defined in CONTROLLER::PARSER)CONTROLLER::PARSER [static]
SplitArgs(const string sep, const string &input, vector< string > &output_array) (defined in CONTROLLER::PARSER)CONTROLLER::PARSER [static]
str2hex(const char *in, unsigned char *out, size_t len) (defined in CONTROLLER::PARSER)CONTROLLER::PARSER [static]
StringToUint32(const string &s) (defined in CONTROLLER::PARSER)CONTROLLER::PARSER [static]
StringToUint64(const string &s) (defined in CONTROLLER::PARSER)CONTROLLER::PARSER [static]
UniformToken(vector< string > &tokens) (defined in CONTROLLER::PARSER)CONTROLLER::PARSER [static]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1PARSER.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1PARSER.html new file mode 100755 index 0000000..0bf277d --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1PARSER.html @@ -0,0 +1,130 @@ + + + + +Pin: CONTROLLER::PARSER Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
CONTROLLER::PARSER Class Reference
+
+
+ +

List of all members.

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

+Static Public Member Functions

+static VOID str2hex (const char *in, unsigned char *out, size_t len)
+static UINT32 StringToUint32 (const string &s)
+static UINT64 StringToUint64 (const string &s)
+static unsigned int SplitArgs (const string sep, const string &input, vector< string > &output_array)
+static UINT32 GetTIDToken (const string &token)
+static BOOL ParseTIDToken (const string &token, UINT32 *tid)
+static BOOL ParseBcastToken (const string &token, BOOL *bcast)
+static BOOL ParseCountToken (const string &token, UINT64 *count)
+static BOOL ParseGlobalToken (const string &token, BOOL *global_count)
+static BOOL ParseRepeatToken (const string &token)
+static BOOL ConfigToken (const string &control_str)
+static BOOL UniformToken (vector< string > &tokens)
+static VOID ParseConfigTokens (const string &control_str, CONTROL_CHAIN *chain)
+static VOID ParseOldConfigTokens (const string &str, string &value, string &count, string &tid, BOOL &repeat)
+
The documentation for this class was generated from the following file:
    +
  • parse_control.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1PCREGION-members.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1PCREGION-members.html new file mode 100755 index 0000000..09b3b4f --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1PCREGION-members.html @@ -0,0 +1,106 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
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]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1PCREGION.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1PCREGION.html new file mode 100755 index 0000000..8c7a0c0 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1PCREGION.html @@ -0,0 +1,135 @@ + + + + +Pin: CONTROLLER::PCREGION Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
CONTROLLER::PCREGION Class Reference
+
+
+ +

#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
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1REGION__UTILS-members.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1REGION__UTILS-members.html new file mode 100755 index 0000000..d299a51 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1REGION__UTILS-members.html @@ -0,0 +1,97 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
CONTROLLER::REGION_UTILS Member List
+
+
+This is the complete list of members for CONTROLLER::REGION_UTILS, including all inherited members. + + + + + +
StringToADDRINT(string &s, const char *name) (defined in CONTROLLER::REGION_UTILS)CONTROLLER::REGION_UTILS [inline, static]
StringToDouble(string &s, const char *name) (defined in CONTROLLER::REGION_UTILS)CONTROLLER::REGION_UTILS [inline, static]
StringToUINT32(string &s, const char *name, UINT32 base=10) (defined in CONTROLLER::REGION_UTILS)CONTROLLER::REGION_UTILS [inline, static]
StringToUINT64(string &s, const char *name, UINT32 base=10) (defined in CONTROLLER::REGION_UTILS)CONTROLLER::REGION_UTILS [inline, static]
WeightToString(UINT32 weightX100000) (defined in CONTROLLER::REGION_UTILS)CONTROLLER::REGION_UTILS [inline, static]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1REGION__UTILS.html b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1REGION__UTILS.html new file mode 100755 index 0000000..cf3889d --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classCONTROLLER_1_1REGION__UTILS.html @@ -0,0 +1,112 @@ + + + + +Pin: CONTROLLER::REGION_UTILS Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
CONTROLLER::REGION_UTILS Class Reference
+
+
+ +

List of all members.

+ + + + + + + +

+Static Public Member Functions

+static UINT32 StringToUINT32 (string &s, const char *name, UINT32 base=10)
+static UINT64 StringToUINT64 (string &s, const char *name, UINT32 base=10)
+static ADDRINT StringToADDRINT (string &s, const char *name)
+static double StringToDouble (string &s, const char *name)
+static string WeightToString (UINT32 weightX100000)
+
The documentation for this class was generated from the following file:
    +
  • region_utils.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classDEBUGGER__SHELL_1_1ICUSTOM__INSTRUMENTOR-members.html b/src/tracer/pintool/pin-3.13/doc/html/classDEBUGGER__SHELL_1_1ICUSTOM__INSTRUMENTOR-members.html new file mode 100755 index 0000000..4136a61 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classDEBUGGER__SHELL_1_1ICUSTOM__INSTRUMENTOR-members.html @@ -0,0 +1,95 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
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]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classDEBUGGER__SHELL_1_1ICUSTOM__INSTRUMENTOR.html b/src/tracer/pintool/pin-3.13/doc/html/classDEBUGGER__SHELL_1_1ICUSTOM__INSTRUMENTOR.html new file mode 100755 index 0000000..e2abbcf --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classDEBUGGER__SHELL_1_1ICUSTOM__INSTRUMENTOR.html @@ -0,0 +1,256 @@ + + + + +Pin: DEBUGGER_SHELL::ICUSTOM_INSTRUMENTOR Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
DEBUGGER_SHELL::ICUSTOM_INSTRUMENTOR Class Reference
+
+
+ +

#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.

+

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]insInsert the instrumentation after this instruction.
[in]bblThe basic block containing ins.
[in]ipointTells whether to instrument IPOINT_AFTER or IPOINT_TAKEN_BRANCH.
[in]orderThe instrumentation call order to use for the instrumentation.
[in]messageString 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]insInsert the instrumentation before this instruction.
[in]bblThe basic block containing ins.
[in]orderThe instrumentation call order to use for the instrumentation.
[in]messageString 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
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classDEBUGGER__SHELL_1_1ISHELL-members.html b/src/tracer/pintool/pin-3.13/doc/html/classDEBUGGER__SHELL_1_1ISHELL-members.html new file mode 100755 index 0000000..710b95e --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classDEBUGGER__SHELL_1_1ISHELL-members.html @@ -0,0 +1,97 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
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]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classDEBUGGER__SHELL_1_1ISHELL.html b/src/tracer/pintool/pin-3.13/doc/html/classDEBUGGER__SHELL_1_1ISHELL.html new file mode 100755 index 0000000..5183e0f --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classDEBUGGER__SHELL_1_1ISHELL.html @@ -0,0 +1,249 @@ + + + + +Pin: DEBUGGER_SHELL::ISHELL Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
DEBUGGER_SHELL::ISHELL Class Reference
+
+
+ +

#include <debugger-shell.H>

+ +

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.

+

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]nameThe name of the category.
[in]descriptionDescribes this category of extended commands.
[out]alreadyExistsIf 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.
+ +

Implemented in SHELL.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
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]categoryThe category for this extended command. This can either be one of the predefined HELP_CATEGORY constants or a value returned by AddExtendedHelpCategory().
[in]cmdThe name of a tool's extended command.
[in]descriptionDescribes what the command does.
+
+
+ +

Implemented in SHELL.

+ +
+
+ +
+
+ + + + + + + + +
virtual BOOL DEBUGGER_SHELL::ISHELL::Enable (const STARTUP_ARGUMENTSargs) [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]argsArguments that customize the debugger shell.
+
+
+
Returns:
TRUE on success. If there is an error, a diagnostic is printed and this method returns FALSE.
+ +

Implemented in SHELL.

+ +
+
+ +
+
+ + + + + + + +
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.
+ +

Implemented in SHELL.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • debugger-shell.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1FILTER-members.html b/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1FILTER-members.html new file mode 100755 index 0000000..95ea32b --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1FILTER-members.html @@ -0,0 +1,95 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
INSTLIB::FILTER Member List
+
+
+This is the complete list of members for INSTLIB::FILTER, including all inherited members. + + + +
Activate()INSTLIB::FILTER [inline]
FILTER(const string &prefix="", const string &knob_family="pintool") (defined in INSTLIB::FILTER)INSTLIB::FILTER [inline]
SelectTrace(TRACE trace)INSTLIB::FILTER [inline]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1FILTER.html b/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1FILTER.html new file mode 100755 index 0000000..7f8fa09 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1FILTER.html @@ -0,0 +1,106 @@ + + + + +Pin: INSTLIB::FILTER Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
INSTLIB::FILTER Class Reference
+
+
+ +

List of all members.

+ + + + + +

+Public Member Functions

FILTER (const string &prefix="", const string &knob_family="pintool")
VOID Activate ()
BOOL SelectTrace (TRACE trace)
+
The documentation for this class was generated from the following file:
    +
  • filter.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1FILTER__LIB-members.html b/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1FILTER__LIB-members.html new file mode 100755 index 0000000..78a8f37 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1FILTER__LIB-members.html @@ -0,0 +1,95 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
INSTLIB::FILTER_LIB Member List
+
+
+This is the complete list of members for INSTLIB::FILTER_LIB, including all inherited members. + + + +
Activate()INSTLIB::FILTER_LIB [inline]
FILTER_LIB(const string &prefix="", const string &knob_family="pintool") (defined in INSTLIB::FILTER_LIB)INSTLIB::FILTER_LIB [inline]
SelectTrace(TRACE trace)INSTLIB::FILTER_LIB [inline]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1FILTER__LIB.html b/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1FILTER__LIB.html new file mode 100755 index 0000000..e1a520b --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1FILTER__LIB.html @@ -0,0 +1,106 @@ + + + + +Pin: INSTLIB::FILTER_LIB Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
INSTLIB::FILTER_LIB Class Reference
+
+
+ +

List of all members.

+ + + + + +

+Public Member Functions

FILTER_LIB (const string &prefix="", const string &knob_family="pintool")
VOID Activate ()
BOOL SelectTrace (TRACE trace)
+
The documentation for this class was generated from the following file:
    +
  • filter.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1FILTER__RTN-members.html b/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1FILTER__RTN-members.html new file mode 100755 index 0000000..65a1698 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1FILTER__RTN-members.html @@ -0,0 +1,96 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
INSTLIB::FILTER_RTN Member List
+
+
+This is the complete list of members for INSTLIB::FILTER_RTN, including all inherited members. + + + + +
Activate()INSTLIB::FILTER_RTN [inline]
FILTER_RTN(const string &prefix="", const string &knob_family="pintool") (defined in INSTLIB::FILTER_RTN)INSTLIB::FILTER_RTN [inline]
SelectRtn(RTN rtn)INSTLIB::FILTER_RTN [inline]
SelectTrace(TRACE trace)INSTLIB::FILTER_RTN [inline]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1FILTER__RTN.html b/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1FILTER__RTN.html new file mode 100755 index 0000000..743097e --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1FILTER__RTN.html @@ -0,0 +1,107 @@ + + + + +Pin: INSTLIB::FILTER_RTN Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
INSTLIB::FILTER_RTN Class Reference
+
+
+ +

List of all members.

+ + + + + + +

+Public Member Functions

FILTER_RTN (const string &prefix="", const string &knob_family="pintool")
VOID Activate ()
BOOL SelectTrace (TRACE trace)
BOOL SelectRtn (RTN rtn)
+
The documentation for this class was generated from the following file:
    +
  • filter.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1FOLLOW__CHILD-members.html b/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1FOLLOW__CHILD-members.html new file mode 100755 index 0000000..c26eb84 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1FOLLOW__CHILD-members.html @@ -0,0 +1,95 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
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]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1FOLLOW__CHILD.html b/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1FOLLOW__CHILD.html new file mode 100755 index 0000000..aebf30d --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1FOLLOW__CHILD.html @@ -0,0 +1,149 @@ + + + + +Pin: INSTLIB::FOLLOW_CHILD Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
INSTLIB::FOLLOW_CHILD Class Reference
+
+
+ +

#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
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1ICOUNT-members.html b/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1ICOUNT-members.html new file mode 100755 index 0000000..8f186f2 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1ICOUNT-members.html @@ -0,0 +1,103 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
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]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1ICOUNT.html b/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1ICOUNT.html new file mode 100755 index 0000000..5f9d91a --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1ICOUNT.html @@ -0,0 +1,171 @@ + + + + +Pin: INSTLIB::ICOUNT Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
INSTLIB::ICOUNT Class Reference
+
+
+ +

#include <icount.H>

+ +

List of all members.

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

+Classes

struct  threadStats

+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)
+

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
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1SKIPPER-members.html b/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1SKIPPER-members.html new file mode 100755 index 0000000..75539c9 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1SKIPPER-members.html @@ -0,0 +1,95 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
INSTLIB::SKIPPER Member List
+
+
+This is the complete list of members for INSTLIB::SKIPPER, including all inherited members. + + + +
CheckKnobs(VOID *val)INSTLIB::SKIPPER [inline]
INT3_skipped() (defined in INSTLIB::SKIPPER)INSTLIB::SKIPPER [inline]
SKIPPER(const string &prefix="", const string &knob_family="pintool:control", const string &knob_family_description="Skipper knobs") (defined in INSTLIB::SKIPPER)INSTLIB::SKIPPER [inline]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1SKIPPER.html b/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1SKIPPER.html new file mode 100755 index 0000000..7a64f1d --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1SKIPPER.html @@ -0,0 +1,107 @@ + + + + +Pin: INSTLIB::SKIPPER Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
INSTLIB::SKIPPER Class Reference
+
+
+ +

List of all members.

+ + + + + +

+Public Member Functions

SKIPPER (const string &prefix="", const string &knob_family="pintool:control", const string &knob_family_description="Skipper knobs")
INT32 CheckKnobs (VOID *val)
+bool INT3_skipped ()
+
The documentation for this class was generated from the following file:
    +
  • skipper.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1SKIP__INT3-members.html b/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1SKIP__INT3-members.html new file mode 100755 index 0000000..c8135c1 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1SKIP__INT3-members.html @@ -0,0 +1,95 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
INSTLIB::SKIP_INT3 Member List
+
+
+This is the complete list of members for INSTLIB::SKIP_INT3, including all inherited members. + + + +
CheckKnobs(VOID *val)INSTLIB::SKIP_INT3 [inline]
IsActive() (defined in INSTLIB::SKIP_INT3)INSTLIB::SKIP_INT3 [inline]
SKIP_INT3(const string &prefix, const string &knob_family) (defined in INSTLIB::SKIP_INT3)INSTLIB::SKIP_INT3 [inline]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1SKIP__INT3.html b/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1SKIP__INT3.html new file mode 100755 index 0000000..f4298f5 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1SKIP__INT3.html @@ -0,0 +1,107 @@ + + + + +Pin: INSTLIB::SKIP_INT3 Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
INSTLIB::SKIP_INT3 Class Reference
+
+
+ +

List of all members.

+ + + + + +

+Public Member Functions

SKIP_INT3 (const string &prefix, const string &knob_family)
+bool IsActive ()
INT32 CheckKnobs (VOID *val)
+
The documentation for this class was generated from the following file:
    +
  • skipper.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1TIME__WARP-members.html b/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1TIME__WARP-members.html new file mode 100755 index 0000000..33c558f --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1TIME__WARP-members.html @@ -0,0 +1,94 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
INSTLIB::TIME_WARP Member List
+
+
+This is the complete list of members for INSTLIB::TIME_WARP, including all inherited members. + + +
CheckKnobs(VOID *val)INSTLIB::TIME_WARP [inline]
RDTSC_modified() (defined in INSTLIB::TIME_WARP)INSTLIB::TIME_WARP [inline]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1TIME__WARP.html b/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1TIME__WARP.html new file mode 100755 index 0000000..e5f3a07 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1TIME__WARP.html @@ -0,0 +1,124 @@ + + + + +Pin: INSTLIB::TIME_WARP Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
INSTLIB::TIME_WARP Class Reference
+
+
+ +

List of all members.

+ + + + +

+Public Member Functions

INT32 CheckKnobs (VOID *val)
+bool RDTSC_modified ()
+

Member Function Documentation

+ +
+
+ + + + + + + + +
INT32 INSTLIB::TIME_WARP::CheckKnobs (VOID * val) [inline]
+
+
+

Activate all the component controllers

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • time_warp.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1TIME__WARP__RDTSC-members.html b/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1TIME__WARP__RDTSC-members.html new file mode 100755 index 0000000..6ea06fd --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1TIME__WARP__RDTSC-members.html @@ -0,0 +1,95 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
INSTLIB::TIME_WARP_RDTSC Member List
+
+
+This is the complete list of members for INSTLIB::TIME_WARP_RDTSC, including all inherited members. + + + +
CheckKnobs(VOID *val)INSTLIB::TIME_WARP_RDTSC [inline]
IsActive() (defined in INSTLIB::TIME_WARP_RDTSC)INSTLIB::TIME_WARP_RDTSC [inline]
TIME_WARP_RDTSC() (defined in INSTLIB::TIME_WARP_RDTSC)INSTLIB::TIME_WARP_RDTSC [inline]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1TIME__WARP__RDTSC.html b/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1TIME__WARP__RDTSC.html new file mode 100755 index 0000000..a2a28e0 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classINSTLIB_1_1TIME__WARP__RDTSC.html @@ -0,0 +1,105 @@ + + + + +Pin: INSTLIB::TIME_WARP_RDTSC Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
INSTLIB::TIME_WARP_RDTSC Class Reference
+
+
+ +

List of all members.

+ + + + +

+Public Member Functions

+bool IsActive ()
INT32 CheckKnobs (VOID *val)
+
The documentation for this class was generated from the following file:
    +
  • time_warp.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1ADDRESS__RANGE-members.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1ADDRESS__RANGE-members.html new file mode 100755 index 0000000..5283f3d --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1ADDRESS__RANGE-members.html @@ -0,0 +1,100 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
LEVEL_BASE::ADDRESS_RANGE Member List
+
+
+This is the complete list of members for LEVEL_BASE::ADDRESS_RANGE, including all inherited members. + + + + + + + + +
_high (defined in LEVEL_BASE::ADDRESS_RANGE)LEVEL_BASE::ADDRESS_RANGE
_low (defined in LEVEL_BASE::ADDRESS_RANGE)LEVEL_BASE::ADDRESS_RANGE
ADDRESS_RANGE(ADDRINT low, ADDRINT high) (defined in LEVEL_BASE::ADDRESS_RANGE)LEVEL_BASE::ADDRESS_RANGE [inline]
ADDRESS_RANGE() (defined in LEVEL_BASE::ADDRESS_RANGE)LEVEL_BASE::ADDRESS_RANGE [inline]
operator+=(const ADDRESS_RANGE &right) (defined in LEVEL_BASE::ADDRESS_RANGE)LEVEL_BASE::ADDRESS_RANGE [inline]
Size() const (defined in LEVEL_BASE::ADDRESS_RANGE)LEVEL_BASE::ADDRESS_RANGE [inline]
String() const (defined in LEVEL_BASE::ADDRESS_RANGE)LEVEL_BASE::ADDRESS_RANGE [inline]
Valid() const (defined in LEVEL_BASE::ADDRESS_RANGE)LEVEL_BASE::ADDRESS_RANGE [inline]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1ADDRESS__RANGE.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1ADDRESS__RANGE.html new file mode 100755 index 0000000..856b16a --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1ADDRESS__RANGE.html @@ -0,0 +1,121 @@ + + + + +Pin: LEVEL_BASE::ADDRESS_RANGE Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
LEVEL_BASE::ADDRESS_RANGE Class Reference
+
+
+ +

List of all members.

+ + + + + + + + + + +

+Public Member Functions

ADDRESS_RANGE (ADDRINT low, ADDRINT high)
+ADDRESS_RANGEoperator+= (const ADDRESS_RANGE &right)
+std::string String () const
+BOOL Valid () const
+ADDRINT Size () const

+Public Attributes

+ADDRINT _low
+ADDRINT _high
+

Detailed Description

+

Minimal type for representing address ranges to be used as a value of a knob

+

The documentation for this class was generated from the following file:
    +
  • knob.cpp
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1COMMAND__LINE__ARGUMENTS-members.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1COMMAND__LINE__ARGUMENTS-members.html new file mode 100755 index 0000000..ff7f039 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1COMMAND__LINE__ARGUMENTS-members.html @@ -0,0 +1,106 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
LEVEL_BASE::COMMAND_LINE_ARGUMENTS Member List
+
+
+This is the complete list of members for LEVEL_BASE::COMMAND_LINE_ARGUMENTS, including all inherited members. + + + + + + + + + + + + + + +
Argc() const LEVEL_BASE::COMMAND_LINE_ARGUMENTS [inline]
Argv() const LEVEL_BASE::COMMAND_LINE_ARGUMENTS [inline]
COMMAND_LINE_ARGUMENTS()LEVEL_BASE::COMMAND_LINE_ARGUMENTS [inline]
COMMAND_LINE_ARGUMENTS(INT argc, const CHAR *const *argv, const CHAR *delimiter=NULL)LEVEL_BASE::COMMAND_LINE_ARGUMENTS [inline]
COMMAND_LINE_ARGUMENTS(const std::string &commandLine)LEVEL_BASE::COMMAND_LINE_ARGUMENTS [inline]
COMMAND_LINE_ARGUMENTS(const COMMAND_LINE_ARGUMENTS &source)LEVEL_BASE::COMMAND_LINE_ARGUMENTS [inline]
FindArgument(const std::string &argStr) const LEVEL_BASE::COMMAND_LINE_ARGUMENTS
Insert(const COMMAND_LINE_ARGUMENTS &right, INT pos=-1)LEVEL_BASE::COMMAND_LINE_ARGUMENTS
Insert(const std::string &arg, INT pos=-1)LEVEL_BASE::COMMAND_LINE_ARGUMENTS
InsertAsOneToken(const std::string &arg, INT pos=-1)LEVEL_BASE::COMMAND_LINE_ARGUMENTS
operator=(const COMMAND_LINE_ARGUMENTS &source)LEVEL_BASE::COMMAND_LINE_ARGUMENTS [inline]
RemoveArguments(const std::string &argStr, INT numOfArgs)LEVEL_BASE::COMMAND_LINE_ARGUMENTS
String() const LEVEL_BASE::COMMAND_LINE_ARGUMENTS
~COMMAND_LINE_ARGUMENTS()LEVEL_BASE::COMMAND_LINE_ARGUMENTS [inline]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1COMMAND__LINE__ARGUMENTS.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1COMMAND__LINE__ARGUMENTS.html new file mode 100755 index 0000000..defc78c --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1COMMAND__LINE__ARGUMENTS.html @@ -0,0 +1,490 @@ + + + + +Pin: LEVEL_BASE::COMMAND_LINE_ARGUMENTS Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
LEVEL_BASE::COMMAND_LINE_ARGUMENTS Class Reference
+
+
+ +

List of all members.

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

+Public Member Functions

 COMMAND_LINE_ARGUMENTS ()
 COMMAND_LINE_ARGUMENTS (INT argc, const CHAR *const *argv, const CHAR *delimiter=NULL)
 COMMAND_LINE_ARGUMENTS (const std::string &commandLine)
 COMMAND_LINE_ARGUMENTS (const COMMAND_LINE_ARGUMENTS &source)
COMMAND_LINE_ARGUMENTSoperator= (const COMMAND_LINE_ARGUMENTS &source)
COMMAND_LINE_ARGUMENTSInsert (const COMMAND_LINE_ARGUMENTS &right, INT pos=-1)
COMMAND_LINE_ARGUMENTSInsert (const std::string &arg, INT pos=-1)
COMMAND_LINE_ARGUMENTSInsertAsOneToken (const std::string &arg, INT pos=-1)
INT FindArgument (const std::string &argStr) const
BOOL RemoveArguments (const std::string &argStr, INT numOfArgs)
INT Argc () const
const CHAR *const Argv () const
std::string String () const
 ~COMMAND_LINE_ARGUMENTS ()
+

Detailed Description

+

class that represents command line arguments

+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + +
LEVEL_BASE::COMMAND_LINE_ARGUMENTS::COMMAND_LINE_ARGUMENTS () [inline]
+
+
+

Empty Constructor

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
LEVEL_BASE::COMMAND_LINE_ARGUMENTS::COMMAND_LINE_ARGUMENTS (INT argc,
const CHAR *const * argv,
const CHAR * delimiter = NULL 
) [inline]
+
+
+

Constructor. Construct an object from argc, argv and delimiter Example1: argc = 6, argv = {ab bc cd de ef de}, delimiter = "de" => the object will contain: argc = 4, argv = {ab bc cd de} Example2: argc = 6, argv = {ab bc cd de ef de}, delimiter = NULL => the object will contain: argc = 6, argv = {ab bc cd de ef de} Example3: argc = 6, argv = {ab bc cd de ef de}, delimiter = "fg" => the object will contain: argc = 6, argv = {ab bc cd de ef de}

+
Parameters:
+ + + + +
[in]argcargc for the command line arguments object
[in]argvargv for the command line arguments object
[in]delimiterremove any argv argument AFTER the delimiter. If it was not found, nothing will be removed
+
+
+ +
+
+ +
+
+ + + + + + + + +
LEVEL_BASE::COMMAND_LINE_ARGUMENTS::COMMAND_LINE_ARGUMENTS (const std::string & commandLine) [inline]
+
+
+

Constructor. Construct an object from a string using MS CRT Parsing rules (For more details see GetCmdArg() documentation)

+

NOTE: Use this function only for original application's command line

+
Parameters:
+ + +
[in]commandLineoriginal application's command line represented as string
+
+
+ +
+
+ +
+
+ + + + + + + + +
LEVEL_BASE::COMMAND_LINE_ARGUMENTS::COMMAND_LINE_ARGUMENTS (const COMMAND_LINE_ARGUMENTSsource) [inline]
+
+
+

Copy Constructor. Construct an object from another object

+
Parameters:
+ + +
[in]sourcesource object
+
+
+ +
+
+ +
+
+ + + + + + + +
LEVEL_BASE::COMMAND_LINE_ARGUMENTS::~COMMAND_LINE_ARGUMENTS () [inline]
+
+
+

Destructor

+ +
+
+

Member Function Documentation

+ +
+
+ + + + + + + +
INT LEVEL_BASE::COMMAND_LINE_ARGUMENTS::Argc () const [inline]
+
+
+
Returns:
Argc of current object the value life time is as long as the object was not changed (using operator=(), Insert() or ~COMMAND_LINE_ARGUMENTS() will invalidate this data)
+ +
+
+ +
+
+ + + + + + + +
const CHAR* const LEVEL_BASE::COMMAND_LINE_ARGUMENTS::Argv () const [inline]
+
+
+
Returns:
Argv of current object, the pointer life time is as long as the object was not changed (using operator=(), Insert() or ~COMMAND_LINE_ARGUMENTS() will invalidate this data)
+ +
+
+ +
+
+ + + + + + + + +
INT LEVEL_BASE::COMMAND_LINE_ARGUMENTS::FindArgument (const std::string & argStr) const
+
+
+

Find an argument by name

+
Parameters:
+ + +
[in]argStr- argument to be found
+
+
+
Returns:
index of argument or -1 if not found
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
COMMAND_LINE_ARGUMENTS& LEVEL_BASE::COMMAND_LINE_ARGUMENTS::Insert (const COMMAND_LINE_ARGUMENTSright,
INT pos = -1 
)
+
+
+

Insert a set of command line arguments into this set of arguments.

+
Parameters:
+ + + +
[in]argsArguments to be inserted.
[in]posArguments are inserted before the argument with this position. If pos is -1, they are appended to the end.
+
+
+
Returns:
reference to current object
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
COMMAND_LINE_ARGUMENTS& LEVEL_BASE::COMMAND_LINE_ARGUMENTS::Insert (const std::string & arg,
INT pos = -1 
)
+
+
+

Insert a single argument into this set of arguments.

+
Parameters:
+ + + +
[in]argArgument to be inserted.
[in]posThe argument is inserted before the argument with this position. If pos is -1, it is appended to the end.
+
+
+
Returns:
reference to current object
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
COMMAND_LINE_ARGUMENTS& LEVEL_BASE::COMMAND_LINE_ARGUMENTS::InsertAsOneToken (const std::string & arg,
INT pos = -1 
)
+
+
+

Insert a single argument into this set of arguments. Don't try to tokenize (split) the added argument to several arguments.

+
Parameters:
+ + + +
[in]argArgument to be inserted.
[in]posThe argument is inserted before the argument with this position. If pos is -1, it is appended to the end.
+
+
+
Returns:
reference to current object
+ +
+
+ +
+
+ + + + + + + + +
COMMAND_LINE_ARGUMENTS& LEVEL_BASE::COMMAND_LINE_ARGUMENTS::operator= (const COMMAND_LINE_ARGUMENTSsource) [inline]
+
+
+

Assignment operator

+
Parameters:
+ + +
[in]sourcesource object
+
+
+
Returns:
reference to current object
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_BASE::COMMAND_LINE_ARGUMENTS::RemoveArguments (const std::string & argStr,
INT numOfArgs 
)
+
+
+

Looks for argument equal to argStr; remove "numOfArgs" arguments starting from the found argument

+
Parameters:
+ + + +
[in]argStr- argument to be found,
[in]numOfArgs- numer of arguments that should be removed starting from the found argument
+
+
+
Returns:
TRUE if numOfArgs were removed from the list
+ +
+
+ +
+
+ + + + + + + +
std::string LEVEL_BASE::COMMAND_LINE_ARGUMENTS::String () const
+
+
+
Returns:
string with all command line arguments separated with " "
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • util.cpp
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1KNOB-members.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1KNOB-members.html new file mode 100755 index 0000000..f9aec51 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1KNOB-members.html @@ -0,0 +1,133 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
LEVEL_BASE::KNOB< TYPE > Member List
+
+
+This is the complete list of members for LEVEL_BASE::KNOB< TYPE >, including all inherited members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_default_value (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [protected]
_disabled (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [protected]
_family (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [protected]
_mode (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [protected]
_name (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [protected]
_next (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [protected]
_nreads (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [protected]
_nwrites (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [protected]
_purpose (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [protected]
AddValue(const std::string &valstring) (defined in LEVEL_BASE::KNOB< TYPE >)LEVEL_BASE::KNOB< TYPE > [inline, virtual]
CheckAllKnobs(BOOL allowDashes=FALSE)LEVEL_BASE::KNOB_BASE
Cmd() const (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [inline]
Compare(const KNOB_BASE &k2) const LEVEL_BASE::KNOB_BASE
DisableKnob(const std::string &myname)LEVEL_BASE::KNOB_BASE
DisableKnobFamily(const std::string &myfamily)LEVEL_BASE::KNOB_BASE
Enabled() const (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [inline]
EnableKnob(const std::string &myname)LEVEL_BASE::KNOB_BASE
EnableKnobFamily(const std::string &myfamily)LEVEL_BASE::KNOB_BASE
Family() const (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [inline]
FindEnabledKnob(const std::string &name)LEVEL_BASE::KNOB_BASE
FindFamily(const std::string &name)LEVEL_BASE::KNOB_BASE
FindKnob(const std::string &name)LEVEL_BASE::KNOB_BASE
KNOB(KNOB_MODE mymode, const std::string &myfamily, const std::string &myname, const std::string &mydefault, const std::string &mypurpose, const std::string &myprefix="") (defined in LEVEL_BASE::KNOB< TYPE >)LEVEL_BASE::KNOB< TYPE > [inline]
KNOB_BASE(const std::string &myprefix, const std::string &myname, const std::string &myfamily, const std::string &mydefault, const std::string &mypurpose, KNOB_MODE mymode=KNOB_MODE_WRITEONCE)LEVEL_BASE::KNOB_BASE
Mode() const (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [inline]
Name() const (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [inline]
NumberOfKnobs()LEVEL_BASE::KNOB_BASE
NumberOfValues() const (defined in LEVEL_BASE::KNOB< TYPE >)LEVEL_BASE::KNOB< TYPE > [inline, virtual]
operator TYPE() const (defined in LEVEL_BASE::KNOB< TYPE >)LEVEL_BASE::KNOB< TYPE > [inline]
SetDeveloperFlagsEnabled() (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE
SetParsingDone() (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE
StringKnobSummary()LEVEL_BASE::KNOB_BASE
StringLongAll()LEVEL_BASE::KNOB_BASE
Type() (defined in LEVEL_BASE::KNOB< TYPE >)LEVEL_BASE::KNOB< TYPE > [inline, virtual]
Value() const (defined in LEVEL_BASE::KNOB< TYPE >)LEVEL_BASE::KNOB< TYPE > [inline]
Value(const UINT32 index) (defined in LEVEL_BASE::KNOB< TYPE >)LEVEL_BASE::KNOB< TYPE > [inline]
ValueString() const (defined in LEVEL_BASE::KNOB< TYPE >)LEVEL_BASE::KNOB< TYPE > [inline]
ValueString(const UINT32 index) const (defined in LEVEL_BASE::KNOB< TYPE >)LEVEL_BASE::KNOB< TYPE > [inline, virtual]
WasDeveloperFlagsEnabled() (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE
WasParsingDone() (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE
~KNOB_BASE() (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [inline, virtual]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1KNOB.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1KNOB.html new file mode 100755 index 0000000..7eb6af9 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1KNOB.html @@ -0,0 +1,125 @@ + + + + +Pin: LEVEL_BASE::KNOB< TYPE > Class Template Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
LEVEL_BASE::KNOB< TYPE > Class Template Reference
+
+
+ +

List of all members.

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

+Public Member Functions

KNOB (KNOB_MODE mymode, const std::string &myfamily, const std::string &myname, const std::string &mydefault, const std::string &mypurpose, const std::string &myprefix="")
+VOID AddValue (const std::string &valstring)
+const std::string Type ()
+const TYPE & Value () const
+const std::string & ValueString () const
operator TYPE () const
+const TYPE & Value (const UINT32 index)
+const std::string & ValueString (const UINT32 index) const
+UINT32 NumberOfValues () const
+

Detailed Description

+

template<class TYPE>
+class LEVEL_BASE::KNOB< TYPE >

+ +

typed knob

+

The documentation for this class was generated from the following file:
    +
  • knob.cpp
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1KNOBVALUE-members.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1KNOBVALUE-members.html new file mode 100755 index 0000000..b31c724 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1KNOBVALUE-members.html @@ -0,0 +1,104 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
LEVEL_BASE::KNOBVALUE< TYPE > Member List
+
+
+This is the complete list of members for LEVEL_BASE::KNOBVALUE< TYPE >, including all inherited members. + + + + + + + + + + + + +
Accumulate(TYPE &lVal, const TYPE &rVal) (defined in LEVEL_BASE::KNOBVALUE< TYPE >)LEVEL_BASE::KNOBVALUE< TYPE > [inline]
Accumulate(const std::string &valstring) (defined in LEVEL_BASE::KNOBVALUE< TYPE >)LEVEL_BASE::KNOBVALUE< TYPE > [inline]
Accumulate(BOOL &lVal, const BOOL &rVal)LEVEL_BASE::KNOBVALUE< TYPE > [inline]
Append(KNOBVALUE *next) (defined in LEVEL_BASE::KNOBVALUE< TYPE >)LEVEL_BASE::KNOBVALUE< TYPE > [inline]
FromString(const std::string &strvalue) (defined in LEVEL_BASE::KNOBVALUE< TYPE >)LEVEL_BASE::KNOBVALUE< TYPE >
KNOBVALUE() (defined in LEVEL_BASE::KNOBVALUE< TYPE >)LEVEL_BASE::KNOBVALUE< TYPE > [inline]
Next() const (defined in LEVEL_BASE::KNOBVALUE< TYPE >)LEVEL_BASE::KNOBVALUE< TYPE > [inline]
Overwrite(const std::string &valstring) (defined in LEVEL_BASE::KNOBVALUE< TYPE >)LEVEL_BASE::KNOBVALUE< TYPE > [inline]
ToString(const TYPE &value, const std::string &origString) (defined in LEVEL_BASE::KNOBVALUE< TYPE >)LEVEL_BASE::KNOBVALUE< TYPE > [inline]
Type() (defined in LEVEL_BASE::KNOBVALUE< TYPE >)LEVEL_BASE::KNOBVALUE< TYPE >
Value() const (defined in LEVEL_BASE::KNOBVALUE< TYPE >)LEVEL_BASE::KNOBVALUE< TYPE > [inline]
ValueString() const (defined in LEVEL_BASE::KNOBVALUE< TYPE >)LEVEL_BASE::KNOBVALUE< TYPE > [inline]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1KNOBVALUE.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1KNOBVALUE.html new file mode 100755 index 0000000..a109721 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1KNOBVALUE.html @@ -0,0 +1,166 @@ + + + + +Pin: LEVEL_BASE::KNOBVALUE< TYPE > Class Template Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
LEVEL_BASE::KNOBVALUE< TYPE > Class Template Reference
+
+
+ +

List of all members.

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

+Public Member Functions

+STATIC TYPE FromString (const std::string &strvalue)
+STATIC std::string ToString (const TYPE &value, const std::string &origString)
+STATIC TYPE Accumulate (TYPE &lVal, const TYPE &rVal)
+STATIC const std::string Type ()
+const TYPE & Value () const
+const std::string & ValueString () const
+KNOBVALUENext () const
+VOID Overwrite (const std::string &valstring)
+VOID Accumulate (const std::string &valstring)
+VOID Append (KNOBVALUE *next)
template<>
GLOBALTEMPLATEFUN BOOL Accumulate (BOOL &lVal, const BOOL &rVal)
+

Detailed Description

+

template<class TYPE>
+class LEVEL_BASE::KNOBVALUE< TYPE >

+ +

typed and string representation a value

+

Interface requirements for TYPE:

+
    +
  • TYPE FromString(const string &) ... conversion from string to TYPE; this is always needed;
  • +
  • string ToString(const TYPE &) ..... conversion from TYPE to string default implementation uses the original string; specialization can be used to override this;
  • +
  • TYPE Accumulate(TYPE & lVal, const TYPE & rVal). add rVal to lVal and return new lVal; by defult implemented as operator +=. Only used for accumulate mode
  • +
+

Member Function Documentation

+ +
+
+
+template<>
+ + + + + + + + + + + + + + + + + + +
GLOBALTEMPLATEFUN BOOL LEVEL_BASE::KNOBVALUE< BOOL >::Accumulate (BOOL & lVal,
const BOOL & rVal 
) [inline]
+
+
+

Specialization of the Accumulate(TYPE &, const TYPE &) method for [TYPE=BOOL]. Implemented as logical OR of values.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • knob.cpp
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1KNOBVALUE__LIST-members.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1KNOBVALUE__LIST-members.html new file mode 100755 index 0000000..7946434 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1KNOBVALUE__LIST-members.html @@ -0,0 +1,102 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
LEVEL_BASE::KNOBVALUE_LIST< TYPE > Member List
+
+
+This is the complete list of members for LEVEL_BASE::KNOBVALUE_LIST< TYPE >, including all inherited members. + + + + + + + + + + +
Accumulate(const std::string &valstring) (defined in LEVEL_BASE::KNOBVALUE_LIST< TYPE >)LEVEL_BASE::KNOBVALUE_LIST< TYPE > [inline]
Append(const std::string &valstring) (defined in LEVEL_BASE::KNOBVALUE_LIST< TYPE >)LEVEL_BASE::KNOBVALUE_LIST< TYPE > [inline]
KNOBVALUE_LIST(const std::string &valstring, BOOL hasDefault) (defined in LEVEL_BASE::KNOBVALUE_LIST< TYPE >)LEVEL_BASE::KNOBVALUE_LIST< TYPE > [inline]
NumberOfValues() const (defined in LEVEL_BASE::KNOBVALUE_LIST< TYPE >)LEVEL_BASE::KNOBVALUE_LIST< TYPE > [inline]
Overwrite(const std::string &valstring) (defined in LEVEL_BASE::KNOBVALUE_LIST< TYPE >)LEVEL_BASE::KNOBVALUE_LIST< TYPE > [inline]
Value(const UINT32 index) const (defined in LEVEL_BASE::KNOBVALUE_LIST< TYPE >)LEVEL_BASE::KNOBVALUE_LIST< TYPE > [inline]
Value() const (defined in LEVEL_BASE::KNOBVALUE_LIST< TYPE >)LEVEL_BASE::KNOBVALUE_LIST< TYPE > [inline]
ValueString(const UINT32 index) const (defined in LEVEL_BASE::KNOBVALUE_LIST< TYPE >)LEVEL_BASE::KNOBVALUE_LIST< TYPE > [inline]
ValueString() const (defined in LEVEL_BASE::KNOBVALUE_LIST< TYPE >)LEVEL_BASE::KNOBVALUE_LIST< TYPE > [inline]
~KNOBVALUE_LIST() (defined in LEVEL_BASE::KNOBVALUE_LIST< TYPE >)LEVEL_BASE::KNOBVALUE_LIST< TYPE > [inline]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1KNOBVALUE__LIST.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1KNOBVALUE__LIST.html new file mode 100755 index 0000000..39a7dbb --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1KNOBVALUE__LIST.html @@ -0,0 +1,125 @@ + + + + +Pin: LEVEL_BASE::KNOBVALUE_LIST< TYPE > Class Template Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
LEVEL_BASE::KNOBVALUE_LIST< TYPE > Class Template Reference
+
+
+ +

List of all members.

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

+Public Member Functions

KNOBVALUE_LIST (const std::string &valstring, BOOL hasDefault)
+UINT32 NumberOfValues () const
+const std::string & ValueString (const UINT32 index) const
+const TYPE & Value (const UINT32 index) const
+const TYPE & Value () const
+const std::string & ValueString () const
+VOID Overwrite (const std::string &valstring)
+VOID Accumulate (const std::string &valstring)
+VOID Append (const std::string &valstring)
+

Detailed Description

+

template<class TYPE>
+class LEVEL_BASE::KNOBVALUE_LIST< TYPE >

+ +

List of values attached to a knob

+

The documentation for this class was generated from the following file:
    +
  • knob.cpp
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1KNOB__BASE-members.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1KNOB__BASE-members.html new file mode 100755 index 0000000..62ee73b --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1KNOB__BASE-members.html @@ -0,0 +1,128 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
LEVEL_BASE::KNOB_BASE Member List
+
+
+This is the complete list of members for LEVEL_BASE::KNOB_BASE, including all inherited members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_default_value (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [protected]
_disabled (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [protected]
_family (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [protected]
_mode (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [protected]
_name (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [protected]
_next (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [protected]
_nreads (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [protected]
_nwrites (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [protected]
_purpose (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [protected]
AddValue(const std::string &valstring)=0 (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [pure virtual]
CheckAllKnobs(BOOL allowDashes=FALSE)LEVEL_BASE::KNOB_BASE
Cmd() const (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [inline]
Compare(const KNOB_BASE &k2) const LEVEL_BASE::KNOB_BASE
DisableKnob(const std::string &myname)LEVEL_BASE::KNOB_BASE
DisableKnobFamily(const std::string &myfamily)LEVEL_BASE::KNOB_BASE
Enabled() const (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [inline]
EnableKnob(const std::string &myname)LEVEL_BASE::KNOB_BASE
EnableKnobFamily(const std::string &myfamily)LEVEL_BASE::KNOB_BASE
Family() const (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [inline]
FindEnabledKnob(const std::string &name)LEVEL_BASE::KNOB_BASE
FindFamily(const std::string &name)LEVEL_BASE::KNOB_BASE
FindKnob(const std::string &name)LEVEL_BASE::KNOB_BASE
KNOB_BASE(const std::string &myprefix, const std::string &myname, const std::string &myfamily, const std::string &mydefault, const std::string &mypurpose, KNOB_MODE mymode=KNOB_MODE_WRITEONCE)LEVEL_BASE::KNOB_BASE
Mode() const (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [inline]
Name() const (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [inline]
NumberOfKnobs()LEVEL_BASE::KNOB_BASE
NumberOfValues() const =0 (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [pure virtual]
SetDeveloperFlagsEnabled() (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE
SetParsingDone() (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE
StringKnobSummary()LEVEL_BASE::KNOB_BASE
StringLongAll()LEVEL_BASE::KNOB_BASE
Type()=0 (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [pure virtual]
ValueString(const UINT32 index) const =0 (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [pure virtual]
WasDeveloperFlagsEnabled() (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE
WasParsingDone() (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE
~KNOB_BASE() (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [inline, virtual]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1KNOB__BASE.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1KNOB__BASE.html new file mode 100755 index 0000000..a7dcf72 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1KNOB__BASE.html @@ -0,0 +1,164 @@ + + + + +Pin: LEVEL_BASE::KNOB_BASE Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
LEVEL_BASE::KNOB_BASE Class Reference
+
+
+ +

List of all members.

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

+Public Member Functions

 KNOB_BASE (const std::string &myprefix, const std::string &myname, const std::string &myfamily, const std::string &mydefault, const std::string &mypurpose, KNOB_MODE mymode=KNOB_MODE_WRITEONCE)
+virtual const std::string Type ()=0
+KNOB_MODE Mode () const
+const std::string & Family () const
+const std::string & Name () const
+std::string Cmd () const
+BOOL Enabled () const
STATIC VOID CheckAllKnobs (BOOL allowDashes=FALSE)
STATIC UINT32 NumberOfKnobs ()
STATIC VOID DisableKnobFamily (const std::string &myfamily)
STATIC VOID EnableKnobFamily (const std::string &myfamily)
+STATIC VOID SetDeveloperFlagsEnabled ()
+STATIC BOOL WasDeveloperFlagsEnabled ()
STATIC VOID DisableKnob (const std::string &myname)
STATIC VOID EnableKnob (const std::string &myname)
STATIC std::string StringKnobSummary ()
STATIC std::string StringLongAll ()
STATIC KNOB_BASEFindKnob (const std::string &name)
STATIC KNOB_BASEFindFamily (const std::string &name)
STATIC KNOB_BASEFindEnabledKnob (const std::string &name)
+STATIC VOID SetParsingDone ()
+STATIC BOOL WasParsingDone ()
int Compare (const KNOB_BASE &k2) const
+virtual const std::string & ValueString (const UINT32 index) const =0
+virtual UINT32 NumberOfValues () const =0
+virtual VOID AddValue (const std::string &valstring)=0

+Protected Attributes

+KNOB_BASE_next
+const std::string _family
+const std::string _name
+const std::string _purpose
+const std::string _default_value
+const KNOB_MODE _mode
+BOOL _disabled
+INT32 _nreads
+INT32 _nwrites
+

Detailed Description

+

keeps maintenance information that is independent of knob type

+

The documentation for this class was generated from the following file:
    +
  • knob.cpp
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1KNOB__COMMENT-members.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1KNOB__COMMENT-members.html new file mode 100755 index 0000000..72a89a1 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1KNOB__COMMENT-members.html @@ -0,0 +1,134 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
LEVEL_BASE::KNOB_COMMENT Member List
+
+
+This is the complete list of members for LEVEL_BASE::KNOB_COMMENT, including all inherited members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_default_value (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [protected]
_disabled (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [protected]
_family (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [protected]
_mode (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [protected]
_name (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [protected]
_next (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [protected]
_nreads (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [protected]
_nwrites (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [protected]
_purpose (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [protected]
AddValue(const std::string &valstring) (defined in LEVEL_BASE::KNOB< BOOL >)LEVEL_BASE::KNOB< BOOL > [inline, virtual]
CheckAllKnobs(BOOL allowDashes=FALSE)LEVEL_BASE::KNOB_BASE
Cmd() const (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [inline]
Compare(const KNOB_BASE &k2) const LEVEL_BASE::KNOB_BASE
DisableKnob(const std::string &myname)LEVEL_BASE::KNOB_BASE
DisableKnobFamily(const std::string &myfamily)LEVEL_BASE::KNOB_BASE
Enabled() const (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [inline]
EnableKnob(const std::string &myname)LEVEL_BASE::KNOB_BASE
EnableKnobFamily(const std::string &myfamily)LEVEL_BASE::KNOB_BASE
Family() const (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [inline]
FindEnabledKnob(const std::string &name)LEVEL_BASE::KNOB_BASE
FindFamily(const std::string &name)LEVEL_BASE::KNOB_BASE
FindKnob(const std::string &name)LEVEL_BASE::KNOB_BASE
KNOB(KNOB_MODE mymode, const std::string &myfamily, const std::string &myname, const std::string &mydefault, const std::string &mypurpose, const std::string &myprefix="") (defined in LEVEL_BASE::KNOB< BOOL >)LEVEL_BASE::KNOB< BOOL > [inline]
KNOB_BASE(const std::string &myprefix, const std::string &myname, const std::string &myfamily, const std::string &mydefault, const std::string &mypurpose, KNOB_MODE mymode=KNOB_MODE_WRITEONCE)LEVEL_BASE::KNOB_BASE
KNOB_COMMENT(const std::string &family, const std::string &purpose) (defined in LEVEL_BASE::KNOB_COMMENT)LEVEL_BASE::KNOB_COMMENT [inline]
Mode() const (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [inline]
Name() const (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [inline]
NumberOfKnobs()LEVEL_BASE::KNOB_BASE
NumberOfValues() const (defined in LEVEL_BASE::KNOB< BOOL >)LEVEL_BASE::KNOB< BOOL > [inline, virtual]
operator BOOL() const (defined in LEVEL_BASE::KNOB< BOOL >)LEVEL_BASE::KNOB< BOOL > [inline]
SetDeveloperFlagsEnabled() (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE
SetParsingDone() (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE
StringKnobSummary()LEVEL_BASE::KNOB_BASE
StringLongAll()LEVEL_BASE::KNOB_BASE
Type() (defined in LEVEL_BASE::KNOB< BOOL >)LEVEL_BASE::KNOB< BOOL > [inline, virtual]
Value() const (defined in LEVEL_BASE::KNOB< BOOL >)LEVEL_BASE::KNOB< BOOL > [inline]
Value(const UINT32 index) (defined in LEVEL_BASE::KNOB< BOOL >)LEVEL_BASE::KNOB< BOOL > [inline]
ValueString() const (defined in LEVEL_BASE::KNOB< BOOL >)LEVEL_BASE::KNOB< BOOL > [inline]
ValueString(const UINT32 index) const (defined in LEVEL_BASE::KNOB< BOOL >)LEVEL_BASE::KNOB< BOOL > [inline, virtual]
WasDeveloperFlagsEnabled() (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE
WasParsingDone() (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE
~KNOB_BASE() (defined in LEVEL_BASE::KNOB_BASE)LEVEL_BASE::KNOB_BASE [inline, virtual]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1KNOB__COMMENT.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1KNOB__COMMENT.html new file mode 100755 index 0000000..8891ef9 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1KNOB__COMMENT.html @@ -0,0 +1,106 @@ + + + + +Pin: LEVEL_BASE::KNOB_COMMENT Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
LEVEL_BASE::KNOB_COMMENT Class Reference
+
+
+ +

List of all members.

+ + + +

+Public Member Functions

KNOB_COMMENT (const std::string &family, const std::string &purpose)
+

Detailed Description

+

Family/comment knob

+

The documentation for this class was generated from the following file:
    +
  • knob.cpp
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1PARSER-members.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1PARSER-members.html new file mode 100755 index 0000000..589d9ef --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1PARSER-members.html @@ -0,0 +1,98 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
LEVEL_BASE::PARSER Member List
+
+
+This is the complete list of members for LEVEL_BASE::PARSER, including all inherited members. + + + + + + +
ExtractArgumentsApp(INT32 argc, CHAR **argv, INT32 *aargc, CHAR ***aargv)LEVEL_BASE::PARSER [static]
ExtractArgumentsPin(INT32 argc, CHAR **argv, INT32 *pargc, CHAR ***pargv)LEVEL_BASE::PARSER [static]
ExtractArgumentsTool(INT32 argc, CHAR **argv, INT32 *targc, CHAR ***targv)LEVEL_BASE::PARSER [static]
GetToolNameArgs(INT32 argc, const CHAR *const *argv, INT32 *targIndex, INT32 *t64argIndex)LEVEL_BASE::PARSER [static]
SetPinClientKnobs(INT32 pinClientArgc, const CHAR *const *pinClientArgv, std::string *pErrorMsg, PIN_ERRTYPE *pErrorType, BOOL ignoreUnknownKnobs=FALSE)LEVEL_BASE::PARSER [static]
SetPinKnobs(INT32 pinArgc, const CHAR *const *pinArgv, std::string *pErrorMsg, PIN_ERRTYPE *pErrorType, BOOL ignoreUnknownKnobs=FALSE)LEVEL_BASE::PARSER [static]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1PARSER.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1PARSER.html new file mode 100755 index 0000000..fc99236 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1PARSER.html @@ -0,0 +1,424 @@ + + + + +Pin: LEVEL_BASE::PARSER Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
LEVEL_BASE::PARSER Class Reference
+
+
+ +

List of all members.

+ + + + + + + + +

+Static Public Member Functions

static BOOL ExtractArgumentsPin (INT32 argc, CHAR **argv, INT32 *pargc, CHAR ***pargv)
static BOOL ExtractArgumentsTool (INT32 argc, CHAR **argv, INT32 *targc, CHAR ***targv)
static BOOL ExtractArgumentsApp (INT32 argc, CHAR **argv, INT32 *aargc, CHAR ***aargv)
static BOOL SetPinKnobs (INT32 pinArgc, const CHAR *const *pinArgv, std::string *pErrorMsg, PIN_ERRTYPE *pErrorType, BOOL ignoreUnknownKnobs=FALSE)
static BOOL SetPinClientKnobs (INT32 pinClientArgc, const CHAR *const *pinClientArgv, std::string *pErrorMsg, PIN_ERRTYPE *pErrorType, BOOL ignoreUnknownKnobs=FALSE)
static VOID GetToolNameArgs (INT32 argc, const CHAR *const *argv, INT32 *targIndex, INT32 *t64argIndex)
+

Detailed Description

+

class that provides parsing utilities

+

Member Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static BOOL LEVEL_BASE::PARSER::ExtractArgumentsApp (INT32 argc,
CHAR ** argv,
INT32 * aargc,
CHAR *** aargv 
) [static]
+
+
+

Helper function for application command line arguments

+
Parameters:
+ + + + + +
[in]argc- size of original argv array
[in]argv- array of original argv
[out]aargc- size of application's command line array
[out]aargv- array of application's command line
+
+
+
Returns:
TRUE upon success, FALSE upon failure.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static BOOL LEVEL_BASE::PARSER::ExtractArgumentsPin (INT32 argc,
CHAR ** argv,
INT32 * pargc,
CHAR *** pargv 
) [static]
+
+
+

Helper function for pin command line argument processing

+
Parameters:
+ + + + + +
[in]argc- size of original argv array
[in]argv- array of original argv
[out]pargc- size of pin's command line array
[out]pargv- array of pin's command line
+
+
+
Returns:
TRUE upon success, FALSE upon failure.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static BOOL LEVEL_BASE::PARSER::ExtractArgumentsTool (INT32 argc,
CHAR ** argv,
INT32 * targc,
CHAR *** targv 
) [static]
+
+
+

Helper function for tool command line argument processing

+
Parameters:
+ + + + + +
[in]argc- size of original argv array
[in]argv- array of original argv
[out]targc- size of tool's command line array
[out]targv- array of tool's command line
+
+
+
Returns:
TRUE upon success, FALSE upon failure.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static VOID LEVEL_BASE::PARSER::GetToolNameArgs (INT32 argc,
const CHAR *const * argv,
INT32 * targIndex,
INT32 * t64argIndex 
) [static]
+
+
+

Get indexes of Pintool name option's argument

+
Parameters:
+ + + + + +
[in]argc- size of original argv array
[in]argv- array of original argv
[out]targIndex- pointer to index of argument of "-t" option in argv array
[out]t64argIndex- pointer to index of argument of "-t64" option in argv array
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static BOOL LEVEL_BASE::PARSER::SetPinClientKnobs (INT32 pinClientArgc,
const CHAR *const * pinClientArgv,
std::string * pErrorMsg,
PIN_ERRTYPEpErrorType,
BOOL ignoreUnknownKnobs = FALSE 
) [static]
+
+
+

Set pin client knobs based on tool command line

+
Parameters:
+ + + + + + +
[in]pinArgcargc of pin command line
[in]pinArgvargv of pin command line
[out]pErrorMsgstorage for the returned error message. valid upon function failure.
[out]pErrorTypestorage for the returned error type. valid upon function failure.
[in]ignoreUnknownKnobsshould an error be reported if unknown option is specified?
+
+
+
Returns:
TRUE upon success, FALSE upon failure
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static BOOL LEVEL_BASE::PARSER::SetPinKnobs (INT32 pinArgc,
const CHAR *const * pinArgv,
std::string * pErrorMsg,
PIN_ERRTYPEpErrorType,
BOOL ignoreUnknownKnobs = FALSE 
) [static]
+
+
+

Set pin knobs based on pin command line

+
Parameters:
+ + + + + + +
[in]pinArgcargc of pin command line
[in]pinArgvargv of pin command line
[out]pErrorMsgstorage for the returned error message. valid upon function failure.
[out]pErrorTypestorage for the returned error type. valid upon function failure.
[in]ignoreUnknownKnobsshould an error be reported if unknown option is specified?
+
+
+
Returns:
TRUE upon success, FALSE upon failure
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • parser.cpp
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1PIN__ERROR__DESCRIPTOR-members.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1PIN__ERROR__DESCRIPTOR-members.html new file mode 100755 index 0000000..7080b14 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1PIN__ERROR__DESCRIPTOR-members.html @@ -0,0 +1,92 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
LEVEL_BASE::PIN_ERROR_DESCRIPTOR Member List
+
+
+This is the complete list of members for LEVEL_BASE::PIN_ERROR_DESCRIPTOR, including all inherited members. +
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1PIN__ERROR__DESCRIPTOR.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1PIN__ERROR__DESCRIPTOR.html new file mode 100755 index 0000000..4481b34 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1PIN__ERROR__DESCRIPTOR.html @@ -0,0 +1,98 @@ + + + + +Pin: LEVEL_BASE::PIN_ERROR_DESCRIPTOR Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
LEVEL_BASE::PIN_ERROR_DESCRIPTOR Class Reference
+
+
+ +

List of all members.

+ +
+
The documentation for this class was generated from the following file:
    +
  • errfile.cpp
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1SimpleXMLParser-members.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1SimpleXMLParser-members.html new file mode 100755 index 0000000..59719c1 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1SimpleXMLParser-members.html @@ -0,0 +1,99 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
LEVEL_BASE::SimpleXMLParser Member List
+
+
+This is the complete list of members for LEVEL_BASE::SimpleXMLParser, including all inherited members. + + + + + + + +
getElementName(size_t n)LEVEL_BASE::SimpleXMLParser [inline, protected]
getElementsStackCount()LEVEL_BASE::SimpleXMLParser [inline, protected]
getErrorString()LEVEL_BASE::SimpleXMLParser [inline]
getInnermostElementText()LEVEL_BASE::SimpleXMLParser [inline, protected]
parse()LEVEL_BASE::SimpleXMLParser
SimpleXMLParser(std::istream *input)LEVEL_BASE::SimpleXMLParser [inline]
visitNode()=0LEVEL_BASE::SimpleXMLParser [protected, pure virtual]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1SimpleXMLParser.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1SimpleXMLParser.html new file mode 100755 index 0000000..3f2ccea --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__BASE_1_1SimpleXMLParser.html @@ -0,0 +1,252 @@ + + + + +Pin: LEVEL_BASE::SimpleXMLParser Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
LEVEL_BASE::SimpleXMLParser Class Reference
+
+
+ +

List of all members.

+ + + + + + + + + + +

+Public Member Functions

 SimpleXMLParser (std::istream *input)
bool parse ()
std::string getErrorString ()

+Protected Member Functions

virtual void visitNode ()=0
size_t getElementsStackCount ()
const std::string & getElementName (size_t n)
std::string getInnermostElementText ()
+

Detailed Description

+

class that provides XML parsing capabilities

+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + +
LEVEL_BASE::SimpleXMLParser::SimpleXMLParser (std::istream * input) [inline]
+
+
+

Creates a new XML parser instance.

+
Parameters:
+ + +
[in]input- Pointer to an instance of istream from while the XML can be read.
+
+
+ +
+
+

Member Function Documentation

+ +
+
+ + + + + + + + +
const std::string& LEVEL_BASE::SimpleXMLParser::getElementName (size_t n) [inline, protected]
+
+
+

Gets the name of one of the nested nodes we're currently visiting (valid only inside visitNode()).

+
Parameters:
+ + +
[in]n- The nesting level of the node that we want to get its name. while 0 being the outermode node.
+
+
+
Returns:
The name of the n-th node.
+ +
+
+ +
+
+ + + + + + + +
size_t LEVEL_BASE::SimpleXMLParser::getElementsStackCount () [inline, protected]
+
+
+
Returns:
The number of nested nodes we're currently visiting (valid only inside visitNode()).
+ +
+
+ +
+
+ + + + + + + +
std::string LEVEL_BASE::SimpleXMLParser::getErrorString () [inline]
+
+
+

Get a string denoting the last error reason. Valid only after calling parse().

+
Returns:
String with error message.
+ +
+
+ +
+
+ + + + + + + +
std::string LEVEL_BASE::SimpleXMLParser::getInnermostElementText () [inline, protected]
+
+
+
Returns:
The text in the innermost node that is being parsed (valid only inside visitNode()).
+ +
+
+ +
+
+ + + + + + + +
bool LEVEL_BASE::SimpleXMLParser::parse ()
+
+
+

Parse the XML by reading characters from the input stream.

+
Returns:
TRUE upon success, FALSE upon failure.
+ +
+
+ +
+
+ + + + + + + +
virtual void LEVEL_BASE::SimpleXMLParser::visitNode () [protected, pure virtual]
+
+
+

This function should be overriden by subclasses of this class. It is called after parsing on each XML node (particularily when the parser encounters the node closes token).

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • xml_parser.cpp
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__CORE_1_1BBL__EDG__CONTAINER__PRED-members.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__CORE_1_1BBL__EDG__CONTAINER__PRED-members.html new file mode 100755 index 0000000..0de8899 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__CORE_1_1BBL__EDG__CONTAINER__PRED-members.html @@ -0,0 +1,100 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
LEVEL_CORE::BBL_EDG_CONTAINER_PRED Member List
+
+
+This is the complete list of members for LEVEL_CORE::BBL_EDG_CONTAINER_PRED, including all inherited members. + + + + + + + + +
child_nil() (defined in LEVEL_CORE::BBL_EDG_CONTAINER_PRED)LEVEL_CORE::BBL_EDG_CONTAINER_PRED [inline]
head(BBL bbl) (defined in LEVEL_CORE::BBL_EDG_CONTAINER_PRED)LEVEL_CORE::BBL_EDG_CONTAINER_PRED [inline]
head_set(BBL bbl, EDG x) (defined in LEVEL_CORE::BBL_EDG_CONTAINER_PRED)LEVEL_CORE::BBL_EDG_CONTAINER_PRED [inline]
next(EDG edg) (defined in LEVEL_CORE::BBL_EDG_CONTAINER_PRED)LEVEL_CORE::BBL_EDG_CONTAINER_PRED [inline]
next_set(EDG edg, EDG x) (defined in LEVEL_CORE::BBL_EDG_CONTAINER_PRED)LEVEL_CORE::BBL_EDG_CONTAINER_PRED [inline]
parent_nil() (defined in LEVEL_CORE::BBL_EDG_CONTAINER_PRED)LEVEL_CORE::BBL_EDG_CONTAINER_PRED [inline]
up(EDG edg) (defined in LEVEL_CORE::BBL_EDG_CONTAINER_PRED)LEVEL_CORE::BBL_EDG_CONTAINER_PRED [inline]
up_set(EDG edg, BBL x) (defined in LEVEL_CORE::BBL_EDG_CONTAINER_PRED)LEVEL_CORE::BBL_EDG_CONTAINER_PRED [inline]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__CORE_1_1BBL__EDG__CONTAINER__PRED.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__CORE_1_1BBL__EDG__CONTAINER__PRED.html new file mode 100755 index 0000000..8d99850 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__CORE_1_1BBL__EDG__CONTAINER__PRED.html @@ -0,0 +1,118 @@ + + + + +Pin: LEVEL_CORE::BBL_EDG_CONTAINER_PRED Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
LEVEL_CORE::BBL_EDG_CONTAINER_PRED Class Reference
+
+
+ +

List of all members.

+ + + + + + + + + + +

+Public Member Functions

+STATIC EDG child_nil ()
+STATIC BBL parent_nil ()
+STATIC EDG next (EDG edg)
+STATIC BBL up (EDG edg)
+STATIC VOID next_set (EDG edg, EDG x)
+STATIC VOID up_set (EDG edg, BBL x)
+STATIC EDG head (BBL bbl)
+STATIC VOID head_set (BBL bbl, EDG x)
+
The documentation for this class was generated from the following file:
    +
  • edg.cpp
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__CORE_1_1BBL__EDG__CONTAINER__SUCC-members.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__CORE_1_1BBL__EDG__CONTAINER__SUCC-members.html new file mode 100755 index 0000000..cecf6f8 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__CORE_1_1BBL__EDG__CONTAINER__SUCC-members.html @@ -0,0 +1,100 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
LEVEL_CORE::BBL_EDG_CONTAINER_SUCC Member List
+
+
+This is the complete list of members for LEVEL_CORE::BBL_EDG_CONTAINER_SUCC, including all inherited members. + + + + + + + + +
child_nil() (defined in LEVEL_CORE::BBL_EDG_CONTAINER_SUCC)LEVEL_CORE::BBL_EDG_CONTAINER_SUCC [inline]
head(BBL bbl) (defined in LEVEL_CORE::BBL_EDG_CONTAINER_SUCC)LEVEL_CORE::BBL_EDG_CONTAINER_SUCC [inline]
head_set(BBL bbl, EDG x) (defined in LEVEL_CORE::BBL_EDG_CONTAINER_SUCC)LEVEL_CORE::BBL_EDG_CONTAINER_SUCC [inline]
next(EDG edg) (defined in LEVEL_CORE::BBL_EDG_CONTAINER_SUCC)LEVEL_CORE::BBL_EDG_CONTAINER_SUCC [inline]
next_set(EDG edg, EDG x) (defined in LEVEL_CORE::BBL_EDG_CONTAINER_SUCC)LEVEL_CORE::BBL_EDG_CONTAINER_SUCC [inline]
parent_nil() (defined in LEVEL_CORE::BBL_EDG_CONTAINER_SUCC)LEVEL_CORE::BBL_EDG_CONTAINER_SUCC [inline]
up(EDG edg) (defined in LEVEL_CORE::BBL_EDG_CONTAINER_SUCC)LEVEL_CORE::BBL_EDG_CONTAINER_SUCC [inline]
up_set(EDG edg, BBL x) (defined in LEVEL_CORE::BBL_EDG_CONTAINER_SUCC)LEVEL_CORE::BBL_EDG_CONTAINER_SUCC [inline]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__CORE_1_1BBL__EDG__CONTAINER__SUCC.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__CORE_1_1BBL__EDG__CONTAINER__SUCC.html new file mode 100755 index 0000000..7b41b9c --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__CORE_1_1BBL__EDG__CONTAINER__SUCC.html @@ -0,0 +1,118 @@ + + + + +Pin: LEVEL_CORE::BBL_EDG_CONTAINER_SUCC Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
LEVEL_CORE::BBL_EDG_CONTAINER_SUCC Class Reference
+
+
+ +

List of all members.

+ + + + + + + + + + +

+Public Member Functions

+STATIC EDG child_nil ()
+STATIC BBL parent_nil ()
+STATIC EDG next (EDG edg)
+STATIC BBL up (EDG edg)
+STATIC VOID next_set (EDG edg, EDG x)
+STATIC VOID up_set (EDG edg, BBL x)
+STATIC EDG head (BBL bbl)
+STATIC VOID head_set (BBL bbl, EDG x)
+
The documentation for this class was generated from the following file:
    +
  • edg.cpp
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__CORE_1_1CHUNK__REL__CONTAINER-members.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__CORE_1_1CHUNK__REL__CONTAINER-members.html new file mode 100755 index 0000000..a32b41d --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__CORE_1_1CHUNK__REL__CONTAINER-members.html @@ -0,0 +1,104 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
LEVEL_CORE::CHUNK_REL_CONTAINER Member List
+
+
+This is the complete list of members for LEVEL_CORE::CHUNK_REL_CONTAINER, including all inherited members. + + + + + + + + + + + + +
child_nil() (defined in LEVEL_CORE::CHUNK_REL_CONTAINER)LEVEL_CORE::CHUNK_REL_CONTAINER [inline]
head(CHUNK chunk) (defined in LEVEL_CORE::CHUNK_REL_CONTAINER)LEVEL_CORE::CHUNK_REL_CONTAINER [inline]
head_set(CHUNK chunk, REL x) (defined in LEVEL_CORE::CHUNK_REL_CONTAINER)LEVEL_CORE::CHUNK_REL_CONTAINER [inline]
next(REL rel) (defined in LEVEL_CORE::CHUNK_REL_CONTAINER)LEVEL_CORE::CHUNK_REL_CONTAINER [inline]
next_set(REL rel, REL x) (defined in LEVEL_CORE::CHUNK_REL_CONTAINER)LEVEL_CORE::CHUNK_REL_CONTAINER [inline]
parent_nil() (defined in LEVEL_CORE::CHUNK_REL_CONTAINER)LEVEL_CORE::CHUNK_REL_CONTAINER [inline]
prev(REL rel) (defined in LEVEL_CORE::CHUNK_REL_CONTAINER)LEVEL_CORE::CHUNK_REL_CONTAINER [inline]
prev_set(REL rel, REL x) (defined in LEVEL_CORE::CHUNK_REL_CONTAINER)LEVEL_CORE::CHUNK_REL_CONTAINER [inline]
tail(CHUNK chunk) (defined in LEVEL_CORE::CHUNK_REL_CONTAINER)LEVEL_CORE::CHUNK_REL_CONTAINER [inline]
tail_set(CHUNK chunk, REL x) (defined in LEVEL_CORE::CHUNK_REL_CONTAINER)LEVEL_CORE::CHUNK_REL_CONTAINER [inline]
up(REL rel) (defined in LEVEL_CORE::CHUNK_REL_CONTAINER)LEVEL_CORE::CHUNK_REL_CONTAINER [inline]
up_set(REL rel, CHUNK x) (defined in LEVEL_CORE::CHUNK_REL_CONTAINER)LEVEL_CORE::CHUNK_REL_CONTAINER [inline]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__CORE_1_1CHUNK__REL__CONTAINER.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__CORE_1_1CHUNK__REL__CONTAINER.html new file mode 100755 index 0000000..44e8f43 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__CORE_1_1CHUNK__REL__CONTAINER.html @@ -0,0 +1,127 @@ + + + + +Pin: LEVEL_CORE::CHUNK_REL_CONTAINER Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
LEVEL_CORE::CHUNK_REL_CONTAINER Class Reference
+
+
+ +

List of all members.

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

+Public Member Functions

+STATIC REL child_nil ()
+STATIC CHUNK parent_nil ()
+STATIC REL prev (REL rel)
+STATIC REL next (REL rel)
+STATIC CHUNK up (REL rel)
+STATIC VOID prev_set (REL rel, REL x)
+STATIC VOID next_set (REL rel, REL x)
+STATIC VOID up_set (REL rel, CHUNK x)
+STATIC REL head (CHUNK chunk)
+STATIC REL tail (CHUNK chunk)
+STATIC VOID head_set (CHUNK chunk, REL x)
+STATIC VOID tail_set (CHUNK chunk, REL x)
+

Detailed Description

+

The documentation for this class was generated from the following file:
    +
  • rel.cpp
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__CORE_1_1REGISTER__SET-members.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__CORE_1_1REGISTER__SET-members.html new file mode 100755 index 0000000..6a50bba --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__CORE_1_1REGISTER__SET-members.html @@ -0,0 +1,120 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
LEVEL_CORE::REGISTER_SET< _min, _max > Member List
+
+
+This is the complete list of members for LEVEL_CORE::REGISTER_SET< _min, _max >, including all inherited members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Clear() (defined in LEVEL_CORE::REGISTER_SET< _min, _max >)LEVEL_CORE::REGISTER_SET< _min, _max > [inline]
Contains(REG reg_no) const (defined in LEVEL_CORE::REGISTER_SET< _min, _max >)LEVEL_CORE::REGISTER_SET< _min, _max > [inline]
Dump() const (defined in LEVEL_CORE::REGISTER_SET< _min, _max >)LEVEL_CORE::REGISTER_SET< _min, _max > [inline]
HashKey() const (defined in LEVEL_CORE::REGISTER_SET< _min, _max >)LEVEL_CORE::REGISTER_SET< _min, _max > [inline]
Insert(REG reg_no) (defined in LEVEL_CORE::REGISTER_SET< _min, _max >)LEVEL_CORE::REGISTER_SET< _min, _max > [inline]
InsertAll() (defined in LEVEL_CORE::REGISTER_SET< _min, _max >)LEVEL_CORE::REGISTER_SET< _min, _max > [inline]
InsertVector(REG reg_no, UINT32 vector) (defined in LEVEL_CORE::REGISTER_SET< _min, _max >)LEVEL_CORE::REGISTER_SET< _min, _max > [inline]
Invert() (defined in LEVEL_CORE::REGISTER_SET< _min, _max >)LEVEL_CORE::REGISTER_SET< _min, _max > [inline]
Max() const (defined in LEVEL_CORE::REGISTER_SET< _min, _max >)LEVEL_CORE::REGISTER_SET< _min, _max > [inline]
Min() const (defined in LEVEL_CORE::REGISTER_SET< _min, _max >)LEVEL_CORE::REGISTER_SET< _min, _max > [inline]
operator!=(const REGISTER_SET &b) const (defined in LEVEL_CORE::REGISTER_SET< _min, _max >)LEVEL_CORE::REGISTER_SET< _min, _max > [inline]
operator&(const REGISTER_SET &b) const (defined in LEVEL_CORE::REGISTER_SET< _min, _max >)LEVEL_CORE::REGISTER_SET< _min, _max > [inline]
operator&=(const REGISTER_SET &b) (defined in LEVEL_CORE::REGISTER_SET< _min, _max >)LEVEL_CORE::REGISTER_SET< _min, _max > [inline]
operator-(const REGISTER_SET &b) const (defined in LEVEL_CORE::REGISTER_SET< _min, _max >)LEVEL_CORE::REGISTER_SET< _min, _max > [inline]
operator-=(const REGISTER_SET &b) (defined in LEVEL_CORE::REGISTER_SET< _min, _max >)LEVEL_CORE::REGISTER_SET< _min, _max > [inline]
operator==(const REGISTER_SET &b) const (defined in LEVEL_CORE::REGISTER_SET< _min, _max >)LEVEL_CORE::REGISTER_SET< _min, _max > [inline]
operator|(const REGISTER_SET &b) const (defined in LEVEL_CORE::REGISTER_SET< _min, _max >)LEVEL_CORE::REGISTER_SET< _min, _max > [inline]
operator|=(const REGISTER_SET &b) (defined in LEVEL_CORE::REGISTER_SET< _min, _max >)LEVEL_CORE::REGISTER_SET< _min, _max > [inline]
PopCount() const (defined in LEVEL_CORE::REGISTER_SET< _min, _max >)LEVEL_CORE::REGISTER_SET< _min, _max > [inline]
PopCountIsZero() const (defined in LEVEL_CORE::REGISTER_SET< _min, _max >)LEVEL_CORE::REGISTER_SET< _min, _max > [inline]
PopNext() (defined in LEVEL_CORE::REGISTER_SET< _min, _max >)LEVEL_CORE::REGISTER_SET< _min, _max > [inline]
PopNextFast() (defined in LEVEL_CORE::REGISTER_SET< _min, _max >)LEVEL_CORE::REGISTER_SET< _min, _max > [inline]
PrintRange(REG start, REG stop) (defined in LEVEL_CORE::REGISTER_SET< _min, _max >)LEVEL_CORE::REGISTER_SET< _min, _max > [inline]
REGISTER_SET() (defined in LEVEL_CORE::REGISTER_SET< _min, _max >)LEVEL_CORE::REGISTER_SET< _min, _max > [inline]
REGISTER_SET(UINT32 first, UINT32 last) (defined in LEVEL_CORE::REGISTER_SET< _min, _max >)LEVEL_CORE::REGISTER_SET< _min, _max > [inline]
Remove(REG reg_no) (defined in LEVEL_CORE::REGISTER_SET< _min, _max >)LEVEL_CORE::REGISTER_SET< _min, _max > [inline]
String() const (defined in LEVEL_CORE::REGISTER_SET< _min, _max >)LEVEL_CORE::REGISTER_SET< _min, _max > [inline]
StringList() const (defined in LEVEL_CORE::REGISTER_SET< _min, _max >)LEVEL_CORE::REGISTER_SET< _min, _max > [inline]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__CORE_1_1REGISTER__SET.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__CORE_1_1REGISTER__SET.html new file mode 100755 index 0000000..ba1e17b --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__CORE_1_1REGISTER__SET.html @@ -0,0 +1,159 @@ + + + + +Pin: LEVEL_CORE::REGISTER_SET< _min, _max > Class Template Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
LEVEL_CORE::REGISTER_SET< _min, _max > Class Template Reference
+
+
+ +

List of all members.

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

+Public Member Functions

REGISTER_SET (UINT32 first, UINT32 last)
+REG Min () const
+REG Max () const
+BOOL Contains (REG reg_no) const
+VOID InsertVector (REG reg_no, UINT32 vector)
+VOID InsertAll ()
+VOID Insert (REG reg_no)
+VOID Remove (REG reg_no)
+VOID Clear ()
+VOID Invert ()
+REG PopNext ()
+REG PopNextFast ()
+UINT32 PopCount () const
+BOOL PopCountIsZero () const
+UINT32 HashKey () const
+REGISTER_SET operator| (const REGISTER_SET &b) const
+REGISTER_SEToperator|= (const REGISTER_SET &b)
+int operator== (const REGISTER_SET &b) const
+int operator!= (const REGISTER_SET &b) const
+REGISTER_SET operator& (const REGISTER_SET &b) const
+REGISTER_SEToperator&= (const REGISTER_SET &b)
+REGISTER_SET operator- (const REGISTER_SET &b) const
+REGISTER_SEToperator-= (const REGISTER_SET &b)
+STATIC std::string PrintRange (REG start, REG stop)
+std::string Dump () const
+std::string String () const
+std::string StringList () const
+

template<UINT32 _min, UINT32 _max>
+ class LEVEL_CORE::REGISTER_SET< _min, _max >

+ +
The documentation for this class was generated from the following file:
    +
  • regset.cpp
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1CLIENT__TLS-members.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1CLIENT__TLS-members.html new file mode 100755 index 0000000..c0766e8 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1CLIENT__TLS-members.html @@ -0,0 +1,103 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
LEVEL_PINCLIENT::CLIENT_TLS Member List
+
+
+This is the complete list of members for LEVEL_PINCLIENT::CLIENT_TLS, including all inherited members. + + + + + + + + + + + +
AllocateKey(DESTRUCTFUN destructFun=NULL)LEVEL_PINCLIENT::CLIENT_TLS
DestructThreadTls(THREADID threadId)LEVEL_PINCLIENT::CLIENT_TLS
DUMMY_GCC32 (defined in LEVEL_PINCLIENT::CLIENT_TLS)LEVEL_PINCLIENT::CLIENT_TLS [friend]
FreeKey(TLS_KEY tlsKey)LEVEL_PINCLIENT::CLIENT_TLS
GetData(TLS_KEY tlsKey, THREADID threadId)LEVEL_PINCLIENT::CLIENT_TLS [inline, static]
InitCurrentTls(THREADID currentThreadId)LEVEL_PINCLIENT::CLIENT_TLS
Instance()LEVEL_PINCLIENT::CLIENT_TLS [static]
IsCurrentTlsAllocated(THREADID currentThreadId)LEVEL_PINCLIENT::CLIENT_TLS
IsKeyAllocated(TLS_KEY tlsKey)LEVEL_PINCLIENT::CLIENT_TLS
IsValidTlsKey(TLS_KEY tlsKey, THREADID threadId)LEVEL_PINCLIENT::CLIENT_TLS [inline, static]
SetData(TLS_KEY tlsKey, const VOID *value, THREADID threadId)LEVEL_PINCLIENT::CLIENT_TLS [inline, static]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1CLIENT__TLS.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1CLIENT__TLS.html new file mode 100755 index 0000000..c98a429 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1CLIENT__TLS.html @@ -0,0 +1,371 @@ + + + + +Pin: LEVEL_PINCLIENT::CLIENT_TLS Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
LEVEL_PINCLIENT::CLIENT_TLS Class Reference
+
+
+ +

List of all members.

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

+Public Member Functions

TLS_KEY AllocateKey (DESTRUCTFUN destructFun=NULL)
BOOL FreeKey (TLS_KEY tlsKey)
BOOL IsKeyAllocated (TLS_KEY tlsKey)
VOID InitCurrentTls (THREADID currentThreadId)
VOID DestructThreadTls (THREADID threadId)
BOOL IsCurrentTlsAllocated (THREADID currentThreadId)

+Static Public Member Functions

static VOID * GetData (TLS_KEY tlsKey, THREADID threadId)
static BOOL SetData (TLS_KEY tlsKey, const VOID *value, THREADID threadId)
static BOOL IsValidTlsKey (TLS_KEY tlsKey, THREADID threadId)
static CLIENT_TLSInstance ()

+Friends

+class DUMMY_GCC32
+

Detailed Description

+

Singleton that keeps client's TLS data for all active threads

+

Member Function Documentation

+ +
+
+ + + + + + + + +
TLS_KEY LEVEL_PINCLIENT::CLIENT_TLS::AllocateKey (DESTRUCTFUN destructFun = NULL)
+
+
+

Allocate a new TLS key and associate it with a given data destruction function. See PIN_CreateThreadDataKey() description.

+ +
+
+ +
+
+ + + + + + + + +
VOID LEVEL_PINCLIENT::CLIENT_TLS::DestructThreadTls (THREADID threadId)
+
+
+

Destruct all per-thread data stored in TLS slots of the given thread. This function is called when the given thread is about to exit, just after notifying the client about thread exit.

+
Parameters:
+ + +
[in]threadIdID of the exiting thread assigned by pin.
+
+
+ +
+
+ +
+
+ + + + + + + + +
BOOL LEVEL_PINCLIENT::CLIENT_TLS::FreeKey (TLS_KEY tlsKey)
+
+
+

Release TLS key, allocated by a previous call to the CreateThreadDataKey() function. See PIN_DeleteThreadDataKey() description.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
static VOID* LEVEL_PINCLIENT::CLIENT_TLS::GetData (TLS_KEY tlsKey,
THREADID threadId 
) [inline, static]
+
+
+

Get/Set the value of the specified TLS slot of the given thread. See PIN_GetThreadData() and PIN_SetThreadData() description.

+
Parameters:
+ + +
[in]threadIdThread 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.
+
+
+
Note:
The Get/SetData functions are defined as static to eliminate overhead of the Instance() function. These functions assume that the Instance() function is invoked at least once before the first call to these functions. This assumption is valid because we enforce Instance() invocation from the static initializer of the <m_pInstance> member.
+ +
+
+ +
+
+ + + + + + + + +
VOID LEVEL_PINCLIENT::CLIENT_TLS::InitCurrentTls (THREADID currentThreadId)
+
+
+

Zero-initialize all TLS slots in the current thread. This function should be called on the thread start but before the client is notified about the new thread.

+
Parameters:
+ + +
[in]currentThreadIdID of the new (current) thread assigned by pin.
+
+
+ +
+
+ +
+
+ + + + + + + +
static CLIENT_TLS* LEVEL_PINCLIENT::CLIENT_TLS::Instance () [static]
+
+
+

Return single instance of this class.

+ +
+
+ +
+
+ + + + + + + + +
BOOL LEVEL_PINCLIENT::CLIENT_TLS::IsCurrentTlsAllocated (THREADID currentThreadId)
+
+
+

Return TRUE if TLS slots are allocated for current thread, FALSE otherwise.

+
Parameters:
+ + +
[in]currentThreadIdID of the current thread assigned by pin.
+
+
+ +
+
+ +
+
+ + + + + + + + +
BOOL LEVEL_PINCLIENT::CLIENT_TLS::IsKeyAllocated (TLS_KEY tlsKey)
+
+
+

Return TRUE if TLS key is allocated by a previous call to the CreateThreadDataKey() function, FALSE otherwise

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
static BOOL LEVEL_PINCLIENT::CLIENT_TLS::IsValidTlsKey (TLS_KEY tlsKey,
THREADID threadId 
) [inline, static]
+
+
+

Check whether the input TLS_KEY is valid.

+
Parameters:
+ + + +
[in]tlsKeyThe TLS key
[in]currentThreadIdID of the current thread assigned by pin.
+
+
+
Returns:
TRUE if TLS key is valid, FALSE otherwise
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
static BOOL LEVEL_PINCLIENT::CLIENT_TLS::SetData (TLS_KEY tlsKey,
const VOID * value,
THREADID threadId 
) [inline, static]
+
+
+

Get/Set the value of the specified TLS slot of the current/given thread. See above.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • tls_client.cpp
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1IMAGE__LOAD__OP-members.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1IMAGE__LOAD__OP-members.html new file mode 100755 index 0000000..98b6a53 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1IMAGE__LOAD__OP-members.html @@ -0,0 +1,94 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
LEVEL_PINCLIENT::IMAGE_LOAD_OP Member List
+
+
+This is the complete list of members for LEVEL_PINCLIENT::IMAGE_LOAD_OP, including all inherited members. + + +
IMAGE_LOAD_OP(const std::string &imageName, const std::string &fileName, ADDRINT lo, UINT32 fl) (defined in LEVEL_PINCLIENT::IMAGE_LOAD_OP)LEVEL_PINCLIENT::IMAGE_LOAD_OP [inline]
processOp() const (defined in LEVEL_PINCLIENT::IMAGE_LOAD_OP)LEVEL_PINCLIENT::IMAGE_LOAD_OP
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1IMAGE__LOAD__OP.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1IMAGE__LOAD__OP.html new file mode 100755 index 0000000..8df9967 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1IMAGE__LOAD__OP.html @@ -0,0 +1,106 @@ + + + + +Pin: LEVEL_PINCLIENT::IMAGE_LOAD_OP Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
LEVEL_PINCLIENT::IMAGE_LOAD_OP Class Reference
+
+
+ +

List of all members.

+ + + + +

+Public Member Functions

IMAGE_LOAD_OP (const std::string &imageName, const std::string &fileName, ADDRINT lo, UINT32 fl)
+IMG processOp () const
+
The documentation for this class was generated from the following file:
    +
  • image.cpp
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1IMAGE__LOAD__OP2-members.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1IMAGE__LOAD__OP2-members.html new file mode 100755 index 0000000..23fe5ca --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1IMAGE__LOAD__OP2-members.html @@ -0,0 +1,94 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
LEVEL_PINCLIENT::IMAGE_LOAD_OP2 Member List
+
+
+This is the complete list of members for LEVEL_PINCLIENT::IMAGE_LOAD_OP2, including all inherited members. + + +
IMAGE_LOAD_OP2(const IMG img) (defined in LEVEL_PINCLIENT::IMAGE_LOAD_OP2)LEVEL_PINCLIENT::IMAGE_LOAD_OP2 [inline]
processOp() const (defined in LEVEL_PINCLIENT::IMAGE_LOAD_OP2)LEVEL_PINCLIENT::IMAGE_LOAD_OP2
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1IMAGE__LOAD__OP2.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1IMAGE__LOAD__OP2.html new file mode 100755 index 0000000..72f4a8b --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1IMAGE__LOAD__OP2.html @@ -0,0 +1,106 @@ + + + + +Pin: LEVEL_PINCLIENT::IMAGE_LOAD_OP2 Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
LEVEL_PINCLIENT::IMAGE_LOAD_OP2 Class Reference
+
+
+ +

List of all members.

+ + + + +

+Public Member Functions

IMAGE_LOAD_OP2 (const IMG img)
+VOID processOp () const
+
The documentation for this class was generated from the following file:
    +
  • image.cpp
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1IMG__IDENTIFIER-members.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1IMG__IDENTIFIER-members.html new file mode 100755 index 0000000..5f78832 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1IMG__IDENTIFIER-members.html @@ -0,0 +1,95 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
LEVEL_PINCLIENT::IMG_IDENTIFIER Member List
+
+
+This is the complete list of members for LEVEL_PINCLIENT::IMG_IDENTIFIER, including all inherited members. + + + +
Find(UINT32 image_id) (defined in LEVEL_PINCLIENT::IMG_IDENTIFIER)LEVEL_PINCLIENT::IMG_IDENTIFIER
Register(IMG img) (defined in LEVEL_PINCLIENT::IMG_IDENTIFIER)LEVEL_PINCLIENT::IMG_IDENTIFIER
Remove(IMG img) (defined in LEVEL_PINCLIENT::IMG_IDENTIFIER)LEVEL_PINCLIENT::IMG_IDENTIFIER
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1IMG__IDENTIFIER.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1IMG__IDENTIFIER.html new file mode 100755 index 0000000..fd5126d --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1IMG__IDENTIFIER.html @@ -0,0 +1,108 @@ + + + + +Pin: LEVEL_PINCLIENT::IMG_IDENTIFIER Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
LEVEL_PINCLIENT::IMG_IDENTIFIER Class Reference
+
+
+ +

List of all members.

+ + + + + +

+Public Member Functions

+STATIC VOID Register (IMG img)
+STATIC VOID Remove (IMG img)
+STATIC IMG Find (UINT32 image_id)
+
The documentation for this class was generated from the following file:
    +
  • image.cpp
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1INSTR-members.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1INSTR-members.html new file mode 100755 index 0000000..a490373 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1INSTR-members.html @@ -0,0 +1,95 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
LEVEL_PINCLIENT::INSTR Member List
+
+
+This is the complete list of members for LEVEL_PINCLIENT::INSTR, including all inherited members. + + + +
_acall (defined in LEVEL_PINCLIENT::INSTR)LEVEL_PINCLIENT::INSTR
_ipoint (defined in LEVEL_PINCLIENT::INSTR)LEVEL_PINCLIENT::INSTR
INSTR(IPOINT ipoint, ACALL const *acall) (defined in LEVEL_PINCLIENT::INSTR)LEVEL_PINCLIENT::INSTR [inline]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1INSTR.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1INSTR.html new file mode 100755 index 0000000..8be4607 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1INSTR.html @@ -0,0 +1,111 @@ + + + + +Pin: LEVEL_PINCLIENT::INSTR Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
LEVEL_PINCLIENT::INSTR Class Reference
+
+
+ +

List of all members.

+ + + + + + +

+Public Member Functions

INSTR (IPOINT ipoint, ACALL const *acall)

+Public Attributes

+ACALL const *const _acall
+const IPOINT _ipoint
+
The documentation for this class was generated from the following file:
    +
  • aoti.cpp
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1INSTR__INFO-members.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1INSTR__INFO-members.html new file mode 100755 index 0000000..382cce8 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1INSTR__INFO-members.html @@ -0,0 +1,96 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
LEVEL_PINCLIENT::INSTR_INFO Member List
+
+
+This is the complete list of members for LEVEL_PINCLIENT::INSTR_INFO, including all inherited members. + + + + +
_acalls (defined in LEVEL_PINCLIENT::INSTR_INFO)LEVEL_PINCLIENT::INSTR_INFO
_mutations (defined in LEVEL_PINCLIENT::INSTR_INFO)LEVEL_PINCLIENT::INSTR_INFO
INSTR_INFO() (defined in LEVEL_PINCLIENT::INSTR_INFO)LEVEL_PINCLIENT::INSTR_INFO [inline]
~INSTR_INFO() (defined in LEVEL_PINCLIENT::INSTR_INFO)LEVEL_PINCLIENT::INSTR_INFO
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1INSTR__INFO.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1INSTR__INFO.html new file mode 100755 index 0000000..c218d7c --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1INSTR__INFO.html @@ -0,0 +1,106 @@ + + + + +Pin: LEVEL_PINCLIENT::INSTR_INFO Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
LEVEL_PINCLIENT::INSTR_INFO Class Reference
+
+
+ +

List of all members.

+ + + + +

+Public Attributes

+ILIST _acalls
+EXT _mutations
+
The documentation for this class was generated from the following file:
    +
  • aoti.cpp
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1REPLACEDFUN-members.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1REPLACEDFUN-members.html new file mode 100755 index 0000000..cfcbd39 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1REPLACEDFUN-members.html @@ -0,0 +1,98 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
LEVEL_PINCLIENT::REPLACEDFUN Member List
+
+
+This is the complete list of members for LEVEL_PINCLIENT::REPLACEDFUN, including all inherited members. + + + + + + +
_acall (defined in LEVEL_PINCLIENT::REPLACEDFUN)LEVEL_PINCLIENT::REPLACEDFUN
_originalfun (defined in LEVEL_PINCLIENT::REPLACEDFUN)LEVEL_PINCLIENT::REPLACEDFUN
_replacementfun (defined in LEVEL_PINCLIENT::REPLACEDFUN)LEVEL_PINCLIENT::REPLACEDFUN
LIST typedef (defined in LEVEL_PINCLIENT::REPLACEDFUN)LEVEL_PINCLIENT::REPLACEDFUN
REPLACEDFUN(AFUNPTR of, AFUNPTR nf) (defined in LEVEL_PINCLIENT::REPLACEDFUN)LEVEL_PINCLIENT::REPLACEDFUN [inline]
REPLACEDFUN(AFUNPTR of, AFUNPTR nf, ACALL const *acall) (defined in LEVEL_PINCLIENT::REPLACEDFUN)LEVEL_PINCLIENT::REPLACEDFUN [inline]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1REPLACEDFUN.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1REPLACEDFUN.html new file mode 100755 index 0000000..4b48561 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1REPLACEDFUN.html @@ -0,0 +1,120 @@ + + + + +Pin: LEVEL_PINCLIENT::REPLACEDFUN Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
LEVEL_PINCLIENT::REPLACEDFUN Class Reference
+
+
+ +

List of all members.

+ + + + + + + + + + +

+Public Types

+typedef std::vector< REPLACEDFUNLIST

+Public Member Functions

REPLACEDFUN (AFUNPTR of, AFUNPTR nf)
REPLACEDFUN (AFUNPTR of, AFUNPTR nf, ACALL const *acall)

+Public Attributes

+AFUNPTR _originalfun
+AFUNPTR _replacementfun
+ACALL const * _acall
+
The documentation for this class was generated from the following file:
    +
  • pin_client.cpp
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1RTN__KEY-members.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1RTN__KEY-members.html new file mode 100755 index 0000000..c9b504c --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1RTN__KEY-members.html @@ -0,0 +1,97 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
LEVEL_PINCLIENT::RTN_KEY Member List
+
+
+This is the complete list of members for LEVEL_PINCLIENT::RTN_KEY, including all inherited members. + + + + + +
_end (defined in LEVEL_PINCLIENT::RTN_KEY)LEVEL_PINCLIENT::RTN_KEY
_start (defined in LEVEL_PINCLIENT::RTN_KEY)LEVEL_PINCLIENT::RTN_KEY
IsPoint() const (defined in LEVEL_PINCLIENT::RTN_KEY)LEVEL_PINCLIENT::RTN_KEY [inline]
RTN_KEY(ADDRINT s, ADDRINT e) (defined in LEVEL_PINCLIENT::RTN_KEY)LEVEL_PINCLIENT::RTN_KEY [inline]
RTN_KEY(ADDRINT s) (defined in LEVEL_PINCLIENT::RTN_KEY)LEVEL_PINCLIENT::RTN_KEY [inline]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1RTN__KEY.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1RTN__KEY.html new file mode 100755 index 0000000..f374915 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1RTN__KEY.html @@ -0,0 +1,115 @@ + + + + +Pin: LEVEL_PINCLIENT::RTN_KEY Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
LEVEL_PINCLIENT::RTN_KEY Class Reference
+
+
+ +

List of all members.

+ + + + + + + + +

+Public Member Functions

RTN_KEY (ADDRINT s, ADDRINT e)
RTN_KEY (ADDRINT s)
+BOOL IsPoint () const

+Public Attributes

+const ADDRINT _start
+const ADDRINT _end
+
The documentation for this class was generated from the following file:
    +
  • image.cpp
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1RTN__OUTSIDE__RANGES-members.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1RTN__OUTSIDE__RANGES-members.html new file mode 100755 index 0000000..d58905d --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1RTN__OUTSIDE__RANGES-members.html @@ -0,0 +1,117 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES Member List
+
+
+This is the complete list of members for LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES, including all inherited members. + + + + + + + + + + + + + + + + + + + + + + + + + +
AddTarget(ADDRINT branchTarget, ADDRINT boundary) (defined in LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES)LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES
DisassembleOutsideRanges() (defined in LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES)LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES
DoProcessOutsideJumps() (defined in LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES)LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES [inline]
FirstIpAfterIntegralRtn() (defined in LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES)LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES [inline]
FixupRtnStartIfNeeded(RTN rtn) (defined in LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES)LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES
HasData() (defined in LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES)LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES [inline]
HasIndirectBranch() (defined in LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES)LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES [inline]
HasIndirectCall() (defined in LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES)LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES [inline]
HaveRet() (defined in LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES)LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES [inline]
HighestJumpTarget() (defined in LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES)LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES [inline]
Initialize(BBL bbl, RTN rtn, ADDRINT rtnStart, ADDRINT rtnEnd, ADDRINT virtual_offset, ADDRINT img_offset, ADDRINT imgTextSectionLowAddr, ADDRINT imgTextSectionHighAddr) (defined in LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES)LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES
LowestJumpTarget() (defined in LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES)LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES [inline]
NumIntegralInss() (defined in LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES)LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES [inline]
PossibleInsideCallLowestTarget() (defined in LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES)LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES [inline]
RecordHighestLowestJumpTarget(ADDRINT jumpTarget) (defined in LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES)LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES [inline]
RecordLastIpInfo(ADDRINT lastIp, UINT32 sizeOfLastIns) (defined in LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES)LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES [inline]
RecordPossibleInsideCall(ADDRINT callTarget) (defined in LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES)LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES [inline]
RecordUJmpIns(INS ins) (defined in LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES)LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES [inline]
SetFirstIpAfterIntegralRtn(const VOID *ip) (defined in LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES)LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES [inline]
SetHasData() (defined in LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES)LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES [inline]
SetHasIndirectBranch() (defined in LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES)LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES [inline]
SetHasIndirectCall() (defined in LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES)LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES [inline]
SetHaveRet() (defined in LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES)LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES [inline]
SetNumIntegralInss(UINT32 num) (defined in LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES)LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES [inline]
SIMPLE_STATIC_SINGLETON< RTN_OUTSIDE_RANGES > (defined in LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES)LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES [friend]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1RTN__OUTSIDE__RANGES.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1RTN__OUTSIDE__RANGES.html new file mode 100755 index 0000000..d1f381b --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1RTN__OUTSIDE__RANGES.html @@ -0,0 +1,155 @@ + + + + +Pin: LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
LEVEL_PINCLIENT::RTN_OUTSIDE_RANGES Class Reference
+
+
+ +

List of all members.

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

+Public Member Functions

+VOID AddTarget (ADDRINT branchTarget, ADDRINT boundary)
+VOID DisassembleOutsideRanges ()
+VOID Initialize (BBL bbl, RTN rtn, ADDRINT rtnStart, ADDRINT rtnEnd, ADDRINT virtual_offset, ADDRINT img_offset, ADDRINT imgTextSectionLowAddr, ADDRINT imgTextSectionHighAddr)
+BOOL DoProcessOutsideJumps ()
+VOID SetHasIndirectCall ()
+BOOL HasIndirectCall ()
+VOID SetHasIndirectBranch ()
+BOOL HasData ()
+VOID SetHasData ()
+BOOL HasIndirectBranch ()
+VOID SetHaveRet ()
+BOOL HaveRet ()
+VOID RecordHighestLowestJumpTarget (ADDRINT jumpTarget)
+ADDRINT HighestJumpTarget ()
+ADDRINT LowestJumpTarget ()
+VOID SetNumIntegralInss (UINT32 num)
+UINT32 NumIntegralInss ()
+VOID SetFirstIpAfterIntegralRtn (const VOID *ip)
+const VOID * FirstIpAfterIntegralRtn ()
+VOID RecordPossibleInsideCall (ADDRINT callTarget)
+ADDRINT PossibleInsideCallLowestTarget ()
+VOID RecordUJmpIns (INS ins)
+VOID FixupRtnStartIfNeeded (RTN rtn)
+VOID RecordLastIpInfo (ADDRINT lastIp, UINT32 sizeOfLastIns)

+Friends

+class SIMPLE_STATIC_SINGLETON< RTN_OUTSIDE_RANGES >
+
The documentation for this class was generated from the following file:
    +
  • image.cpp
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1SymbolAddressRange-members.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1SymbolAddressRange-members.html new file mode 100755 index 0000000..9cf4079 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1SymbolAddressRange-members.html @@ -0,0 +1,101 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
LEVEL_PINCLIENT::SymbolAddressRange Member List
+
+
+This is the complete list of members for LEVEL_PINCLIENT::SymbolAddressRange, including all inherited members. + + + + + + + + + +
base (defined in LEVEL_PINCLIENT::SymbolAddressRange)LEVEL_PINCLIENT::SymbolAddressRange
Contains(const ADDRINT addr) const (defined in LEVEL_PINCLIENT::SymbolAddressRange)LEVEL_PINCLIENT::SymbolAddressRange [inline]
name (defined in LEVEL_PINCLIENT::SymbolAddressRange)LEVEL_PINCLIENT::SymbolAddressRange
operator<(const SymbolAddressRange &range) const (defined in LEVEL_PINCLIENT::SymbolAddressRange)LEVEL_PINCLIENT::SymbolAddressRange [inline]
operator=(const SymbolAddressRange &obj) (defined in LEVEL_PINCLIENT::SymbolAddressRange)LEVEL_PINCLIENT::SymbolAddressRange [inline]
size (defined in LEVEL_PINCLIENT::SymbolAddressRange)LEVEL_PINCLIENT::SymbolAddressRange
SymbolAddressRange() (defined in LEVEL_PINCLIENT::SymbolAddressRange)LEVEL_PINCLIENT::SymbolAddressRange [inline]
SymbolAddressRange(std::string sym_name, ADDRINT sym_base, size_t sym_size) (defined in LEVEL_PINCLIENT::SymbolAddressRange)LEVEL_PINCLIENT::SymbolAddressRange [inline]
SymbolAddressRange(const SymbolAddressRange &obj) (defined in LEVEL_PINCLIENT::SymbolAddressRange)LEVEL_PINCLIENT::SymbolAddressRange [inline]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1SymbolAddressRange.html b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1SymbolAddressRange.html new file mode 100755 index 0000000..d3629b2 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classLEVEL__PINCLIENT_1_1SymbolAddressRange.html @@ -0,0 +1,123 @@ + + + + +Pin: LEVEL_PINCLIENT::SymbolAddressRange Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
LEVEL_PINCLIENT::SymbolAddressRange Class Reference
+
+
+ +

List of all members.

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

+Public Member Functions

SymbolAddressRange (std::string sym_name, ADDRINT sym_base, size_t sym_size)
SymbolAddressRange (const SymbolAddressRange &obj)
+SymbolAddressRangeoperator= (const SymbolAddressRange &obj)
+BOOL operator< (const SymbolAddressRange &range) const
+BOOL Contains (const ADDRINT addr) const

+Public Attributes

+ADDRINT base
+size_t size
+std::string name
+

Detailed Description

+

Class that represents an adddress range for a symbol

+

The documentation for this class was generated from the following file:
    +
  • image.cpp
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classSHELL-members.html b/src/tracer/pintool/pin-3.13/doc/html/classSHELL-members.html new file mode 100755 index 0000000..2c653ab --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classSHELL-members.html @@ -0,0 +1,92 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+
+
SHELL Member List
+
+
+This is the complete list of members for SHELL, including all inherited members. + + + + + + +
AddExtendedHelpCategory(const std::string &name, const std::string &description, BOOL *alreadyExists)SHELL [inline, virtual]
AddExtendedHelpMessage(unsigned category, const std::string &cmd, const std::string &description)SHELL [inline, virtual]
Construct() (defined in SHELL)SHELL [inline]
Enable(const DEBUGGER_SHELL::STARTUP_ARGUMENTS &args)SHELL [inline, virtual]
GetSkipOneRegister()SHELL [inline, virtual]
~ISHELL()=0DEBUGGER_SHELL::ISHELL [inline, pure virtual]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classSHELL.html b/src/tracer/pintool/pin-3.13/doc/html/classSHELL.html new file mode 100755 index 0000000..3bcb74d --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classSHELL.html @@ -0,0 +1,249 @@ + + + + +Pin: SHELL Class Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+ +
+
SHELL Class Reference
+
+
+ +

List of all members.

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

+Classes

struct  AT_ICOUNT
struct  AT_MCOUNT
struct  EVENT
struct  HELP
struct  HELP_CATEGORY
struct  THREAD_DATA
struct  TRACEREC

+Public Member Functions

+BOOL Construct ()
BOOL Enable (const DEBUGGER_SHELL::STARTUP_ARGUMENTS &args)
unsigned AddExtendedHelpCategory (const std::string &name, const std::string &description, BOOL *alreadyExists)
void AddExtendedHelpMessage (unsigned category, const std::string &cmd, const std::string &description)
REG GetSkipOneRegister ()
+

Member Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
unsigned SHELL::AddExtendedHelpCategory (const std::string & name,
const std::string & description,
BOOL * alreadyExists 
) [inline, 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]nameThe name of the category.
[in]descriptionDescribes this category of extended commands.
[out]alreadyExistsIf 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.
+ +

Implements DEBUGGER_SHELL::ISHELL.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void SHELL::AddExtendedHelpMessage (unsigned category,
const std::string & cmd,
const std::string & description 
) [inline, 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]categoryThe category for this extended command. This can either be one of the predefined HELP_CATEGORY constants or a value returned by AddExtendedHelpCategory().
[in]cmdThe name of a tool's extended command.
[in]descriptionDescribes what the command does.
+
+
+ +

Implements DEBUGGER_SHELL::ISHELL.

+ +
+
+ +
+
+ + + + + + + + +
BOOL SHELL::Enable (const DEBUGGER_SHELL::STARTUP_ARGUMENTSargs) [inline, 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]argsArguments that customize the debugger shell.
+
+
+
Returns:
TRUE on success. If there is an error, a diagnostic is printed and this method returns FALSE.
+ +

Implements DEBUGGER_SHELL::ISHELL.

+ +
+
+ +
+
+ + + + + + + +
REG SHELL::GetSkipOneRegister () [inline, 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.
+ +

Implements DEBUGGER_SHELL::ISHELL.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • debugger-shell.cpp
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/classes.html b/src/tracer/pintool/pin-3.13/doc/html/classes.html new file mode 100755 index 0000000..20687bd --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/classes.html @@ -0,0 +1,106 @@ + + + + +Pin: Class Index + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+
+
Class Index
+
+
+
A | B | C | D | E | F | H | I | K | L | M | O | P | R | S | T | V | _
+ +
  A  
+
CallStackInfoStruct (CALLSTACK)   IALARM (CONTROLLER)   OUTSIDE_TARGET_MEM_RANGE (LEVEL_PINCLIENT)   SymbolAddressRange (LEVEL_PINCLIENT)   
ADDRESS_RANGE (LEVEL_BASE)   CallStackManager (CALLSTACK)   ICOUNT (INSTLIB)   
  P  
+
SymbolDebugInfo (LEVEL_PINCLIENT)   
ALARM_ADDRESS (CONTROLLER)   CHAIN_EVENT (CONTROLLER)   ICUSTOM_INSTRUMENTOR (DEBUGGER_SHELL)   PARG_T   
  T  
+
ALARM_CPUID (CONTROLLER)   CHUNK_REL_CONTAINER (LEVEL_CORE)   IEVENT (CONTROLLER)   PARSER (CONTROLLER)   TIME_WARP (INSTLIB)   
ALARM_ENTER_FUNC (CONTROLLER)   CLIENT_TLS (LEVEL_PINCLIENT)   IMAGE_INIT_SESSION (LEVEL_PINCLIENT)   PARSER (LEVEL_BASE)   TIME_WARP_RDTSC (INSTLIB)   
ALARM_EXIT_FUNC (CONTROLLER)   COMMAND_LINE_ARGUMENTS (LEVEL_BASE)   IMAGE_LOAD_OP (LEVEL_PINCLIENT)   PCREGION (CONTROLLER)   
  V  
+
ALARM_ICOUNT (CONTROLLER)   CONTROL_ARGS (CONTROLLER)   IMAGE_LOAD_OP2 (LEVEL_PINCLIENT)   PIN_CLIENT_MUTEX (LEVEL_PINCLIENT)   VAL (LEVEL_CORE)   
ALARM_IMAGE (CONTROLLER)   CONTROL_CHAIN (CONTROLLER)   ImageLoadArgs (LEVEL_PINCLIENT)   PIN_CODE_RANGE   
  _  
+
ALARM_INT3 (CONTROLLER)   CONTROL_HANDLER_PARAMS (CONTROLLER)   ImageLoaderInfo (LEVEL_BASE)   PIN_ERROR_DESCRIPTOR (LEVEL_BASE)   _PinPargClass   
ALARM_INTERACTIVE (CONTROLLER)   CONTROL_IREGIONS (CONTROLLER)   IMG_IDENTIFIER (LEVEL_PINCLIENT)   PIN_LOCK (LEVEL_BASE)   _PinPargClass< bool >   
ALARM_ISA_CATEGORY (CONTROLLER)   CONTROL_MANAGER (CONTROLLER)   IMG_REGION (LEVEL_CORE)   PIN_MEM_ACCESS_INFO   _PinPargClass< char >   
ALARM_ISA_EXTENSION (CONTROLLER)   CONTROL_PCREGIONS (CONTROLLER)   INIT_ALARM (CONTROLLER)   PIN_MEM_TRANS_FLAGS   _PinPargClass< double >   
ALARM_ITEXT (CONTROLLER)   CONTROL_REGION_INFO (CONTROLLER)   INSTR (LEVEL_PINCLIENT)   PIN_MEM_TRANS_INFO   _PinPargClass< float >   
ALARM_MAGIC (CONTROLLER)   CONTROLLER_EVENTS (CONTROLLER)   INSTR_INFO (LEVEL_PINCLIENT)   PIN_MULTI_MEM_ACCESS_INFO   _PinPargClass< int >   
ALARM_MANAGER (CONTROLLER)   
  D  
+
INTERACTIVE_LISTENER (CONTROLLER)   PIN_REGISTER   _PinPargClass< long >   
ALARM_PCONTROL (CONTROLLER)   DEBUG_CONNECTION_INFO   IREGION (CONTROLLER)   
  R  
+
_PinPargClass< long long >   
ALARM_SIGNAL (CONTROLLER)   DEBUG_MODE   ISHELL (DEBUGGER_SHELL)   REG_INFO   _PinPargClass< short >   
ALARM_SSC (CONTROLLER)   DECSTR (LEVEL_BASE)   
  K  
+
REGDEF_ENTRY (LEVEL_BASE)   _PinPargClass< signed char >   
ALARM_SYMBOL (CONTROLLER)   
  E  
+
KNOB (LEVEL_BASE)   REGION_UTILS (CONTROLLER)   _PinPargClass< T & >   
ALARM_TIMEOUT (CONTROLLER)   EDG_STRUCT_BASE (LEVEL_CORE)   KNOB_BASE (LEVEL_BASE)   REGISTER_SET (LEVEL_CORE)   _PinPargClass< T * >   
  B  
+
  F  
+
KNOB_COMMENT (LEVEL_BASE)   REPLACEDFUN (LEVEL_PINCLIENT)   _PinPargClass< unsigned char >   
BBL_EDG_CONTAINER_PRED (LEVEL_CORE)   FILTER (INSTLIB)   KNOBVALUE (LEVEL_BASE)   RTN_KEY (LEVEL_PINCLIENT)   _PinPargClass< unsigned int >   
BBL_EDG_CONTAINER_SUCC (LEVEL_CORE)   FILTER_LIB (INSTLIB)   KNOBVALUE_LIST (LEVEL_BASE)   RTN_OUTSIDE_RANGES (LEVEL_PINCLIENT)   _PinPargClass< unsigned long >   
  C  
+
FILTER_RTN (INSTLIB)   
  L  
+
  S  
+
_PinPargClass< unsigned long long >   
CACHELINE_COUNTER (CONTROLLER)   FLTSTR (LEVEL_BASE)   LINUX_LOADER_IMAGE_INFO (LEVEL_BASE)   SHELL   _PinPargClass< unsigned short >   
CALL_APPLICATION_FUNCTION_PARAM   FOLLOW_CHILD (INSTLIB)   
  M  
+
SimpleXMLParser (LEVEL_BASE)   _PinPargClass< void >   
CallEntry (CALLSTACK)   
  H  
+
MEM_ADDR_EXP (LEVEL_CORE)   SKIP_INT3 (INSTLIB)   _tcpClientStruct   
CallStack (CALLSTACK)   HEXSTR (LEVEL_BASE)   
  O  
+
SKIPPER (INSTLIB)   _tcpServerStruct   
CallStackHandlerParams (CALLSTACK)   
  I  
+
OUTSIDE_TARGET (LEVEL_PINCLIENT)   STARTUP_ARGUMENTS (DEBUGGER_SHELL)   
A | B | C | D | E | F | H | I | K | L | M | O | P | R | S | T | V | _
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/closed.png b/src/tracer/pintool/pin-3.13/doc/html/closed.png new file mode 100755 index 0000000000000000000000000000000000000000..b7d4bd9fef2272c74b94762c9e2496177017775e GIT binary patch literal 126 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VuAVNAAr*{o?>h22DDp4|bgj*t z)u^AqcA-V@guRYpb17F<&b?_~8HV>~XqWvB;^$!VVSTy0!eQcJp_yD7TIQA>7dijs YXf6~H5cs^Q6KEiVr>mdKI;Vst0NsWqGynhq literal 0 HcmV?d00001 diff --git a/src/tracer/pintool/pin-3.13/doc/html/doxygen.css b/src/tracer/pintool/pin-3.13/doc/html/doxygen.css new file mode 100755 index 0000000..74445fe --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/doxygen.css @@ -0,0 +1,835 @@ +/* The standard CSS for doxygen */ + +body, table, div, p, dl { + font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif; + font-size: 12px; +} + +/* @group Heading Levels */ + +h1 { + font-size: 150%; +} + +.title { + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2 { + font-size: 120%; +} + +h3 { + font-size: 100%; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd, p.starttd { + margin-top: 2px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + padding: 2px; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code { + color: #4665A2; +} + +a.codeRef { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +.fragment { + font-family: monospace, fixed; + font-size: 105%; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; +} + +div.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000); +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 10px; + margin-right: 5px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +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 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +/* @end */ + +/* +.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%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memItemLeft, .memItemRight, .memTemplParams { + border-top: 1px solid #C4CFE5; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; +} + +.memname { + white-space: nowrap; + font-weight: bold; + margin-left: 6px; +} + +.memproto { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 8px; + border-top-left-radius: 8px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 8px; + -moz-border-radius-topleft: 8px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 8px; + -webkit-border-top-left-radius: 8px; + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + +} + +.memdoc { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 2px 5px; + background-color: #FBFCFD; + border-top-width: 0; + /* opera specific markup */ + border-bottom-left-radius: 8px; + border-bottom-right-radius: 8px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 8px; + -moz-border-radius-bottomright: 8px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 60%, #F7F8FB 95%, #EEF1F7); + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 8px; + -webkit-border-bottom-right-radius: 8px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.6,#FFFFFF), color-stop(0.60,#FFFFFF), color-stop(0.95,#F7F8FB), to(#EEF1F7)); +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} + +.params, .retval, .exception, .tparams { + border-spacing: 6px 2px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + + + + +/* @end */ + +/* @group Directory (tree) */ + +/* for the tree view */ + +.ftvtree { + font-family: sans-serif; + margin: 0px; +} + +/* these are for tree view when used as main index */ + +.directory { + font-size: 9pt; + font-weight: bold; + margin: 5px; +} + +.directory h3 { + margin: 0px; + margin-top: 1em; + font-size: 11pt; +} + +/* +The following two styles can be used to replace the root node title +with an image of your choice. Simply uncomment the next two styles, +specify the name of your image and be sure to set 'height' to the +proper pixel height of your image. +*/ + +/* +.directory h3.swap { + height: 61px; + background-repeat: no-repeat; + background-image: url("yourimage.gif"); +} +.directory h3.swap span { + display: none; +} +*/ + +.directory > h3 { + margin-top: 0; +} + +.directory p { + margin: 0px; + white-space: nowrap; +} + +.directory div { + display: none; + margin: 0px; +} + +.directory img { + vertical-align: -30%; +} + +/* these are for tree view when not used as main index */ + +.directory-alt { + font-size: 100%; + font-weight: bold; +} + +.directory-alt h3 { + margin: 0px; + margin-top: 1em; + font-size: 11pt; +} + +.directory-alt > h3 { + margin-top: 0; +} + +.directory-alt p { + margin: 0px; + white-space: nowrap; +} + +.directory-alt div { + display: none; + margin: 0px; +} + +.directory-alt img { + vertical-align: -30%; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable { + border-collapse:collapse; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; +} + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +div.ingroups +{ + font-size: 8pt; + padding-left: 5px; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug +{ + border-left:4px solid; + padding: 0 0 0 6px; +} + +dl.note +{ + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + border-color: #00D000; +} + +dl.deprecated +{ + border-color: #505050; +} + +dl.todo +{ + border-color: #00C0E0; +} + +dl.test +{ + border-color: #3030E0; +} + +dl.bug +{ + border-color: #C08050; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + diff --git a/src/tracer/pintool/pin-3.13/doc/html/doxygen.png b/src/tracer/pintool/pin-3.13/doc/html/doxygen.png new file mode 100755 index 0000000000000000000000000000000000000000..635ed52fce7057ac24df92ec7664088a881fa5d0 GIT binary patch literal 3942 zcmV-s51H_ZP)95ENDh(OT9xpYZC{M(=rqI* z+1erNEr&9zRjUI-4rN=4BBz>P@ys*xOjGRjzVE*Fx_qvyt9d@B@BO*&@8Mq!nM{Tc z_WoM84-~xLreSL9@vgZ{m2dF}`u=^ZF3syQ-s2tnBwCI3ZFvSfI20Wbj236~Urq*8Kfw@RKKfRQTgE>}uUHK^ptamY=o)LU(xy55zNQ(`qZ znZ&$O075mrrInIXQgw4%GCbMD8Vn`3n3$EaRwtP1D{A!Gs=e!L%3;ayv@I{rAw{xw z^x^>EIWQM8ob3m}$(BaupDMV;Ed8w5|i(*e`7rU$TOc&1o7`|!LyN5jHI z7uWAR!v4c2xMp?}QmRYyf>i}tYGU(g=>DW&==J@GbhR z5@BNVY3O$`^D%gk4khm9XpFhuwzxUhi9T=Du4rpVuYRSMPHeDqo+4htnZRU@G9`0& z9~p)CsFl1|t*wjfoTo&%davN^3RfJUhQ{ZZIAcD77X^XsF_iR&ZMQ;p>K5*+*48)x z+=<>nh+6Uq85jOkg>{z>a;+V`s(I;I%*5s+R@9a^wNoZ03(g9-EcH%uHvX&yp7`D#`9Kw>DU3s zjD-VuW_A-K)unlS4O3f>_B%pPONUmI#oyL};Lglp3=04>0eBBEw$D1k-$WTsoi#K* z$7h`NcyRZsZ#w~6I<%~u!^xDofYrzF>zVIj2N>Ijs`mVR(Oy&*9f}<{JtQj8jJT!oEc!NQXBq5y|6ET*N?7ox*E6#{i- z@_DLD^IYTtg|Pg?A~!7@OCd8p^)kxK%VBM84docx$Z{MvO)iiqep@or-N}TEU8$%; zJih?#yJ9)V1s_`}c3XbY9V}nEKwNz8ILmR|v)(w|D@oVG;=i`+$*)!(xH{9#$2Za;pyZ1wgU#)mHl|&8%iwu%yncO z`T32Ib0$D}j`c}}5M@M#7oR&G=QwU!!Ja*P7|NJt1@lo=d{_dY-q_lmDcH7{BHncF zR@^PmcLC6EsN?6N{fV3o8}>?h9X_@;=&-p7%tms7$_{3w(anwek_k&<&)~c$Ar?S> zy9gKavndTmxqAbE?SMgcWhXPENdKdz7ntt55Y3Hs3jjc~uR-#$tR(1a_abv9`-QzG z^J0Fsbd&yruq%xAsxf3rc=T}$Zx|AD%x{Fd=? z{qhl3kG5w-PqVK9-Gru%7UIEw)bt$ZMF|Z6HpmO)F%@GNT8yT|#FuWPxv@@Ic={;6 zU7)e!XG|1dx=kU|&|)+m+$&|Yw92Fa;*MnegXcCf8XsHfqg_F5t)3Jt8)EkXKuY21 zqt%4}@R8hK*(_JO0*H+Pa)6Pp&K49rKNeQEYb*x9WY`!`Vh3|80YF%I`lxv9_!$hD zOh$>zWaRIW!);6`vA$Zp;5lnGyX^^N%YEjCeJMHPolKCE1ttIqK<$0w&LcE8)`_c2 z^H^qf6ACV0t7FLLCsu#mL&Mb8gE@rZE#k+1Nrrxw+{N0^#bN*~!qt2>S4e#jC$a$` ze4@{)$aTEYq_!#2|t@Fj3e?w-XVuG$Z}kAR?_kgJAlZIJ)0{eHw#fybNooA zp02jyYVc&w!}m#BVP>ef2|U^J(A-#O1R#A&><*?Y! zOwml{CnE+aU3JfKE@uzge(qMY{^6siuXFt;+mMbapU;Ppejl=L#>s2#SMBbfP9AFT znEVA=TBtZ6d-GfF>kOxylg>Ek%qTp*h2ze!^^hOsmKOEE6b;maQ>~R>3#z`Zawbik z88OTykU3_!Atg^+vnM=1n}?%<$dHzn)?k&T#RWwb+*y;XNQbYNHKo3wr~&}Qa$id; z6^D*K9RTQZUuQVg)g~P%!BIiv+cXllt)KEP9IN)1udQKf>p|~lXj7K<-9}0Q%i9+K zXaF7qXclE>sf)7)J4_M%V{;(sFT7HN$o0#_qU#Ah1D{ zon=JihPcgG5xHuvQwOXBkt3(iUdx{6Gn|aa>@C9Cqg%rPK(+REZ4>6t3z7m@Aj;0l zSHh&%cKSJ*+WOJGwe?Y7d(9RAy)&NVS6uj}1m@U}jXH3oVQT9E0A)$ZDRdK>;_i;+ z7vbEoI7$1XK6vNxT(_sJ(GM4s92e;gB&Q zDO;(Ve^%gPG&lWW1fUf_=9-Q1%&`s%aD^o`Q2u`WI9V>Qm#D5?SW<)Njmt@aR5@6( zL4cdTo+Jg@>Brm1^_gf%0Z?}1AppR3NdFE5uzdpBZz;{Thd6SI-$gb2}pFAww$*j(2=s{mdz2E;lBvVcrN@}i2bC`Q5Y_;BID^f0J+ACVhyQsLg0@`okIk+i=LJ=3yvI*oASj62 za3C{Pu_fQ+atw!zN{$Shr*_UV=|jp4#CqWeGE?Jb`pq!|5bDES&-Ix=-N>DpydHqW z+-{QS+i)d;uGS)M%Suw9khR}3N82j|S{a#&Tctme0s%mTy<1S|;@M-+S4#o@!qr;r z+w(n=;@43Y_n#dI0Gb(T0{G7k-KY8k`MPM_Bss$?)SK){KJMrwv!vz42_U_Za zX7lDqiU8ZvCAfGpAtfVC5bQrYa4C)M9G$S4D&VqpJ8)lm$t5FAAR%ywf>*~VaivC70RVFXISv4Lx&tk^Cf1)qQ|rxp z*8H>)cgoM;(eKxH14u~~@JopNr9@A z#-yXVG?$es;EPqsn-j?45^L52U=nT#0A^T3JY$&B3EH&%2UHdv3P=_3$!n76!34ks zz^2ii@sXAu8LKYMmG=_^*qtiiOFNlG3?QYtG%wrCZh|)vlj8vq3sw~f1b8;_TMB>z zPSyDQy_9bbXD*#sNRGMzfSAwUD}ASX;ZGQcGdE=9q~ORU{v$}=z2Bc8EOe2S&);jS zCZB8P`hPoV1NBk)TQP2z{q$NL-GLUc7%>&fecE^E{I5gs?8!qTK7VgR7Z?}-`YG|z zVN-NvOlQ+B;~J*69_Xd1n-0MLKTY6&*%rTi*0^HXniz8{bCMsVpSXqs(GGO)*_#Kz z9YBCQ_VRhtwhMfppMh@OdxjCN0mH`5hKZr>UoxMx`W~u^kD&bskplglOiRxQvep*2 z0mk+kMP>J)K`8X3`6Zq|X~5IQ-_rrOn+_WvU{1Gs{ow1-Eb;K(Z?p$@ugXpr^?PM( z(5Hv;$*X=QZaqG_4q)N1v9sO(Dsei!;%IcIztt6YUs{yj z^77e`UYa^%<-Ts+d*b=ihKt?0_sj!ePNO@K*PGmGD*v^;rRAkduikx~UNk=@{XKeV zp_ir(dTaGVWBr{_02Kg2Xmlsn|IvIIRYivbo|L{yx}yX5Bte@P6C>1KyqvYnT{boB#j-07*qoM6N<$f^XQQ A+yDRo literal 0 HcmV?d00001 diff --git a/src/tracer/pintool/pin-3.13/doc/html/functions.html b/src/tracer/pintool/pin-3.13/doc/html/functions.html new file mode 100755 index 0000000..6c4d324 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/functions.html @@ -0,0 +1,467 @@ + + + + +Pin: Class Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- _ -

+ + +

- a -

+ + +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- g -

+ + +

- i -

+ + +

- k -

+ + +

- m -

+ + +

- n -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- v -

+ + +

- ~ -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/functions_enum.html b/src/tracer/pintool/pin-3.13/doc/html/functions_enum.html new file mode 100755 index 0000000..80fd566 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/functions_enum.html @@ -0,0 +1,95 @@ + + + + +Pin: Class Members - Enumerations + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/functions_eval.html b/src/tracer/pintool/pin-3.13/doc/html/functions_eval.html new file mode 100755 index 0000000..311e239 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/functions_eval.html @@ -0,0 +1,98 @@ + + + + +Pin: Class Members - Enumerator + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/functions_func.html b/src/tracer/pintool/pin-3.13/doc/html/functions_func.html new file mode 100755 index 0000000..4e9f38a --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/functions_func.html @@ -0,0 +1,409 @@ + + + + +Pin: Class Members - Functions + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+  + +

- a -

+ + +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- g -

+ + +

- i -

+ + +

- k -

+ + +

- m -

+ + +

- n -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- v -

+ + +

- ~ -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/functions_vars.html b/src/tracer/pintool/pin-3.13/doc/html/functions_vars.html new file mode 100755 index 0000000..49e3c5a --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/functions_vars.html @@ -0,0 +1,136 @@ + + + + +Pin: Class Members - Variables + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__ALARM.html b/src/tracer/pintool/pin-3.13/doc/html/group__ALARM.html new file mode 100755 index 0000000..aa760a0 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__ALARM.html @@ -0,0 +1,80 @@ + + + + +Pin: ALARM + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+
+
ALARM
+
+
+ +
+

Call a function when the specified event has occured. Triggers can be base on instruction counts or executing a specific address.

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__API__REF.html b/src/tracer/pintool/pin-3.13/doc/html/group__API__REF.html new file mode 100755 index 0000000..a75b858 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__API__REF.html @@ -0,0 +1,116 @@ + + + + +Pin: API Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+
+
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
  • +
  • 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.

+ +
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__APPDEBUG__API.html b/src/tracer/pintool/pin-3.13/doc/html/group__APPDEBUG__API.html new file mode 100755 index 0000000..f37835d --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__APPDEBUG__API.html @@ -0,0 +1,783 @@ + + + + +Pin: Application Level Debugging API + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
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_LLDB, +
+  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]addrThe address of the requested breakpoint.
[in]sizeThe size of the breakpoint (HW/SW)
[in]insertWhether if this is a breakpoint insertion or deletion.
[in]vThe 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]threadIndexThe Pin thread ID of the debugger's "focus" thread.
[in]ctxtApplication 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]cmdThe debugger command.
[out]replyReceives the reply to the command, if the interpreter understands cmd.
[in]vThe 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_LLDB  +

The LLVM 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]funThe breakpoint handler function.
[in]valValue 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, macOS*
+ 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]funThe debug interpreter function.
[in]valValue 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 CONTEXTctxt,
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]ctxtThe 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]tidThe ID of the calling thread.
[in]waitIfNoDebuggerIf 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]msgTells 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]tidPin ID of a stopped thread.
[in]squashIf TRUE, the breakpoint request is squashed. The msg parameter is ignored in this case.
[in]msgThe 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_INFOinfo)
+
+
+

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

+
Parameters:
+ + +
[out]infoReceives 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]tidPin ID of a stopped thread.
[out]msgIf 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]funThe breakpoint handler to remove.
+
+
+
Note:
The pin client 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
+
+ +
+
+ +
+
+ + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_RemoveDebugInterpreter (DEBUG_INTERPRETER_CALLBACK fun)
+
+
+

Remove a previously installed debug interpreter function.

+
Parameters:
+ + +
[in]funThe 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]addrThe breakpoint address.
+
+
+
Note:
The pin client 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_SetDebugMode (const DEBUG_MODEmode)
+
+
+

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]modeTells 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]timeoutA 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
+
+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__BBL__BASIC__API.html b/src/tracer/pintool/pin-3.13/doc/html/group__BBL__BASIC__API.html new file mode 100755 index 0000000..4f57d53 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__BBL__BASIC__API.html @@ -0,0 +1,516 @@ + + + + +Pin: BBL: Single entrance, single exit sequence of instructions + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
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 to 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 returns FALSE.
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::BBL_InsertCall (BBL bbl,
IPOINT action,
AFUNPTR funptr,
 ... 
)
+
+
+

Insert call relative to a bbl.

+
Parameters:
+ + + + + +
bblBBL to instrument
actionSpecifies before, after, etc.
+ IPOINT_BEFORE is always valid for all BBLs.
+ IPOINT_AFTER is valid only when a fall-through exists. Can only be used if BBL_HasFallThrough is true.
+ IPOINT_ANYWHERE will put the instrumentation at a place inside the bbl for best performance.
+ IPOINT_TAKEN_BRANCH is valid only when the BBL ends with a control-flow instruction. Can only be used if INS_IsValidForIpointTakenBranch(BBL_ins_tail(bbl)) is true.
funptrAnalysis function to call
...IARG_TYPE. Arguments to pass to funptr
+
+
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & macOS*
+ 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:
+ + + + + +
bblBBL to instrument
actionSpecifies when the analysis call executes. See the documentation in BBL_InsertCall().
funptrAnalysis function to call. Its return type must be ADDRINT
...IARG_TYPE. Arguments to pass to funptr
+
+
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & macOS*
+ 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:
+ + + + + +
bblBBL to instrument
actionSpecifies when the analysis call executes. See the documentation in BBL_InsertCall().
funptrAnalysis function to call
...IARG_TYPE. Arguments to pass to funptr
+
+
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & macOS*
+ 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
+
+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__BUFFER__API.html b/src/tracer/pintool/pin-3.13/doc/html/group__BUFFER__API.html new file mode 100755 index 0000000..198ab15 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__BUFFER__API.html @@ -0,0 +1,287 @@ + + + + +Pin: Fast Buffering APIs + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
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.

+

APIs to perform low-overhead buffering of data for analysis.

+

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).

+

This function may be called on a different thread than the given threadIndex.

+
Parameters:
+ + + + + + +
[in]idThe ID of the trace buffer.
[in]tidThe ID of the thread owning this buffer.
[in]bufPointer to the start of the buffer.
[in]numElementsThe number of elements collected into the buffer which need to be consumed.
[in]vThe 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]idThe 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]idThe ID of the trace buffer.
[in]bufPointer 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]recordSizeSize (bytes) of each record in the buffer. This size must be less than the size of an OS page.
[in]numPagesThe number of OS pages to allocate for each buffer. This size does not have to be an even multiple of recordSize.
[in]funA 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]valPassed 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]idThe ID of the trace buffer.
[in]ctxtCONTEXT
+
+
+
Availability:
Mode: JIT
+ O/S: Linux & Windows
+ CPU: IA-32 and Intel(R) 64 architectures
+
+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__CHILD__PROCESS__API.html b/src/tracer/pintool/pin-3.13/doc/html/group__CHILD__PROCESS__API.html new file mode 100755 index 0000000..ce3e2e1 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__CHILD__PROCESS__API.html @@ -0,0 +1,272 @@ + + + + +Pin: Follow Child Process API + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
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]childProcessChild process handle, it's lifetime is in the scope of the callback
[in]valThe 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]childProcesschild process handle
[out]pArgcpointer to application's argc
[out]pArgvpointer 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]childProcesschild 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]childProcesshandle to child process
[in]argcPin's (and tool's) argc
[in]argvPin'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
+
+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__CONTEXT__API.html b/src/tracer/pintool/pin-3.13/doc/html/group__CONTEXT__API.html new file mode 100755 index 0000000..a43a28f --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__CONTEXT__API.html @@ -0,0 +1,677 @@ + + + + +Pin: Context manipulation API + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
Context manipulation API
+
+
+ + + + + + + + + + + + + + + + + + + + + +

+Classes

union  PIN_REGISTER

+Typedefs

typedef struct 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)
int LEVEL_PINCLIENT::PIN_GetInitialContextForUnwind (const CONTEXT *ctxt, void *cursor)
int LEVEL_PINCLIENT::PIN_Backtrace (const CONTEXT *ctxt, void **buffer, int size)
+

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

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int LEVEL_PINCLIENT::PIN_Backtrace (const CONTEXTctxt,
void ** buffer,
int size 
)
+
+
+

This function is the equivalent Pin version of backtrace(): While backtrace() generates a backtrace for the Pin (and Pin tool) call stack, PIN_Backtrace() generates a backtrace for the application that Pin is instrumenting.

+
Parameters:
+ + + + +
[in]ctxtcontext of the application - the backtrace will be generated based upon it.
[out]bufferPoints to an array on which the backtrace will be stored.
[in]sizespecifies the maximum number of addresses that can be stored in buffer.
+
+
+
Returns:
the number of addresses returned in buffer, which is not greater than size.
+
Availability:
Mode: All
+ O/S: Linux & macOS*
+ CPU: IA-32 and Intel(R) 64 architectures
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_PINCLIENT::PIN_ContextContainsState (CONTEXTctxt,
PROCESSOR_STATE state 
)
+
+
+

Query if the specified CONTEXT contains the specified PROCESSOR_STATE.

+
Parameters:
+ + + +
[in]ctxtcontext to be examined
[in]statethe 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 & macOS*
+ CPU: IA-32 and Intel(R) 64 architectures
+
+ +
+
+ +
+
+ + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_ExecuteAt (const CONTEXTctxt)
+
+
+

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]ctxtNew 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 & macOS*
+ CPU: IA-32 and Intel(R) 64 architectures
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_GetContextFPState (const CONTEXTctxt,
FPSTATE * fpstate 
)
+
+
+

Get the floating point state of the specified context.

+
Parameters:
+ + + +
[in]ctxtcontext whose floating point state is retrieved
[in]fpstatepointer 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 & macOS*
+ CPU: IA-32 and Intel(R) 64 architectures
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
ADDRINT LEVEL_PINCLIENT::PIN_GetContextReg (const CONTEXTctxt,
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]ctxtcontext whose register value is requested
[in]regregister 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 & macOS*
+ CPU: IA-32 and Intel(R) 64 architectures
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_GetContextRegval (const CONTEXTctxt,
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]ctxtcontext whose register value is requested
[in]regregister whose value is requested
[out]valan 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 & macOS*
+ 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 & macOS*
+ CPU: IA-32 and Intel(R) 64 architectures
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
int LEVEL_PINCLIENT::PIN_GetInitialContextForUnwind (const CONTEXTctxt,
void * cursor 
)
+
+
+

This function is the equivalent Pin version of unw_getcontext(): While unw_getcontext() generates a context for libunwind based on the native context, PIN_GetInitialContextForUnwind() generates a context for libunwind based on Pin CONTEXT.

+
Parameters:
+ + + +
[in]ctxtPin context to convert to libunwind's context
[out]cursorPoints to valid object of type unw_cursor_t which was initialized using unw_init_local().
+
+
+
Returns:
UNW_ESUCCESS in case of success.
+
Availability:
Mode: All
+ O/S: Linux & macOS*
+ CPU: IA-32 and Intel(R) 64 architectures
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_SaveContext (const CONTEXTctxtFrom,
CONTEXTctxtTo 
)
+
+
+

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]ctxtFromCONTEXT structure to copy from
[out]ctxtToCONTEXT structure to copy into
+
+
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & macOS*
+ CPU: IA-32 and Intel(R) 64 architectures
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_SetContextFPState (CONTEXTctxt,
const FPSTATE * fpstate 
)
+
+
+

Set the given floating point state in the specified context.

+
Parameters:
+ + + +
[in,out]ctxtcontext whose floating point state is to be set
[in]fpstatenew floating point state of the context. the FPSTATE type is exposed by Pin.
+
+
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & macOS*
+ CPU: IA-32 and Intel(R) 64 architectures
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_SetContextReg (CONTEXTctxt,
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]ctxtcontext whose register value is to be set
[in]regregister 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]valnew value of the register
+
+
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & macOS*
+ CPU: IA-32 and Intel(R) 64 architectures
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_SetContextRegval (CONTEXTctxt,
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]ctxtcontext whose register value is to be set
[in]regregister whose value is to be set
[in]valbuffer 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 & macOS*
+ 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]statethe PROCESSOR_STATE being queried
+
+
+
Returns:
TRUE if the PROCESSOR_STATE specified by state is supported by Pin
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & macOS*
+ CPU: IA-32 and Intel(R) 64 architectures
+
+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__CONTROLLER__PCREGIONS.html b/src/tracer/pintool/pin-3.13/doc/html/group__CONTROLLER__PCREGIONS.html new file mode 100755 index 0000000..190bac2 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__CONTROLLER__PCREGIONS.html @@ -0,0 +1,133 @@ + + + + +Pin: CONTROLLER_PCREGIONS + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
CONTROLLER_PCREGIONS
+
+
+ + + + + + +

+Classes

class  CONTROLLER::PCREGION
class  CONTROLLER::CONTROL_PCREGIONS

+Functions

BOOL CONTROLLER::CONTROL_PCREGIONS::Activate (BOOL passContext, CHAIN_EVENT_VECTOR **regionControlChains)
+

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" [ warmup region type contains also the parent region id of the simulation region for example - warmup:2 ]

+

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: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:image_offset Calculate addresses according to image name and offsets -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.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
BOOL CONTROLLER::CONTROL_PCREGIONS::Activate (BOOL passContext,
CHAIN_EVENT_VECTOR ** regionControlChains 
) [inline]
+
+
+

Activate the controller if the -pcregions knob is provided

+
Returns:
TRUE if controller can start an interval, otherwise FALSE
+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__CONTROLLER__REGIONS.html b/src/tracer/pintool/pin-3.13/doc/html/group__CONTROLLER__REGIONS.html new file mode 100755 index 0000000..56fff85 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__CONTROLLER__REGIONS.html @@ -0,0 +1,90 @@ + + + + +Pin: CONTROLLER_REGIONS + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+
+
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 working with the controller: ----------------- 1. IREGION class reads region data from file. 2. Region events are sorted according to icount and type. 3. Each region event is translated into controller event string like: start:icount:100:tid0 4. The events will be triggered by the controller ICOUNT alarms mechanism. 5. The controller will notify IREGION class of the events. 6. Modify driver not to allow IREGION events and controller events.

+

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.

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__DEBUGGER__SHELL.html b/src/tracer/pintool/pin-3.13/doc/html/group__DEBUGGER__SHELL.html new file mode 100755 index 0000000..95eb126 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__DEBUGGER__SHELL.html @@ -0,0 +1,176 @@ + + + + +Pin: DEBUGGER_SHELL + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
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

ISHELL * DEBUGGER_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

+ +
+ +
+

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

+ +
+
+ + + + + + + +
DEBUGGER_SHELL::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.
+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__DEBUG__API.html b/src/tracer/pintool/pin-3.13/doc/html/group__DEBUG__API.html new file mode 100755 index 0000000..a7d5a11 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__DEBUG__API.html @@ -0,0 +1,147 @@ + + + + +Pin: DBG: Debugging using Pin + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
DBG: Debugging using Pin
+
+
+ + + +

+Functions

void LEVEL_PINCLIENT::PIN_GetSourceLocation (ADDRINT address, INT32 *column, INT32 *line, std::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,
std::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]addressThe code address to lookup.
[out]columnIf column is non-zero, *column is set to the column number. Column number 0 indicates that there is no valid column information.
[out]lineIf line is non-zero, *line is set to the line number. Line number 0 indicates that there is no valid line information.
[out]fileNameIf 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
+
+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__DEPRECATED__PIN__API.html b/src/tracer/pintool/pin-3.13/doc/html/group__DEPRECATED__PIN__API.html new file mode 100755 index 0000000..4cba104 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__DEPRECATED__PIN__API.html @@ -0,0 +1,247 @@ + + + + +Pin: Pin Deprecated API + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
Pin Deprecated API
+
+
+ + + + + + + +

+Functions

PIN_DEPRECATED_API VOID LEVEL_PINCLIENT::CALLBACK_SetExecutionPriority (PIN_CALLBACK callback, INT32 priority)
PIN_DEPRECATED_API INT32 LEVEL_PINCLIENT::CALLBACK_GetExecutionPriority (PIN_CALLBACK callback)
PIN_DEPRECATED_API ADDRINT LEVEL_PINCLIENT::IMG_Entry (IMG img)
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.

+

Function Documentation

+ +
+
+ + + + + + + + +
PIN_DEPRECATED_API INT32 LEVEL_PINCLIENT::CALLBACK_GetExecutionPriority (PIN_CALLBACK callback)
+
+
+

Gets the execution priority of a registered callback function The lower the execution priority, the sooner it will be called relative to other similar callbacks

+
Parameters:
+ + +
callbackRegistered Callback function returned from *_Add*Function()
+
+
+
Returns:
INT32 The current priority value of the callback
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & macOS*
+ CPU: All
+
+
Note:
DEPRECATED: See CALLBACK_GetExecutionOrder.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
PIN_DEPRECATED_API VOID LEVEL_PINCLIENT::CALLBACK_SetExecutionPriority (PIN_CALLBACK callback,
INT32 priority 
)
+
+
+

Sets the execution priority of a registered callback function The lower the execution priority, the sooner it will be called relative to other similar callbacks

+
Parameters:
+ + + +
callbackRegistered Callback function returned from *_Add*Function()
priorityNew 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 & macOS*
+ CPU: All
+
+
Note:
DEPRECATED: See CALLBACK_SetExecutionOrder.
+ +
+
+ +
+
+ + + + + + + + +
PIN_DEPRECATED_API ADDRINT LEVEL_PINCLIENT::IMG_Entry (IMG img)
+
+
+
Parameters:
+ + +
[in]imgPin image handle
+
+
+
Returns:
Address of first instruction executed when image is loaded
+
Note:
DEPRECATED: API returned wrong value in case of position independent code. Use IMG_EntryAddress() instead.
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + +
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
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
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
+
+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__ERROR__FILE__BASIC.html b/src/tracer/pintool/pin-3.13/doc/html/group__ERROR__FILE__BASIC.html new file mode 100755 index 0000000..59057f5 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__ERROR__FILE__BASIC.html @@ -0,0 +1,487 @@ + + + + +Pin: Pin Error Reporting Support + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
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
+
+
+

This file defines the Pin error types. They are used in conjunction with the Pin -error_file option.

+

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:
+ + + + + + +
msga description of the error
typean enum associated with the error. type >= 1000.
severity0=fatal, 1=non-fatal.
numnumber of arguments following this parameter
...arguments. must be of type "char *".
+
+
+
Availability:
Mode: JIT, Probe
+ O/S: Linux, Windows
+ CPU: All.
+
+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__EXCEPTION__API.html b/src/tracer/pintool/pin-3.13/doc/html/group__EXCEPTION__API.html new file mode 100755 index 0000000..e471c5c --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__EXCEPTION__API.html @@ -0,0 +1,1058 @@ + + + + +Pin: Exception API + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
Exception API
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef struct EXCEPTION_INFO LEVEL_BASE::EXCEPTION_INFO

+Enumerations

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

+Functions

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

+Variables

GLOBALCONST UINT32 LEVEL_BASE::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 LEVEL_BASE::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 LEVEL_BASE::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 LEVEL_BASE::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.

+
+
+
+ +
+
+ +
+ +
+

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 LEVEL_BASE::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 LEVEL_BASE::PIN_CountWindowsExceptionArguments (const EXCEPTION_INFO * pExceptInfo)
+
+
+

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

+
Parameters:
+ + +
[in]pExceptInfopointer 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
+
+ +
+
+ +
+
+ + + + + + + + +
std::string LEVEL_BASE::PIN_ExceptionToString (const EXCEPTION_INFO * pExceptInfo)
+
+
+

Get a string representation of the specified EXCEPTION_INFO structure.

+
Parameters:
+ + +
[in]pExceptInfopointer to the exception information structure to be stringized
+
+
+
Returns:
The string representation of this structure.
+
Availability:
Mode: All
+ O/S: All
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + +
ADDRINT LEVEL_BASE::PIN_GetExceptionAddress (const EXCEPTION_INFO * pExceptInfo)
+
+
+

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

+
Parameters:
+ + +
[in]pExceptInfopointer 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 LEVEL_BASE::PIN_GetExceptionClass (EXCEPTION_CODE exceptCode)
+
+
+

Given an exception code, return the corresponding exception class.

+
Parameters:
+ + +
[in]exceptCodeexception code
+
+
+
Returns:
The class of the exception
+
Availability:
Mode: All
+ O/S: All
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + +
EXCEPTION_CODE LEVEL_BASE::PIN_GetExceptionCode (const EXCEPTION_INFO * pExceptInfo)
+
+
+

Retrieve the exception code from the specified EXCEPTION_INFO structure.

+
Parameters:
+ + +
[in]pExceptInfopointer to the exception information structure to be queried
+
+
+
Returns:
The code of the exception
+
Availability:
Mode: All
+ O/S: All
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_BASE::PIN_GetFaultyAccessAddress (const EXCEPTION_INFO * pExceptInfo,
ADDRINT * pAccessAddress 
)
+
+
+

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

+
Parameters:
+ + + +
[in]pExceptInfopointer to the exception information structure to be queried
[out]pAccessAddresspointer 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 LEVEL_BASE::PIN_GetFaultyAccessType (const EXCEPTION_INFO * pExceptInfo)
+
+
+

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

+
Parameters:
+ + +
[in]pExceptInfopointer 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 LEVEL_BASE::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]pExceptInfopointer 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 LEVEL_BASE::PIN_GetWindowsExceptionArgument (const EXCEPTION_INFO * pExceptInfo,
UINT32 argNum 
)
+
+
+

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

+
Parameters:
+ + + +
[in]pExceptInfopointer to the exception information structure to be queried
[in]argNumordinal 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 LEVEL_BASE::PIN_GetWindowsExceptionCode (const EXCEPTION_INFO * pExceptInfo)
+
+
+

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

+
Parameters:
+ + +
[in]pExceptInfopointer 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 LEVEL_BASE::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]pExceptInfopointer to the exception information structure to be initialized
[in]exceptCodeexception code that specifies an EXCEPTCLASS_ACCESS_FAULT exception
[in]exceptAddressaddress of the instruction that caused the exception
[in]accessAddressaddress of the faulty memory access
[in]accessTypetype of the faulty memory access
+
+
+
Availability:
Mode: All
+ O/S: All
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_BASE::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]pExceptInfopointer to the exception information structure to be initialized
[in]exceptCodeexception code. It could specify any exception other than EXCEPTCODE_WINDOWS
[in]exceptAddressaddress of the instruction that caused the exception
+
+
+
Availability:
Mode: All
+ O/S: All
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_BASE::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]pExceptInfopointer to the exception information structure to be initialized
[in]sysExceptCodethe system exception code
[in]exceptAddressaddress of the instruction that caused the exception
[in]numArgsnumber 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]pArgspointer 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 CONTEXTctxt,
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]ctxtRegister state to be reported as the application's context at the exception point.
[in]tidId of the calling thread.
[in]pExceptInfoPointer 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 LEVEL_BASE::PIN_SetExceptionAddress (EXCEPTION_INFO * pExceptInfo,
ADDRINT exceptAddress 
)
+
+
+

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

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

Variable Documentation

+ +
+
+ + + + +
GLOBALCONST UINT32 LEVEL_BASE::MAX_WINDOWS_EXCEPTION_ARGS = 5
+
+
+

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

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__FILTER.html b/src/tracer/pintool/pin-3.13/doc/html/group__FILTER.html new file mode 100755 index 0000000..74c6465 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__FILTER.html @@ -0,0 +1,169 @@ + + + + +Pin: FILTER + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
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 std::ofstream;
+using std::hex;
+using std::setw;
+
+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;
+}
+
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__FILTER__LIB.html b/src/tracer/pintool/pin-3.13/doc/html/group__FILTER__LIB.html new file mode 100755 index 0000000..1d4dc6d --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__FILTER__LIB.html @@ -0,0 +1,127 @@ + + + + +Pin: FILTER_LIB + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
FILTER_LIB
+
+
+ + + + + + +

+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]
+
+
+

Activate the filter. Must be done before PIN_StartProgram

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

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

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__FILTER__MULTI.html b/src/tracer/pintool/pin-3.13/doc/html/group__FILTER__MULTI.html new file mode 100755 index 0000000..a29666b --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__FILTER__MULTI.html @@ -0,0 +1,127 @@ + + + + +Pin: FILTER_MULTI + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
FILTER_MULTI
+
+
+ + + + + + +

+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]
+
+
+

Activate the filter. Must be done before PIN_StartProgram

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

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

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__FILTER__RTN.html b/src/tracer/pintool/pin-3.13/doc/html/group__FILTER__RTN.html new file mode 100755 index 0000000..9b00b02 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__FILTER__RTN.html @@ -0,0 +1,146 @@ + + + + +Pin: FILTER_RTN + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
FILTER_RTN
+
+
+ + + + + + + +

+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]
+
+
+

Activate the filter. Must be done before PIN_StartProgram

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

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

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

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

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__FOLLOW__CHILD.html b/src/tracer/pintool/pin-3.13/doc/html/group__FOLLOW__CHILD.html new file mode 100755 index 0000000..cc832f0 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__FOLLOW__CHILD.html @@ -0,0 +1,145 @@ + + + + +Pin: FOLLOW_CHILD + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
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]
+
+
+

Activate, must be called before PIN_StartProgram

+ +
+
+ +
+
+ + + + + + + +
INSTLIB::FOLLOW_CHILD::FOLLOW_CHILD () [inline]
+
+
+

Constructor

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

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.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__ICOUNT.html b/src/tracer/pintool/pin-3.13/doc/html/group__ICOUNT.html new file mode 100755 index 0000000..a84037b --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__ICOUNT.html @@ -0,0 +1,217 @@ + + + + +Pin: ICOUNT + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
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
+
+
+

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]
+
+
+

Activate the counter, must be called before PIN_StartProgram.

+
Parameters:
+ + +
[in]modeDetermine 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]
+
+
+
Returns:
Total number of instructions executed. (But see mode for what this means).
+ +
+
+ +
+
+ + + + + + + +
mode INSTLIB::ICOUNT::Mode () const [inline]
+
+
+
Returns:
the mode of the ICOUNT object.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
VOID INSTLIB::ICOUNT::SetCount (UINT64 count,
THREADID tid = 0 
) [inline]
+
+
+

Set the current count

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__IMG__BASIC__API.html b/src/tracer/pintool/pin-3.13/doc/html/group__IMG__BASIC__API.html new file mode 100755 index 0000000..870d659 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__IMG__BASIC__API.html @@ -0,0 +1,1137 @@ + + + + +Pin: IMG: Image Object + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
IMG: Image Object
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Classes

struct  LEVEL_CORE::IMG_REGION

+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 +
+ }
enum  LEVEL_CORE::IMG_PROPERTY {
+  IMG_PROPERTY_INVALID, +
+  LEVEL_CORE::IMG_PROPERTY_SHSTK_ENABLED, +
+  LEVEL_CORE::IMG_PROPERTY_IBT_ENABLED, +
+  IMG_PROPERTY_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_EntryAddress (IMG img)
BOOL LEVEL_PINCLIENT::IMG_HasProperty (IMG img, IMG_PROPERTY property)
const std::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_hasLinesData (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 std::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_PROPERTY
+
+
+

Properties available for an image. Typically defined as meta data within the image. May define some specific hardware that is used or needed or some features enabled by the image. Property may be OS/CPU specific.

+
Enumerator:
+ + +
IMG_PROPERTY_SHSTK_ENABLED  +

CET shadow stack enabled. Supported only for Linux

+
IMG_PROPERTY_IBT_ENABLED  +

CET indirect branch tracking enabled. Supported only for Linux

+
+
+
+ +
+
+ +
+
+ + + + +
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:
+ + + +
funInstrumentation function for images, it is passed an image and v
vthe 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:
+ + + +
funpassed an image and v when an image is unloaded
vthe 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]imgThe IMG that was previously opened.
+
+
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + +
ADDRINT LEVEL_PINCLIENT::IMG_EntryAddress (IMG img)
+
+
+
Parameters:
+ + +
[in]imgPin image handle
+
+
+
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
+
+ +
+
+ +
+
+ + + + + + + + +
BOOL LEVEL_PINCLIENT::IMG_hasLinesData (IMG x)
+
+
+
Returns:
TRUE if img has debug information that includes the lines information.
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_PINCLIENT::IMG_HasProperty (IMG img,
IMG_PROPERTY property 
)
+
+
+

Checks if image has the specificfied property

+
Parameters:
+ + + +
[in]imgPin image handle
[in]propertythe property to check of type IMG_PROPERTY
+
+
+
Returns:
if image supports specific property in specific mode
+
Availability:
Mode: JIT & Probe
+ O/S: Linux
+ 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]imgThe 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]imgThe 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 for the image Pin was applied on in the command line (i.e. first param after --)
+
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]imgThe 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]imgThe 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 std::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 std::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).

+
Note:
This API can only be used at a safe point, which is before calling PIN_StartProgram()(/or similar)
+
Parameters:
+ + +
[in]filenameThe 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]imgThe 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]imgThe 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
+
+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__INSTLIB.html b/src/tracer/pintool/pin-3.13/doc/html/group__INSTLIB.html new file mode 100755 index 0000000..6b36576 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__INSTLIB.html @@ -0,0 +1,87 @@ + + + + +Pin: Instrumentation for Common Instrumentation Tasks + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+
+
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.
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__INST__ARGS.html b/src/tracer/pintool/pin-3.13/doc/html/group__INST__ARGS.html new file mode 100755 index 0000000..424983f --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__INST__ARGS.html @@ -0,0 +1,664 @@ + + + + +Pin: Instrumentation arguments + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
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  +

Actual address of the memory access; same as IARG_MEMORYREAD_EA, unless the memory address is translated by MEMORY_ADDR_TRANS_CALLBACK, or the memory operand is rewritten by INS_RewriteMemoryOperand

+
IARG_MEMORYREAD2_PTR  +

Actual address of the memory access; same as IARG_MEMORYREAD2_EA, unless the memory address is translated by MEMORY_ADDR_TRANS_CALLBACK, or the memory operand is rewritten by INS_RewriteMemoryOperand

+
IARG_MEMORYWRITE_PTR  +

Actual address of the memory access. Same as IARG_MEMORYWRITE_EA, unless the memory address is translated by MEMORY_ADDR_TRANS_CALLBACK, or the memory operand is rewritten by INS_RewriteMemoryOperand

+
IARG_MEMORYOP_PTR  +

Actual address of the memory access. Same as IARG_MEMORYOP_EA, unless the memory address is translated by MEMORY_ADDR_TRANS_CALLBACK, or the memory operand is rewritten by INS_RewriteMemoryOperand

+
IARG_MULTI_MEMORYACCESS_EA  +

Type: PIN_MULTI_MEM_ACCESS_INFO* the addresses read by the various vgather* instructions, Also available for regular memory 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. Argument is invalid for XBEGIN and XEND instructions.

+
IARG_BRANCH_TARGET_ADDR  +

Type: ADDRINT. Target address of branch instruction.
+ In case of INS instrumentation, valid when INS_IsControlFlow() is true.
+ However, this argument is invalid if the instruction is XBEGIN or XEND.

+
IARG_FALLTHROUGH_ADDR  +

Type: ADDRINT. Fall through address of the instrumented object.
+ In case of INS instrumentation, valid only if INS_HasFallThrough() is true.

+
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. Instrumented object can be: INS, BBL, TRACE, RTN. This is used in instrumentation functions, for example see TRACE_InsertCall().

+
Enumerator:
+ + + + +
IPOINT_BEFORE  +

Insert a call before the first instruction of the instrumented object. Always valid.

+
IPOINT_AFTER  +

Insert a call on the fall-through path of the last instruction of the instrumented object (if such fall-through exists).
+ In case of a routine (RTN), instruments all return paths. Always valid.
+ In case of an instruction (INS), valid only if INS_IsValidForIpointAfter() is true.
+ In case of a BBL, valid only if BBL_HasFallThrough() is true.
+ In case of a TRACE, valid only if TRACE_HasFallThrough() is true.
+

+
IPOINT_ANYWHERE  +

Insert a call anywhere inside the instrumented object.
+ Valid on all instrumentation functions except INS_InsertIfCall(), INS_InsertThenCall().

+
IPOINT_TAKEN_BRANCH  +

Insert a call on the taken edge of control-flow instructions of the instrumented object.
+ In case of an instruction, Valid only if INS_IsValidForIpointTakenBranch() is true.

+
+
+
+ +
+
+ +
+
+ + + + +
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 & macOS*
+ 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 & macOS*
+ 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 & macOS*
+ CPU: All
+
+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__INS__BASIC__API.html b/src/tracer/pintool/pin-3.13/doc/html/group__INS__BASIC__API.html new file mode 100755 index 0000000..57a2c94 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__INS__BASIC__API.html @@ -0,0 +1,141 @@ + + + + +Pin: INS: Instruction Object + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
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 & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + +
BOOL LEVEL_CORE::INS_IsCacheLineFlush (INS ins)
+
+
+
Returns:
TRUE if instruction causes cache line flush
+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__INS__BASIC__API__GEN__IA32.html b/src/tracer/pintool/pin-3.13/doc/html/group__INS__BASIC__API__GEN__IA32.html new file mode 100755 index 0000000..e878e23 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__INS__BASIC__API__GEN__IA32.html @@ -0,0 +1,1595 @@ + + + + +Pin: Generic inspection API + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
Generic inspection API
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+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)
USIZE LEVEL_CORE::INS_MemoryReadSize (INS ins)
PREDICATE LEVEL_CORE::INS_GetPredicate (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)
std::string LEVEL_CORE::OPCODE_StringShort (UINT32 opcode)
std::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)
PIN_DEPRECATED_API BOOL LEVEL_CORE::INS_IsDirectBranchOrCall (INS ins)
BOOL LEVEL_CORE::INS_IsDirectControlFlow (INS ins)
PIN_DEPRECATED_API 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_IsControlFlow (INS ins)
BOOL LEVEL_CORE::INS_IsValidForIpointAfter (INS ins)
BOOL LEVEL_CORE::INS_IsValidForIpointTakenBranch (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)
PIN_DEPRECATED_API BOOL LEVEL_CORE::INS_IsIndirectBranchOrCall (INS ins)
BOOL LEVEL_CORE::INS_IsIndirectControlFlow (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)
std::string LEVEL_CORE::CATEGORY_StringShort (UINT32 num)
std::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)
std::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)
PIN_DEPRECATED_API ADDRINT LEVEL_PINCLIENT::INS_DirectBranchOrCallTargetAddress (INS ins)
ADDRINT LEVEL_PINCLIENT::INS_DirectControlFlowTargetAddress (INS ins)
ADDRINT LEVEL_PINCLIENT::INS_NextAddress (INS ins)
+

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
+
+

Enumeration Type Documentation

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

Memory type of argument

+ +
+
+ +
+ +
+

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

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

/*!

+
Returns:
String form of category
+ +
+
+ +
+
+ + + + + + + + +
std::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
+ +
+
+ +
+
+ + + + + + + + +
PIN_DEPRECATED_API ADDRINT LEVEL_PINCLIENT::INS_DirectBranchOrCallTargetAddress (INS ins)
+
+
+
Returns:
For direct branches or calls, the target address
+
Note:
DEPRECATED: see INS_DirectControlFlowTargetAddress() instead.
+ +
+
+ +
+
+ + + + + + + + +
ADDRINT LEVEL_PINCLIENT::INS_DirectControlFlowTargetAddress (INS ins)
+
+
+
Returns:
the target address for direct control-flow instructions. must verify that INS_IsDirectControlFlow() is true before using this function. Refer to INS_IsControlFlow() for more details on control-flow instructions.
+ +
+
+ +
+
+ + + + + + + + +
std::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
+
Note:
for system calls function returns false.
+ +
+
+ +
+
+ + + + + + + + +
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 ins is a branch instruction. A branch can be conditional or unconditional.
+
Note:
In some cases branch instructions are actually system calls. In case ins is in practice a system call, the function returns false. For example, JMP_FAR in Windows IA-32 can be a system call under certain conditions.
+ +
+
+ +
+
+ + + + + + + + +
PIN_DEPRECATED_API BOOL LEVEL_CORE::INS_IsBranchOrCall (INS ins)
+
+
+
Returns:
TRUE if ins is a Branch or Call instruction, includes both direct and indirect instruction types.
+
+
Note:
DEPRECATED: Use INS_IsValidForIpointTakenBranch() instead to check if you can use IPOINT_TAKEN_BRANCH. Or use INS_IsControlFlow() to check if instruction is a control flow.
+ +
+
+ +
+
+ + + + + + + + +
BOOL LEVEL_CORE::INS_IsCall (INS ins)
+
+
+
Returns:
true if ins is a Call instruction. Note: In case ins is in practice a system call, the function returns false.
+ +
+
+ +
+
+ + + + + + + + +
BOOL LEVEL_CORE::INS_IsControlFlow (INS ins)
+
+
+
Returns:
true if ins is a Control Flow instruction.
+
Note:
In general, any Branch, Call or Ret is a control flow instruction. However, we exclude any instruction which in practice is a system call (e.g. FAR_JMP in Windows with IA32 is sometimes a syscall).
+ In addition, note that it returns true for Xbegin and Xend instructions. Use this function to verify that an instruction is valid for instrumentation with IARG_BRANCH_TARGET_ADDR.
+ +
+
+ +
+
+ + + + + + + + +
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.
+ +
+
+ +
+
+ + + + + + + + +
PIN_DEPRECATED_API 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.
+
Note:
DEPRECATED: see INS_IsDirectControlFlow() instead.
+ +
+
+ +
+
+ + + + + + + + +
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_IsDirectControlFlow (INS ins)
+
+
+
Returns:
TRUE if ins is a control-flow instruction, and its target address is an offset from the instruction pointer or is an immediate.
+ +
+
+ +
+
+ + + + + + + + +
PIN_DEPRECATED_API BOOL LEVEL_CORE::INS_IsIndirectBranchOrCall (INS ins)
+
+
+
Returns:
true if the branch target comes from a register or memory. result is valid only if INS_IsControlFlow() is true.
+
Note:
DEPRECATED: see INS_IsIndirectControlFlow() instead.
+ +
+
+ +
+
+ + + + + + + + +
BOOL LEVEL_CORE::INS_IsIndirectControlFlow (INS ins)
+
+
+
Returns:
true if ins is a control-flow instruction, and its target address is provided through memory or through a register.
+ +
+
+ +
+
+ + + + + + + + +
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:
Segment prefix operands (i.e. gs:0x14 ) are memory operands.
+ +
+
+ +
+
+ + + + + + + + +
BOOL LEVEL_CORE::INS_IsMemoryWrite (INS ins)
+
+
+
Returns:
true if this instruction writes memory
+
Note:
Segment prefix operands (i.e. gs:0x14 ) are memory operands.
+ +
+
+ +
+
+ + + + + + + + +
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 the given ins is a ret instruction.

+
Note:
This function will return true for iret instructions as well.
+
+See also INS_IsIRet.
+
Returns:
true if the instruction is ret or iret.
+ +
+
+ +
+
+ + + + + + + + +
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
+ +
+
+ +
+
+ + + + + + + + +
BOOL LEVEL_CORE::INS_IsValidForIpointAfter (INS ins)
+
+
+
Returns:
TRUE if ins can be instrumented at location IPOINT_AFTER.
+ +
+
+ +
+
+ + + + + + + + +
BOOL LEVEL_CORE::INS_IsValidForIpointTakenBranch (INS ins)
+
+
+
Returns:
TRUE if ins can be instrumented at location IPOINT_TAKEN_BRANCH.
+ +
+
+ +
+
+ + + + + + + + +
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.
+
Note:
Segment prefix operands (i.e. gs:0x14 ) are memory operands.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
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]insthe instruction.
[in]memoryOpthe 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).
+ +
+
+ +
+
+ + + + + + + + +
std::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
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
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.
+ +
+
+ +
+
+ + + + + + + + +
std::string LEVEL_CORE::OPCODE_StringShort (UINT32 opcode)
+
+
+
Returns:
String with the opcode of the instruction
+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__INS__BASIC__API__IA32.html b/src/tracer/pintool/pin-3.13/doc/html/group__INS__BASIC__API__IA32.html new file mode 100755 index 0000000..beb34c1 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__INS__BASIC__API__IA32.html @@ -0,0 +1,1896 @@ + + + + +Pin: Inspection API for IA-32 and Intel(R) 64 instructions + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
Inspection API for IA-32 and Intel(R) 64 instructions
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+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

BOOL LEVEL_CORE::INS_HasRealRep (INS ins)
BOOL LEVEL_CORE::INS_IsStandardMemop (INS ins)
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_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)
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_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)
BOOL LEVEL_CORE::INS_OperandIsSegmentReg (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_IsIRet (INS ins)
+
+
+

Returns true iff the given ins is an iret instruction.

+
Note:
See also INS_IsRet.
+
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]insThe instruction.
[in]memopIdxMemory 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]insThe 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
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_CORE::INS_OperandIsSegmentReg (INS ins,
UINT32 n 
)
+
+
+
Returns:
true if this operand is a segment 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]insThe instruction.
[in]nOperand'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]insThe instruction.
[in]nOperand'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]insThe instruction.
[in]nOperand'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]insThe instruction.
[in]nOperand'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]insThe instruction.
[in]nOperand'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.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__INS__INST__API.html b/src/tracer/pintool/pin-3.13/doc/html/group__INS__INST__API.html new file mode 100755 index 0000000..0f7612e --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__INS__INST__API.html @@ -0,0 +1,671 @@ + + + + +Pin: Instrumentation API + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
Instrumentation API
+
+
+ + + + + + + + + + + + + + +

+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:
+ + + +
funInstrumentation function for instructions
valpassed 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 & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::INS_InsertCall (INS ins,
IPOINT action,
AFUNPTR funptr,
 ... 
)
+
+
+

Insert a call to funptr relative to instruction ins.

+
Parameters:
+ + + + + +
insInstruction to instrument
actionSpecifies 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). It is only allowed when INS_IsValidForIpointAfter(ins) is true.
+ IPOINT_TAKEN_BRANCH is invalid for non-branches. It is only allowed when INS_IsValidForIpointTakenBranch is true.
funptrInsert 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 & macOS*
+ 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]insThe application instruction.
[in]actionTells whether the record is filled before or after the instruction.
[in]idThe 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]insThe application instruction
[in]actionWhether the record is filled before or after the instruction
[in]idThe 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]insThe application instruction
[in]actionWhether the record is filled before or after the instruction
[in]idThe 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:
+ + + + + +
insInstruction to instrument
actionSpecifies 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). It is only allowed when INS_IsValidForIpointAfter(ins) is true.
+ IPOINT_TAKEN_BRANCH is invalid for non-branches. It is only allowed when INS_IsValidForIpointTakenBranch is true.
+ IPOINT_ANYWHERE is not supported and will result an error.
+ action value must be identical to the value passed to the corresponding INS_InsertThenCall.
funptrInsert 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 & macOS*
+ 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:
+ + + + + +
insInstruction to instrument
actionSpecifies 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). It is only allowed when INS_IsValidForIpointAfter(ins) is true.
+ IPOINT_TAKEN_BRANCH is invalid for non-branches. It is only allowed when INS_IsValidForIpointTakenBranch is true.
funptrInsert 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 & macOS*
+ 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 & macOS*
+ 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:
+ + + + + +
insInstruction to instrument
actionSpecifies 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). It is only allowed when INS_IsValidForIpointAfter(ins) is true.
+ IPOINT_TAKEN_BRANCH is invalid for non-branches. It is only allowed when INS_IsValidForIpointTakenBranch is true.
+ IPOINT_ANYWHERE is not supported and will result an error.
+ action value must be identical to the value passed to the corresponding INS_InsertIfCall.
funptrInsert 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 & macOS*
+ 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:
+ + + + + +
insInstruction to instrument
actionSpecifies 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). It is only allowed when INS_IsValidForIpointAfter(ins) is true.
+ IPOINT_TAKEN_BRANCH is invalid for non-branches. It is only allowed when INS_IsValidForIpointTakenBranch is true.
funptrInsert 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 & macOS*
+ CPU: All
+
+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__INS__MOD__API__GEN__IA32.html b/src/tracer/pintool/pin-3.13/doc/html/group__INS__MOD__API__GEN__IA32.html new file mode 100755 index 0000000..a6b1540 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__INS__MOD__API__GEN__IA32.html @@ -0,0 +1,280 @@ + + + + +Pin: Generic modification API + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
Generic modification API
+
+
+ + + + + + +

+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 & macOS*
+ 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]insinput instruction
[in]ipointlocation relative to ins (only IPOINT_BEFORE and IPOINT_AFTER are supported)
[in]tgtabsolute address of the target
+
+
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & macOS*
+ 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]insinput instruction
[in]ipointlocation relative to ins (only IPOINT_BEFORE and IPOINT_AFTER are supported)
[in]regregister holding the target
+
+
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & macOS*
+ 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]insinput instruction
[in]memopIdxcontrols which memory operand to rewrite (0,1,...)
[in]newBaseregister 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 & macOS*
+ CPU: IA-32 and Intel(R) 64 architectures
+
+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__KNOBS.html b/src/tracer/pintool/pin-3.13/doc/html/group__KNOBS.html new file mode 100755 index 0000000..6a7dfbe --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__KNOBS.html @@ -0,0 +1,169 @@ + + + + +Pin: Command Line Switches + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+
+
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.

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__KNOB__API.html b/src/tracer/pintool/pin-3.13/doc/html/group__KNOB__API.html new file mode 100755 index 0000000..33bacde --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__KNOB__API.html @@ -0,0 +1,87 @@ + + + + +Pin: KNOB: Commandline Option Handling + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
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.

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__KNOB__BASIC.html b/src/tracer/pintool/pin-3.13/doc/html/group__KNOB__BASIC.html new file mode 100755 index 0000000..028854b --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__KNOB__BASIC.html @@ -0,0 +1,463 @@ + + + + +Pin: KNOB: Basics + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +

+Classes

class  LEVEL_BASE::KNOBVALUE< TYPE >
class  LEVEL_BASE::KNOBVALUE_LIST< TYPE >
class  LEVEL_BASE::KNOB_BASE
class  LEVEL_BASE::KNOB< TYPE >
class  LEVEL_BASE::KNOB_COMMENT
class  LEVEL_BASE::ADDRESS_RANGE

+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 std::string &myprefix, const std::string &myname, const std::string &myfamily, const std::string &mydefault, const std::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 std::string &myfamily)
STATIC VOID LEVEL_BASE::KNOB_BASE::EnableKnobFamily (const std::string &myfamily)
STATIC VOID LEVEL_BASE::KNOB_BASE::DisableKnob (const std::string &myname)
STATIC VOID LEVEL_BASE::KNOB_BASE::EnableKnob (const std::string &myname)
STATIC KNOB_BASE * LEVEL_BASE::KNOB_BASE::FindKnob (const std::string &name)
STATIC KNOB_BASE * LEVEL_BASE::KNOB_BASE::FindFamily (const std::string &name)
STATIC KNOB_BASE * LEVEL_BASE::KNOB_BASE::FindEnabledKnob (const std::string &name)
STATIC std::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)
+
+
+

Check for duplicates amongst the declared knobs

+ +
+
+ +
+
+ + + + + + + + +
int LEVEL_BASE::KNOB_BASE::Compare (const KNOB_BASEk2) const
+
+
+
Returns:
TRUE if two knobs are identical.
+ +
+
+ +
+
+ + + + + + + + +
VOID LEVEL_BASE::KNOB_BASE::DisableKnob (const std::string & myname)
+
+
+

Disable a particular knob

+
Parameters:
+ + +
mynameThe particular knob to disable
+
+
+ +
+
+ +
+
+ + + + + + + + +
VOID LEVEL_BASE::KNOB_BASE::DisableKnobFamily (const std::string & myfamily)
+
+
+

Disable all options within a given family of knobs

+
Parameters:
+ + +
myfamilyThe family to disable
+
+
+ +
+
+ +
+
+ + + + + + + + +
VOID LEVEL_BASE::KNOB_BASE::EnableKnob (const std::string & myname)
+
+
+

Enable a particular knob

+
Parameters:
+ + +
mynameThe knob to enable
+
+
+ +
+
+ +
+
+ + + + + + + + +
VOID LEVEL_BASE::KNOB_BASE::EnableKnobFamily (const std::string & myfamily)
+
+
+

Enable all options within a given family of knobs

+
Parameters:
+ + +
myfamilyThe family to enable
+
+
+ +
+
+ +
+
+ + + + + + + + +
KNOB_BASE * LEVEL_BASE::KNOB_BASE::FindEnabledKnob (const std::string & myname)
+
+
+

Search for a knob that is currently not disabled

+
Parameters:
+ + +
mynameThe name of the knob to search which is currently enabled
+
+
+ +
+
+ +
+
+ + + + + + + + +
KNOB_BASE * LEVEL_BASE::KNOB_BASE::FindFamily (const std::string & family)
+
+
+

Search for a knob family

+
Parameters:
+ + +
familyThe family of knobs to locate
+
+
+ +
+
+ +
+
+ + + + + + + + +
KNOB_BASE * LEVEL_BASE::KNOB_BASE::FindKnob (const std::string & myname)
+
+
+

Locate a knob from the list of declared knobs

+
Parameters:
+ + +
mynameThe name of the knob to locate
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LEVEL_BASE::KNOB_BASE::KNOB_BASE (const std::string & myprefix,
const std::string & myname,
const std::string & myfamily,
const std::string & mydefault,
const std::string & mypurpose,
KNOB_MODE mymode = KNOB_MODE_WRITEONCE 
)
+
+
+

Create a new knob

+
Parameters:
+ + + + + + +
mynameName of the knob
myfamilyFamily to which the knob belongs to
mydefaultThe default value to which the knob is initialized with
mypurposeA string that explains the purpose of the knob
mymodeKNOB_MODE
+
+
+ +
+
+ +
+
+ + + + + + + +
UINT32 LEVEL_BASE::KNOB_BASE::NumberOfKnobs ()
+
+
+
Returns:
The total number of knobs that have been declared
+ +
+
+ +
+
+ + + + + + + +
std::string LEVEL_BASE::KNOB_BASE::StringKnobSummary ()
+
+
+

Print out a summary of all the knobs declared

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__KNOB__PRINT.html b/src/tracer/pintool/pin-3.13/doc/html/group__KNOB__PRINT.html new file mode 100755 index 0000000..f9061a5 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__KNOB__PRINT.html @@ -0,0 +1,107 @@ + + + + +Pin: KNOB: Printing + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+ +
+ + + +

+Functions

STATIC std::string LEVEL_BASE::KNOB_BASE::StringLongAll ()
+

Detailed Description

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

Function Documentation

+ +
+
+ + + + + + + +
std::string LEVEL_BASE::KNOB_BASE::StringLongAll ()
+
+
+

x

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__LOCK.html b/src/tracer/pintool/pin-3.13/doc/html/group__LOCK.html new file mode 100755 index 0000000..f1940fc --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__LOCK.html @@ -0,0 +1,731 @@ + + + + +Pin: LOCK: Locking Primitives + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
LOCK: Locking Primitives
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Classes

struct  LEVEL_BASE::PIN_LOCK

+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.

+
Note:
For performance reasons this type request through compiler attributes to be aligned to a memory cache line (64 bytes). For statically allocated objects of this type it is enough. However, when allocating it dynamically it is advised to use allocation operation that enforces this alignment (e.g., memalign)
+ +
+
+ +
+
+ + + + +
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.

+
Note:
For performance reasons this type request through compiler attributes to be aligned to a memory cache line (64 bytes). For statically allocated objects of this type it is enough. However, when allocating it dynamically it is advised to use allocation operation that enforces this alignment (e.g., memalign)
+ +
+
+ +
+
+ + + + +
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.

+
Note:
For performance reasons this type request through compiler attributes to be aligned to a memory cache line (64 bytes). For statically allocated objects of this type it is enough. However, when allocating it dynamically it is advised to use allocation operation that enforces this alignment (e.g., memalign)
+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_BASE::PIN_GetLock (PIN_LOCK * lock,
INT32 val 
)
+
+
+

Acquire the lock.

+
Parameters:
+ + + +
[in]lockThe lock variable.
[in]valUsed 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]lockThe 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]lockThe 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]lockThe 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]lockThe lock variable.
+
+
+ +
+
+ +
+
+ + + + + + + + +
BOOL LEVEL_BASE::PIN_MutexTryLock (PIN_MUTEX * lock)
+
+
+

Try to acquire the lock, but do not block the caller.

+
Parameters:
+ + +
[in]lockThe 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]lockThe lock variable.
+
+
+ +
+
+ +
+
+ + + + + + + + +
INT32 LEVEL_BASE::PIN_ReleaseLock (PIN_LOCK * lock)
+
+
+

Release the lock.

+
Parameters:
+ + +
[in]lockThe 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]lockThe 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]lockThe 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]lockThe 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]lockThe 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]lockThe 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]lockThe 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]lockThe 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]semThe 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]semThe 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]semThe 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]semThe 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]semThe 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]semThe semaphore variable.
[in]timeoutThe 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]semThe semaphore variable.
+
+
+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__MISC.html b/src/tracer/pintool/pin-3.13/doc/html/group__MISC.html new file mode 100755 index 0000000..8b24a0e --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__MISC.html @@ -0,0 +1,150 @@ + + + + +Pin: Miscellaneous functions + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
Miscellaneous functions
+
+
+ + + + + + + + + + +

+Classes

class  LEVEL_BASE::PARSER
class  LEVEL_BASE::COMMAND_LINE_ARGUMENTS
class  LEVEL_BASE::SimpleXMLParser

+Defines

#define PIN_PRODUCT_VERSION_MAJOR   3
#define PIN_PRODUCT_VERSION_MINOR   11
#define PIN_BUILD_NUMBER   97998
#define PIN_COMMIT_HASH   "7ecce2dac"
+

Define Documentation

+ +
+
+ + + + +
#define PIN_BUILD_NUMBER   97998
+
+
+

The Pin kit build number. This is unique for every Pin kit.

+ +
+
+ +
+
+ + + + +
#define PIN_COMMIT_HASH   "7ecce2dac"
+
+
+

The git hash for this Pin build. This is unique for every Pin kit.

+ +
+
+ +
+
+ + + + +
#define PIN_PRODUCT_VERSION_MAJOR   3
+
+
+

The Pin major version number.

+ +
+
+ +
+
+ + + + +
#define PIN_PRODUCT_VERSION_MINOR   11
+
+
+

The Pin minor version number.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__MISC__PARSE.html b/src/tracer/pintool/pin-3.13/doc/html/group__MISC__PARSE.html new file mode 100755 index 0000000..480981c --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__MISC__PARSE.html @@ -0,0 +1,288 @@ + + + + +Pin: Utilities for tokenizing strings + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
Utilities for tokenizing strings
+
+
+ + + + + + + + + + + +

+Functions

INT32 LEVEL_BASE::Int32FromString (const std::string &s)
UINT32 LEVEL_BASE::Uint32FromString (const std::string &s)
INT64 LEVEL_BASE::Int64FromString (const std::string &s)
UINT64 LEVEL_BASE::Uint64FromString (const std::string &s)
FLT64 LEVEL_BASE::FLT64FromString (const std::string &s)
INT LEVEL_BASE::CharToHexDigit (CHAR c)
ADDRINT LEVEL_BASE::AddrintFromString (const std::string &str)
std::string LEVEL_BASE::ReadLine (std::istream &inputFile, UINT32 *lineNum)
UINT32 LEVEL_BASE::Tokenize (const std::string &line, std::string *array, UINT32 n)
+

Detailed Description

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

Function Documentation

+ +
+
+ + + + + + + + +
ADDRINT LEVEL_BASE::AddrintFromString (const std::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 std::string & s)
+
+
+

Convert a string to a FLT64.

+ +
+
+ +
+
+ + + + + + + + +
INT32 LEVEL_BASE::Int32FromString (const std::string & s)
+
+
+

Convert a string to an INT32.

+ +
+
+ +
+
+ + + + + + + + +
INT64 LEVEL_BASE::Int64FromString (const std::string & s)
+
+
+

Convert a string to an INT64.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
std::string LEVEL_BASE::ReadLine (std::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 std::string & line,
std::string * array,
UINT32 n 
)
+
+
+

Break a line into tokens separated by whitespace.

+
Returns:
'array' contains the tokens
+ +
+
+ +
+
+ + + + + + + + +
UINT32 LEVEL_BASE::Uint32FromString (const std::string & s)
+
+
+

Convert a string to a UINT32.

+ +
+
+ +
+
+ + + + + + + + +
UINT64 LEVEL_BASE::Uint64FromString (const std::string & s)
+
+
+

Convert a string to a UINT64.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__MISC__PRINT.html b/src/tracer/pintool/pin-3.13/doc/html/group__MISC__PRINT.html new file mode 100755 index 0000000..d8ed02d --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__MISC__PRINT.html @@ -0,0 +1,974 @@ + + + + +Pin: Utilities for formatting strings + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
Utilities for formatting strings
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Classes

struct  LEVEL_BASE::DECSTR
struct  LEVEL_BASE::HEXSTR
struct  LEVEL_BASE::FLTSTR

+Functions

VOID LEVEL_BASE::SetAddress0x (BOOL val)
BOOL LEVEL_BASE::CharIsSpace (CHAR c)
CHAR LEVEL_BASE::CharToUpper (CHAR c)
std::string LEVEL_BASE::ptrstr (const VOID *val)
std::string LEVEL_BASE::StringFromAddrint (ADDRINT l)
std::string LEVEL_BASE::StringFromUint64 (UINT64 l)
std::string LEVEL_BASE::StringDec (UINT64 l, UINT32 digits, CHAR padding)
std::string LEVEL_BASE::StringDecSigned (INT64 l, UINT32 digits, CHAR padding)
std::string LEVEL_BASE::StringBignum (INT64 l, UINT32 digits, CHAR padding)
std::string LEVEL_BASE::Reformat (const std::string &s, const std::string &prefix, UINT32 min_line, UINT32 max_line)
std::string LEVEL_BASE::StringHex32 (UINT32 l, UINT32 digits, BOOL prefix_0x)
std::string LEVEL_BASE::StringFlt (FLT64 val, UINT32 precision, UINT32 width)
std::string LEVEL_BASE::StringBool (BOOL b)
std::string LEVEL_BASE::StringTri (TRI t)
std::string LEVEL_BASE::StringHex (UINT32 l, UINT32 digits, BOOL prefix_0x=TRUE)
std::string LEVEL_BASE::decstr (INT64 val, UINT32 width=0)
std::string LEVEL_BASE::decstr (INT32 val, UINT32 width=0)
std::string LEVEL_BASE::decstr (INT16 val, UINT32 width=0)
std::string LEVEL_BASE::decstr (UINT64 val, UINT32 width=0)
std::string LEVEL_BASE::decstr (UINT32 val, UINT32 width=0)
std::string LEVEL_BASE::decstr (UINT16 val, UINT32 width=0)
std::string LEVEL_BASE::hexstr (INT64 val, UINT32 width=0)
std::string LEVEL_BASE::hexstr (INT32 val, UINT32 width=0)
std::string LEVEL_BASE::hexstr (INT16 val, UINT32 width=0)
std::string LEVEL_BASE::hexstr (UINT64 val, UINT32 width=0)
std::string LEVEL_BASE::hexstr (VOID *p, UINT32 width=0)
std::string LEVEL_BASE::hexstr (const VOID *p, UINT32 width=0)
std::string LEVEL_BASE::hexstr (UINT32 val, UINT32 width=0)
std::string LEVEL_BASE::hexstr (UINT16 val, UINT32 width=0)
std::string LEVEL_BASE::fltstr (FLT64 val, UINT32 prec=0, UINT32 width=0)
std::string LEVEL_BASE::ljstr (const std::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).

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
std::string LEVEL_BASE::decstr (INT64 val,
UINT32 width = 0 
)
+
+
+

Create a string containing the given decimal integer.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
std::string LEVEL_BASE::decstr (INT32 val,
UINT32 width = 0 
)
+
+
+

Create a string containing the given decimal integer.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
std::string LEVEL_BASE::decstr (INT16 val,
UINT32 width = 0 
)
+
+
+

Create a string containing the given decimal integer.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
std::string LEVEL_BASE::decstr (UINT64 val,
UINT32 width = 0 
)
+
+
+

Create a string containing the given decimal integer.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
std::string LEVEL_BASE::decstr (UINT32 val,
UINT32 width = 0 
)
+
+
+

Create a string containing the given decimal integer.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
std::string LEVEL_BASE::decstr (UINT16 val,
UINT32 width = 0 
)
+
+
+

Create a string containing the given decimal integer.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::string LEVEL_BASE::fltstr (FLT64 val,
UINT32 prec = 0,
UINT32 width = 0 
)
+
+
+

Create a string containing the given floating point number.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
std::string LEVEL_BASE::hexstr (const VOID * p,
UINT32 width = 0 
)
+
+
+

Create a string with a hexadecimal prefix containing the given hexadecimal integer.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
std::string LEVEL_BASE::hexstr (INT64 val,
UINT32 width = 0 
)
+
+
+

Create a string with a hexadecimal prefix containing the given hexadecimal integer.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
std::string LEVEL_BASE::hexstr (INT32 val,
UINT32 width = 0 
)
+
+
+

Create a string with a hexadecimal prefix containing the given hexadecimal integer.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
std::string LEVEL_BASE::hexstr (INT16 val,
UINT32 width = 0 
)
+
+
+

Create a string with a hexadecimal prefix containing the given hexadecimal integer.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
std::string LEVEL_BASE::hexstr (UINT64 val,
UINT32 width = 0 
)
+
+
+

Create a string with a hexadecimal prefix containing the given hexadecimal integer.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
std::string LEVEL_BASE::hexstr (VOID * p,
UINT32 width = 0 
)
+
+
+

Create a string with a hexadecimal prefix containing the given hexadecimal integer.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
std::string LEVEL_BASE::hexstr (UINT16 val,
UINT32 width = 0 
)
+
+
+

Create a string with a hexadecimal prefix containing the given hexadecimal integer.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
std::string LEVEL_BASE::hexstr (UINT32 val,
UINT32 width = 0 
)
+
+
+

Create a string with a hexadecimal prefix containing the given hexadecimal integer.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::string LEVEL_BASE::ljstr (const std::string & s,
UINT32 width,
CHAR padding = ' ' 
)
+
+
+

Left justify string.

+ +
+
+ +
+
+ + + + + + + + +
std::string LEVEL_BASE::ptrstr (const VOID * val)
+
+
+

Print pointer.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::string LEVEL_BASE::Reformat (const std::string & s,
const std::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.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::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.

+ +
+
+ +
+
+ + + + + + + + +
std::string LEVEL_BASE::StringBool (BOOL b)
+
+
+

Convert a BOOL into a string.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::string LEVEL_BASE::StringDec (UINT64 l,
UINT32 digits,
CHAR padding 
)
+
+
+

Convert a UINT64 into a dec string. Padding can be specified as well.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::string LEVEL_BASE::StringDecSigned (INT64 l,
UINT32 digits,
CHAR padding 
)
+
+
+

Convert a INT64 into a dec string. Padding can be specified as well.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::string LEVEL_BASE::StringFlt (FLT64 val,
UINT32 precision,
UINT32 width 
)
+
+
+

Convert a FLT64 into a string. Padding can be specified as well.

+ +
+
+ +
+
+ + + + + + + + +
std::string LEVEL_BASE::StringFromAddrint (ADDRINT l)
+
+
+

Convert a ADDRINT into a string using the hex address format.

+ +
+
+ +
+
+ + + + + + + + +
std::string LEVEL_BASE::StringFromUint64 (UINT64 l)
+
+
+

Convert a UINT64 into a string using the hex address format.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::string LEVEL_BASE::StringHex (UINT32 l,
UINT32 digits,
BOOL prefix_0x = TRUE 
)
+
+
+

Create a string with a hexadecimal prefix containing the given hexadecimal integer.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::string LEVEL_BASE::StringHex32 (UINT32 l,
UINT32 digits,
BOOL prefix_0x 
)
+
+
+

Convert a UINT32 into a hex string. Padding can be specified as well.

+ +
+
+ +
+
+ + + + + + + + +
std::string LEVEL_BASE::StringTri (TRI t)
+
+
+

Convert a TRI into a string.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__PHYSICAL__CONTEXT__API.html b/src/tracer/pintool/pin-3.13/doc/html/group__PHYSICAL__CONTEXT__API.html new file mode 100755 index 0000000..43c3261 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__PHYSICAL__CONTEXT__API.html @@ -0,0 +1,275 @@ + + + + +Pin: Physical context manipulation API + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
Physical context manipulation API
+
+
+ + + + + + + + +

+Typedefs

typedef struct 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_CONTEXTpPhysCtxt,
VOID * fpstate 
)
+
+
+

Get the floating point state of the specified physical context.

+
Parameters:
+ + + +
[in]pPhysCtxtphysical context whose floating point state is retrieved
[in]fpstatepointer 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_CONTEXTpPhysCtxt,
REG reg 
)
+
+
+

Get the value of the integer register in the specified physical context.

+
Parameters:
+ + + +
[in]pPhysCtxtphysical context whose register value is requested
[in]regphysical 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_CONTEXTpPhysCtxt,
const VOID * fpstate 
)
+
+
+

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

+
Parameters:
+ + + +
[in,out]pPhysCtxtphysical context whose floating point state is to be set
[in]fpstatenew 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_CONTEXTpPhysCtxt,
REG reg,
ADDRINT val 
)
+
+
+

Set the given value for the integer register in the specified physical context.

+
Parameters:
+ + + + +
[in,out]pPhysCtxtphysical context whose register value is to be set
[in]regphysical register whose value is to be set (up to REG_PHYSICAL_INTEGER_END)
[in]valnew value of the register
+
+
+
Availability:
Mode: JIT
+ O/S: Windows
+ CPU: IA-32 and Intel(R) 64 architectures
+
+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__PIN__CALLBACKS.html b/src/tracer/pintool/pin-3.13/doc/html/group__PIN__CALLBACKS.html new file mode 100755 index 0000000..4a069fa --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__PIN__CALLBACKS.html @@ -0,0 +1,197 @@ + + + + +Pin: PIN callbacks manipulation API + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
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_SetExecutionOrder (PIN_CALLBACK callback, CALL_ORDER order)
CALL_ORDER LEVEL_PINCLIENT::CALLBACK_GetExecutionOrder (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

+ +
+
+ + + + + + + + +
CALL_ORDER LEVEL_PINCLIENT::CALLBACK_GetExecutionOrder (PIN_CALLBACK callback)
+
+
+

Gets the execution order of a registered callback function. See CALL_ORDER. The the lower the order, the sooner it will be called relative to other similar callbacks

+
Parameters:
+ + +
callbackRegistered Callback function returned from *_Add*Function()
+
+
+
Returns:
CALL_ORDER The current order value of the callback
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::CALLBACK_SetExecutionOrder (PIN_CALLBACK callback,
CALL_ORDER order 
)
+
+
+

Sets the execution order of a registered callback function. See CALL_ORDER. The the lower the order, the sooner it will be called relative to other similar callbacks.

+
Parameters:
+ + + +
callbackRegistered Callback function returned from *_Add*Function()
orderNew order to assign to the callback (relative to the other callbacks). See CALL_ORDER for usage details.
+
+
+
+
Note:
The pin client lock is obtained during the call of this API.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + +
GLOBALCONST PIN_CALLBACK LEVEL_PINCLIENT::PIN_CALLBACK_INVALID ()
+
+
+

Invalid value for PIN callback

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__PIN__CONTROL.html b/src/tracer/pintool/pin-3.13/doc/html/group__PIN__CONTROL.html new file mode 100755 index 0000000..56ed3c0 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__PIN__CONTROL.html @@ -0,0 +1,3076 @@ + + + + +Pin: Controlling and Initializing + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
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)
typedef VOID(* LEVEL_PINCLIENT::FORK_PROBE_MODE_CALLBACK )(UINT32 childPid, 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_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 ()
const std::string & LEVEL_PINCLIENT::PIN_Version ()
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)
PIN_CALLBACK LEVEL_PINCLIENT::PIN_AddForkFunctionProbed (FPOINT point, FORK_PROBE_MODE_CALLBACK fun, VOID *val)
+

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]vThe 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]vThe 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]vThe 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]threadIndexThe Pin thread ID of the thread that changes contexts.
[in]reasonCause of the context change.
[in]fromApplication's register state prior to the context change (NULL if reason is CONTEXT_CHANGE_REASON_CALLBACK).
[in]toApplication'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]infoAdditional 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]vThe 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]vThe 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]vThe 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]bufA buffer which receives the fetched instruction bytes. This buffer is at least size bytes long.
[in]addrStarting address from which instruction bytes should be fetched.
[in]sizeThe number of bytes that should be fetched.
[out]pExceptInfoIf 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]vThe 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.

+

It is prohibited to access the TLS in this callback.

+
Parameters:
+ + + +
[in]codeO/S specific termination code for the application.
[in]vThe 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]threadIdThread index
[in]ctxtRegister state immediately before/after the fork.
[in]vThe tool's call-back value.
+
+
+ +
+
+ +
+
+ + + + +
typedef VOID(* LEVEL_PINCLIENT::FORK_PROBE_MODE_CALLBACK)(UINT32 childPid, VOID *v)
+
+
+

Call-back function in probe mode for fork notification.

+
Parameters:
+ + + +
[in]childPidProcess id of the child process, available after fork in parent
[in]vThe 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]tidThe Pin thread ID of the thread that handled the signal.
[in]sigThe signal number.
[in,out]ctxtThe 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]hasHandlerTRUE if the application has a handler registered for this signal.
[in]pExceptInfoIf the signal represents an exception, pExceptInfo points to a description of the exception. If the signal is not an exception, pExceptInfo is NULL.
[in]vThe 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]tidThe Pin thread ID of the thread that generated the exception.
[in,out]pExceptInfoPointer 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]pPhysCtxtPhysical 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]vThe 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]memTransInfoMemory address data structure
[in]vThe 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]sizeSize of the failed allocation
[in]vThe 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. : 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]vThe 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]imgImage.
[in]vThe 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]vThe 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]threadIndexThe Pin thread ID of the terminating thread.
[in]ctxtRegister state of the thread.
[in]vThe 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]sigmaskThe 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]vThe 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]threadIndexThe Pin thread ID of the terminating thread.
[in]ctxtRegister state of the thread immediately before it detaches.
[in]vThe 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]vThe 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.

+

This function may be called on a different thread than the given threadIndex.

+
Parameters:
+ + + + + +
[in]threadIndexThe Pin thread ID of the terminating thread.
[in]ctxtRegister state of the thread immediately before it terminates.
[in]codeO/S specific termination code for the thread.
[in]vThe 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]threadIndexThe Pin thread ID of the new thread.
[in]ctxtInitial register state for the new thread. The tool may change this.
[in]flagsO/S specific flags for the new thread.
[in]vThe tool's call-back value.
+
+
+ +
+
+

Enumeration Type Documentation

+ +
+ +
+

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 for controlling Pin's SMC detection

+ +
+
+ +
+ +
+

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]funFunction to be called at application start.
[in]valValue 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]funCall-back function to execute immediately before the application changes context.
[in]valValue 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:
+ + + +
funCall back function to execute before detaching
valValue 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, macOS*
+ 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:
+ + + +
funCall back function to execute before detaching
valValue 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]funThe tool's call-back function.
[in]valThe 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 & macOS*
+ 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:
+ + + +
funCall back function is passed exit code and val
valValue 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 & 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.

+
Parameters:
+ + + + +
[in]whereTells when to make the call-back and tells whether the parent or child makes the call-back.
[in]funCall-back function to execute.
[in]vValue 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, macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
PIN_CALLBACK LEVEL_PINCLIENT::PIN_AddForkFunctionProbed (FPOINT point,
FORK_PROBE_MODE_CALLBACK fun,
VOID * val 
)
+
+
+

Register a notification handler that is called when the application forks a new process. If vfork() is called in application, Pin replaces it with fork(). This replacement is needed to keep Pin/Tool state consistent and prevent memory overlap in callbacks following the fork/vfork. The function can only be used on Linux, and macOS*.

+
Parameters:
+ + + + +
[in]whereTells when to make the call-back and tells whether the parent or child makes the call-back.
[in]funCall-back function to execute.
[in]vValue 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 lock is obtained during the call of this API.
+
Availability:
Mode: Probe
+ O/S: Linux, and macOS*
+ 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]funHandler function to execute upon receipt of internal exception in pin/tool.
[in]valValue 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:
+ + + +
funCall back function is passed the thread id, address, size, read
valValue 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 & macOS*
+ 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:
+ + + +
funCall back function is passed the size of the failing allocation
valValue 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 & macOS*
+ 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:
+ + + +
funCallback function to be registered
valValue 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 & macOS*
+ 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]imgImage.
[in]funCallback function to execute when probe insertion is complete.
[in]valValue 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]funCall-back function to execute for the attached thread.
[in]valValue 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 & macOS*
+ 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]funCall-back function to execute for the attached thread.
[in]valValue 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 & macOS*
+ 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]funCall-back function to execute by the detaching thread.
[in]valValue 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]funCall-back function to execute by the detaching thread.
[in]valValue 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 & macOS*
+ 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]funCall-back function to execute for the terminating thread.
[in]valValue 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 & macOS*
+ 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]funCall-back function to execute for the new thread.
[in]valValue 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 & macOS*
+ 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:
+ + + +
funCall back function to execute when starting to attach
valValue 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:
+ + + +
funCall back function to execute when starting to attach
valValue 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 CONTEXTctxt,
THREADID tid,
CALLINGSTD_TYPE cstype,
AFUNPTR origFunPtr,
CALL_APPLICATION_FUNCTION_PARAMparam,
 ... 
)
+
+
+

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]ctxtThe 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]tidThe Pin id of the current thread (see IARG_THREAD_ID).
[in]cstypeThe calling standard used for calling this function (CALLINGSTD_DEFAULT recommended).
[in]origFunPtrThe entry point of the application function.
[in]paramAdditional 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]addrmemory 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 & macOS*
+ 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]addrmemory 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 & macOS*
+ 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 & macOS*
+ 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 macOS*, 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, & macOS*
+ 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, & macOS*
+ 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]copyBufdestination buffer
[in]addressaddress to copy from
[in]maxSizenumber of bytes to copy
[out]pExceptInfopointer to the structure that receives the exception information
+
+
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
ADDRINT LEVEL_PINCLIENT::PIN_GetAuxVectorValue (ADDRINT type,
bool * found 
)
+
+
+

Given an aux vector entry type, returns the entry's value.

+
Parameters:
+ + + +
[in]typeThe type of the desired auxv entry.
[out]foundTrue 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:
+ + + +
funCall back function has no parameters
valValue to be passed to fun when it is called
+
+
+
Availability:
Mode: JIT & PROBE
+ O/S: Linux, Windows & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
BOOL LEVEL_PINCLIENT::PIN_Init (INT32 argc,
CHAR ** argv 
)
+
+
+

Initialize Pin system. Must be called before PIN_StartProgram

+
Parameters:
+ + + +
argcargc value passed to main
argvargv 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 & macOS*
+ 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]modeExplicit 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:
+ + + + +
addressthe application address to instrument
funptrthe 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]sigThe signal number to intercept, which may not be SIGKILL or SIGSTOP.
[in]funThe tool's intercept function, or NULL.
[in]valValue 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]tidThe 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:
+ + +
addressthe 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 & macOS*
+ 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 & macOS*
+ 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 & macOS*
+ 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:
+ + + +
startThe starting address of the range
endThe 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]dstdestination region
[in]srcregion to copy from
[in]sizenumber 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]dstdestination region
[in]srcregion to copy from
[in]sizenumber of bytes to copy
[out]pExceptInfopointer 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 <pExceptInfo> 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:
+ + + +
optionsThe PIN_CONFIGURATION_INFO instance to modify.
callbackTypeSpecifies 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]enableSMC_ENABLE, or SMC_DISABLE
+
+
+

SMC support is enabled by default

+
Availability:
Mode: JIT
+ O/S: Windows, Linux & macOS*
+ 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:
+ + +
optionsPin 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 & macOS*
+ 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 & macOS*
+ 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]tidId 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]tidId of the calling thread.
[in]funHandler function to execute upon receipt of internal exception in pin/tool.
[in]valValue 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]sigThe signal number, which may not be SIGKILL or SIGSTOP.
[in]enableIf 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 & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + +
const std::string& LEVEL_PINCLIENT::PIN_Version ()
+
+
+

Returns a fully descriptive Pin version string, including the Intel copyright notice. The returned version is the Pin version that the tool was linked with.

+ +
+
+ +
+
+ + + + + + + +
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 & macOS*
+ CPU: All
+
+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__PIN__PROCESS__API.html b/src/tracer/pintool/pin-3.13/doc/html/group__PIN__PROCESS__API.html new file mode 100755 index 0000000..b531279 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__PIN__PROCESS__API.html @@ -0,0 +1,172 @@ + + + + +Pin: Pin Process API + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
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]statusThe 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]exitCodeexit code of the process to be reported to the operating system.
+
+
+
Returns:
the function never returns.
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + +
INT LEVEL_PINCLIENT::PIN_GetPid ()
+
+
+

Returns current process id

+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & macOS*
+ CPU: All
+
+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__PIN__SYSCALL__API.html b/src/tracer/pintool/pin-3.13/doc/html/group__PIN__SYSCALL__API.html new file mode 100755 index 0000000..2f22c32 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__PIN__SYSCALL__API.html @@ -0,0 +1,507 @@ + + + + +Pin: Pin System Call API + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
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]threadIndexThe Pin thread ID of the thread that executes the system call.
[in,out]ctxtApplication's register state immediately before execution of the system call. The tool may change this and affect the new register state.
[in]stdThe system calling standard.
[in]vThe 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]threadIndexThe Pin thread ID of the thread that executed the system call.
[in,out]ctxtApplication's register state immediately after execution of the system call.The tool may change this and affect the new register state.
[in]stdThe system calling standard.
[in]vThe 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]funFunction to be called immediately before execution of a system call.
[in]valValue 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]funFunction to be called immediately after execution of a system call.
[in]valValue 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 CONTEXTctxt,
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]ctxtcontext before the system call execution
[in]stdsystem calling standard
[in]argNumordinal 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 & macOS*
+ CPU: IA-32 and Intel(R) 64 architectures
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
ADDRINT LEVEL_PINCLIENT::PIN_GetSyscallErrno (const CONTEXTctxt,
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]ctxtcontext after the system call execution
[in]stdsystem calling standard
+
+
+
Returns:
error code, if the system call failed;
+ zero, if the system call succeeded
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & macOS*
+ CPU: IA-32 and Intel(R) 64 architectures
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
ADDRINT LEVEL_PINCLIENT::PIN_GetSyscallNumber (const CONTEXTctxt,
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]ctxtcontext before the system call execution
[in]stdsystem calling standard
+
+
+
Returns:
system call number
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & macOS*
+ CPU: IA-32 and Intel(R) 64 architectures
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
ADDRINT LEVEL_PINCLIENT::PIN_GetSyscallReturn (const CONTEXTctxt,
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]ctxtcontext after the system call execution
[in]stdsystem calling standard
+
+
+
Returns:
return value of the system call.
+ On Linux and macOS* the function returns -1 if the system call failed
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & macOS*
+ CPU: IA-32 and Intel(R) 64 architectures
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_SetSyscallArgument (CONTEXTctxt,
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]ctxtcontext before the system call execution
[in]stdsystem calling standard
[in]argNumordinal number of the argument whose value is to be set. Ordinal numbers start from zero for the first argument
[in]valnew value of the argument
+
+
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & macOS*
+ CPU: IA-32 and Intel(R) 64 architectures
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::PIN_SetSyscallNumber (CONTEXTctxt,
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]ctxtcontext before the system call execution
[in]stdsystem calling standard
[in]valnew system call number
+
+
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & macOS*
+ CPU: IA-32 and Intel(R) 64 architectures
+
+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__PIN__THREAD__API.html b/src/tracer/pintool/pin-3.13/doc/html/group__PIN__THREAD__API.html new file mode 100755 index 0000000..6f67fa0 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__PIN__THREAD__API.html @@ -0,0 +1,730 @@ + + + + +Pin: Pin Thread API + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
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]argargument 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]destructFunoptional 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]keyTLS 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]exitCodeexit 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]keyTLS key, referencing the slot, whose value is requested. The key should be allocated by a previous call to the PIN_CreateThreadDataKey() function.
[in]threadIdThread 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]keyTLS 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]datavalue to be stored in the TLS slot of the current thread.
[in]threadIdThread 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]millisecondstime interval, in milliseconds.
+
+
+
Availability:
Mode: JIT & Probe
+ O/S: Linux, Windows & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
THREADID LEVEL_PINCLIENT::PIN_SpawnInternalThread (ROOT_THREAD_FUNCpThreadFunc,
VOID * arg,
size_t stackSize,
PIN_THREAD_UIDpThreadUid 
)
+
+
+

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:

+ +

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]pThreadFuncmain (starting) function of the thread
[in]argargument of the main thread function
[in]stackSizesize 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]pThreadUidpointer 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_UIDthreadUid,
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]threadUidunique identifier of the thread to be waited for termination, provided by PIN_SpawnInternalThread() or PIN_ThreadUid().
[in]millisecondstime-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]pExitCodeoptional 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

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__PROTO.html b/src/tracer/pintool/pin-3.13/doc/html/group__PROTO.html new file mode 100755 index 0000000..de9be76 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__PROTO.html @@ -0,0 +1,80 @@ + + + + +Pin: Prototypes + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+
+
Prototypes
+
+
+ +
+

A PROTO is a data structure that describes a function prototype.

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__PROTO__API.html b/src/tracer/pintool/pin-3.13/doc/html/group__PROTO__API.html new file mode 100755 index 0000000..3bf170e --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__PROTO__API.html @@ -0,0 +1,268 @@ + + + + +Pin: PROTO API + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
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 +
+ }
+

Detailed Description

+

This API describes an application routine.

+

Define Documentation

+ +
+
+ + + + + + + + +
#define PIN_PARG( t)   _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( t)   _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( t)   _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.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__REG__BASIC__API.html b/src/tracer/pintool/pin-3.13/doc/html/group__REG__BASIC__API.html new file mode 100755 index 0000000..bf4d2a9 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__REG__BASIC__API.html @@ -0,0 +1,91 @@ + + + + +Pin: REG: Register Object + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
REG: Register Object
+
+
+ + + + + + +

+Classes

class  LEVEL_CORE::REGISTER_SET< _min, _max >

+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.

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__REG__CPU__GENERIC.html b/src/tracer/pintool/pin-3.13/doc/html/group__REG__CPU__GENERIC.html new file mode 100755 index 0000000..c863e7c --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__REG__CPU__GENERIC.html @@ -0,0 +1,437 @@ + + + + +Pin: REG (generic) + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
REG (generic)
+
+
+ + + + + + + + + + + + + + + + + + + + + +

+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)
std::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 & macOS*
+ 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. If reg is not in range of REG enumeration, returns invalid reg.

+ +
+
+ +
+
+ + + + + + + +
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_pseudo (REG reg)
+
+
+ +
+
+ +
+
+ + + + + + + + +
BOOL LEVEL_BASE::REG_is_seg (REG reg)
+
+
+
Returns:
true if reg is a segment register
+ +
+
+ +
+
+ + + + + + + + +
std::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.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__REG__CPU__IA32.html b/src/tracer/pintool/pin-3.13/doc/html/group__REG__CPU__IA32.html new file mode 100755 index 0000000..610d546 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__REG__CPU__IA32.html @@ -0,0 +1,3051 @@ + + + + +Pin: REG (specific to the IA-32 and Intel(R) 64 architectures) + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
REG (specific to the IA-32 and Intel(R) 64 architectures)
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Classes

struct  LEVEL_BASE::REGDEF_ENTRY

+Defines

#define _REGSBIT(regSubClass)   (REG_SUBCLASS_BITS(1) << (regSubClass))

+Typedefs

typedef UINT64 LEVEL_BASE::REG_CLASS_BITS
typedef class REGISTER_SET
+< REG_FirstInRegset,
+REG_LastInRegset > 
LEVEL_CORE::REGSET

+Enumerations

enum  LEVEL_BASE::REG {
+  REG_INVALID_ = 0, +
+  REG_GR_BASE = REG_RBASE, +
+  LEVEL_BASE::REG_RDI = REG_GR_BASE, +
+  LEVEL_BASE::REG_GDI = REG_RDI, +
+  LEVEL_BASE::REG_RSI, +
+  LEVEL_BASE::REG_GSI = REG_RSI, +
+  LEVEL_BASE::REG_RBP, +
+  LEVEL_BASE::REG_GBP = REG_RBP, +
+  LEVEL_BASE::REG_RSP, +
+  LEVEL_BASE::REG_STACK_PTR = REG_RSP, +
+  LEVEL_BASE::REG_RBX, +
+  LEVEL_BASE::REG_GBX = REG_RBX, +
+  LEVEL_BASE::REG_RDX, +
+  LEVEL_BASE::REG_GDX = REG_RDX, +
+  LEVEL_BASE::REG_RCX, +
+  LEVEL_BASE::REG_GCX = REG_RCX, +
+  LEVEL_BASE::REG_RAX, +
+  LEVEL_BASE::REG_GAX = REG_RAX, +
+  REG_R8, +
+  REG_R9, +
+  REG_R10, +
+  REG_R11, +
+  REG_R12, +
+  REG_R13, +
+  REG_R14, +
+  REG_R15, +
+  REG_GR_LAST = REG_R15, +
+  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_RFLAGS, +
+  REG_GFLAGS = REG_RFLAGS, +
+  REG_RIP, +
+  REG_INST_PTR = REG_RIP, +
+  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_EDI, +
+  REG_DIL, +
+  REG_ESI, +
+  REG_SIL, +
+  REG_EBP, +
+  REG_BPL, +
+  REG_ESP, +
+  REG_SPL, +
+  REG_EBX, +
+  REG_EDX, +
+  REG_ECX, +
+  REG_EAX, +
+  REG_EFLAGS, +
+  REG_EIP, +
+  REG_R8B, +
+  REG_R8W, +
+  REG_R8D, +
+  REG_R9B, +
+  REG_R9W, +
+  REG_R9D, +
+  REG_R10B, +
+  REG_R10W, +
+  REG_R10D, +
+  REG_R11B, +
+  REG_R11W, +
+  REG_R11D, +
+  REG_R12B, +
+  REG_R12W, +
+  REG_R12D, +
+  REG_R13B, +
+  REG_R13W, +
+  REG_R13D, +
+  REG_R14B, +
+  REG_R14W, +
+  REG_R14D, +
+  REG_R15B, +
+  REG_R15W, +
+  REG_R15D, +
+  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_XMM8, +
+  REG_XMM9, +
+  REG_XMM10, +
+  REG_XMM11, +
+  REG_XMM12, +
+  REG_XMM13, +
+  REG_XMM14, +
+  REG_XMM15, +
+  REG_XMM_SSE_LAST = REG_XMM15, +
+  REG_XMM_AVX_LAST = REG_XMM_SSE_LAST, +
+  REG_XMM_AVX512_HI16_FIRST, +
+  REG_XMM16 = REG_XMM_AVX512_HI16_FIRST, +
+  REG_XMM17, +
+  REG_XMM18, +
+  REG_XMM19, +
+  REG_XMM20, +
+  REG_XMM21, +
+  REG_XMM22, +
+  REG_XMM23, +
+  REG_XMM24, +
+  REG_XMM25, +
+  REG_XMM26, +
+  REG_XMM27, +
+  REG_XMM28, +
+  REG_XMM29, +
+  REG_XMM30, +
+  REG_XMM31, +
+  REG_XMM_AVX512_HI16_LAST = REG_XMM31, +
+  REG_XMM_AVX512_LAST = REG_XMM_AVX512_HI16_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_YMM8, +
+  REG_YMM9, +
+  REG_YMM10, +
+  REG_YMM11, +
+  REG_YMM12, +
+  REG_YMM13, +
+  REG_YMM14, +
+  REG_YMM15, +
+  REG_YMM_AVX_LAST = REG_YMM15, +
+  REG_YMM_AVX512_HI16_FIRST, +
+  REG_YMM16 = REG_YMM_AVX512_HI16_FIRST, +
+  REG_YMM17, +
+  REG_YMM18, +
+  REG_YMM19, +
+  REG_YMM20, +
+  REG_YMM21, +
+  REG_YMM22, +
+  REG_YMM23, +
+  REG_YMM24, +
+  REG_YMM25, +
+  REG_YMM26, +
+  REG_YMM27, +
+  REG_YMM28, +
+  REG_YMM29, +
+  REG_YMM30, +
+  REG_YMM31, +
+  REG_YMM_AVX512_HI16_LAST = REG_YMM31, +
+  REG_YMM_AVX512_LAST = REG_YMM_AVX512_HI16_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_ZMM8, +
+  REG_ZMM9, +
+  REG_ZMM10, +
+  REG_ZMM11, +
+  REG_ZMM12, +
+  REG_ZMM13, +
+  REG_ZMM14, +
+  REG_ZMM15, +
+  REG_ZMM_AVX512_SPLIT_LAST = REG_ZMM15, +
+  REG_ZMM_AVX512_HI16_FIRST, +
+  REG_ZMM16 = REG_ZMM_AVX512_HI16_FIRST, +
+  REG_ZMM17, +
+  REG_ZMM18, +
+  REG_ZMM19, +
+  REG_ZMM20, +
+  REG_ZMM21, +
+  REG_ZMM22, +
+  REG_ZMM23, +
+  REG_ZMM24, +
+  REG_ZMM25, +
+  REG_ZMM26, +
+  REG_ZMM27, +
+  REG_ZMM28, +
+  REG_ZMM29, +
+  REG_ZMM30, +
+  REG_ZMM31, +
+  REG_ZMM_AVX512_HI16_LAST = REG_ZMM31, +
+  REG_ZMM_AVX512_LAST = REG_ZMM_AVX512_HI16_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_RAX, +
+  REG_ORIG_GAX = REG_ORIG_RAX, +
+  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, +
+  LEVEL_BASE::REG_INST_G0D, +
+  LEVEL_BASE::REG_INST_G1D, +
+  LEVEL_BASE::REG_INST_G2D, +
+  LEVEL_BASE::REG_INST_G3D, +
+  LEVEL_BASE::REG_INST_G4D, +
+  LEVEL_BASE::REG_INST_G5D, +
+  LEVEL_BASE::REG_INST_G6D, +
+  LEVEL_BASE::REG_INST_G7D, +
+  LEVEL_BASE::REG_INST_G8D, +
+  LEVEL_BASE::REG_INST_G9D, +
+  LEVEL_BASE::REG_INST_G10D, +
+  LEVEL_BASE::REG_INST_G11D, +
+  LEVEL_BASE::REG_INST_G12D, +
+  LEVEL_BASE::REG_INST_G13D, +
+  LEVEL_BASE::REG_INST_G14D, +
+  LEVEL_BASE::REG_INST_G15D, +
+  LEVEL_BASE::REG_INST_G16D, +
+  LEVEL_BASE::REG_INST_G17D, +
+  LEVEL_BASE::REG_INST_G18D, +
+  LEVEL_BASE::REG_INST_G19D, +
+  LEVEL_BASE::REG_INST_G20D, +
+  LEVEL_BASE::REG_INST_G21D, +
+  LEVEL_BASE::REG_INST_G22D, +
+  LEVEL_BASE::REG_INST_G23D, +
+  LEVEL_BASE::REG_INST_G24D, +
+  LEVEL_BASE::REG_INST_G25D, +
+  LEVEL_BASE::REG_INST_G26D, +
+  LEVEL_BASE::REG_INST_G27D, +
+  LEVEL_BASE::REG_INST_G28D, +
+  LEVEL_BASE::REG_INST_G29D, +
+  REG_TOOL_LAST = REG_INST_G29D, +
+  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_is_gs_or_fs (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)
std::string LEVEL_CORE::REGSET_StringShort (const REGSET &regset)
std::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_RDI  +

rdi

+
REG_GDI  +

edi on a 32 bit machine, rdi on 64

+
REG_RSI  +

rsi

+
REG_GSI  +

esi on a 32 bit machine, rsi on 64

+
REG_RBP  +

rbp

+
REG_GBP  +

ebp on a 32 bit machine, rbp on 64

+
REG_RSP  +

rsp

+
REG_STACK_PTR  +

esp on a 32 bit machine, rsp on 64

+
REG_RBX  +

rbx

+
REG_GBX  +

ebx on a 32 bit machine, rbx on 64

+
REG_RDX  +

rdx

+
REG_GDX  +

edx on a 32 bit machine, rdx on 64

+
REG_RCX  +

rcx

+
REG_GCX  +

ecx on a 32 bit machine, rcx on 64

+
REG_RAX  +

rax

+
REG_GAX  +

eax on a 32 bit machine, rax on 64

+
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  +

*** Segment registers (FS/GS) handling in Pin ***

+

Background about segment virtualization support in Pin: Segment virtualization was introduced in Pin in the past in order to support Pin on OS's which didn't contain old (without segment usage) libc in a standard installation. Application and Pin were using 2 different TLS's, however access to them was done through segment registers (Also known as thread-self-pointer registers) (actually through their matching segment descriptor which contain the segment base address). Segment register (selector) can have one value at a time. Changing segment register value back and forth (from application to Pin and the other way around) is very costly performance wise (involve system calls). Also there may have been other limitations. Therefore it was decided to emulate application instructions which use segments registers. This is done by saving segment selector value and segment base address in the spill area (i.e REG_PIN_SEG_GS_VAL and REG_SEG_GS_BASE ) for each thread and performing all segment related instruction (of the application) using their values (by emulating instructions that set these registers and translate instructions that are accessing the memory using fs or gs prefix - we call this virtualizing segment). (This also help when passing effective address of memory operands to analysis routines) In Linux 32 bit the segment base address changes every time we write to a segment register (every time we load GS/FS, the hidden part is also loaded with the segment base address - it's kind of a cache for optimization, to save bus cycles) In order to support this beside emulating these in instructions we also tracked GDT/LDT tables (We store these tables inside Pin and update them every time needed).

+

Today we have PinCRT which doesn't use segment registers, therefore we don't have to virtualize application segment usage and just let application execute these instructions in their original form (without modifying them or without emulating them).

+

Linux In Linux we no longer virtualize application handling of segments: application instructions which uses segments or segments prefix now runs in their original form. In Linux 64 bits we now only track segment base address virtual register by emulating the system call which changes the segment base address (track application segment base address inside a virtual register in addition to updating the application one). In Linux 32 bits it's more complicated: It's hard to track the segment address without fully emulating all writes to segment registers + tracking the GDT/LDT which is a lot of work. Instead we're using GsBaseAddress()/FsBaseAddress() where needed including in PrecomputeSegBaseAddressIfNeeded() which is called from SetupArgumentEa() when needing to compute REG_SEG_FS_BASE/REG_SEG_GS_BASE value (holds the segment base address)

+

macOS In macOS, PIN still use (at least) the system loader which uses the GS segment register, therefore segment virtualization is still used.

+

Windows In Windows we compute segment base address at the beginning (assume it doens't change) and use its value when needed. REG_PIN_SEG_GS_VAL and REG_PIN_SEG_FS_VAL are unused in this platform 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.

+
REG_INST_G0D  +

Scratch register used in pintools.

+
REG_INST_G1D  +

Scratch register used in pintools.

+
REG_INST_G2D  +

Scratch register used in pintools.

+
REG_INST_G3D  +

Scratch register used in pintools.

+
REG_INST_G4D  +

Scratch register used in pintools.

+
REG_INST_G5D  +

Scratch register used in pintools.

+
REG_INST_G6D  +

Scratch register used in pintools.

+
REG_INST_G7D  +

Scratch register used in pintools.

+
REG_INST_G8D  +

Scratch register used in pintools.

+
REG_INST_G9D  +

Scratch register used in pintools.

+
REG_INST_G10D  +

Scratch register used in pintools.

+
REG_INST_G11D  +

Scratch register used in pintools.

+
REG_INST_G12D  +

Scratch register used in pintools.

+
REG_INST_G13D  +

Scratch register used in pintools.

+
REG_INST_G14D  +

Scratch register used in pintools.

+
REG_INST_G15D  +

Scratch register used in pintools.

+
REG_INST_G16D  +

Scratch register used in pintools.

+
REG_INST_G17D  +

Scratch register used in pintools.

+
REG_INST_G18D  +

Scratch register used in pintools.

+
REG_INST_G19D  +

Scratch register used in pintools.

+
REG_INST_G20D  +

Scratch register used in pintools.

+
REG_INST_G21D  +

Scratch register used in pintools.

+
REG_INST_G22D  +

Scratch register used in pintools.

+
REG_INST_G23D  +

Scratch register used in pintools.

+
REG_INST_G24D  +

Scratch register used in pintools.

+
REG_INST_G25D  +

Scratch register used in pintools.

+
REG_INST_G26D  +

Scratch register used in pintools.

+
REG_INST_G27D  +

Scratch register used in pintools.

+
REG_INST_G28D  +

Scratch register used in pintools.

+
REG_INST_G29D  +

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_gs_or_fs (REG reg)
+
+
+

Return TRUE if the register a GS or FS register

+ +
+
+ +
+
+ + + + + + + + +
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 segment base address virtual register (REG_SEG_GS_BASE/REG_SEG_FS_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

+ +
+
+ +
+
+ + + + + + + + +
std::string LEVEL_CORE::REGSET_StringList (const REGSET & regset)
+
+
+
Returns:
a string with the names of all registers is the specified regset
+ +
+
+ +
+
+ + + + + + + + +
std::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_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).

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__RTN__BASIC__API.html b/src/tracer/pintool/pin-3.13/doc/html/group__RTN__BASIC__API.html new file mode 100755 index 0000000..d07eb7d --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__RTN__BASIC__API.html @@ -0,0 +1,1541 @@ + + + + +Pin: RTN: Routine Object + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
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 std::string & LEVEL_PINCLIENT::RTN_Name (RTN x)
BOOL LEVEL_PINCLIENT::RTN_IsArtificial (RTN x)
SYM LEVEL_PINCLIENT::RTN_Sym (RTN x)
UINT LEVEL_PINCLIENT::RTN_DynamicMethodId (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)
std::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, std::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:
+ + + +
funInstrumentation function for routines
valPassed 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_RANGEbuffer 
)
+
+
+

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]rtnfunction that was replaced
[in]numnumber of elements, or zero.
[out]bufferbuffer 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,
std::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]addressThe start address of the new routine
[in]nameThe assigned name of the new routine
[in]isIFuncTrue 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
+
+ +
+
+ +
+
+ + + + + + + + +
UINT LEVEL_PINCLIENT::RTN_DynamicMethodId (RTN x)
+
+
+
Returns:
Method ID associated with the given routine (JIT Profiling)
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & MacOS
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + +
RTN LEVEL_PINCLIENT::RTN_FindByAddress (ADDRINT address)
+
+
+
Parameters:
+ + +
AddressMemory 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:
+ + + +
ImgImage in which to search for RTN
NameName 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
+
+ +
+
+ +
+
+ + + + + + + + +
std::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:
+ + +
AddressMemory 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:
+ + + + + +
rtnRoutine to instrument
actionUse 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
funptrAnalysis 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:
+ + + + + +
orgRtnthe application routine to instrument
actionuse IPOINT_BEFORE or IPOINT_AFTER to call funptr before or after execution.
funptrthe 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:
+ + + + + + +
orgRtnthe application routine to instrument
actionuse IPOINT_BEFORE or IPOINT_AFTER to call funptr before or after execution.
mode
funptrthe 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:
+ + +
rtnthe 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:
+ + + +
rtnthe application routine to be replaced.
modeinstrumentation 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:
+ + +
rtnthe 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:
+ + + +
rtnthe application routine to be replaced.
modeinstrumentation 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 std::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]replacedRtnThe application routine to be replaced.
[in]replacementFunThe 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:
+ + + +
replacedRtnthe application routine to be replaced.
replacementFunthe 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:
+ + + + +
replacedRtnthe application routine to be replaced.
modeinstrumentation mode, see PROBE_MODE
replacementFunthe 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]replacedRtnThe application routine to be replaced.
[in]replacementFunThe 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:
+ + + + +
orgRtnthe application routine to be replaced.
replacementFunptrthe 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_IsSafeForProbedReplacement() 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:
+ + + + + +
replacedRtnthe application routine to be replaced.
modeinstrumentation mode, see PROBE_MODE
replacementFunthe 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_IsSafeForProbedReplacementEx() 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
+
+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__SEC__BASIC__API.html b/src/tracer/pintool/pin-3.13/doc/html/group__SEC__BASIC__API.html new file mode 100755 index 0000000..72013e9 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__SEC__BASIC__API.html @@ -0,0 +1,556 @@ + + + + +Pin: SEC: Section Object + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
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, +
+  LEVEL_CORE::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, +
+  LEVEL_CORE::SEC_TYPE_PROC, +
+  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 std::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_DYNAMIC  +

contains dynamic code

+
SEC_TYPE_LSDA  +

old exception_info (obsolete)

+
SEC_TYPE_BSS  +

contains uninitialized data

+
SEC_TYPE_LOOS  +

OS specific.

+
SEC_TYPE_USER  +

Application specific.

+
SEC_TYPE_PROC  +

Processor 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 std::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
+
+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__SKIPPER.html b/src/tracer/pintool/pin-3.13/doc/html/group__SKIPPER.html new file mode 100755 index 0000000..27bbc32 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__SKIPPER.html @@ -0,0 +1,115 @@ + + + + +Pin: SKIPPER + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
SKIPPER
+
+
+ + + + + + + + +

+Classes

class  INSTLIB::SKIPPER

+Modules

 SKIP_INT3

+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]
+
+
+

Activate all the component controllers

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__SKIP__INT3.html b/src/tracer/pintool/pin-3.13/doc/html/group__SKIP__INT3.html new file mode 100755 index 0000000..19b49f8 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__SKIP__INT3.html @@ -0,0 +1,110 @@ + + + + +Pin: SKIP_INT3 + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
SKIP_INT3
+
+
+ + + + + +

+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]
+
+
+

Delete "int3" if the -skip_int3 knob is provided

+
Returns:
1 if enabled, otherwise 0
+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__STOPPED__THREAD__API.html b/src/tracer/pintool/pin-3.13/doc/html/group__STOPPED__THREAD__API.html new file mode 100755 index 0000000..f467be3 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__STOPPED__THREAD__API.html @@ -0,0 +1,80 @@ + + + + +Pin: Stop, examine and resume application threads API + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+
+
Stop, examine and resume application threads API
+
+
+ +
+

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.

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__SYM__BASIC__API.html b/src/tracer/pintool/pin-3.13/doc/html/group__SYM__BASIC__API.html new file mode 100755 index 0000000..790f37d --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__SYM__BASIC__API.html @@ -0,0 +1,435 @@ + + + + +Pin: SYM: Symbol Object + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
SYM: Symbol Object
+
+
+ + + + + + + + + + + + + + + + + + + + +

+Classes

class  LEVEL_PINCLIENT::SymbolAddressRange
struct  LEVEL_PINCLIENT::SymbolDebugInfo

+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 std::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)
std::string LEVEL_PINCLIENT::PIN_UndecorateSymbolName (const std::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

+ +
+ +
+

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

+ +
+
+ + + + + + + + + + + + + + + + + + +
std::string LEVEL_PINCLIENT::PIN_UndecorateSymbolName (const std::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
+

Undecoration of macOS* symbols is done similarly to Linux (Remove the leading '_' and undecorate like Linux)

+

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-std::iostream, or non-virtual thunk to std::strstream::~strstream(), which are not valid C++ names.

+
Parameters:
+ + + +
[in]symbolNameDecorated name
+
[in]styleUndecoration 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 & macOS*
+ 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 std::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
+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__TIME__WARPER.html b/src/tracer/pintool/pin-3.13/doc/html/group__TIME__WARPER.html new file mode 100755 index 0000000..df566b6 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__TIME__WARPER.html @@ -0,0 +1,86 @@ + + + + +Pin: TIME_WARPER + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
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.

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__TIME__WARPER__RDTSC.html b/src/tracer/pintool/pin-3.13/doc/html/group__TIME__WARPER__RDTSC.html new file mode 100755 index 0000000..b28f0e3 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__TIME__WARPER__RDTSC.html @@ -0,0 +1,110 @@ + + + + +Pin: TIME_WARPER_RDTSC + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
TIME_WARPER_RDTSC
+
+
+ + + + + +

+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]
+
+
+

Activate the controller if the -length knob is provided

+
Returns:
1 if controller can start an interval, otherwise 0
+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__TRACE__BASIC__API.html b/src/tracer/pintool/pin-3.13/doc/html/group__TRACE__BASIC__API.html new file mode 100755 index 0000000..8a86551 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__TRACE__BASIC__API.html @@ -0,0 +1,593 @@ + + + + +Pin: TRACE: Single entrance, multiple exit sequence of instructions + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
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]traceStartAddressThe start address of the trace in which SMC is detected
[in]traceEndAddressThe end address of the trace in which SMC is detected
[in]vThe 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:
+ + + +
funInstrumentation function for traces
valpassed 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 & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + +
ADDRINT LEVEL_PINCLIENT::TRACE_Address (TRACE trace)
+
+
+
Returns:
Application address of a trace
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & macOS*
+ 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:
+ + + +
funThe call back function that is to be called
valValue 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 & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + +
BBL LEVEL_PINCLIENT::TRACE_BblHead (TRACE trace)
+
+
+
Returns:
first bbl of trace
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + +
BBL LEVEL_PINCLIENT::TRACE_BblTail (TRACE trace)
+
+
+
Returns:
last bbl of trace
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + +
BOOL LEVEL_PINCLIENT::TRACE_HasFallThrough (TRACE trace)
+
+
+

Tells if the last instructon in the trace has a fall-through path.

+
Parameters:
+ + +
[in]traceThe trace.
+
+
+
Returns:
TRUE if the last instruction in the trace has a fall-through path. see INS_HasFallThrough for more details.
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_PINCLIENT::TRACE_InsertCall (TRACE trace,
IPOINT action,
AFUNPTR funptr,
 ... 
)
+
+
+

Insert one or more analysis calls in a trace.

+
Parameters:
+ + + + + +
[in]traceThe trace to instrument.
[in]actionSpecifies 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]funptrThe 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 & macOS*
+ 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]traceThe trace to instrument.
[in]actionSpecifies when the analysis call executes. See the documentation in TRACE_InsertCall().
[in]funptrThe 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 & macOS*
+ 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]traceThe trace to instrument.
[in]actionSpecifies when the analysis call executes. See the documentation in TRACE_InsertCall().
[in]funptrThe 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 & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + +
UINT32 LEVEL_PINCLIENT::TRACE_NumBbl (TRACE trace)
+
+
+
Returns:
Number of BBLs in trace
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + +
UINT32 LEVEL_PINCLIENT::TRACE_NumIns (TRACE trace)
+
+
+
Returns:
Number of instructions in trace
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + +
RTN LEVEL_PINCLIENT::TRACE_Rtn (TRACE trace)
+
+
+
Returns:
RTN that contains first instruction of trace
+
Availability:
Mode: JIT
+ O/S: Linux, Windows & macOS*
+ 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 & macOS*
+ CPU: All
+
+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__TRACE__VERSION__API.html b/src/tracer/pintool/pin-3.13/doc/html/group__TRACE__VERSION__API.html new file mode 100755 index 0000000..fafc977 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__TRACE__VERSION__API.html @@ -0,0 +1,215 @@ + + + + +Pin: Trace version APIs + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+ +
+
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]bblBBL to mark for versioning
[in]versionmake 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]insInsert case test before this instruction
[in]regVirtual register used to select case.
[in]case_valueGo to new version if reg contains case_value
[in]versionNew 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
+
+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__TYPE__BASE.html b/src/tracer/pintool/pin-3.13/doc/html/group__TYPE__BASE.html new file mode 100755 index 0000000..af05ec9 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__TYPE__BASE.html @@ -0,0 +1,79 @@ + + + + +Pin: Basic types + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+
+
Basic types
+
+
+ +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/group__UTILS.html b/src/tracer/pintool/pin-3.13/doc/html/group__UTILS.html new file mode 100755 index 0000000..ff8ebd9 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/group__UTILS.html @@ -0,0 +1,79 @@ + + + + +Pin: Architecture-specific utilities + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+
+
Architecture-specific utilities
+
+
+ +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/hierarchy.html b/src/tracer/pintool/pin-3.13/doc/html/hierarchy.html new file mode 100755 index 0000000..19f828b --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/hierarchy.html @@ -0,0 +1,224 @@ + + + + +Pin: Class Hierarchy + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+
+
Class Hierarchy
+
+
+
This inheritance list is sorted roughly, but not completely, alphabetically:
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/index.html b/src/tracer/pintool/pin-3.13/doc/html/index.html new file mode 100755 index 0000000..edf8225 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/index.html @@ -0,0 +1,4162 @@ + + + + +Pin: Pin 3.11 User Guide + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+
+
Pin 3.11 User Guide
+
+
+

========================================================================================

+

+Introduction

+

========================================================================================

+

Pin is a tool for the instrumentation of programs. It supports the Linux*, macOS* 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:

+
    +
  • RTN_IsDynamic() API is used to indentify dynamically created code. A routine can be marked as dynamically created using Jit Profiling API only.
  • +
  • A Pintool can instrument Jitted routines using RTN_AddInstrumentFunction API See the examples Managed platforms support for more information.
  • +
+

Following conditions must be satisfied to get the managed platforms support:

+
    +
  • +

    Set LD_LIBRARY_PATH environment variables to include pinjitprofiling dynamic library and Pin CRT libraries location.

    +

    +
  • +
  • +

    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"
+using std::cerr;
+using std::ofstream;
+using std::ios;
+using std::string;
+using std::endl;
+
+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 std::ofstream;
+using std::string;
+using std::endl;
+
+
+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"
+using std::cerr;
+using std::ofstream;
+using std::ios;
+using std::string;
+using std::endl;
+
+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"
+using std::ofstream;
+using std::string;
+using std::hex;
+using std::setw;
+using std::cerr;
+using std::dec;
+using std::endl;
+
+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>
+using std::cerr;
+using std::endl;
+
+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 std::ofstream;
+using std::string;
+using std::ios;
+using std::hex;
+using std::cerr;
+using std::dec;
+using std::endl;
+
+
+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>
+using std::hex;
+using std::cerr;
+using std::string;
+using std::ios;
+using std::endl;
+
+/* ===================================================================== */
+/* 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>
+using std::cerr;
+using std::endl;
+using std::hex;
+using std::dec;
+using std::string;
+using std::ios;
+/* ===================================================================== */
+/* 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"
+using std::string;
+
+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"
+using std::ostream;
+using std::cout;
+using std::cerr;
+using std::string;
+using std::endl;
+
+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 std::hex;
+using std::ofstream;
+using std::cerr;
+using std::string;
+using std::endl;
+
+
+/*
+ * 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"
+using std::cerr;
+using std::endl;
+
+
+// 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>
+using std::cerr;
+using std::endl;
+
+// 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 std::cout;
+using std::hex;
+using std::cerr;
+using std::flush;
+using std::dec;
+using std::endl;
+
+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 std::cerr;
+using std::endl;
+
+
+
+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\tools\JitProfilingApiTests\DynamicInsCount.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\tools\JitProfilingApiTests\DynamicFuncInstrument.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:

+
    +
  • INS_AddInstrumentFunction (INSCALLBACK fun, VOID *val)
  • +
  • TRACE_AddInstrumentFunction (TRACECALLBACK fun, VOID *val)
  • +
  • RTN_AddInstrumentFunction (RTNCALLBACK fun, VOID *val)
  • +
  • IMG_AddInstrumentFunction (IMGCALLBACK fun, VOID *val)
  • +
  • PIN_AddFiniFunction (FINICALLBACK fun, VOID *val)
  • +
  • PIN_AddDetachFunction (DETACHCALLBACK fun, VOID *val)
  • +
+

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, LLDB 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 Linux (using GDB), macOS (using LLDB) and Windows (using Visual Studio). The Pin APIs are the same in all cases, but their usage from within the debugger may differ because each debugger has a different UI. The following tutorial is divided into two sections: one that is Linux and macOS 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 and macOS

+

Pin's debugging extensions on Linux work with nearly all modern versions of GDB/LLDB, so you can probably use whatever version of GDB/LLDB is already installed on your system. Pin uses GDB's remote debugger features, so it should work with any version of GDB/LLDB that supports that feature (Yes, LLDB support GDB's remote debugger features).

+

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 debugger.

+

Linux:

+
+$ ../../../pin -appdebug -t obj-intel64/stack-debugger.so -- obj-intel64/fibonacci.exe 1000
+Application stopped until continued from debugger.
+Start GDB, then issue this command at the prompt:
+  target remote :33030
+

macOS:

+
+$ ../../../pin -appdebug -t obj-intel64/stack-debugger.dylib -- obj-intel64/fibonacci.exe 1000
+Application stopped until continued from debugger.
+Start LLDB, then issue this command at the (lldb) prompt:
+  gdb-remote 33030
+

In another window, start the debugger and enter the command that Pin printed:

+

Linux:

+
+$ gdb fibonacci
+(gdb) target remote :33030
+

macOS:

+
+$ lldb fibonacci
+(lldb) gdb-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.

+

Linux:

+
+(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
+

macOS:

+
+Breakpoint 1: where = fibonacci.exe`main + 34 at fibonacci.cpp:12, address = 0x0000000100000db2
+(lldb) c
+Process 267 resuming
+Process 267 stopped
+* thread #1: tid = 0x010b, 0x0000000100000db2 fibonacci.exe`main(argc=2, argv=0x00007fff5fbff880) + 34 at fibonacci.cpp:12, stop reason = breakpoint 1.1
+    frame #0: 0x0000000100000db2 fibonacci.exe`main(argc=2, argv=0x00007fff5fbff880) + 34 at fibonacci.cpp:12
+   9
+   10   int main(int argc, char **argv)
+   11   {
+-> 12       if (argc > 2)
+   13       {
+   14           std::cerr << "Usage: fibonacci [num]" << std::endl;
+   15           return 1;
+(lldb) print argc
+(int) $0 = 2
+(lldb) x/4i $rip
+->  0x100000db2: 83 bd 10 fe ff ff 02  cmpl   $0x2, -0x1f0(%rbp)
+    0x100000db9: 0f 8e 4b 00 00 00     jle    0x100000e0a               ; <+122> at fibonacci.cpp:18
+    0x100000dbf: 48 8b 3d 4a 42 00 00  movq   0x424a(%rip), %rdi        ; (void *)0x00007fff74b59398: std::__1::cerr
+    0x100000dc6: 48 8d 35 fb 3f 00 00  leaq   0x3ffb(%rip), %rsi        ; "Usage: fibonacci [num]"
+

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 the debugger, 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 the debugger itself. 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 the debugger by using the "monitor" command:

+

Linux:

+
+(gdb) monitor stats
+Current stack usage: 688 bytes.
+Maximum stack usage: 0 bytes.
+

macOS: (note the 'command script import' command)

+
+(lldb) command script import ../../../extras/lldb/monitor.py
+The "monitor" command has been set.
+(lldb) monitor stats
+Current stack usage: 1040 bytes.
+Maximum stack usage: 0 bytes.
+
Note:
In macOS, as mentioned above, in order to use a 'monitor' GDB alike command you need to execute 'command script import ../../../extras/lldb/monitor.py' from inside the LLDB console.
+ LLDB already support this GDB remote protocol using 'process plugin packet monitor', however the responses from such commands are returned as bytes code (instead of textual).
+ This monitor python module implements a user-defined 'monitor' lldb command that send the Pintool command to PinADX and print back the response in human readable output.
+ monitor.py is delivered as part of the Pinkit in the specified path.
+

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 debugger 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_IsValidForIpointAfter(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 the debugger 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:

+

Linux:

+
+(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)
+

macOS:

+
+(lldb) monitor stackbreak 4000
+Will break when thread uses more than 4000 bytes of stack.
+
+(lldb) c
+Process 267 resuming
+Process 267 stopped
+* thread #1: tid = 0x010b, 0x00007fff6551d6b4 dyld`ImageLoaderMachOCompressed::resolveTwolevel(ImageLoader::LinkContext const&,
+  ImageLoader const*, bool, char const*, bool, ImageLoader const**) + 20, stop reason = signal SIGTRAP
+    frame #0: 0x00007fff6551d6b4 dyld`ImageLoaderMachOCompressed::resolveTwolevel(ImageLoader::LinkContext const&,
+    ImageLoader const*, bool, char const*, bool, ImageLoader const**) + 20
+dyld`ImageLoaderMachOCompressed::resolveTwolevel:
+->  0x7fff6551d6b4 <+20>: movl   %r9d, -0x140(%rbp)
+    0x7fff6551d6bb <+27>: movq   %r8, %r13
+    0x7fff6551d6be <+30>: movl   %ecx, -0x144(%rbp)
+    0x7fff6551d6c4 <+36>: movq   %rdx, %r15
+

When you are done, you can either continue the application and let it terminate, or you can quit from the debugger:

+

Linux:

+
+(gdb) quit
+The program is running.  Exit anyway? (y or n) y
+

macOS:

+
+(lldb) q
+Quitting LLDB will kill one or more processes. Do you really want to proceed: [Y/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.

+

Linux:

+
+$ ../../../pin -appdebug_enable -appdebug_silent -t obj-intel64/stack-debugger.so -stackbreak 4000 -- obj-intel64/fibonacci 1000
+

macOS:

+
+$ ../../../pin -appdebug_enable -appdebug_silent -t obj-intel64/stack-debugger.dylib -stackbreak 4000 -- obj-intel64/fibonacci.exe 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 the debugger. 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:

+

Linux:

+
+Triggered stack-limit breakpoint.
+Start GDB and enter this command:
+  target remote :45462
+

macOS:

+
+Triggered stack-limit breakpoint.
+Start LLDB and enter this command:
+  gdb-remote 45462
+

You can now connect with the debugger as you did before, except now the debugger stops the application at the point where the stack-debugger tool triggered the stack-limit breakpoint.

+

Linux:

+
+gdb fibonacci
+(gdb) target remote :45462
+0x0000000000400e27 in Fibonacci (num=0) at fibonacci.cpp:37
+(gdb)
+

macOS:

+
+(lldb) gdb-remote 45462
+Process 267 stopped
+* thread #1: tid = 0x010b, 0x00007fff635ebfa0 dyld`dyld::_main(macho_header const*, unsigned long, int, char const**,
+  char const**, char const**, unsigned long*) + 20, stop reason = signal SIGTRAP
+    frame #0: 0x00007fff635ebfa0 dyld`dyld::_main(macho_header const*, unsigned long, int, char const**, char const**,
+    char const**, unsigned long*) + 20
+dyld`dyld::_main:
+->  0x7fff635ebfa0 <+20>: movq   %r9, %r14
+    0x7fff635ebfa3 <+23>: movq   %r8, %r15
+    0x7fff635ebfa6 <+26>: movq   %rcx, %r13
+    0x7fff635ebfa9 <+29>: movl   %edx, %ebx
+(lldb)
+

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 the debugger to Pin. This is, for example, the "45462" number that the user types in the "target remote" command. After asking the user to start the debugger, the tool then calls PIN_WaitForDebuggerToConnect() to wait for the debugger to connect. If the user doesn't start the debugger 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:

+

Linux:

+
+(gdb) quit
+The program is running.  Exit anyway? (y or n) y
+

macOS:

+
+(lldb) q
+Quitting LLDB will kill one or more processes. Do you really want to proceed: [Y/n] y
+
Warning:
In macOS, for the debugger extensions to work properly, they currently require the target application symbols. Make sure to call PIN_InitSymbols in your Pintool.
+ This also means that you need some Pintool in order to use PinADX even if the tool does nothing beside calling PIN_InitSymbols.
+

+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\tools\ManualExamples\fibonacci.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_IsValidForIpointAfter(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.

+

========================================================================================

+

+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
+

Pin ignores a ptrace command with PT_DENY_ATTACH request coming from the application on macOS* systems (flag exists only on these systems). This means that if Pin launched an application and this application used PTRACE with PT_DENY_ATTACH flag, then:

+
    +
  • Pin will be able to do detach/re-attach
  • +
  • A debugger will be able to attach to the application process and debug Pin/tool
  • +
  • Pin ADX will be able to attach to the application process and debug it while running under Pin Note: Pin is currently unable to attach to an application which already executed ptrace with PT_DENY_ATTACH request.
  • +
+

========================================================================================

+

+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_IsDirectControlFlow(ins))
+    {
+        COUNTER *pedg = Lookup( INS_Address(ins),  INS_DirectControlFlowTargetAddress(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"
+using std::cerr;
+using std::ofstream;
+using std::ios;
+using std::string;
+using std::endl;
+
+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 / macOS*:

+
+$ tar zxf pin-3.2-81205-gcc-linux.tar.gz
+$ cd pin-3.2-81205-gcc-linux
+

Use the macOS* 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.

+

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 2004-2019 Intel Corporation.

+

Intel Corporation, 2200 Mission College Blvd., Santa Clara, CA 95052-8119, USA.

+

========================================================================================

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/installdox b/src/tracer/pintool/pin-3.13/doc/html/installdox new file mode 100755 index 0000000..edf5bbf --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/installdox @@ -0,0 +1,112 @@ +#!/usr/bin/perl + +%subst = ( ); +$quiet = 0; + +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 occurrence 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 =~ /\.svg/) && (push @files, $file); + ($file =~ "navtree.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\>\<]*)\" (xlink:href|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/src/tracer/pintool/pin-3.13/doc/html/jquery.js b/src/tracer/pintool/pin-3.13/doc/html/jquery.js new file mode 100755 index 0000000..c052173 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/jquery.js @@ -0,0 +1,54 @@ +/* + * jQuery JavaScript Library v1.3.2 + * http://jquery.com/ + * + * Copyright (c) 2009 John Resig + * Dual licensed under the MIT and GPL licenses. + * http://docs.jquery.com/License + * + * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009) + * Revision: 6246 + */ +(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("",""]||!O.indexOf("",""]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
"]||!O.indexOf("",""]||(!O.indexOf("",""]||!O.indexOf("",""]||!o.support.htmlSerialize&&[1,"div
","
"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}}); +/* + * Sizzle CSS Selector Engine - v0.9.3 + * Copyright 2009, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return UT[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="

";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="
";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0) +{I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("
").append(M.responseText.replace(//g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function() +{G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='
';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})(); +/* + * jQuery UI 1.7.2 + * + * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI + */ +jQuery.ui||(function(c){var i=c.fn.remove,d=c.browser.mozilla&&(parseFloat(c.browser.version)<1.9);c.ui={version:"1.7.2",plugin:{add:function(k,l,n){var m=c.ui[k].prototype;for(var j in n){m.plugins[j]=m.plugins[j]||[];m.plugins[j].push([l,n[j]])}},call:function(j,l,k){var n=j.plugins[l];if(!n||!j.element[0].parentNode){return}for(var m=0;m0){return true}m[j]=1;l=(m[j]>0);m[j]=0;return l},isOverAxis:function(k,j,l){return(k>j)&&(k<(j+l))},isOver:function(o,k,n,m,j,l){return c.ui.isOverAxis(o,n,j)&&c.ui.isOverAxis(k,m,l)},keyCode:{BACKSPACE:8,CAPS_LOCK:20,COMMA:188,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38}};if(d){var f=c.attr,e=c.fn.removeAttr,h="http://www.w3.org/2005/07/aaa",a=/^aria-/,b=/^wairole:/;c.attr=function(k,j,l){var m=l!==undefined;return(j=="role"?(m?f.call(this,k,j,"wairole:"+l):(f.apply(this,arguments)||"").replace(b,"")):(a.test(j)?(m?k.setAttributeNS(h,j.replace(a,"aaa:"),l):f.call(this,k,j.replace(a,"aaa:"))):f.apply(this,arguments)))};c.fn.removeAttr=function(j){return(a.test(j)?this.each(function(){this.removeAttributeNS(h,j.replace(a,""))}):e.call(this,j))}}c.fn.extend({remove:function(){c("*",this).add(this).each(function(){c(this).triggerHandler("remove")});return i.apply(this,arguments)},enableSelection:function(){return this.attr("unselectable","off").css("MozUserSelect","").unbind("selectstart.ui")},disableSelection:function(){return this.attr("unselectable","on").css("MozUserSelect","none").bind("selectstart.ui",function(){return false})},scrollParent:function(){var j;if((c.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){j=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(c.curCSS(this,"position",1))&&(/(auto|scroll)/).test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0)}else{j=this.parents().filter(function(){return(/(auto|scroll)/).test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!j.length?c(document):j}});c.extend(c.expr[":"],{data:function(l,k,j){return !!c.data(l,j[3])},focusable:function(k){var l=k.nodeName.toLowerCase(),j=c.attr(k,"tabindex");return(/input|select|textarea|button|object/.test(l)?!k.disabled:"a"==l||"area"==l?k.href||!isNaN(j):!isNaN(j))&&!c(k)["area"==l?"parents":"closest"](":hidden").length},tabbable:function(k){var j=c.attr(k,"tabindex");return(isNaN(j)||j>=0)&&c(k).is(":focusable")}});function g(m,n,o,l){function k(q){var p=c[m][n][q]||[];return(typeof p=="string"?p.split(/,?\s+/):p)}var j=k("getter");if(l.length==1&&typeof l[0]=="string"){j=j.concat(k("getterSetter"))}return(c.inArray(o,j)!=-1)}c.widget=function(k,j){var l=k.split(".")[0];k=k.split(".")[1];c.fn[k]=function(p){var n=(typeof p=="string"),o=Array.prototype.slice.call(arguments,1);if(n&&p.substring(0,1)=="_"){return this}if(n&&g(l,k,p,o)){var m=c.data(this[0],k);return(m?m[p].apply(m,o):undefined)}return this.each(function(){var q=c.data(this,k);(!q&&!n&&c.data(this,k,new c[l][k](this,p))._init());(q&&n&&c.isFunction(q[p])&&q[p].apply(q,o))})};c[l]=c[l]||{};c[l][k]=function(o,n){var m=this;this.namespace=l;this.widgetName=k;this.widgetEventPrefix=c[l][k].eventPrefix||k;this.widgetBaseClass=l+"-"+k;this.options=c.extend({},c.widget.defaults,c[l][k].defaults,c.metadata&&c.metadata.get(o)[k],n);this.element=c(o).bind("setData."+k,function(q,p,r){if(q.target==o){return m._setData(p,r)}}).bind("getData."+k,function(q,p){if(q.target==o){return m._getData(p)}}).bind("remove",function(){return m.destroy()})};c[l][k].prototype=c.extend({},c.widget.prototype,j);c[l][k].getterSetter="option"};c.widget.prototype={_init:function(){},destroy:function(){this.element.removeData(this.widgetName).removeClass(this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").removeAttr("aria-disabled")},option:function(l,m){var k=l,j=this;if(typeof l=="string"){if(m===undefined){return this._getData(l)}k={};k[l]=m}c.each(k,function(n,o){j._setData(n,o)})},_getData:function(j){return this.options[j]},_setData:function(j,k){this.options[j]=k;if(j=="disabled"){this.element[k?"addClass":"removeClass"](this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").attr("aria-disabled",k)}},enable:function(){this._setData("disabled",false)},disable:function(){this._setData("disabled",true)},_trigger:function(l,m,n){var p=this.options[l],j=(l==this.widgetEventPrefix?l:this.widgetEventPrefix+l);m=c.Event(m);m.type=j;if(m.originalEvent){for(var k=c.event.props.length,o;k;){o=c.event.props[--k];m[o]=m.originalEvent[o]}}this.element.trigger(m,n);return !(c.isFunction(p)&&p.call(this.element[0],m,n)===false||m.isDefaultPrevented())}};c.widget.defaults={disabled:false};c.ui.mouse={_mouseInit:function(){var j=this;this.element.bind("mousedown."+this.widgetName,function(k){return j._mouseDown(k)}).bind("click."+this.widgetName,function(k){if(j._preventClickEvent){j._preventClickEvent=false;k.stopImmediatePropagation();return false}});if(c.browser.msie){this._mouseUnselectable=this.element.attr("unselectable");this.element.attr("unselectable","on")}this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName);(c.browser.msie&&this.element.attr("unselectable",this._mouseUnselectable))},_mouseDown:function(l){l.originalEvent=l.originalEvent||{};if(l.originalEvent.mouseHandled){return}(this._mouseStarted&&this._mouseUp(l));this._mouseDownEvent=l;var k=this,m=(l.which==1),j=(typeof this.options.cancel=="string"?c(l.target).parents().add(l.target).filter(this.options.cancel).length:false);if(!m||j||!this._mouseCapture(l)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){k.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(l)&&this._mouseDelayMet(l)){this._mouseStarted=(this._mouseStart(l)!==false);if(!this._mouseStarted){l.preventDefault();return true}}this._mouseMoveDelegate=function(n){return k._mouseMove(n)};this._mouseUpDelegate=function(n){return k._mouseUp(n)};c(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);(c.browser.safari||l.preventDefault());l.originalEvent.mouseHandled=true;return true},_mouseMove:function(j){if(c.browser.msie&&!j.button){return this._mouseUp(j)}if(this._mouseStarted){this._mouseDrag(j);return j.preventDefault()}if(this._mouseDistanceMet(j)&&this._mouseDelayMet(j)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,j)!==false);(this._mouseStarted?this._mouseDrag(j):this._mouseUp(j))}return !this._mouseStarted},_mouseUp:function(j){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=(j.target==this._mouseDownEvent.target);this._mouseStop(j)}return false},_mouseDistanceMet:function(j){return(Math.max(Math.abs(this._mouseDownEvent.pageX-j.pageX),Math.abs(this._mouseDownEvent.pageY-j.pageY))>=this.options.distance)},_mouseDelayMet:function(j){return this.mouseDelayMet},_mouseStart:function(j){},_mouseDrag:function(j){},_mouseStop:function(j){},_mouseCapture:function(j){return true}};c.ui.mouse.defaults={cancel:null,distance:1,delay:0}})(jQuery);;/* * jQuery UI Resizable 1.7.2 + * + * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Resizables + * + * Depends: + * ui.core.js + */ +(function(c){c.widget("ui.resizable",c.extend({},c.ui.mouse,{_init:function(){var e=this,j=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(j.aspectRatio),aspectRatio:j.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:j.helper||j.ghost||j.animate?j.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){if(/relative/.test(this.element.css("position"))&&c.browser.opera){this.element.css({position:"relative",top:"auto",left:"auto"})}this.element.wrap(c('
').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=j.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var k=this.handles.split(",");this.handles={};for(var f=0;f
');if(/sw|se|ne|nw/.test(h)){g.css({zIndex:++j.zIndex})}if("se"==h){g.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[h]=".ui-resizable-"+h;this.element.append(g)}}this._renderAxis=function(p){p=p||this.element;for(var m in this.handles){if(this.handles[m].constructor==String){this.handles[m]=c(this.handles[m],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var n=c(this.handles[m],this.element),o=0;o=/sw|ne|nw|se|n|s/.test(m)?n.outerHeight():n.outerWidth();var l=["padding",/ne|nw|n/.test(m)?"Top":/se|sw|s/.test(m)?"Bottom":/^e$/.test(m)?"Right":"Left"].join("");p.css(l,o);this._proportionallyResize()}if(!c(this.handles[m]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!e.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}e.axis=i&&i[1]?i[1]:"se"}});if(j.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){c(this).removeClass("ui-resizable-autohide");e._handles.show()},function(){if(!e.resizing){c(this).addClass("ui-resizable-autohide");e._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var d=function(f){c(f).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){d(this.element);var e=this.element;e.parent().append(this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")})).end().remove()}this.originalElement.css("resize",this.originalResizeStyle);d(this.originalElement)},_mouseCapture:function(e){var f=false;for(var d in this.handles){if(c(this.handles[d])[0]==e.target){f=true}}return this.options.disabled||!!f},_mouseStart:function(f){var i=this.options,e=this.element.position(),d=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(d.is(".ui-draggable")||(/absolute/).test(d.css("position"))){d.css({position:"absolute",top:e.top,left:e.left})}if(c.browser.opera&&(/relative/).test(d.css("position"))){d.css({position:"relative",top:"auto",left:"auto"})}this._renderProxy();var j=b(this.helper.css("left")),g=b(this.helper.css("top"));if(i.containment){j+=c(i.containment).scrollLeft()||0;g+=c(i.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:j,top:g};this.size=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalSize=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalPosition={left:j,top:g};this.sizeDiff={width:d.outerWidth()-d.width(),height:d.outerHeight()-d.height()};this.originalMousePosition={left:f.pageX,top:f.pageY};this.aspectRatio=(typeof i.aspectRatio=="number")?i.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var h=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",h=="auto"?this.axis+"-resize":h);d.addClass("ui-resizable-resizing");this._propagate("start",f);return true},_mouseDrag:function(d){var g=this.helper,f=this.options,l={},p=this,i=this.originalMousePosition,m=this.axis;var q=(d.pageX-i.left)||0,n=(d.pageY-i.top)||0;var h=this._change[m];if(!h){return false}var k=h.apply(this,[d,q,n]),j=c.browser.msie&&c.browser.version<7,e=this.sizeDiff;if(this._aspectRatio||d.shiftKey){k=this._updateRatio(k,d)}k=this._respectSize(k,d);this._propagate("resize",d);g.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(k);this._trigger("resize",d,this.ui());return false},_mouseStop:function(g){this.resizing=false;var h=this.options,l=this;if(this._helper){var f=this._proportionallyResizeElements,d=f.length&&(/textarea/i).test(f[0].nodeName),e=d&&c.ui.hasScroll(f[0],"left")?0:l.sizeDiff.height,j=d?0:l.sizeDiff.width;var m={width:(l.size.width-j),height:(l.size.height-e)},i=(parseInt(l.element.css("left"),10)+(l.position.left-l.originalPosition.left))||null,k=(parseInt(l.element.css("top"),10)+(l.position.top-l.originalPosition.top))||null;if(!h.animate){this.element.css(c.extend(m,{top:k,left:i}))}l.helper.height(l.size.height);l.helper.width(l.size.width);if(this._helper&&!h.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",g);if(this._helper){this.helper.remove()}return false},_updateCache:function(d){var e=this.options;this.offset=this.helper.offset();if(a(d.left)){this.position.left=d.left}if(a(d.top)){this.position.top=d.top}if(a(d.height)){this.size.height=d.height}if(a(d.width)){this.size.width=d.width}},_updateRatio:function(g,f){var h=this.options,i=this.position,e=this.size,d=this.axis;if(g.height){g.width=(e.height*this.aspectRatio)}else{if(g.width){g.height=(e.width/this.aspectRatio)}}if(d=="sw"){g.left=i.left+(e.width-g.width);g.top=null}if(d=="nw"){g.top=i.top+(e.height-g.height);g.left=i.left+(e.width-g.width)}return g},_respectSize:function(k,f){var i=this.helper,h=this.options,q=this._aspectRatio||f.shiftKey,p=this.axis,s=a(k.width)&&h.maxWidth&&(h.maxWidthk.width),r=a(k.height)&&h.minHeight&&(h.minHeight>k.height);if(g){k.width=h.minWidth}if(r){k.height=h.minHeight}if(s){k.width=h.maxWidth}if(l){k.height=h.maxHeight}var e=this.originalPosition.left+this.originalSize.width,n=this.position.top+this.size.height;var j=/sw|nw|w/.test(p),d=/nw|ne|n/.test(p);if(g&&j){k.left=e-h.minWidth}if(s&&j){k.left=e-h.maxWidth}if(r&&d){k.top=n-h.minHeight}if(l&&d){k.top=n-h.maxHeight}var m=!k.width&&!k.height;if(m&&!k.left&&k.top){k.top=null}else{if(m&&!k.top&&k.left){k.left=null}}return k},_proportionallyResize:function(){var j=this.options;if(!this._proportionallyResizeElements.length){return}var f=this.helper||this.element;for(var e=0;e');var d=c.browser.msie&&c.browser.version<7,f=(d?1:0),g=(d?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+g,height:this.element.outerHeight()+g,position:"absolute",left:this.elementOffset.left-f+"px",top:this.elementOffset.top-f+"px",zIndex:++h.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(f,e,d){return{width:this.originalSize.width+e}},w:function(g,e,d){var i=this.options,f=this.originalSize,h=this.originalPosition;return{left:h.left+e,width:f.width-e}},n:function(g,e,d){var i=this.options,f=this.originalSize,h=this.originalPosition;return{top:h.top+d,height:f.height-d}},s:function(f,e,d){return{height:this.originalSize.height+d}},se:function(f,e,d){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[f,e,d]))},sw:function(f,e,d){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[f,e,d]))},ne:function(f,e,d){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[f,e,d]))},nw:function(f,e,d){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[f,e,d]))}},_propagate:function(e,d){c.ui.plugin.call(this,e,[d,this.ui()]);(e!="resize"&&this._trigger(e,d,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}));c.extend(c.ui.resizable,{version:"1.7.2",eventPrefix:"resize",defaults:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,cancel:":input,option",containment:false,delay:0,distance:1,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000}});c.ui.plugin.add("resizable","alsoResize",{start:function(e,f){var d=c(this).data("resizable"),g=d.options;_store=function(h){c(h).each(function(){c(this).data("resizable-alsoresize",{width:parseInt(c(this).width(),10),height:parseInt(c(this).height(),10),left:parseInt(c(this).css("left"),10),top:parseInt(c(this).css("top"),10)})})};if(typeof(g.alsoResize)=="object"&&!g.alsoResize.parentNode){if(g.alsoResize.length){g.alsoResize=g.alsoResize[0];_store(g.alsoResize)}else{c.each(g.alsoResize,function(h,i){_store(h)})}}else{_store(g.alsoResize)}},resize:function(f,h){var e=c(this).data("resizable"),i=e.options,g=e.originalSize,k=e.originalPosition;var j={height:(e.size.height-g.height)||0,width:(e.size.width-g.width)||0,top:(e.position.top-k.top)||0,left:(e.position.left-k.left)||0},d=function(l,m){c(l).each(function(){var p=c(this),q=c(this).data("resizable-alsoresize"),o={},n=m&&m.length?m:["width","height","top","left"];c.each(n||["width","height","top","left"],function(r,t){var s=(q[t]||0)+(j[t]||0);if(s&&s>=0){o[t]=s||null}});if(/relative/.test(p.css("position"))&&c.browser.opera){e._revertToRelativePosition=true;p.css({position:"absolute",top:"auto",left:"auto"})}p.css(o)})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.nodeType){c.each(i.alsoResize,function(l,m){d(l,m)})}else{d(i.alsoResize)}},stop:function(e,f){var d=c(this).data("resizable");if(d._revertToRelativePosition&&c.browser.opera){d._revertToRelativePosition=false;el.css({position:"relative"})}c(this).removeData("resizable-alsoresize-start")}});c.ui.plugin.add("resizable","animate",{stop:function(h,m){var n=c(this).data("resizable"),i=n.options;var g=n._proportionallyResizeElements,d=g.length&&(/textarea/i).test(g[0].nodeName),e=d&&c.ui.hasScroll(g[0],"left")?0:n.sizeDiff.height,k=d?0:n.sizeDiff.width;var f={width:(n.size.width-k),height:(n.size.height-e)},j=(parseInt(n.element.css("left"),10)+(n.position.left-n.originalPosition.left))||null,l=(parseInt(n.element.css("top"),10)+(n.position.top-n.originalPosition.top))||null;n.element.animate(c.extend(f,l&&j?{top:l,left:j}:{}),{duration:i.animateDuration,easing:i.animateEasing,step:function(){var o={width:parseInt(n.element.css("width"),10),height:parseInt(n.element.css("height"),10),top:parseInt(n.element.css("top"),10),left:parseInt(n.element.css("left"),10)};if(g&&g.length){c(g[0]).css({width:o.width,height:o.height})}n._updateCache(o);n._propagate("resize",h)}})}});c.ui.plugin.add("resizable","containment",{start:function(e,q){var s=c(this).data("resizable"),i=s.options,k=s.element;var f=i.containment,j=(f instanceof c)?f.get(0):(/parent/.test(f))?k.parent().get(0):f;if(!j){return}s.containerElement=c(j);if(/document/.test(f)||f==document){s.containerOffset={left:0,top:0};s.containerPosition={left:0,top:0};s.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var m=c(j),h=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){h[p]=b(m.css("padding"+o))});s.containerOffset=m.offset();s.containerPosition=m.position();s.containerSize={height:(m.innerHeight()-h[3]),width:(m.innerWidth()-h[1])};var n=s.containerOffset,d=s.containerSize.height,l=s.containerSize.width,g=(c.ui.hasScroll(j,"left")?j.scrollWidth:l),r=(c.ui.hasScroll(j)?j.scrollHeight:d);s.parentData={element:j,left:n.left,top:n.top,width:g,height:r}}},resize:function(f,p){var s=c(this).data("resizable"),h=s.options,e=s.containerSize,n=s.containerOffset,l=s.size,m=s.position,q=s._aspectRatio||f.shiftKey,d={top:0,left:0},g=s.containerElement;if(g[0]!=document&&(/static/).test(g.css("position"))){d=n}if(m.left<(s._helper?n.left:0)){s.size.width=s.size.width+(s._helper?(s.position.left-n.left):(s.position.left-d.left));if(q){s.size.height=s.size.width/h.aspectRatio}s.position.left=h.helper?n.left:0}if(m.top<(s._helper?n.top:0)) +{s.size.height=s.size.height+(s._helper?(s.position.top-n.top):s.position.top);if(q){s.size.width=s.size.height*h.aspectRatio}s.position.top=s._helper?n.top:0}s.offset.left=s.parentData.left+s.position.left;s.offset.top=s.parentData.top+s.position.top;var k=Math.abs((s._helper?s.offset.left-d.left:(s.offset.left-d.left))+s.sizeDiff.width),r=Math.abs((s._helper?s.offset.top-d.top:(s.offset.top-n.top))+s.sizeDiff.height);var j=s.containerElement.get(0)==s.element.parent().get(0),i=/relative|absolute/.test(s.containerElement.css("position"));if(j&&i){k-=s.parentData.left}if(k+s.size.width>=s.parentData.width){s.size.width=s.parentData.width-k;if(q){s.size.height=s.size.width/s.aspectRatio}}if(r+s.size.height>=s.parentData.height){s.size.height=s.parentData.height-r;if(q){s.size.width=s.size.height*s.aspectRatio}}},stop:function(e,m){var p=c(this).data("resizable"),f=p.options,k=p.position,l=p.containerOffset,d=p.containerPosition,g=p.containerElement;var i=c(p.helper),q=i.offset(),n=i.outerWidth()-p.sizeDiff.width,j=i.outerHeight()-p.sizeDiff.height;if(p._helper&&!f.animate&&(/relative/).test(g.css("position"))){c(this).css({left:q.left-d.left-l.left,width:n,height:j})}if(p._helper&&!f.animate&&(/static/).test(g.css("position"))){c(this).css({left:q.left-d.left-l.left,width:n,height:j})}}});c.ui.plugin.add("resizable","ghost",{start:function(f,g){var d=c(this).data("resizable"),h=d.options,e=d.size;d.ghost=d.originalElement.clone();d.ghost.css({opacity:0.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof h.ghost=="string"?h.ghost:"");d.ghost.appendTo(d.helper)},resize:function(e,f){var d=c(this).data("resizable"),g=d.options;if(d.ghost){d.ghost.css({position:"relative",height:d.size.height,width:d.size.width})}},stop:function(e,f){var d=c(this).data("resizable"),g=d.options;if(d.ghost&&d.helper){d.helper.get(0).removeChild(d.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(d,l){var n=c(this).data("resizable"),g=n.options,j=n.size,h=n.originalSize,i=n.originalPosition,m=n.axis,k=g._aspectRatio||d.shiftKey;g.grid=typeof g.grid=="number"?[g.grid,g.grid]:g.grid;var f=Math.round((j.width-h.width)/(g.grid[0]||1))*(g.grid[0]||1),e=Math.round((j.height-h.height)/(g.grid[1]||1))*(g.grid[1]||1);if(/^(se|s|e)$/.test(m)){n.size.width=h.width+f;n.size.height=h.height+e}else{if(/^(ne)$/.test(m)){n.size.width=h.width+f;n.size.height=h.height+e;n.position.top=i.top-e}else{if(/^(sw)$/.test(m)){n.size.width=h.width+f;n.size.height=h.height+e;n.position.left=i.left-f}else{n.size.width=h.width+f;n.size.height=h.height+e;n.position.top=i.top-e;n.position.left=i.left-f}}}}});var b=function(d){return parseInt(d,10)||0};var a=function(d){return !isNaN(parseInt(d,10))}})(jQuery);; +/** + * jQuery.ScrollTo - Easy element scrolling using jQuery. + * Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com + * Licensed under GPL license (http://www.opensource.org/licenses/gpl-license.php). + * Date: 2/8/2008 + * @author Ariel Flesler + * @version 1.3.2 + */ +;(function($){var o=$.scrollTo=function(a,b,c){o.window().scrollTo(a,b,c)};o.defaults={axis:'y',duration:1};o.window=function(){return $($.browser.safari?'body':'html')};$.fn.scrollTo=function(l,m,n){if(typeof m=='object'){n=m;m=0}n=$.extend({},o.defaults,n);m=m||n.speed||n.duration;n.queue=n.queue&&n.axis.length>1;if(n.queue)m/=2;n.offset=j(n.offset);n.over=j(n.over);return this.each(function(){var a=this,b=$(a),t=l,c,d={},w=b.is('html,body');switch(typeof t){case'number':case'string':if(/^([+-]=)?\d+(px)?$/.test(t)){t=j(t);break}t=$(t,this);case'object':if(t.is||t.style)c=(t=$(t)).offset()}$.each(n.axis.split(''),function(i,f){var P=f=='x'?'Left':'Top',p=P.toLowerCase(),k='scroll'+P,e=a[k],D=f=='x'?'Width':'Height';if(c){d[k]=c[p]+(w?0:e-b.offset()[p]);if(n.margin){d[k]-=parseInt(t.css('margin'+P))||0;d[k]-=parseInt(t.css('border'+P+'Width'))||0}d[k]+=n.offset[p]||0;if(n.over[p])d[k]+=t[D.toLowerCase()]()*n.over[p]}else d[k]=t[p];if(/^\d+$/.test(d[k]))d[k]=d[k]<=0?0:Math.min(d[k],h(D));if(!i&&n.queue){if(e!=d[k])g(n.onAfterFirst);delete d[k]}});g(n.onAfter);function g(a){b.animate(d,m,n.easing,a&&function(){a.call(this,l)})};function h(D){var b=w?$.browser.opera?document.body:document.documentElement:a;return b['scroll'+D]-b['client'+D]}})};function j(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery); + diff --git a/src/tracer/pintool/pin-3.13/doc/html/modules.html b/src/tracer/pintool/pin-3.13/doc/html/modules.html new file mode 100755 index 0000000..4ce2485 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/modules.html @@ -0,0 +1,150 @@ + + + + +Pin: Modules + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ +
+
+
+
Modules
+
+ + + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespaceLEVEL__BASE.html b/src/tracer/pintool/pin-3.13/doc/html/namespaceLEVEL__BASE.html new file mode 100755 index 0000000..68e847b --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespaceLEVEL__BASE.html @@ -0,0 +1,1604 @@ + + + + +Pin: LEVEL_BASE Namespace Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+ +
+
LEVEL_BASE Namespace Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Classes

class  PIN_ERROR_DESCRIPTOR
class  KNOBVALUE
class  KNOBVALUE_LIST
class  KNOB_BASE
class  KNOB
class  KNOB_COMMENT
class  ADDRESS_RANGE
struct  PIN_LOCK
class  PARSER
class  COMMAND_LINE_ARGUMENTS
struct  DECSTR
struct  HEXSTR
struct  FLTSTR
class  SimpleXMLParser
struct  REGDEF_ENTRY
struct  ImageLoaderInfo
struct  LINUX_LOADER_IMAGE_INFO

+Typedefs

typedef struct EXCEPTION_INFO EXCEPTION_INFO
typedef PINVM::PINSYNC_POD_LOCK PIN_MUTEX
typedef PINVM::PINSYNC_POD_RWLOCK PIN_RWMUTEX
typedef
+PINVM::PINSYNC_POD_SEMAPHORE 
PIN_SEMAPHORE
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  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) +
+ }
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  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  REG {
+  REG_INVALID_ = 0, +
+  REG_GR_BASE = REG_RBASE, +
+  REG_RDI = REG_GR_BASE, +
+  REG_GDI = REG_RDI, +
+  REG_RSI, +
+  REG_GSI = REG_RSI, +
+  REG_RBP, +
+  REG_GBP = REG_RBP, +
+  REG_RSP, +
+  REG_STACK_PTR = REG_RSP, +
+  REG_RBX, +
+  REG_GBX = REG_RBX, +
+  REG_RDX, +
+  REG_GDX = REG_RDX, +
+  REG_RCX, +
+  REG_GCX = REG_RCX, +
+  REG_RAX, +
+  REG_GAX = REG_RAX, +
+  REG_R8, +
+  REG_R9, +
+  REG_R10, +
+  REG_R11, +
+  REG_R12, +
+  REG_R13, +
+  REG_R14, +
+  REG_R15, +
+  REG_GR_LAST = REG_R15, +
+  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_RFLAGS, +
+  REG_GFLAGS = REG_RFLAGS, +
+  REG_RIP, +
+  REG_INST_PTR = REG_RIP, +
+  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_EDI, +
+  REG_DIL, +
+  REG_ESI, +
+  REG_SIL, +
+  REG_EBP, +
+  REG_BPL, +
+  REG_ESP, +
+  REG_SPL, +
+  REG_EBX, +
+  REG_EDX, +
+  REG_ECX, +
+  REG_EAX, +
+  REG_EFLAGS, +
+  REG_EIP, +
+  REG_R8B, +
+  REG_R8W, +
+  REG_R8D, +
+  REG_R9B, +
+  REG_R9W, +
+  REG_R9D, +
+  REG_R10B, +
+  REG_R10W, +
+  REG_R10D, +
+  REG_R11B, +
+  REG_R11W, +
+  REG_R11D, +
+  REG_R12B, +
+  REG_R12W, +
+  REG_R12D, +
+  REG_R13B, +
+  REG_R13W, +
+  REG_R13D, +
+  REG_R14B, +
+  REG_R14W, +
+  REG_R14D, +
+  REG_R15B, +
+  REG_R15W, +
+  REG_R15D, +
+  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_XMM8, +
+  REG_XMM9, +
+  REG_XMM10, +
+  REG_XMM11, +
+  REG_XMM12, +
+  REG_XMM13, +
+  REG_XMM14, +
+  REG_XMM15, +
+  REG_XMM_SSE_LAST = REG_XMM15, +
+  REG_XMM_AVX_LAST = REG_XMM_SSE_LAST, +
+  REG_XMM_AVX512_HI16_FIRST, +
+  REG_XMM16 = REG_XMM_AVX512_HI16_FIRST, +
+  REG_XMM17, +
+  REG_XMM18, +
+  REG_XMM19, +
+  REG_XMM20, +
+  REG_XMM21, +
+  REG_XMM22, +
+  REG_XMM23, +
+  REG_XMM24, +
+  REG_XMM25, +
+  REG_XMM26, +
+  REG_XMM27, +
+  REG_XMM28, +
+  REG_XMM29, +
+  REG_XMM30, +
+  REG_XMM31, +
+  REG_XMM_AVX512_HI16_LAST = REG_XMM31, +
+  REG_XMM_AVX512_LAST = REG_XMM_AVX512_HI16_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_YMM8, +
+  REG_YMM9, +
+  REG_YMM10, +
+  REG_YMM11, +
+  REG_YMM12, +
+  REG_YMM13, +
+  REG_YMM14, +
+  REG_YMM15, +
+  REG_YMM_AVX_LAST = REG_YMM15, +
+  REG_YMM_AVX512_HI16_FIRST, +
+  REG_YMM16 = REG_YMM_AVX512_HI16_FIRST, +
+  REG_YMM17, +
+  REG_YMM18, +
+  REG_YMM19, +
+  REG_YMM20, +
+  REG_YMM21, +
+  REG_YMM22, +
+  REG_YMM23, +
+  REG_YMM24, +
+  REG_YMM25, +
+  REG_YMM26, +
+  REG_YMM27, +
+  REG_YMM28, +
+  REG_YMM29, +
+  REG_YMM30, +
+  REG_YMM31, +
+  REG_YMM_AVX512_HI16_LAST = REG_YMM31, +
+  REG_YMM_AVX512_LAST = REG_YMM_AVX512_HI16_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_ZMM8, +
+  REG_ZMM9, +
+  REG_ZMM10, +
+  REG_ZMM11, +
+  REG_ZMM12, +
+  REG_ZMM13, +
+  REG_ZMM14, +
+  REG_ZMM15, +
+  REG_ZMM_AVX512_SPLIT_LAST = REG_ZMM15, +
+  REG_ZMM_AVX512_HI16_FIRST, +
+  REG_ZMM16 = REG_ZMM_AVX512_HI16_FIRST, +
+  REG_ZMM17, +
+  REG_ZMM18, +
+  REG_ZMM19, +
+  REG_ZMM20, +
+  REG_ZMM21, +
+  REG_ZMM22, +
+  REG_ZMM23, +
+  REG_ZMM24, +
+  REG_ZMM25, +
+  REG_ZMM26, +
+  REG_ZMM27, +
+  REG_ZMM28, +
+  REG_ZMM29, +
+  REG_ZMM30, +
+  REG_ZMM31, +
+  REG_ZMM_AVX512_HI16_LAST = REG_ZMM31, +
+  REG_ZMM_AVX512_LAST = REG_ZMM_AVX512_HI16_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_RAX, +
+  REG_ORIG_GAX = REG_ORIG_RAX, +
+  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_INST_G0D, +
+  REG_INST_G1D, +
+  REG_INST_G2D, +
+  REG_INST_G3D, +
+  REG_INST_G4D, +
+  REG_INST_G5D, +
+  REG_INST_G6D, +
+  REG_INST_G7D, +
+  REG_INST_G8D, +
+  REG_INST_G9D, +
+  REG_INST_G10D, +
+  REG_INST_G11D, +
+  REG_INST_G12D, +
+  REG_INST_G13D, +
+  REG_INST_G14D, +
+  REG_INST_G15D, +
+  REG_INST_G16D, +
+  REG_INST_G17D, +
+  REG_INST_G18D, +
+  REG_INST_G19D, +
+  REG_INST_G20D, +
+  REG_INST_G21D, +
+  REG_INST_G22D, +
+  REG_INST_G23D, +
+  REG_INST_G24D, +
+  REG_INST_G25D, +
+  REG_INST_G26D, +
+  REG_INST_G27D, +
+  REG_INST_G28D, +
+  REG_INST_G29D, +
+  REG_TOOL_LAST = REG_INST_G29D, +
+  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

+NATIVE_TID SlowGetTid ()
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)
std::string PIN_ExceptionToString (const EXCEPTION_INFO *pExceptInfo)
+LOCALVAR KNOB_COMMENT KnobUserAndPintoolFamily ("user&pintool","General switches (available in pin and tool)")
+LOCALVAR KNOB_COMMENT KnobMemoryConstraintsFamily ("user:memory","Knobs for constraining memory usage")
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)
+LOCALVAR KNOB_COMMENT KnobStatFamily ("supported:stat","Statistic switches")
VOID SetAddress0x (BOOL val)
BOOL CharIsSpace (CHAR c)
CHAR CharToUpper (CHAR c)
std::string ptrstr (const VOID *val)
std::string StringFromAddrint (ADDRINT l)
std::string StringFromUint64 (UINT64 l)
std::string StringDec (UINT64 l, UINT32 digits, CHAR padding)
std::string StringDecSigned (INT64 l, UINT32 digits, CHAR padding)
std::string StringBignum (INT64 l, UINT32 digits, CHAR padding)
std::string Reformat (const std::string &s, const std::string &prefix, UINT32 min_line, UINT32 max_line)
std::string StringHex32 (UINT32 l, UINT32 digits, BOOL prefix_0x)
std::string StringFlt (FLT64 val, UINT32 precision, UINT32 width)
std::string StringBool (BOOL b)
std::string StringTri (TRI t)
INT32 Int32FromString (const std::string &s)
UINT32 Uint32FromString (const std::string &s)
INT64 Int64FromString (const std::string &s)
UINT64 Uint64FromString (const std::string &s)
FLT64 FLT64FromString (const std::string &s)
INT CharToHexDigit (CHAR c)
ADDRINT AddrintFromString (const std::string &str)
std::string ReadLine (std::istream &inputFile, UINT32 *lineNum)
UINT32 Tokenize (const std::string &line, std::string *array, UINT32 n)
std::string StringHex (UINT32 l, UINT32 digits, BOOL prefix_0x=TRUE)
std::string decstr (INT64 val, UINT32 width=0)
std::string decstr (INT32 val, UINT32 width=0)
std::string decstr (INT16 val, UINT32 width=0)
std::string decstr (UINT64 val, UINT32 width=0)
std::string decstr (UINT32 val, UINT32 width=0)
std::string decstr (UINT16 val, UINT32 width=0)
std::string hexstr (INT64 val, UINT32 width=0)
std::string hexstr (INT32 val, UINT32 width=0)
std::string hexstr (INT16 val, UINT32 width=0)
std::string hexstr (UINT64 val, UINT32 width=0)
std::string hexstr (VOID *p, UINT32 width=0)
std::string hexstr (const VOID *p, UINT32 width=0)
std::string hexstr (UINT32 val, UINT32 width=0)
std::string hexstr (UINT16 val, UINT32 width=0)
std::string fltstr (FLT64 val, UINT32 prec=0, UINT32 width=0)
std::string ljstr (const std::string &s, UINT32 width, CHAR padding= ' ')
template<typename ITER , typename CONV >
GLOBALTEMPLATEFUN std::string StringSequence (ITER begin, ITER end, const CONV &conv, const std::string &delimiter=std::string(" "))
+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")
+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)
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_is_gs_or_fs (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)
+REG REG_MachineToPin (const REG reg)
BOOL REG_is_pin64 (REG reg)
REG REG_LastSupportedXmm ()
REG REG_LastSupportedYmm ()
REG REG_LastSupportedZmm ()
UINT32 REG_Size (REG reg)
REG REG_FullRegName (const REG reg)
std::string REG_StringShort (REG reg)
REG REG_IdentityCopy (const REG reg)
REG REG_SpillPtr ()
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)
BOOL REG_is_partialreg (const REG reg)

+Variables

+LOCALCONST INT32 MEMORY_CHUNK_ALLOCATION_SIZE = GetMemoryAllocationGranularity()
GLOBALCONST UINT32 MAX_WINDOWS_EXCEPTION_ARGS = 5
KNOB< BOOL > KnobSlowAsserts (KNOB_MODE_WRITEONCE,"user&pintool","slow_asserts","0","Perform expensive sanity checks")
+LOCALVAR PIN_STATUS PinStatus = {PIN_LOAD_STATUS_INJECTOR, PIN_LOAD_STATUS_INJECTOR}
GLOBALCONST TLS_KEY INVALID_TLS_KEY = (-1)
+LOCALVAR const CHAR HexTab [] = "0123456789abcdef"
GLOBALCONST ADDRINT AC_FLAG_BIT = 0x40000
const REGDEF_ENTRY _regDefTable []
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.

+

This module contains routines and classes for the memory management of large arrays When changing this code, keep in mind that is supposed to work in both 32bit and 64bit environments!

+

TODO: when reserving a new memory chunk we could probe whether the area is available

+

child process definitions

+

A lock that is more full-featured than a "simple" lock. This lock uses a loop over yield to wait on the lock. The Linux implementation uses FUTEX and is implemented in futexlock.cpp.

+

A specific lock implementation that is more full-featured than a "simple" lock.

+

This module contains routines and classes for the handling error messages. This module differs from message.cpp by being included only in the VM, not the client.

+

Basic definitions pertaining to hardware and software exceptions.

+

Contains declarations of types related to the fp state on ia-32

+

Contains declarations of types related to the fp state on Intel64

+

This module contains routines and classes for the processing of command line arguments.

+

Definitions of knobs which are part of pin's command line (rather than the tool's command line). This file is located in level base in order to allow the launcher (i.e. pin.exe) to define the same set of knobs

+

This file contains lock primitives

+

This module contains routines and classes for the handling error messages

+

Parsing utilities of pin's command line

+

This file contains REG primitives

+

Templates of singleton classes

+

This module contains useful utility functions.

+

This file contains general unicode utilities

+

This file contains the implementation of a simple XML parser.

+

This file contains basic abstractions for IA32

+

Interface for querying the ia32/intel64 CPU features

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
REG LEVEL_BASE::REG_Half16 (const REG reg,
const BOOL must_success 
)
+
+
+

Return the lower 16-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
+ +
+
+ +
+
+ + + + + + + +
REG LEVEL_BASE::REG_SpillPtr ()
+
+
+

The physical register assigned to hold the spill pointer

+ +
+
+ +
+
+
+template<typename ITER , typename CONV >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLOBALTEMPLATEFUN std::string LEVEL_BASE::StringSequence (ITER begin,
ITER end,
const CONV & conv,
const std::string & delimiter = std::string(" ") 
)
+
+
+

Convert the sequence [begin, end) to string. Use the <conv> object to convert the elements. Separate the elements by <delimiter>.

+ +
+
+

Variable Documentation

+ +
+
+ + + + +
GLOBALCONST ADDRINT LEVEL_BASE::AC_FLAG_BIT = 0x40000
+
+
+ +
+
+ +
+
+ + + + +
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.

+ +
+
+ +
+
+ + + + +
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.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespaceLEVEL__CORE.html b/src/tracer/pintool/pin-3.13/doc/html/namespaceLEVEL__CORE.html new file mode 100755 index 0000000..439bc1a --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespaceLEVEL__CORE.html @@ -0,0 +1,1277 @@ + + + + +Pin: LEVEL_CORE Namespace Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+ +
+
LEVEL_CORE Namespace Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Classes

struct  EDG_STRUCT_BASE
class  BBL_EDG_CONTAINER_PRED
class  BBL_EDG_CONTAINER_SUCC
struct  IMG_REGION
class  REGISTER_SET
class  CHUNK_REL_CONTAINER
union  VAL
struct  MEM_ADDR_EXP

+Typedefs

typedef class REGISTER_SET
+< REG_FirstInRegset,
+REG_LastInRegset
REGSET

+Enumerations

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  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_PROPERTY {
+  IMG_PROPERTY_INVALID, +
+  IMG_PROPERTY_SHSTK_ENABLED, +
+  IMG_PROPERTY_IBT_ENABLED, +
+  IMG_PROPERTY_LAST +
+ }
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  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_PROC, +
+  SEC_TYPE_LAST +
+ }
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  XED_OPERAND_NUMBER {
+  XED_OPERAND_NUMBER_0 = 0, +
+  XED_OPERAND_NUMBER_1 = 1, +
+  XED_OPERAND_NUMBER_2 = 2, +
+  XED_OPERAND_NUMBER_3 = 3 +
+ }

+Functions

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)
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")
BOOL CallingStd_IsArt (CALLING_STANDARD cstype)
+BOOL INS_startbbl (INS x)
+LOCALVAR KNOB_COMMENT KnobCheckFamily ("supported:check","Self-checking done inside Pin")
ARRAYBASE EdgArrayBase ("edg pool", 64 *1024)
STRIPE< EDG_STRUCT_BASEEdgStripeBase ("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)
+std::string str (EDG edg)
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)
LOCALFUN EXT FindRelInExtChain (EXT head, const ATTRIBUTE *attr, REL rel)
LOCALFUN std::string RELTYPE_StringShort (REL_TYPE type)
+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")
BOOL INS_HasRealRep (INS ins)
BOOL INS_IsStandardMemop (INS ins)
BOOL INS_IsCacheLineFlush (INS ins)
INT32 INS_Category (const INS ins)
INT32 INS_Extension (const INS ins)
UINT32 INS_EffectiveAddressWidth (INS ins)
USIZE INS_MemoryOperandSize (INS ins, UINT32 memoryOp)
USIZE INS_MemoryWriteSize (INS ins)
USIZE INS_MemoryReadSize (INS ins)
PREDICATE INS_GetPredicate (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)
std::string OPCODE_StringShort (UINT32 opcode)
std::string INS_Mnemonic (INS ins)
BOOL INS_IsBranch (INS ins)
BOOL INS_IsDirectBranch (INS ins)
BOOL INS_IsDirectCall (INS ins)
PIN_DEPRECATED_API BOOL INS_IsDirectBranchOrCall (INS ins)
BOOL INS_IsDirectControlFlow (INS ins)
BOOL INS_IsHalt (INS ins)
PIN_DEPRECATED_API BOOL INS_IsBranchOrCall (INS ins)
BOOL INS_Stutters (INS ins)
BOOL INS_IsPcMaterialization (INS ins)
BOOL INS_IsCall (INS ins)
BOOL INS_IsControlFlow (INS ins)
BOOL INS_IsFarCall (INS ins)
BOOL INS_IsFarJump (INS ins)
BOOL INS_IsDirectFarJump (INS ins)
BOOL INS_IsValidForIpointAfter (INS ins)
BOOL INS_IsValidForIpointTakenBranch (INS ins)
BOOL INS_IsVgather (INS ins)
BOOL INS_IsVscatter (INS ins)
BOOL INS_HasMemoryVector (INS ins)
VOID INS_GetFarPointer (INS ins, UINT16 &segment_selector, UINT32 &displacement)
BOOL INS_IsProcedureCall (INS ins)
BOOL INS_IsRet (INS ins)
BOOL INS_IsSysret (INS ins)
BOOL INS_IsFarRet (INS ins)
BOOL INS_IsPrefetch (INS ins)
BOOL INS_IsSub (const INS ins)
BOOL INS_IsMov (const INS ins)
BOOL INS_IsMovFullRegRegSame (const INS ins)
BOOL INS_IsAtomicUpdate (const INS ins)
BOOL INS_IsRDTSC (const INS ins)
BOOL INS_IsMaskMov (const INS ins)
REG INS_RepCountRegister (INS ins)
PIN_DEPRECATED_API BOOL INS_IsIndirectBranchOrCall (INS ins)
BOOL INS_IsIndirectControlFlow (INS ins)
REG INS_SegmentRegPrefix (INS ins)
BOOL INS_HasExplicitMemoryReference (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 ()
REG INS_RegR (INS x, UINT32 k)
REG INS_RegW (INS x, UINT32 k)
std::string CATEGORY_StringShort (UINT32 num)
std::string EXTENSION_StringShort (UINT32 num)
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_IsXchg (INS ins)
BOOL INS_IsStringop (INS ins)
BOOL INS_IsIRet (INS ins)
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 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)
+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")
BOOL INS_IsOriginal (INS ins)
std::string INS_Disassemble (INS ins)
ADDRDELTA INS_MemoryDisplacement (INS ins)
REG INS_MemoryBaseReg (INS ins)
REG INS_MemoryIndexReg (INS ins)
UINT32 INS_MemoryScale (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)
VOID INS_InitMovsxd (INS ins, REG src, REG dst)
+UINT32 INS_min_alignment ()
+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")
xed_decoded_inst_t * INS_XedDec (INS ins)
REG INS_XedExactMapToPinReg (unsigned int r)
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)
LOCALFUN xed_reg_class_enum_t INS_XedRegClass (INS ins, UINT32 n)
BOOL INS_OperandIsReg (INS ins, UINT32 n)
BOOL INS_OperandIsSegmentReg (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)
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)
std::string REGSET_StringShort (const REGSET &regset)
std::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)
+std::string REGSET_CONTEXT_StringShort (const REGSET_CONTEXT &regset)
+std::string REGSET_CONTEXT_StringList (const REGSET &regset)
LOCALINLINE VOID SetHi16ZmmBit (FPSTATE *fpstate)
BOOL INS_IsSyscall (INS ins)
SYSCALL_STANDARD INS_SyscallStd (INS ins)

+Variables

+LOCALVAR REG linuxCallerSaved []
+LOCALVAR REG linuxCallerSavedAvx []
+LOCALVAR REG linuxCallerSavedAvx512 []
LOCALVAR REG windowsCallerSaved []
LOCALVAR REG windowsCallerSavedAvx []
+LOCALVAR REG windowsCallerSavedAvx512 []
+LOCALVAR CHAR const * knobfamily = "supported:disassembly"
+LOCALVAR xed_syntax_enum_t syntax = XED_SYNTAX_INTEL
+LOCALCONST UINT AUTO_DISP_BYTES = 0
+LOCALCONST INT32 DEFAULT_EA_WIDTH = sizeof(VOID*) * 8
LOCALCONST xed_state_t DSTATE
+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
predicateToOp []
+GLOBALCONST REG REG_FirstInRegset = REG_RBASE
GLOBALCONST REG REG_LastInRegset = REG(REG_LAST-1)
+

Detailed Description

+

This file contains APP primitives

+

This file contains BBL primitives

+

Calling standard information

+

control flow graph related stuff

+

This file contains CHUNK primitives

+

Manage comments that are attached to data structures for debugging

+

This file contains EDG primitives

+

This module contains all the EXT extension/attribute management fuctions.

+

This file contains IMG primitives

+

This file contains INS primitives

+

Physical register

+

Register value representation

+

x

+

This file contains REL primitives

+

This file contains RTN primitives

+

This file contains the action to modify SCT's

+

This file contains SEC and Mapping primitives

+

Manage stripes

+

This file contains SYM primitives

+

This file contains SEC and Mapping primitives

+

This file contains eflags-related stuff

+

this file contains functions visible in level_core it uses primitives from level_core_with_ia32_ins but does not leak out any IA32 stuff!

+

ELF specific stuff related to INS

+

This file contains the basic INS_Init* functions used thruout Pin to generate INSs, and the functions that use them. The basic INS_Init* functions are LOCALFUNS, so they do not expose the XED types thruout Pin. The GLOBALFUNs wrap them.

+

Contains the management of ins reuse - i.e. the reuse of already created inss when a new ins is generated. This functionality is used in the base INS_Init* functions in ins_initis_api_xed_ia32.cpp.

+

Intel(R) X86 Encoder Decoder low-level support routines.

+

This supports the other core_ia32 files and is the lowest level interface to Intel(R) XED encoding/decoding.

+

ia32 specific stuff related to OPERAND

+

Register value representation ia-32 specific

+

Syscall information for Unix/x86 systems

+

Enumeration Type Documentation

+ +
+
+ + + + +
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::VAL_TYPE
+
+
+

VAL types

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LOCALVAR const ATTRIBUTE LEVEL_CORE::ATTR_bbl_chunk ("chunk" ,
"bbl" ,
"bbl_chunk" ,
EXT_ATTR_MODE_SINGLE ,
VAL_TYPE_CHUNK ,
B_CROSSLINK ,
FALSE ,
"chunk crosslinked with a type data bbl"  
)
+
+
+ +
+
+ +
+
+ + + + + + + + +
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)
+
+
+ +
+
+ +
+
+ + + + + + + + +
BOOL LEVEL_CORE::CallingStd_IsArt (CALLING_STANDARD cstype)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
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

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
LOCALFUN EXT LEVEL_CORE::FindRelInExtChain (EXT head,
const ATTRIBUTE * attr,
REL rel 
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
VOID LEVEL_CORE::INS_InitMovsxd (INS ins,
REG src,
REG dst 
)
+
+
+

x

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
LOCALFUN xed_reg_class_enum_t LEVEL_CORE::INS_XedRegClass (INS ins,
UINT32 n 
)
+
+
+
Returns:
xed register class enum for the specified operand
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
LOCALINLINE VOID LEVEL_CORE::REL_allocated_set (REL x,
BOOL y 
)
+
+
+ +
+
+ +
+
+ + + + + + + + +
LOCALFUN std::string LEVEL_CORE::RELTYPE_StringShort (REL_TYPE type)
+
+
+ +
+
+ +
+
+ + + + + + + + +
LOCALINLINE VOID LEVEL_CORE::SetHi16ZmmBit (FPSTATE * fpstate)
+
+
+ +
+
+

Variable Documentation

+ +
+
+ + + + +
LOCALCONST xed_state_t LEVEL_CORE::DSTATE
+
+
+Initial value:
+
+    {XED_MACHINE_MODE_LONG_64, XED_ADDRESS_WIDTH_64b}
+
+
+
+ +
+
+ + + + +
LOCALVAR const xed_reg_enum_t LEVEL_CORE::dummy_regs_native_table[MAX_DUMMY_REGS]
+
+
+Initial value:
+{
+
+    XED_REG_RDX, XED_REG_RBX, XED_REG_RCX
+
+
+ 
+}
+
+
+
+ +
+
+ + + + +
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_RDX},
+    { XED_REG_CL, XED_REG_CX, XED_REG_ECX, XED_REG_RCX},
+    { XED_REG_BL, XED_REG_BX, XED_REG_EBX, XED_REG_RBX}
+
+
+
+
+ 
+}
+
+
+
+ +
+
+ + + + +
LOCALVAR REG LEVEL_CORE::windowsCallerSaved[]
+
+
+Initial value:
+{
+    REG_RAX,
+    REG_RCX,
+    REG_RDX,
+    REG_R8,
+    REG_R9,
+    REG_R10,
+    REG_R11,
+    REG_STATUS_FLAGS,
+    REG_DF_FLAG,
+    REG_XMM0,
+    REG_XMM1,
+    REG_XMM2,
+    REG_XMM3,
+    REG_XMM4,
+    REG_XMM5,
+    REG_X87,
+    REG_MXCSR
+}
+
+
+
+ +
+
+ + + + +
LOCALVAR REG LEVEL_CORE::windowsCallerSavedAvx[]
+
+
+Initial value:
+{
+    REG_RAX,
+    REG_RCX,
+    REG_RDX,
+    REG_R8,
+    REG_R9,
+    REG_R10,
+    REG_R11,
+    REG_STATUS_FLAGS,
+    REG_DF_FLAG,
+    REG_YMM0,
+    REG_YMM1,
+    REG_YMM2,
+    REG_YMM3,
+    REG_YMM4,
+    REG_YMM5,
+    REG_YMM6,
+    REG_YMM7,
+    REG_YMM8,
+    REG_YMM9,
+    REG_YMM10,
+    REG_YMM11,
+    REG_YMM12,
+    REG_YMM13,
+    REG_YMM14,
+    REG_YMM15,
+    REG_X87,
+    REG_MXCSR
+}
+
+
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespaceLEVEL__PINCLIENT.html b/src/tracer/pintool/pin-3.13/doc/html/namespaceLEVEL__PINCLIENT.html new file mode 100755 index 0000000..b53c84b --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespaceLEVEL__PINCLIENT.html @@ -0,0 +1,1855 @@ + + + + +Pin: LEVEL_PINCLIENT Namespace Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+ +
+
LEVEL_PINCLIENT Namespace Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Classes

struct  IMAGE_INIT_SESSION
struct  ImageLoadArgs
class  INSTR
class  INSTR_INFO
class  RTN_KEY
class  IMG_IDENTIFIER
struct  OUTSIDE_TARGET_MEM_RANGE
struct  OUTSIDE_TARGET
class  RTN_OUTSIDE_RANGES
class  SymbolAddressRange
struct  SymbolDebugInfo
class  IMAGE_LOAD_OP
class  IMAGE_LOAD_OP2
struct  PIN_CLIENT_MUTEX
class  REPLACEDFUN
class  CLIENT_TLS

+Typedefs

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 VOID(* IMAGECALLBACK )(IMG, VOID *)
typedef EXCEPT_HANDLING_RESULT(* INTERNAL_EXCEPTION_CALLBACK )(THREADID tid, EXCEPTION_INFO *pExceptInfo, PHYSICAL_CONTEXT *pPhysCtxt, 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)
typedef VOID(* FORK_PROBE_MODE_CALLBACK )(UINT32 childPid, 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  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  {
+  TLS_KEY_INTERNAL_EXCEPTION, +
+  TLS_KEY_CLIENT_FIRST, +
+  TLS_KEY_CLIENT_LAST = TLS_KEY_CLIENT_FIRST + 63 +
+ }

+Functions

VOID PIN_InitSymbols ()
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 (std::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)
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, std::string *fileName)
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)
PIN_DEPRECATED_API VOID CALLBACK_SetExecutionPriority (PIN_CALLBACK callback, INT32 priority)
PIN_DEPRECATED_API INT32 CALLBACK_GetExecutionPriority (PIN_CALLBACK callback)
+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< std::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")
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)
PIN_DEPRECATED_API ADDRINT IMG_Entry (IMG img)
ADDRINT IMG_EntryAddress (IMG img)
BOOL IMG_HasProperty (IMG img, IMG_PROPERTY property)
const std::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_hasLinesData (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)
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 std::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_RANGESRtnOutsideRangesManager ()
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)
const std::string & RTN_Name (RTN x)
BOOL RTN_IsArtificial (RTN x)
SYM RTN_Sym (RTN x)
UINT RTN_DynamicMethodId (RTN x)
AFUNPTR RTN_Funptr (RTN x)
LOCALFUN VOID RTN_Destroy (RTN rtn)
UINT32 RTN_Id (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)
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)
PIN_DEPRECATED_API ADDRINT INS_DirectBranchOrCallTargetAddress (INS ins)
ADDRINT INS_DirectControlFlowTargetAddress (INS ins)
ADDRINT INS_NextAddress (INS ins)
SYM SYM_Next (SYM x)
SYM SYM_Prev (SYM x)
const std::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)
UINT32 IMG_Id (IMG x)
IMG IMG_FindImgById (UINT32 id)
IMG IMG_FindByAddress (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)
PIN_CALLBACK IMG_AddUnloadFunction (IMAGECALLBACK fun, VOID *v)
+LOCALFUN VOID IMG_Destroy (IMG img)
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 RTN FinalizeRtn (RTN rtn, USIZE size)
+LOCALFUN VOID AddRtnsToMap (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 std::string &filename, const CHAR *trueFilename, ADDRINT load_offset, UINT32 flags, BOOL *unmapAfterProcessing, void *arg)
IMG IMG_Open (const std::string &filename)
VOID IMG_Close (IMG img)
+LOCALFUN VOID ImageLoadProbes (IMG img)
std::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_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, std::string name)
+LOCALINLINE ADDRINT AlignToPageDown (ADDRINT addr)
+LOCALINLINE ADDRINT AlignToPageUp (ADDRINT addr)
+LOCALFUN VOID UpdateDynamicImgRegions (IMG img, ADDRINT rtn_low_addr, ADDRINT rtn_high_addr)
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 ()
std::string PIN_UndecorateSymbolName (const std::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)
BOOL PIN_IsProbeMode ()
BOOL PIN_IsAttaching ()
+LOCALFUN BOOL CheckInsSequenceForProbe (INS ins, UINT32 probe_size)
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 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 PIN_InsertCallProbed (ADDRINT addr, AFUNPTR funptr,...)
INT32 RTN_CodeRangesProbed (RTN rtn, INT32 num, PIN_CODE_RANGE *buffer)
GLOBALCONST PIN_CALLBACK PIN_CALLBACK_INVALID (0)
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)
LOCALVAR KNOB< BOOL > KnobCheckLocks (KNOB_MODE_WRITEONCE,"supported:message","checklocks","1","Check locks are used correctly")
VOID PIN_LockClient ()
VOID PIN_UnlockClient ()
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 PIN_CallApplicationFunction (const CONTEXT *ctxt, THREADID tid, CALLINGSTD_TYPE cstype, AFUNPTR origFunPtr, CALL_APPLICATION_FUNCTION_PARAM *param,...)
BOOL INS_IsAddedForFunctionReplacement (INS ins)
VOID CALLBACK_SetExecutionOrder (PIN_CALLBACK callback, CALL_ORDER order)
CALL_ORDER CALLBACK_GetExecutionOrder (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< std::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)")
+LOCALFUN BOOL PIN_ParseCommandLine (int xargc, CHAR **xargv, BOOL standAlone)
+LOCALFUN VOID InitializeCallBacks ()
const std::string & PIN_Version ()
BOOL PIN_Init (INT32 argc, CHAR **argv)
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)
+LOCALFUN VOID RecordInstructionMutation (INS ins, EXT ext, BOOL noDuplicates)
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)
REG PIN_ClaimToolRegister ()
CHAR * PIN_VmFullPath ()
const CHAR * PIN_ToolFullPath ()
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 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,...)
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)
NORETURN VOID PIN_ExitApplication (INT32 status)
+LOCALFUN const char * ContextChangeReasonName (CONTEXT_CHANGE_REASON r)
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,...)
int PIN_GetInitialContextForUnwind (const CONTEXT *ctxt, void *cursor)
int PIN_Backtrace (const CONTEXT *ctxt, void **buffer, int size)
PIN_CALLBACK PIN_AddForkFunctionProbed (FPOINT point, FORK_PROBE_MODE_CALLBACK fun, VOID *val)
+LOCALFUN BOOL RTN_ReplaceSyscallProbed (RTN rtn, INT32 syscallNum, RTN errnoLocationRtn, RTN sysenterTrapRtn)
LOCALFUN VOID beforeForkSyscall (ADDRINT gax)
LOCALFUN VOID afterForkSyscall (ADDRINT syscall_result_reg)
+LOCALFUN std::string sanitize (const std::string &original)
+LOCALFUN std::string cplus_demangle (std::string name, UNDECORATION style)

+Variables

+LOCALTYPE typedef void *(* rbrk_ft )(void)
+LOCALTYPE typedef std::pair
+< std::string, ADDRINT > 
SYM_BASIC_INFO
+LOCALTYPE typedef std::set
+< SYM_BASIC_INFO >
+::const_iterator 
SYMSET_CONST_ITERATOR
+LOCALTYPE typedef std::list
+< INSTR
ILIST
+LOCALTYPE typedef std::map
+< ADDRINT, INSTR_INFO
IMAP
+LOCALTYPE typedef
+COMPLEX_CALLBACKVAL
+< FOLLOW_CHILD_PROCESS_CALLBACK
FOLLOW_CHILD_PROCESS_CALLBACKVAL
+LOCALTYPE typedef
+FOLLOW_CHILD_PROCESS_CALLBACKVAL::FUNS 
FOLLOW_CHILD_PROCESS_CALLBACKVALFUNS
+LOCALTYPE typedef
+COMPLEX_CALLBACKVAL
+< DEBUG_INTERPRETER_CALLBACK
DEBUG_INTERPRETER_CALLBACKVAL
+LOCALTYPE typedef
+DEBUG_INTERPRETER_CALLBACKVAL::FUNS 
DEBUG_INTERPRETER_CALLBACKFUNS
+LOCALTYPE typedef
+COMPLEX_CALLBACKVAL
+< DEBUG_BREAKPOINT_CALLBACK
DEBUG_BREAKPOINT_CALLBACKVAL
+LOCALTYPE typedef
+DEBUG_BREAKPOINT_CALLBACKVAL::FUNS 
DEBUG_BREAKPOINT_CALLBACKFUNS
+LOCALTYPE typedef
+SIMPLE_CALLBACKVAL
+< INTERCEPT_DEBUGGING_EVENT_CALLBACK > 
INTERCEPT_DEBUGGING_EVENT_CALLBACKVAL
+LOCALTYPE typedef std::pair
+< RTN_KEY, RTN > 
RTN_PAIR
+LOCALTYPE typedef std::map
+< RTN_KEY, RTN > 
RTN_MAP
+LOCALTYPE typedef std::list
+< MemRange > 
RTN_OUTSIDE_RANGES_LIST
+LOCALTYPE typedef std::map
+< ADDRINT,
+OUTSIDE_TARGET_MEM_RANGE,
+std::less< ADDRINT > > 
RTN_OUTSIDE_RANGES_MAP
+LOCALTYPE typedef std::map
+< ADDRINT, OUTSIDE_TARGET,
+std::less< ADDRINT > > 
RTN_OUTSIDE_TARGETS_MAP
+LOCALTYPE typedef std::map
+< ADDRINT, BBL, std::less
+< ADDRINT > > 
RTN_OUTSIDE_PREV_BBLS_MAP
+LOCALTYPE typedef std::vector
+< INS > 
RTN_UJMP_VECTOR
+LOCALTYPE typedef
+COMPLEX_CALLBACKVAL
+< IMAGECALLBACK
IMAGECALLBACKVAL
+LOCALTYPE typedef
+IMAGECALLBACKVAL::FUNS 
IMAGECALLBACKFUNS
+LOCALTYPE typedef
+COMPLEX_CALLBACKVAL
+< RTN_INSTRUMENT_CALLBACK
RTN_INSTRUMENT_CALLBACKVAL
+LOCALTYPE typedef
+RTN_INSTRUMENT_CALLBACKVAL::FUNS 
RTN_INSTRUMENT_CALLBACKFUNS
+LOCALTYPE typedef
+COMPLEX_CALLBACKVAL
+< INS_INSTRUMENT_CALLBACK
INS_INSTRUMENT_CALLBACKVAL
+LOCALTYPE typedef
+INS_INSTRUMENT_CALLBACKVAL::FUNS 
INS_INSTRUMENT_CALLBACKFUNS
+LOCALTYPE typedef
+COMPLEX_CALLBACKVAL
+< TRACE_INSTRUMENT_CALLBACK
TRACE_INSTRUMENT_CALLBACKVAL
+LOCALTYPE typedef
+TRACE_INSTRUMENT_CALLBACKVAL::FUNS 
TRACE_INSTRUMENT_CALLBACKFUNS
+LOCALTYPE typedef
+COMPLEX_CALLBACKVAL
+< SMC_CALLBACK
SMC_CALLBACKVAL
+LOCALTYPE typedef
+SMC_CALLBACKVAL::FUNS 
SMC_CALLBACKFUNS
+LOCALTYPE typedef
+COMPLEX_CALLBACKVAL
+< PREPARE_FOR_FINI_CALLBACK
PREPARE_FOR_FINI_CALLBACKVAL
+LOCALTYPE typedef
+PREPARE_FOR_FINI_CALLBACKVAL::FUNS 
PREPARE_FOR_FINI_CALLBACKFUNS
+LOCALTYPE typedef
+COMPLEX_CALLBACKVAL
+< FINI_CALLBACK
FINI_CALLBACKVAL
+LOCALTYPE typedef
+FINI_CALLBACKVAL::FUNS 
FINI_CALLBACKFUNS
+LOCALTYPE typedef
+COMPLEX_CALLBACKVAL
+< FORK_CALLBACK
FORK_CALLBACKVAL
+LOCALTYPE typedef
+FORK_CALLBACKVAL::FUNS 
FORK_CALLBACKFUNS
+LOCALTYPE typedef
+COMPLEX_CALLBACKVAL
+< DETACH_CALLBACK
DETACH_CALLBACKVAL
+LOCALTYPE typedef
+DETACH_CALLBACKVAL::FUNS 
DETACH_CALLBACKFUNS
+LOCALTYPE typedef
+COMPLEX_CALLBACKVAL
+< DETACH_PROBED_CALLBACK
DETACH_PROBED_CALLBACKVAL
+LOCALTYPE typedef
+DETACH_PROBED_CALLBACKVAL::FUNS 
DETACH_PROBED_CALLBACKFUNS
+LOCALTYPE typedef
+COMPLEX_CALLBACKVAL
+< APPLICATION_START_CALLBACK
APPLICATION_START_CALLBACKVAL
+LOCALTYPE typedef
+APPLICATION_START_CALLBACKVAL::FUNS 
APPLICATION_START_CALLBACKFUNS
+LOCALTYPE typedef
+COMPLEX_CALLBACKVAL
+< THREAD_START_CALLBACK
THREAD_START_CALLBACKVAL
+LOCALTYPE typedef
+THREAD_START_CALLBACKVAL::FUNS 
THREAD_START_CALLBACKFUNS
+LOCALTYPE typedef
+COMPLEX_CALLBACKVAL
+< THREAD_ATTACH_PROBED_CALLBACK
THREAD_ATTACH_PROBED_CALLBACKVAL
+LOCALTYPE typedef
+THREAD_ATTACH_PROBED_CALLBACKVAL::FUNS 
THREAD_ATTACH_PROBED_CALLBACKFUNS
+LOCALTYPE typedef
+COMPLEX_CALLBACKVAL
+< THREAD_DETACH_PROBED_CALLBACK
THREAD_DETACH_PROBED_CALLBACKVAL
+LOCALTYPE typedef
+THREAD_DETACH_PROBED_CALLBACKVAL::FUNS 
THREAD_DETACH_PROBED_CALLBACKFUNS
+LOCALTYPE typedef
+COMPLEX_CALLBACKVAL
+< THREAD_ATTACH_CALLBACK
THREAD_ATTACH_CALLBACKVAL
+LOCALTYPE typedef
+THREAD_ATTACH_CALLBACKVAL::FUNS 
THREAD_ATTACH_CALLBACKFUNS
+LOCALTYPE typedef
+COMPLEX_CALLBACKVAL
+< THREAD_DETACH_CALLBACK
THREAD_DETACH_CALLBACKVAL
+LOCALTYPE typedef
+THREAD_DETACH_CALLBACKVAL::FUNS 
THREAD_DETACH_CALLBACKFUNS
+LOCALTYPE typedef
+COMPLEX_CALLBACKVAL
+< THREAD_FINI_CALLBACK
THREAD_FINI_CALLBACKVAL
+LOCALTYPE typedef
+THREAD_FINI_CALLBACKVAL::FUNS 
THREAD_FINI_CALLBACKFUNS
+LOCALTYPE typedef
+COMPLEX_CALLBACKVAL
+< CONTEXT_CHANGE_CALLBACK
CONTEXT_CHANGE_CALLBACKVAL
+LOCALTYPE typedef
+CONTEXT_CHANGE_CALLBACKVAL::FUNS 
CONTEXT_CHANGE_CALLBACKFUNS
+LOCALTYPE typedef
+COMPLEX_CALLBACKVAL
+< SYSCALL_ENTRY_CALLBACK
SYSCALL_ENTRY_CALLBACKVAL
+LOCALTYPE typedef
+SYSCALL_ENTRY_CALLBACKVAL::FUNS 
SYSCALL_ENTRY_CALLBACKFUNS
+LOCALTYPE typedef
+COMPLEX_CALLBACKVAL
+< SYSCALL_EXIT_CALLBACK
SYSCALL_EXIT_CALLBACKVAL
+LOCALTYPE typedef
+SYSCALL_EXIT_CALLBACKVAL::FUNS 
SYSCALL_EXIT_CALLBACKFUNS
+LOCALTYPE typedef
+SIMPLE_CALLBACKVAL
+< INTERCEPT_SIGNAL_CALLBACK
INTERCEPT_SIGNAL_CALLBACKVAL
+LOCALTYPE typedef std::map
+< int,
+INTERCEPT_SIGNAL_CALLBACKVAL > 
INTERCEPT_SIGNAL_MAP
+LOCALTYPE typedef
+COMPLEX_CALLBACKVAL
+< PROBES_INSERTED_CALLBACK
PROBES_INSERTED_CALLBACKVAL
+LOCALTYPE typedef
+PROBES_INSERTED_CALLBACKVAL::FUNS 
PROBES_INSERTED_CALLBACKFUNS
+LOCALTYPE typedef
+SIMPLE_CALLBACKVAL
+< TRACE_BUFFER_CALLBACK
TRACE_BUFFER_CALLBACKVAL
+LOCALTYPE typedef std::map
+< BUFFER_ID,
+TRACE_BUFFER_CALLBACKVAL > 
TRACE_BUFFER_CALLBACK_MAP
+LOCALTYPE typedef
+COMPLEX_CALLBACKVAL
+< FORK_PROBE_MODE_CALLBACK
FORK_PROBE_MODE_CALLBACKVAL
+LOCALTYPE typedef
+FORK_PROBE_MODE_CALLBACKVAL::FUNS 
FORK_PROBE_MODE_CALLBACKFUNS
+LOCALTYPE typedef pid_t(* FORKFUNCPTR )()
+LOCALTYPE typedef int(* CLOSEFUNCPTR )(int fd)
+LOCALCONST UINT32 crc32table []
+LOCALVAR const CHAR * debug_state_func = "_dl_debug_state"
+LOCALVAR const CHAR * debug_state_var = "_r_debug"
+LOCALVAR BOOL SymInit = false
+LOCALVAR SYMBOL_INFO_MODE SymMode = NO_SYMBOLS
+LOCALVAR const INT PLT0_ENTRY_SIZE = 16
+LOCALVAR const INT PLT_ENTRY_SIZE = 16
+LOCALVAR const INT RELC_INDEX_OFFSET = 7
+LOCALVAR IMAP imap
+LOCALVAR
+FOLLOW_CHILD_PROCESS_CALLBACKVALFUNS 
followChildProcessList
+LOCALVAR
+DEBUG_INTERPRETER_CALLBACKFUNS 
debugInterpreterList
+LOCALVAR
+DEBUG_BREAKPOINT_CALLBACKFUNS 
debugBreakpointList
+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
+LOCALVAR RTN_MAP rtn_map
+LOCALVAR const char * WHOLE_TEXT_SECTION = ".text"
+LOCALVAR const char * UNNAMED_IMAGE_ENTRY_POINT = "unnamedImageEntryPoint"
+LOCALVAR IMAGECALLBACKFUNS imageLoadList
+LOCALVAR IMAGECALLBACKFUNS imageUnloadList
+LOCALVAR APP app
+LOCALVAR RTN OpenRtn
+LOCALVAR IMG OpenImg
+LOCALVAR
+RTN_INSTRUMENT_CALLBACKFUNS 
rtnList
+LOCALVAR std::list< IMAGE_LOAD_OPsavedImageLoadOps
+LOCALVAR std::list
+< IMAGE_LOAD_OP2
savedImageLoadOps2
LOCALVAR PINVM::PINSYNC_RWLOCK syscallCallbacksRWLock
+LOCALVAR
+INS_INSTRUMENT_CALLBACKFUNS 
insList
+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
+LOCALVAR SMC_CALLBACKFUNS smcCallbackList
+LOCALVAR
+PREPARE_FOR_FINI_CALLBACKFUNS 
prepareForFiniList
+LOCALVAR FINI_CALLBACKFUNS finiList
+LOCALVAR FETCH_CALLBACK fetchCallbackFun = 0
+LOCALVAR VOID * fetchCallbackVal = 0
+LOCALVAR FORK_CALLBACKFUNS forkListBefore
+LOCALVAR FORK_CALLBACKFUNS forkListAfterInParent
+LOCALVAR FORK_CALLBACKFUNS forkListAfterInChild
+LOCALVAR DETACH_CALLBACKFUNS detachList
+LOCALVAR DETACH_PROBED_CALLBACKFUNS detachProbedList
+LOCALVAR ATTACH_PROBED_CALLBACK attachProbedFun = 0
+LOCALVAR VOID * attachProbedVal = 0
+LOCALVAR
+APPLICATION_START_CALLBACKFUNS 
appStartList
+LOCALVAR THREAD_START_CALLBACKFUNS threadStartList
+LOCALVAR
+THREAD_ATTACH_PROBED_CALLBACKFUNS 
threadAttachProbedList
+LOCALVAR
+THREAD_DETACH_PROBED_CALLBACKFUNS 
threadDetachProbedList
+LOCALVAR THREAD_ATTACH_CALLBACKFUNS threadAttachJitList
+LOCALVAR THREAD_DETACH_CALLBACKFUNS threadDetachJitList
+LOCALVAR THREAD_FINI_CALLBACKFUNS threadFiniList
+LOCALVAR
+CONTEXT_CHANGE_CALLBACKFUNS 
contextChangeList
+LOCALVAR SYSCALL_ENTRY_CALLBACKFUNS syscallEntryList
+LOCALVAR SYSCALL_EXIT_CALLBACKFUNS syscallExitList
+LOCALVAR INTERCEPT_SIGNAL_MAP interceptSignalMap
+LOCALVAR
+PROBES_INSERTED_CALLBACKFUNS 
probesInsertedList
+LOCALVAR TRACE_BUFFER_CALLBACK_MAP traceBufferCallbackMap
+LOCALVAR std::set< ADDRINT,
+std::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 REPLACEDFUN::LIST replacedFunList
+LOCALVAR CONDINSTSTATE condInstStateForIns = CONDINST_NORMAL
+LOCALVAR PREDICATE insLastIfPredicate = PREDICATE_ALWAYS_TRUE
+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)
+LOCALCONST std::string UNKNOWN_ELEMENT = "???"
+LOCALVAR
+FORK_PROBE_MODE_CALLBACKFUNS 
forkProbedListBefore
+LOCALVAR
+FORK_PROBE_MODE_CALLBACKFUNS 
forkProbedListAfterInParent
+LOCALVAR
+FORK_PROBE_MODE_CALLBACKFUNS 
forkProbedListAfterInChild
+LOCALVAR FORKFUNCPTR origFork = NULL
+LOCALVAR BOOL forkSyscallIsInstrumented = FALSE
+LOCALVAR const char * getPpidFuncName = NAME("getppid")
+LOCALVAR const char * errnoLocFuncName = "__errno_location"
+struct {
   const std::string   name
   const std::string   replacement
   size_t   length
sanitizations []
+

Detailed Description

+

PIN DWARF debugging information using libpindwarf (LLVM based) library

+

Static model for instrumenting IMG's once they are loaded into memory. This file contains the ELF specific part for Linux.

+

Ahead of Time Instrumentation

+

Pin client functions for the follow child process mechanism

+

PIN support for debugging information

+

Pin client functions for the application-level debugger.

+

Deprecated Pin client functions.

+

Static model for instrumenting IMG's once they are loaded into memory.

+

Pin client interface and implementation for internal exception handling

+

Client side interface to pin vm.

+

Additional client side interface to pin vm containing the interfaces useful for a replay tool. These mainly allow a PinTool to request that Pin execute callbacks associated with specific events.

+

pin client state

+

Pin Jitted Functions Support

+

Pin client functions to temporarily stop all application threads, examine their state and resume.

+

Threading API for clients

+

Pin client interfaces for trace versioning

+

Unix-specific instrumentation in probe mode

+

Binary symbol handling in Unix.

+

Enumeration Type Documentation

+ +
+
+ + + + +
anonymous enum
+
+
+

Keys to access client data in the thread local storage

+ +
+
+ +
+ +
+

Flags passed to PIN_SetReplayMode.

+
Enumerator:
+ +
REPLAY_MODE_IMAGEOPS  +

Replayer will handle image ops.

+
+
+
+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
LOCALFUN VOID LEVEL_PINCLIENT::afterForkSyscall (ADDRINT syscall_result_reg)
+
+
+

Call the PIN tool's callback routines for an after-fork event

+

Compare the pid to the pid saved by beforeForkSyscall() to know which after-fork callbacks to call - parent or child. For safety we get the GAX value (which is also the syscall result register) as input and also return this value. This will ensure that the value of gax is maintained properly by this function, as gax is being used by the trampoline code to save the state and its value is not always maintained.

+
Parameters:
+ + +
[in]syscall_result_regThe value of the gax register
+
+
+
Returns:
INT the value of the gax register that was received as input
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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 & macOS*
+ 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 & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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]bblThe application BBL
[in]actionWhether the record is filled before or after the BBL
[in]idThe 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
+
+ +
+
+ +
+
+ + + + + + + + +
BBL_TYPE LEVEL_PINCLIENT::BBL_Type (BBL x)
+
+
+
Returns:
The type of the basic block
+ +
+
+ +
+
+ + + + + + + + +
LOCALFUN VOID LEVEL_PINCLIENT::beforeForkSyscall (ADDRINT gax)
+
+
+

Call the PIN tool's callback routines for a before-fork event

+

Save the pid here - this is the pid of the parent. We need the saved pid later in afterForkSyscall() to know which after-fork callbacks to call - parent or child. For safety we get the GAX value as input and also return this value. This will ensure that the value of gax is maintained properly by this function, as gax is being used by the trampoline code to save the state and its value is not always maintained.

+
Parameters:
+ + +
[in]gaxThe value of the gax register
+
+
+
Returns:
INT the value of the gax register that was received as input
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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()

+

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LOCALFUN VOID LEVEL_PINCLIENT::DsUpdatesDueRtnfuncCreation (RTN rtnToSplit,
RTN originatedFromIfunc,
ADDRINT rtnToSplitAddr,
ADDRINT rtnToSplitSize,
ADDRINT newRtnAddr 
)
+
+
+ +
+
+ +
+
+ + + + + + + + +
LOCALFUN VOID LEVEL_PINCLIENT::FixSymbolsFromDebugInfo (IMG img)
+
+
+

This function compares the symbols previously read from the symbol tables with with the symbols read from the debug information. In case of conflict, the function will fix the symbol based on the information from the debug info. Conflicts may appear for example in the case of functions with multiple entry points. Each entry point will have its own label in the symbol table. This function will merge symbols that belong to the same function into a single symbol.

+
Parameters:
+ + +
[in]imgThe image
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
LOCALFUN RTN LEVEL_PINCLIENT::handleIfuncSymbol (ADDRINT actualFuncAddr,
SYM resolver,
IMG img 
)
+
+
+

This function does all there is to do to handle an ifunc symbol, that is: 1. Find the RTN that is associated with actualFuncAddr 2. If this address don't have a symbol (routine) - create one and add it to img 3. Link the resolver RTN and the implementation RTN using RTN_ifunc_impl_set and RTN_ifunc_resolver_set 4. Mark the relevant symbols with the correct IFUNC_TYPE

+

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.

+

Clarification: Each RTN which is created by this function was pointed by IFunc resolver. The name of the new function will be the name of the IFUNC symbol, and its address will be the address of the actual function address (the resolved address).

+
Parameters:
+ + + + +
addressThe start address of the new routine
resolverThe symbol of the resolver function
imgThe image containing the resolver function
+
+
+
Returns:
RTN object The routine object is valid if the address fails into code section and there is no another routine object which starts at the same address.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LOCALFUN IMG LEVEL_PINCLIENT::ImgLoad (const std::string & filename,
const CHAR * trueFilename,
ADDRINT load_offset,
UINT32 flags,
BOOL * unmapAfterProcessing,
void * arg 
)
+
+
+

Create an image (IMG) for an already loaded image or load a new image into memory and create an IMG for it. When IMAGE_LOAD_RUNTIME is being used in flags it implies the image is an already loaded image otherwise it implies that we are mapping a new image.

+

On Unix (Linux & macOS) we map the image again even for an already loaded image because it's more convenient to us. When the loader or the kernel maps a file into memory it may split it in memory into several parts which makes it harder to parse. When we map the file using regular mapping system call it will map it in one chunk which makes it easier to parse. In these cases unmapAfterProcessing will be set to TRUE so that the duplicated image will be removed.

+

param[in] filename Image filename param[in] trueFilename Image filename - TODO - clarify difference compared to userFilename or unite!. param[in] load_offset Image load address for images which are already loaded param[in] flags Bitwise flags of IMAGE_LOAD_FLAGS param[out] unmapAfterProcessing If not NULL, True if image should be unmapped after IMG object had been created param[in] arg opaque pointer (OS specific), NULL if not used

+ +
+
+ +
+
+ + + + + + + + +
BOOL LEVEL_PINCLIENT::IsThreadInFiniCallback (OS_THREAD_ID sysId)
+
+
+

Tells whether the given thread is currently executing a thread-fini callback.

+
Parameters:
+ + +
[in]sysIdO/S ID for a thread.
+
+
+
Returns:
TRUE if the thread sysId is currently executing a thread-fini callback.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LOCALVAR KNOB<BOOL> LEVEL_PINCLIENT::KnobCheckLocks (KNOB_MODE_WRITEONCE ,
"supported:message" ,
"checklocks" ,
"1" ,
"Check locks are used correctly"  
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LOCALVAR KNOB<BOOL> LEVEL_PINCLIENT::KnobProfile (KNOB_MODE_WRITEONCE ,
"supported:stat" ,
"profile" ,
"0" ,
"print amount of memory dynamically allocated but not yet freed by the tool"  
)
+
+
+

Remove all PIN client tool callbacks except for detachList and detachProbedList callbacks

+ +
+
+ +
+
+ + + + + + + + +
LOCALFUN VOID LEVEL_PINCLIENT::RTN_Destroy (RTN rtn)
+
+
+

an rtn No RTN can be open when destroying an RTN

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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]rtnThe application RTN
[in]actionWhether the record is filled before or after the RTN
[in]idThe 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
+
+ +
+
+

Variable Documentation

+ +
+
+ + + + +
LOCALVAR PINVM::PINSYNC_RWLOCK LEVEL_PINCLIENT::syscallCallbacksRWLock
+
+
+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers.html new file mode 100755 index 0000000..6ffbbda --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers.html @@ -0,0 +1,120 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+
Here is a list of all documented namespace members with links to the namespaces they belong to:
+ +

- _ -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x61.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x61.html new file mode 100755 index 0000000..9b42709 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x61.html @@ -0,0 +1,159 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+
Here is a list of all documented namespace members with links to the namespaces they belong to:
+ +

- a -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x62.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x62.html new file mode 100755 index 0000000..a00d0d4 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x62.html @@ -0,0 +1,177 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+
Here is a list of all documented namespace members with links to the namespaces they belong to:
+ +

- b -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x63.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x63.html new file mode 100755 index 0000000..99b3123 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x63.html @@ -0,0 +1,159 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+
Here is a list of all documented namespace members with links to the namespaces they belong to:
+ +

- c -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x64.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x64.html new file mode 100755 index 0000000..4100474 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x64.html @@ -0,0 +1,144 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+
Here is a list of all documented namespace members with links to the namespaces they belong to:
+ +

- d -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x65.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x65.html new file mode 100755 index 0000000..5076a6c --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x65.html @@ -0,0 +1,303 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+
Here is a list of all documented namespace members with links to the namespaces they belong to:
+ +

- e -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x66.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x66.html new file mode 100755 index 0000000..1ba80b5 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x66.html @@ -0,0 +1,195 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+
Here is a list of all documented namespace members with links to the namespaces they belong to:
+ +

- f -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x68.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x68.html new file mode 100755 index 0000000..faed80b --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x68.html @@ -0,0 +1,123 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+
Here is a list of all documented namespace members with links to the namespaces they belong to:
+ +

- h -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x69.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x69.html new file mode 100755 index 0000000..ae60994 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x69.html @@ -0,0 +1,732 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+
Here is a list of all documented namespace members with links to the namespaces they belong to:
+ +

- i -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x6b.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x6b.html new file mode 100755 index 0000000..059d06d --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x6b.html @@ -0,0 +1,147 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+
Here is a list of all documented namespace members with links to the namespaces they belong to:
+ +

- k -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x6c.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x6c.html new file mode 100755 index 0000000..7e76039 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x6c.html @@ -0,0 +1,120 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+
Here is a list of all documented namespace members with links to the namespaces they belong to:
+ +

- l -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x6d.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x6d.html new file mode 100755 index 0000000..fae90d5 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x6d.html @@ -0,0 +1,129 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+
Here is a list of all documented namespace members with links to the namespaces they belong to:
+ +

- m -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x6e.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x6e.html new file mode 100755 index 0000000..05dba9f --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x6e.html @@ -0,0 +1,120 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+
Here is a list of all documented namespace members with links to the namespaces they belong to:
+ +

- n -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x6f.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x6f.html new file mode 100755 index 0000000..5e2330d --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x6f.html @@ -0,0 +1,123 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+
Here is a list of all documented namespace members with links to the namespaces they belong to:
+ +

- o -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x70.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x70.html new file mode 100755 index 0000000..5416b8b --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x70.html @@ -0,0 +1,702 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+
Here is a list of all documented namespace members with links to the namespaces they belong to:
+ +

- p -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x72.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x72.html new file mode 100755 index 0000000..558970d --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x72.html @@ -0,0 +1,858 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+
Here is a list of all documented namespace members with links to the namespaces they belong to:
+ +

- r -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x73.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x73.html new file mode 100755 index 0000000..4bb5304 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x73.html @@ -0,0 +1,327 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+
Here is a list of all documented namespace members with links to the namespaces they belong to:
+ +

- s -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x74.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x74.html new file mode 100755 index 0000000..85a8f22 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x74.html @@ -0,0 +1,192 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+
Here is a list of all documented namespace members with links to the namespaces they belong to:
+ +

- t -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x75.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x75.html new file mode 100755 index 0000000..1eb2070 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x75.html @@ -0,0 +1,132 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+
Here is a list of all documented namespace members with links to the namespaces they belong to:
+ +

- u -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x76.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x76.html new file mode 100755 index 0000000..b31aedf --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_0x76.html @@ -0,0 +1,120 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+
Here is a list of all documented namespace members with links to the namespaces they belong to:
+ +

- v -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_enum.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_enum.html new file mode 100755 index 0000000..8561a35 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_enum.html @@ -0,0 +1,169 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_eval.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_eval.html new file mode 100755 index 0000000..d69afde --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_eval.html @@ -0,0 +1,114 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+  + +

- a -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_eval_0x64.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_eval_0x64.html new file mode 100755 index 0000000..73c927c --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_eval_0x64.html @@ -0,0 +1,114 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+  + +

- d -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_eval_0x65.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_eval_0x65.html new file mode 100755 index 0000000..ab138a0 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_eval_0x65.html @@ -0,0 +1,270 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+  + +

- e -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_eval_0x66.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_eval_0x66.html new file mode 100755 index 0000000..53b2bba --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_eval_0x66.html @@ -0,0 +1,150 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+  + +

- f -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_eval_0x69.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_eval_0x69.html new file mode 100755 index 0000000..840fd95 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_eval_0x69.html @@ -0,0 +1,135 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+  + +

- i -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_eval_0x6b.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_eval_0x6b.html new file mode 100755 index 0000000..7b5e053 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_eval_0x6b.html @@ -0,0 +1,123 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+  + +

- k -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_eval_0x6e.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_eval_0x6e.html new file mode 100755 index 0000000..15f58e8 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_eval_0x6e.html @@ -0,0 +1,111 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+  + +

- n -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_eval_0x70.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_eval_0x70.html new file mode 100755 index 0000000..ba4337d --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_eval_0x70.html @@ -0,0 +1,171 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+  + +

- p -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_eval_0x72.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_eval_0x72.html new file mode 100755 index 0000000..81424d3 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_eval_0x72.html @@ -0,0 +1,354 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+  + +

- r -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_eval_0x73.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_eval_0x73.html new file mode 100755 index 0000000..92da268 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_eval_0x73.html @@ -0,0 +1,171 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+  + +

- s -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_eval_0x75.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_eval_0x75.html new file mode 100755 index 0000000..b879696 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_eval_0x75.html @@ -0,0 +1,114 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+  + +

- u -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func.html new file mode 100755 index 0000000..e8109b3 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func.html @@ -0,0 +1,134 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+  + +

- a -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x62.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x62.html new file mode 100755 index 0000000..0484b0c --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x62.html @@ -0,0 +1,173 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+  + +

- b -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x63.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x63.html new file mode 100755 index 0000000..06f7a1f --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x63.html @@ -0,0 +1,149 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+  + +

- c -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x64.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x64.html new file mode 100755 index 0000000..26ae178 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x64.html @@ -0,0 +1,122 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+  + +

- d -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x65.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x65.html new file mode 100755 index 0000000..a8996b3 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x65.html @@ -0,0 +1,122 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+  + +

- e -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x66.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x66.html new file mode 100755 index 0000000..6dae2e1 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x66.html @@ -0,0 +1,125 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+  + +

- f -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x68.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x68.html new file mode 100755 index 0000000..efdd785 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x68.html @@ -0,0 +1,119 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+  + +

- h -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x69.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x69.html new file mode 100755 index 0000000..472921d --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x69.html @@ -0,0 +1,680 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+  + +

- i -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x6b.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x6b.html new file mode 100755 index 0000000..d59be69 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x6b.html @@ -0,0 +1,122 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+  + +

- k -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x6c.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x6c.html new file mode 100755 index 0000000..a0a0243 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x6c.html @@ -0,0 +1,116 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+  + +

- l -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x6f.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x6f.html new file mode 100755 index 0000000..1e6f3f5 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x6f.html @@ -0,0 +1,116 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+  + +

- o -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x70.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x70.html new file mode 100755 index 0000000..cde280c --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x70.html @@ -0,0 +1,599 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+  + +

- p -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x72.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x72.html new file mode 100755 index 0000000..23d6162 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x72.html @@ -0,0 +1,554 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+  + +

- r -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x73.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x73.html new file mode 100755 index 0000000..b4d94d6 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x73.html @@ -0,0 +1,236 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+  + +

- s -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x74.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x74.html new file mode 100755 index 0000000..fc69778 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x74.html @@ -0,0 +1,158 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+  + +

- t -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x75.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x75.html new file mode 100755 index 0000000..0d578d1 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_func_0x75.html @@ -0,0 +1,119 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+  + +

- u -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_type.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_type.html new file mode 100755 index 0000000..69cc27b --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_type.html @@ -0,0 +1,291 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + + +
+
+  + +

- a -

+ + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- i -

+ + +

- m -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_vars.html b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_vars.html new file mode 100755 index 0000000..9de99a7 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespacemembers_vars.html @@ -0,0 +1,142 @@ + + + + +Pin: Namespace Members + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/namespaces.html b/src/tracer/pintool/pin-3.13/doc/html/namespaces.html new file mode 100755 index 0000000..dbe083e --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/namespaces.html @@ -0,0 +1,88 @@ + + + + +Pin: Namespace List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+
+
Namespace List
+
+
+
Here is a list of all documented namespaces with brief descriptions:
+ + + +
LEVEL_BASE
LEVEL_CORE
LEVEL_PINCLIENT
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/nav_f.png b/src/tracer/pintool/pin-3.13/doc/html/nav_f.png new file mode 100755 index 0000000000000000000000000000000000000000..1b07a16207e67c95fe2ee17e7016e6d08ac7ac99 GIT binary patch literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQfZzpjv*C{Z|{2YIT`Y>1X`Eg z-tTbne1`SITM8Q!Pb(<)UFZ(m>wMzvKZQqKM~~GcZ=A7j<~E6K62>ozFS=cD3)mf8 z9WX0+R&m(l9KUsLdTx4?9~({T__KA%`}olPJ^N;y|F^pHgs_K%!rj~{8>RwnWbkzL Kb6Mw<&;$VTdq1fF literal 0 HcmV?d00001 diff --git a/src/tracer/pintool/pin-3.13/doc/html/nav_h.png b/src/tracer/pintool/pin-3.13/doc/html/nav_h.png new file mode 100755 index 0000000000000000000000000000000000000000..01f5fa6a596e36bd12c2d6ceff1b0169fda7e699 GIT binary patch literal 97 zcmeAS@N?(olHy`uVBq!ia0vp^j6lr8!2~3AUOE6t1`SUa$B+ufw|6&kG8phMJMJ~w va4>Y+bZ&9QY?(VEUPY_cGd9nQ`um^ZSUyYpAAuKhL7F^W{an^LB{Ts5DmojT literal 0 HcmV?d00001 diff --git a/src/tracer/pintool/pin-3.13/doc/html/open.png b/src/tracer/pintool/pin-3.13/doc/html/open.png new file mode 100755 index 0000000000000000000000000000000000000000..7b35d2c2c389743089632fe24c3104f2173d97af GIT binary patch literal 118 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{Vww^AIAr*{o=Nbw!DDW^(zOibV zl!F8B0?t?i!vld4k#$~0_AX3zElaokn#lWw+#fC%hjV83%shMVXFoGT=mTwahJV=pIdtd{!@aw= z^$s060zY)<@ERQr@Z{Wa5ntfH!ybC-HxHF`am)Ze9CNs#b>q;XvgngLR>y&#PdvH% z$m7rNN45C1A|&<=gCFNynKUQXb0~e7 z)9(6@rH`>^^cydB7Y`k#Q$2J<bv>5R2r3(jRNc`pBH$L;cy$&RGYZUp@2`78C@kadT^ z>i(t}&>Itv7)&qi*ur8G35le>-9;4C3a3@R)sdGHqG4hZ@J2cU-%Z5zhJ7 z2H?F)wWF|3l?(A{8!eAwy>IrKYuS9+8L7P|rh4>mD?pQuku)XpPZU%7Q&=rJhwH{_ z{OzaM*NBUIzl{X&l{*YdAPc*v>g!^T9sQ3XnL#MW zU*UdSrjFoxu>i}9-~T&Vj+xSIL+91Ndw3}6e@~=a?>7f-h`&|HM!2l}7M9tA(NEKN&XdaU?&hR?bD@&xTY{IY~vvufd0 ze;sd-FjCNw#Tx`J6TN@}bmfEBGOb`PEZA>oC9WMx8KDS< zPr01j`wF@tgd08+_Kp=x`00OtovlKl zulp~(KiP*3+%b4iK9K-lSvWac|JxkYjhYaNZeOW4q*x@1Q(;!BT-SjqvQP|)N>F0| z9yb$*@8qdf+3xrW*6$-;h;yS6@5-KlJld%(>a?4faH}8i-5$ldlhk*u8IZKf`(W?U zVSvwea!*18raIWd!bR z&({VBH>4O>Yi1R%;Hrw|y&t8FuRZlK92wB!B)fxTJ>SC~))Rx6fKUP0wrYB`6wsw%dnXI$_F2KbK51OH!rD*Dj@EkGDhc{U?xogF(cKoh>}Z2rh{OePUODzg?OwlT9oOV+wlO!{rQCn#B$ zr;}k3TWL1uhJlw?{-g(xyoxGrxxj`k9hG4Y(<_C_mb$X?n@-icJQ@aB+Us6N>=bM* zw`o@uYLLc#3#)lWGg$lF=SmucCoKl1Bt}0Y!1XVg{Hea$Irz;5yA8wBrf@N4Y)#fQ zJjauEOP((lb)+xH#pP@pl+NTjvm5O0l1UXG35fJ8&;0d9x3~DwXEQCxDp9g*T%X_W z`27l*hkiv`CKgrnK;UR!&!|t0-0dHUgMm(}<)Z}{^2_at#sGZ5l|}25RD^`$bmj_T zjjvehZYjT;C86Bv+eUOz30d2Ud4dZf<0iSBC}x7`pY_d5VtYGmwt+Oq_koHT(N??`QoCv{l554m89Rwp0muCxwx#E0~@humC*zmL^>Orh;fTM_^mtw#- zh^Ym69dn+%J~!rX*j|`i>b&LSCOT&v=M@`Qc8+U_C1*Pcy&*vcW_0ghM*ClMOm279 zA}7#T^F-U<)$XGv$+4wH!jzCI>ggCvPhhHl@^rJyM^sRg8$7{nXOFJ9dw@m^Xt$jy zn~q@Uy+{wt9r|69UAx@Gpu^mlqFOz<243FYREkU`WK&q-g00*xpv)^hZM7 z`Udk3swOcQ5;(0=FY(oEtC*e~*{&Z@0CUaoSv#s5vXP*C!@~`cKS-Z}9$!**#ng z)3|Nr&*Km9u@6R{1)^~lMox^S%Ww#h%kIh%#_eLa z<@lC~(WTrK`H4axZ&a()&F)TD*&3JPH~}x%Gx<{Fj}n~}?LU!VZQk%VYKaLlr0&Ub zGo^TQa?XA=0g}U<2j|Ge@hxK2-nm5x#)X=jMA%8j?qR!CL}~W*kStrMF=22)#tBot z{HQ*$o?g@}%<}~I<~~39_DPDkS2unZ|6QpC2_uZEP_j$u+E+%mw@W|$`m6AWjUBuA z#X!RGG(vR|E|3z1*-0ylDmBCpRW5`P_ON%FE~5GSwjxjdFI&xsLERxKXg9_RKOJg% zbO|T{vgY{Sk}1CVz9<6;HLAFu&W84S1A1ejbBkE!|G_s@r5XIUpneUOh(N)e1n*rK zHJQ6b%=SRrmA$n#k%8nL;W7ClN={5Nvh*U1pX7z3aVvNKH>(g~+YI*0f=SVP?4Iys z0F^KmSw-&CGa%+h6w*NU79BN^tIbD){ufuNcKns&O`hh~nf}fnuq^MjI^C=K^6-AF z-k(ENbLqEJHr=B{@MiBG|2HDaljz7yd*Lq~0ospsIfT3)l1!)cpU+H+57Ubt0abnb zIxA8?`|5PWKHJD#VEab228+Y@(-f6LI#$t$!Rg?GM?j?WLS$aS;6H|EnjK}apcjQQ z|A%ZAqYgotgJ34V%+}&9*Ba>V?6=e7#qbztl*QsdR#ln+pC7|I2f@f;al5DEZv5ea z4@v;bpv=hdgZaq}G6F^r{>@b6Nr`WJsjt;B-u-qQYXQqBHvC@=3*n89Vmk9Ht z0n3o#c(s4&rfQ+Im>!b!k{N!{%zvp#>G1A0x}M7*s>I#E=#h__Pk}49rCR=CXlST* z&0I;X?<|wC(}b~;*vr!g{q;oB+_4AS(RZut?R4;a_5aF(8`95Rq%Tb}BQH1vZa2Mp zCddER1l6PCML{vF7OXmI4tBn4Fz#S6XJnx=|JeQ5gkTMoRZZ4uy1zUuP)h6&(odK} z!Amh!Zpjh6+S?*8Abno7y<>IOPw=KQjoy}?KJCsrmN;A64O%nhQaOLg!l7Q|Nb$4f zT#ZH=G^9{;dog$9PZEl0mrSTsZopB6=nSLF6dvA2fs1<3Q(+X3)@Msx|PB9SK=s)D&h}N`m zjVG`BK+&N05)Bt#4ayJZ?y0|!B*g?hh=Ijyq6xG>wi z_@2% zm*foQ4%}IK^1Jbe7|a7C=d)}8-k#~%0!yAxxwoev^SKOP!Jn)2$;cKQ&?sr=T&!jP zrOqjW`;LD4z(BZMMqH9a%G21P*>KTAMGrU48(MiH)t4F`$O9xvA%`6n+jQA zt)&sk(ed%D7Tn?@;YX%ev4S2?S9t12S+MZ0Ep{tGZZ#pGJj-~8k8YYBmlNuSUvAwZ zC#f7$m&-c54`r4JnkY^MFBCDoV<+!OsY6#PYbrjj79~Za=4JTQ`N4{2qUS%ehkL)Kmk`$=F5MAWfxmE>&qyki4cAE~@pjFSo7P875)B zbzM(PJ6rPPFZO#Z8TjdnXV|yF)p5LVS+}3;V;>^}tOU(glE*Z{awRvn3hbZg-|18d zxyt+S0)CAtwF!zY4eu4pIAEJk}tv+cI=L9|k>mwJI$ zQg~f$DJDQ0fAIJa+ouc~XArn_dojSOiMEtUGyo0zACdkL8(rzSq@|N)|DPh8QYS<2sbYzJ>{BB);JvM=(UY4qftTJt{!?pHIt;RR`bIxm zVqV*Tt@A?$9i?sfaO<^TUN9{aG=Q}JO382CR_zC`QJS(IiH=}Q@XyuvzbM9kWaQBZ z(doX*h}ebI!$4uL`ks!Sw9_k!6pEIULXy%*+$WySPPzO*tOwU=_0hYzT@2z?kCOU4 z7@qPo9#Uy7Hhl~LZxGFCmi4V{OQ)O8c0UlLdFFKtM)HifN|!jH|PAfwq=qPrQN3fc^au^?^LQ_V`x=-?irAMJ+8b zyS-u*6Hc+vA65vY&s}ZG0r1eqTir~A*dTY!kaJok2=s6S{r%em{YpV(QpRASl&!o5 zt14?ljfL43gyndZG5KzQtuG%RpTZw|jbc8Z(>~tTyxP#}7WAKBfEXsRZ-LGGB zL%_Wl_A!`LD=%Xw5xe|t_f#H4xzcEmD9B@M%qwxX_kkDTSf$5sUI$UoGA4AsPWry+ z_l={-+UHTOCjfQj@lR@_wr?H4c8;E05E2H*rM&UATg2CGIFlaK)_%>`(X9u%QBa%y zb(AB}I(ROy{cX{simSD8g%kFAJH_Uf=@I3{E4@mllc2+S%g!nAa#{hFwne7HbtgZw z1A~1UXws9R=dZF%U#j->{AgTB-QqZ%Xw72xmk0k)mbK>W-82=N;Ymd#X+kvcx@0Z0 z`E%WewO(#trqcb&Yu~PyV26O|Tjy;sJ&7cB)-qjtyt~@3Lz}}6f{TYwkARZQMEXIs z3-joJ?f#6#--BN3rhx(1N9^ZN#gAB@nlC*oX7(SwfU<1w#yK>95^&mB98Ig%V9Jdg z02k^g>!fW@lkiogkRcE*?_n*({HOW?Z*|~ces^WgbrP#h)58xz+s+p~cUc<2NgwXB zVqHq>yn=@7CgM#Sw%6v6^YgAH_&9afNIV&(bTT7zRSf!S=MDYQ1YO+w3p7bar_LrsgS-@>92OH7Kkt&@7x6zWnBvBpf&T{9?fo z5IxGDIREo&g=CaHc#yF_6!g9_E1atz%|DW2oJV*)u|&H0Gwlw$Z`XmoayNIRsobGC+uf-piZe~-9&>IaI6}Ha zqSoTR=WICPH5!2~Bj^_y*J}qvteNK_`r@}2)FV#VyrfAk3>w(7IW-=N*V;jz@R;x4 z5J^Rne!q8k*|)mNU^USuYljZT^Lpo{+>@q*6h(IxQOJkV__(UocN0A%*wS#)kBK1TGl(;Zs3X2uP@-qSSBW@+?t2Rt#mwRqv`{D53epr zR2){jr+fL1p^@pfxFBReA)TZ$-t{FrNOG7o^7{LS5^8kQa$>2(*Wq_xF%_pNlWi}4 z&&*)!`8f!Qmn|qC>5JA~%C?9S0)jHYu%Vv2(=Y&p^Xeh63($>ik&}DZGX@kg@3Jc6vek0oZSDatnwW+D?hX&%xjQz&dI2oOi{h z^JuDFhx`7~s>m2ni*tkVp!#$!sKgpt9`^#0z`Ix zxPnhe<8OQhMo^7c0_Y6Y_93{Bhmh1@JY?0wRUq8vI3@7`G#e=&2u2E36nYcVh5}h2-8^t}KF~zr`TE|)4hPV;k@AV}^KqYTtiZBvBj^4{np3Ti z`o&P1RRhQ%T|AZQQ5-)yiX#?)B!ygGP-q};sGM4?bFdluj4vSuE1+LtKqSbzy|A0? z8KfU3{?;Y!;M6{`*1ZMI;r~d+!B;Z(=27AJL6x@YsaPll;5mnp3J-N3$RF@2$Fo5e z45e5>@#jbqkO@QNPUGF)3(uT9cww4*|Ak&1WXf`RI1d~K6v&MykQf!+2WJl60-C9z z&I%ug}^zGWy-W8p7xfNFaA`&J~^)E&C5X8em!|Bb>tMj z82Q7&EW~mOGSUdH5|?@2cem}_Z@28TFI1c&8aDI0;)IOj*}8IAu#m`XIngH9iL{@7 zPR0eARc@#F=5@I|IzEDJatLKkGp{DZU?LK5$o%p;-m0p~QN?r?@?c_YaMRJh?#Cdg z|HbmqX3Ewe0nENs>E?>-0fc9H4iZ#4cR)XqGMhkV3j?abLWXN!lXbqSs}&>*)oW>H zTJlvE*bYvf7c#Qt%aTAs@c~e0tQ^zJZhi*B#ch4Vgy2@=L88$xGfl6ukOvD?)-$zt z7c^Nt+mur!ZJ#2jA_LD>UT1hlFW~2NjLiuw>#B5aOsaqm2$Xljw>3y zy37|4NV>CSRBB<)cHDGCtin+L#OBdD&fi)dKK;kSG$T+VYeo}#ECtuX#V{wj+m>Ly zRb3fx*33z7M@L}K=24&3p6!HoZ>No*$I6R2#!u^9(uLGznzgSi{~m=HLWD%4Y#*sq zneFu}d7cKc`}li!#y^>!OQSEoq{`JdUqWeMR}&K5is}ZW*d@J8n5RmgEg3cUq6#e` z!tkWNnwgoISNZkJ(8vEl2jQf3C#sGMBZ zb6Vo3Ofl+XHX4eErB}795A4EXuEiS~x%TNZGuT1BhguLh9HPVapO4Mj?=#$ulCQ{1 z+Sy|8d{cd|7oUSmIPWeTTL3jp*DkD9o5uxzdwk`_jOWG2lb5Amcj9)#bryGjU)ZoY z7jp<nRBsovGy*27|pkEN_F~s2w5}?Bxe^YA5>8TT4EYdi8B8QfJ;dMYaqZ(j3s? za{oMX?(6mrn#6tS5UY5j5RqG_gmg(-&b$)w2=>~Q}c5^@4@?8GfS|hWO zQT#d@ev2MBY5&DG3)4H8n-Ds~7DIRw-q^mydBy8l7E3#>n$u z99p`1QS0GzVU%9F_%a3@tUK|&4AOTk%+<-~JcKBqqFKcKK!A!pnP>Xj<&-VjliX}XG0Z|!V6 zmlRP>2a@F&uihFj-{XSuc^=pU#+;a&&UsUW0zaKUraG!BZ=NIqv80fPc@>o!UdB_&B8VKp+bBlZ>Hh3teWc( z=BJJoczZ1kVg5&dB$=2!BqLbNP{s#(b_#rQD%cgXTQL2 zuweJu3#J~wZ{H`~_*Vb)lJesg{bQPeKA4E*7a282t@$d3Y(M5o(epHal#4*HgN+4*z)}PlMy{nJ-gy^2P_8?V#2s1h&szr6_E;L+I#}aYTTd*jMXee^ zE39ph;4ZiB3?2_?^k@wydU@dC2nZ)bFv%ocO8_MA-EOuk7f}b7^1bxAaZdo(q@M~`kbK@~_SbqZ0hQqUbXEVr`%<;GAt!gSN^lLrN~D(8uTPGT;6 zK8sEi3X9Uq(mG%gnd#KN2=Z(|U$FEe*@g$ddOUCt5}A<-&chE>4*GIr460$niquAX zzWfqSUux7GN(b_|t$zQ~{=WFB7vIG8djv|5fG6EcQAk^%uAqc>LlJjeZQE7%r47Cf$B2gK5wDPticq!bHqf2SyCo#+z&I6y6EQ)+ZN;TmVdB%MR)gM7J?Xc`)!SCg1#RP6a8~cYOIFOxqZX@%Gb!ErQ!AQ- z6H#-`8_^NsDuun9}H*< zKesPH@k-+ku1lyQ0Bp3nVGn@KeTe}{$0I(pxtq3`XS0)9V|!UwLo5EFt@3FKJ0F+z z%#d-!aMnyCJtsM>fN$D;#9-|*z6IB|L0{}P1~MVq<f=c+_xCqz_iS0xyimxFK{|GTcW#ts7qV3Vrlw6&0m2 zI)H10151<5vQf}dZY8e6iUl}zdYzckb1x0#htGj~L7%+|2v=t$ph6+zMVJ_+8YrZi zo^XrA)yV_*6oc=|l-G;ooPAx-=?1GFy9?zJj0dgF4o224$P0gn(pTzhU0q#$iTQ#G z4FA2&@80%2a_m>U1JAPN*No~9%B0|GgbQ~$8A%^CI#PW$O;!LkHGsH~umFn5%Vp%R z&kAjG;Cmb>WVx2-em^{DIWISR=sPZ}1W+69Yq#*TD@X?AKiyFDZ|u=5vdoZx3-+t? z6tY+dj9wlPnN;j#_hu&yEEz4V+SvMxFG*)FR%O|tEEU#MmcmxH z$RFk#?lNDwz@VM9W0mS)trV{B4{KHbNrvd#ndlDMfDPXptR1-`6KsS)tM(rMP-Z!6 z@ESfI;?w|t$?4LV@0f;S=2XxhcWk**i#ekc7tY$m+;x9R01-(DAovwB?y0WCX*q!x zTr3p^1Q?b-mt|+a@+YY0`K295XBssAewUB>cU_Z7ebfo0zFd)fSz?qBcfF^=>8Gg;foQ#;{bva zp4DRMVS!G*?^3xz`lx$?1U$Ko*dz)O_XlR@B-+eF%ZssQ4TYiTJ+#U>m)6U+%}tRh zHD`22y<}{xPai$3HR_xnes9L;_HTk{&_iSFm(8Krq| z7)n(xZIOR4PA`Qv-YMyr=g&}!^6dNk-uh?tK`-6?Y29rWQM{rWvVOzw}Kw>1kd*2<>G^W_|7Zy!=^VIz*a^_ory z^l79gb)9tlo%HBwSvN2{yEo-My>Gg`iB?kPN#8hR!;w_t`!PZ*5bL#@mG{XN6rnG# zWqzt<-0b-c2Tx`-V}0*8*2O6n;ZZYcEnQhpBcg>6QHn@R=hrI;7oMwz(LRQry)KAY zd|EoH1GonyN<|-hv|5_fa|`m!A`Z)mquS81$du= zqSap&M(EETx!0eqD7iFnE>dng)xmzDu{d8EV30$N-n{-8eZGM&N`mU`{x2>r2L42E z!qSKVDV_7+vrc?ApaDH7da+~6OSp+R@+yd6+BR>Zw0lIv^Y8=d&w6W$`u3VToXk~E zd!`EDD=tN^%f0fh`O`Ro^+_&@UAe(l_8!uM+C!?eK=BzJ_3+J~4`>BSfi3LFFQ?HG&zBEPekv8`PRb z?`6s(dZZ`%Ms9@tX(Fu@h-VCwqdYdjRN#5N^&^kIvfu)a?(v-_oboE^PCWyNBYd7dlxFmaE@TB!#m;i3a8j5TwonJN)N}U&?a9Y9Al71 zC~rC~7jCT78EnIt8+}gQGOuiPd_K?kV{_prEww3DZlCB42GgnGd`@g7bEHXM+<5%pe3E7E#VxMk&Fr%{FX{N)0_p4Q|=xMw^@fe(-?7Pc2+IOFIG#;o~CoRdi z5k!vFbL5>)Ds6ml`&Tu_{bc=Scs&bZHAnRDKSwx^C;$ggrqaBzt)Y%13A<^k(yq$shBh2S}h9`JJ> z{9Y>Vk6I%^-OO`GfN(EE@NNaioMaDpGK=uObOz8Eqoc8m2kh5G3)p8~bp%hEyLRU$ zX@&E}z)X%mXFO=TGLf=xje~#*L5Gxc1jGL! z{)NEYxmbhemI;ie#p}@L+I#8&!{v5X*48}t0YNS;zPqF2dHh^pGAVlZm9sOu8>l_* zHPe1`zz)n~u&FcH&eb++ODg&WeL-Yek|jB6FZwI6)ow+WK3e2C;!E(`;)BKSv8HBaf{m|0VA=VI?EqASdbd%O}e<7sbz5G)@N%OtHFMKEF zYTEf@9*u)?o4Sh!mcb=CvZBhqe7tA7TdHbAmQ!Ge$?a^PvxWr~f00KIQ=CG{F&Uv*K*cT8*#rwR=G}pyh#gVgvN;Wfx=6CW=@YV_9j2 zmrmC@Q8dL=F*RtB;sK7}S0>GuWSH#q+2&`q+jjL|c{5F4y zQ*W-&ki1`yNcuWZb++H_XQTp%Pf%J z0X)SZ$ADuY*d=`>CFtM576F45hud5M%b)xM{coG6DG+VZSzBfKTk)0gyuddRqvC$e z2>-?LxH<*eoGOF;Hh(*44x_k)g3-&oiv3FQFkJ-qVOH#Y(K@MAxu-n9X#&Cfd^&<@ z^g4=9m*hHUv=#GpTe z1PWJ2TEGrd_pev{fqgzk7gSMxs;yV)*U9A19#h)%Acc>rqW_lS3MX2Li=(yF9f|p& zvT@f3&rNeGflX>65y|9$nYk4LOWV#g{yRq1%%x);L@v1}zve4n-HPk~9!!fw1dznw zk;aEOsTDJIW<>yuPJF0}zn{8z<4-9qwg@bUv^dDx-A=hO61SNKc}wVg0}c?F1Eu-Lvng9G{%uc z@8e@9Ig%{h3U?svBH_HqTXUz*|FQMXZ7QJFU@@H!Ti*;7+mWUFvs!=t{%s3vw=QIv zcH3JRK;7neDieTvC<&E%G{_+a{xDS2$#Dmf zq-JkZ!KUNXBL|2vDyY@{*`&D-SQw1gO46u}oPXWP<54EQR6pLDvL~X?{x<+XJ}-Y* zy#dGn^yHehx}CGEfg zrEpXt60@_EOS>PyB3 zV&xR+d(g|byVM}UdzvfmKOzw|ioDK|p8eMic`s4J$ZfE}KL>gC|04q@j!jNYApyy# zVPIe&tHUJMv&|+0P={Uvr__XVss&18IR4C&*BMH91Ip72s~WkU&z?Pt@rnB}`0R=# zysg%Gu%HNCjZMK{_?3C`&-+)-Qr=Gx=91yy2>SZ?!-dnX6+}3c*LkIPBgeA$*VzVty|=Z~t$f_)-o<*wguFT+{#k(t#H zWHcVRvkEnk8p?XQ>qLUv#j)MaMV-E@R2koQSFpi_*|a$L=IcK|GCy;%p|+8(^l20> zK=8d)jO<>z0SLShUop`ylW%7pb!FJ}Ze{^Kat-MRHsz z-(foXS5%0f`=EQ`Ux=TlLfl{^+hTvT6o{XrLi|CqB@_cs95&^I92Qo(5gc_!!qvJBn>d>DV9=}Nq2F%5>xfv2)fUNV#ud{U) zh7cN7pER~N%7D97rgc=fO~IV#PqF=R(P;pM0ME@18S?KrcJ7C?&D>m@X^CRB_MIX1 zH-=Hs^h`Aiu}u48{q%<_PF_N+&4UzDbbHGI<=57yO7m)CwdB!vCPuU|J<#4WfX6hw zY%NiP0H>6gMPTtGGGzirjm9Rw|HDuz)R5kpL!>=C^M~z2i&2ZHP7UW_xf3yn+!G&p zDr+7r_n#XRA#Qu@2=?+uke_UwQ*Z8Yf$x+-=eKm5Wkd~P00g2o42ny@FgPdI7 zp7{sReuMFxmgF7}Dh|N${}c3z9`o6a_K8Uj*Ri!uF~ialOQRtJG97qM5NEI7{ufZ{ z7sfAuHnpYb;0 zxgWfrArcfLEosl!JGXI}^vf*y8R+Xwz|1373B%~ONiy@LmE% z06A2^>&3jKoUr>7eExsfoYj|O04Hi_Y`o3a+1csI_St`H`S@HcTDi>uBVt-D47dUl z3_n2g2aEy~cZcQnap3GbySlvOMQ;hcci|4$pc#s9|Jn9C7ZoXb&-YKk2L@IYDBTbb zY>r5LHl!yE3>Z8Z`-8?8->fO?#z3I#Kmh#b$tI@DtNl?ss_4=Ci9v~pDonTFtqcHU z3fN=TymM7{HK#9$WTdBCd~90ERVVz3A-BN*j~yN?2MDdu%q{!I6h^nplI)_Ax2)Se zNj^Xt`p(flP_7YqQD5jpVwp(Th+uSmYx!NVes&Xq6Y~2IS2}gE0dp%vRyw1Piz6&j zBh|Q`TSw3jp2mP+SJNr8z@`-fWS0d4^#t-{kwOs543CUGBTBg3Nm zk}j3KMpbG#53Aluz3HO!&85wSA9YvJtyx8N2G?y$V(eGl2ko~P`?>Qd7kAjd_&oJ* z5aKvM=s*f($xK17`s5D)-@{8?bM+Ht*AK$}Ct2z<>_0i4f5EMqsZI&|py)H!e|!o6 z{R0s7S>1V!xqrPSn(7%`R~je({T54o<|`D7`pe@F1#wZmN=f5Q=RwL)t)o6$GvY4} zK1dHrRPx~$dn)DDpP+Ck$QK|O>%GLTj*bxE)aamJqm%i8UYd)22nI*f?Ww0}`-2Yp?~`n>McNs}U#G5OP&UlqWxyx2;<}O#wE&k}c!B zlDXz835+*IMeizt(pk2w_;6=~_se07TY;|Zj*7XA_}xgUfiSUsiTp6?SQ zC&JDPy`#}>Znj*FC?_u+uOEp+R}XCZy&ob#emjX{RaP+(&Z37SAgfpGFN@rzwIg-u zF@Wk5MXLyP#A|&f_1kLKJAneJi6~>)B(fN!qRX7tI(8JH9nr=uN|^ZACt^4 z+JMSNCAU2UPLbxuKxI)AnOY`~46aM-)y)gtmkvNNR>?;FE>LPNp5}4r5pFlA8$fI{ z)J{LtM_HhvnW#br8g~cvqlNq9m}z%D=Em-?%;3b)g6e0k>g#ir!k+AT^KF6twxj9k zzBZ5fj`hdYlV__YKw8aw8CGd520Dr&NSK;Q8pXT4BU9I|fJUIWYaor+IHvLCc`sMz zz;?`QJs-oCkt&x848gguo@`cG!tR;uqpO6_+5Pe>PYTSHKOW7~P-tA*HBu-M_Ru&< z-o`B~@AyN`0zPT2i>ME>3QKC~OI0#0&HPx@T-UWT%g-}p?Ji3f^P`}93u`44OR+RA z>Zd`a;RcO*b|Ymf>9fDq1lDD8zR$Hpze&k{q zX^k&Wp*MdPtQ2n>Y&hwS&J%uf3R4RZ*>oK{T6u;?u2S>ArkQMaf1T$31MQj%_%gcq=-->30=L*QHpizeECN@wqXdvC39#1KSk?>UsbL%> z@w==Miv9Rbs{-z&V)wEiHk|BNs_wOqeQoq<$sT%<_uOtltE#<2(?5oJ?$R2@ax-bE zFpD(w)<_yI5S32{I!#E_DashyY+;s#a7Sl<-aTCXMJM0u!h!>0eqd_)D)S3-laP%c6cuioxkj9jeMG}BhFdRxtd@;ab zzH4tvKBaD6(3<_l&Hbe+t!;Thb++^BFI?ZLjEiHKk=!!iBIY9hCMM124(L>48_*%a z;Ojz)x9KphVI!tyz|FSy;@t(15rjicYvQ~|eKbj&-vrGtH}uhW+<|;I3HJpu5!qhg z8$KFsqmm~z)D)tbAH6=6q%Wzyq>Lxcf_h1&WFI@h=;$b4&YY|d%_CW{+jE3ZL*l01 zY`#f-zak%7V2VqZnk*D^tR9@UD7C>^fbQ6IHo2|&&U$Iw@>lmrY^io%w^~NMre;MK zTKU>YHkHcB(l&i2mL`Rw`tuG%kp-W`c&*l1FX}7rI;` zWM%rE_{~8}ExzQYQ#>HqVEyEr@OeY)!aPAX5 zL&pFD@a@gM;P8%X@Sx@k!ULXd4St<1<@_JPVPChr>uc~=-2@a7YEt8j>ihKXA=!vG zlztR=W^_dkcmoR~wOo|b$i8sEFT{AL7QgwZzOP|Zl>WzZR6c;`k2E>p4ga?W0(pMc z^2Thv=o0WpE)FCMfYHXU297Q8Mh-ul(6t~f+epzF?=Ix7BYklUAy#0yjyG2)27#ddjvfE>6{+u8hze|bjnj+2QT8=C-?TgN{nKHFesZN_NpajAe*<*s zhRO1s>ru1ME=gmPvojuOE8HY7TlQ4j-?<#BC_Z)RrMuP1!0H zXk|LTYgD&B5xm)va=UHo{ZT5*90BTfAdU*LHug%S^!@5=1x^%6Hu1~n(MFA7dTxU; zRkzl%Wd$l+*ur?>5RC|@b{(g?YCv^GX1UTvt)qgjQbf7O;PH)|ky|cTU&LNo*J(YA zck3&WNUd&8E~n*LXlSk1mxX-p0?0n-kmaTM57wsp8YWU+&ZCN~+Uhc&@{;g(&Pa zs&&Wrz2J%souJH?$+XmGjFY=kwX1~ zk}i|d?r)acdfHY^LeQYn9h0uKkPnQP;;8&yl>rDgfSi|)X}6b`LMS)nPEd|w^SIYE z&GULIFWbX%^kKzupw49J;dOgwJ-4^{z0U@}yUnxBJKcAEDO)O&D}z;jRyZcz)t7>6 z&Z@D0-rI17_GKq^jx&2HZpVV%T>s3<$Q@c?XRkPhX~$N!^&}3j>B_}f)ps@~&n}NV zUQr$2%7`?YW0AJ7Srm01@MPETf0=>Jw9CyIB5q&*zLbg+zo}tNEk7PdP^u^~xV^^C z(L45cI&8tgr&II;Yll(8Zce55!snBmqB=j9TH>m(Aj#%!cYkyackSJU4n~@b5^Ou{}t@MQ1 z!9r&E;P-1U#*;hb1M>J5+00TBX_zauNe8k3gz|u4 zl{}rRgG=N^Q4E09YiWH%@XO=W_N5R z+Tzk2&0Ha!ttQXq2p_681xN-!lSi>0G!Olq6^rFdBjL0?dQ8PjT-d{mENax!OLbwt z(j1KtBd9JwFZldhxCK(P3t9I}&cE)HOpU!Rf?CP{9+2DyGKs=%Bqrlh_PGNmIuzti z{d{!#6?}i}fV*WrrJ}AmG@j<)x{vbSNqT}!UOJ=Y7n0`YFK_Kv8=Z<4r02sO)&ITB zE~d@ay5hJDGA>d%udVp>D&@1%jzw86InF4>(+%T!a~WKUm^=UZ+e1N5`&84_-v_3o zE1gCCeEJX4uksslw(S>j{1S%}t3?0(|8Z45`NQEY+0kO-V~KR2ApH4@K{tmwPsxlo z%6<5A30L)~#ZeY)NN<%Rp(7VLtmr5S4_kiszbx(|FB2Hog= zuX8?mbOlGWL;~qa;60rGrGhuHwkl<<~KTrc^e<(ZmxDzaHLA_;~g-mU!XK3WEZGafwzpqa-%bPICfQhvCYvPv;hMo{|pRD%kKYI5lVDa~T z3C>ZEy?CO>)DFnXeG2P3I%iQY=s!=m_5&60n*i+ex_m_mWvu4?hWYIN4zD=LC6}%8 z=ZZ2dLu-o_Scna)&c$#ku7jA1O2T(yyiT=uUVb!u)z;L#o>o`ZE?2tmBy(hfls$B# z(74;S8Pyj1JuWD6uE(p?muz{wz0}QhzDjd$wKk!;%x$lQJy(o+EqT?FGJpDPs~>TQ zv*G=I&ZS;p7~SEy`}CClJOgb-nrWzyV6Sx0s_dJ8Tzx(Un z*Z0rwpYwV>bDnd~b3V)av%HUs13bQ{s`q4}#jw49RW(M%Z|TGHwSd*Pl!ltV@|8lH zax-)M^)!{w1WW6|tnm17<@GT~_V^mFMKx-G@(ATFTlv&pUrrS+bN_XIp4*MR3pLRe zhvQ0{(o+MhD*ocfdB|iGM|+-$P}Z-zExS8lDRZZcWFcT}Kygw1=}V7(j<=oaP2l4& zu?t1u0X>Tomi<{LGHHEf#?j0HZV@%J{Hz4CDu=cf%gme?A>=y|4VQFAaeSspy_}ed z*v27prDuR#LcWTv{%ZQ3BA(>%C z5Ee@%bkf>Or!F@>D?V})s5PypNi?)6jLIh>F)zgVg-%3vY`8T`gss|oiIXyjW-$~K zImO43U*Hloiqe%ZYh-kS7QEhTaiYc%YqrPRY_5_KCw~O{hOe0^zHWdJL+m1YeyVac zD)n+UZK~%d%pfiS9IPIiQAn-}`5~ioM#aCWzWLA(d{@LY`j&I|VzA|HJ`G5`OA?&q zP0|Tn<}_bVSMXFaNfW%XdY@k4TW;I8@rAZNJ~6!^qP3#zOV?hCr>q1wuT)`*6_v<@ zzh(l~JEu`Zap^L#lrF<`3- zX^FfbO&!ExA+o!DzKc@_*f@^t3F8pROXUz${jYK8qE*%c6B9nNx>S9ESc>oChN1}kDg^@T)UmgeyeKL10k7VdSq6ZIK; z$4Zi%{%#a3Q)R9UwcbK`;sgmPu4A@n>8^%v*=bd#OTa7$%cWsuder>CQc!YctcJEIP$v%A<${DBjb)<( z<9LQl@ULw&m6gfJ;+eXWud#>5xHsoHa06P5#HyOk-uI-#Nd`$b!n;5B@1=XUHO9Z7xI!a#Dfudn)17!A%`2_V^+kI0 z+z9t;^(|ohhP3HQkyX*|FpV2ckA19fW(rWE7Hm&)Q_Ci=B_ufo(0bW9+-1XRROZXx zDiTtXi)dw*Jo>rM3e|mAd#~)<0t)S^0Iux_mFKpSCWt9@x6Of2XPahGXjeU8@p3bD z7ynpwPqm)@St&KUc)KR)Hg$M-+!2joO`8i761a%)9I!V;-sv&iB zwd<^)EsX7se06j&wMn{iJm<-BuDsk*?&Z`~!HX(2 zrJKS1P(3Doo9uGs3Yp}&T>mXF5zfpFOz?a=r5(&uYP3JK`D<1IxVs0~C8V~>0U%$L z_Xsm4;X3|gtJVO@Td*)i!`G}wUW#5WOwF#{yXqiV_D;2i5_6<6x( zQ+(eND}fN`GhyNT_`_GPRua^@fSSR9cJ&Y6rp(HmGVJ}sli&R0T5!5fZzeOKjP#iA zT2e~N{)R+}mcy&l!Tg$<&If})mVQVu@xG?_Wre z(D^{`eFwDxy!z!lg4);-p`6bnuPXHh8=IVa}-%H=ds2Skw;q*cg*?)eX z*jE|h=)mFPXnv0zAMTOrW{Iw|FC7zOiZ6Tk=5xdjN@#NmftLB^@NiQKo8qrrSM>bB zw$r2!mqJ0R9Y6E}e9$LM;BTq?RjR77&as6<=3bg)nAeZjL=G|^Ac7<-cx9K$4GR#x z*YoGK`_j576SO3LV08C3_V5834dmf;s>2Y(KeI&+DU}}9L(&a?_Tkqpciz9V=)_!W zg8ow>=DHIPzVVv=c0ZwyvcBNjs?HMvRlglk@HnN##wp0Yx-hxl zcVXf~vhvF@*R#p=s9c+E{jT!=>33zfV|}OMFY~XyjdKBPN8zHmA1`@^el0iwC0y`5 zSwQnm*eTB@?Y8yu@lo(K_$d@8FsS>js_sqqkMC1HW{gheD9`8qTH@Oz+jW<*y6Dw- znu}ZpgrZ6K3Sfc&OdHfte&_eur?1~i+~YD^mn!(}locN%jfZt!Js6S%$_-bt zzm^-S9tD}sr3BW}?bI!h4-z|5KBVI`#lAwkH$O4uPb-ci<*T#>*)ruL<&SH|5V^^w z1SfzfRyf#yk8bv_@*xupG)x^`d41_%6Yu%IJ$zKsb=OQN1>;H$SP=JFO@ztB1&CL* zcf~5b@YGwt$Nq!U^&#sm)O1=uPhQnuM&5vgCm(g!PeY7T;kjkVSF;}R2rzlww?8!a z%Z`=$ot$48fwmaFju9ZIX$z(OpWq|Q&<|Z)rEFl9Mm1Dm#W<*CG=t?MM*MV|bMN&N#Pyxphoe_3G081RG(+7e zZxXXuuGd_irji!bXCo?RDjs>)yAnIKl2F^aLDjD*;_CN=e=wQVrG(e>ve-`=?o@ ztJ0Sn?G%>F{2sHG_q~>^I^tM2Y^kNvssJs_(gWJv4i(YvG9<$3(Xn`2?SRjAn3K;f z@HK6niJ*0WsTMHE@miNPqRTBB!>ho655Lxc|J0+4S6S_8IW0P3kiK#aT?Z!@2fhP6 znU6X^$@~a+5nA2JI~NZ#I98Pj-{DFR+2Z|+2xf)ZpoM%Vis>XZ&JH=ig5$C;(bVlS z;G7ByVdywyOepn}FJ~H-M5BwOoz=`<*=wKq-V*du z&&KHNe1Y*@aBU;Fp_RnlT&A(`&jTl`b1*Uj5u@v#BGuT--@B*Z2aK!UC>$ zkAzFqoE2ML=yPe&E{_-5C_FA7DH56(JbCtrZ0i-9c5(srP~d7t6m)U`4`mh3!Drf+Xqt z{~uTJ?DwMhXB|ERJ#el&icp)N{KOr4#hXzX5--7*8p0C_F^)y@%f}l3sk-rO7Xkj7 zWe1x@_tt?vdmD)UB0*@~bs;d3d?MegD>k`B)g_Wd`#2XZMYOWZj846_4Z0#OvVcCd zwzf8ErV!(H#m4$7;dr#-Zw@SH;w8TFLDU z=b%Smd~1=H`D|U?wQMhg3EYL-Iz6g>Iut5;$EVc+225&pq%Waqanj^rb3eVJdfju| zD9?ym?daail;rJyvO+ADxY+xJ+cbJWurfM8Fyt8BXulr`5fP_%ZP%9JP-VzM?$k~6 z-$o!g02t1N&fnc^=*1{{&3Bx*MZm}$7WcES%2@gj-LN6vt%GueE_5e z5dHJ`aoY&qEyhY<1^%6}lFk3!rR57Jws*bVf<^62m7WR%@cM)U_Np=0iS9G(hfnf< zwSaD*#2{gM&R zqrB;TLIGcqA8w(9$i9+|EkeeJ&=5o7a=gBR-_oV-*VcM+)j{prtPk3yQB6nS#K=2p zn`Y-ud*HE3smcdaL<8iiGup;S7E1-}*E+9`W?=X3x`2+^y^V8qjvdVu<4pF6ay%O9 z^>9}DRLZi-_P1wlQ$Ntl4UZlvn%?{BN_=Arr8^g{zt<`SOJ{lxs__3h0P#NXqINz6 zk$dy$*R2pZ_$OUxAXUIUsHIu?P>nysW2sZV=;VRG+W9VjxTDWNSb_3A5BCrq^J7w* zQ-uLJn zk_uIS*(<&TF_wv@LLLLhxjYy?Z#nrVYC&&$dsGE-+VA5R z9bH}2lMyjQq3J^nym*PSl2ZSToN4911bGzU@RWjd+I}|h%uj2V z;Slda8HG(JmLX_F(~z~#n}6sUZVJZ$FZ8s8G(q!{@&MV;@g%Ddn2PUd&g zsItM1PLkHiy0&Auw| z=S=pKeDHvZMNb5J?F!b#U9l;1;;p3!m$?hNI%b{{UzcJOzD|rW8GbogMFqb#`aWF2 zfk2DXMo`?N6V?%s$UMVAyqGp?dCk z&@v(~A{g^A#(Y-cyP`9x+}0d-=aqkyQjTCU$7l4zo>f!JM0Sy1)MsRqKRy)hT$()a zB`#D^&B6U9qsj~!CjS=(7F@GB>ev&nGin2|zD4R3>gWOX7oxtI(B%AQ zkm8+U*(c0S++r3Ue-_jWiug0fb538sP@ZD4yuR}VTGvIfptdoqiCXr05Rtho@*`QM zj`KaZy1}1}*1Smeh`e^FXC+4tHA^xE#6}~XpPQ&UO?X4|jf-p)p_F}GEwfI8N6e2^ z9a*EH={Y*1KLG^^vPlK(F8sATNi$Cng$Kgb>**_D9}kVi@0GQN;h)xi{*(>cc$X`b z-=_FzshN85f1U;AHeaGN0E#t- zm9|8z@F?z|eQ%X56S0ixEI-J`sAUIPFOm$TqSh|>jgqJ@7T?4i9n^xc2QPbnrpryf zx#W8;iRmr$J_X%EkNM3}qo_$zgz(^YG}f}1Y0R8)n?40ILi^SFrskU-6Zod9zpG3) zE#$mu$F~6>Rq`*4(jD%G(O#wTwVp}fG(Xf_>1nqlG|fT9Q&b(KSR$!fT}@#) zzqK|hV3+3q@Jb_j<-LaTPpGL+d})}Ku{SwAKgfha(Q42g`*d?yHxl2_<=B!lR<|<* zU{_?W*e({~uoB^a48A22hckyx1k+@G>_PW;k zb=R4!C{7Jc*$}WVQ9~KQKih}>Y;}aM?!1F4PK=vd5m@fCs0rTO6YPhccFx6}cMvXe zv>yjJ@;5E<)>r|aLu2A?hrq{##|Af_;_zs{e@>01>0_X-rIbd5$xC8^W7S1_^iz?f z%o4ehnj6Uk`c2!OT&4z%>;OTa8`+t8myeVIREcvi`Ow9Fz(M;y-L1sB?jqzG$XsQy zMRNk)Ae1pnt~mR+CA#lzEJo4Y^bOrD7CCe|N^IQLR9{**qAf#~bb$bum*+_kH#uBb zHB%pyJSSg8J-||AeZ|(H9b(s%W)VoixV4#_fQl`~0GJWf?BfI>|Fn&@k+90?8sAg% z^Yz*Q>G8CMk1`k=x2s03YGAj-b&@R~8{QH0X(s*g7>hN#N@=9a zg@n7<39!2ytT6LvRj1})#&Zsjs<|ZbUhJFClNg%?Kpv*)U%jxG&~UjhM)=ivjmT5! z?|*^a4rOhmH-lc5>|gj=J!zdGJk_J>Jr+n@L@;|112g(Zn3UR=fnd(lxh{DlNQ>3p z*m42c27P|AaJpZ~!l#9){*4>-dlqKRPltcB{h{alX09R*`MfxyffK7#0 zd7(HuWCZZx_N?&Wm)>Ee1igo1n%xRkKg;8j3TAC?V20zVWp1=WaR}`kG&`>6abX~t zE66&PHwTmq@Z^;1C;4;)C18Cd z0Ha@nz^`;*hec_r?#+AU`#lVfpS9O+X#9}j@ze+62=8_G>8d1iL##fA4kLB|DLcX< zJ+dY-YjpvNpZsQ@CHf`in@XbWsdhce9(jw)_-S+t#;?kllj*N$`@qbjzHpAf!w{D6%2tUgA6av>W zy!EB5lGPaqa*O|z`~LEIJgpH4PGoVNV19KPlLj=otLh{U3oeo1z%L;2ovjU^y)75qUqcQr~{1Mfn7AtYiwC5*~DG<)S|2#ps@s$3S(;b

njB&NGCdKCH zb0M!!cQnw=?rDz-+N7EitJY>3UQVY2Nrd+;Pp8#dti7}Fm_d54RW?^$bV5f9shImJ z*{?Ojr>h#@_g)v(Tpa-)-)fK;*;5+A?_BY-$s%;s71nR1uyR*H`KlqphQ3 zLsaMtpV3M;(!kDVl|uo9)KQrCljE9QX{Q9NKU@doO15Zjr##n!O(aMT2%uiwzrddK)rT^bm=OUlViZ`}(GRr>nhc&F)F~QTK<}Uo|tv zY%mt>V5KYL&xOl$tRH-{O_A+^eCFyYmnN;il>oj&@44pMOZ+v#6T=s}-XHA0di*y> z4H>Qjr5eoHA1e#1eRiN|{liWlhv+n!1egJ2G&jNO?JU;QRrI&?LH;z3MRMht6x<~T zwqSjjxxMCeoVwN|DK;{5{qpW@NgV4v_|*DWzJ{j`15hvk{bdmqhU>4UJs+!1Y~RHy zROzd+g!4*!Pd@qLn%P_lR_5vAVVX++AGxRr10Stmb3LPM5i%kCXTcBWa}rq&_ub4O zy+Pkr!~G__qNo}$>s?6A{aAz@IKNR0YxXQMXcSH=+qdjFX`H>=TP)+!%Z_b zkoCp`a@^z$CsGNl6u3Kv@(^ z*FvAMp$CcFdePVQ@(u-lt_s^30h( zWVq(+wdzLM;3Auddh_OQNu3FhnF|bL{dSc~$w5eEqz%e4p*;(QQk> zW5D^hx&`Q9_GSk)o4_!0@67w&Q0&Yt&i_AkY{nTu8$vAi1NGhr$KC~(74EpKu6v>I IH_PAu2P8dV5C8xG literal 0 HcmV?d00001 diff --git a/src/tracer/pintool/pin-3.13/doc/html/pin-debugger-option-pages-properties.png b/src/tracer/pintool/pin-3.13/doc/html/pin-debugger-option-pages-properties.png new file mode 100755 index 0000000000000000000000000000000000000000..c73e9a1c0e000c2f7ed9a24a5b35c10409f4f421 GIT binary patch literal 21093 zcmcG0Wmr^O8#W>;V1O`yAd=FhgbdvwF?5$oNeB*If+#r%h|&xtF*FiNgCawhq#&U~ zi-5HBw>BQ%_q^Y~@5lG!$Tc&2uf5iK?sY%+6Z?c~B9tx@(-7m~;a$F~EU%4+hrfe| zcczvQAAIw3J?;qnIpeCWB#T$lOS=R<5ZKD7%i!UaMPEF;e-3;mdaP{ZiidaQ6ZGGi zHs?GmJUp%ayYe!+Ugj&Q(WNY-W?wdy7=nff!-?PEDabxkrchVD&dDGnZAbI=dSF*{ z_BlNwj%$`fuO#K_oo=lQp*BCUG6u~L6S3Z8iLw+sruaJc#bM1Sz-y&pXTNQK%yV~Y zcXhRKcVy3Ow@$3CVj?yBwavY0eq3_Ja5HH-Yq+T`ce{hknzF+KhmJI3B zKNoK$eei7DOvNCIPAby9yLSE7c5PO~OW`=-Q8UlU@$qq`#$VSi{vDTekty&jrtx^` zQ=fIbt2xr@Sn+T^%i>EP{y%fUBdAsV*0`5sa1vUTZa|yV9J8!L-{3CwuMtE8`_jI| zAGq}P;=*w4N5aDX>v;eBGaAn9NuO?jE)6(Z7M}EYc@8Y{&uraNKm4#V$#w4Kit3*8 z`>7gg_}^U^B|2PD6{A>~siJ@Iubp7~HOjZDi*Bl!x%EF!At_BALuUSPUh{kQcl^Nb zq}9g)B!{CXd!H==c7?Wi$#j@(uSu2d&shX~;ydo%J>2x63g?KClh`(B^XSE0!YJ8s z{M{SbZ#M!2YmbiG(j*#<)|hUyxG4Tku-L2>bE>yH_{MxXm;=SaYYYEZ|9;@l-IIj& zo}*CKf1YN&VdHS}iB0lo^z@5RpC5eb(;^X@O>2_Pe|P!AW5PqsZoP%uELSM&y7lOG zy5DkXqkzS1)B4uwlojOf?D{_{-~T*wvM|BKwGi(Zap>zY*X(mV>dGaY*7we52K$1F zNm(tN_D8;1--<3;V^Uy*yR`P#=bOEQ%DLK0cQ5@#*C2uaro>vn{O|Zy=WZ%5)N%`t z(gT&*q75b{%#Qf40XFCA>ch#)d>t-MU7;tlO$+lkm#28dHqyGbacs^n6Ujtc7W&f0 z^5G{7Q<#fXx8uYkYgT&<6Eohz$xiVLOxsTzIDP0GfOISOp8hx!qX3gP$E8Mu71^Fd zTE&173g3sdca%<6?W}(uZ|mjdGd1iu=0du7zuG1-L*~4jJJ;dDJGZA$o*uyf_C2io z1YWCybZT6C=y%n+jI7$En_#_(l2Qr(&w;@spkeuC67YEC^Nh(Z9a=uVP|3DbyQ68W zQ@Hnu70au+MJrV%TOq2eV_x4%Ea~?m7NmTf_S)Z3>GvM*hIEy_)SPbkRW>qL+SWVQ zc`Q+7no_I^cJi6)+#tZ;;4Xb6-y3fIXMU>hUzs&`4$O{LY)H*{Z%QSZ6#cY$*^G*T zPAvrJKw<)U`Ls00N!MRq-!~dv{VUv8nYlKml_>$pD)y~Vn?Entr5%0a-P;v05~;G{ z>U;8d^uoz67oy+Asq|w^U;Ee&zF|!lHvJzP=DD#X@|=QlHIUxMK&5ZK!)%qFe_lS$DAao2mIe zOM6vfK!Jm$e!R)U`x1BmQsUE)4{N5!3DLA7$KiZ8xJ^rbZ$?{r(srrbe*o<)aah<3 zDUTxw=Oa5?@8^!*(_g1JZ>Kk&+O+Y7t=wH;P5YTO@iOqB-FKG35rj%MY zwX0beO8f`78En6zr1n2dVKC{n%N@-MvolGq^hO+N^}9<+^1TI&OfFk%k{chK>*tQA zf1fj=tNzJTp2kPE5`HngqDkQ-I>Fe4uDwFJwZc1qv5N~}H!mkaq7gjyq(9lF!N`4OquXz=@Lk;Ht$Ew-vomesdt#kn{aUWPz1Gp~JzB$?x2sfQt8QTi;sX1PuRPej zCSUWS`mhMyURA}v=OteDo7Bnr;<_c9)NX%S^PEQMQHq+pRnD#TOiMNvml39`G4J>e zkEXf;Fu8L#jA$W_?Dya9pO3Q8JsM=@(=(SxaxSni|HYpw<1dSn`r~ja;ig~hs@uF8 z^ofa3YY_qFE~U>Fy3e%XIc*jpI>TFsB#I(q+&cB{H62)jiJC##_+ za|zD%c1MM~BXxfUP`%*6*<0+(#{JjRTnha#J&F7!VKDi-E?~ppA98lyPcaGD6Doa8 zo$%KY#2<+{3pYNRMpFLWEQWq}e5u_py+&w036K9cmotRGc{NQ|0bZJxvi=_jm1~Ne zwYl#dSMxPZ=U;ApoWL~DduFPqqHlz}Mg}>sDrSG-FDbvoLw)K!^Y;@8Q3hP%r*1OA zUoVXMB>DF!NdG_mDE$cKI$Uz~B7u)$#yAm<{LgeUZsYF@xTd0*qX)j94V)q+H5;T? zwowr&scJgD@n_w6sZY`Owry=-7-44q%S2?qTZJ3fn=kUIvA&LsjC|dy6h*$5?p=wN zeB$Hk>MEM5!VSahxRRe?1oPxp#>3u!8~Wi2K6~%81z5Qpu%2=dSRo$C8CWQnHDnVX z=$faYc&NcoIwnjOO!?;t7~aa`OK71h*6fb^9 z2*a%cZFL4?KRtG7iy_i3XYh%c0j+`1_-zuHl4~=|W#D{R1G6a>K3<@on3@{7r^9j8+mM@( z*XXAS9HLO76LlF>7Y5VAwsDSRE9!+g ze}n){Wa|vl>gL5BT(zQhH8y#TV=Jv*-{!`|7{e2^&jrUfaV+;Z5c9%Pzs^einip=` z>*Ok}-x+r(ZQTFS?P9Eno^a-E*cvEDS*n*9lHb{w_M^l&s(7AnC&r3ULE4p=Kr{o+ zFW-@6W1z1;zv=z3TEz%iBpRxg_fuJIKZMW_#e8S;eO1E>imT-Jmo~|ru|EHu_g|gr z7Senhe`EPNcXBD(wo+cr%R5=^cO0?fFozez5d;B1&rXyjuVa>j0DZgK#J|U^w z?pkRPEJOh**dRwkD4n4W_NLeIPN5$kVv+1stHOrSQS-9qIzf#tmQS~4HHS9(uD)1c z$;m_U1d3&IT2J3aS-txzyt?naqjI^y{rrK+6bn&DI<7Ih9zGTu9BbS|FVyxebnV^% zR;R(2&_s7)&Ylw3B6%R#H<9k^yH06GC5aZU`3A_XKJ4d9X4!#HL%>PEkkdW_=nhfK zaKeh*YWQSGi3YzaX9r3*5NM(q(@E{b09@Gcb0};vpWqd6c0|Jr&u3${r?{;p0woim zKN!iSk;e409Jd~UqxVuHtnvmv=_2_V7~9Hv{P;VBG|aXyO`>YTrAx`v->H6Gag5<) zKE2OxUch&EHSWS=)f;nHeAZI8gRjpK{v0F5E(yza>Bg!&vxsF&HzWHoubuzz472PU-0>*1>3`i+leFrZV?it+7-} z_jVGOtUdXVc|iZ=$**rS!hVbAVHe7jLq9NF(V`(bBNV8Da@Dfbq!qFw^9Yj8g^zVd ziZ}lr${*a^>)76o%u-4hbD3TGq(Lj<_3PItozHCJ0bQ&SEsQPob80eSU=*#DE;&BW zRrXT2Sgsu{Rs>!*XlR^*y-hz`z_!phrjlM&5<4YY-KXynF=$|(US6W;E{Z6DfBpIu zqv34h?}}^r+5UT}jXuET=DXJaa44gRDO>CP^1U}+Q{RA7W$6@?2VoU=vBBWD*l zJB1^C+x%TmqS^yfy7iV`UJveND2Z$1vc!hxC2qgte&g90n>^1}-t=BG(wq~qdU;I6 zBiA)_;IMQ)y_?%fkt<41lUHKiLs*sWj>&D+vSWwymna&-nA{|sO=-HX_L}u+nJn;D z=yX@8FWwVm=4ukcR(NsQJldj!**j+%8(BCsSSMW%-zzUVX-y1oMU^y6M_DZMcmR;&)8Q?C_ms z=XclxHfvwz`;$}MUl)_r^DxBA^LK8UtArxvwTA~#6@&N3HEHwbtoV(LjFS2m7^|nA zcZzj~!q|8Prx>SshQxz5HiHX|GEu?YZ7EYcU0*BhuTOS*I#iiwzXvpUcxle(`O=vZ z@|NL`%cP8bw<24LLiDOMZ*a40{Lp%6c}`$aJ-!+j)WRf5tawaAy%e`I6ZtLfY@~e< zcMr`m^N)LJ1{K@NH6ux5g3mR>S3OwFEBN zHADOn%o=gS-MFAb=`5P7M#yst6$(rAnapFHvib0lk|JF$=f^N5I@I82`p7l~`7HPd zLAZgwtfydIcpOW7GB&)>#Mv)LR?b+5cCCF@A`@E(>%+P8uO&9z>kND8P0_Z2x7k#3 z)953!`L)dZ`#SA8TX)DGT;sq#avAi{Ry~B+{)I#Yn2futktx!q!f4DFDNFodh0-Y0 zC^X$hRlcv`prJ}~{yw>AEiuUpyvT-ruBcHP z8a;IT69tOHj0;Bf%uoEu2rrkcXO?MlY&gr0+-2sE4=u00^G%|whUTj1HiwSBCaos} zyJKn9aLzBA9;0|%OIu@Y?}zPH4#0M_t@>zRI*Ww4)r(y?lsyzDbW!i@Y@XZX+#)_R+&Xv8u z$O$>WDag5^s4Al}$8wuMR3_sYZWez=3++p9A)IiI0weOQr1p*hWlWs{9@g%`;v-&G zlx2CbM-fu8s5R1biJZL<9{=e}1$>vzTsXmsg6$|OGo*{@DNYc>ysh}2_ulaJ`mE0d zH-y*`LQb

C$%Cv87vd*qXIpK8+dhrL{9d{orahH#f|q+Fc`Z%kZ^kFP;pPO-Pce>AE?J743rw9UfC>CJ!r_sg3r_x5) zGTPQOtPC>wnp^l7EBFyp=X!pK77|mP1oryqgY+-AsBDnqv?&~gl=$q3PB!iz=Rsf~ zt&vfLGrVHihnqN=4XLTjhp#Uv4fFr@eqO21tFdlZLf+HP9(BAWqXIpOgPgq>E_MT$ z{X*Krt%MO6+t!!1+zZ%qT|Cx2Ib_0>wS=L|eekU*+FY)gAnC-*@AF>d zj5=OwRi!?r;;YmR(hm16VgOoo5M?PzWFA17$C7gpn>?OwqT~C)m=XL|+ zJPBP*HFqAou&{97Q@7^)H*?tyMD46INk=QfnYYwj9?h&cV zN`s$m^iuj6%60jX=kc%T!*-J6eh0yYd{d!rJ6WT?jpXZbCiTc}O&i*Z5c32Vu6x6s zCc}=F^>&$Xnupmy<@ww_HQ!(eu02dBNlhP8%QZGzmf^pHmGkNrx^$Fnzi++z+JrxKxjk zRIf{^IY;4aWLCE-KR|T=!Kn&(kNf##C$=U7z8@188%`>X-1kh*QUKUIrI%A|?*6oM zl|hnGzt0az!$S#l>o69FfXOTUp#iR5%f8e*R4^r}@>l#<0Z*JDTq_CjNw2Y zuiLBDgzTC7MX>qBa|A!&XQ)4kPT?1j1SS&=6~PbEr5^FFbmOY~@XP27O;JhIJw1s^ z=GkG|+lZjIpt{FrOX81F+~_AVNxZF zlJOs_F7%hFyBcXC^$iSE8?rjZu(*awE3>csL?QKTeXm%0U)31AE3&fbRM-!%FTT21 ziL0)&7@ROp9OXV320mDbJ0jt$pdXhcYLNdiN;UnDQMAxhcSxwgAs0wR#5vRSSu=&M zcB-$kH?8k|O^6yC>Bv`G+8OxBsZ@qkJ zZIqBSSk+&=WPf?JZS)QV;;XsK%gb4xABxjaZM;KhloT1BeYznVw+o|ArbV@D-aoqg z68{Vgqsw=*1a4gzii`d6giMYB2?&#oJn@r*$r!2_zHz}dUjZ5P?XT2ACYRuV4U1V%sVG?&G-Nv;Z!SG#Qh2Y3s4X%0)+DtX;5!T{A-VNe15CcIXrV_mbuj`vg*c(T!?e!79CTiJ?!B-3( zHFxlo^_bnj+P%JG?fwj`uHy!)36jG0pk0*;QXb?4`Br^|ZpO&&I;VyN_wtypwVEae z!JHK|dwFY|%8gjxF=2m5i!0}f0v)3NhA zC*mUNwPTx38EGJb3!zjuocg=W#wd1Wqm^imC(h6)aE?_D8Q+yYKn^irFY$}a+mhHA zDGNhQG(jDj6ASW(D{GAG2%c^&wDB#nYz+bxt|-P^5BT5X#D&HHOJFn(I;F>-;VK6| z?_s&u`rd8na8JRLSr;Svq#)n%HqWsUbhe4O+NZIRqCX$az6RZ}K9@W?8GZDxMdV6;E& zJuXf384pqQD9GKMYsxD(mv8*W-TUK5!Nv`}tJtzM^W>Z@r*376atp)5I~4yK94I?B)25bLctQR*NmX(dyxX@0$6LM+Q05a;PtRZUDmNUcpS z@eGF^-;24M#KPX&+NzjuL|ba>)udia&NHGW0jvdI78Q@d4s)v zyWXG3wU`G{1evdW<8Sj#zL-JWtgg5icOm8b&k`Heixh35aYmE(x4rTzm>Q`29$cPs zdf=Jxn9FgcBl9F#%-qU(H~!&DsEzN8dlVO}QRd{vXZs(1=N>APN&zqiEHEhAAoKmy#13j<;wtgvW*^c?< z*Mhp$N!;r9kuR2WE*kbzqFyW=oplqNS^iab8Li1tlUsS09zPk_pO^uZtA&Ty1#ENgh+L{bBO0KA#tt1*J<@ z=;HxYRsb(za7YuKON1e($L43i^>;Jjs$=OXnzXJjU2imtu^Su7%DMYJGOYmU!5^<&G41GFfTu4+Z)W;S5C-c5zm&h>wZ z!UfG{X{r#f$Y(L+JbRcMR(}CO>(#O%du;!R?VML*^a;pitNMx&w*f&Qj|mAFJ%5JB8o*`M4)j zGHw}|rGAx_QHOn&@3vRgLfcQY51RmiMr;;=(_IWMN9kmSv6g2G(E6BEnPTnmy)ND! zT+)GIf>(3Hc&}ay!+Bw1QzGhAi|^HX0fvw)2VEc1Fif8r zeCWNqE;3}?tg`Mhc*6Bqjx0H#*{--#>Infp`$8sYdyVW*6T-QPRts% z^O335TKK6twA5ez^j~~n>A!&O$hj%Ffps=>qi92YN{x=>RIvZ})c`$2sCgQ@9x=SE z1bW-4DE69jdM5nnOWd;kIg}37T^y7&Hsl307+ZIDy}c+-Rh{k#l~q2aB2`4@MLq8} z!{b;+p1{NfbpWYZ+?9Aze)WA}fpRC6LlXyoSBacQ#3f zb);5ghOEgN^UIvpm5*rB^k;mp8-gv07lt99lxKm;V=yx1(<9I6$VSAFaq}sTT_)xd zv~nD%J3*NbGK|``s5~BaNz+zK?@#^aF4q-_3xPYphARRXdFVTJ;Fpp!RJyN#xI%Qo zTNh;dpFRb?`M&2ze(Me z?;bz)#@>0IJDBO+JYSh4doS5{9YN?q8lo*Fqzijzrdd*v;>fV9UWx78i{T$*DW>cQ z=h{~xUPVU5hp^cu5NHh0vQ zD!7x}FS9SJu6-5k;r6BxXb^F?GTY(r;`dDGcMy}Si*?|fTGr3p_jUN1GFcTKk^xuO zWMPG-vqO|!0v}we`~?yQVY8pSt+0O6)g0`rwcB@GmKEmouLh3^Ej3Kid#`xc^Gr3p zZwhrUk%wVi%@l(nn|VREYcKr=V`hsDlV2vUCH-6%RhbAheOF$@PB)0Q2%q>}UyU=| zo>dM5X89rqwN7k3hYD8G8h^3&Y_(yn#W!5ZnP=EfS)>A2tSDCj&m_wB|M~G<6+Slq z2FITwYB0FX*3wc=AYuk5hg4&ocv2+(L6eq+{gn(m@0bX?v=Hp z=2e*T;fPI7gQSzp{zX0Q^zy3fO3&CDJ$Z9{*n73#>aat5F%B)J(?WN+H~8sumZ!K& z@0ac1pt2-@f0rxjxCSn$0ys>0W^{B^DeJSBc+}G{u^^F?@41(b zhSlnLk9;aG743Q&0 z?_1-tWQ)hpQBu|inxQ+2`P%yZmpC32~j5Q_f!Wl-O=dVLfWAOs`o&HFf z%bxiuZYboHG=zY76%cQ5`V(tJ&8!1|mmZXA*+K*I2Bxt`?dG>+ zdMYP{%k{}et#Q>~t!Qf_Lk-UK=GcL)$sh!LHsQqOr*31dlaEGf9_TAwkHEQA&g9(z zwm1_Z4N0n6HD-H4C}aCyHtTecYUZFV1!)j58%lzi z&p++W?mox4;Z*E#HMb!^JyWZ1;k8lD_-e-!giRtGc<_*nl91e8gJ zT`~)v;kaGiIV6gi?iVZm>!}%MQOrGwYOGvbT$_91L)pf>x_Uaa+)5Sc?(COQgPFZ= z3ZR{4f=c%wS!ivGR9gu%RdreLchT;=sAuHEYp}g^O@PAI_uvJ$iHQlQeIi)dMn=p< zJselYY@=_8d;OmBrTfGdda)&vDrk z;X{`p7YB_4^zs`%Mop?Ss>rFmD9^(cHp%t9i|KW%waec_=@pSb-l)?;R_(c}Yz&py z?XHl5)?>b~c2@w7Fp<Zd0Fqa$beyA- zXUxC#OS-B+N2;FyU=p!-LvQbScn`(*Yd$y2HjZXjH=~4}d~$s$6dRv*9&6-7r3rwA zhyRXru?9E$qP~==iZHp$KIXd8lwew>oidV% zTsE#Q=tURs0Ne>uIZ&5Q9)#kG+S&p?CB1XlvY$62GU_$02ZST8G&Bzmb1yd=nY)QU zODZancnYTky*y_4(8{F3?8Mz;YG4uFoe~HxpM72D0kv^w-!CgF)dW5c%K0zoCf+eM<8-NI_RleGNn5 z>DhqG9ZH8Ab4CVhuFxMVlk1ad|LH@>1~ zP?nSlZED^DKV&8W-MBHSLk@%i$W+=nVArn+rd}$=YntdGpP+rP&7^sXK(u_8qQV%@ z=(GppvimREfZ6=dulXa{TdoSc?l~5FQ=_EVr6*K_(m-%A00;%T3HA&DFI$tTS)aFqcg~o>fC@2dkjDSm~4)U^2(^{^Od0Bxyj?VmbwqT0;z~3$@Ne!UJ z0b9Pyyh#czHwO$Ik4kSI1QeS+$~FWt#80Iu@Ef#gmm}juq7Sv2%dt<2-qNKU@NbrD zyyHkQw-DAI0og!uB7`29qxitc5jskBW>TZQ)L z^0^7O(g;W{!Pq_`GF2dY;)G6q?%>ihXBxixr#a{|{NIg@>J?gqnS?1kMm)-aG=7{5 zgLXol9KzSpfAD3;8E^Vl@P&o-wXus6|Dl}Q6 zI$X;^5heDc%YgVTO|;-aurZ{$*i`|OLdj8hgyoX#cPxj%6Zz;^MLoDkEL&K$)>sh5*vY+J4ocG6ew5h_@WX&|;qx_<-n%ulEw8BQA1!-w1#9)56&cfi>W|XksZPK zCX+=P88R|c30lh*x&9MT7WCIOPS%hw>!q%WeUMw*aH|SswJA?@it8?)sPeZlDl(1P zuj458E@J&zTpAiU#tXA0Y*4!n(8>4*Lr~dp-H3M7Qt-~Vo;f`x2PM#Mx0{@t&tH-p zTTDcSr4(_~LMtrBoVK)yLMNT^U1Ou+Ck_~so@-guU=-r zC}aATVVsEj0)u1U2TF-hul?z@twezHRbA5;ebUncNz|g z#O!<7X5zN_(8&XCQg)`0!aEJOP8FV`qvJyxrcjP@ua->J7q*ykW~8@rO<8RwYMX7+a>{ z$HjTF>Y8YUC|b~N<1-7%vX@t&X2iXSf{~}WmLy9<*+RcpU_rRbPf6O4g#^|Ap*B0U zRlV#Hl}i*sIKiQF>eYStTMS_|4q1OT?v_NscHqy>k(j| z@oaUY8w{X?p7A=5339vVfZIJ2ep3#V)i32&*>QohV2f|2hhFpBJ(+aBH}kwo;$)$U zc4eLEa;%Mt&P7#TiKON(NkU^TP(o&eUDix_8lFapPo8w<&rSZ4jfRkbHuK) zn0Nz_dfUuGN9-k2URk|f`Nv|X;?9qbbf#$6WaGhQZm5jbgD zaAA}wTJ$K=z~<|bMRwA_myaunT@JTU72-Rw(5n;~2>cuRXdR1yxt5VV?4i)Rn%fr9 zMP8degQ_a(AAAOt1+>tjo_lW$*%4P6kFP*?Tqh7Mf^Q~RBsr#8$V=8Q@3pq0BukUD z$!p>T2h?Dgp65iTwFQW39!5zgP%LzF@uf*Nh531nZbrsX2$bHeICijkad=lp^PS+P z06W6D8{bP7u2;nUe5RY$ zog%DibKDW>h+U^lrCMO^Esdavf5r0BhCgEP%W*WWGCaN~1KyFwh;?aW&4Z`mpbr@2uC}h1;)+sz=EBJrs6IdQo1A=jJgiQ=U&wEr#+~w_ zL#6cX?IFt3c{Bdcya)7XYnlvgoHqJ~4J;l_Mr<~B7|==i`(MpzADxVxx0sBbKgYqP ze2j7QWw(AWp?WXg+}<*6v>;QE9Ba3VcaIXI{yr8Yh@cMBB~AqT*^B+YJ`0iG+7~Fb zD67(@BB$mdjNBn10=*sJNI+0dX70a_jhUuj3CKSi@#Tey#+stDYxbXIRlpyW=YWP& z=nz4G|CXNSyYbu8YJ8@QO2@QY)!6%T!}Xc%g!3u_Ic1Ml$Wdl2M4->~Rj*P2W+QKB=*tWkN(# z*<}do&=fAI4h#Y5k$;X^1_B9ps9GKIj%vO;`f-(Cd7MoFOT0WBA* z-t&6M`!{s_Na=5Y=Ta3@F&F2~ux8Ee zX`Dx2re_Z0WG$NN3s4SVc*Myii*%Zm`4U|W1UbV9~&_LF17n^-tq zQ)wMqNMbvF{Kz~_?U)IzA!%Wlwp7(YpmJrPz>m)F*ThhMjC|>Rk#K<7eH=gbH1E>@JpMHO{=U-{InFq*s&pIo5dbIhtVsbR6ww$i;7N$0_qGf_i|x&;a#2A8&SQ=E)VOa>pnu&^2E#u;u(Ox2`M+^N@|i^p|p zPQ{1Cdpj&&E@70T`6tYTmZQxIrLM)2u+))?GwX(*ZsTtIV38OrHT88=EVa055r-2J zd%LjUyIis?*j+}Z(-)N%37}BuG5Vi~-t?2;=J_=t2G3WlWN&XF9!9mHsB2KV5x9FI z$qlmU=l>PzxJe`L+_^(+i^K_V#S^fn%4NZgtels;OSvL0>XpB>10CfTuAy}JG~Pf? z$dD3BL)=N>Si_d_lFX6cSuMWhty1b&jl@x%jC4?a^omK7$;<52p;t%e|BoOi{>^K3nJAmCNtxIT)W9x6kwac_$0F(mw zli{(-QO%Q+tt&=XOiib%JvR?Eaw|-HiltP~JO3*5i0mYhn0+dJoxoV1cKfr^Y3xn< z5WIUc*h;EO-30<+K`&y))AY42H~?KY{5Tq*I!eI;{f|>BmjNHH%W+$CCrEdp23y|Q zJ~(|dNm@~QO+K76YOnIann2XHoK0kAeK04zY@S-KGZn`+!MFkK(N*QsK0MNX^2O)4 z*(?Jif&L~56)EXfo%a?G%!KF>v@oTBeTIKxQV^+Ir#rpCT~d-ycHlt0-XMyog-p^9 zg;#(2VK}$+yBy(_=3{2R`4JAJ+l^Wi6NZT&ik=_XYq+YK4?E`kOp#ByejG|ljs2W1 z`FHcd+YWA`dX07yuda2msdbeR$hr=`NMX4tY@_1LJBqG9AMgC)0*4q-m{7g9ZbZFYniI=TMs1NFAXxca)o z)+-u04w08o4dyhx1R8bce3AS-?UFGy@y#7{o9`2UXGgFw*(^;FCDuFHTn(OjUDdU0 z{t4V@lA4P%Tz$1>JYv*cKV@~?kusU`A$2r-cAL`nk=r25>2nwj#u;M0U`PsSH{}%| z(I(=$Vw+qmvE}f{D+P#@Tn#0<=(`w&Y)~YH|I#!Sm9jHURK>b%_A+^ z5OzRsM35#Qd~TGrp7NT+RnxAL=+mVroE005=L6O^>Z^0b{d%{0CP*sa>geTgqQEo2 zm4%2z4gO#V^k+v{H7dDg7Q}`HIkqlKB)4bg=blN+u;T}oBLpn|kq+b=Ko?TI!0nMs zk=BeOdYFDU1baeK<1ZDX#q+6}m#IX0pePDD+%4`214;uJdi-56@yVhwHpkI?ZD zFA<+IxE4ayq5VFMy?1}VHJrSHc?LrtaM*ElKq9ffcntD=6TWL_4|Z0XzRL-#VRV+F z0Pz&u=+24yV6X5JQpHeDpXkS_#sHsC?hCxU&J%Us#{+72NR0#HFPRtd(>*-DG&~HI z9t1(@L7~&ST`VZn2FWB-R4BEIWzcDw7?^DDB=)_?ImeB!8Z0pBiYO zc-wlQ%wC!RYaRNkoi|MLD$-ar|J%QN2*DudF@MWnGiT#GqgrT9CynCUbMnN?gdDk^ zFJAC<;B7HM7qTK*HV`>MG}rC(=S5SkrS|nhZQN99l;y$`O5irpv&$|%ueMiOh0PgLD)$0x`Yin!CbS1@ivRI-Xk09RaYU`R! z>dZ`IsV||hwz$OR#LNh#m=NEuPFSSLjk28fphzSAmPi^hswZD^xDXG2I@-!}bLZTW z`EKOCPH1#>7?)VnshG!A8l2}SL`?J=@>7I=C_}IU9<%gPHaxse)vvtmU{v-7hZ{3Y ziH~JFx0}M&!C@J^ROC{+?j|bcf7n8<@q&a-yxw^_P{Mad^7nA)YU2Wz`m~c{q~FS= zpx_)BE4z3VFWng|N01smIDu!O3bEiWPM&wJdbD7pWv{Zrrn$9K&+yIldQAsY)vjkP zT^p2EHZS^cR>8*SjC!e1^Llc^NCJiIv~5&`q;W3v%2CoZ8h$%f4N?CaH~Z~l8`f?| zyxenlHMGg)#9*!VpfQIXq1Y|%U1Oqlww-*T;oH3XU^V3{TVZk~V&XVlq@@reSMyhG zS5%jM%-0X%2zG;PhJ>d=&am&KeGb-cfw%a<8F9a={Dcz3|C~p7iYkOHMBxAEU|#k9 zy~qC6(%xbA1o54e;x75#&slvh+BE2?rM72ZD_sFEI#OjOt z%&FVG{Ak#%r*jTLILC9jheF|Lig!c#+;Asdw5Z@^{9;H|{Gh1}I}1|$p#Rg{OJ?

9M006yBvv!%A!9|79qrEkMbpZVG%)86D!s>le*1ONxep^XEl=jtc0TXC}><; z1u5$ub(VHKQQntPlNl%-(oc6HhsYP>aaLJ2--8P@`JJaU1(%&(y}awiH)nXe=R}eB zX!gPP)P=`v3KQD(3!UOdR&P|F4{gxp{P3>vF4Ua~Pt!c*QzfaL7#C840WI|Xv{y{7 z%6NYXRUqtsisBEzpgFw^JU8d{<0u()2tdO*9`Rn!Yn|BQqQ3=+1{A3^1?cQUHHS|k{&Aa%-3RM1Y<${@kC{P7CA(Hm8G_hm` zaV418{heHvO1!q$Tx)TSHWH_PrN@_JnRNXvukn?CuM4FAsF~;V`cAug+uBrJi9eI<>MalF&W-)zwvK* z2smptxG&iV-5wM=FZ)8|>vu$lSLt1EXNj_TEn`s)s~o_`q@ zWXC}zZr&Un7Wxi7LBDs)m2zk$Wc9d_VCT z>5uqD(4GEY6S-rxj^7lRJb!3l|1}ykhgE8!V>Jx_6zS4{RDt@-#_qq^q5+KrcW0O{ z#2xmDS0d6S8)|Aer1r@Z4OVEDqD2L)^O@foU!8>#Hn-I9a}aN<*3zdKy8?XLB#FGSah^sX~9$h|0GT^U=JuZ00g8vZJH`-$w19F z4bt*}0Yd=d@A_2dxU7KiBgC6CdlqBCO?1wsBG03%`y0{=^|0r0mTtDc6g zmo{~k|HL97S4l6&aoY|*9@p-i+xuG*)IJa26a=uzLpN=O|K}#qV7b^6eeyf{q`#)m z!Qxr7S+S$f=$8Rc0Pz)&}O@a~R3(eBad?rNa;-^l|ECyQ?7b0oDKBy%^DBr+lo0 z+-7TDql#SB_}o;)YqP@I!;LPfqa_Wgjdtdw>GtraM(8wf*Ok+|{&YJ`jatPgKe5w6 zs^}G&`1d~_w?Vlc{ziINJn^rL7z`T&uLkqfOoLtvF^U0DLIvA;`YQY%F)|}rIqJt- zas8v3bI->_l9S8oeT#hQHPK{IEmg)b!XJ5hi@)GpwIpsOHnUoxnAZa0MupnN)sM%f zru_Hj66U7;BDz<@_PLMoFNhHC0gVOBK~AtWHL`P&Rvu|}*k5l~uZgT@!X?XRmde+I z*K|D7SgpkMdzh)?)Ne5-eq2wHt?3{GL+ilD-1FL%4sF0oBlP~+PnAMyYdBPx1KE^FW_|BfERi~&QI#r?4?IjHi^cCj1U;)y+d%LLwg}?0;QS*9s5C^e_u$4!hjz)0ksy?i5ZOkYHAhsH z*813uNSCDhNzI?Ho8-bvdfHhyW3KOw?t`-;KzK@LH&yS6KxL!MBrK8l3n408LzHEW zRzA0RsY~3O$0{8(&zVs(<`xm%yVZ|Alk9v_OX7$s?`N0hU1|DP(ZJsheuj5F(T zD;bx_R7^w~GNn=Uh(Rtj$gSLq=fSL7j1rNl+3b{Yzhp8yEh`!F7@0y8cG+2%Eul%- z3QeMT9vh{MHEX}`oUz-^e{;@vdC&WO?|aVsdw<_cK#zKbsj!SvGGgY0S#DY9w)T`< z>Z-kdr6hnRK6~}qqjr3xv~Q*1i>m*LQ|EPd)E({3WbU+BK2BvBi7Qv#VBq^nNfVKU zjJLwXo8{31K=QMcQXvqN=GS5V4PuEt$%MT1D(3LaxReo59l|g3J^)oq*BUG@i}l@- zQHbgqe0#$*8-SNg+yR0DR}wHaK(0IxbB2Yi253HPExD&okkQJ>4?=TN76Fa0eXh8u$qPhG5=e2SmgV2U$`C&Ll zm@=a3VzB&lb}m(#Zf{@X%rRFZPJ$W={Ci^7xWRK*_&>84dy<`5; zNy+Fz-i5#W64YY~O(@+rB^od9^INBuXB+J4D@!SgpV6zF3=QFsmm#QH0p!2yF;Q=D zPf9hgk*2$Lw%XjzCk5gx9_3>@fnoEWyl?4PtYPQltiW;?r^ZPpaib0!nRkFpR)DjJtE`*x}%#+(}XQ?>t96hqR zp6x=LY;m?4*(RE7W9@!J+~kWJXa@u1WdqL`;#nW>T<&Zg>vvTQtK*)}zCY}kTlM;T z-CGe=4Rt1`KF+eZJ++O>+C08fjx{Rp77TUc^nAiVkfc{G?rL#D-|?3Uxg!)D-<#Vu zgN+HLzb6n)dEt@s)ubmPWvno8K>lzo(iLz^^xll$U41xo+|E)i`0Zq{;FtSXgF?&? z;XoKg>|99-Z6d@~u$irU9EpGVhHET0yLGpE9ed{Of-q0OUS^!p=8b6t?Jecqu$Fwv zi6zj4SrH=al`02XX(GvIyG-3=?dfsbW~rZ{%FR#_Uida)mahr`+3bUgng?Kkm1T z4w#J+m`9qv`R-{c^EA;jR|)qM+??c!c%V({_{eJqdev*3P;dJW-KL%|E*ri@Lu*)~ zLiuRfZv}<=!mK}&fGZz!D*6^xraG8=|J*BEQg1%#L81;dJw3f3Zo^@yu*Z8`keod> zK$YQ6+pvD&h9B2KU<2&@ZEBSlVx={?7flC_+NY(h;_Zh&bOpj9E)IfGq8e3)*W8_h zu*C3#c8nJK#OLyk)n8v2T%X&F7$gmbbTD+gEmh;FiT0jcnG>mR*)rE*6 zBHiFVM*aoK#B4+77d3TmYWEEuv&lBm5jDIiPAnhLikh0N%7!V z6fpZ=otyCION&ATdLl!QQl_pL6ica#v~;o3R#+eLf(I#4RZ@VmEEaW= zVagTi7KQK;JQ-QwP?*bcMe^1onP@X5x>R; zt~PXL*NiIC8=eRS5sQK|IB*DWgQ|XzUhI?L?Z0-R1Rx_aYAH1JL1W;%*=gBrYp(Vy zo-&k~VF7XrZK7b&Mw#c7HwGZB3M&Fp3Xu6s7P(RErivc-K}Jl*z=CfC$%BP{v(e7b z1ocHo>p>q6B$dKPP{#nq)&~ew+Vk38Q0)Z0ZMuPlx-Rg+AS-|L5b~W7Nw%_#R>NWF zgSM686X$i0QJ*czo)nBXhAk-1{`g;$gGL`#<%bw^L+xRw1LVN(u(RhOzGK*T{{WCD Bw|)Qs literal 0 HcmV?d00001 diff --git a/src/tracer/pintool/pin-3.13/doc/html/pin-debugger-project-properties1.png b/src/tracer/pintool/pin-3.13/doc/html/pin-debugger-project-properties1.png new file mode 100755 index 0000000000000000000000000000000000000000..3a42fb2b012b05f2145fd92b3e2bdae3ef7c1cab GIT binary patch literal 27212 zcma(2bySq?_XdtKBO@@NfHWxGA>B1fhje#IcQ=D5k^+i?QX}0VB|U(IN=b(>Aky6p zzXyC@KkxVa&ROgH!J5U)bNAl+y7qPNCsIvC?hce3iiU=EM?qd%0}bt#4jLNR1QQH= zBSd~{0r&uUXvjTAEA6|#0{nw+^XSPVG_;C1>~nJn@IRKTyuJq-+THf+KTwxTz7-mp z-JF8-BQ0N(ji$&qPsfZA1(KOrVG)cGX0)zcpnW{^`#;)A#hgSCPMNhkq^_dm{GEq< zU#eQ4khDGE{rp`yiBA?mxbdW~2EX&+Zw8$7ii+y*@2oZ$Mlv~a1~n8}lr6l*I!gr0;U}P&(sLR8(vX;xbrSzhnFtUd?O|N@leuupN{!4Vq z)hx-($LI`2>&R@8fWoIr`nSaGHMYwvz~^uK8nD$lNQrrSx7_^N;w_Chi) zrlcJIT@o-a2*L5UXq$yvsfWz7xWU_D3ocaFVSg5UGwWpJWi_w++0irbx0$78kLUj# z-V7YF^DGCR(Q=9T--)-PUrz1417Dupi7WrV6B#P9>7{55ahuQj?-U--u9p4WX}MZ* zxa{3B;@)I*Qv7~r&fy5P?-IP3anXi4+v=RoequL~^hHwCx&-{%1@rH*goYzAfOi-j|yJrX{J-DHFqZH*zP$Nr69G5_+VZjN8AiLq%i71F!YGC6H!1d>~K{P{L*Wt>B zQ%el>tcr!>?6vO+?>lht%IMqCjn~sJ2^}s+d<@oJ>A?<4Cmq3>bFt&PEx8)ec_`+5 z$e;1^-yvNBkLOh%NIsYk=|vejQ2u&mj-7Zt|H6pL$g@q~IqZza@{0u~(|D(&?!2p^ ztB*YzhiP&T3mXjAPB;TKCKKNUMV@8lu|v*_rqXd-GWoqhORb~1vYd#Q+;;K_vHisT z%k*}5|C$-iHpSIkTwH0|>E_&g=o7+?gE3RxOvba`xKLJLmww_As|T!XZj}ZH+Z}j_ zPI)Z(e4xsCFwHLMH6a&6*RSw)`t_1PLG#p~1s{h{RugX5Z&BX)|6|~0RKxD_&QR?G z6Kuz`cix-e?=8K3s0|4#Cbfm-Njtkb8urW@udd!MiM_6Vlgfsm#cz9}qLRVx{Z9vn zuY4}e*S}YGc{}i5Z93};oc%dcx%4W+?eDczcN|aCp0F@V3cN^3Thwo=XDz!cqBPl| z<=`JC%bmq3PHE%Fszul5y4}}(=dLW-Qk+N;8goFSK)>rNU*doECbR-GB451D`*gIu z%dqz9(^^QL57j3+$=ikUDTD3=R#|Y>klo!pNw>Q5vzYaD=iWZvjL+u;S8j29$EzK< z!n9reL}y=K7%Z&@|Js!W1>FzciX2)z0tX+w%4<&%ieg0^QsmjaniB1NWD^QAo@Z(B zSxRtqETIv8NkEx3ll!2ukK>*e+nZ4<^?&_6lmq$I#h7`gDPyCl!@P$w@ka2%=5Y+BfRn|&{7&fMvZWUg()@@gO|2X5N1_kNp^ zH4B=55sH!XsJe8NuT*e+CE~}cA6j`rw`i(svMg%mv2b2f59dy*t}=s9N5+0-A8p% z6!OrCvf-FU?)R|@sNi$MMk1D`b?|;s@G&r_ za=-xvX(IDW0ykF;Q3rdYhaT>~TN=-d2N&NgQFS(ptrdPAO1$<`*^5g#4#;^*L);5N zbv$j@Mx58cgxOHqjLbQHmPL!u#%7G!hXs)o!()WFUef~`W2Tp*iT^v1V04M?vk?E; zuLqpd=Xz_5?uWyhQr-sGRKD&~2F{P~sf(T_Wz@}&q5RIuu0A>X7@ew2=%!R1E}wMu z`ShNz9g)gys%dBcQkgb&UR6vP{Nys6B;m+1E4Zl-I1ytZd{VcT{lF$CS;Se_E`20U z@Wp%_X%N{Rk%0XdR$X>Uo_9-DIwF3Kd94k!DF-%H<;MK$+L-%v+pVaU)!89K)4F-v zHAd^2PiOIIqixrI{hU7Yut&G7X{k2kARTpCy_d2sD0#Ws#o444G##`4{n1)?-RlPJ zVBklQu~&cg$;1$Jm2s9{=0s3UF7$hjBOguH(S8<@fA^pBKwceUDB)5Cthj6nkJewz zy$zZ9{9(O{Si*gs!LF{AEwkpdw~TUp?=qnVmu~}bqEDP*E$+XE>rj~QOwH^LFHvWv z`A!6D|KB@rIqM#YlL%Q&IcnkBJY3#m%2~Kw7BRV#(&Dw8)#9;?8?v-52mDcOuBT2( zoPJE37gY^f-mVK0-laKlJ38L%+sw5ucmP1i;nVF9;l?a@W=Ik<wqHsfPM}UzLj?Xozy-;x(H7q!L#qzwKRqY} zE-HZg3w?%lJ}9*$iJh+lYS|lz{x7rw=+1;|0QJ3S_4>ap8jW>fCpqZ) z*i~`?&oKVOI%?1z8v>?6HDixAE?8GBD` z?dHSb^ag|CUBw1!RLYA`Yi=p_m#`h1Y)Bd=_6jj1RV*RN)U9Jg*EHz-cxTK{3kJK# zvGOikRic9U2k1@RGnO8_Xxf35m@gEKJU=C8&eV}#IkN)}*Y!oCRd@ajz@d;4 zXu*+ri_rt3nM^}0Lw$MO!s2g>-O|U5I_gYBw+ZN}|JVKdI^588OzHFl->@WO>mX29 zfFxAtLi5w?-`BMTpVu+;(}Ux!Cq0M)~wNlsUwr)Nh~e59SrB|lS>l4Y%I1gA?)M9PVMPD_q-%c zZ-;*Vpx&84!x_46%>o*eqTapU8293eZ4obasR`Gb0I-!ZoNU?vX)@;cD&N-vdwsbc{-{bE2}{!Bgp+ty>>%PqeDg~ zqpey$V<&sumHHEfjphEri|xujR&V311Xzkxy~6_~p~<%N*uag2A~<$NPp?sI;Dd?E z@9C>eDXfmGJgKx;z`@ZHaRuwQ=EY?(_hrYjDU1ZTQKmYx-!goqd}=|c*7TB#`253s z?<4J8VGAS9SYoiQrgoFVeCT+LZ`&GM@0z_-fINM#s=eIBIQoQG4rO7su}N9J|3LIf zVgADy16DNA$65N~VoR?3G$b`;HeHK&CzII920@oooEY;t<|I0MnjstGdo5k=0km)Q zn`C1mZ5lttd|eL=eZJ&pzV~h}QPC`s_jQv2{@!6h5uZ}NanY9~s-m6nydPzIW`T~p zNimH$GAy%qFvbp^tbX~aHCX2A?}vJ;`k>awa{+296#Lp6=Ykx!YqSu~*>b+CzClyM zFIn)w5_ME;VxnDPh|NdA{Ika;%fUvo`7m~SpC+l+CDr2qq*zZUiEXQ-H%8{rB0BiC z!poE>!cRsp!(QH;N07H<&C0oOymI*D6RS%nPv$2q97(zfmu*MOcP4@4C16Z;w&h3U z(bS!qhn1%d)r>ezB0+f^pz*&X=o$`KEO9xFSi~;rpb1U$u05nffH@t*bdjSLNnEUnW*2o2WnO%6-~Y z0Q2FlPJMDRS^E+ZSJfDF3qfwy2reW}#dhzk?0Zk81~W|&C%)2pD+?mwe?Rim+4{p} z8TZ~TPS8AL@YK?8?;ZYIMYCD5ufbt9N|l~-e0CR~CtZH6G!+j_=0<(l>^LF*A+%ha zBj*iXM=SH8du1lBm5UIMKq{z$rCzC@qW@fuZ7JXz5co3su zE1fsxt)*8EjaF?#JeL!@*6ehwDad%<*E_fSS-uShueoWBK z=d^k{>9Qdr(T0SbHd#hC;%qR_c05}$fUM`h(;lkyeK$Nd3+ws(WaHZ$FHo_sfPvltwt8yT;^R;OeH+nXrn*G)hzCCP+d#C>SggbEHb2d0XR-u1_;*P?_4-4+Ya+L={{h!14@10DhIDdOG z=05R8|8*Z9CC^?#3gh+Cv%w;$*^`+A8UK%k&TP7LQq9%3QD-7HqAF!Pis2}mNeAve zB)FrE?oREfT`L36iaNljKY9g4pR><;j(w!bu*sld&BFFGP80T6>|V!x|B!coVxLFV zlo!V)@geIs zz%hNgWPgXYkU3?8BxOV4n9y@4IoT@W2TG`Zl)~ z+31_sBzUVMqeqX8puWEIvQCEUtg|qhl$O(U@qkwkL>W;ym(+1kO!-WP>DT)wHj_Bw zJnz|(+i)tF!8NOweL89p8_aY|qV0EdDW~D!L(3-||7~UrX_Vi- z5A|JZPx&$SsLa1vR9Q^YH~G zN4yC7`0nUXu77yo0Ulo3(1yz41E_6cgccGI+^Cjy`W z6o~FiIBf;G2+J(PB;EPF*UuswJHh74gukVGbNk<5-VjOZbog>AjqfXM7$KLA4f9wU zOc$c{MwDFydl+$CIXk ziA1Jp?mFHY(j9YriEV2NJ08w7E&_)Wjgpq(D}TzP0pEy#p(j{3C#;3s5T$A@J&~;cYx;N1_ zZL0_K>=6}ev=*Pp_3H9s%-CmoanZU+9G!5WS@b8N^D9A)H9%3C1Fz~EuE*qR{Z@f! zJy?0p?rka~$%Xs^j#PXpcGkMcI2WW$?fy5za<5PsiJ zl^MS|Q!Xgzhp^PO#gBcfX^t&|udS_p|NgzGsK|U{n+2iTn7X?pnop%$YTb}Fmne(m zPLQryiRqHaHxg*%&Feo{E-C`E-l|Euz%g`xr}Y#k%rQ7dY>=P#ye(|3 zR?C-HL549RBaUbFIqHWcu5e18A`>L_^y%V0{ck(_^(x$(Gu$JH&_Fh1_$r_}jUkR= zmQGGiTQf~lQ&SQf-H$;VvxZ&+wcezaUzRl$no8rQ#QaHyu%SX%-_t4oNvCe&iwS-fVTao~4G0o)JqTl`zDMYKnItX_Bt_R&a(!ID@1c3B%M?&OxNi^;bHy1H<)nyqm2si`~Q#jAK@$G>O=_$_+HEU zjXMBg6)y*lks)5-QViDlXzg)_M;5fze71SDBTjYs^2!^f+PoF_S8d+Lk9Wv1;$Enq zSpEFZf#Qk>XrPGm;eC?X_*<-fl7;xD;-7xUZ~5(9RK$0eo)J;pb8VqKFyMwBFPffg z_g^-|ZJqtpmArWC^7mF?mTvoNS+HDbvio$5I>4C$M>!s62{KFslZW7x6a^}?idgbX zxW?=#cS41l@9sj27opJRZ-_A?%+@}|t1@B{F`#x=2w^Eu{(?=SA8Y)pht)Qm2>0)6Z~DqkCUbg_f_89e*`P1)a7<1td}_UJ(x^?>yrZ?CdkyM;^h z$zsNFWQOlh%FM77D5x(RP+Pyf-%m>ptHC;O_^Gcnk^Kxo;;_NYHKVdYYOc&0^29U& zdVDa2dtZEq_3v8D!R{R~TFA~#N`3L^bs<8v^r2ceqVk;<)3a(*z>(5u`9~iuJ)Vv4 zJg9G$=`E)_{qjQ(S{+TcNwFzDyWEr!rG+dDJVIJd{eR3?9>RBR=y9d#GZX2k3!j7i z2x$KKmiU&Rsw`CK^j_9bPg^~4rK6qg`>n9>P;G@N(SV}#GK*~RX3GI`u2=WN6R^(N zEuWZNi{O|o@n);v%=>ZopBKfiQ!2Gv=}mV(Kz`Cpf*5XY3|Qf&ocx%RR3L$2yIWx>=yIub_U@J=YU zT5L8jdKu@n&rVxqO%C!B$%>+6$r@O^vM0EMtK!f_Mks3O-0sS4J;Y1tZ51v>nx$39 zQ1a3GJ9;_xqDh)K&h@nuc^?VQ0Z<0?nA&Z3hQVeOOYcNY?9u@Te!5&l+b>T`RX77{mT zCqQ?m;fEv7{7Cb4O3O^lOkg|UtLTDqF8A{oB{$KOy{cW~3P5w~Bo5)i`~4d`H1H(Ig!(o`}y$L_z6WD49ENwn#4Y& z7M)51|NXwPEKUK@^ilQW<=&9yEV&z-QA6+4LNdi={1DUu{iw&sl4hNCx#%c4YYs_u z(g0_AdY|=$y$OFb|A$sQhZ}Lz=>lVW6oWJ2bmX{C$k1ttwl6XoPO?w|=|BsMfd6+3 zb(kmHEihnrYhyo;F$AeBDbnD<9{T*7VnY67e18y46EB`^F#_s)_;vo%*Nxe!j$;+ZYP5q;~Y&TLuOvVlN#=9B4Q^GlMG zu}8tHf~CGk89{5PkTr$B(r+93?+ONg`XWk>C{0_VYg+8@W~HShP|4cEf_OyiT;3 zy>LSC?xdU+_rY*#Q4B=LG|m(w!SDQgz~!1`;MLntpL+ifa4bYktcGa(OAcIJFT$lr zYLtlvj)f4r0s!MJS0}dNmZCbaSg4znri;>th@I~9hE#2-j{hqnN6=7@_3B^~0(7@b z590YDwRv&LsAnjIf6(^P#j=AHtqp7O1OQ%_#xJ21{OzHCvKnPMSZNCL?28dmL(rXl z3COxuOh4E=ZGhQK*CO#Bwfi|10={${^UM2C+;o1k+#@z#cv2A!;wU5i5A?y9z|6A{ zqrNT3evpWoPlL6jYmwl&W8U)-{m(_3SSC|par$r$LaTToh-~ad_ z&fX|rAjj`NmLQe;e>>woVKw_58+;MothpZJ0^tev6v=e5_U78561J5mb1Mv!==XTV z#-(TZh#RlmSfj&CkEinfO)MCsfrE43VAJm0BW;E*H%gJ~VO4hY4Up&fn?rEK9KL6k zx|#pjm)SIgc!vKF6=;v4!{TcBlMt~0^VC?OCKU`7CgLh5Uo!gniKIUDbo>l4)2wL~ z^gTG-qO+K%Cdz${*7c=uwVS>=R~EAX~4$8eZfehUrFj; zY(&;x7qB2cnwHd>#zKU19Jn_Z3?Yu%$nDqWzO7~YJ-k&smxz)WeO1Y4*T<|zAF4>S zU63VbdeWe4;Ln-?Y9W;N* zfeu<+I5dU3bj?h-v*3OU(YDvSh>kg21TSkmU7biWbrz^A7d{$k?Y7z29eR*(tPUe| z4X;eudsnd~v5T`a0J$-`n8yeUNZ`U--X$t`am}+&mgl4=i6)NWK_{4WP+R8N3#!K7 zygb5@OcjK$>8b59YTXor0{;M_7zA$f1{}gW`Q_h4~C9g;-h-WFdvnSx&Ke~lI zBelbGZ8pR`Ongpb#^JbA9urL%X8}oN%Bng~bCf4=df$6^-i}1;o05*=b~a9?d8HBM zSSg1k{u2f0<*!F|(S28@<4pO>#NPDkhmdokR{v^8`283cIogC{eaLIz*!m!@LkLsU>9*N@E%xfqErxug}i5U|* zd+QQmjNDU0iu9+%kOLMBBST*`hKL27?w_8#3~twb;OIT9*%{|<#5qCe@QtFkhEhvA zrhd+wKA5n4h!w$8W1Z*csR7H1s(g?Ubh`PZXui|fasHCOUcVD7N&R{=0D)wr2%e{s zCK7z!;V0lG+CaC|>MG_>1nk**6*Qj>@iFWad$1O2tNSB%U}82ttk0G}*bVRYja3lB z5Hs2^^?VW&y%ZY)uS!vON}R4N-AAAeQw+Q2TM8xH!Xz6XY-0Iq04l1pp1Oe}NxGZ^ z=e;X+BLjsJVh%SzkB2o?BVpZXqa=(0%YsSTOnqTeP2SA0Hr(Z_AJg*WzCKTJ!q|w z+?B#7S|ZnCps6n3hj$x>Rei5lZ&#Ve_r@h)q_v4GO@ubzAPK?|{I(RV^T}7Ihl`F# ztpuEVp6N9+zToWgjfL(8JQwiu{fWv+#S6`;6QIc*N`#Oe+9&8(fbSxF!NuTFGqs60 zZVgb1HWK~nEqZs^0pC?2<_NxUx>=9iYkJlju0a}&22F0F9N~h?LyAEV%Nsre!i)j1 zK&)0QYsm4P&4-t#D(~h#AC&p*cnLO=m|~wIa@U?_zEej=A_v)TR;s0h2Ek!L%ssnh z^YwEHzrP4qwozdgyv{00=udDZ0dT1LY)4}u5%Hv6TPol0akb4(6JgN~bmf^@sO=L?f7vaW1Xq&;?=-=W2( z3?GU+81t_;Or7p)^!9Nr`FsA50y*Vv{V1zcj3Me^HVYKv7VoSbRZf?e$nu$HQGrTb zC)!9);F`CJaA4_0=hKGwc+J>#nzW+TV$;vp#@xN3`8Hj8duue>;)TzJU)~wmt_^A1_t$m=km)#mvg>{ezZZ)fNWA+5Z8*R7!EO{T zHA>);Iu0!Iw$CTXscCc4eU?xyfF-{cEV8t-tn`Gg*}$LK4CdiA+k62x6RyDcWZBr@ zT5kr!OWPtIZY{Sxb+^BdyJojFzV5?+Tbt<|Kkp7u+jwo!a5U&Lu-}m4qE+GVwf53_ z$KYr81a9XUg~tlK7*oZCc+&DTx_*`tC0UJ$S%Z>h9F;N{2K?9~RYQ_W8(UWPatPc^4|RM2col5F ze)e~4#LgRQMi2nUL+}vF8IA`1Ou88q zAOkvkopr6ChMr&ovPwm6-V9)0Gt1UR%Z+vSKhKL9nt7t%P&5^wSb>1<7Qjz#E6_^c zSa)|6;DOrp_IHRO#r%6Q6u>c|q2~gdpd$0mTaF$Meueoa_aANvc%>D&6%6qPJZWm0 z8OOCaW#~v78JNo!06b?X(+TYF{hAzvZQhS#icqG4K*153?x@# zneQB?yW!$oJs zKbXsW%ylDM3LfyL!sHL{ecsEhEK6c}t&;L5iD3zS{a+21trhT{vAdh&AD+2}{va9{ z_$&+B2n)}c0RJxjW#qpfX*nb#M41UmU2bFI(ty>2+AZf^Tv@E`wO0$@{$pdsIe|q zj>Gd-e~6?F3X#GE)K~5Pl+`iPs(l7S`Sl@21_lQD`dE1POW~`7%SOyR4^s&iKFwO^ zsljfIokN#3A6CcMF!3Sa-0hJh6Qi#~sj<^v;#}9K!W7WI>B7E_PEJnFGz9=PB|-0_ zjhe8NEsmqc4Jxu(_&fCcnGr5Q-;)Z~30>upeFtsFVXPg>>nzryPS@v}{1SEo{ajr= zQV(4of}BA~LZ(Ody573aI#L>gQer3u3G|9bbp3*WJ=#p+>a?%mrCee~aCUdkO3RHJ$(!8w|h($X?2p^I{acvU}UFHf6#0euE*YFL|48@IDmw^+p+Gv3f=d2JCMo z_vIF)VA1ptciz+M4p{J*^+B4mN;p|~FpylUJl#KpP6jY(9xEV}^iV52|C4v>10^z* zin=AOneb}sbhkedTMOv3pnGsL0=Q{G?1He5Ooul%wJ*?rgi;r zb4e8X3y9Mld7qzy9vXpyOt%F2e;x;)u`CYn3`yJo7Ciu1$^!i8-k~riNTPkG4@psg$4e!>(n>BO@wTo<7$!j~Ws z;H;a@i1FuJFgwS-KVw3l{xe}SAcow1yfh+?^j3Fx95$5Za4U-q(eyCC;T30#O4eY? zCnwe3Qlz3)kLHubRP&-daKFe}CskEf@|rTO^Nkq`siHwV+01;y5pdp?XZ5TI8k0~j zp}b(ou0wac>izaoYtDm$r^06}7xG&(^G^NDcIcfw8GegH53W6Q<=R7cLLOwVy(n=w zS=rT9_^t`SMors^*TaLA#o>A*l0&h)y@DJGOF5#uWom~y$YV9O_fa?m*Vf97uBd~& zI6IQNjGaZsnt3(F)qR+rqyQ zyy@yZN`H>GoEiLrZT9r^ba!`mb=5xEMGq7tc+f`TdqF&x`N>eZC5z3>QoYm32sN!| zyb_ar=8Rr+7{p_v9EXgZ9nFi`j`>8O zPEO9-w{Ky&hPt5G7sQ5J!*2%j+hNVEyuKh;BaZNY^Ow@KA%(E2`&SgL z*HTYA))!_(&pfZBZ&0^@n2G@$_6+^EOoEx#a{yPeVF*1)%#{g}a1e$A0uW~C7Ptv; zfTkbn_}~r#W*ty;zmfPYBLsM|+5eqRSpm^Ujz;*Fth1Mhu48o;O2fe65? zOlUwI`hpqp(Uv>u>*!Ya@69Q&je5258KIiKSs4Qnb* zJvzR@5Kpk<-BX?2^&G+md>xQY3a@82COTpH`~G4uk0G@h2LPOzZxD0l7r8P_x3CE} zhx_pSHUxVn>=|<4huWGg&&XR=@jvtb6s@Z?&&%S${KAI#Fs0nbqtVYyJ)n4VY-`j2 z2Ys|CHm;~S63cE^%t}`6pAiwD8-p9r_j-?QHZ?1Y6H{3c-g1|R#f1DNY!p2TsOD(F zUvFq7F`2I5SFg4#yC7A`J=bWNb5NyQN|T;?61&-E@P6J(2ISF0&dv0Xt^*21#{we4 z|E?W3OQ89M6dJb0Cod#5<^yYh%x>?ERS5<`s)w=EV^G7rEHQLK5MlgRfb1P#2NRyf zzb=Qw;riWU<9@npsMi={(_Z8mno@H(`B7809RoZ0l-UfVV1*eCkeG*2Vi%98gMcuA zpf~$_U)XF_#fso~kw!Q$QRbqq#u)<^;8R2H_tQxyvjcWEF^orwPONebP?M8UrjSG{ z>3U-;?yN_7GZoPBQ}Sdv(1POEe`LG-mjLp7uBgDj(nrclr#g?_-}0dw*B>*P@ra^s zx!cBSRz#(V1{fW1WKsZ+q5`PKcKurEn||=?v!7T!mC$5ShF>q?Z_uFKUjXwh)I=U{ zL9E>ARRD+(d-Obs2bj^qI`9?@u@VBf3Li>@uZU=pBv)lXA*9#f~IK}q|g zUPsfE<3Y4CE^*GARl>5WkZmwAM!On^uB^?f(}##Yy@e+;b`ccz~;P?dF`D` zTh0v8n#WR_$t2|BX)O5k7)VG+Gl7b}srOur%9y_afv<<(LCxh`i)aO-dBpFy3uxpPV17q&ITzKb`s>NrkVz#DoX-7%7Fk*9>M>%ob zgVR3qJ{Dc9x7Oy*iq(Rhot3ZKeOI}915QeZt&ixiHZ%~- zdAG5mtFr`-!HxG==(p|Fd!nTTKR1BwaEeKR3~iLwdLDtIGk9^zDZ$kMB%)_-eh_AQ z)YD~~dUPU3eesj(RWYCK{MoiQJ#YPMncJsn?=!GzOnk-g=9KaT!NiS`hV4Ly zbbf1>qU=}c7Uaq=;id4tr1YKKF`suzCspt6I?;y0Os*YFCFH>ulM@Oh(47vW%*gQ_jeYU=|Y(mIT;4Zn#K&(fF$3|DF#gx-* z>dd6I*@S}noi4NJh=f-!iou5g!X0BDhC4PQ@u^4|u<4Md7%c1`aWKGi_W({cHa3=& zl%%VxYw0Uo_947!MT2ydv8ju+*5jRE{m@j!lqV$?;hv1`@&_IN@xZqGfnjgw zfq;vC_=ILYO?fPrIYSgM@*|vklIXc~YM;Q+>c5W8^$5j^s1KB_Poz<7e&_i zkn6gcf-Hqgsvn4w=4}h-3aN-RB9@c|_2}8>Li30XO z!GU(pD409_x8YZ86xW959v>r4gQ(>KC&EHJeAe*}gCJcB@uIW5_F8h?Cbkk1ofqa6hm3UN?xKB!4H0aNO+833$-9BA36ei=g6K20~7Wb z%q?pJX7GX`aSjGl;CHajM#R|KR{-A8v72{P3_PNr7dK18#R4L9)oA3C00W=s5q#=w zp`HM!HrQ5MGsd~SsTSKE7E~lG=M-M;l`*4%k{+j}Z+{lH?BnNLW{QIEVEhUsm^xCj zll4QnR8}`LuLmEP`tt@~s9bgMoCyw|HVFhxpU{p4M24tO1+E{)@~C7#DS_c+{bn1e zE;}kEwOq{qVI3H3X^R0~PO=c^=gvxLQD$Oio;}CP>~cm2Kyx}%x!ChuhOGjLWn%@d z0gIHG*Jz+et;vhV1} zV-HawF;}N#Fy)4lc7G5j*so0WSQp^4OrD!~nlYMM6~v_4P+lf#`Ae8${|N=t^HF_s z+}>ozzLUk2=Z8-jTqz%e2!s>}9>)U=iYt(|9QCXSJ7#acB;3~Yb`0Ai2hd0`g6@K_ z=e+Petj7k_!1}^X0oybKOd@k3^U*{i;SkS~iJN4r+?1RNBx<(QP)2D@;Cp7%#pT?b zYFum0Av@Og&?1g@z*^|7znrnss&B(+H3li_8Lzd?!RU_{?U)%C*L=rabSbCJ$9*U5 zHDfHtQ%gOdz5*G`_GZJpnJ%1tbxbLbWD>(kj<1h!&YLk!m@i!j1O$Mfbhq>baPHFx zmE@v+AlL6eVH2<}b^wa@e1wuoUcLu-DuzZdT2?m7tY10k=Y?j(z+ zsjV@uz;xA-5PJRrK!v$&olx0z92QD54w~9ile|UY!4n)Vq|}Kcy#35xT=XM+Ng~~` z|5C@h9s7BQgFQzI@J>$P2VynkBGG0_rn%q)Htec5ETK9O93?5HoB>YVnh)p?Q|-gg zR21hN>VmLh67LbYj-#z(H)(C=NXqlBFr z5<9vsJT&QxWAzQFURQy5@@OS(Cr3AJIsWvIb*yHv!7drJj>*>~<#wM9@RIXaU8|Nf zGb=G(GikLe>L=XIer+exoq&8a+C|u1t`bpH8`O=lS3@ zneH}M%M`U2@uPYVXD#K^VZ{FG=@|t@^d9|`F!wYYyCNuMhg{fw)z}P5#%XM$;8i%{ z({?5fUb~x4&VVQX2sEPfRp@FtFg7X0?cuKWej0BYlZaR8kWUP6rTu_UeP!1#O~Wjf z`RXmP3iQNb7SJuC0YUGP;-I@YaDMxVyk_J`SGW9{mFqj7!*LOU{pR(R;i&0!rn!mD z^)|t^{oI%d3Y8|8!%3Se3m5cgaA{c?CnslFX=%9X@42L^Jw?Yx{~*ap6IMF;l{-mGFEC84 zMtOdrT)>{>W?!Mq#{zO_CZEdBK6AQ5C;NAe8-Q7s-=<{igt`M;#$6C7pm66@c zP$#itMTnCH)-SS8h-j~m;ym#r&l4xQ!@>t8Z9;$S=RMw#0JilznppI`tptSR7st+S!YAymXXJolBr&bn_jb<3~~ zqn&&0V>pU1M<8J}rt5^F^>7O7Aef(vX$`$QpGJ)fpb%V_Wnn^`c5{hYaF1sC*V?cE z22PVUuva^q-yx3)qLIeK+qd~Em8&SBYu{JN#xi+GOh}pNzsa^*F?bWza($OoYckm8 zqX6~^Nb}iDO)?j~eRel(E8Uou*RGz6xCmY^a}vYK?!>M16ewYOg0{m8yj|vOusFyA zO;*Z{AOPPW-HjmJf(pO(W*Yoxz4ak(T~@tjU&}5!3TKE zMj(cSztr)Np<25xyckTL7S5o-fjLpcK1cE5X}>OE`T99ey#ip_Z+_*tVOl-;Lm{JPvz>Ed=(cNjQVtX1cIfxcp13Sn%D43nvm#`d8&x4MsEd7T*E??*) zJ1ah{`K(=-W+gxL=zL<*q~D-tMl=wS$6C>?4r21J1Ma};f!ymRU0$UD93PNLUB$ol zd1l{u-8vz_2wAK`NvY!*Zw@;EG^C89&H~e1WTu!6DG0m*@kpgBTh%I)3LwlxAZGEA_=+?!ZE6XLx%}E9E%c@(8gTaeQf}kR4WOeTi4sn$ zd**ftc+%_Esx`ZmNS@-cS>QY`ed5DK`dKYlkh5r>n@L`Tu-_mFx*{#$Nu5_-@ia^g zG+wcGd~slMo`eo969hni6KkGfV878sY1;=DRSJ09D2${fBrSGrw~iJyRPG4BQ8Lveh|q$n-YNaMXO^Q`|t3$`%sF8L@T zNAgaLkZY0XX&Iz*n7j!GDkL)4MlKD)R$^`sMMhkwcCoRs$^GEf^rgl%8}{!f-}pLk zcx}C;-zuScrO$NI`Z+g^G=5|wM7XOVa_=F5%xYmo)9^9k_- zcxB&Kg&P`pEw2G^o$9j77}eP2^d*wk?t=`7sY7Z0={4H*ab|@f@qnz*?EDCPw^i2) z@SyH0o_vvO6kbeIm!b{_keig(_nQ#bZ~@#s$LgjO7Px7ZLW6v{rO5;oKnfk0<5AsQ zVZf*v0N+-epe7~(9N+KHTNZevfQ~C9qCtNDJ@Cn+_Tir%8h36(yV>QhMPC2#2;3XZ zng_UBv`()2_E;9grXG;48eo zB?7`(+aLMz?x0~MEt|+yw#)Cvn04Au)ymNy;qMt=mH(+1czT^XUtXNiUCFw_DpP%4 zjy$s57#Mq{2}%j;ykpTIs@+q^m#-U#!?;kl9DN7U!|m_|=VlU-{|Cj|g>AKKJ4Zgq zrq;%^uLU;OhZ=Nh%04eKNj^?pBd3Ipza?F`84(R!0vH60?0j)?ad2?(+c!nDFU-(o zBTl}=3T=jwdW6$UbBu#JJBQOsW?r%DCljd$SHKe@SpPFb8=9lZm{dxZ(-|GAE|I^-;$3xk6e=|%p zBZEc^vNTz73VgrDFE zs;`VZ?ECV@539O#>U6%lIj6T^6GuHI_nhdhMz4S2m#RqC-}3ugTn=@*8zaX4mPB8_ z64BTnrVz=+L7wsK4A$0$T^^b98%Nuf(3$q`5`7l+s53cp*2O9t{pIa1bO>Yo>dlp&{vH&=I zB;!V0_`vo8UNPq-lEG;x|LZh_K)P62;H_3>9NM6TwzYf3AvbE=1w7qQtqc4Bj1ahM z`m6$&(L_GMnX}h7}il44PEfi^BLQ;LGJggYx*`` zcpLQO+)d&h0b1VLBqRh)i0A`uZ&Y(@Lq#DECwQ)bb+8p&LUZ4XtpuB?l3@))`Z7Ii zssYvizBjM!<~uIHSu}YtM@z1Fc~d#Ma!;oAU;NOXl_>xQ$W`iRcmPWS55%~2?-4f; zEyv3x_d?>JO9Hc@qu5$22o_H;;5}qh5PaHTefLJa2mfZdM=~HqkTC+rD|}CmiYu<5 z=+ahuNRJXjfzjf1TNDF`g(QHeU!r=rDN`WTPUMNM({p0clH__bAh6(^8luK*t<)_ zG#KdsiDaZc;duZx8Mpq&<&z8TIEaUs{SIp_)d0=aF`9^0DxA;+H)jLVvv^84YYkw2$z`*QURenZ5#UqQE~ZdXQZ;q-nK?5 zZ#S>vhGOVeP}>XL)O{4;{l@$a(waVEdEzk~H*13EQF3$UH?bupa$j`3pP%NC0Nh#y zs@_QS=X1&t%`rLD(e{FJwM^;rU3$^#?~({TJC&~bW+O|P7C2wT?JLFpesG?*G zsfa*D4$AEEu1zclO@KmnsK#%P&FJiJPW-&DJPj$naNp4q@Om zy<*d!yNu^j8<>;|=3U3eN<)m87r{0rqMJ``d~d^9b{y==W-DZidsz?+j@kna4gy?% zkU8M2&1^D;(`A?q)B&0-C`1{Jt0KdB5~-hW3y{hoWB{ZM!P($`@3BJy_e~Kwx^kMf zaCjZTSsMacyXhI#5emei63otk_{w2xdbZ^rez@L!5Ts3@HwXBvms+|gytbfI!S*Ro zqySt&_5tBgIAi#0s`Cek%T3;y7yPY9E-Gb=d8m+l&59i=Z4WZVYf2TLd}rqp0fmJk z8G721QhI_%6392%$#XfIgVUl=ny7P*)^Fj#6`{?{9SQapC&pN0|!&gVPCV;s^;t{Ci> z)?6;#S8r+?kw4Gvpp92X`tYY%hTzy41(E_tA@Q!w)~jh2A^8eas=mTF^j-;em#~}m zkLul1la$$Ziyu+6uFa0PVBsF0*R0!re*WH5eP=aF?3jM>))Q>`)wOI*|JNQywYDWl8HJ>Hqx)agt^h@TgpIb*C zJ*9U4n-!B8Y z!HI*kh?1@x@4TG3sZ_=xdfwCA{sc3u3AMMf5*4%L)9jU1G7-<?q5IFhdiFUe zSlvl2E43ZXNCd0l3-=7uwu-|kRnU9`FMXI2`N!3pH=rBXx7E-^CZ3u1ZPbUiRzltDWwz1$A}+ zaB!_j)Acr=*$c?=gTy&Gq+JYtomLqPi-X=tSX`CQG|+f}AW$M@lwZ|bexEA1WC zlTU6XB*=Np8_j%vG+$q#m(6Ig5KbJxp^_DLeP{Reav`^`H?u}aumTrebgQx!aik5G zeMFNSg)8fP*Uv7c1&UdeWa?*hCNL<;iC-%aUWTIu`baV@2SIaYCt zz>LnhZ2x_dDcXKSWU4l3yw-R@0t1k!!4AVtxJj*qr)59Ah7~km8Z@wR(yw;NVBr}R z*{~^z;(4-mYjj28qYc^zP2Yy}d{2M#B9wlb72<{(=|PoX#sjM71S>0TG3)8yUsa`Fv50N&kVD5dwdd7YQGxOS7h>6V6{`zIIyq z)KMcLUQ6cv0|Kfu4=`4=6g>lw!x-`l4>fzQ_iSXcf7bf_a?`JU;W3Q z^t4uqyJ|}oi=6ip*Z~bdmdM*fB2!)FJTy`6l;3cMA*Ek%)5Y{Nw6^nGZ6!4mk{of zJmeCvK@iZbW{Xl$x)TKx9I!t(20qPw4eQ^0$7}%pKXA#zO=l-mO@qE>OLQ$ZpNT81 zw{X8V&+`PNKqVO^wH5%85Py^GRe;72i>K6FO+#}g~cr0Ap`(@HupH)>zaCc=$# zOwaR75gYppb8WRT(ih9(BBFMiZ0>iiTL;dk#Pv9C*qzGa`+LkPpH;nNwKCsqV;K)U z!`0rv^*7P71%6rye>KXirW&AFS#NQVVdykWDE3YT>w9y@mFstp%V=%FC#WCrT(Y^v zLQ52JE`DW60=3-iQ|{rWcZxmrMN+wF#wU*l>+DQ$hw0hjjn{gz-imU@s|L)61&O`e zxG!7NUxiEFr_S-?Q7S4OoDpgiWY7$Yn7s<%SrRSpr43{TEheHHbGjB zGa=%pM5X=Ryv8Fkqna~xohPF@nGd5BDFoX~S*Eo4^nh)`c`YxlilHRMCg@djQn%Gl z9!6mFL^UPh116pxjWqbtQ1b!%tV?2FHsMXQ1G!4j)i@XZ;l7?zBZvo19Jtn;*{70~ zFmg@K1QEz@m+$Oa;NPIrGPTS7&L7T32=_k@yu<&T&cTrh-X^JyOR~b`ZCTOV#JBlG zh?Xc2&|7+5t5P}>VqT;5~XByO`R@#)1JHNmZ@kSk=zI(2yOxoSR z?aI#9;AL;Ih>bl+rvM>*m8xrWGBJ3|7oAMrF@ zu{C`XL4@nqjb=rlSM5(z`V(epLK8GnkUJ7CE;*mEUy8_~=JK^Fk;$Y*GwuctE=|F? zhlNDc@8he$pQXha!3Bc=@jKr%Ln*W%LzO%Q6vRu7CH zPvM<&&P6%@Yxln|*C}4hjY?y(>=gnuj}79}LTu%pGB(=1e+kR@pF;Z^db|Aq6vZ~R#cbV`Dm7W;L$Tvee=zVJq#N65!mMp;EP1A z{NPr=-kOUQ3bR32r5QN1M`D3Ea;S&aB^{y%yd_8BpiLSe?AMXz$eMjx!RX>`msa^I z>vCPFzLa7NoIbDd51Pzkmj_XdT^w5=0i4;URzw>dYe^x~Dn_P`=9fVO^Ow-X|ZoE_d1ya;>Ez~7V615@x(BK&5&*N6i!Yn;p+WC|c-?*q*L_k z^vRCD6anz9xN8)0Iv~h(97L2KA4L5o#;212#!Cu$51sdrU-^;Uw`+k%{J!Zf&pjLo zT?n~#@R0|8_@`FdzHH!z1vnC~v2!43DODp*l?pow0?4t9Me48Fr|W{*dn*m)Vxe8e zzJiFbCPLcHK1Dfv{RMOTw!<*8lp< dsE5TXlXuF0sj@)|`~no$p52zldH*7Z{14E`hP(g( literal 0 HcmV?d00001 diff --git a/src/tracer/pintool/pin-3.13/doc/html/pin-debugger-project-properties2.png b/src/tracer/pintool/pin-3.13/doc/html/pin-debugger-project-properties2.png new file mode 100755 index 0000000000000000000000000000000000000000..d4fbf529cb4c59e9d91d8d02881f8a6d378375a2 GIT binary patch literal 34174 zcmd3OcOcY%{6C^Jkx*omN|{Abw#tZ%aAaQL?2&Xh`!tPEvU7J5$5~lt-!;fMdtK&b zoN;G_JKR~n^J#qge1E^+AHV;8e<0oa{d&K~b3Go9=Uar4f%f48{0Eqrm=534xoOPA zvCd2ucD@p?$uUV^$tzr5A^{oq;K)5iJR{d>;$D zNEp+fZ|bL@%vMI!7IRFA(S3*OOw6pD>c77YivQ>}F^sTpjES(R@ztLhe}d56Ya-{= zeryra5m*mOvN;D^tDP?IdmM7=uOXROG*}vAh53MjBQmxda%vJsb~dn)BLupc!cHz@ z1XC{v&Z_X)Z5T#?2Oj$2mbSDW3Iat5?`cD@QT%VdeK&f=RL4^PW5=CM17;` z>ZPR!nV4)l4K=Pmvt--^z0Q&(9RT&m$!x##U;ec3>tk`q8`nM*VBD<{Q)C4FAL}ya zPF{(OYB-#P{a%G|o%s54+-o}+=z4_0_xI{K&!4$SCh|q?(3bgB`AmbSq#G5+j+ueS`ad$*R0Wb|L@P$5idSw;GQ)IO9!{r_w1;y z<~ByY(G>do66cJM+rgQ3jhQ#u768=DGFc(NLh2w9Q|wdY;39uoNgvf8oEf7%Zur zLtjta5x*-n@UMw+sv|sDtmJo|R&FJd8x&Sg&RF1KexrxHH*D4-Boa4oR~YZmC#Ulq8$Qa=d49Amn*v=dnCbU5qu-`kN>@e#RA zlBwTWgOTgwnKk;y5TcDDx!FQ8TzmG2MI8?;JWn&msQE6}dA^Ph&717V65_N^->D`>gSQnro8PyPFbc4T z^sJ;PP|?nbrB$_!v{rdFNSE@`H0~vWWT;yAB`;IF%PNHOdO`0*bTeN3d=GFR&$q|* zh3H&N&biA{AKe2s0xwcbp?`dn^Zbuo?C=@Sz*uEtYP7ilk5K_|ZG*d82Dqg6S>Z## zD8wm3N%aA|a=9_d7q>oh#p_t;wt_JCJ}jlFUj8_9KTsL17evAlR1>CJ_<~~BBlM;Z z;5Q17G*`NQjgsb5gY&|4OyH_rb{3cMQPi{@os<3)f`Q;I<9#WV&z{>g z+E0aAo7ER07vWOqATXtDEp+;D61ddh>gy~v7dhL_$9A;W6;XcqI}VP4!gb#_>IwP& z1nruI z?2)#@YKq&V<71~z?aAd9Gk63KMXzE!)z9t#7MqE(Bgv8zlO_p}O=o0GJgAu-gl>*a zSGIXzXVgb?`#3@CDXOZpir6$)1qo4$f<`<(Hm_0E00ZLis@pO+^z9-;FDEmIqmWe~ zMLzE#K$wD=g+x(4f$UbTD!{aqiT4%wx!AmdfIxRNWK`AX>E#geF@vj@_9gH6wJf8? zYn_LmR3`~Ge-z)LiJI5i*5>(K*8R#4C#+f&(>Zo3t`6=u9bGO}h+s<>!6BnflCGvl z>-B0NCK^GVJrG|OSn-7HdE=tSovq?Ai*apuXv}(U0zPV@G1d?6CcHjkQbgQ%NbBQk z=kEwCkp#pXDv80BC@tn`k0zhI204ZQcz1eN zE`81NTFAzR&hm_pDiO|NsuwbCX*(eL2Y-h_W$(r3i&qo2p9y$zC#lt#Y<7O)Dw4&7 zHgrS?jBeD7SL<8J_JmFawsQ}KOljvSZ5j4wAL(hv%c}S6pz9JBX;bkoAWj4er#S>P zYEHz3wyoCCxx4rAa1PMFivuw-J$WH19z7dmS8P%GHC}nIQk9J7v9~%d?EA|IFYZf~ z+c&v7_Wo9U{bY0eW0)-Am8f>LA+3@^jH+GXxUHz76$iQvlLg#PRRr8#Q0~JnQzvsD zr-Ra+rm548w!MdQLN;zJazEz~R;9iP#jO#SJuNNzo1GLwE20f7#NgtuThj8hJ&-&4 zq(>jut{vI54%k{ej!VRnt{0ENwW>Svt4$ffYQ46oC26OcevTm1qh=*&K}?~7sJOlm zpi)mC02TyHoK-T{na0}Qf6DXAe=aiY4xGAY`S^=NsCMOvXvFkE+iLaNm2BXmDv=zw z884>4FuH6_2oauP1v}k_pK5&PS*FUCX1H=&< zL?C1*7rz`_wFzwJ7m^`Qu0*@^D1jcq(y@Ie{nLXB{f*Nz5lcVZK3@UED;BH;`^ve^ zQnB_jIFw#_v-^#%H4r9$I~jL_zTg^f@ijYiyV`#x_K+WZx!fb#daKP94%1GYpGcja zQ3_?OrtrV3*45{ z5>dnN7SraO`Ev{I@K#&Uh(v`ZE!LdtVo$x;yq>~eB zxJi3Fo{rziUoT4Ecx+j_0ONSEL)`|>PSMKOf_3sMXH`aNz^h(~>vbEd=R)Shie{&( zrW?0w*1v3o*aVSxnuW*vyuwwN%mXWgjvwPtQxZDV-1yn$d4rqdNnR_C+vT;PGY%Gs zK&}Nz+Nf}F<~ofWYBEfT2yJp-gQtUI){82(oTn9@lnVeh`>-KBHKk|D4sNbXFqXRc zHuM3Bd_2#(ZriqZYzWx>Zxu-as_z9TjQo%|u=#ZG3S<1*auKA3yzR8RrSv`HLsmQOHPLqaK_BIX9D+OCMny(_=L758LRV5+ z-w7rAqSsr>qr~d&bDP%L)`A*dj)!i}J24Wkwn@iPU}z1OY4G?#RshHe z_c{qKBOi*X77Zy;rsb5}?$ZXK=}KCHAeH9We-Bm-Dg|GE;@=~%la}oFsU8<-hjyNh zCvb*RE8tw_o8Mx=c{Hq7aH&6DW~bJFKyRus-}m|ea5GkL+%I&4qd`gNTb#wTcDu4( z(8_c)f>g94HMhN@LgwN5_Y6eB)H~Q#7Y0NzKRR~K91(nt7okpFx_b3I@8*x#7d{TY+97~9-J0ja_LV*} z=K8CsWEbglfD%q5OKTDCpUkD#Xk$huRl9uuF5uJ=PAtOwY3EjV!Wnz?aAN^>B`osa z6Jq=edhTG*_j<&7%mLJ7tQ&YCU)oxu@AKFN{RIh+f3wFfTsUx0S@~go>RS86V>@zq zik*g1K_VgbFqi)o2@^56p%-X{K;5{l@2=X`J5P>jWJNRI3GxvItOjRuNK zPkkhhL_K6W9sg0Na}vFOZlF{<->SmkWYDUG_ZApmUJ#f-eGaaW)je>X37UHF4bAr6 zv`O2(im^5c{vX_?SAxEKv;oUq6a3d|2vUx1sb`M}D)xRB>dwmEf9S}O$gPdFD2|XH zkH`D1ygV#d0{dPc97}#p>mgQ7om+^e-J6Y5Pi@V*b%m+PAB{kLyX)*(y*E%O=2{WYY9=AH^O^mxQdmlNrh48cky7;X0cfDKb zNr*+DT)Tu48xIWE@>I6j_kYPHtfK~%Ic5aldW;ewEOie^H9tkWH8a@<(K*`v`LUQn1 zmB7^}DFCpCcS~0cs{%$j7qyxCcVr9L>7N3oI5$w=TtnHVMR2suDdUDOl{ivYS3B@Z$^ALH%vEn+fAw3TX1#;QxI_rUj{7nm_(6d$T zKB7HQ*FNMM(Ic)&_<)&Viuu-q4>XviW1>t??ixjz9$4eIsG9H=t!b4i-wG_c`Hxu=n%^fZxbAycZV<`|OQ!l?D;bmJh^kD%- z?V{4`LZoNN8E%40`%!nD1`visIdsI}6`>NF(E~B>8_uic-3B_)tQ7o4AxK6X!9S7Y0|piQk4K1AFU}TugyuyTKAPGH zI8hi7M4~iH^fWy$kg)(y_IZ)xiy)-g-sG7hu0g$lKGW?yi@}S5k3*2+i=~LxfLxaM z`5lLXM=F9>lW`t!y;DA!5#&Nkua?3ZlH5&T1-K@^<1MFs_vtWoFIKx?nWm0r0=dt9vz4K|mroBlj+IH=fkJ?N}G3%w|#c)Ix9CVDt z2nplCxbJ?RNvKTT$vPQFp*mp<&OsEPCpFe1be{pIN=f`~wy;4TTi?uF zzLCou#CEtEaK><8Z-Q2+$CS_3e2WYrbaScEP{juPjdU4zNUBj%E-%)?B`v6_8t9Q^ zpY>Ih{07=tRYb`7oKSI#oMpH}#w@g~=29D}MILo)Hq)(-mVNZvWqfR_R4eG^M~q~U zXJq%CYlq$?9DF#kb~t9GI~7O863HmP@n^ka8|VE@pU%BMa)AKK9L4)ROi}7+6I?^f zJI>#f=$0`T8j7(d(8hG9S8P1=uNj|JcwJIxFFwrG5$!k(Z(B|7 zt4TedWc@J0f3CPO->^!Od|to5@nG>I9t9gtr6a;Hcl&kJP!)pP}S zZH!bi$XVphmg}wI0rVpt&!YlgR?#XvR8|=)p?W?=E&~OM-@kKoy~cD7ywOB z1Zk@+$Cu|ji&14gkUzc+-p|vM(FQIAs1+4yZkT{oX&HXASxK+})G~D~nA|GC__WAm zsz5l23!AtvY*Bh%>nBzCY-RvuV1>vSa59*pj6uSFFF&%4#-NLR)r)lQxrSKFRY3ts`GYm{e7&*xT$f+ZF| zACx(^7)aP)N6GGe2F82!m$cKby*dD`K6s2~o3qj`mZYErjcltAspi?g4l=sZeAKjV z$H55nb{jve1eo#TbX&P29y~}tIXb7EIzLnq2)t(r+L(Nnylpx^V;+c_v*K$?`w}bs1)mB3p8TZ*mjEdE}7TF-8g#uo+cW%Q~ZJvzgzZ;h}vesjp)E7S@q|D&k z$2k1F%*Hn2@TU4`Yg2GzS1ytfhz_9~&Nea)ywHiO0TgFLa+WNsJIgYA zYiDO%<=8U;rWUSyBcMnI8alwDiRJr7d-Hj2#!EPA?9Lku@k$smw-=?a^EL4-&$J z?OXv^8}o!-&iT&@Q^n%ABn~qKr#O}UXdAwG`o*MHDYzpzude4c zCp7!O@T0AAeGkR?e`O%{V{vNRO8!%`<_25zj0^vOwd+Pyj&wvz(6Rj}&l=*?N5|JE zp;PR`-uRJl1nSy^rrz&qK}%R58VTNOSZI5?(9c$zH zz7X0bsAM_H!hFJ-E4u8S$Slh*NLywbR^qd%$=vP^FUe1)Y58DGp}v}5 znfyH|*B8T0e(C(l<*k~C=~u*5XhewkJGT_6Fj<^&Xx_4eh2w~-_GBcCf3{?49&0#c zdAV)oz^{27%_`{Z6{IIstslcTadt^xg5U@zloP&h2>Ybyc`^Ex{uacM909kl`KHd z`@yaVMV8FOynt3LapRN=fFAeoIz6YN!Mzk>+T6F$i6I3S_uW@gbS8)DsF~c#3x9#4 zr-Avcx~~t#_Ii%FjVZd_imqrHjOTL48sHHYae`H`|posb#B0}A(F>#ez4q*fC-K`((GSB6#&$S=e#>&euCAk zSnK7(-(JJaN#cx%(DJvN8C=c4RQQ;>_IHCjN(nHD}E@n z`#^VHw(DpurzuS)WbS)xp%Eih={<7$bnjPRl>}R~ zA<)KSztCOTzv8M9H}fI_AU5m zb+2xw^_^x^ee?;rfIB?kzs6$lMW0wkwNZ4Rx8jv*4nK~uS6!)gdUfX4VeHzX$StVW zaL(!GR~bEjGew>3&@fRzIw4nf+wCTY%b8yr_;YN|JKrffw}fi=LyxO%55e6~r&rV8 z{d-Eggje_OV|DR2ng1R%Ox=!UPkI_dTNHLnP`L7Ko4WY6e+#)P%zN-T(!X@rhv4cx zB&86D6g$PD&s{lDSks`72MYAg_2rpIG35P-FV8vl5k)WknT$G^#RO@QC-t$p?VY;p}x5F~<>MqlAxR)Fkz(^%AkKeFWwF&9xT^q&<#SG_``P9@-jV+Ip)ns}DuMO8ruWGS z&VvW~rB@^!LQPqQqXaxO`a+dyBRvPUr!Y6lRgFQOFU*VY+iIQ|6?HfhZR2;SsCu>B zxn_C!>0UsdS;5i8khPiyM%1s*xbb{B(&^g24><$<^hu*QbSGr#6Gw>AZ~(brw7dyH z+RXUW(~WhDoe|1S_0NnnkX_j(k6xjk%8+8p?Rk}?8fOGL%oZc0BHpgDX3c`)k2$RW zt6>6K#yWY#v&!aNMaOmFQLG8r@+NiI0-OQnHQ1Ro47CjUzDM}{TSDvkJu=kZq}-nG ztswMTo5>VKmI^{YLK)Oq(_jTQ8Q=|y7;CqCW?nieIJgR@QuMMKiyJ`B#f7Yj793iI z*zL-eyRyqa0un;V2hq8DPsRC=PaI_UbwAej>M zqJQGX8}EB3|A>omt0&J_AI|a2Rm~0TblgPd^nSUzRTQeWEwKlc=2?Af^CQQmdRNHa zY4T5yEb9Czy;F95Ra;HhacW8G2HVZT)oMDgF{a=Ucp^^LV5_!Iq=Anxk-FQ!k404 zehzHFQ9#1}9CrbH-JzBe5(%Va$ENj0!2I5$N2WQ`3@+0UaE>6c{2;;nz2x%0-hX^I zGPx9+#@dN5Rdoax2Clu72^u>%z5?F~T0609Z!P}87#TVH%BjEPUHna%9$(Vi0zq^& z0OmA~qB^rRsrPO@ ziPiVpFCALF#YdeWeF^B)a1fLBG$7w$G{+8M@+r9*GreT9&p=|ut%jqY-WVFpWtY{n zIK!70qnMcHiY4BCvc0}IUqO&ws9iBAcEcB%+<+`K@I{Hi{6Etx7)d&jBcZ<)dEi5x zSE9XyXkHLOzD2&0)MA;~*P+-B8GQ095mEV!hU5eEs2aB)r@h zD)Uxut85ax-n$(VAJL^r%_sq)G@i_(*TBrjTkq6M09aG|!UaNh^a4@za295;`v{j#tb{K>c>efkYT zOm{_5r27ru2~km7W8&?~tbjHB6^Bo!ub{8S&X?u!`r!x4vti-*j$&C3CAIDKiR&sh z$h|GAj_LBwF!5ACOaUf;*^QC8% zY0G-LxE<}bQMmsN@?5ud)>Ma@Y;NylCk2{ZOn7R*}bRESw1GfD5W@rlpBCd>ZRgbw`us*&{9}hCLa%Q$GKQC4xjU z=`TTF>x56i&VBxN$@ibRGt^ik3I&`0QYXfg3gS-FO_Ma5)alzGFamr+QBYR%2&{88 z2}8-^-X6sSZ{%W26U+C8#r&GRx;>k8^~~ud%vzny)GP5VEt1QqsSOqsfOU#=KN#!F zUN$eS`V%q-?35&yw?Vhx)F^R>tpB!m?38-3)a|tb@pB9fYuN+|G@&MVA${}{Xf-BV z+k&VNJkY(QT+Mvul{iGD@1?@%`D{bDG%RSjd38_Mjo)<#BAbQJ`T_K+{}06akLPN` zb%iZ!r$RT^-Ys6+N=5n2@nf@H85k%lz2mLfLVRXNBm+hTk-67~D=de7ac!fsDeu<{4&zFdkQ(J$I4fq@fJ!a%cT{0+TF*%!B$!X<-$jY&%Ph{ zt6VxGs&2${v6nt_E2xwy!V-%Pw|SX?#wmr@w!W zUR0eo4{!YXgu&}KSdm~GW>G_)RRc=FYDb0CE}cVfPpd95Z0g0=Ahg!#1dbJ9(KiB!v}C4DPR1}PZ7HT`en9iy@* zvb{cxYGu+kUZA&s%bi|>&GSh%2LV|1FrX%RdUl(hc?jL;H}3yuN@pOMk$})`9`7#z zz6hssft@xbC-u3YfblVbp}?s(OSeoKUE~XVLSq7VrXt3eCE{A6dX|E3I4ZN_gled>dQdQ-oER6tOS zhf_1V4K0D<=Z&G!u*C?Kbn;t+M9`FX-~E2`Gw@cE_X`U)9PxJnGk;^DrQI`#@neaa zNN>8Xa<+WCBB%f>22{fY&h_>rbhJ*OzT_9_VBUcq4Ly=|j#g{){O@+@(t2m}Gh$PLX|VceA}Oug13^%wu$o&d49M@CtM zht{vLGlBaIRCZQ!BN%E?C>aMB%?}C?qFJh%V&35>vJ`xYHDMXVfG48`4t4o147q*A zu+Ebf()B#A^&OF_1cW^$d0~fcZT$*9orj&EXh#H zoaO;e#e2Ngi|c`=`So)sNXd(=98yz4-zciD=*jcH67%i zs0ic#Id2_3kr4z+u6?=WU9~c?%%}XUTZ-3)2k8BkzF7}0W*#F(FX3J%P12&akjjfQ zS7#g9jl_P&mNsr3*_>2WaLLu6$;!C&B&EfTrP|F+<_tA#rHPQuaWB1oSpwQI;nYtL zd@qXF$4&zCAghS!p3eRE^LqM(%m?FSd)dvs4`hxSSXIf}tEAHg8?~nP&w9N8DVD-v zr~m1$;4~L$MvydD9A7lTf-Dcgysy8N)29$GgyMBWN%KvXQ$wTqvJP0#4$yy_Qdt_+ z?IvZ^z?D*KvZqb4ghbI#1B<`Q3o18i~=#EPa;Hl|E?5K~jC_sH%v#KB?g$1$&(zy&KQ27~ChNZHcypZvCesaYl_Qf59# z>*O`FImP&pvKo{k@@-eusm9vUdNNSn>h?9!=E~}0p!Cp9yt0kH8lZ#s(0TSDmk|2b z%7d+~e8$>cWhfhzJ}MS8_?l=`mJS-U@6X-fn=R_Nn`n8V$yzr|ct@&1+mSIh#0T{R zwe2(qBfwo)H2Wh~l8|XtA>_dRBg^4Z_~kf7ln&WS%PcI@&{gjI;r+v{AG2BzE%Mo? zh#N6t68@pA>?rz#LBVe5OVHqXej(YAUF7?*IDr*M#MlAl)Xy`nSco`qMv$Y_I@PoP zO>tKGPqU-wF$jmP*T~VY2i`w=udDX?zEF9y6?!e4_EONE{~tEk$l&|1nBNF(li_%W=J4L+Oa1mE&|Q3la98x7V~A=aGD>hkmi?nj9W zDG{P5R1<%@Ei=RZmwO#5$R%B7Nxr7aJhhQ-*Nu3VL5X%hCa!d{9nGq>J@)-H?iO>n zcs2{mHVcN}6;we>%YIwZf{1iODLcJ})M>W5ohd0K=Ex>X^gI_I8oS1N#)rL0=J?75 z?Cl`_V_Y;G9z;fa^V}+3$6I{>TNxg z2L``h)>1!^BXeko@6h!+u1>!&3P~XUi#^3!q2x!CrQ$6s!wiYTH~uE3dT)jybOqRXlm`sV zO>n)3g{_fg#B@?(g|$3#Mk=*U9#u%ImFc0ccD=1BTwcj{EjiN3XwUgm3+e9XG(8by zpbaAPy23WKTqI*B!jA2 z4qq_I2A7NG&11k%R=X;!yH6SMF_)LN^uzK&vcaPd0ofS)4qvgmE1o5%K;~mJLmcKd z7+P=-pbLq@bq*~A*nrdDJXa?%Od_{~iB3?2I>A)V^_p`jd4ZuZY&V@K(78#DT@I6GrWIe5~Wns+Kqif2Edde}fi?jR5~!yOwL z5XS*Uv6dKoiU%LN#@3;H-9aMLc>{1U5nPRMtw7x{B)jUt9(%s(Tg}Hz^^Mu5gRC4= zJQEabA-Jd*DH_9D48ssD9TBGNWd`bdh0r~$!AhvKCxh2lAsE7QX$|R?VUNdwl_x zL-ce2unRr2U;(DL?_>0Is$XMt%RLO4)I#{O(C?(@lXI>Y6_YfzO9vMMDY-FQq^E*l zk$avF(}GnGY=#{6UP5OYiho54S$p&KF7cvEAt#De zx-je}X0bY3m!opoK8pJ*kM>eH)j4aXsg?Cu& zT+uXbR6qr$^EOk%S}8nvXBBmxLW zb#F33ZTFW+=kT96!Ih@q#haO#StmE{QE=AxVHpU(;Ve8MgxM4&*ZLE!2T^Ny2-Cl|f6wW2>g^4Y0BU}1+eA!em+C|IZ z*|o&{V^l7kQ#qt8Up4H9zyU+jF4LWQUj1HA{hiD<48w6w7|Z4ajF4@`CNG$q+kg|2 z6}(_YZVKrkim>esVGE5|2}7fXGoH~*8UXuekh4=Va!J2W4?6u9bc7{2Ln z3VRn0hFWDg%PbGx0jOvWnS)gc+h#U0#9!D-eUa6Y z&s55?Os6&ZQl?*c?-TVlR*EPRWT1Z~_T%dKi+n}#d{WCn9ak;5gU|8IGtbiv{xPBB zECmNq$M3UpI%kK?UmijWpY4CF6CUr_Ze{sX01G=Nl4B<%689nu(^Y7jXEGmo)FBk{c{LRt!&%21GPh;fNZLJ?PTF{n{VO?#jP2el!w6^0(R#%vSQANi}hsP zCN%$(Tf)@icZa!bS;oW6!Mt_;R{yMzhf;a_oS_b(w7WWH<_)!H&p95%j5eHtXt4h# z7ysnjoB5)A+?@8nYP|42j0B^5h10Yz_=&SH3zVgXkNwTIl9+yPA1N$T$- zX*cfi*rSck?bZV7>5R-pQdTTG41L1tE-((>e>w8V`|A&Gl*~zaG9oBgQS~9qDHhVE}1;PB&FS9vU*ITu08)@ z9;%13He2fAkj9}(jNAKjisu+pBu3jN2x#iV&X?7lV8lqSr`GnOfeYdaWYbIdl3Fk- zQnr+yg!dbI*mv&A!Jrl+7xyjd2{Cg_ZSloM9J0XihZ!0Ru^)~uk1+dLczu`oE52>B zyubN3O~b0o{@)mO_AU&Eg7+hBYZhX%9;P5!2D`~1K)2BW4JN4B!DNN<@6JYf&(qrf zS@`AK2(U&11z77}{H@YE^IMgV6Yp9idYI3d(KqDOezMqoK(;t!E1;P1POk3r^KSNE59Lrq&CvoDAMTsZb{ZZ3QdM7AcMmmb*1Dbl#cOhFKc80?zac9{*XW|qgEAdDYp0NHIHg_+*VTF%3+czWI`Q~hOk|Kx%&^-wm;6Q&*mC0T*`eYKF4TCfct zl&qZ|6uOb!v^eaq@aDqFL7f^2vE(1Lmj;H^a>B*5Jna!Ba+*>sxi-rym4p8hnfC@e%gPiXzg z=x3mecE88QP=)@b92c%BEMQ(EY=-0ZA@wf#G-6fD8iY`xPkN&T zcD3t5$N%ZlIL}~40a~%O?7c?n*o>R~VABlzT_X4jS!`cxEhr|ASpJy!d->``jIjfx z41(Ej@?P{h&s9}@y+I-4)_67>6N9lOLu>G$g$sqjSYJ+{WnJb?vo7!0Gai z^4b=8UXMLA&WqEEr~izZ&WK%QT@Tne0j#|A+&lCuXEWkI^(8WHdES2`fYok)4mqpU zgsE+f3f2NTDz(M+?6-f(OZ@4*VPUbmxx!-z9kFNMk#$P?Wk!+vag84pM~0tyU0^LY z({*X3#V>t332cc7kvm{T0{}()tD7~R|3Vxhsk`^Tdc{=?S#i9isK_7fSTm8Vh|I$n2o!ui(A5-1Xx9qFfRh0T@FkoB4iR{&>z?Ln|Ey{q<)ZR=cUD8EWyDx4-f3 zUdtXTOfbfIFh|bwcB)n+CkkHh*>J8qBIn;~$;%dZ{V%28`IWlFW7IXDsTUwzVg!|p zj}lb!Wj&lE^x#{Jaqeep?Zik}xPwH8@1$go+<#u8ht9AR974SxWXP9{{tt=zT@Pmn zAL36XeKPl(-zX`(H1?)e_j&B+e_g4^?*<4i+60oQ70b9Tjl5_aq1X;|Clim zPQ6y=jcjBfu~6t0w|-Mz)AD5sR>}(fs3>>&aE?1v@0HbcCt`E;Rv8M21(j{Xt`S=w zF}h7$NIo^B+K{zSdJoHAIF)pEH*fg+-<7l|c^~*c8%jjbyJn>s#T#)#&avJ%GwA1? z?+!l5d^b~Xx*M5HPcsHU9pyQo!DzQDwA$vIPsH3eCu-RyfM$bn^bGR5y<4q(xLkPf zyM-X;D+}l){B-3!IApdj`{Iz%`$u?Xr)|EjGaQWfVk{X@1wY>VT>T4Mx)*jDKaeQgKThyBIflZMPu2F@?8S-1mki9=ku-IrL zG#FLhVSdTf$gtQjA=7owvh_DZPcEZt0IPO;O83i`6%VkqPB_L27icpsf#Zd_m&;bfpzahTLuQ6oKQzNkfp zc2%p%yyJFY|kJ_ zYidbBNn!2kYPAZW&q=YuC5Fad)ej#As0f*}>3icevBLl`Pt0 z=-iQ$S2^A9!?2?`6VAaP=E4(iTcER99zSmCh&=ANposP^?aHZggAHb4i>7_*il#Kp zhJv1db&ppilqAv;g;S;TItoiD%K0)Gwe9rG7y5m~wqR=Ks+YSR)y!t|hHc-k|CuHGylEU$E z^q`@fiVO9hiQk^oRagiR9Piy%($r>?XLKNh_5iW5U$^T9)ay(<`qPa>~q zTnS@(;@6U+_+)qm6g-b9`7Ipcx8k`<-FU1_ess+z#cLlmNc_be;6umG`+-2V3sbUN zxQiWaJcpk3PP;xAa!>IvoCkt>wkYXjzd;Jn$9bslg@jhTv*ZM3}IxwZB~2IFxsbs1q3cs;6jIt|&%bs2vrqBf-D zB%}0wA!W3>@@+MxXz@YR$adUv-kh6G9fM(FX1&hJC~a-{NC{U*kiE4-;eZLnd#jod!8Zdq>{u)2<^uveZcgEg<6lDvzOi*$+LE4`}Sw z+PX31=eKb6VsW3n{dLKcu8Ma_)85}mmJnoFWUQT{wy zI{5-)-}F;2-?D}f6Glv!AROWIP-U2@ZJ*o?{9yzHfeHXsLWSGGClP|R&Q?Iy* zA4FOD(Fs3(e7IZUu%8*QoVWk)H$o{|jB>y4ck^JTw$$&5>=p@ewYv^6seO#;uN=ZT zlgmKMhE=(Tprh=jOB>dVHWq;pQ;1))I8JuRs$9cMtKC))W|Br9G;|{U?3YI5FmAbX zZTVDOj(Q5Ac&TayWMQ_o)?AqtYSA`2*>R9Ru;+m5Pq7(M$+*^A>EUT3J!X|09S{3H zU#l%yjeAo2zB!w=OpH8P%6R$DBwZL0EbCG`nQK+S+av=?H>~B2lC$ zRX~vDNDV8=Ay#OgNcW3>We%dB&KVS1J@zjO3Rd;aEEVKGWF`b4*Z<;0zR{9F%lm7y{hK5j9ChUG&NC{>RsRGi6HpZzy)yv>Qb}H z4Q3Y|eG$^2lPBy6wR+V@&vNRy?qBLfOU<7NQg*;Gx)3Aujn`YAc}8pYv{|(YH#Sa*w<5RcqT;+BCEkn`Iq}N4D@|`%jz7 z+HT0L8M2w;1R!d(v$WH$Z)GyTG90Q)abZ%Xa}>LT8HsUdEe0g<7^n`^{h?Myo?K;f z*V0keqwOYcnl5fj_YtIT-n6I?)PM;fYnMx?Tpd~YHft~>G}bExzDDkE-X z7A0!ZvP^%xT5GiWJz9q7aK8o*o!~uJVrGnUR#kK+%smLVGk(uuA8z_`V3nAhXHa6+ zvRn*@jPWO*kcU+llJSko*j7}9x|t56bc`#DXB#gzwm9`WxR#m>yfmB7`9buum%^C2 zK}vj*(UYNRx+f6Hrv)vLGpt*!{Ek%4wZ&ajJ!gv6%CoGs_%cxR&O69i;XWqfc{#@v zZP0R^GCoSIg;r8Os{HE2@QjXPa_A{zL@K=9$v94S904mKMb+Os4gmn_Ify#b`;Xk& zY9NZg=h!vaDFt4rNqQ^sYK9tA?;Ob5cvDV?N`&bdU!zz4g>Hnuly`c7s`g$DcAx8i z5+z_9oSK?CP8rR>b>ql4S!Kp*587$zTbKC%ZoiOeyfxc4n82D)X4k=1bn_i$kYi1uVy49)!qJ}_W zRk1fM`ysGoZBv8i%)ex6C%gyL0fLUM;%@tVC!52{vPTP<&qBN2ajAZIcZSR8y1TQU zv-x=g0FFEd?ANu4m=KWX-rFBR9iaESjt>-1Tn1xF>31E^%5V^nX9N1_evt)G?pZ$p zEEnXDBINEnwFh%akt0o_StU))?G7S!6*~n8Bu7=^1MEit{OG2BRNB|bKff*^`oilZ#k+w)En3hq+I*K)z4&C~HvbXc*MK)5^B7#Sz$ z5{!P`jDfnb84o^w#V}4{0tM4D8Zt+5ohExi`(h2r<(ihGW#axZtjl+!Jl)ExXuoOT ziSb(xHcKFrVf8rQ=Spn}ug0$13gKqYiG;QJ_Ip3HKLv*9`K$gZ!6yRbTgZDUjU6Gp z1@yX0yryxX4Hmjly&qmP!7@Fg6K?%q}BxMqYkUf*U^bp%&GvlYyztEB1?+ zN)eLqyX;(zp6n49$*x z;vdc0Naqv2!Isg?fA#cK9s!ykGwEevE3{UsS!mp+ywAw@8HvTRtO~01bnh;DHY}x4 z|KnJEh~{YLmkz^}enax&XEu-6Cc1m(yu0C9o7q5C3qRE)1>-G+BgP!i!^b|xsZuS9 z+ndAPBqz!)xL`(-!Ykm`SKo6LBF_m6rBEFQn~~)<*pp4P7R~KvN6|9@7Lj4^AFafI z(a@3nhjxT|>+98#4nlV#7;>q;N zmK&Y^8qsq-Dx*YX_u$aA49p0nEaOE_ZbHSVoH$%WEVcj zs>Bg`)1ag{E=C%HDk>`PC)*P0r>E`36chEGvnX=@Dp{eOgOqcG-brjIz|J^EVmz;A zlvJN~3iD92R5wlZM-Yu7xC;BqGX2ixq(LVwHjBOAl{~xuXj$B*x~E1-h~fm}M%089c27R74>=wZ3Xup-l=h?y4P_&b8s0~TdCYm{ z``yGjA!$d`XixkVM#d+m9N}UeO4$9#vFoGMy`$JJv-uWLTN4=eZPim`C0=>h1I;MzMwwf8j!buje#ZhgGn$cao}u}@Hnz8Vk)6QD~7`P z`Wt5-q7%9Y7GazP()9-;Y^Dh%9~8<;rmu}plq1%CCzpL-_UezCv7W=|wyZqK=yC?; zL`~S#9nHsKw?Hpgk>c_=OM8;6Y2LLW#XPVx^95I42z?h{cJ&MHDw%*K-D8Hqr@l5h5RsSU-`CI^`Q?vf?~fQf*b7kF(1M)1prLn$ z_Yiz^Sn}zG3md-!{l$?zC~qndv$qJ>nvwQBW?%6g3Mi;MPt77xIODHK1pAZek{{&vrY=#@;KkJov;_&$|jM?BJ%(OrMv zTj6WzFVCBo$9le4Tf33jvhLIB6o{|v6SpYnXt(h3?Yp`8-TA@yR=ZKjk4wW72FXd> zE|6AnD)S}X)kXn{Tza%`JS=zKYN=AxY54ZqMB7+Z&70_i`O5y5SIMVRt?>y-U~l^Q zgS6Av1utHMEfN`$hRC@=I$C&tS6-W){TWG+}v)!Fi+ zm$aFKQgf$7?+}_ts$Nnnxq)JtKDsy=rz}C)7Mh77c{c{Tf>QaG;^KZWlrqE0#k;^)mKD#S};U2C`$D!A$1^uv%y z!S2h|X1EF)p$=2KmM?le67h!YGsM4}=}rb;8<=&A8e=_#oidDA88<$PZJE zlf15M>N7iE|6{=+5I%NU)G}fj8X6<#64GAFiFdJ1s!Ej6o^>Vd_t);(?@xOAXb6%f zca-2q5SBrH9=LxPdFX{jrVHcv5=9KfD{P!`G{*Q`VFzLZ-z0za2~<8bgViq<tWrn-C+NptDos65XrEpAzQ)|!nxL_@GjK1o@e=f_Z zLN+u@vU(2`RS9>za*uQW{vvH^L0uP6#Ho*Wb`*qTLVS~O{dbH_hzuIlI!oE{@VMMS z;%X#(tjF%%sB?^kalc53b^&^zI}Q#-ggjIFez39qrZ3MMkG~(ab1hYBuZo4q$F;Oh z$XU;!gk3iIPT^vQhVr`Y1TVHMJNU)jX)6{qC~(@K9==6mQjT&g)RhD)s7-@iN0OjX z-ZhT?0&@~uf6DqQf2gkiRn+}>+xEF~w&lK3x_rmzuZd-W&Bxx`QLLbaov;IsUqnV3 zA@AgPwF)QY)y@^)=|VLr+j(){Xh*mzz4zQ8sAm=0$(`!OO?d1epvtykDGXssFLIRGpPXo97(ZO@K`X%3F95l+#X+xFN&uNvzl? zlB87beV-BJ}+;Fhx7hSQv=8j8uIr zT9xe0C8LDi8%Z^|n20~0H_}-(fnIc0h(}Nxb=Z056EjZ#)lOSi%rHS*#t3;IyU#;& zV!H?m2nOVuzoBOI^~#6AVk`#KGtuWvfJQd>Pk(1d(;F#An8R|U%eIIv&2>+p9ztS= zNp)cP*v__&EKSdm^YaILMFX}Ww2`)v|LHCb?R|b>mBSq0Uj7EoP5@@5eL!7+QUk@D zD;?!?A&|q3kpl*bfr(yUMbA%GiFi?#-MV`}Ijf+&Uf=Ymw1usr`1c2}fA|dz#)X% zsjE}>DyBSx*qGG*Ja*rxFU&Tu*F;(iu%gw9*<})O${dU9oT*A07KGlWrUG8S)T>rRe*XVkM5B$a?wF)6`az_ zT^t!gY@V=|>`rUhmAKza*4DfrksR$-;1Tb=HZh9WD2swQg{%#RV`E;aT$rSSi7Uxl zhQU>H%v^&p{ZAJ%0MghgN7^g~bgLs&3@54C_;4{s!Uqn@rf6P>rDHoU^5R%yyepA- zKxTTQhmM$rdg$}J9wq6Q+9v3gjxyGUy>(eF*T+_-X?!nSjTwerjo z;n}aA5;bM9fAtb^=|$=}`6kl*inVn5chd?<71}w{-1?6QJ!O7tB+18Bw+ilJ9U(ha z9AM(Tv9#hiDY#0>e$$e?c;)VKxL%=nzag&VnLaZfY(#HkKqwNXq@Ml{936^3W|-8G z1mEcWE1Vu%tQxsUmQ^*Oz<8!0%Af6xO&ca}UqkuRJOjI2#S6H@cO6q)AU^B4Fw=fLTl>ZD~Uu9lX9O8HzieeWHL(JZY>sd2Pv?=ua`mLN> zVWdm}J>l5SM~S}L za}SlnUq0kdy2Sm!cJ!+5Xc~U#NOtYKt0?7&Na|a`n_?1i20uO_E}M%Z;S? z=9l)vj6EE`p(9?t|JWeq6;7GAXHVguSEt#Y?pwosn@lmP#{7jT>l^b!E(i(gBY~0N zBMIo-Wjm~AZD~NoBly1V{mb8*3??rbcja*ELGnH1JA^z5@19I;tN+oC0ANb9s6VW8 zB}vZ8tMPEg-wXrr7QJfQg^lz^p~~15gYAK{)vxoY(hGi0|B_Uwmlw+r}3c`{H`(Hs;p--Dp- z3%Ca^E;#d@*!!5nfI*^hBYcK)Ps38b2fDUkJI$uOj|uk&B^lWRt>b%(H})iOQN~nb z*RlodERuszc$meeVwVR5-fRI}{5<#z5dYnO)MtQ!r+fZw%H5Iv@2K3n@A~fq-;s+j{u?WIXUV_I&Ytl3@3Qm9()#ZTzMHiDn+)wF z*Z<~~e>f-po1*W|l7Cb5y*bzach$}T>%@k-I{)b(Tx>%%ra=Kus=rnVlK9`5Z>DPc zKBG-{r6$AGi-|h+vN(2MiwN`~0KK;ws*JM|S@HquYMW7|s(C>V%3_*#4WXid6o} z{(_v~AkD75S37+{!M+l9LH3VIItWzKOn3NLckT+_c}N(*mYWwc1I3tQ#hjwgC!=y^ zH^MV<&5`p_h&Mw(h8s={UcQ*_^P5fu-nJSP-?NWI+}Xo9UIQ08j^xFw+|=DI5wJMF z29}4N=p$F^Sty!+KRLjc)E3_4*{Ao1$P1Hke%xKgQ9v7l`VgTH$ouk_Ul|Z`JkV*% z1wD)*9vZ^BQK_dNT?}g+>^`2K;IsYHb`={eWM1KEItNNQ9wj+u#iZV6F+E|@vPjti zD1owGqpiNtGo}_0lO3bj_s0MC&*07wXrdeHaB17nr#qyu%VnjbIp|#mAdB7Ka|UH?;KdC zX9s#uDvSaCho8?7XvjX_Aba+`Sz)gUpbNF9DdF}6I{B0p(9vb5Ia&X}GTcEMpq8dP z#rNVC+0_6F!3PFW{sH&w=;8MMVn;Aipz9p30=9dDH2ij6Ra4~#0LT9#yr8~o@>Dfy z!pOvEc%3y3iGZQjK1B)%Yxm!EWt(+am;B&0%zl2@vbgo&QqcIQQ)6nv ztU{zAm6}v6FgZ#;Kk{&L)zP}ln6PZ+Y-72+#w6X@HI@7o=;M*SH&2>v(BSE2evPNw zppPy{Y&F7jrttknr^u>p>SlPs8-@pgU&whtTLQ-c6vpS~d(UqiIKPnIThB4#Gd#T41SR{D-7RM)&(qbCd6BTLRcvyo7BjOMnWE zjX9(z`&s9J5p^~@#@;TrLwRCL6IyBto-sV8Ie(Z@&wHjsC$*<1_Dq36^|I4LL$;EF zDg!DwW{v5dG(v2%8&250&RFTDf(T&dF`e=!RgcCdGzvd^qu!n#PLz^O?f~zT3$yomd#c)`;_F z$BQ~V57(9aIc~6l{Pt1d0+4RrNA-r9ES8^lR`_ z(qxD_n55&D)W9Rt@Il8dI(f4uu7KW8lL8h+sGvvE;~&IRjk$h$c*(>0hb4}Q$F-(O z^3tVC1N3i}VdMrrS9ZFb`aAU%Y5gcDM&>a4flSY;u~Wl-OKgj!ml4Yfa$%>WlfD>8 zRevHB9{ITx^HVjZ)n~(Rb2YGHKFc|s==;OwTcSj{;ceoqacu=euZhbLSODx~1Jq2@ z2)zt4R7~|3*ymRvLW|B$Q@l`~*Q}TIqrMtY#>7~7<=pGbwdkv^0k`drsVQCeZB`ks zNtU@jA&IGI0y-D=k?jvjiMN+WO(;*{oesP_0wcI^VB_RcINvqfa&mEGGm z(Os#`AePr|;CpUoX(#l{HggtQViubP>IE#)Qr`4ivGd~|`7xP% zv_oz^@6z3I`>9^EbrZu-Yn)xk=*BnM&#FLHD(tr=pyRzkl&DHQl3kTJAB~k&wu?Siy%7>=Uq9pd~4VIl@w!4fG2uW>H_wB3t?*D}SDq z&7YR}z511Er7(H^EQxCg?d|YgDH-N6EV1i2CepZwknz-pR$vX9oF0vf!Db@}@lGfy zqeP6y=kKnyh-it9cIkPUh37FWBR`C~f!l*Ego=nHfKkY^f1Ru{n~j{z-SK zZdt2|C6+@dLwWZ+Z*q?MEYVnL&s$SQpX}UaTd^W)r#v-!R0*bR8P5YUWR$yC?+n6X zo-B1-uJyi-5`Ce|w%fX3pn+a{PXE02^cjh3qigM+9=bD2h-@xs4i(+vbQ2I`Tw4E9 zQmLxnid~FPS-?HXI%U|DX4oyiX&W`K#3mb+m8Nl-jNejhi!Au-#%cjcR8X%QXA27# z2mNLHY5ua==kYD2s$f>FxC6KdpSUv(Ke)2FH3oMc6Ym$q*?u~|d++Wqvn?R&% zQ0imNJ%@ArUxZQaiDio9#KVR;bs8fnifou>?~{@~>E26^fXng|rNBcx>nDN0#>aZ9 z{p-a!_hywqhErc#Bi{`p&d%?fUJ6$&vpFBVsIBMoa*w3+#_=GJ)!MGEF2zYA{Po1} zPdP%4uDgzF zk?YBJ_84%T&JeL$Yp>7;l%YCGFCdv5wWmZKy3Z{175bK~|6S_`{C^&O=+l)S;Wytb z!2b1!PM1QZCf_h1iZ*+^mK<8+wdBGRE z|8wSCAwh`S<`F??ue3UYToK*H#wN*GF(n+D{N8Q0Xm((WTo~k$jxs#d^i)0+}2^$nIaq2iVKp2ew~es|wLm1ot3kGudwCUvGY&e{%aFzlxRr*I&DFBX5a? zg@rNE?>$gn(Oo!SRN9UMQvVl+q2W78x0>mVp5rwfo5Tp0V3)6c;&AHx)v1nn?t+>h zK1FVCm#Vak3M~XZ@Iz-APRo6Xl6!Pz*Zd2^8LN%#ofH---QiNLG2SV*?9zt+;=nWP{{n|>gi*`EUZU8+dlDz+^vSK z8ZJyA1K$t+{MPaLkl(GF+^Z;P?)%EojawI-`p?~&?o35J&Rm%I=P`2iuj_({tdkT_ zGXvR(t_o+NjMyDe5n9_HV)&!9prxvHTnO|>2~m82;TlmC5*>aj;ELaxUX^yd9wo|J^UZ9hStX1}<-?q~}A#Cyhf zEUxTsY(w2g456uNCw9K^SpF&fTl9+)B6o(mr})>IKJ)Y#nRuEu(~6zRMkziO*=Z9p zG9I0mjMcsj^z<|Y(YfgP^{V3~Z5&VU9;j(X+YB0-gyo-0Kz2!Ggv_ToDpj`?AdE^a zp{x^S9Pc|}Z4vyVCTdbU@2)^b3jV;9Co5@jJ}*#XG)3sxEyrx_Pr;3`BnKA}C2iI1 zOw5ujQQ)SR*HF|!*75oI=`6b@aBRb@tV5~=u6uR7x8Rv(V_L8{#u>$nD?d0qA`vEF z9%LCsn8jbsoIEMeQ+^FzR>s%c8J(1ZqE&9*nW)9&QbkH}^sSv$1@!tGNW%5a*souQ zE4_zm3ele!e zIdYfVJYql8;Pd#;m&F}&qdg5_VVTx>4wUW3tZrC|AmS%Ma+^A)?6uth`vRWTJs%z6 z&#YS0SfH|#?YkHjB3yG#X5syjtiG&TVQ^-#pm`xHk*>oh`BL#G1FI$BTJDl&oJ+0w z-{9y&D{O&zM#5xq5%bFln9$OKk%Qt;IQA39bt-rj_zEks!emjRqH|5f=ci1vbJ|cE zmj{oZR`UHJ;ljP8=-g_ApmU5%l>5;k-(a4LK&a*MWq@Ox(sAU`kD}=!7p|!PRD^mlQQ3#TIb-op$LPlkwmSf?_*&hYfDqccOA{uAW8@Ljgy0W z_u|OA$oUABgrOD-WBk`Q)`M=LR1VzK`NR zy33AgWDJ);Wm|<+xSR-+U5O>-SKPgPKcnYy&k6>**ZZN|iEax>L-*1SSfnSp2D(Rv zcEUBCe?I8uiOX>kXD;P8>y??b@i{ok_5Gl`)6+9s*cTh;`X(>2`Lxw^d?A=wP9ifq z(}9wvk-ke)xO%zQU^9`RHv{Rd|4X~AxGQGO=tgwbB4%V&uv~Dac=BfB$@~&31!$sb zAo@2DB`-}bMP-8;%4O4UPYaXd@9k;j8C^vPr`L3r?x#XkEU}mV$XiB;XC}tYO^W7d^?5ZiVJq1?I z*H+S6!+Q$O%iN^rpSu;yd@zu_nZrS8>TXb~6OHr&EXEv7)XeT-C_ zfU4;TU;@8;?b>iz%(q*K6cVW(uk`RJ9V~fDB^5C^P**1}ao@*&{T2r$H~0J&WY`4Z ziQZvAQePt%|1lT&Iqjz;Kc&ScCr74sy&8>-_qC_UP0i0!7BZ$)Ys|-OD*oPk^wZQ! zSBA$t6iL2BhlP(14h4g>DP*polHncM#dp|m{}k_1qi8=yQfy}l)J*rjxmq6g+h~-i z|2ogc(9}O$>e`;fPg>{hvB1cx%K94ZY4`n z`?!;u-h@~^$t7_+EQ9|WpaA|`UpE_C|1fR_5{UnMo96#RH|PKMHLdRpqq?_7&0p~r z?-pUCUZ=cUW_r6di^IX!8YLD$P*dBzWu@wZUH_ZE^IQQl!?56-&<^~R++Iu5; za&VD4`{=fd%vM9pkYvFZ`6yg8? literal 0 HcmV?d00001 diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/all_5f.html b/src/tracer/pintool/pin-3.13/doc/html/search/all_5f.html new file mode 100755 index 0000000..9b7ef6b --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/all_5f.html @@ -0,0 +1,210 @@ + + + + + + + +

+
Loading...
+
+
+ _callOrderBefore + DEBUGGER_SHELL::STARTUP_ARGUMENTS +
+
+
+
+ _countPrefetchAsMemOp + DEBUGGER_SHELL::STARTUP_ARGUMENTS +
+
+
+
+ _countZeroRepAsMemOp + DEBUGGER_SHELL::STARTUP_ARGUMENTS +
+
+
+
+ _customInstrumentor + DEBUGGER_SHELL::STARTUP_ARGUMENTS +
+
+
+
+ _enableIcountBreakpoints + DEBUGGER_SHELL::STARTUP_ARGUMENTS +
+
+
+
+ _ip + _tcpClientStruct +
+
+
+
+ _lock + LEVEL_BASE::PIN_LOCK +
+
+
+
+ _options + DEBUG_MODE +
+
+
+
+ _owner + LEVEL_BASE::PIN_LOCK +
+
+
+ +
+ + + + + + + + + + + + + + + + + +
+
+ _regDefTable + LEVEL_BASE +
+
+
+
+ _stopAtEntry + DEBUG_CONNECTION_INFO +
+
+
+
+ _tcpClient + DEBUG_MODE +
+
+ + + + +
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/all_61.html b/src/tracer/pintool/pin-3.13/doc/html/search/all_61.html new file mode 100755 index 0000000..fec6eae --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/all_61.html @@ -0,0 +1,274 @@ + + + + + + + +
+
Loading...
+
+
+ AC_FLAG_BIT + LEVEL_BASE +
+
+
+
+ Accumulate + LEVEL_BASE::KNOBVALUE +
+
+ + + +
+
+ ADDRESS_RANGE + LEVEL_BASE +
+
+
+
+ AddrintFromString + LEVEL_BASE +
+
+
+
+ afterForkSyscall + LEVEL_PINCLIENT +
+
+
+
+ AInsertCall + LEVEL_PINCLIENT +
+
+
+
+ AInsertVersionCase + LEVEL_PINCLIENT +
+
+
+
+ ALARM_ADDRESS + CONTROLLER +
+
+
+
+ ALARM_CPUID + CONTROLLER +
+
+
+
+ ALARM_ENTER_FUNC + CONTROLLER +
+
+
+
+ ALARM_EXIT_FUNC + CONTROLLER +
+
+
+
+ ALARM_ICOUNT + CONTROLLER +
+
+
+
+ ALARM_IMAGE + CONTROLLER +
+
+
+
+ ALARM_INT3 + CONTROLLER +
+
+
+
+ ALARM_INTERACTIVE + CONTROLLER +
+
+
+
+ ALARM_ISA_CATEGORY + CONTROLLER +
+
+
+
+ ALARM_ISA_EXTENSION + CONTROLLER +
+
+
+
+ ALARM_ITEXT + CONTROLLER +
+
+
+
+ ALARM_MAGIC + CONTROLLER +
+
+
+
+ ALARM_MANAGER + CONTROLLER +
+
+
+
+ ALARM_PCONTROL + CONTROLLER +
+
+
+
+ ALARM_SIGNAL + CONTROLLER +
+
+
+
+ ALARM_SSC + CONTROLLER +
+
+
+
+ ALARM_SYMBOL + CONTROLLER +
+
+
+
+ ALARM_TIMEOUT + CONTROLLER +
+
+
+
+ AllocateKey + LEVEL_PINCLIENT::CLIENT_TLS +
+
+
+
+ APP_ImgHead + LEVEL_PINCLIENT +
+
+
+
+ APP_ImgTail + LEVEL_PINCLIENT +
+
+
+
+ APPLICATION_START_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ Argc + LEVEL_BASE::COMMAND_LINE_ARGUMENTS +
+
+
+
+ Argv + LEVEL_BASE::COMMAND_LINE_ARGUMENTS +
+
+
+
+ ATTACH_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ ATTACH_FAILED_DETACH + LEVEL_PINCLIENT +
+
+
+
+ ATTACH_INITIATED + LEVEL_PINCLIENT +
+
+
+
+ ATTACH_PROBED_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ ATTACH_STATUS + LEVEL_PINCLIENT +
+
+
+
+ ATTR_bbl_chunk + LEVEL_CORE +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/all_62.html b/src/tracer/pintool/pin-3.13/doc/html/search/all_62.html new file mode 100755 index 0000000..2b48c15 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/all_62.html @@ -0,0 +1,158 @@ + + + + + + + +
+
Loading...
+
+
+ Base + LEVEL_CORE::MEM_ADDR_EXP +
+
+
+
+ BBL_Address + LEVEL_PINCLIENT +
+
+
+
+ BBL_EDG_CONTAINER_PRED + LEVEL_CORE +
+
+
+
+ BBL_EDG_CONTAINER_SUCC + LEVEL_CORE +
+
+
+
+ BBL_HasFallThrough + LEVEL_PINCLIENT +
+
+
+
+ BBL_InsertCall + LEVEL_PINCLIENT +
+
+
+
+ BBL_InsertFillBuffer + LEVEL_PINCLIENT +
+
+
+
+ BBL_InsertIfCall + LEVEL_PINCLIENT +
+
+
+
+ BBL_InsertThenCall + LEVEL_PINCLIENT +
+
+
+
+ BBL_InsHead + LEVEL_PINCLIENT +
+
+
+
+ BBL_InsTail + LEVEL_PINCLIENT +
+
+
+
+ BBL_MoveAllAttributes + LEVEL_CORE +
+
+
+
+ BBL_Next + LEVEL_PINCLIENT +
+
+ +
+
+ BBL_NumAttrRegsym + LEVEL_CORE +
+
+
+
+ BBL_NumIns + LEVEL_CORE +
+
+
+
+ BBL_Original + LEVEL_PINCLIENT +
+
+
+
+ BBL_Prev + LEVEL_PINCLIENT +
+
+
+
+ BBL_SetTargetVersion + LEVEL_PINCLIENT +
+
+
+
+ BBL_Size + LEVEL_PINCLIENT +
+
+
+
+ BBL_Type + LEVEL_PINCLIENT +
+
+
+
+ BBL_Valid + LEVEL_PINCLIENT +
+
+
+
+ beforeForkSyscall + LEVEL_PINCLIENT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/all_63.html b/src/tracer/pintool/pin-3.13/doc/html/search/all_63.html new file mode 100755 index 0000000..53ab1f8 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/all_63.html @@ -0,0 +1,257 @@ + + + + + + + +
+
Loading...
+
+
+ CACHELINE_COUNTER + CONTROLLER +
+
+ +
+
+ CALLBACK_GetExecutionOrder + LEVEL_PINCLIENT +
+
+
+
+ CALLBACK_GetExecutionPriority + LEVEL_PINCLIENT +
+
+
+
+ CALLBACK_SetExecutionOrder + LEVEL_PINCLIENT +
+
+
+
+ CALLBACK_SetExecutionPriority + LEVEL_PINCLIENT +
+
+
+
+ CallEntry + CALLSTACK +
+
+
+
+ CallingStd_IsArt + LEVEL_CORE +
+
+
+
+ CallStack + CALLSTACK +
+
+
+
+ CallStackHandlerParams + CALLSTACK +
+
+
+
+ CallStackInfoStruct + CALLSTACK +
+
+
+
+ CallStackManager + CALLSTACK +
+
+
+
+ CATEGORY_StringShort + LEVEL_CORE +
+
+
+
+ CHAIN_EVENT + CONTROLLER +
+
+
+
+ CharIsSpace + LEVEL_BASE +
+
+
+
+ CharToHexDigit + LEVEL_BASE +
+
+
+
+ CharToUpper + LEVEL_BASE +
+
+
+
+ CheckAllKnobs + LEVEL_BASE::KNOB_BASE +
+
+ +
+
+ CHILD_PROCESS + LEVEL_PINCLIENT +
+
+
+
+ CHILD_PROCESS_GetCommandLine + LEVEL_PINCLIENT +
+
+
+
+ CHILD_PROCESS_GetId + LEVEL_PINCLIENT +
+
+
+
+ CHILD_PROCESS_SetPinCommandLine + LEVEL_PINCLIENT +
+
+
+
+ CHUNK_REL_CONTAINER + LEVEL_CORE +
+
+
+
+ CLIENT_TLS + LEVEL_PINCLIENT +
+
+ +
+
+ COMMAND_LINE_ARGUMENTS + LEVEL_BASE +
+
+
+
+ Compare + LEVEL_BASE::KNOB_BASE +
+
+
+
+ CONTEXT_CHANGE_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ CONTROL_ARGS + CONTROLLER +
+
+
+
+ CONTROL_CHAIN + CONTROLLER +
+
+
+
+ CONTROL_HANDLER_PARAMS + CONTROLLER +
+
+
+
+ CONTROL_IREGIONS + CONTROLLER +
+
+
+
+ CONTROL_MANAGER + CONTROLLER +
+
+
+
+ CONTROL_PCREGIONS + CONTROLLER +
+
+
+
+ CONTROL_REGION_INFO + CONTROLLER +
+
+
+
+ CONTROLLER_EVENTS + CONTROLLER +
+
+
+
+ Count + INSTLIB::ICOUNT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/all_64.html b/src/tracer/pintool/pin-3.13/doc/html/search/all_64.html new file mode 100755 index 0000000..446c4df --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/all_64.html @@ -0,0 +1,115 @@ + + + + + + + +
+
Loading...
+
+
+ DEBUG_BREAKPOINT_CALLBACK + LEVEL_PINCLIENT +
+
+ +
+
+ DEBUG_INTERPRETER_CALLBACK + LEVEL_PINCLIENT +
+
+
+ +
+
+
+ DEBUG_OR_EXPORT_SYMBOLS + LEVEL_PINCLIENT +
+
+
+
+ DEBUG_SYMBOLS + LEVEL_PINCLIENT +
+
+ +
+
+ DECSTR + LEVEL_BASE +
+
+
+
+ DestructThreadTls + LEVEL_PINCLIENT::CLIENT_TLS +
+
+
+
+ DETACH_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ DETACH_PROBED_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ DisableKnob + LEVEL_BASE::KNOB_BASE +
+
+
+
+ DisableKnobFamily + LEVEL_BASE::KNOB_BASE +
+
+
+
+ DisassembleRegion + LEVEL_PINCLIENT +
+
+
+
+ DsUpdatesDueRtnfuncCreation + LEVEL_PINCLIENT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/all_65.html b/src/tracer/pintool/pin-3.13/doc/html/search/all_65.html new file mode 100755 index 0000000..4c906d3 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/all_65.html @@ -0,0 +1,449 @@ + + + + + + + +
+
Loading...
+
+
+ EDG_STATE + LEVEL_CORE +
+
+
+
+ EDG_STRUCT_BASE + LEVEL_CORE +
+
+
+
+ EDG_TYPE + LEVEL_CORE +
+
+
+
+ EDG_TYPE_BRANCH + LEVEL_CORE +
+
+
+
+ EDG_TYPE_CALL + LEVEL_CORE +
+
+
+
+ EDG_TYPE_COMP + LEVEL_CORE +
+
+
+
+ EDG_TYPE_EXCEPTION + LEVEL_CORE +
+
+
+
+ EDG_TYPE_FALSE + LEVEL_CORE +
+
+
+
+ EDG_TYPE_IBRANCH + LEVEL_CORE +
+
+
+
+ EDG_TYPE_INVALID + LEVEL_CORE +
+
+ +
+
+ EDG_TYPE_NORMAL + LEVEL_CORE +
+
+
+
+ EDG_TYPE_PREFETCH + LEVEL_CORE +
+
+
+
+ EDG_TYPE_RETURN + LEVEL_CORE +
+
+
+
+ EDG_TYPE_SWITCH + LEVEL_CORE +
+
+
+
+ EdgArrayBase + LEVEL_CORE +
+
+
+
+ EdgStripeBase + LEVEL_CORE +
+
+ +
+
+ EnableKnob + LEVEL_BASE::KNOB_BASE +
+
+
+
+ EnableKnobFamily + LEVEL_BASE::KNOB_BASE +
+
+
+
+ Evaluate + LEVEL_CORE::MEM_ADDR_EXP +
+
+
+
+ EvaluateOn + LEVEL_CORE::MEM_ADDR_EXP +
+
+
+
+ EXCEPTCLASS_ACCESS_FAULT + LEVEL_BASE +
+
+
+
+ EXCEPTCLASS_DEBUG + LEVEL_BASE +
+
+
+
+ EXCEPTCLASS_FP_ERROR + LEVEL_BASE +
+
+
+
+ EXCEPTCLASS_INT_ERROR + LEVEL_BASE +
+
+
+
+ EXCEPTCLASS_INVALID_INS + LEVEL_BASE +
+
+
+ +
+
+
+ EXCEPTCLASS_NONE + LEVEL_BASE +
+
+
+
+ EXCEPTCLASS_OS + LEVEL_BASE +
+
+
+
+ EXCEPTCLASS_UNKNOWN + LEVEL_BASE +
+
+
+
+ EXCEPTCODE_ACCESS_DENIED + LEVEL_BASE +
+
+
+ +
+
+ +
+
+
+ EXCEPTCODE_ACCESS_MISALIGNED + LEVEL_BASE +
+
+ + +
+ +
+
+ +
+
+
+ EXCEPTCODE_ILLEGAL_INS + LEVEL_BASE +
+
+
+ +
+
+ +
+
+
+ EXCEPTCODE_INT_OVERFLOW_TRAP + LEVEL_BASE +
+
+
+
+ EXCEPTCODE_NONE + LEVEL_BASE +
+
+
+
+ EXCEPTCODE_PRIVILEGED_INS + LEVEL_BASE +
+
+
+ +
+ +
+ +
+
+
+ EXCEPTCODE_RECEIVED_UNKNOWN + LEVEL_BASE +
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ EXCEPTCODE_SIMD_OVERFLOW + LEVEL_BASE +
+
+
+
+ EXCEPTCODE_SIMD_UNDERFLOW + LEVEL_BASE +
+
+
+
+ EXCEPTCODE_WINDOWS + LEVEL_BASE +
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ EXCEPTCODE_X87_OVERFLOW + LEVEL_BASE +
+
+
+
+ EXCEPTCODE_X87_STACK_ERROR + LEVEL_BASE +
+
+
+
+ EXCEPTCODE_X87_UNDERFLOW + LEVEL_BASE +
+
+
+
+ EXCEPTION_CLASS + LEVEL_BASE +
+
+
+
+ EXCEPTION_CODE + LEVEL_BASE +
+
+
+
+ EXCEPTION_INFO + LEVEL_BASE +
+
+
+
+ EXPORT_SYMBOLS + LEVEL_PINCLIENT +
+
+
+
+ EXTENSION_StringShort + LEVEL_CORE +
+
+
+
+ ExtractArgumentsApp + LEVEL_BASE::PARSER +
+
+
+
+ ExtractArgumentsPin + LEVEL_BASE::PARSER +
+
+
+
+ ExtractArgumentsTool + LEVEL_BASE::PARSER +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/all_66.html b/src/tracer/pintool/pin-3.13/doc/html/search/all_66.html new file mode 100755 index 0000000..5176a47 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/all_66.html @@ -0,0 +1,242 @@ + + + + + + + +
+
Loading...
+
+
+ FAULTY_ACCESS_EXECUTE + LEVEL_BASE +
+
+
+
+ FAULTY_ACCESS_READ + LEVEL_BASE +
+
+
+
+ FAULTY_ACCESS_TYPE + LEVEL_BASE +
+
+
+
+ FAULTY_ACCESS_TYPE_UNKNOWN + LEVEL_BASE +
+
+
+
+ FAULTY_ACCESS_WRITE + LEVEL_BASE +
+
+
+
+ FETCH_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ FILTER + INSTLIB +
+
+
+
+ FILTER_LIB + INSTLIB +
+
+
+
+ FILTER_RTN + INSTLIB +
+
+
+
+ FindArgument + LEVEL_BASE::COMMAND_LINE_ARGUMENTS +
+
+
+
+ FindEnabledKnob + LEVEL_BASE::KNOB_BASE +
+
+
+
+ FindFamily + LEVEL_BASE::KNOB_BASE +
+
+
+
+ FindKnob + LEVEL_BASE::KNOB_BASE +
+
+
+
+ FindRelInExtChain + LEVEL_CORE +
+
+
+
+ FINI_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ FixSymbolsFromDebugInfo + LEVEL_PINCLIENT +
+
+
+
+ FLT64FromString + LEVEL_BASE +
+
+
+
+ FLTSTR + LEVEL_BASE +
+
+
+
+ fltstr + LEVEL_BASE +
+
+
+
+ FOLLOW_CHILD + INSTLIB +
+
+
+
+ FOLLOW_CHILD + INSTLIB::FOLLOW_CHILD +
+
+
+
+ FOLLOW_CHILD_PROCESS_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ FORK_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ FORK_PROBE_MODE_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ FPERROR + LEVEL_BASE +
+
+
+
+ FPERROR_DENORMAL_OPERAND + LEVEL_BASE +
+
+
+
+ FPERROR_DIVIDE_BY_ZERO + LEVEL_BASE +
+
+
+
+ FPERROR_INEXACT_RESULT + LEVEL_BASE +
+
+
+
+ FPERROR_INVALID_OPERATION + LEVEL_BASE +
+
+
+
+ FPERROR_OVERFLOW + LEVEL_BASE +
+
+
+
+ FPERROR_UNDERFLOW + LEVEL_BASE +
+
+
+
+ FPERROR_X87_STACK_ERROR + LEVEL_BASE +
+
+
+
+ FPOINT + LEVEL_PINCLIENT +
+
+
+
+ FPOINT_AFTER_IN_CHILD + LEVEL_PINCLIENT +
+
+
+
+ FPOINT_AFTER_IN_PARENT + LEVEL_PINCLIENT +
+
+
+
+ FPOINT_BEFORE + LEVEL_PINCLIENT +
+
+
+
+ FreeKey + LEVEL_PINCLIENT::CLIENT_TLS +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/all_67.html b/src/tracer/pintool/pin-3.13/doc/html/search/all_67.html new file mode 100755 index 0000000..c262a59 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/all_67.html @@ -0,0 +1,65 @@ + + + + + + + +
+
Loading...
+
+
+ GetData + LEVEL_PINCLIENT::CLIENT_TLS +
+
+
+
+ getElementName + LEVEL_BASE::SimpleXMLParser +
+
+
+
+ getElementsStackCount + LEVEL_BASE::SimpleXMLParser +
+
+
+
+ getErrorString + LEVEL_BASE::SimpleXMLParser +
+
+
+
+ getInnermostElementText + LEVEL_BASE::SimpleXMLParser +
+
+ +
+
+ GetToolNameArgs + LEVEL_BASE::PARSER +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/all_68.html b/src/tracer/pintool/pin-3.13/doc/html/search/all_68.html new file mode 100755 index 0000000..e41685e --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/all_68.html @@ -0,0 +1,47 @@ + + + + + + + +
+
Loading...
+
+
+ handleIfuncSymbol + LEVEL_PINCLIENT +
+
+ +
+
+ HEXSTR + LEVEL_BASE +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/all_69.html b/src/tracer/pintool/pin-3.13/doc/html/search/all_69.html new file mode 100755 index 0000000..cfd0b99 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/all_69.html @@ -0,0 +1,1418 @@ + + + + + + + +
+
Loading...
+
+
+ IALARM + CONTROLLER +
+
+
+
+ IARGLIST_AddArguments + LEVEL_PINCLIENT +
+
+
+
+ IARGLIST_Alloc + LEVEL_PINCLIENT +
+
+
+
+ IARGLIST_Free + LEVEL_PINCLIENT +
+
+
+
+ ICOUNT + INSTLIB +
+
+
+
+ ICUSTOM_INSTRUMENTOR + DEBUGGER_SHELL +
+
+
+
+ IEVENT + CONTROLLER +
+
+
+
+ IFUNC_SYMBOLS + LEVEL_PINCLIENT +
+
+
+
+ IMAGE_INIT_SESSION + LEVEL_PINCLIENT +
+
+
+
+ IMAGE_LOAD_OP + LEVEL_PINCLIENT +
+
+
+
+ IMAGE_LOAD_OP2 + LEVEL_PINCLIENT +
+
+
+
+ IMAGECALLBACK + LEVEL_PINCLIENT +
+
+
+
+ ImageLoadArgs + LEVEL_PINCLIENT +
+
+
+
+ ImageLoaderInfo + LEVEL_BASE +
+
+
+
+ IMG_AddInstrumentFunction + LEVEL_PINCLIENT +
+
+
+
+ IMG_AddUnloadFunction + LEVEL_PINCLIENT +
+
+
+
+ IMG_Close + LEVEL_PINCLIENT +
+
+
+
+ IMG_Entry + LEVEL_PINCLIENT +
+
+
+
+ IMG_EntryAddress + LEVEL_PINCLIENT +
+
+
+
+ IMG_FindByAddress + LEVEL_PINCLIENT +
+
+
+
+ IMG_FindImgById + LEVEL_PINCLIENT +
+
+
+
+ IMG_Gp + LEVEL_PINCLIENT +
+
+
+
+ IMG_hasLinesData + LEVEL_PINCLIENT +
+
+
+
+ IMG_HasProperty + LEVEL_PINCLIENT +
+
+
+
+ IMG_HighAddress + LEVEL_PINCLIENT +
+
+
+
+ IMG_Id + LEVEL_PINCLIENT +
+
+
+
+ IMG_IDENTIFIER + LEVEL_PINCLIENT +
+
+
+
+ IMG_Invalid + LEVEL_PINCLIENT +
+
+
+
+ IMG_IsInterpreter + LEVEL_PINCLIENT +
+
+
+
+ IMG_IsMainExecutable + LEVEL_PINCLIENT +
+
+
+
+ IMG_IsStaticExecutable + LEVEL_PINCLIENT +
+
+
+
+ IMG_IsVDSO + LEVEL_PINCLIENT +
+
+
+
+ IMG_LoadOffset + LEVEL_PINCLIENT +
+
+
+
+ IMG_LowAddress + LEVEL_PINCLIENT +
+
+
+
+ IMG_Name + LEVEL_PINCLIENT +
+
+
+
+ IMG_Next + LEVEL_PINCLIENT +
+
+
+
+ IMG_NumRegions + LEVEL_PINCLIENT +
+
+
+
+ IMG_Open + LEVEL_PINCLIENT +
+
+
+
+ IMG_Prev + LEVEL_PINCLIENT +
+
+
+
+ IMG_PROPERTY + LEVEL_CORE +
+
+
+
+ IMG_PROPERTY_IBT_ENABLED + LEVEL_CORE +
+
+
+
+ IMG_PROPERTY_SHSTK_ENABLED + LEVEL_CORE +
+
+
+
+ IMG_REGION + LEVEL_CORE +
+
+
+
+ IMG_RegionHighAddress + LEVEL_PINCLIENT +
+
+
+
+ IMG_RegionLowAddress + LEVEL_PINCLIENT +
+
+
+
+ IMG_RegsymHead + LEVEL_PINCLIENT +
+
+
+
+ IMG_SecHead + LEVEL_PINCLIENT +
+
+
+
+ IMG_SecTail + LEVEL_PINCLIENT +
+
+
+
+ IMG_SizeMapped + LEVEL_PINCLIENT +
+
+
+
+ IMG_StartAddress + LEVEL_PINCLIENT +
+
+ +
+
+ IMG_TYPE_API_CREATED + LEVEL_CORE +
+
+
+
+ IMG_TYPE_DYNAMIC_CODE + LEVEL_CORE +
+
+
+
+ IMG_TYPE_RELOCATABLE + LEVEL_CORE +
+
+
+
+ IMG_TYPE_SHARED + LEVEL_CORE +
+
+
+
+ IMG_TYPE_SHAREDLIB + LEVEL_CORE +
+
+
+
+ IMG_TYPE_STATIC + LEVEL_CORE +
+
+
+
+ IMG_Valid + LEVEL_PINCLIENT +
+
+
+
+ ImgLoad + LEVEL_PINCLIENT +
+
+
+
+ Init + LEVEL_CORE::MEM_ADDR_EXP +
+
+
+
+ INIT_ALARM + CONTROLLER +
+
+
+
+ InitCurrentTls + LEVEL_PINCLIENT::CLIENT_TLS +
+
+
+
+ INS_AddInstrumentFunction + LEVEL_PINCLIENT +
+
+
+
+ INS_Address + LEVEL_PINCLIENT +
+
+
+
+ INS_AddressSizePrefix + LEVEL_CORE +
+
+
+
+ INS_BranchNotTakenPrefix + LEVEL_CORE +
+
+
+
+ INS_BranchTakenPrefix + LEVEL_CORE +
+
+
+
+ INS_Category + LEVEL_CORE +
+
+
+
+ INS_ChangeReg + LEVEL_CORE +
+
+
+
+ INS_Delete + LEVEL_PINCLIENT +
+
+
+
+ INS_DirectBranchOrCallTargetAddress + LEVEL_PINCLIENT +
+
+
+
+ INS_DirectControlFlowTargetAddress + LEVEL_PINCLIENT +
+
+
+
+ INS_Disassemble + LEVEL_CORE +
+
+
+
+ INS_EffectiveAddressWidth + LEVEL_CORE +
+
+
+
+ INS_Extension + LEVEL_CORE +
+
+
+
+ INS_FullRegRContain + LEVEL_CORE +
+
+
+
+ INS_FullRegWContain + LEVEL_CORE +
+
+
+
+ INS_GetFarPointer + LEVEL_CORE +
+
+
+
+ INS_GetPredicate + LEVEL_CORE +
+
+
+ +
+
+
+ INS_HasFallThrough + LEVEL_CORE +
+
+
+
+ INS_hasKnownMemorySize + LEVEL_CORE +
+
+
+
+ INS_HasMemoryRead2 + LEVEL_CORE +
+
+
+
+ INS_HasMemoryVector + LEVEL_CORE +
+
+
+
+ INS_HasRealRep + LEVEL_CORE +
+
+
+
+ INS_InitMovsxd + LEVEL_CORE +
+
+
+
+ INS_InsertCall + LEVEL_PINCLIENT +
+
+
+
+ INS_InsertDirectJump + LEVEL_PINCLIENT +
+
+
+
+ INS_InsertFillBuffer + LEVEL_PINCLIENT +
+
+
+
+ INS_InsertFillBufferPredicated + LEVEL_PINCLIENT +
+
+
+
+ INS_InsertFillBufferThen + LEVEL_PINCLIENT +
+
+
+
+ INS_InsertIfCall + LEVEL_PINCLIENT +
+
+
+
+ INS_InsertIfPredicatedCall + LEVEL_PINCLIENT +
+
+
+
+ INS_InsertIndirectJump + LEVEL_PINCLIENT +
+
+
+
+ INS_InsertPredicatedCall + LEVEL_PINCLIENT +
+
+
+
+ INS_InsertThenCall + LEVEL_PINCLIENT +
+
+
+
+ INS_InsertThenPredicatedCall + LEVEL_PINCLIENT +
+
+
+
+ INS_InsertVersionCase + LEVEL_PINCLIENT +
+
+
+
+ INS_INSTRUMENT_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ INS_Invalid + LEVEL_PINCLIENT +
+
+
+
+ INS_IsAddedForFunctionReplacement + LEVEL_PINCLIENT +
+
+
+
+ INS_IsAtomicUpdate + LEVEL_CORE +
+
+
+
+ INS_IsBranch + LEVEL_CORE +
+
+
+
+ INS_IsBranchOrCall + LEVEL_CORE +
+
+
+
+ INS_IsCacheLineFlush + LEVEL_CORE +
+
+
+
+ INS_IsCall + LEVEL_CORE +
+
+
+
+ INS_IsControlFlow + LEVEL_CORE +
+
+
+
+ INS_IsDirectBranch + LEVEL_CORE +
+
+
+
+ INS_IsDirectBranchOrCall + LEVEL_CORE +
+
+
+
+ INS_IsDirectCall + LEVEL_CORE +
+
+
+
+ INS_IsDirectControlFlow + LEVEL_CORE +
+
+
+
+ INS_IsDirectFarJump + LEVEL_CORE +
+
+
+
+ INS_IsFarCall + LEVEL_CORE +
+
+
+
+ INS_IsFarJump + LEVEL_CORE +
+
+
+
+ INS_IsFarRet + LEVEL_CORE +
+
+
+
+ INS_IsHalt + LEVEL_CORE +
+
+
+
+ INS_IsIndirectBranchOrCall + LEVEL_CORE +
+
+
+
+ INS_IsIndirectControlFlow + LEVEL_CORE +
+
+
+
+ INS_IsIpRelRead + LEVEL_CORE +
+
+
+
+ INS_IsIpRelWrite + LEVEL_CORE +
+
+
+
+ INS_IsIRet + LEVEL_CORE +
+
+
+
+ INS_IsLea + LEVEL_CORE +
+
+
+
+ INS_IsMaskMov + LEVEL_CORE +
+
+
+
+ INS_IsMemoryRead + LEVEL_CORE +
+
+
+
+ INS_IsMemoryWrite + LEVEL_CORE +
+
+
+
+ INS_IsMov + LEVEL_CORE +
+
+
+
+ INS_IsMovFullRegRegSame + LEVEL_CORE +
+
+
+
+ INS_IsNop + LEVEL_CORE +
+
+
+
+ INS_IsOriginal + LEVEL_CORE +
+
+
+
+ INS_IsPcMaterialization + LEVEL_CORE +
+
+
+
+ INS_IsPredicated + LEVEL_CORE +
+
+
+
+ INS_IsPrefetch + LEVEL_CORE +
+
+
+
+ INS_IsProcedureCall + LEVEL_CORE +
+
+
+
+ INS_IsRDTSC + LEVEL_CORE +
+
+
+
+ INS_IsRet + LEVEL_CORE +
+
+
+
+ INS_IsStackRead + LEVEL_CORE +
+
+
+
+ INS_IsStackWrite + LEVEL_CORE +
+
+
+
+ INS_IsStandardMemop + LEVEL_CORE +
+
+
+
+ INS_IsStringop + LEVEL_CORE +
+
+
+
+ INS_IsSub + LEVEL_CORE +
+
+
+
+ INS_IsSyscall + LEVEL_CORE +
+
+
+
+ INS_IsSysenter + LEVEL_CORE +
+
+
+
+ INS_IsSysret + LEVEL_CORE +
+
+
+
+ INS_IsValidForIpointAfter + LEVEL_CORE +
+
+
+ +
+
+
+ INS_IsVgather + LEVEL_CORE +
+
+
+
+ INS_IsVscatter + LEVEL_CORE +
+
+
+
+ INS_IsXbegin + LEVEL_CORE +
+
+
+
+ INS_IsXchg + LEVEL_CORE +
+
+
+
+ INS_IsXend + LEVEL_CORE +
+
+
+
+ INS_LockPrefix + LEVEL_CORE +
+
+
+
+ INS_MaxNumRRegs + LEVEL_CORE +
+
+
+
+ INS_MaxNumWRegs + LEVEL_CORE +
+
+
+
+ INS_MemoryBaseReg + LEVEL_CORE +
+
+
+
+ INS_MemoryDisplacement + LEVEL_CORE +
+
+
+
+ INS_MemoryIndexReg + LEVEL_CORE +
+
+
+
+ INS_MemoryOperandCount + LEVEL_CORE +
+
+ +
+
+ INS_MemoryOperandIsRead + LEVEL_CORE +
+
+
+
+ INS_MemoryOperandIsWritten + LEVEL_CORE +
+
+
+
+ INS_MemoryOperandSize + LEVEL_CORE +
+
+
+
+ INS_MemoryReadSize + LEVEL_CORE +
+
+
+
+ INS_MemoryScale + LEVEL_CORE +
+
+
+
+ INS_MemoryWriteSize + LEVEL_CORE +
+
+
+
+ INS_Mnemonic + LEVEL_CORE +
+
+
+
+ INS_Next + LEVEL_PINCLIENT +
+
+
+
+ INS_NextAddress + LEVEL_PINCLIENT +
+
+
+
+ INS_OperandCount + LEVEL_CORE +
+
+
+
+ INS_OperandImmediate + LEVEL_CORE +
+
+
+ +
+
+ +
+
+
+ INS_OperandIsFixedMemop + LEVEL_CORE +
+
+
+
+ INS_OperandIsImmediate + LEVEL_CORE +
+
+
+
+ INS_OperandIsImplicit + LEVEL_CORE +
+
+
+
+ INS_OperandIsMemory + LEVEL_CORE +
+
+
+
+ INS_OperandIsReg + LEVEL_CORE +
+
+
+
+ INS_OperandIsSegmentReg + LEVEL_CORE +
+
+
+
+ INS_OperandMemoryBaseReg + LEVEL_CORE +
+
+
+ +
+
+
+ INS_OperandMemoryIndexReg + LEVEL_CORE +
+
+
+
+ INS_OperandMemoryScale + LEVEL_CORE +
+
+
+
+ INS_OperandMemorySegmentReg + LEVEL_CORE +
+
+
+
+ INS_OperandRead + LEVEL_CORE +
+
+
+
+ INS_OperandReadAndWritten + LEVEL_CORE +
+
+
+
+ INS_OperandReadOnly + LEVEL_CORE +
+
+
+
+ INS_OperandReg + LEVEL_CORE +
+
+
+
+ INS_OperandSizePrefix + LEVEL_CORE +
+
+
+
+ INS_OperandWidth + LEVEL_CORE +
+
+
+
+ INS_OperandWritten + LEVEL_CORE +
+
+
+
+ INS_OperandWrittenOnly + LEVEL_CORE +
+
+
+
+ INS_Prev + LEVEL_PINCLIENT +
+
+
+
+ INS_RegIsImplicit + LEVEL_CORE +
+
+
+
+ INS_RegR + LEVEL_CORE +
+
+
+
+ INS_RegRContain + LEVEL_CORE +
+
+
+
+ INS_RegW + LEVEL_CORE +
+
+
+
+ INS_RegWContain + LEVEL_CORE +
+
+
+
+ INS_RepCountRegister + LEVEL_CORE +
+
+
+
+ INS_RepnePrefix + LEVEL_CORE +
+
+
+
+ INS_RepPrefix + LEVEL_CORE +
+
+
+
+ INS_RewriteMemoryOperand + LEVEL_PINCLIENT +
+
+
+
+ INS_Rtn + LEVEL_PINCLIENT +
+
+
+
+ INS_SegmentPrefix + LEVEL_CORE +
+
+
+
+ INS_SegmentRegPrefix + LEVEL_CORE +
+
+
+
+ INS_SegPrefixIsMemoryRead + LEVEL_CORE +
+
+
+
+ INS_SegPrefixIsMemoryWrite + LEVEL_CORE +
+
+
+
+ INS_Size + LEVEL_PINCLIENT +
+
+
+
+ INS_Stutters + LEVEL_CORE +
+
+
+
+ INS_SyscallStd + LEVEL_CORE +
+
+
+
+ INS_Valid + LEVEL_PINCLIENT +
+
+
+
+ INS_XedDec + LEVEL_CORE +
+
+
+
+ INS_XedExactMapToPinReg + LEVEL_CORE +
+
+
+
+ INS_XedRegClass + LEVEL_CORE +
+
+ +
+
+ InsertAsOneToken + LEVEL_BASE::COMMAND_LINE_ARGUMENTS +
+
+
+
+ InsertBreakpointAfter + DEBUGGER_SHELL::ICUSTOM_INSTRUMENTOR +
+
+
+
+ InsertBreakpointBefore + DEBUGGER_SHELL::ICUSTOM_INSTRUMENTOR +
+
+
+
+ Instance + LEVEL_PINCLIENT::CLIENT_TLS +
+
+
+
+ INSTR + LEVEL_PINCLIENT +
+
+
+
+ INSTR_INFO + LEVEL_PINCLIENT +
+
+
+
+ Int32FromString + LEVEL_BASE +
+
+
+
+ Int64FromString + LEVEL_BASE +
+
+
+
+ INTERACTIVE_LISTENER + CONTROLLER +
+
+
+
+ INTERCEPT_SIGNAL_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ INTERNAL_EXCEPTION_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ INVALID_TLS_KEY + LEVEL_BASE +
+
+
+
+ IREGION + CONTROLLER +
+
+
+
+ IsCurrentTlsAllocated + LEVEL_PINCLIENT::CLIENT_TLS +
+
+
+
+ ISHELL + DEBUGGER_SHELL +
+
+
+
+ IsKeyAllocated + LEVEL_PINCLIENT::CLIENT_TLS +
+
+
+
+ IsNull + LEVEL_CORE::MEM_ADDR_EXP +
+
+
+
+ IsThreadInFiniCallback + LEVEL_PINCLIENT +
+
+
+
+ IsValidTlsKey + LEVEL_PINCLIENT::CLIENT_TLS +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/all_6b.html b/src/tracer/pintool/pin-3.13/doc/html/search/all_6b.html new file mode 100755 index 0000000..b48b602 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/all_6b.html @@ -0,0 +1,134 @@ + + + + + + + +
+
Loading...
+
+
+ KNOB + LEVEL_BASE +
+
+
+
+ KNOB< BOOL > + LEVEL_BASE +
+
+
+
+ KNOB_BASE + LEVEL_BASE::KNOB_BASE +
+
+
+
+ KNOB_BASE + LEVEL_BASE +
+
+
+
+ KNOB_COMMENT + LEVEL_BASE +
+
+
+
+ KNOB_MODE + LEVEL_BASE +
+
+
+
+ KNOB_MODE_ACCUMULATE + LEVEL_BASE +
+
+
+
+ KNOB_MODE_APPEND + LEVEL_BASE +
+
+
+
+ KNOB_MODE_COMMENT + LEVEL_BASE +
+
+
+
+ KNOB_MODE_OVERWRITE + LEVEL_BASE +
+
+
+
+ KNOB_MODE_WRITEONCE + LEVEL_BASE +
+
+
+
+ KnobCheckLocks + LEVEL_PINCLIENT +
+
+
+
+ KnobJitApi + LEVEL_PINCLIENT +
+
+
+
+ KnobProfile + LEVEL_PINCLIENT +
+
+
+
+ KnobSlowAsserts + LEVEL_BASE +
+
+
+
+ KNOBVALUE + LEVEL_BASE +
+
+
+
+ KNOBVALUE< BOOL > + LEVEL_BASE +
+
+
+
+ KNOBVALUE_LIST + LEVEL_BASE +
+
+
+
+ KNOBVALUE_LIST< BOOL > + LEVEL_BASE +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/all_6c.html b/src/tracer/pintool/pin-3.13/doc/html/search/all_6c.html new file mode 100755 index 0000000..29e42dd --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/all_6c.html @@ -0,0 +1,47 @@ + + + + + + + +
+
Loading...
+
+ +
+
+ +
+ +
+
+ LINUX_LOADER_IMAGE_INFO + LEVEL_BASE +
+
+
+
+ ljstr + LEVEL_BASE +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/all_6d.html b/src/tracer/pintool/pin-3.13/doc/html/search/all_6d.html new file mode 100755 index 0000000..c3640b3 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/all_6d.html @@ -0,0 +1,71 @@ + + + + + + + +
+
Loading...
+
+
+ MAX_CLIENT_TLS_KEYS + LEVEL_PINCLIENT +
+
+
+
+ MAX_WINDOWS_EXCEPTION_ARGS + LEVEL_BASE +
+
+
+
+ MEM_ADDR_EXP + LEVEL_CORE +
+
+
+
+ MEMORY_ADDR_TRANS_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ MEMORY_TYPE + LEVEL_CORE +
+
+ +
+
+ ModeBoth + INSTLIB::ICOUNT +
+
+
+
+ ModeNormal + INSTLIB::ICOUNT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/all_6e.html b/src/tracer/pintool/pin-3.13/doc/html/search/all_6e.html new file mode 100755 index 0000000..7ace785 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/all_6e.html @@ -0,0 +1,38 @@ + + + + + + + +
+
Loading...
+
+
+ native + CALL_APPLICATION_FUNCTION_PARAM +
+
+
+
+ NO_SYMBOLS + LEVEL_PINCLIENT +
+
+
+
+ NumberOfKnobs + LEVEL_BASE::KNOB_BASE +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/all_6f.html b/src/tracer/pintool/pin-3.13/doc/html/search/all_6f.html new file mode 100755 index 0000000..87cd193 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/all_6f.html @@ -0,0 +1,50 @@ + + + + + + + +
+
Loading...
+
+
+ OPCODE_StringShort + LEVEL_CORE +
+
+
+
+ operator= + LEVEL_BASE::COMMAND_LINE_ARGUMENTS +
+
+
+
+ OUT_OF_MEMORY_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ OUTSIDE_TARGET + LEVEL_PINCLIENT +
+
+
+
+ OUTSIDE_TARGET_MEM_RANGE + LEVEL_PINCLIENT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/all_70.html b/src/tracer/pintool/pin-3.13/doc/html/search/all_70.html new file mode 100755 index 0000000..64c7677 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/all_70.html @@ -0,0 +1,1273 @@ + + + + + + + +
+
Loading...
+
+
+ PARG_T +
+
+
+
+ parse + LEVEL_BASE::SimpleXMLParser +
+
+
+
+ PARSER + LEVEL_BASE +
+
+
+
+ PARSER + CONTROLLER +
+
+
+
+ PCREGION + CONTROLLER +
+
+
+
+ PIN_AddApplicationStartFunction + LEVEL_PINCLIENT +
+
+
+
+ PIN_AddBreakpointHandler + LEVEL_PINCLIENT +
+
+
+
+ PIN_AddContextChangeFunction + LEVEL_PINCLIENT +
+
+
+
+ PIN_AddDebugInterpreter + LEVEL_PINCLIENT +
+
+
+
+ PIN_AddDetachFunction + LEVEL_PINCLIENT +
+
+
+
+ PIN_AddDetachFunctionProbed + LEVEL_PINCLIENT +
+
+
+
+ PIN_AddFetchFunction + LEVEL_PINCLIENT +
+
+
+
+ PIN_AddFiniFunction + LEVEL_PINCLIENT +
+
+
+
+ PIN_AddForkFunction + LEVEL_PINCLIENT +
+
+
+
+ PIN_AddForkFunctionProbed + LEVEL_PINCLIENT +
+
+
+
+ PIN_AddInternalExceptionHandler + LEVEL_PINCLIENT +
+
+
+
+ PIN_AddMemoryAddressTransFunction + LEVEL_PINCLIENT +
+
+
+
+ PIN_AddOutOfMemoryFunction + LEVEL_PINCLIENT +
+
+
+
+ PIN_AddPrepareForFiniFunction + LEVEL_PINCLIENT +
+
+
+
+ PIN_AddProbesInsertedFunction + LEVEL_PINCLIENT +
+
+
+
+ PIN_AddSyscallEntryFunction + LEVEL_PINCLIENT +
+
+
+
+ PIN_AddSyscallExitFunction + LEVEL_PINCLIENT +
+
+
+
+ PIN_AddThreadAttachFunction + LEVEL_PINCLIENT +
+
+
+
+ PIN_AddThreadAttachProbedFunction + LEVEL_PINCLIENT +
+
+
+
+ PIN_AddThreadDetachFunction + LEVEL_PINCLIENT +
+
+
+
+ PIN_AddThreadDetachProbedFunction + LEVEL_PINCLIENT +
+
+
+
+ PIN_AddThreadFiniFunction + LEVEL_PINCLIENT +
+
+
+
+ PIN_AddThreadStartFunction + LEVEL_PINCLIENT +
+
+
+
+ PIN_AllocateBuffer + LEVEL_PINCLIENT +
+
+
+
+ PIN_ApplicationBreakpoint + LEVEL_PINCLIENT +
+
+
+
+ PIN_Attach + LEVEL_PINCLIENT +
+
+
+
+ PIN_AttachProbed + LEVEL_PINCLIENT +
+
+
+
+ PIN_Backtrace + LEVEL_PINCLIENT +
+
+
+
+ PIN_CallApplicationFunction + LEVEL_PINCLIENT +
+
+
+
+ PIN_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ PIN_CALLBACK_INVALID + LEVEL_PINCLIENT +
+
+ +
+
+ PIN_CheckReadAccess + LEVEL_PINCLIENT +
+
+
+
+ PIN_CheckWriteAccess + LEVEL_PINCLIENT +
+
+
+
+ PIN_ClaimToolRegister + LEVEL_PINCLIENT +
+
+
+
+ PIN_CLIENT_MUTEX + LEVEL_PINCLIENT +
+
+ +
+
+ PIN_CONFIGURATION_INFO + LEVEL_PINCLIENT +
+
+
+
+ PIN_ContextContainsState + LEVEL_PINCLIENT +
+
+ +
+
+ PIN_CreateDefaultConfigurationInfo + LEVEL_PINCLIENT +
+
+
+
+ PIN_CreateThreadDataKey + LEVEL_PINCLIENT +
+
+
+
+ PIN_DeallocateBuffer + LEVEL_PINCLIENT +
+
+
+
+ PIN_DefineTraceBuffer + LEVEL_PINCLIENT +
+
+
+
+ PIN_DeleteThreadDataKey + LEVEL_PINCLIENT +
+
+
+
+ PIN_Detach + LEVEL_PINCLIENT +
+
+
+
+ PIN_DetachProbed + LEVEL_PINCLIENT +
+
+
+
+ PIN_ERROR_DESCRIPTOR + LEVEL_BASE +
+
+
+
+ PIN_ExceptionToString + LEVEL_BASE +
+
+
+
+ PIN_ExecuteAt + LEVEL_PINCLIENT +
+
+
+
+ PIN_ExitApplication + LEVEL_PINCLIENT +
+
+
+
+ PIN_ExitProcess + LEVEL_PINCLIENT +
+
+
+
+ PIN_ExitThread + LEVEL_PINCLIENT +
+
+
+
+ PIN_FetchCode + LEVEL_PINCLIENT +
+
+
+
+ PIN_GetAuxVectorValue + LEVEL_PINCLIENT +
+
+
+
+ PIN_GetBufferPointer + LEVEL_PINCLIENT +
+
+
+
+ PIN_GetContextFPState + LEVEL_PINCLIENT +
+
+
+
+ PIN_GetContextReg + LEVEL_PINCLIENT +
+
+
+
+ PIN_GetContextRegval + LEVEL_PINCLIENT +
+
+
+
+ PIN_GetDebugConnectionInfo + LEVEL_PINCLIENT +
+
+
+
+ PIN_GetDebuggerType + LEVEL_PINCLIENT +
+
+
+
+ PIN_GetDebugStatus + LEVEL_PINCLIENT +
+
+
+
+ PIN_GetExceptionAddress + LEVEL_BASE +
+
+
+
+ PIN_GetExceptionClass + LEVEL_BASE +
+
+
+
+ PIN_GetExceptionCode + LEVEL_BASE +
+
+
+
+ PIN_GetFaultyAccessAddress + LEVEL_BASE +
+
+
+
+ PIN_GetFaultyAccessType + LEVEL_BASE +
+
+
+
+ PIN_GetFpErrorSet + LEVEL_BASE +
+
+
+
+ PIN_GetFullContextRegsSet + LEVEL_PINCLIENT +
+
+
+
+ PIN_GetInitialContextForUnwind + LEVEL_PINCLIENT +
+
+
+
+ PIN_GetInitialThreadCount + LEVEL_PINCLIENT +
+
+
+
+ PIN_GetLock + LEVEL_BASE +
+
+
+
+ PIN_GetMemoryAddressTransFunction + LEVEL_PINCLIENT +
+
+
+
+ PIN_GetParentTid + LEVEL_PINCLIENT +
+
+
+
+ PIN_GetPhysicalContextFPState + LEVEL_PINCLIENT +
+
+
+
+ PIN_GetPhysicalContextReg + LEVEL_PINCLIENT +
+
+
+
+ PIN_GetPid + LEVEL_PINCLIENT +
+
+
+
+ PIN_GetSourceLocation + LEVEL_PINCLIENT +
+
+ +
+
+ PIN_GetSyscallArgument + LEVEL_PINCLIENT +
+
+
+
+ PIN_GetSyscallErrno + LEVEL_PINCLIENT +
+
+
+
+ PIN_GetSyscallNumber + LEVEL_PINCLIENT +
+
+
+
+ PIN_GetSyscallReturn + LEVEL_PINCLIENT +
+
+ +
+
+ PIN_GetTid + LEVEL_PINCLIENT +
+
+
+ +
+
+
+ PIN_GetWindowsExceptionCode + LEVEL_BASE +
+
+
+
+ PIN_INFINITE_TIMEOUT + LEVEL_BASE +
+
+
+
+ PIN_Init + LEVEL_PINCLIENT +
+
+
+
+ PIN_InitAccessFaultInfo + LEVEL_BASE +
+
+
+
+ PIN_InitExceptionInfo + LEVEL_BASE +
+
+
+
+ PIN_InitLock + LEVEL_BASE +
+
+
+
+ PIN_InitSymbols + LEVEL_PINCLIENT +
+
+
+
+ PIN_InitSymbolsAlt + LEVEL_PINCLIENT +
+
+
+
+ PIN_InitWindowsExceptionInfo + LEVEL_BASE +
+
+
+
+ PIN_InsertCallProbed + LEVEL_PINCLIENT +
+
+
+
+ PIN_InterceptSignal + LEVEL_PINCLIENT +
+
+
+
+ PIN_IsActionPending + LEVEL_PINCLIENT +
+
+
+
+ PIN_IsApplicationThread + LEVEL_PINCLIENT +
+
+
+
+ PIN_IsAttaching + LEVEL_PINCLIENT +
+
+
+
+ PIN_IsProbeMode + LEVEL_PINCLIENT +
+
+
+
+ PIN_IsSafeForProbedInsertion + LEVEL_PINCLIENT +
+
+
+
+ PIN_LOCK + LEVEL_BASE +
+
+
+
+ PIN_LockClient + LEVEL_PINCLIENT +
+
+
+
+ PIN_MAX_THREADS + LEVEL_BASE +
+
+ + + + +
+
+ PIN_MUTEX + LEVEL_BASE +
+
+
+
+ PIN_MutexFini + LEVEL_BASE +
+
+
+
+ PIN_MutexInit + LEVEL_BASE +
+
+
+
+ PIN_MutexLock + LEVEL_BASE +
+
+
+
+ PIN_MutexTryLock + LEVEL_BASE +
+
+
+
+ PIN_MutexUnlock + LEVEL_BASE +
+
+
+
+ PIN_RaiseException + LEVEL_PINCLIENT +
+
+
+ +
+
+
+ PIN_ReleaseLock + LEVEL_BASE +
+
+
+
+ PIN_RemoveBreakpointHandler + LEVEL_PINCLIENT +
+
+
+
+ PIN_RemoveDebugInterpreter + LEVEL_PINCLIENT +
+
+
+
+ PIN_RemoveFiniFunctions + LEVEL_PINCLIENT +
+
+
+
+ PIN_RemoveInstrumentation + LEVEL_PINCLIENT +
+
+
+
+ PIN_RemoveInstrumentationInRange + LEVEL_PINCLIENT +
+
+
+
+ PIN_ResetBreakpointAt + LEVEL_PINCLIENT +
+
+
+
+ PIN_RWMUTEX + LEVEL_BASE +
+
+
+
+ PIN_RWMutexFini + LEVEL_BASE +
+
+
+
+ PIN_RWMutexInit + LEVEL_BASE +
+
+
+
+ PIN_RWMutexReadLock + LEVEL_BASE +
+
+
+
+ PIN_RWMutexTryReadLock + LEVEL_BASE +
+
+
+
+ PIN_RWMutexTryWriteLock + LEVEL_BASE +
+
+
+
+ PIN_RWMutexUnlock + LEVEL_BASE +
+
+
+
+ PIN_RWMutexWriteLock + LEVEL_BASE +
+
+
+
+ PIN_SafeCopy + LEVEL_PINCLIENT +
+
+
+
+ PIN_SafeCopyEx + LEVEL_PINCLIENT +
+
+
+
+ PIN_SaveContext + LEVEL_PINCLIENT +
+
+
+
+ PIN_SEMAPHORE + LEVEL_BASE +
+
+
+
+ PIN_SemaphoreClear + LEVEL_BASE +
+
+
+
+ PIN_SemaphoreFini + LEVEL_BASE +
+
+
+
+ PIN_SemaphoreInit + LEVEL_BASE +
+
+
+
+ PIN_SemaphoreIsSet + LEVEL_BASE +
+
+
+
+ PIN_SemaphoreSet + LEVEL_BASE +
+
+
+
+ PIN_SemaphoreTimedWait + LEVEL_BASE +
+
+
+
+ PIN_SemaphoreWait + LEVEL_BASE +
+
+
+
+ PIN_SetAllowedConcurrentCallbacks + LEVEL_PINCLIENT +
+
+
+
+ PIN_SetContextFPState + LEVEL_PINCLIENT +
+
+
+
+ PIN_SetContextReg + LEVEL_PINCLIENT +
+
+
+
+ PIN_SetContextRegval + LEVEL_PINCLIENT +
+
+
+
+ PIN_SetDebugMode + LEVEL_PINCLIENT +
+
+
+
+ PIN_SetExceptionAddress + LEVEL_BASE +
+
+
+
+ PIN_SetPhysicalContextFPState + LEVEL_PINCLIENT +
+
+
+
+ PIN_SetPhysicalContextReg + LEVEL_PINCLIENT +
+
+
+
+ PIN_SetSmcSupport + LEVEL_PINCLIENT +
+
+
+
+ PIN_SetSyntaxATT + LEVEL_CORE +
+
+
+
+ PIN_SetSyntaxIntel + LEVEL_CORE +
+
+
+
+ PIN_SetSyntaxXED + LEVEL_CORE +
+
+
+
+ PIN_SetSyscallArgument + LEVEL_PINCLIENT +
+
+
+
+ PIN_SetSyscallNumber + LEVEL_PINCLIENT +
+
+ +
+
+ PIN_Sleep + LEVEL_PINCLIENT +
+
+
+
+ PIN_SpawnInternalThread + LEVEL_PINCLIENT +
+
+
+
+ PIN_StartProgram + LEVEL_PINCLIENT +
+
+
+
+ PIN_StartProgramProbed + LEVEL_PINCLIENT +
+
+
+
+ PIN_SupportsProcessorState + LEVEL_PINCLIENT +
+
+
+
+ PIN_ThreadId + LEVEL_PINCLIENT +
+
+
+
+ PIN_ThreadUid + LEVEL_PINCLIENT +
+
+
+
+ PIN_ToolFullPath + LEVEL_PINCLIENT +
+
+
+
+ PIN_TryEnd + LEVEL_PINCLIENT +
+
+
+
+ PIN_TryStart + LEVEL_PINCLIENT +
+
+
+
+ PIN_UnblockSignal + LEVEL_PINCLIENT +
+
+
+
+ PIN_UndecorateSymbolName + LEVEL_PINCLIENT +
+
+
+
+ PIN_UnlockClient + LEVEL_PINCLIENT +
+
+
+
+ PIN_Version + LEVEL_PINCLIENT +
+
+
+
+ PIN_VmFullPath + LEVEL_PINCLIENT +
+
+
+
+ PIN_WaitForDebuggerToConnect + LEVEL_PINCLIENT +
+
+
+
+ PIN_WaitForThreadTermination + LEVEL_PINCLIENT +
+
+
+
+ PIN_WriteErrorMessage + LEVEL_PINCLIENT +
+
+
+
+ PIN_Yield + LEVEL_PINCLIENT +
+
+
+
+ PREDICATE + LEVEL_BASE +
+
+
+
+ PREDICATE_ALWAYS_TRUE + LEVEL_BASE +
+
+
+
+ PREDICATE_BELOW + LEVEL_BASE +
+
+
+
+ PREDICATE_BELOW_OR_EQUAL + LEVEL_BASE +
+
+
+
+ PREDICATE_CX_NON_ZERO + LEVEL_BASE +
+
+
+
+ PREDICATE_ECX_NON_ZERO + LEVEL_BASE +
+
+
+
+ PREDICATE_IA32 + 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_RCX_NON_ZERO + LEVEL_BASE +
+
+
+
+ PREDICATE_SAVED_GCX_NON_ZERO + LEVEL_BASE +
+
+
+
+ PREDICATE_SIGN + LEVEL_BASE +
+
+
+
+ PREDICATE_ZERO + LEVEL_BASE +
+
+
+
+ PREPARE_FOR_FINI_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ PROBE_MODE + LEVEL_PINCLIENT +
+
+
+
+ PROBES_INSERTED_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ ptrstr + LEVEL_BASE +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/all_72.html b/src/tracer/pintool/pin-3.13/doc/html/search/all_72.html new file mode 100755 index 0000000..a3438f8 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/all_72.html @@ -0,0 +1,1549 @@ + + + + + + + +
+
Loading...
+
+
+ ReadLine + LEVEL_BASE +
+
+
+
+ Reformat + LEVEL_BASE +
+
+
+
+ REG + LEVEL_BASE +
+
+
+
+ REG_AppFlags + LEVEL_BASE +
+
+
+
+ REG_CLASS + LEVEL_BASE +
+
+
+
+ REG_CLASS_BITS + LEVEL_BASE +
+
+
+
+ REG_corresponding_ymm_reg + LEVEL_BASE +
+
+
+
+ REG_corresponding_zmm_reg + LEVEL_BASE +
+
+
+
+ REG_FirstInRegset + LEVEL_CORE +
+
+
+
+ REG_FPTAG + LEVEL_BASE +
+
+
+
+ REG_FPTAG_FULL + LEVEL_BASE +
+
+
+
+ REG_FullRegName + LEVEL_BASE +
+
+
+
+ REG_GAX + LEVEL_BASE +
+
+
+
+ REG_GBP + LEVEL_BASE +
+
+
+
+ REG_GBX + LEVEL_BASE +
+
+
+
+ REG_GCX + LEVEL_BASE +
+
+
+
+ REG_GDI + LEVEL_BASE +
+
+
+
+ REG_GDX + LEVEL_BASE +
+
+
+
+ REG_get_df_flag_reg_of_type + LEVEL_BASE +
+
+
+ +
+
+ +
+
+
+ REG_GSI + LEVEL_BASE +
+
+
+
+ REG_Half16 + LEVEL_BASE +
+
+
+
+ REG_IdentityCopy + LEVEL_BASE +
+
+
+
+ REG_INFO +
+
+
+
+ REG_INST_G0 + LEVEL_BASE +
+
+
+
+ REG_INST_G0D + LEVEL_BASE +
+
+
+
+ REG_INST_G1 + LEVEL_BASE +
+
+
+
+ REG_INST_G10 + LEVEL_BASE +
+
+
+
+ REG_INST_G10D + LEVEL_BASE +
+
+
+
+ REG_INST_G11 + LEVEL_BASE +
+
+
+
+ REG_INST_G11D + LEVEL_BASE +
+
+
+
+ REG_INST_G12 + LEVEL_BASE +
+
+
+
+ REG_INST_G12D + LEVEL_BASE +
+
+
+
+ REG_INST_G13 + LEVEL_BASE +
+
+
+
+ REG_INST_G13D + LEVEL_BASE +
+
+
+
+ REG_INST_G14 + LEVEL_BASE +
+
+
+
+ REG_INST_G14D + LEVEL_BASE +
+
+
+
+ REG_INST_G15 + LEVEL_BASE +
+
+
+
+ REG_INST_G15D + LEVEL_BASE +
+
+
+
+ REG_INST_G16 + LEVEL_BASE +
+
+
+
+ REG_INST_G16D + LEVEL_BASE +
+
+
+
+ REG_INST_G17 + LEVEL_BASE +
+
+
+
+ REG_INST_G17D + LEVEL_BASE +
+
+
+
+ REG_INST_G18 + LEVEL_BASE +
+
+
+
+ REG_INST_G18D + LEVEL_BASE +
+
+
+
+ REG_INST_G19 + LEVEL_BASE +
+
+
+
+ REG_INST_G19D + LEVEL_BASE +
+
+
+
+ REG_INST_G1D + LEVEL_BASE +
+
+
+
+ REG_INST_G2 + LEVEL_BASE +
+
+
+
+ REG_INST_G20 + LEVEL_BASE +
+
+
+
+ REG_INST_G20D + LEVEL_BASE +
+
+
+
+ REG_INST_G21 + LEVEL_BASE +
+
+
+
+ REG_INST_G21D + LEVEL_BASE +
+
+
+
+ REG_INST_G22 + LEVEL_BASE +
+
+
+
+ REG_INST_G22D + LEVEL_BASE +
+
+
+
+ REG_INST_G23 + LEVEL_BASE +
+
+
+
+ REG_INST_G23D + LEVEL_BASE +
+
+
+
+ REG_INST_G24 + LEVEL_BASE +
+
+
+
+ REG_INST_G24D + LEVEL_BASE +
+
+
+
+ REG_INST_G25 + LEVEL_BASE +
+
+
+
+ REG_INST_G25D + LEVEL_BASE +
+
+
+
+ REG_INST_G26 + LEVEL_BASE +
+
+
+
+ REG_INST_G26D + LEVEL_BASE +
+
+
+
+ REG_INST_G27 + LEVEL_BASE +
+
+
+
+ REG_INST_G27D + LEVEL_BASE +
+
+
+
+ REG_INST_G28 + LEVEL_BASE +
+
+
+
+ REG_INST_G28D + LEVEL_BASE +
+
+
+
+ REG_INST_G29 + LEVEL_BASE +
+
+
+
+ REG_INST_G29D + LEVEL_BASE +
+
+
+
+ REG_INST_G2D + LEVEL_BASE +
+
+
+
+ REG_INST_G3 + LEVEL_BASE +
+
+
+
+ REG_INST_G3D + LEVEL_BASE +
+
+
+
+ REG_INST_G4 + LEVEL_BASE +
+
+
+
+ REG_INST_G4D + LEVEL_BASE +
+
+
+
+ REG_INST_G5 + LEVEL_BASE +
+
+
+
+ REG_INST_G5D + LEVEL_BASE +
+
+
+
+ REG_INST_G6 + LEVEL_BASE +
+
+
+
+ REG_INST_G6D + LEVEL_BASE +
+
+
+
+ REG_INST_G7 + LEVEL_BASE +
+
+
+
+ REG_INST_G7D + LEVEL_BASE +
+
+
+
+ REG_INST_G8 + LEVEL_BASE +
+
+
+
+ REG_INST_G8D + LEVEL_BASE +
+
+
+
+ REG_INST_G9 + LEVEL_BASE +
+
+
+
+ REG_INST_G9D + LEVEL_BASE +
+
+
+
+ REG_INST_SCRATCH_BASE + LEVEL_BASE +
+
+
+
+ REG_INVALID + LEVEL_BASE +
+
+
+
+ REG_is_Any8 + LEVEL_BASE +
+
+
+
+ REG_is_any_app_flags + LEVEL_BASE +
+
+
+
+ REG_is_any_flags_type + LEVEL_BASE +
+
+
+
+ REG_is_any_mask + LEVEL_BASE +
+
+
+
+ REG_is_any_mxcsr + LEVEL_BASE +
+
+
+
+ REG_is_any_pin_flags + LEVEL_BASE +
+
+
+
+ REG_is_any_vector_reg + LEVEL_BASE +
+
+
+
+ REG_is_app_df_flag_type + LEVEL_BASE +
+
+
+
+ REG_is_app_status_flags_type + LEVEL_BASE +
+
+
+
+ REG_is_application + LEVEL_BASE +
+
+
+
+ REG_is_avx512_hi16_xmm + LEVEL_BASE +
+
+
+
+ REG_is_avx512_hi16_ymm + LEVEL_BASE +
+
+
+
+ REG_is_br + LEVEL_BASE +
+
+
+
+ REG_is_buffer + LEVEL_BASE +
+
+
+
+ REG_is_df_flag + LEVEL_BASE +
+
+
+
+ REG_is_df_flag_type + LEVEL_BASE +
+
+
+
+ REG_is_flags + LEVEL_BASE +
+
+
+
+ REG_is_flags_any_size_type + LEVEL_BASE +
+
+
+
+ REG_is_flags_type + LEVEL_BASE +
+
+
+
+ REG_is_fr + LEVEL_BASE +
+
+
+
+ REG_is_fr_for_get_context + LEVEL_BASE +
+
+
+
+ REG_is_gr + LEVEL_BASE +
+
+
+
+ REG_is_gr16 + LEVEL_BASE +
+
+
+
+ REG_is_gr32 + LEVEL_BASE +
+
+
+
+ REG_is_gr64 + LEVEL_BASE +
+
+
+
+ REG_is_gr8 + LEVEL_BASE +
+
+
+
+ REG_is_gr_type + LEVEL_BASE +
+
+
+
+ REG_is_gs_or_fs + LEVEL_BASE +
+
+
+
+ REG_is_Half16 + LEVEL_BASE +
+
+
+
+ REG_is_Half32 + LEVEL_BASE +
+
+
+
+ REG_is_in_X87 + LEVEL_BASE +
+
+
+
+ REG_is_inst_scratch + LEVEL_BASE +
+
+
+
+ REG_is_k_mask + LEVEL_BASE +
+
+
+
+ REG_is_Lower8 + LEVEL_BASE +
+
+
+
+ REG_is_machine + LEVEL_BASE +
+
+
+
+ REG_is_mm + LEVEL_BASE +
+
+
+
+ REG_is_mxcsr + LEVEL_BASE +
+
+
+
+ REG_is_partialreg + LEVEL_BASE +
+
+
+
+ REG_is_pin + LEVEL_BASE +
+
+
+
+ REG_is_pin64 + LEVEL_BASE +
+
+
+
+ REG_is_pin_df_flag + LEVEL_BASE +
+
+
+
+ REG_is_pin_flags + LEVEL_BASE +
+
+
+
+ REG_is_pin_gpr + LEVEL_BASE +
+
+
+
+ REG_is_pin_gr + LEVEL_BASE +
+
+
+
+ REG_is_pin_gr32 + LEVEL_BASE +
+
+
+
+ REG_is_pin_gr_half32 + LEVEL_BASE +
+
+
+
+ REG_is_pin_inst + LEVEL_BASE +
+
+
+
+ REG_is_pin_k_mask + LEVEL_BASE +
+
+
+
+ REG_is_pin_status_flags + LEVEL_BASE +
+
+
+
+ REG_is_pin_tmp + LEVEL_BASE +
+
+
+
+ REG_is_pin_xmm + LEVEL_BASE +
+
+
+
+ REG_is_pin_xmm_ymm_zmm + LEVEL_BASE +
+
+
+
+ REG_is_pin_ymm + LEVEL_BASE +
+
+
+
+ REG_is_pin_zmm + LEVEL_BASE +
+
+
+
+ REG_is_pseudo + LEVEL_BASE +
+
+
+
+ REG_is_representative_reg + LEVEL_BASE +
+
+
+
+ REG_is_seg + LEVEL_BASE +
+
+
+
+ REG_is_seg_base + LEVEL_BASE +
+
+
+
+ REG_is_st + LEVEL_BASE +
+
+
+
+ REG_is_stackptr_type + LEVEL_BASE +
+
+
+
+ REG_is_status_flags + LEVEL_BASE +
+
+
+
+ REG_is_status_flags_type + LEVEL_BASE +
+
+
+
+ REG_is_subclass_none + LEVEL_BASE +
+
+
+
+ REG_is_Upper8 + LEVEL_BASE +
+
+
+
+ REG_is_xmm + LEVEL_BASE +
+
+
+
+ REG_is_xmm_ymm_zmm + LEVEL_BASE +
+
+
+
+ REG_is_ymm + LEVEL_BASE +
+
+
+
+ REG_is_zmm + LEVEL_BASE +
+
+
+
+ REG_LastInRegset + LEVEL_CORE +
+
+
+
+ REG_LastSupportedXmm + LEVEL_BASE +
+
+
+
+ REG_LastSupportedYmm + LEVEL_BASE +
+
+
+
+ REG_LastSupportedZmm + LEVEL_BASE +
+
+
+
+ REG_RAX + LEVEL_BASE +
+
+
+
+ REG_RBP + LEVEL_BASE +
+
+
+
+ REG_RBX + LEVEL_BASE +
+
+
+
+ REG_RCX + LEVEL_BASE +
+
+
+
+ REG_RDI + LEVEL_BASE +
+
+
+
+ REG_RDX + LEVEL_BASE +
+
+
+
+ REG_regDefTable + LEVEL_BASE +
+
+
+
+ REG_regSubClassBitMapTable + LEVEL_BASE +
+
+
+
+ REG_RSI + LEVEL_BASE +
+
+
+
+ REG_RSP + LEVEL_BASE +
+
+
+
+ REG_SEG_FS_BASE + LEVEL_BASE +
+
+
+
+ REG_SEG_GS_BASE + LEVEL_BASE +
+
+
+
+ REG_Size + LEVEL_BASE +
+
+
+
+ REG_SpillPtr + LEVEL_BASE +
+
+
+
+ REG_STACK_PTR + LEVEL_BASE +
+
+
+
+ REG_StringShort + LEVEL_BASE +
+
+
+
+ REG_SUBCLASS + LEVEL_BASE +
+
+
+
+ REG_valid + LEVEL_BASE +
+
+
+
+ REG_valid_for_iarg_reg_value + LEVEL_BASE +
+
+
+
+ REG_Width + LEVEL_BASE +
+
+
+
+ REGCBIT_APP_FLAGS + LEVEL_BASE +
+
+
+
+ REGCBIT_PARTIAL + LEVEL_BASE +
+
+
+
+ REGCBIT_PIN_FLAGS + LEVEL_BASE +
+
+
+
+ REGDEF_ENTRY + LEVEL_BASE +
+
+
+
+ REGION_UTILS + CONTROLLER +
+
+
+
+ REGISTER_SET + LEVEL_CORE +
+
+
+
+ REGNAME + LEVEL_BASE +
+
+
+
+ REGSBIT_PIN_INST_ALL + LEVEL_BASE +
+
+
+
+ REGSBIT_PIN_SCRATCH_ALL + LEVEL_BASE +
+
+
+
+ REGSBIT_STACKPTR_ALL + LEVEL_BASE +
+
+
+
+ REGSET + LEVEL_CORE +
+
+
+
+ REGSET_AddAll + LEVEL_CORE +
+
+
+
+ REGSET_Clear + LEVEL_CORE +
+
+
+
+ REGSET_Contains + LEVEL_CORE +
+
+
+
+ REGSET_Insert + LEVEL_CORE +
+
+
+
+ REGSET_PopCount + LEVEL_CORE +
+
+
+
+ REGSET_PopCountIsZero + LEVEL_CORE +
+
+
+
+ REGSET_PopNext + LEVEL_CORE +
+
+
+
+ REGSET_Remove + LEVEL_CORE +
+
+
+
+ REGSET_StringList + LEVEL_CORE +
+
+
+
+ REGSET_StringShort + LEVEL_CORE +
+
+
+
+ REGWIDTH + LEVEL_BASE +
+
+
+
+ REL_allocated_set + LEVEL_CORE +
+
+
+
+ RELTYPE_StringShort + LEVEL_CORE +
+
+
+
+ REMOVE_INSTRUMENTATION_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ RemoveArguments + LEVEL_BASE::COMMAND_LINE_ARGUMENTS +
+
+
+
+ REPLACEDFUN + LEVEL_PINCLIENT +
+
+
+
+ REPLAY_MODE + LEVEL_PINCLIENT +
+
+
+
+ REPLAY_MODE_IMAGEOPS + LEVEL_PINCLIENT +
+
+
+
+ RTN_AddInstrumentFunction + LEVEL_PINCLIENT +
+
+
+
+ RTN_Address + LEVEL_PINCLIENT +
+
+
+
+ RTN_Close + LEVEL_PINCLIENT +
+
+
+
+ RTN_CodeRangesProbed + LEVEL_PINCLIENT +
+
+
+
+ RTN_CreateAt + LEVEL_PINCLIENT +
+
+
+
+ RTN_Destroy + LEVEL_PINCLIENT +
+
+
+
+ RTN_DynamicMethodId + LEVEL_PINCLIENT +
+
+
+
+ RTN_FindByAddress + LEVEL_PINCLIENT +
+
+
+
+ RTN_FindByName + LEVEL_PINCLIENT +
+
+
+
+ RTN_FindNameByAddress + LEVEL_PINCLIENT +
+
+
+
+ RTN_Funptr + LEVEL_PINCLIENT +
+
+
+
+ RTN_Id + LEVEL_PINCLIENT +
+
+
+
+ RTN_IFuncImplementation + LEVEL_PINCLIENT +
+
+
+
+ RTN_IFuncResolver + LEVEL_PINCLIENT +
+
+
+
+ RTN_InsertCall + LEVEL_PINCLIENT +
+
+
+
+ RTN_InsertCallProbed + LEVEL_PINCLIENT +
+
+
+
+ RTN_InsertCallProbedEx + LEVEL_PINCLIENT +
+
+
+
+ RTN_InsertFillBuffer + LEVEL_PINCLIENT +
+
+
+
+ RTN_InsHead + LEVEL_PINCLIENT +
+
+
+
+ RTN_InsHeadOnly + LEVEL_PINCLIENT +
+
+
+
+ RTN_InsTail + LEVEL_PINCLIENT +
+
+
+
+ RTN_INSTRUMENT_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ RTN_Invalid + LEVEL_PINCLIENT +
+
+
+
+ RTN_IsArtificial + LEVEL_PINCLIENT +
+
+
+
+ RTN_IsDynamic + LEVEL_PINCLIENT +
+
+
+
+ RTN_IsSafeForProbedInsertion + LEVEL_PINCLIENT +
+
+
+
+ RTN_IsSafeForProbedInsertionEx + LEVEL_PINCLIENT +
+
+
+
+ RTN_IsSafeForProbedReplacement + LEVEL_PINCLIENT +
+
+
+
+ RTN_IsSafeForProbedReplacementEx + LEVEL_PINCLIENT +
+
+
+
+ RTN_KEY + LEVEL_PINCLIENT +
+
+
+
+ RTN_Name + LEVEL_PINCLIENT +
+
+
+
+ RTN_Next + LEVEL_PINCLIENT +
+
+
+
+ RTN_NumIns + LEVEL_PINCLIENT +
+
+
+
+ RTN_Open + LEVEL_PINCLIENT +
+
+
+
+ RTN_OUTSIDE_RANGES + LEVEL_PINCLIENT +
+
+
+
+ RTN_Prev + LEVEL_PINCLIENT +
+
+
+
+ RTN_Range + LEVEL_PINCLIENT +
+
+
+
+ RTN_Replace + LEVEL_PINCLIENT +
+
+
+
+ RTN_ReplaceProbed + LEVEL_PINCLIENT +
+
+
+
+ RTN_ReplaceProbedEx + LEVEL_PINCLIENT +
+
+
+
+ RTN_ReplaceSignature + LEVEL_PINCLIENT +
+
+
+
+ RTN_ReplaceSignatureProbed + LEVEL_PINCLIENT +
+
+
+
+ RTN_ReplaceSignatureProbedEx + LEVEL_PINCLIENT +
+
+
+
+ RTN_Sec + LEVEL_PINCLIENT +
+
+
+
+ RTN_Size + LEVEL_PINCLIENT +
+
+
+
+ RTN_Sym + LEVEL_PINCLIENT +
+
+
+
+ RTN_Valid + LEVEL_PINCLIENT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/all_73.html b/src/tracer/pintool/pin-3.13/doc/html/search/all_73.html new file mode 100755 index 0000000..9d6697a --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/all_73.html @@ -0,0 +1,548 @@ + + + + + + + +
+
Loading...
+
+
+ SEC_Address + LEVEL_PINCLIENT +
+
+
+
+ SEC_Data + LEVEL_PINCLIENT +
+
+
+
+ SEC_Img + LEVEL_PINCLIENT +
+
+
+
+ SEC_Invalid + LEVEL_PINCLIENT +
+
+
+
+ SEC_IsExecutable + LEVEL_PINCLIENT +
+
+
+
+ SEC_IsReadable + LEVEL_PINCLIENT +
+
+
+
+ SEC_IsWriteable + LEVEL_PINCLIENT +
+
+
+
+ SEC_Mapped + LEVEL_PINCLIENT +
+
+
+
+ SEC_Name + LEVEL_PINCLIENT +
+
+
+
+ SEC_Next + LEVEL_PINCLIENT +
+
+
+
+ SEC_Prev + LEVEL_PINCLIENT +
+
+
+
+ SEC_RtnHead + LEVEL_PINCLIENT +
+
+
+
+ SEC_RtnTail + LEVEL_PINCLIENT +
+
+
+
+ SEC_Size + LEVEL_PINCLIENT +
+
+ +
+
+ SEC_TYPE_BSS + LEVEL_CORE +
+
+
+
+ SEC_TYPE_DATA + LEVEL_CORE +
+
+
+
+ SEC_TYPE_DYNAMIC + LEVEL_CORE +
+
+
+
+ SEC_TYPE_DYNREL + LEVEL_CORE +
+
+
+
+ SEC_TYPE_EXEC + LEVEL_CORE +
+
+
+
+ SEC_TYPE_LOOS + LEVEL_CORE +
+
+
+
+ SEC_TYPE_LSDA + LEVEL_CORE +
+
+
+
+ SEC_TYPE_PROC + LEVEL_CORE +
+
+
+
+ SEC_TYPE_REGREL + LEVEL_CORE +
+
+
+
+ SEC_TYPE_USER + LEVEL_CORE +
+
+
+
+ SEC_Valid + LEVEL_PINCLIENT +
+
+
+
+ SelectRtn + INSTLIB::FILTER_RTN +
+
+ +
+
+ SetAddress0x + LEVEL_BASE +
+
+
+
+ SetCount + INSTLIB::ICOUNT +
+
+
+
+ SetData + LEVEL_PINCLIENT::CLIENT_TLS +
+
+
+
+ SetHi16ZmmBit + LEVEL_CORE +
+
+
+
+ SetPinClientKnobs + LEVEL_BASE::PARSER +
+
+
+
+ SetPinKnobs + LEVEL_BASE::PARSER +
+
+
+
+ SetPrefix + INSTLIB::FOLLOW_CHILD +
+
+
+
+ SHELL +
+
+
+
+ SimpleXMLParser + LEVEL_BASE +
+
+
+
+ SimpleXMLParser + LEVEL_BASE::SimpleXMLParser +
+
+
+
+ SKIP_INT3 + INSTLIB +
+
+
+
+ SKIPPER + INSTLIB +
+
+
+
+ SMC_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ SMC_ENABLE_DISABLE_TYPE + LEVEL_PINCLIENT +
+
+
+
+ STARTUP_ARGUMENTS + DEBUGGER_SHELL +
+
+
+
+ String + LEVEL_BASE::COMMAND_LINE_ARGUMENTS +
+
+
+
+ StringBignum + LEVEL_BASE +
+
+
+
+ StringBool + LEVEL_BASE +
+
+
+
+ StringDec + LEVEL_BASE +
+
+
+
+ StringDecSigned + LEVEL_BASE +
+
+
+
+ StringFlt + LEVEL_BASE +
+
+
+
+ StringFromAddrint + LEVEL_BASE +
+
+
+
+ StringFromUint64 + LEVEL_BASE +
+
+
+
+ StringHex + LEVEL_BASE +
+
+
+
+ StringHex32 + LEVEL_BASE +
+
+
+
+ StringKnobSummary + LEVEL_BASE::KNOB_BASE +
+
+
+
+ StringLongAll + LEVEL_BASE::KNOB_BASE +
+
+
+
+ StringSequence + LEVEL_BASE +
+
+
+
+ StringTri + LEVEL_BASE +
+
+
+
+ SYM_Address + LEVEL_PINCLIENT +
+
+
+
+ SYM_Dynamic + LEVEL_PINCLIENT +
+
+
+
+ SYM_GeneratedByPin + LEVEL_PINCLIENT +
+
+
+
+ SYM_IFuncImplementation + LEVEL_PINCLIENT +
+
+
+
+ SYM_IFuncResolver + LEVEL_PINCLIENT +
+
+
+
+ SYM_Index + LEVEL_PINCLIENT +
+
+
+
+ SYM_Invalid + LEVEL_PINCLIENT +
+
+
+
+ SYM_Name + LEVEL_PINCLIENT +
+
+
+
+ SYM_Next + LEVEL_PINCLIENT +
+
+
+
+ SYM_Prev + LEVEL_PINCLIENT +
+
+
+
+ SYM_Valid + LEVEL_PINCLIENT +
+
+
+
+ SYM_Value + LEVEL_PINCLIENT +
+
+
+
+ SYMBOL_INFO_MODE + LEVEL_PINCLIENT +
+
+
+
+ SymbolAddressRange + LEVEL_PINCLIENT +
+
+
+
+ SymbolDebugInfo + LEVEL_PINCLIENT +
+
+
+
+ SYSCALL_ENTRY_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ SYSCALL_EXIT_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ SYSCALL_STANDARD + LEVEL_CORE +
+
+
+
+ SYSCALL_STANDARD_IA32_LINUX + LEVEL_CORE +
+
+ +
+
+ SYSCALL_STANDARD_IA32_MAC + LEVEL_CORE +
+
+
+ +
+ +
+
+ SYSCALL_STANDARD_IA32E_LINUX + LEVEL_CORE +
+
+
+
+ SYSCALL_STANDARD_IA32E_MAC + LEVEL_CORE +
+
+ +
+
+ SYSCALL_STANDARD_INVALID + LEVEL_CORE +
+
+
+
+ SYSCALL_STANDARD_WINDOWS_INT + LEVEL_CORE +
+
+
+
+ SYSCALL_STANDARD_WOW64 + LEVEL_CORE +
+
+
+
+ syscallCallbacksRWLock + LEVEL_PINCLIENT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/all_74.html b/src/tracer/pintool/pin-3.13/doc/html/search/all_74.html new file mode 100755 index 0000000..ac50b8c --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/all_74.html @@ -0,0 +1,188 @@ + + + + + + + +
+
Loading...
+
+
+ THREAD_ATTACH_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ THREAD_ATTACH_PROBED_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ THREAD_DETACH_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ THREAD_DETACH_PROBED_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ THREAD_FINI_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ THREAD_START_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ TIME_WARP + INSTLIB +
+
+
+
+ TIME_WARP_RDTSC + INSTLIB +
+
+
+
+ TLS_KEY + LEVEL_BASE +
+
+
+
+ Tokenize + LEVEL_BASE +
+
+
+
+ ToString + LEVEL_CORE::MEM_ADDR_EXP +
+
+
+
+ TRACE + LEVEL_PINCLIENT +
+
+
+
+ TRACE_AddInstrumentFunction + LEVEL_PINCLIENT +
+
+
+
+ TRACE_Address + LEVEL_PINCLIENT +
+
+
+
+ TRACE_AddSmcDetectedFunction + LEVEL_PINCLIENT +
+
+
+
+ TRACE_BblHead + LEVEL_PINCLIENT +
+
+
+
+ TRACE_BblTail + LEVEL_PINCLIENT +
+
+
+
+ TRACE_BUFFER_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ TRACE_HasFallThrough + LEVEL_PINCLIENT +
+
+
+
+ TRACE_InsertCall + LEVEL_PINCLIENT +
+
+
+
+ TRACE_InsertIfCall + LEVEL_PINCLIENT +
+
+
+
+ TRACE_InsertThenCall + LEVEL_PINCLIENT +
+
+
+
+ TRACE_INSTRUMENT_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ TRACE_NumBbl + LEVEL_PINCLIENT +
+
+
+
+ TRACE_NumIns + LEVEL_PINCLIENT +
+
+
+
+ TRACE_Rtn + LEVEL_PINCLIENT +
+
+
+
+ TRACE_Size + LEVEL_PINCLIENT +
+
+
+
+ TRACE_Version + LEVEL_PINCLIENT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/all_75.html b/src/tracer/pintool/pin-3.13/doc/html/search/all_75.html new file mode 100755 index 0000000..7733ebc --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/all_75.html @@ -0,0 +1,50 @@ + + + + + + + +
+
Loading...
+
+
+ Uint32FromString + LEVEL_BASE +
+
+
+
+ Uint64FromString + LEVEL_BASE +
+
+
+
+ UNDECORATION + LEVEL_PINCLIENT +
+
+
+
+ UNDECORATION_COMPLETE + LEVEL_PINCLIENT +
+
+
+
+ UNDECORATION_NAME_ONLY + LEVEL_PINCLIENT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/all_76.html b/src/tracer/pintool/pin-3.13/doc/html/search/all_76.html new file mode 100755 index 0000000..82ffc5f --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/all_76.html @@ -0,0 +1,38 @@ + + + + + + + +
+
Loading...
+
+
+ VAL + LEVEL_CORE +
+
+
+
+ VAL_TYPE + LEVEL_CORE +
+
+
+
+ visitNode + LEVEL_BASE::SimpleXMLParser +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/all_7e.html b/src/tracer/pintool/pin-3.13/doc/html/search/all_7e.html new file mode 100755 index 0000000..699c398 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/all_7e.html @@ -0,0 +1,38 @@ + + + + + + + +
+
Loading...
+
+
+ ~COMMAND_LINE_ARGUMENTS + LEVEL_BASE::COMMAND_LINE_ARGUMENTS +
+
+
+
+ ~ICUSTOM_INSTRUMENTOR + DEBUGGER_SHELL::ICUSTOM_INSTRUMENTOR +
+
+
+
+ ~ISHELL + DEBUGGER_SHELL::ISHELL +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/classes_5f.html b/src/tracer/pintool/pin-3.13/doc/html/search/classes_5f.html new file mode 100755 index 0000000..875a8cb --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/classes_5f.html @@ -0,0 +1,120 @@ + + + + + + + +
+
Loading...
+
+ +
+ + + + + + + + + + + + + + + + + + + +
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/classes_61.html b/src/tracer/pintool/pin-3.13/doc/html/search/classes_61.html new file mode 100755 index 0000000..765d246 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/classes_61.html @@ -0,0 +1,134 @@ + + + + + + + +
+
Loading...
+
+
+ ADDRESS_RANGE + LEVEL_BASE +
+
+
+
+ ALARM_ADDRESS + CONTROLLER +
+
+
+
+ ALARM_CPUID + CONTROLLER +
+
+
+
+ ALARM_ENTER_FUNC + CONTROLLER +
+
+
+
+ ALARM_EXIT_FUNC + CONTROLLER +
+
+
+
+ ALARM_ICOUNT + CONTROLLER +
+
+
+
+ ALARM_IMAGE + CONTROLLER +
+
+
+
+ ALARM_INT3 + CONTROLLER +
+
+
+
+ ALARM_INTERACTIVE + CONTROLLER +
+
+
+
+ ALARM_ISA_CATEGORY + CONTROLLER +
+
+
+
+ ALARM_ISA_EXTENSION + CONTROLLER +
+
+
+
+ ALARM_ITEXT + CONTROLLER +
+
+
+
+ ALARM_MAGIC + CONTROLLER +
+
+
+
+ ALARM_MANAGER + CONTROLLER +
+
+
+
+ ALARM_PCONTROL + CONTROLLER +
+
+
+
+ ALARM_SIGNAL + CONTROLLER +
+
+
+
+ ALARM_SSC + CONTROLLER +
+
+
+
+ ALARM_SYMBOL + CONTROLLER +
+
+
+
+ ALARM_TIMEOUT + CONTROLLER +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/classes_62.html b/src/tracer/pintool/pin-3.13/doc/html/search/classes_62.html new file mode 100755 index 0000000..9653eaa --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/classes_62.html @@ -0,0 +1,32 @@ + + + + + + + +
+
Loading...
+
+
+ BBL_EDG_CONTAINER_PRED + LEVEL_CORE +
+
+
+
+ BBL_EDG_CONTAINER_SUCC + LEVEL_CORE +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/classes_63.html b/src/tracer/pintool/pin-3.13/doc/html/search/classes_63.html new file mode 100755 index 0000000..e6c62b1 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/classes_63.html @@ -0,0 +1,133 @@ + + + + + + + +
+
Loading...
+
+
+ CACHELINE_COUNTER + CONTROLLER +
+
+ +
+
+ CallEntry + CALLSTACK +
+
+
+
+ CallStack + CALLSTACK +
+
+
+
+ CallStackHandlerParams + CALLSTACK +
+
+
+
+ CallStackInfoStruct + CALLSTACK +
+
+
+
+ CallStackManager + CALLSTACK +
+
+
+
+ CHAIN_EVENT + CONTROLLER +
+
+
+
+ CHUNK_REL_CONTAINER + LEVEL_CORE +
+
+
+
+ CLIENT_TLS + LEVEL_PINCLIENT +
+
+
+
+ COMMAND_LINE_ARGUMENTS + LEVEL_BASE +
+
+
+
+ CONTROL_ARGS + CONTROLLER +
+
+
+
+ CONTROL_CHAIN + CONTROLLER +
+
+
+
+ CONTROL_HANDLER_PARAMS + CONTROLLER +
+
+
+
+ CONTROL_IREGIONS + CONTROLLER +
+
+
+
+ CONTROL_MANAGER + CONTROLLER +
+
+
+
+ CONTROL_PCREGIONS + CONTROLLER +
+
+
+
+ CONTROL_REGION_INFO + CONTROLLER +
+
+
+
+ CONTROLLER_EVENTS + CONTROLLER +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/classes_64.html b/src/tracer/pintool/pin-3.13/doc/html/search/classes_64.html new file mode 100755 index 0000000..c8a0bbe --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/classes_64.html @@ -0,0 +1,36 @@ + + + + + + + +
+
Loading...
+ +
+ +
+
+
+ DECSTR + LEVEL_BASE +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/classes_65.html b/src/tracer/pintool/pin-3.13/doc/html/search/classes_65.html new file mode 100755 index 0000000..ac30c30 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/classes_65.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ EDG_STRUCT_BASE + LEVEL_CORE +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/classes_66.html b/src/tracer/pintool/pin-3.13/doc/html/search/classes_66.html new file mode 100755 index 0000000..6d666bd --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/classes_66.html @@ -0,0 +1,50 @@ + + + + + + + +
+
Loading...
+
+
+ FILTER + INSTLIB +
+
+
+
+ FILTER_LIB + INSTLIB +
+
+
+
+ FILTER_RTN + INSTLIB +
+
+
+
+ FLTSTR + LEVEL_BASE +
+
+
+
+ FOLLOW_CHILD + INSTLIB +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/classes_68.html b/src/tracer/pintool/pin-3.13/doc/html/search/classes_68.html new file mode 100755 index 0000000..84de91d --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/classes_68.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ HEXSTR + LEVEL_BASE +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/classes_69.html b/src/tracer/pintool/pin-3.13/doc/html/search/classes_69.html new file mode 100755 index 0000000..588bbf2 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/classes_69.html @@ -0,0 +1,122 @@ + + + + + + + +
+
Loading...
+
+
+ IALARM + CONTROLLER +
+
+
+
+ ICOUNT + INSTLIB +
+
+
+
+ ICUSTOM_INSTRUMENTOR + DEBUGGER_SHELL +
+
+
+
+ IEVENT + CONTROLLER +
+
+
+
+ IMAGE_INIT_SESSION + LEVEL_PINCLIENT +
+
+
+
+ IMAGE_LOAD_OP + LEVEL_PINCLIENT +
+
+
+
+ IMAGE_LOAD_OP2 + LEVEL_PINCLIENT +
+
+
+
+ ImageLoadArgs + LEVEL_PINCLIENT +
+
+
+
+ ImageLoaderInfo + LEVEL_BASE +
+
+
+
+ IMG_IDENTIFIER + LEVEL_PINCLIENT +
+
+
+
+ IMG_REGION + LEVEL_CORE +
+
+
+
+ INIT_ALARM + CONTROLLER +
+
+
+
+ INSTR + LEVEL_PINCLIENT +
+
+
+
+ INSTR_INFO + LEVEL_PINCLIENT +
+
+
+
+ INTERACTIVE_LISTENER + CONTROLLER +
+
+
+
+ IREGION + CONTROLLER +
+
+
+
+ ISHELL + DEBUGGER_SHELL +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/classes_6b.html b/src/tracer/pintool/pin-3.13/doc/html/search/classes_6b.html new file mode 100755 index 0000000..d8251a6 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/classes_6b.html @@ -0,0 +1,68 @@ + + + + + + + +
+
Loading...
+
+
+ KNOB + LEVEL_BASE +
+
+
+
+ KNOB< BOOL > + LEVEL_BASE +
+
+
+
+ KNOB_BASE + LEVEL_BASE +
+
+
+
+ KNOB_COMMENT + LEVEL_BASE +
+
+
+
+ KNOBVALUE + LEVEL_BASE +
+
+
+
+ KNOBVALUE< BOOL > + LEVEL_BASE +
+
+
+
+ KNOBVALUE_LIST + LEVEL_BASE +
+
+
+
+ KNOBVALUE_LIST< BOOL > + LEVEL_BASE +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/classes_6c.html b/src/tracer/pintool/pin-3.13/doc/html/search/classes_6c.html new file mode 100755 index 0000000..4198ac4 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/classes_6c.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ LINUX_LOADER_IMAGE_INFO + LEVEL_BASE +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/classes_6d.html b/src/tracer/pintool/pin-3.13/doc/html/search/classes_6d.html new file mode 100755 index 0000000..a18a432 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/classes_6d.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ MEM_ADDR_EXP + LEVEL_CORE +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/classes_6f.html b/src/tracer/pintool/pin-3.13/doc/html/search/classes_6f.html new file mode 100755 index 0000000..2a959e7 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/classes_6f.html @@ -0,0 +1,32 @@ + + + + + + + +
+
Loading...
+
+
+ OUTSIDE_TARGET + LEVEL_PINCLIENT +
+
+
+
+ OUTSIDE_TARGET_MEM_RANGE + LEVEL_PINCLIENT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/classes_70.html b/src/tracer/pintool/pin-3.13/doc/html/search/classes_70.html new file mode 100755 index 0000000..a6641e6 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/classes_70.html @@ -0,0 +1,91 @@ + + + + + + + +
+
Loading...
+
+
+ PARG_T +
+
+
+
+ PARSER + LEVEL_BASE +
+
+
+
+ PARSER + CONTROLLER +
+
+
+
+ PCREGION + CONTROLLER +
+
+
+
+ PIN_CLIENT_MUTEX + LEVEL_PINCLIENT +
+
+ +
+
+ PIN_ERROR_DESCRIPTOR + LEVEL_BASE +
+
+
+
+ PIN_LOCK + LEVEL_BASE +
+
+ + + + +
+ +
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/classes_72.html b/src/tracer/pintool/pin-3.13/doc/html/search/classes_72.html new file mode 100755 index 0000000..afab123 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/classes_72.html @@ -0,0 +1,61 @@ + + + + + + + +
+
Loading...
+
+
+ REG_INFO +
+
+
+
+ REGDEF_ENTRY + LEVEL_BASE +
+
+
+
+ REGION_UTILS + CONTROLLER +
+
+
+
+ REGISTER_SET + LEVEL_CORE +
+
+
+
+ REPLACEDFUN + LEVEL_PINCLIENT +
+
+
+
+ RTN_KEY + LEVEL_PINCLIENT +
+
+
+
+ RTN_OUTSIDE_RANGES + LEVEL_PINCLIENT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/classes_73.html b/src/tracer/pintool/pin-3.13/doc/html/search/classes_73.html new file mode 100755 index 0000000..39a9d4c --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/classes_73.html @@ -0,0 +1,61 @@ + + + + + + + +
+
Loading...
+
+
+ SHELL +
+
+
+
+ SimpleXMLParser + LEVEL_BASE +
+
+
+
+ SKIP_INT3 + INSTLIB +
+
+
+
+ SKIPPER + INSTLIB +
+
+
+
+ STARTUP_ARGUMENTS + DEBUGGER_SHELL +
+
+
+
+ SymbolAddressRange + LEVEL_PINCLIENT +
+
+
+
+ SymbolDebugInfo + LEVEL_PINCLIENT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/classes_74.html b/src/tracer/pintool/pin-3.13/doc/html/search/classes_74.html new file mode 100755 index 0000000..949cefe --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/classes_74.html @@ -0,0 +1,32 @@ + + + + + + + +
+
Loading...
+
+
+ TIME_WARP + INSTLIB +
+
+
+
+ TIME_WARP_RDTSC + INSTLIB +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/classes_76.html b/src/tracer/pintool/pin-3.13/doc/html/search/classes_76.html new file mode 100755 index 0000000..d8cb356 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/classes_76.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ VAL + LEVEL_CORE +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/close.png b/src/tracer/pintool/pin-3.13/doc/html/search/close.png new file mode 100755 index 0000000000000000000000000000000000000000..9342d3dfeea7b7c4ee610987e717804b5a42ceb9 GIT binary patch literal 273 zcmV+s0q*{ZP)4(RlMby96)VwnbG{ zbe&}^BDn7x>$<{ck4zAK-=nT;=hHG)kmplIF${xqm8db3oX6wT3bvp`TE@m0cg;b) zBuSL}5?N7O(iZLdAlz@)b)Rd~DnSsSX&P5qC`XwuFwcAYLC+d2>+1(8on;wpt8QIC X2MT$R4iQDd00000NkvXXu0mjfia~GN literal 0 HcmV?d00001 diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/enums_61.html b/src/tracer/pintool/pin-3.13/doc/html/search/enums_61.html new file mode 100755 index 0000000..ea6d9e5 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/enums_61.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ ATTACH_STATUS + LEVEL_PINCLIENT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/enums_65.html b/src/tracer/pintool/pin-3.13/doc/html/search/enums_65.html new file mode 100755 index 0000000..25bf2d9 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/enums_65.html @@ -0,0 +1,44 @@ + + + + + + + +
+
Loading...
+
+
+ EDG_STATE + LEVEL_CORE +
+
+
+
+ EDG_TYPE + LEVEL_CORE +
+
+
+
+ EXCEPTION_CLASS + LEVEL_BASE +
+
+
+
+ EXCEPTION_CODE + LEVEL_BASE +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/enums_66.html b/src/tracer/pintool/pin-3.13/doc/html/search/enums_66.html new file mode 100755 index 0000000..d0fb0ed --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/enums_66.html @@ -0,0 +1,38 @@ + + + + + + + +
+
Loading...
+
+
+ FAULTY_ACCESS_TYPE + LEVEL_BASE +
+
+
+
+ FPERROR + LEVEL_BASE +
+
+
+
+ FPOINT + LEVEL_PINCLIENT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/enums_69.html b/src/tracer/pintool/pin-3.13/doc/html/search/enums_69.html new file mode 100755 index 0000000..32aea08 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/enums_69.html @@ -0,0 +1,32 @@ + + + + + + + +
+
Loading...
+
+
+ IMG_PROPERTY + LEVEL_CORE +
+
+
+
+ IMG_TYPE + LEVEL_CORE +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/enums_6b.html b/src/tracer/pintool/pin-3.13/doc/html/search/enums_6b.html new file mode 100755 index 0000000..f7b2ae7 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/enums_6b.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ KNOB_MODE + LEVEL_BASE +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/enums_6d.html b/src/tracer/pintool/pin-3.13/doc/html/search/enums_6d.html new file mode 100755 index 0000000..ec3efee --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/enums_6d.html @@ -0,0 +1,32 @@ + + + + + + + +
+
Loading...
+
+
+ MEMORY_TYPE + LEVEL_CORE +
+
+
+
+ mode + INSTLIB::ICOUNT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/enums_70.html b/src/tracer/pintool/pin-3.13/doc/html/search/enums_70.html new file mode 100755 index 0000000..8a0a562 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/enums_70.html @@ -0,0 +1,32 @@ + + + + + + + +
+
Loading...
+
+
+ PREDICATE_IA32 + LEVEL_BASE +
+
+
+
+ PROBE_MODE + LEVEL_PINCLIENT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/enums_72.html b/src/tracer/pintool/pin-3.13/doc/html/search/enums_72.html new file mode 100755 index 0000000..af8fba5 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/enums_72.html @@ -0,0 +1,56 @@ + + + + + + + +
+
Loading...
+
+
+ REG + LEVEL_BASE +
+
+
+
+ REG_CLASS + LEVEL_BASE +
+
+
+
+ REG_SUBCLASS + LEVEL_BASE +
+
+
+
+ REGNAME + LEVEL_BASE +
+
+
+
+ REGWIDTH + LEVEL_BASE +
+
+
+
+ REPLAY_MODE + LEVEL_PINCLIENT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/enums_73.html b/src/tracer/pintool/pin-3.13/doc/html/search/enums_73.html new file mode 100755 index 0000000..c39c9de --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/enums_73.html @@ -0,0 +1,44 @@ + + + + + + + +
+
Loading...
+
+
+ SEC_TYPE + LEVEL_CORE +
+
+
+
+ SMC_ENABLE_DISABLE_TYPE + LEVEL_PINCLIENT +
+
+
+
+ SYMBOL_INFO_MODE + LEVEL_PINCLIENT +
+
+
+
+ SYSCALL_STANDARD + LEVEL_CORE +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/enums_75.html b/src/tracer/pintool/pin-3.13/doc/html/search/enums_75.html new file mode 100755 index 0000000..f1f0c17 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/enums_75.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ UNDECORATION + LEVEL_PINCLIENT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/enums_76.html b/src/tracer/pintool/pin-3.13/doc/html/search/enums_76.html new file mode 100755 index 0000000..5314e03 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/enums_76.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ VAL_TYPE + LEVEL_CORE +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_61.html b/src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_61.html new file mode 100755 index 0000000..747896c --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_61.html @@ -0,0 +1,32 @@ + + + + + + + +
+
Loading...
+
+
+ ATTACH_FAILED_DETACH + LEVEL_PINCLIENT +
+
+
+
+ ATTACH_INITIATED + LEVEL_PINCLIENT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_64.html b/src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_64.html new file mode 100755 index 0000000..f2131ef --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_64.html @@ -0,0 +1,32 @@ + + + + + + + +
+
Loading...
+
+
+ DEBUG_OR_EXPORT_SYMBOLS + LEVEL_PINCLIENT +
+
+
+
+ DEBUG_SYMBOLS + LEVEL_PINCLIENT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_65.html b/src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_65.html new file mode 100755 index 0000000..b0b6074 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_65.html @@ -0,0 +1,344 @@ + + + + + + + +
+
Loading...
+
+
+ EDG_TYPE_BRANCH + LEVEL_CORE +
+
+
+
+ EDG_TYPE_CALL + LEVEL_CORE +
+
+
+
+ EDG_TYPE_COMP + LEVEL_CORE +
+
+
+
+ EDG_TYPE_EXCEPTION + LEVEL_CORE +
+
+
+
+ EDG_TYPE_FALSE + LEVEL_CORE +
+
+
+
+ EDG_TYPE_IBRANCH + LEVEL_CORE +
+
+
+
+ EDG_TYPE_INVALID + LEVEL_CORE +
+
+ +
+
+ EDG_TYPE_NORMAL + LEVEL_CORE +
+
+
+
+ EDG_TYPE_PREFETCH + LEVEL_CORE +
+
+
+
+ EDG_TYPE_RETURN + LEVEL_CORE +
+
+
+
+ EDG_TYPE_SWITCH + LEVEL_CORE +
+
+
+
+ EXCEPTCLASS_ACCESS_FAULT + LEVEL_BASE +
+
+
+
+ EXCEPTCLASS_DEBUG + LEVEL_BASE +
+
+
+
+ EXCEPTCLASS_FP_ERROR + LEVEL_BASE +
+
+
+
+ EXCEPTCLASS_INT_ERROR + LEVEL_BASE +
+
+
+
+ EXCEPTCLASS_INVALID_INS + LEVEL_BASE +
+
+
+ +
+
+
+ EXCEPTCLASS_NONE + LEVEL_BASE +
+
+
+
+ EXCEPTCLASS_OS + LEVEL_BASE +
+
+
+
+ EXCEPTCLASS_UNKNOWN + LEVEL_BASE +
+
+
+
+ EXCEPTCODE_ACCESS_DENIED + LEVEL_BASE +
+
+
+ +
+
+ +
+
+
+ EXCEPTCODE_ACCESS_MISALIGNED + LEVEL_BASE +
+
+ + +
+ +
+
+ +
+
+
+ EXCEPTCODE_ILLEGAL_INS + LEVEL_BASE +
+
+
+ +
+
+ +
+
+
+ EXCEPTCODE_INT_OVERFLOW_TRAP + LEVEL_BASE +
+
+
+
+ EXCEPTCODE_NONE + LEVEL_BASE +
+
+
+
+ EXCEPTCODE_PRIVILEGED_INS + LEVEL_BASE +
+
+
+ +
+ +
+ +
+
+
+ EXCEPTCODE_RECEIVED_UNKNOWN + LEVEL_BASE +
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ EXCEPTCODE_SIMD_OVERFLOW + LEVEL_BASE +
+
+
+
+ EXCEPTCODE_SIMD_UNDERFLOW + LEVEL_BASE +
+
+
+
+ EXCEPTCODE_WINDOWS + LEVEL_BASE +
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ EXCEPTCODE_X87_OVERFLOW + LEVEL_BASE +
+
+
+
+ EXCEPTCODE_X87_STACK_ERROR + LEVEL_BASE +
+
+
+
+ EXCEPTCODE_X87_UNDERFLOW + LEVEL_BASE +
+
+
+
+ EXPORT_SYMBOLS + LEVEL_PINCLIENT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_66.html b/src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_66.html new file mode 100755 index 0000000..3513d62 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_66.html @@ -0,0 +1,104 @@ + + + + + + + +
+
Loading...
+
+
+ FAULTY_ACCESS_EXECUTE + LEVEL_BASE +
+
+
+
+ FAULTY_ACCESS_READ + LEVEL_BASE +
+
+
+
+ FAULTY_ACCESS_TYPE_UNKNOWN + LEVEL_BASE +
+
+
+
+ FAULTY_ACCESS_WRITE + LEVEL_BASE +
+
+
+
+ FPERROR_DENORMAL_OPERAND + LEVEL_BASE +
+
+
+
+ FPERROR_DIVIDE_BY_ZERO + LEVEL_BASE +
+
+
+
+ FPERROR_INEXACT_RESULT + LEVEL_BASE +
+
+
+
+ FPERROR_INVALID_OPERATION + LEVEL_BASE +
+
+
+
+ FPERROR_OVERFLOW + LEVEL_BASE +
+
+
+
+ FPERROR_UNDERFLOW + LEVEL_BASE +
+
+
+
+ FPERROR_X87_STACK_ERROR + LEVEL_BASE +
+
+
+
+ FPOINT_AFTER_IN_CHILD + LEVEL_PINCLIENT +
+
+
+
+ FPOINT_AFTER_IN_PARENT + LEVEL_PINCLIENT +
+
+
+
+ FPOINT_BEFORE + LEVEL_PINCLIENT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_69.html b/src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_69.html new file mode 100755 index 0000000..6bc5f54 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_69.html @@ -0,0 +1,74 @@ + + + + + + + +
+
Loading...
+
+
+ IFUNC_SYMBOLS + LEVEL_PINCLIENT +
+
+
+
+ IMG_PROPERTY_IBT_ENABLED + LEVEL_CORE +
+
+
+
+ IMG_PROPERTY_SHSTK_ENABLED + LEVEL_CORE +
+
+
+
+ IMG_TYPE_API_CREATED + LEVEL_CORE +
+
+
+
+ IMG_TYPE_DYNAMIC_CODE + LEVEL_CORE +
+
+
+
+ IMG_TYPE_RELOCATABLE + LEVEL_CORE +
+
+
+
+ IMG_TYPE_SHARED + LEVEL_CORE +
+
+
+
+ IMG_TYPE_SHAREDLIB + LEVEL_CORE +
+
+
+
+ IMG_TYPE_STATIC + LEVEL_CORE +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_6b.html b/src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_6b.html new file mode 100755 index 0000000..6c228e4 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_6b.html @@ -0,0 +1,50 @@ + + + + + + + +
+
Loading...
+
+
+ KNOB_MODE_ACCUMULATE + LEVEL_BASE +
+
+
+
+ KNOB_MODE_APPEND + LEVEL_BASE +
+
+
+
+ KNOB_MODE_COMMENT + LEVEL_BASE +
+
+
+
+ KNOB_MODE_OVERWRITE + LEVEL_BASE +
+
+
+
+ KNOB_MODE_WRITEONCE + LEVEL_BASE +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_6d.html b/src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_6d.html new file mode 100755 index 0000000..5305a81 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_6d.html @@ -0,0 +1,32 @@ + + + + + + + +
+
Loading...
+
+
+ ModeBoth + INSTLIB::ICOUNT +
+
+
+
+ ModeNormal + INSTLIB::ICOUNT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_6e.html b/src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_6e.html new file mode 100755 index 0000000..da299c1 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_6e.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ NO_SYMBOLS + LEVEL_PINCLIENT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_70.html b/src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_70.html new file mode 100755 index 0000000..2aa5b37 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_70.html @@ -0,0 +1,146 @@ + + + + + + + +
+
Loading...
+
+
+ PREDICATE_ALWAYS_TRUE + LEVEL_BASE +
+
+
+
+ PREDICATE_BELOW + LEVEL_BASE +
+
+
+
+ PREDICATE_BELOW_OR_EQUAL + LEVEL_BASE +
+
+
+
+ PREDICATE_CX_NON_ZERO + LEVEL_BASE +
+
+
+
+ PREDICATE_ECX_NON_ZERO + 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_RCX_NON_ZERO + LEVEL_BASE +
+
+
+
+ PREDICATE_SAVED_GCX_NON_ZERO + LEVEL_BASE +
+
+
+
+ PREDICATE_SIGN + LEVEL_BASE +
+
+
+
+ PREDICATE_ZERO + LEVEL_BASE +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_72.html b/src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_72.html new file mode 100755 index 0000000..166cc03 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_72.html @@ -0,0 +1,512 @@ + + + + + + + +
+
Loading...
+
+
+ REG_FPTAG + LEVEL_BASE +
+
+
+
+ REG_FPTAG_FULL + LEVEL_BASE +
+
+
+
+ REG_GAX + LEVEL_BASE +
+
+
+
+ REG_GBP + LEVEL_BASE +
+
+
+
+ REG_GBX + LEVEL_BASE +
+
+
+
+ REG_GCX + LEVEL_BASE +
+
+
+
+ REG_GDI + LEVEL_BASE +
+
+
+
+ REG_GDX + LEVEL_BASE +
+
+
+
+ REG_GSI + LEVEL_BASE +
+
+
+
+ REG_INST_G0 + LEVEL_BASE +
+
+
+
+ REG_INST_G0D + LEVEL_BASE +
+
+
+
+ REG_INST_G1 + LEVEL_BASE +
+
+
+
+ REG_INST_G10 + LEVEL_BASE +
+
+
+
+ REG_INST_G10D + LEVEL_BASE +
+
+
+
+ REG_INST_G11 + LEVEL_BASE +
+
+
+
+ REG_INST_G11D + LEVEL_BASE +
+
+
+
+ REG_INST_G12 + LEVEL_BASE +
+
+
+
+ REG_INST_G12D + LEVEL_BASE +
+
+
+
+ REG_INST_G13 + LEVEL_BASE +
+
+
+
+ REG_INST_G13D + LEVEL_BASE +
+
+
+
+ REG_INST_G14 + LEVEL_BASE +
+
+
+
+ REG_INST_G14D + LEVEL_BASE +
+
+
+
+ REG_INST_G15 + LEVEL_BASE +
+
+
+
+ REG_INST_G15D + LEVEL_BASE +
+
+
+
+ REG_INST_G16 + LEVEL_BASE +
+
+
+
+ REG_INST_G16D + LEVEL_BASE +
+
+
+
+ REG_INST_G17 + LEVEL_BASE +
+
+
+
+ REG_INST_G17D + LEVEL_BASE +
+
+
+
+ REG_INST_G18 + LEVEL_BASE +
+
+
+
+ REG_INST_G18D + LEVEL_BASE +
+
+
+
+ REG_INST_G19 + LEVEL_BASE +
+
+
+
+ REG_INST_G19D + LEVEL_BASE +
+
+
+
+ REG_INST_G1D + LEVEL_BASE +
+
+
+
+ REG_INST_G2 + LEVEL_BASE +
+
+
+
+ REG_INST_G20 + LEVEL_BASE +
+
+
+
+ REG_INST_G20D + LEVEL_BASE +
+
+
+
+ REG_INST_G21 + LEVEL_BASE +
+
+
+
+ REG_INST_G21D + LEVEL_BASE +
+
+
+
+ REG_INST_G22 + LEVEL_BASE +
+
+
+
+ REG_INST_G22D + LEVEL_BASE +
+
+
+
+ REG_INST_G23 + LEVEL_BASE +
+
+
+
+ REG_INST_G23D + LEVEL_BASE +
+
+
+
+ REG_INST_G24 + LEVEL_BASE +
+
+
+
+ REG_INST_G24D + LEVEL_BASE +
+
+
+
+ REG_INST_G25 + LEVEL_BASE +
+
+
+
+ REG_INST_G25D + LEVEL_BASE +
+
+
+
+ REG_INST_G26 + LEVEL_BASE +
+
+
+
+ REG_INST_G26D + LEVEL_BASE +
+
+
+
+ REG_INST_G27 + LEVEL_BASE +
+
+
+
+ REG_INST_G27D + LEVEL_BASE +
+
+
+
+ REG_INST_G28 + LEVEL_BASE +
+
+
+
+ REG_INST_G28D + LEVEL_BASE +
+
+
+
+ REG_INST_G29 + LEVEL_BASE +
+
+
+
+ REG_INST_G29D + LEVEL_BASE +
+
+
+
+ REG_INST_G2D + LEVEL_BASE +
+
+
+
+ REG_INST_G3 + LEVEL_BASE +
+
+
+
+ REG_INST_G3D + LEVEL_BASE +
+
+
+
+ REG_INST_G4 + LEVEL_BASE +
+
+
+
+ REG_INST_G4D + LEVEL_BASE +
+
+
+
+ REG_INST_G5 + LEVEL_BASE +
+
+
+
+ REG_INST_G5D + LEVEL_BASE +
+
+
+
+ REG_INST_G6 + LEVEL_BASE +
+
+
+
+ REG_INST_G6D + LEVEL_BASE +
+
+
+
+ REG_INST_G7 + LEVEL_BASE +
+
+
+
+ REG_INST_G7D + LEVEL_BASE +
+
+
+
+ REG_INST_G8 + LEVEL_BASE +
+
+
+
+ REG_INST_G8D + LEVEL_BASE +
+
+
+
+ REG_INST_G9 + LEVEL_BASE +
+
+
+
+ REG_INST_G9D + LEVEL_BASE +
+
+
+
+ REG_INST_SCRATCH_BASE + LEVEL_BASE +
+
+
+
+ REG_RAX + LEVEL_BASE +
+
+
+
+ REG_RBP + LEVEL_BASE +
+
+
+
+ REG_RBX + LEVEL_BASE +
+
+
+
+ REG_RCX + LEVEL_BASE +
+
+
+
+ REG_RDI + LEVEL_BASE +
+
+
+
+ REG_RDX + LEVEL_BASE +
+
+
+
+ REG_RSI + LEVEL_BASE +
+
+
+
+ REG_RSP + LEVEL_BASE +
+
+
+
+ REG_SEG_FS_BASE + LEVEL_BASE +
+
+
+
+ REG_SEG_GS_BASE + LEVEL_BASE +
+
+
+
+ REG_STACK_PTR + LEVEL_BASE +
+
+
+
+ REPLAY_MODE_IMAGEOPS + LEVEL_PINCLIENT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_73.html b/src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_73.html new file mode 100755 index 0000000..26c1152 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_73.html @@ -0,0 +1,146 @@ + + + + + + + +
+
Loading...
+
+
+ SEC_TYPE_BSS + LEVEL_CORE +
+
+
+
+ SEC_TYPE_DATA + LEVEL_CORE +
+
+
+
+ SEC_TYPE_DYNAMIC + LEVEL_CORE +
+
+
+
+ SEC_TYPE_DYNREL + LEVEL_CORE +
+
+
+
+ SEC_TYPE_EXEC + LEVEL_CORE +
+
+
+
+ SEC_TYPE_LOOS + LEVEL_CORE +
+
+
+
+ SEC_TYPE_LSDA + LEVEL_CORE +
+
+
+
+ SEC_TYPE_PROC + LEVEL_CORE +
+
+
+
+ SEC_TYPE_REGREL + LEVEL_CORE +
+
+
+
+ SEC_TYPE_USER + LEVEL_CORE +
+
+
+
+ SYSCALL_STANDARD_IA32_LINUX + LEVEL_CORE +
+
+ +
+
+ SYSCALL_STANDARD_IA32_MAC + LEVEL_CORE +
+
+
+ +
+ +
+
+ SYSCALL_STANDARD_IA32E_LINUX + LEVEL_CORE +
+
+
+
+ SYSCALL_STANDARD_IA32E_MAC + LEVEL_CORE +
+
+ +
+
+ SYSCALL_STANDARD_INVALID + LEVEL_CORE +
+
+
+
+ SYSCALL_STANDARD_WINDOWS_INT + LEVEL_CORE +
+
+
+
+ SYSCALL_STANDARD_WOW64 + LEVEL_CORE +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_75.html b/src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_75.html new file mode 100755 index 0000000..7d54820 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/enumvalues_75.html @@ -0,0 +1,32 @@ + + + + + + + +
+
Loading...
+
+
+ UNDECORATION_COMPLETE + LEVEL_PINCLIENT +
+
+
+
+ UNDECORATION_NAME_ONLY + LEVEL_PINCLIENT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/functions_61.html b/src/tracer/pintool/pin-3.13/doc/html/search/functions_61.html new file mode 100755 index 0000000..c9b9947 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/functions_61.html @@ -0,0 +1,118 @@ + + + + + + + +
+
Loading...
+
+
+ Accumulate + LEVEL_BASE::KNOBVALUE +
+
+ + + +
+
+ AddrintFromString + LEVEL_BASE +
+
+
+
+ afterForkSyscall + LEVEL_PINCLIENT +
+
+
+
+ AInsertCall + LEVEL_PINCLIENT +
+
+
+
+ AInsertVersionCase + LEVEL_PINCLIENT +
+
+
+
+ AllocateKey + LEVEL_PINCLIENT::CLIENT_TLS +
+
+
+
+ APP_ImgHead + LEVEL_PINCLIENT +
+
+
+
+ APP_ImgTail + LEVEL_PINCLIENT +
+
+
+
+ Argc + LEVEL_BASE::COMMAND_LINE_ARGUMENTS +
+
+
+
+ Argv + LEVEL_BASE::COMMAND_LINE_ARGUMENTS +
+
+
+
+ ATTR_bbl_chunk + LEVEL_CORE +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/functions_62.html b/src/tracer/pintool/pin-3.13/doc/html/search/functions_62.html new file mode 100755 index 0000000..6d387e9 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/functions_62.html @@ -0,0 +1,146 @@ + + + + + + + +
+
Loading...
+
+
+ Base + LEVEL_CORE::MEM_ADDR_EXP +
+
+
+
+ BBL_Address + LEVEL_PINCLIENT +
+
+
+
+ BBL_HasFallThrough + LEVEL_PINCLIENT +
+
+
+
+ BBL_InsertCall + LEVEL_PINCLIENT +
+
+
+
+ BBL_InsertFillBuffer + LEVEL_PINCLIENT +
+
+
+
+ BBL_InsertIfCall + LEVEL_PINCLIENT +
+
+
+
+ BBL_InsertThenCall + LEVEL_PINCLIENT +
+
+
+
+ BBL_InsHead + LEVEL_PINCLIENT +
+
+
+
+ BBL_InsTail + LEVEL_PINCLIENT +
+
+
+
+ BBL_MoveAllAttributes + LEVEL_CORE +
+
+
+
+ BBL_Next + LEVEL_PINCLIENT +
+
+ +
+
+ BBL_NumAttrRegsym + LEVEL_CORE +
+
+
+
+ BBL_NumIns + LEVEL_CORE +
+
+
+
+ BBL_Original + LEVEL_PINCLIENT +
+
+
+
+ BBL_Prev + LEVEL_PINCLIENT +
+
+
+
+ BBL_SetTargetVersion + LEVEL_PINCLIENT +
+
+
+
+ BBL_Size + LEVEL_PINCLIENT +
+
+
+
+ BBL_Type + LEVEL_PINCLIENT +
+
+
+
+ BBL_Valid + LEVEL_PINCLIENT +
+
+
+
+ beforeForkSyscall + LEVEL_PINCLIENT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/functions_63.html b/src/tracer/pintool/pin-3.13/doc/html/search/functions_63.html new file mode 100755 index 0000000..c364666 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/functions_63.html @@ -0,0 +1,132 @@ + + + + + + + +
+
Loading...
+
+
+ CALLBACK_GetExecutionOrder + LEVEL_PINCLIENT +
+
+
+
+ CALLBACK_GetExecutionPriority + LEVEL_PINCLIENT +
+
+
+
+ CALLBACK_SetExecutionOrder + LEVEL_PINCLIENT +
+
+
+
+ CALLBACK_SetExecutionPriority + LEVEL_PINCLIENT +
+
+
+
+ CallingStd_IsArt + LEVEL_CORE +
+
+
+
+ CATEGORY_StringShort + LEVEL_CORE +
+
+
+
+ CharIsSpace + LEVEL_BASE +
+
+
+
+ CharToHexDigit + LEVEL_BASE +
+
+
+
+ CharToUpper + LEVEL_BASE +
+
+
+
+ CheckAllKnobs + LEVEL_BASE::KNOB_BASE +
+
+ +
+
+ CHILD_PROCESS_GetCommandLine + LEVEL_PINCLIENT +
+
+
+
+ CHILD_PROCESS_GetId + LEVEL_PINCLIENT +
+
+
+
+ CHILD_PROCESS_SetPinCommandLine + LEVEL_PINCLIENT +
+
+ +
+
+ Compare + LEVEL_BASE::KNOB_BASE +
+
+
+
+ Count + INSTLIB::ICOUNT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/functions_64.html b/src/tracer/pintool/pin-3.13/doc/html/search/functions_64.html new file mode 100755 index 0000000..1312cc3 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/functions_64.html @@ -0,0 +1,63 @@ + + + + + + + +
+
Loading...
+ +
+
+ DestructThreadTls + LEVEL_PINCLIENT::CLIENT_TLS +
+
+
+
+ DisableKnob + LEVEL_BASE::KNOB_BASE +
+
+
+
+ DisableKnobFamily + LEVEL_BASE::KNOB_BASE +
+
+
+
+ DisassembleRegion + LEVEL_PINCLIENT +
+
+
+
+ DsUpdatesDueRtnfuncCreation + LEVEL_PINCLIENT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/functions_65.html b/src/tracer/pintool/pin-3.13/doc/html/search/functions_65.html new file mode 100755 index 0000000..be024d5 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/functions_65.html @@ -0,0 +1,89 @@ + + + + + + + +
+
Loading...
+
+
+ EdgArrayBase + LEVEL_CORE +
+
+
+
+ EdgStripeBase + LEVEL_CORE +
+
+ +
+
+ EnableKnob + LEVEL_BASE::KNOB_BASE +
+
+
+
+ EnableKnobFamily + LEVEL_BASE::KNOB_BASE +
+
+
+
+ Evaluate + LEVEL_CORE::MEM_ADDR_EXP +
+
+
+
+ EvaluateOn + LEVEL_CORE::MEM_ADDR_EXP +
+
+
+
+ EXTENSION_StringShort + LEVEL_CORE +
+
+
+
+ ExtractArgumentsApp + LEVEL_BASE::PARSER +
+
+
+
+ ExtractArgumentsPin + LEVEL_BASE::PARSER +
+
+
+
+ ExtractArgumentsTool + LEVEL_BASE::PARSER +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/functions_66.html b/src/tracer/pintool/pin-3.13/doc/html/search/functions_66.html new file mode 100755 index 0000000..4c9ce75 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/functions_66.html @@ -0,0 +1,80 @@ + + + + + + + +
+
Loading...
+
+
+ FindArgument + LEVEL_BASE::COMMAND_LINE_ARGUMENTS +
+
+
+
+ FindEnabledKnob + LEVEL_BASE::KNOB_BASE +
+
+
+
+ FindFamily + LEVEL_BASE::KNOB_BASE +
+
+
+
+ FindKnob + LEVEL_BASE::KNOB_BASE +
+
+
+
+ FindRelInExtChain + LEVEL_CORE +
+
+
+
+ FixSymbolsFromDebugInfo + LEVEL_PINCLIENT +
+
+
+
+ FLT64FromString + LEVEL_BASE +
+
+
+
+ fltstr + LEVEL_BASE +
+
+
+
+ FOLLOW_CHILD + INSTLIB::FOLLOW_CHILD +
+
+
+
+ FreeKey + LEVEL_PINCLIENT::CLIENT_TLS +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/functions_67.html b/src/tracer/pintool/pin-3.13/doc/html/search/functions_67.html new file mode 100755 index 0000000..c262a59 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/functions_67.html @@ -0,0 +1,65 @@ + + + + + + + +
+
Loading...
+
+
+ GetData + LEVEL_PINCLIENT::CLIENT_TLS +
+
+
+
+ getElementName + LEVEL_BASE::SimpleXMLParser +
+
+
+
+ getElementsStackCount + LEVEL_BASE::SimpleXMLParser +
+
+
+
+ getErrorString + LEVEL_BASE::SimpleXMLParser +
+
+
+
+ getInnermostElementText + LEVEL_BASE::SimpleXMLParser +
+
+ +
+
+ GetToolNameArgs + LEVEL_BASE::PARSER +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/functions_68.html b/src/tracer/pintool/pin-3.13/doc/html/search/functions_68.html new file mode 100755 index 0000000..c15ff18 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/functions_68.html @@ -0,0 +1,41 @@ + + + + + + + +
+
Loading...
+
+
+ handleIfuncSymbol + LEVEL_PINCLIENT +
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/functions_69.html b/src/tracer/pintool/pin-3.13/doc/html/search/functions_69.html new file mode 100755 index 0000000..3c8e475 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/functions_69.html @@ -0,0 +1,1223 @@ + + + + + + + +
+
Loading...
+
+
+ IARGLIST_AddArguments + LEVEL_PINCLIENT +
+
+
+
+ IARGLIST_Alloc + LEVEL_PINCLIENT +
+
+
+
+ IARGLIST_Free + LEVEL_PINCLIENT +
+
+
+
+ IMG_AddInstrumentFunction + LEVEL_PINCLIENT +
+
+
+
+ IMG_AddUnloadFunction + LEVEL_PINCLIENT +
+
+
+
+ IMG_Close + LEVEL_PINCLIENT +
+
+
+
+ IMG_Entry + LEVEL_PINCLIENT +
+
+
+
+ IMG_EntryAddress + LEVEL_PINCLIENT +
+
+
+
+ IMG_FindByAddress + LEVEL_PINCLIENT +
+
+
+
+ IMG_FindImgById + LEVEL_PINCLIENT +
+
+
+
+ IMG_Gp + LEVEL_PINCLIENT +
+
+
+
+ IMG_hasLinesData + LEVEL_PINCLIENT +
+
+
+
+ IMG_HasProperty + LEVEL_PINCLIENT +
+
+
+
+ IMG_HighAddress + LEVEL_PINCLIENT +
+
+
+
+ IMG_Id + LEVEL_PINCLIENT +
+
+
+
+ IMG_Invalid + LEVEL_PINCLIENT +
+
+
+
+ IMG_IsInterpreter + LEVEL_PINCLIENT +
+
+
+
+ IMG_IsMainExecutable + LEVEL_PINCLIENT +
+
+
+
+ IMG_IsStaticExecutable + LEVEL_PINCLIENT +
+
+
+
+ IMG_IsVDSO + LEVEL_PINCLIENT +
+
+
+
+ IMG_LoadOffset + LEVEL_PINCLIENT +
+
+
+
+ IMG_LowAddress + LEVEL_PINCLIENT +
+
+
+
+ IMG_Name + LEVEL_PINCLIENT +
+
+
+
+ IMG_Next + LEVEL_PINCLIENT +
+
+
+
+ IMG_NumRegions + LEVEL_PINCLIENT +
+
+
+
+ IMG_Open + LEVEL_PINCLIENT +
+
+
+
+ IMG_Prev + LEVEL_PINCLIENT +
+
+
+
+ IMG_RegionHighAddress + LEVEL_PINCLIENT +
+
+
+
+ IMG_RegionLowAddress + LEVEL_PINCLIENT +
+
+
+
+ IMG_RegsymHead + LEVEL_PINCLIENT +
+
+
+
+ IMG_SecHead + LEVEL_PINCLIENT +
+
+
+
+ IMG_SecTail + LEVEL_PINCLIENT +
+
+
+
+ IMG_SizeMapped + LEVEL_PINCLIENT +
+
+
+
+ IMG_StartAddress + LEVEL_PINCLIENT +
+
+
+
+ IMG_Type + LEVEL_PINCLIENT +
+
+
+
+ IMG_Valid + LEVEL_PINCLIENT +
+
+
+
+ ImgLoad + LEVEL_PINCLIENT +
+
+
+
+ Init + LEVEL_CORE::MEM_ADDR_EXP +
+
+
+
+ InitCurrentTls + LEVEL_PINCLIENT::CLIENT_TLS +
+
+
+
+ INS_AddInstrumentFunction + LEVEL_PINCLIENT +
+
+
+
+ INS_Address + LEVEL_PINCLIENT +
+
+
+
+ INS_AddressSizePrefix + LEVEL_CORE +
+
+
+
+ INS_BranchNotTakenPrefix + LEVEL_CORE +
+
+
+
+ INS_BranchTakenPrefix + LEVEL_CORE +
+
+
+
+ INS_Category + LEVEL_CORE +
+
+
+
+ INS_ChangeReg + LEVEL_CORE +
+
+
+
+ INS_Delete + LEVEL_PINCLIENT +
+
+
+
+ INS_DirectBranchOrCallTargetAddress + LEVEL_PINCLIENT +
+
+
+
+ INS_DirectControlFlowTargetAddress + LEVEL_PINCLIENT +
+
+
+
+ INS_Disassemble + LEVEL_CORE +
+
+
+
+ INS_EffectiveAddressWidth + LEVEL_CORE +
+
+
+
+ INS_Extension + LEVEL_CORE +
+
+
+
+ INS_FullRegRContain + LEVEL_CORE +
+
+
+
+ INS_FullRegWContain + LEVEL_CORE +
+
+
+
+ INS_GetFarPointer + LEVEL_CORE +
+
+
+
+ INS_GetPredicate + LEVEL_CORE +
+
+
+ +
+
+
+ INS_HasFallThrough + LEVEL_CORE +
+
+
+
+ INS_hasKnownMemorySize + LEVEL_CORE +
+
+
+
+ INS_HasMemoryRead2 + LEVEL_CORE +
+
+
+
+ INS_HasMemoryVector + LEVEL_CORE +
+
+
+
+ INS_HasRealRep + LEVEL_CORE +
+
+
+
+ INS_InitMovsxd + LEVEL_CORE +
+
+
+
+ INS_InsertCall + LEVEL_PINCLIENT +
+
+
+
+ INS_InsertDirectJump + LEVEL_PINCLIENT +
+
+
+
+ INS_InsertFillBuffer + LEVEL_PINCLIENT +
+
+
+
+ INS_InsertFillBufferPredicated + LEVEL_PINCLIENT +
+
+
+
+ INS_InsertFillBufferThen + LEVEL_PINCLIENT +
+
+
+
+ INS_InsertIfCall + LEVEL_PINCLIENT +
+
+
+
+ INS_InsertIfPredicatedCall + LEVEL_PINCLIENT +
+
+
+
+ INS_InsertIndirectJump + LEVEL_PINCLIENT +
+
+
+
+ INS_InsertPredicatedCall + LEVEL_PINCLIENT +
+
+
+
+ INS_InsertThenCall + LEVEL_PINCLIENT +
+
+
+
+ INS_InsertThenPredicatedCall + LEVEL_PINCLIENT +
+
+
+
+ INS_InsertVersionCase + LEVEL_PINCLIENT +
+
+
+
+ INS_Invalid + LEVEL_PINCLIENT +
+
+
+
+ INS_IsAddedForFunctionReplacement + LEVEL_PINCLIENT +
+
+
+
+ INS_IsAtomicUpdate + LEVEL_CORE +
+
+
+
+ INS_IsBranch + LEVEL_CORE +
+
+
+
+ INS_IsBranchOrCall + LEVEL_CORE +
+
+
+
+ INS_IsCacheLineFlush + LEVEL_CORE +
+
+
+
+ INS_IsCall + LEVEL_CORE +
+
+
+
+ INS_IsControlFlow + LEVEL_CORE +
+
+
+
+ INS_IsDirectBranch + LEVEL_CORE +
+
+
+
+ INS_IsDirectBranchOrCall + LEVEL_CORE +
+
+
+
+ INS_IsDirectCall + LEVEL_CORE +
+
+
+
+ INS_IsDirectControlFlow + LEVEL_CORE +
+
+
+
+ INS_IsDirectFarJump + LEVEL_CORE +
+
+
+
+ INS_IsFarCall + LEVEL_CORE +
+
+
+
+ INS_IsFarJump + LEVEL_CORE +
+
+
+
+ INS_IsFarRet + LEVEL_CORE +
+
+
+
+ INS_IsHalt + LEVEL_CORE +
+
+
+
+ INS_IsIndirectBranchOrCall + LEVEL_CORE +
+
+
+
+ INS_IsIndirectControlFlow + LEVEL_CORE +
+
+
+
+ INS_IsIpRelRead + LEVEL_CORE +
+
+
+
+ INS_IsIpRelWrite + LEVEL_CORE +
+
+
+
+ INS_IsIRet + LEVEL_CORE +
+
+
+
+ INS_IsLea + LEVEL_CORE +
+
+
+
+ INS_IsMaskMov + LEVEL_CORE +
+
+
+
+ INS_IsMemoryRead + LEVEL_CORE +
+
+
+
+ INS_IsMemoryWrite + LEVEL_CORE +
+
+
+
+ INS_IsMov + LEVEL_CORE +
+
+
+
+ INS_IsMovFullRegRegSame + LEVEL_CORE +
+
+
+
+ INS_IsNop + LEVEL_CORE +
+
+
+
+ INS_IsOriginal + LEVEL_CORE +
+
+
+
+ INS_IsPcMaterialization + LEVEL_CORE +
+
+
+
+ INS_IsPredicated + LEVEL_CORE +
+
+
+
+ INS_IsPrefetch + LEVEL_CORE +
+
+
+
+ INS_IsProcedureCall + LEVEL_CORE +
+
+
+
+ INS_IsRDTSC + LEVEL_CORE +
+
+
+
+ INS_IsRet + LEVEL_CORE +
+
+
+
+ INS_IsStackRead + LEVEL_CORE +
+
+
+
+ INS_IsStackWrite + LEVEL_CORE +
+
+
+
+ INS_IsStandardMemop + LEVEL_CORE +
+
+
+
+ INS_IsStringop + LEVEL_CORE +
+
+
+
+ INS_IsSub + LEVEL_CORE +
+
+
+
+ INS_IsSyscall + LEVEL_CORE +
+
+
+
+ INS_IsSysenter + LEVEL_CORE +
+
+
+
+ INS_IsSysret + LEVEL_CORE +
+
+
+
+ INS_IsValidForIpointAfter + LEVEL_CORE +
+
+
+ +
+
+
+ INS_IsVgather + LEVEL_CORE +
+
+
+
+ INS_IsVscatter + LEVEL_CORE +
+
+
+
+ INS_IsXbegin + LEVEL_CORE +
+
+
+
+ INS_IsXchg + LEVEL_CORE +
+
+
+
+ INS_IsXend + LEVEL_CORE +
+
+
+
+ INS_LockPrefix + LEVEL_CORE +
+
+
+
+ INS_MaxNumRRegs + LEVEL_CORE +
+
+
+
+ INS_MaxNumWRegs + LEVEL_CORE +
+
+
+
+ INS_MemoryBaseReg + LEVEL_CORE +
+
+
+
+ INS_MemoryDisplacement + LEVEL_CORE +
+
+
+
+ INS_MemoryIndexReg + LEVEL_CORE +
+
+
+
+ INS_MemoryOperandCount + LEVEL_CORE +
+
+ +
+
+ INS_MemoryOperandIsRead + LEVEL_CORE +
+
+
+
+ INS_MemoryOperandIsWritten + LEVEL_CORE +
+
+
+
+ INS_MemoryOperandSize + LEVEL_CORE +
+
+
+
+ INS_MemoryReadSize + LEVEL_CORE +
+
+
+
+ INS_MemoryScale + LEVEL_CORE +
+
+
+
+ INS_MemoryWriteSize + LEVEL_CORE +
+
+
+
+ INS_Mnemonic + LEVEL_CORE +
+
+
+
+ INS_Next + LEVEL_PINCLIENT +
+
+
+
+ INS_NextAddress + LEVEL_PINCLIENT +
+
+
+
+ INS_OperandCount + LEVEL_CORE +
+
+
+
+ INS_OperandImmediate + LEVEL_CORE +
+
+
+ +
+
+ +
+
+
+ INS_OperandIsFixedMemop + LEVEL_CORE +
+
+
+
+ INS_OperandIsImmediate + LEVEL_CORE +
+
+
+
+ INS_OperandIsImplicit + LEVEL_CORE +
+
+
+
+ INS_OperandIsMemory + LEVEL_CORE +
+
+
+
+ INS_OperandIsReg + LEVEL_CORE +
+
+
+
+ INS_OperandIsSegmentReg + LEVEL_CORE +
+
+
+
+ INS_OperandMemoryBaseReg + LEVEL_CORE +
+
+
+ +
+
+
+ INS_OperandMemoryIndexReg + LEVEL_CORE +
+
+
+
+ INS_OperandMemoryScale + LEVEL_CORE +
+
+
+
+ INS_OperandMemorySegmentReg + LEVEL_CORE +
+
+
+
+ INS_OperandRead + LEVEL_CORE +
+
+
+
+ INS_OperandReadAndWritten + LEVEL_CORE +
+
+
+
+ INS_OperandReadOnly + LEVEL_CORE +
+
+
+
+ INS_OperandReg + LEVEL_CORE +
+
+
+
+ INS_OperandSizePrefix + LEVEL_CORE +
+
+
+
+ INS_OperandWidth + LEVEL_CORE +
+
+
+
+ INS_OperandWritten + LEVEL_CORE +
+
+
+
+ INS_OperandWrittenOnly + LEVEL_CORE +
+
+
+
+ INS_Prev + LEVEL_PINCLIENT +
+
+
+
+ INS_RegIsImplicit + LEVEL_CORE +
+
+
+
+ INS_RegR + LEVEL_CORE +
+
+
+
+ INS_RegRContain + LEVEL_CORE +
+
+
+
+ INS_RegW + LEVEL_CORE +
+
+
+
+ INS_RegWContain + LEVEL_CORE +
+
+
+
+ INS_RepCountRegister + LEVEL_CORE +
+
+
+
+ INS_RepnePrefix + LEVEL_CORE +
+
+
+
+ INS_RepPrefix + LEVEL_CORE +
+
+
+
+ INS_RewriteMemoryOperand + LEVEL_PINCLIENT +
+
+
+
+ INS_Rtn + LEVEL_PINCLIENT +
+
+
+
+ INS_SegmentPrefix + LEVEL_CORE +
+
+
+
+ INS_SegmentRegPrefix + LEVEL_CORE +
+
+
+
+ INS_SegPrefixIsMemoryRead + LEVEL_CORE +
+
+
+
+ INS_SegPrefixIsMemoryWrite + LEVEL_CORE +
+
+
+
+ INS_Size + LEVEL_PINCLIENT +
+
+
+
+ INS_Stutters + LEVEL_CORE +
+
+
+
+ INS_SyscallStd + LEVEL_CORE +
+
+
+
+ INS_Valid + LEVEL_PINCLIENT +
+
+
+
+ INS_XedDec + LEVEL_CORE +
+
+
+
+ INS_XedExactMapToPinReg + LEVEL_CORE +
+
+
+
+ INS_XedRegClass + LEVEL_CORE +
+
+ +
+
+ InsertAsOneToken + LEVEL_BASE::COMMAND_LINE_ARGUMENTS +
+
+
+
+ InsertBreakpointAfter + DEBUGGER_SHELL::ICUSTOM_INSTRUMENTOR +
+
+
+
+ InsertBreakpointBefore + DEBUGGER_SHELL::ICUSTOM_INSTRUMENTOR +
+
+
+
+ Instance + LEVEL_PINCLIENT::CLIENT_TLS +
+
+
+
+ Int32FromString + LEVEL_BASE +
+
+
+
+ Int64FromString + LEVEL_BASE +
+
+
+
+ IsCurrentTlsAllocated + LEVEL_PINCLIENT::CLIENT_TLS +
+
+
+
+ IsKeyAllocated + LEVEL_PINCLIENT::CLIENT_TLS +
+
+
+
+ IsNull + LEVEL_CORE::MEM_ADDR_EXP +
+
+
+
+ IsThreadInFiniCallback + LEVEL_PINCLIENT +
+
+
+
+ IsValidTlsKey + LEVEL_PINCLIENT::CLIENT_TLS +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/functions_6b.html b/src/tracer/pintool/pin-3.13/doc/html/search/functions_6b.html new file mode 100755 index 0000000..05878f3 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/functions_6b.html @@ -0,0 +1,44 @@ + + + + + + + +
+
Loading...
+
+
+ KNOB_BASE + LEVEL_BASE::KNOB_BASE +
+
+
+
+ KnobCheckLocks + LEVEL_PINCLIENT +
+
+
+
+ KnobJitApi + LEVEL_PINCLIENT +
+
+
+
+ KnobProfile + LEVEL_PINCLIENT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/functions_6c.html b/src/tracer/pintool/pin-3.13/doc/html/search/functions_6c.html new file mode 100755 index 0000000..1988202 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/functions_6c.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ ljstr + LEVEL_BASE +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/functions_6d.html b/src/tracer/pintool/pin-3.13/doc/html/search/functions_6d.html new file mode 100755 index 0000000..ddc9f9c --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/functions_6d.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ Mode + INSTLIB::ICOUNT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/functions_6e.html b/src/tracer/pintool/pin-3.13/doc/html/search/functions_6e.html new file mode 100755 index 0000000..13572ef --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/functions_6e.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ NumberOfKnobs + LEVEL_BASE::KNOB_BASE +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/functions_6f.html b/src/tracer/pintool/pin-3.13/doc/html/search/functions_6f.html new file mode 100755 index 0000000..33f72a3 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/functions_6f.html @@ -0,0 +1,32 @@ + + + + + + + +
+
Loading...
+
+
+ OPCODE_StringShort + LEVEL_CORE +
+
+
+
+ operator= + LEVEL_BASE::COMMAND_LINE_ARGUMENTS +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/functions_70.html b/src/tracer/pintool/pin-3.13/doc/html/search/functions_70.html new file mode 100755 index 0000000..38c4ab5 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/functions_70.html @@ -0,0 +1,1004 @@ + + + + + + + +
+
Loading...
+
+
+ parse + LEVEL_BASE::SimpleXMLParser +
+
+
+
+ PIN_AddApplicationStartFunction + LEVEL_PINCLIENT +
+
+
+
+ PIN_AddBreakpointHandler + LEVEL_PINCLIENT +
+
+
+
+ PIN_AddContextChangeFunction + LEVEL_PINCLIENT +
+
+
+
+ PIN_AddDebugInterpreter + LEVEL_PINCLIENT +
+
+
+
+ PIN_AddDetachFunction + LEVEL_PINCLIENT +
+
+
+
+ PIN_AddDetachFunctionProbed + LEVEL_PINCLIENT +
+
+
+
+ PIN_AddFetchFunction + LEVEL_PINCLIENT +
+
+
+
+ PIN_AddFiniFunction + LEVEL_PINCLIENT +
+
+
+
+ PIN_AddForkFunction + LEVEL_PINCLIENT +
+
+
+
+ PIN_AddForkFunctionProbed + LEVEL_PINCLIENT +
+
+
+
+ PIN_AddInternalExceptionHandler + LEVEL_PINCLIENT +
+
+
+
+ PIN_AddMemoryAddressTransFunction + LEVEL_PINCLIENT +
+
+
+
+ PIN_AddOutOfMemoryFunction + LEVEL_PINCLIENT +
+
+
+
+ PIN_AddPrepareForFiniFunction + LEVEL_PINCLIENT +
+
+
+
+ PIN_AddProbesInsertedFunction + LEVEL_PINCLIENT +
+
+
+
+ PIN_AddSyscallEntryFunction + LEVEL_PINCLIENT +
+
+
+
+ PIN_AddSyscallExitFunction + LEVEL_PINCLIENT +
+
+
+
+ PIN_AddThreadAttachFunction + LEVEL_PINCLIENT +
+
+
+
+ PIN_AddThreadAttachProbedFunction + LEVEL_PINCLIENT +
+
+
+
+ PIN_AddThreadDetachFunction + LEVEL_PINCLIENT +
+
+
+
+ PIN_AddThreadDetachProbedFunction + LEVEL_PINCLIENT +
+
+
+
+ PIN_AddThreadFiniFunction + LEVEL_PINCLIENT +
+
+
+
+ PIN_AddThreadStartFunction + LEVEL_PINCLIENT +
+
+
+
+ PIN_AllocateBuffer + LEVEL_PINCLIENT +
+
+
+
+ PIN_ApplicationBreakpoint + LEVEL_PINCLIENT +
+
+
+
+ PIN_Attach + LEVEL_PINCLIENT +
+
+
+
+ PIN_AttachProbed + LEVEL_PINCLIENT +
+
+
+
+ PIN_Backtrace + LEVEL_PINCLIENT +
+
+
+
+ PIN_CallApplicationFunction + LEVEL_PINCLIENT +
+
+
+
+ PIN_CALLBACK_INVALID + LEVEL_PINCLIENT +
+
+ +
+
+ PIN_CheckReadAccess + LEVEL_PINCLIENT +
+
+
+
+ PIN_CheckWriteAccess + LEVEL_PINCLIENT +
+
+
+
+ PIN_ClaimToolRegister + LEVEL_PINCLIENT +
+
+
+
+ PIN_ContextContainsState + LEVEL_PINCLIENT +
+
+ +
+
+ PIN_CreateDefaultConfigurationInfo + LEVEL_PINCLIENT +
+
+
+
+ PIN_CreateThreadDataKey + LEVEL_PINCLIENT +
+
+
+
+ PIN_DeallocateBuffer + LEVEL_PINCLIENT +
+
+
+
+ PIN_DefineTraceBuffer + LEVEL_PINCLIENT +
+
+
+
+ PIN_DeleteThreadDataKey + LEVEL_PINCLIENT +
+
+
+
+ PIN_Detach + LEVEL_PINCLIENT +
+
+
+
+ PIN_DetachProbed + LEVEL_PINCLIENT +
+
+
+
+ PIN_ExceptionToString + LEVEL_BASE +
+
+
+
+ PIN_ExecuteAt + LEVEL_PINCLIENT +
+
+
+
+ PIN_ExitApplication + LEVEL_PINCLIENT +
+
+
+
+ PIN_ExitProcess + LEVEL_PINCLIENT +
+
+
+
+ PIN_ExitThread + LEVEL_PINCLIENT +
+
+
+
+ PIN_FetchCode + LEVEL_PINCLIENT +
+
+
+
+ PIN_GetAuxVectorValue + LEVEL_PINCLIENT +
+
+
+
+ PIN_GetBufferPointer + LEVEL_PINCLIENT +
+
+
+
+ PIN_GetContextFPState + LEVEL_PINCLIENT +
+
+
+
+ PIN_GetContextReg + LEVEL_PINCLIENT +
+
+
+
+ PIN_GetContextRegval + LEVEL_PINCLIENT +
+
+
+
+ PIN_GetDebugConnectionInfo + LEVEL_PINCLIENT +
+
+
+
+ PIN_GetDebuggerType + LEVEL_PINCLIENT +
+
+
+
+ PIN_GetDebugStatus + LEVEL_PINCLIENT +
+
+
+
+ PIN_GetExceptionAddress + LEVEL_BASE +
+
+
+
+ PIN_GetExceptionClass + LEVEL_BASE +
+
+
+
+ PIN_GetExceptionCode + LEVEL_BASE +
+
+
+
+ PIN_GetFaultyAccessAddress + LEVEL_BASE +
+
+
+
+ PIN_GetFaultyAccessType + LEVEL_BASE +
+
+
+
+ PIN_GetFpErrorSet + LEVEL_BASE +
+
+
+
+ PIN_GetFullContextRegsSet + LEVEL_PINCLIENT +
+
+
+
+ PIN_GetInitialContextForUnwind + LEVEL_PINCLIENT +
+
+
+
+ PIN_GetInitialThreadCount + LEVEL_PINCLIENT +
+
+
+
+ PIN_GetLock + LEVEL_BASE +
+
+
+
+ PIN_GetMemoryAddressTransFunction + LEVEL_PINCLIENT +
+
+
+
+ PIN_GetParentTid + LEVEL_PINCLIENT +
+
+
+
+ PIN_GetPhysicalContextFPState + LEVEL_PINCLIENT +
+
+
+
+ PIN_GetPhysicalContextReg + LEVEL_PINCLIENT +
+
+
+
+ PIN_GetPid + LEVEL_PINCLIENT +
+
+
+
+ PIN_GetSourceLocation + LEVEL_PINCLIENT +
+
+ +
+
+ PIN_GetSyscallArgument + LEVEL_PINCLIENT +
+
+
+
+ PIN_GetSyscallErrno + LEVEL_PINCLIENT +
+
+
+
+ PIN_GetSyscallNumber + LEVEL_PINCLIENT +
+
+
+
+ PIN_GetSyscallReturn + LEVEL_PINCLIENT +
+
+ +
+
+ PIN_GetTid + LEVEL_PINCLIENT +
+
+
+ +
+
+
+ PIN_GetWindowsExceptionCode + LEVEL_BASE +
+
+
+
+ PIN_Init + LEVEL_PINCLIENT +
+
+
+
+ PIN_InitAccessFaultInfo + LEVEL_BASE +
+
+
+
+ PIN_InitExceptionInfo + LEVEL_BASE +
+
+
+
+ PIN_InitLock + LEVEL_BASE +
+
+
+
+ PIN_InitSymbols + LEVEL_PINCLIENT +
+
+
+
+ PIN_InitSymbolsAlt + LEVEL_PINCLIENT +
+
+
+
+ PIN_InitWindowsExceptionInfo + LEVEL_BASE +
+
+
+
+ PIN_InsertCallProbed + LEVEL_PINCLIENT +
+
+
+
+ PIN_InterceptSignal + LEVEL_PINCLIENT +
+
+
+
+ PIN_IsActionPending + LEVEL_PINCLIENT +
+
+
+
+ PIN_IsApplicationThread + LEVEL_PINCLIENT +
+
+
+
+ PIN_IsAttaching + LEVEL_PINCLIENT +
+
+
+
+ PIN_IsProbeMode + LEVEL_PINCLIENT +
+
+
+
+ PIN_IsSafeForProbedInsertion + LEVEL_PINCLIENT +
+
+
+
+ PIN_LockClient + LEVEL_PINCLIENT +
+
+
+
+ PIN_MutexFini + LEVEL_BASE +
+
+
+
+ PIN_MutexInit + LEVEL_BASE +
+
+
+
+ PIN_MutexLock + LEVEL_BASE +
+
+
+
+ PIN_MutexTryLock + LEVEL_BASE +
+
+
+
+ PIN_MutexUnlock + LEVEL_BASE +
+
+
+
+ PIN_RaiseException + LEVEL_PINCLIENT +
+
+
+
+ PIN_ReleaseLock + LEVEL_BASE +
+
+
+
+ PIN_RemoveBreakpointHandler + LEVEL_PINCLIENT +
+
+
+
+ PIN_RemoveDebugInterpreter + LEVEL_PINCLIENT +
+
+
+
+ PIN_RemoveFiniFunctions + LEVEL_PINCLIENT +
+
+
+
+ PIN_RemoveInstrumentation + LEVEL_PINCLIENT +
+
+
+
+ PIN_RemoveInstrumentationInRange + LEVEL_PINCLIENT +
+
+
+
+ PIN_ResetBreakpointAt + LEVEL_PINCLIENT +
+
+
+
+ PIN_RWMutexFini + LEVEL_BASE +
+
+
+
+ PIN_RWMutexInit + LEVEL_BASE +
+
+
+
+ PIN_RWMutexReadLock + LEVEL_BASE +
+
+
+
+ PIN_RWMutexTryReadLock + LEVEL_BASE +
+
+
+
+ PIN_RWMutexTryWriteLock + LEVEL_BASE +
+
+
+
+ PIN_RWMutexUnlock + LEVEL_BASE +
+
+
+
+ PIN_RWMutexWriteLock + LEVEL_BASE +
+
+
+
+ PIN_SafeCopy + LEVEL_PINCLIENT +
+
+
+
+ PIN_SafeCopyEx + LEVEL_PINCLIENT +
+
+
+
+ PIN_SaveContext + LEVEL_PINCLIENT +
+
+
+
+ PIN_SemaphoreClear + LEVEL_BASE +
+
+
+
+ PIN_SemaphoreFini + LEVEL_BASE +
+
+
+
+ PIN_SemaphoreInit + LEVEL_BASE +
+
+
+
+ PIN_SemaphoreIsSet + LEVEL_BASE +
+
+
+
+ PIN_SemaphoreSet + LEVEL_BASE +
+
+
+
+ PIN_SemaphoreTimedWait + LEVEL_BASE +
+
+
+
+ PIN_SemaphoreWait + LEVEL_BASE +
+
+
+
+ PIN_SetAllowedConcurrentCallbacks + LEVEL_PINCLIENT +
+
+
+
+ PIN_SetContextFPState + LEVEL_PINCLIENT +
+
+
+
+ PIN_SetContextReg + LEVEL_PINCLIENT +
+
+
+
+ PIN_SetContextRegval + LEVEL_PINCLIENT +
+
+
+
+ PIN_SetDebugMode + LEVEL_PINCLIENT +
+
+
+
+ PIN_SetExceptionAddress + LEVEL_BASE +
+
+
+
+ PIN_SetPhysicalContextFPState + LEVEL_PINCLIENT +
+
+
+
+ PIN_SetPhysicalContextReg + LEVEL_PINCLIENT +
+
+
+
+ PIN_SetSmcSupport + LEVEL_PINCLIENT +
+
+
+
+ PIN_SetSyntaxATT + LEVEL_CORE +
+
+
+
+ PIN_SetSyntaxIntel + LEVEL_CORE +
+
+
+
+ PIN_SetSyntaxXED + LEVEL_CORE +
+
+
+
+ PIN_SetSyscallArgument + LEVEL_PINCLIENT +
+
+
+
+ PIN_SetSyscallNumber + LEVEL_PINCLIENT +
+
+ +
+
+ PIN_Sleep + LEVEL_PINCLIENT +
+
+
+
+ PIN_SpawnInternalThread + LEVEL_PINCLIENT +
+
+
+
+ PIN_StartProgram + LEVEL_PINCLIENT +
+
+
+
+ PIN_StartProgramProbed + LEVEL_PINCLIENT +
+
+
+
+ PIN_SupportsProcessorState + LEVEL_PINCLIENT +
+
+
+
+ PIN_ThreadId + LEVEL_PINCLIENT +
+
+
+
+ PIN_ThreadUid + LEVEL_PINCLIENT +
+
+
+
+ PIN_ToolFullPath + LEVEL_PINCLIENT +
+
+
+
+ PIN_TryEnd + LEVEL_PINCLIENT +
+
+
+
+ PIN_TryStart + LEVEL_PINCLIENT +
+
+
+
+ PIN_UnblockSignal + LEVEL_PINCLIENT +
+
+
+
+ PIN_UndecorateSymbolName + LEVEL_PINCLIENT +
+
+
+
+ PIN_UnlockClient + LEVEL_PINCLIENT +
+
+
+
+ PIN_Version + LEVEL_PINCLIENT +
+
+
+
+ PIN_VmFullPath + LEVEL_PINCLIENT +
+
+
+
+ PIN_WaitForDebuggerToConnect + LEVEL_PINCLIENT +
+
+
+
+ PIN_WaitForThreadTermination + LEVEL_PINCLIENT +
+
+
+
+ PIN_WriteErrorMessage + LEVEL_PINCLIENT +
+
+
+
+ PIN_Yield + LEVEL_PINCLIENT +
+
+
+
+ ptrstr + LEVEL_BASE +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/functions_72.html b/src/tracer/pintool/pin-3.13/doc/html/search/functions_72.html new file mode 100755 index 0000000..eb239bf --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/functions_72.html @@ -0,0 +1,908 @@ + + + + + + + +
+
Loading...
+
+
+ ReadLine + LEVEL_BASE +
+
+
+
+ Reformat + LEVEL_BASE +
+
+
+
+ REG_AppFlags + LEVEL_BASE +
+
+
+
+ REG_corresponding_ymm_reg + LEVEL_BASE +
+
+
+
+ REG_corresponding_zmm_reg + LEVEL_BASE +
+
+
+
+ REG_FullRegName + LEVEL_BASE +
+
+
+
+ REG_get_df_flag_reg_of_type + LEVEL_BASE +
+
+
+ +
+
+ +
+
+
+ REG_Half16 + LEVEL_BASE +
+
+
+
+ REG_IdentityCopy + LEVEL_BASE +
+
+
+
+ REG_INVALID + LEVEL_BASE +
+
+
+
+ REG_is_Any8 + LEVEL_BASE +
+
+
+
+ REG_is_any_app_flags + LEVEL_BASE +
+
+
+
+ REG_is_any_flags_type + LEVEL_BASE +
+
+
+
+ REG_is_any_mask + LEVEL_BASE +
+
+
+
+ REG_is_any_mxcsr + LEVEL_BASE +
+
+
+
+ REG_is_any_pin_flags + LEVEL_BASE +
+
+
+
+ REG_is_any_vector_reg + LEVEL_BASE +
+
+
+
+ REG_is_app_df_flag_type + LEVEL_BASE +
+
+
+
+ REG_is_app_status_flags_type + LEVEL_BASE +
+
+
+
+ REG_is_application + LEVEL_BASE +
+
+
+
+ REG_is_avx512_hi16_xmm + LEVEL_BASE +
+
+
+
+ REG_is_avx512_hi16_ymm + LEVEL_BASE +
+
+
+
+ REG_is_br + LEVEL_BASE +
+
+
+
+ REG_is_buffer + LEVEL_BASE +
+
+
+
+ REG_is_df_flag + LEVEL_BASE +
+
+
+
+ REG_is_df_flag_type + LEVEL_BASE +
+
+
+
+ REG_is_flags + LEVEL_BASE +
+
+
+
+ REG_is_flags_any_size_type + LEVEL_BASE +
+
+
+
+ REG_is_flags_type + LEVEL_BASE +
+
+
+
+ REG_is_fr + LEVEL_BASE +
+
+
+
+ REG_is_fr_for_get_context + LEVEL_BASE +
+
+
+
+ REG_is_gr + LEVEL_BASE +
+
+
+
+ REG_is_gr16 + LEVEL_BASE +
+
+
+
+ REG_is_gr32 + LEVEL_BASE +
+
+
+
+ REG_is_gr64 + LEVEL_BASE +
+
+
+
+ REG_is_gr8 + LEVEL_BASE +
+
+
+
+ REG_is_gr_type + LEVEL_BASE +
+
+
+
+ REG_is_gs_or_fs + LEVEL_BASE +
+
+
+
+ REG_is_Half16 + LEVEL_BASE +
+
+
+
+ REG_is_Half32 + LEVEL_BASE +
+
+
+
+ REG_is_in_X87 + LEVEL_BASE +
+
+
+
+ REG_is_inst_scratch + LEVEL_BASE +
+
+
+
+ REG_is_k_mask + LEVEL_BASE +
+
+
+
+ REG_is_Lower8 + LEVEL_BASE +
+
+
+
+ REG_is_machine + LEVEL_BASE +
+
+
+
+ REG_is_mm + LEVEL_BASE +
+
+
+
+ REG_is_mxcsr + LEVEL_BASE +
+
+
+
+ REG_is_partialreg + LEVEL_BASE +
+
+
+
+ REG_is_pin + LEVEL_BASE +
+
+
+
+ REG_is_pin64 + LEVEL_BASE +
+
+
+
+ REG_is_pin_df_flag + LEVEL_BASE +
+
+
+
+ REG_is_pin_flags + LEVEL_BASE +
+
+
+
+ REG_is_pin_gpr + LEVEL_BASE +
+
+
+
+ REG_is_pin_gr + LEVEL_BASE +
+
+
+
+ REG_is_pin_gr32 + LEVEL_BASE +
+
+
+
+ REG_is_pin_gr_half32 + LEVEL_BASE +
+
+
+
+ REG_is_pin_inst + LEVEL_BASE +
+
+
+
+ REG_is_pin_k_mask + LEVEL_BASE +
+
+
+
+ REG_is_pin_status_flags + LEVEL_BASE +
+
+
+
+ REG_is_pin_tmp + LEVEL_BASE +
+
+
+
+ REG_is_pin_xmm + LEVEL_BASE +
+
+
+
+ REG_is_pin_xmm_ymm_zmm + LEVEL_BASE +
+
+
+
+ REG_is_pin_ymm + LEVEL_BASE +
+
+
+
+ REG_is_pin_zmm + LEVEL_BASE +
+
+
+
+ REG_is_pseudo + LEVEL_BASE +
+
+
+
+ REG_is_representative_reg + LEVEL_BASE +
+
+
+
+ REG_is_seg + LEVEL_BASE +
+
+
+
+ REG_is_seg_base + LEVEL_BASE +
+
+
+
+ REG_is_st + LEVEL_BASE +
+
+
+
+ REG_is_stackptr_type + LEVEL_BASE +
+
+
+
+ REG_is_status_flags + LEVEL_BASE +
+
+
+
+ REG_is_status_flags_type + LEVEL_BASE +
+
+
+
+ REG_is_subclass_none + LEVEL_BASE +
+
+
+
+ REG_is_Upper8 + LEVEL_BASE +
+
+
+
+ REG_is_xmm + LEVEL_BASE +
+
+
+
+ REG_is_xmm_ymm_zmm + LEVEL_BASE +
+
+
+
+ REG_is_ymm + LEVEL_BASE +
+
+
+
+ REG_is_zmm + LEVEL_BASE +
+
+
+
+ REG_LastSupportedXmm + LEVEL_BASE +
+
+
+
+ REG_LastSupportedYmm + LEVEL_BASE +
+
+
+
+ REG_LastSupportedZmm + LEVEL_BASE +
+
+
+
+ REG_regDefTable + LEVEL_BASE +
+
+
+
+ REG_regSubClassBitMapTable + LEVEL_BASE +
+
+
+
+ REG_Size + LEVEL_BASE +
+
+
+
+ REG_SpillPtr + LEVEL_BASE +
+
+
+
+ REG_StringShort + LEVEL_BASE +
+
+
+
+ REG_valid + LEVEL_BASE +
+
+
+
+ REG_valid_for_iarg_reg_value + LEVEL_BASE +
+
+
+
+ REG_Width + LEVEL_BASE +
+
+
+
+ REGSET_AddAll + LEVEL_CORE +
+
+
+
+ REGSET_Clear + LEVEL_CORE +
+
+
+
+ REGSET_Contains + LEVEL_CORE +
+
+
+
+ REGSET_Insert + LEVEL_CORE +
+
+
+
+ REGSET_PopCount + LEVEL_CORE +
+
+
+
+ REGSET_PopCountIsZero + LEVEL_CORE +
+
+
+
+ REGSET_PopNext + LEVEL_CORE +
+
+
+
+ REGSET_Remove + LEVEL_CORE +
+
+
+
+ REGSET_StringList + LEVEL_CORE +
+
+
+
+ REGSET_StringShort + LEVEL_CORE +
+
+
+
+ REL_allocated_set + LEVEL_CORE +
+
+
+
+ RELTYPE_StringShort + LEVEL_CORE +
+
+
+
+ RemoveArguments + LEVEL_BASE::COMMAND_LINE_ARGUMENTS +
+
+
+
+ RTN_AddInstrumentFunction + LEVEL_PINCLIENT +
+
+
+
+ RTN_Address + LEVEL_PINCLIENT +
+
+
+
+ RTN_Close + LEVEL_PINCLIENT +
+
+
+
+ RTN_CodeRangesProbed + LEVEL_PINCLIENT +
+
+
+
+ RTN_CreateAt + LEVEL_PINCLIENT +
+
+
+
+ RTN_Destroy + LEVEL_PINCLIENT +
+
+
+
+ RTN_DynamicMethodId + LEVEL_PINCLIENT +
+
+
+
+ RTN_FindByAddress + LEVEL_PINCLIENT +
+
+
+
+ RTN_FindByName + LEVEL_PINCLIENT +
+
+
+
+ RTN_FindNameByAddress + LEVEL_PINCLIENT +
+
+
+
+ RTN_Funptr + LEVEL_PINCLIENT +
+
+
+
+ RTN_Id + LEVEL_PINCLIENT +
+
+
+
+ RTN_IFuncImplementation + LEVEL_PINCLIENT +
+
+
+
+ RTN_IFuncResolver + LEVEL_PINCLIENT +
+
+
+
+ RTN_InsertCall + LEVEL_PINCLIENT +
+
+
+
+ RTN_InsertCallProbed + LEVEL_PINCLIENT +
+
+
+
+ RTN_InsertCallProbedEx + LEVEL_PINCLIENT +
+
+
+
+ RTN_InsertFillBuffer + LEVEL_PINCLIENT +
+
+
+
+ RTN_InsHead + LEVEL_PINCLIENT +
+
+
+
+ RTN_InsHeadOnly + LEVEL_PINCLIENT +
+
+
+
+ RTN_InsTail + LEVEL_PINCLIENT +
+
+
+
+ RTN_Invalid + LEVEL_PINCLIENT +
+
+
+
+ RTN_IsArtificial + LEVEL_PINCLIENT +
+
+
+
+ RTN_IsDynamic + LEVEL_PINCLIENT +
+
+
+
+ RTN_IsSafeForProbedInsertion + LEVEL_PINCLIENT +
+
+
+
+ RTN_IsSafeForProbedInsertionEx + LEVEL_PINCLIENT +
+
+
+
+ RTN_IsSafeForProbedReplacement + LEVEL_PINCLIENT +
+
+
+
+ RTN_IsSafeForProbedReplacementEx + LEVEL_PINCLIENT +
+
+
+
+ RTN_Name + LEVEL_PINCLIENT +
+
+
+
+ RTN_Next + LEVEL_PINCLIENT +
+
+
+
+ RTN_NumIns + LEVEL_PINCLIENT +
+
+
+
+ RTN_Open + LEVEL_PINCLIENT +
+
+
+
+ RTN_Prev + LEVEL_PINCLIENT +
+
+
+
+ RTN_Range + LEVEL_PINCLIENT +
+
+
+
+ RTN_Replace + LEVEL_PINCLIENT +
+
+
+
+ RTN_ReplaceProbed + LEVEL_PINCLIENT +
+
+
+
+ RTN_ReplaceProbedEx + LEVEL_PINCLIENT +
+
+
+
+ RTN_ReplaceSignature + LEVEL_PINCLIENT +
+
+
+
+ RTN_ReplaceSignatureProbed + LEVEL_PINCLIENT +
+
+
+
+ RTN_ReplaceSignatureProbedEx + LEVEL_PINCLIENT +
+
+
+
+ RTN_Sec + LEVEL_PINCLIENT +
+
+
+
+ RTN_Size + LEVEL_PINCLIENT +
+
+
+
+ RTN_Sym + LEVEL_PINCLIENT +
+
+
+
+ RTN_Valid + LEVEL_PINCLIENT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/functions_73.html b/src/tracer/pintool/pin-3.13/doc/html/search/functions_73.html new file mode 100755 index 0000000..af3ece6 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/functions_73.html @@ -0,0 +1,336 @@ + + + + + + + +
+
Loading...
+
+
+ SEC_Address + LEVEL_PINCLIENT +
+
+
+
+ SEC_Data + LEVEL_PINCLIENT +
+
+
+
+ SEC_Img + LEVEL_PINCLIENT +
+
+
+
+ SEC_Invalid + LEVEL_PINCLIENT +
+
+
+
+ SEC_IsExecutable + LEVEL_PINCLIENT +
+
+
+
+ SEC_IsReadable + LEVEL_PINCLIENT +
+
+
+
+ SEC_IsWriteable + LEVEL_PINCLIENT +
+
+
+
+ SEC_Mapped + LEVEL_PINCLIENT +
+
+
+
+ SEC_Name + LEVEL_PINCLIENT +
+
+
+
+ SEC_Next + LEVEL_PINCLIENT +
+
+
+
+ SEC_Prev + LEVEL_PINCLIENT +
+
+
+
+ SEC_RtnHead + LEVEL_PINCLIENT +
+
+
+
+ SEC_RtnTail + LEVEL_PINCLIENT +
+
+
+
+ SEC_Size + LEVEL_PINCLIENT +
+
+
+
+ SEC_Type + LEVEL_PINCLIENT +
+
+
+
+ SEC_Valid + LEVEL_PINCLIENT +
+
+
+
+ SelectRtn + INSTLIB::FILTER_RTN +
+
+ +
+
+ SetAddress0x + LEVEL_BASE +
+
+
+
+ SetCount + INSTLIB::ICOUNT +
+
+
+
+ SetData + LEVEL_PINCLIENT::CLIENT_TLS +
+
+
+
+ SetHi16ZmmBit + LEVEL_CORE +
+
+
+
+ SetPinClientKnobs + LEVEL_BASE::PARSER +
+
+
+
+ SetPinKnobs + LEVEL_BASE::PARSER +
+
+
+
+ SetPrefix + INSTLIB::FOLLOW_CHILD +
+
+
+
+ SimpleXMLParser + LEVEL_BASE::SimpleXMLParser +
+
+
+
+ String + LEVEL_BASE::COMMAND_LINE_ARGUMENTS +
+
+
+
+ StringBignum + LEVEL_BASE +
+
+
+
+ StringBool + LEVEL_BASE +
+
+
+
+ StringDec + LEVEL_BASE +
+
+
+
+ StringDecSigned + LEVEL_BASE +
+
+
+
+ StringFlt + LEVEL_BASE +
+
+
+
+ StringFromAddrint + LEVEL_BASE +
+
+
+
+ StringFromUint64 + LEVEL_BASE +
+
+
+
+ StringHex + LEVEL_BASE +
+
+
+
+ StringHex32 + LEVEL_BASE +
+
+
+
+ StringKnobSummary + LEVEL_BASE::KNOB_BASE +
+
+
+
+ StringLongAll + LEVEL_BASE::KNOB_BASE +
+
+
+
+ StringSequence + LEVEL_BASE +
+
+
+
+ StringTri + LEVEL_BASE +
+
+
+
+ SYM_Address + LEVEL_PINCLIENT +
+
+
+
+ SYM_Dynamic + LEVEL_PINCLIENT +
+
+
+
+ SYM_GeneratedByPin + LEVEL_PINCLIENT +
+
+
+
+ SYM_IFuncImplementation + LEVEL_PINCLIENT +
+
+
+
+ SYM_IFuncResolver + LEVEL_PINCLIENT +
+
+
+
+ SYM_Index + LEVEL_PINCLIENT +
+
+
+
+ SYM_Invalid + LEVEL_PINCLIENT +
+
+
+
+ SYM_Name + LEVEL_PINCLIENT +
+
+
+
+ SYM_Next + LEVEL_PINCLIENT +
+
+
+
+ SYM_Prev + LEVEL_PINCLIENT +
+
+
+
+ SYM_Valid + LEVEL_PINCLIENT +
+
+
+
+ SYM_Value + LEVEL_PINCLIENT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/functions_74.html b/src/tracer/pintool/pin-3.13/doc/html/search/functions_74.html new file mode 100755 index 0000000..5da8ddc --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/functions_74.html @@ -0,0 +1,116 @@ + + + + + + + +
+
Loading...
+
+
+ Tokenize + LEVEL_BASE +
+
+
+
+ ToString + LEVEL_CORE::MEM_ADDR_EXP +
+
+
+
+ TRACE_AddInstrumentFunction + LEVEL_PINCLIENT +
+
+
+
+ TRACE_Address + LEVEL_PINCLIENT +
+
+
+
+ TRACE_AddSmcDetectedFunction + LEVEL_PINCLIENT +
+
+
+
+ TRACE_BblHead + LEVEL_PINCLIENT +
+
+
+
+ TRACE_BblTail + LEVEL_PINCLIENT +
+
+
+
+ TRACE_HasFallThrough + LEVEL_PINCLIENT +
+
+
+
+ TRACE_InsertCall + LEVEL_PINCLIENT +
+
+
+
+ TRACE_InsertIfCall + LEVEL_PINCLIENT +
+
+
+
+ TRACE_InsertThenCall + LEVEL_PINCLIENT +
+
+
+
+ TRACE_NumBbl + LEVEL_PINCLIENT +
+
+
+
+ TRACE_NumIns + LEVEL_PINCLIENT +
+
+
+
+ TRACE_Rtn + LEVEL_PINCLIENT +
+
+
+
+ TRACE_Size + LEVEL_PINCLIENT +
+
+
+
+ TRACE_Version + LEVEL_PINCLIENT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/functions_75.html b/src/tracer/pintool/pin-3.13/doc/html/search/functions_75.html new file mode 100755 index 0000000..1f19f9d --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/functions_75.html @@ -0,0 +1,32 @@ + + + + + + + +
+
Loading...
+
+
+ Uint32FromString + LEVEL_BASE +
+
+
+
+ Uint64FromString + LEVEL_BASE +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/functions_76.html b/src/tracer/pintool/pin-3.13/doc/html/search/functions_76.html new file mode 100755 index 0000000..e8a25e5 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/functions_76.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ visitNode + LEVEL_BASE::SimpleXMLParser +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/functions_7e.html b/src/tracer/pintool/pin-3.13/doc/html/search/functions_7e.html new file mode 100755 index 0000000..699c398 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/functions_7e.html @@ -0,0 +1,38 @@ + + + + + + + +
+
Loading...
+
+
+ ~COMMAND_LINE_ARGUMENTS + LEVEL_BASE::COMMAND_LINE_ARGUMENTS +
+
+
+
+ ~ICUSTOM_INSTRUMENTOR + DEBUGGER_SHELL::ICUSTOM_INSTRUMENTOR +
+
+
+
+ ~ISHELL + DEBUGGER_SHELL::ISHELL +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/mag_sel.png b/src/tracer/pintool/pin-3.13/doc/html/search/mag_sel.png new file mode 100755 index 0000000000000000000000000000000000000000..81f6040a2092402b4d98f9ffa8855d12a0d4ca17 GIT binary patch literal 563 zcmV-30?hr1P)zxx&tqG15pu7)IiiXFflOc2k;dXd>%13GZAy? zRz!q0=|E6a6vV)&ZBS~G9oe0kbqyw1*gvY`{Pop2oKq#FlzgXt@Xh-7fxh>}`Fxg> z$%N%{$!4=5nM{(;=c!aG1Ofr^Do{u%Ih{^&Fc@H2)+a-?TBXrw5DW&z%Nb6mQ!L9O zl}b@6mB?f=tX3;#vl)}ggh(Vpyh(IK z(Mb0D{l{U$FsRjP;!{($+bsaaVi8T#1c0V#qEIOCYa9@UVLV`f__E81L;?WEaRA;Y zUH;rZ;vb;mk7JX|$=i3O~&If0O@oZfLg8gfIjW=dcBsz;gI=!{-r4# z4%6v$&~;q^j7Fo67yJ(NJWuX+I~I!tj^nW3?}^9bq|<3^+vapS5sgM^x7!cs(+mMT z&y%j};&~po+YO)3hoUH4E*E;e9>?R6SS&`X)p`njycAVcg{rEb41T{~Hk(bl-7eSb zmFxA2uIqo#@R?lKm50ND`~6Nfn|-b1|L6O98vt3Tx@gKz#isxO002ovPDHLkV1kyW B_l^Jn literal 0 HcmV?d00001 diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/namespaces_6c.html b/src/tracer/pintool/pin-3.13/doc/html/search/namespaces_6c.html new file mode 100755 index 0000000..3590beb --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/namespaces_6c.html @@ -0,0 +1,35 @@ + + + + + + + +
+
Loading...
+
+ +
+
+ +
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/nomatches.html b/src/tracer/pintool/pin-3.13/doc/html/search/nomatches.html new file mode 100755 index 0000000..b1ded27 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
+
No Matches
+
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/search.css b/src/tracer/pintool/pin-3.13/doc/html/search/search.css new file mode 100755 index 0000000..50249e5 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/search.css @@ -0,0 +1,240 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#searchli { + float: right; + display: block; + width: 170px; + height: 36px; +} + +#MSearchBox { + white-space : nowrap; + position: absolute; + float: none; + display: inline; + margin-top: 8px; + right: 0px; + width: 170px; + z-index: 102; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:116px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:0px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 1; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/search.js b/src/tracer/pintool/pin-3.13/doc/html/search/search.js new file mode 100755 index 0000000..c179b41 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/search.js @@ -0,0 +1,740 @@ +// Search script generated by doxygen +// Copyright (C) 2009 by Dimitri van Heesch. + +// The code in this file is loosly based on main.js, part of Natural Docs, +// which is Copyright (C) 2003-2008 Greg Valure +// Natural Docs is licensed under the GPL. + +var indexSectionsWithContent = +{ + 0: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010111111111011111101111100000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 1: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010111111011011101101110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 2: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 3: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111011111101111100000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 4: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010100000001010110101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 5: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101111001000101101110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 6: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100011001010100101101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 7: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100111001010110101101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" +}; + +var indexSectionNames = +{ + 0: "all", + 1: "classes", + 2: "namespaces", + 3: "functions", + 4: "variables", + 5: "typedefs", + 6: "enums", + 7: "enumvalues" +}; + +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var hexCode; + if (code<16) + { + hexCode="0"+code.toString(16); + } + else + { + hexCode=code.toString(16); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + if (indexSectionsWithContent[this.searchIndex].charAt(code) == '1') + { + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location.href = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/search_l.png b/src/tracer/pintool/pin-3.13/doc/html/search/search_l.png new file mode 100755 index 0000000000000000000000000000000000000000..c872f4da4a01d0754f923e6c94fd8159c0621bd1 GIT binary patch literal 604 zcmV-i0;BzjP)k7RCwB~R6VQOP#AvB$vH7i{6H{96zot$7cZT<7246EF5Np6N}+$IbiG6W zg#87A+NFaX+=_^xM1#gCtshC=E{%9^uQX_%?YwXvo{#q&MnpJ8uh(O?ZRc&~_1%^SsPxG@rfElJg-?U zm!Cz-IOn(qJP3kDp-^~qt+FGbl=5jNli^Wj_xIBG{Rc0en{!oFvyoNC7{V~T8}b>| z=jL2WIReZzX(YN(_9fV;BBD$VXQIxNasAL8ATvEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/search_r.png b/src/tracer/pintool/pin-3.13/doc/html/search/search_r.png new file mode 100755 index 0000000000000000000000000000000000000000..97ee8b439687084201b79c6f776a41f495c6392a GIT binary patch literal 612 zcmV-q0-ODbP)PbXFRCwB?)W514K@j&X?z2*SxFI6-@HT2E2K=9X9%Pb zEK*!TBw&g(DMC;|A)uGlRkOS9vd-?zNs%bR4d$w+ox_iFnE8fvIvv7^5<(>Te12Li z7C)9srCzmK{ZcNM{YIl9j{DePFgOWiS%xG@5CnnnJa4nvY<^glbz7^|-ZY!dUkAwd z{gaTC@_>b5h~;ug#R0wRL0>o5!hxm*s0VW?8dr}O#zXTRTnrQm_Z7z1Mrnx>&p zD4qifUjzLvbVVWi?l?rUzwt^sdb~d!f_LEhsRVIXZtQ=qSxuxqm zEX#tf>$?M_Y1-LSDT)HqG?`%-%ZpY!#{N!rcNIiL;G7F0`l?)mNGTD9;f9F5Up3Kg zw}a<-JylhG&;=!>B+fZaCX+?C+kHYrP%c?X2!Zu_olK|GcS4A70HEy;vn)I0>0kLH z`jc(WIaaHc7!HS@f*^R^Znx8W=_jIl2oWJoQ*h1^$FX!>*PqR1J8k|fw}w_y}TpE>7m8DqDO<3z`OzXt$ccSejbEZCg@0000 + + + + + + +
+
Loading...
+
+
+ APPLICATION_START_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ ATTACH_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ ATTACH_PROBED_CALLBACK + LEVEL_PINCLIENT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/typedefs_63.html b/src/tracer/pintool/pin-3.13/doc/html/search/typedefs_63.html new file mode 100755 index 0000000..61dbf73 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/typedefs_63.html @@ -0,0 +1,32 @@ + + + + + + + +
+
Loading...
+
+
+ CHILD_PROCESS + LEVEL_PINCLIENT +
+
+
+
+ CONTEXT_CHANGE_CALLBACK + LEVEL_PINCLIENT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/typedefs_64.html b/src/tracer/pintool/pin-3.13/doc/html/search/typedefs_64.html new file mode 100755 index 0000000..67cfe95 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/typedefs_64.html @@ -0,0 +1,44 @@ + + + + + + + +
+
Loading...
+
+
+ DEBUG_BREAKPOINT_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ DEBUG_INTERPRETER_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ DETACH_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ DETACH_PROBED_CALLBACK + LEVEL_PINCLIENT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/typedefs_65.html b/src/tracer/pintool/pin-3.13/doc/html/search/typedefs_65.html new file mode 100755 index 0000000..b7c0ab7 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/typedefs_65.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ EXCEPTION_INFO + LEVEL_BASE +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/typedefs_66.html b/src/tracer/pintool/pin-3.13/doc/html/search/typedefs_66.html new file mode 100755 index 0000000..0403eea --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/typedefs_66.html @@ -0,0 +1,50 @@ + + + + + + + +
+
Loading...
+
+
+ FETCH_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ FINI_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ FOLLOW_CHILD_PROCESS_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ FORK_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ FORK_PROBE_MODE_CALLBACK + LEVEL_PINCLIENT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/typedefs_69.html b/src/tracer/pintool/pin-3.13/doc/html/search/typedefs_69.html new file mode 100755 index 0000000..0d9579f --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/typedefs_69.html @@ -0,0 +1,44 @@ + + + + + + + +
+
Loading...
+
+
+ IMAGECALLBACK + LEVEL_PINCLIENT +
+
+
+
+ INS_INSTRUMENT_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ INTERCEPT_SIGNAL_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ INTERNAL_EXCEPTION_CALLBACK + LEVEL_PINCLIENT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/typedefs_6d.html b/src/tracer/pintool/pin-3.13/doc/html/search/typedefs_6d.html new file mode 100755 index 0000000..7e12f07 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/typedefs_6d.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ MEMORY_ADDR_TRANS_CALLBACK + LEVEL_PINCLIENT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/typedefs_6f.html b/src/tracer/pintool/pin-3.13/doc/html/search/typedefs_6f.html new file mode 100755 index 0000000..b80d788 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/typedefs_6f.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ OUT_OF_MEMORY_CALLBACK + LEVEL_PINCLIENT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/typedefs_70.html b/src/tracer/pintool/pin-3.13/doc/html/search/typedefs_70.html new file mode 100755 index 0000000..4afae40 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/typedefs_70.html @@ -0,0 +1,68 @@ + + + + + + + +
+
Loading...
+
+
+ PIN_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ PIN_CONFIGURATION_INFO + LEVEL_PINCLIENT +
+
+
+
+ PIN_MUTEX + LEVEL_BASE +
+
+
+
+ PIN_RWMUTEX + LEVEL_BASE +
+
+
+
+ PIN_SEMAPHORE + LEVEL_BASE +
+
+
+
+ PREDICATE + LEVEL_BASE +
+
+
+
+ PREPARE_FOR_FINI_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ PROBES_INSERTED_CALLBACK + LEVEL_PINCLIENT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/typedefs_72.html b/src/tracer/pintool/pin-3.13/doc/html/search/typedefs_72.html new file mode 100755 index 0000000..ec48fa6 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/typedefs_72.html @@ -0,0 +1,44 @@ + + + + + + + +
+
Loading...
+
+
+ REG_CLASS_BITS + LEVEL_BASE +
+
+
+
+ REGSET + LEVEL_CORE +
+
+
+
+ REMOVE_INSTRUMENTATION_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ RTN_INSTRUMENT_CALLBACK + LEVEL_PINCLIENT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/typedefs_73.html b/src/tracer/pintool/pin-3.13/doc/html/search/typedefs_73.html new file mode 100755 index 0000000..78291c9 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/typedefs_73.html @@ -0,0 +1,38 @@ + + + + + + + +
+
Loading...
+
+
+ SMC_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ SYSCALL_ENTRY_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ SYSCALL_EXIT_CALLBACK + LEVEL_PINCLIENT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/typedefs_74.html b/src/tracer/pintool/pin-3.13/doc/html/search/typedefs_74.html new file mode 100755 index 0000000..da49362 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/typedefs_74.html @@ -0,0 +1,80 @@ + + + + + + + +
+
Loading...
+
+
+ THREAD_ATTACH_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ THREAD_ATTACH_PROBED_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ THREAD_DETACH_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ THREAD_DETACH_PROBED_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ THREAD_FINI_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ THREAD_START_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ TLS_KEY + LEVEL_BASE +
+
+
+
+ TRACE + LEVEL_PINCLIENT +
+
+
+
+ TRACE_BUFFER_CALLBACK + LEVEL_PINCLIENT +
+
+
+
+ TRACE_INSTRUMENT_CALLBACK + LEVEL_PINCLIENT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/variables_5f.html b/src/tracer/pintool/pin-3.13/doc/html/search/variables_5f.html new file mode 100755 index 0000000..9db4d6c --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/variables_5f.html @@ -0,0 +1,110 @@ + + + + + + + +
+
Loading...
+
+
+ _callOrderBefore + DEBUGGER_SHELL::STARTUP_ARGUMENTS +
+
+
+
+ _countPrefetchAsMemOp + DEBUGGER_SHELL::STARTUP_ARGUMENTS +
+
+
+
+ _countZeroRepAsMemOp + DEBUGGER_SHELL::STARTUP_ARGUMENTS +
+
+
+
+ _customInstrumentor + DEBUGGER_SHELL::STARTUP_ARGUMENTS +
+
+
+
+ _enableIcountBreakpoints + DEBUGGER_SHELL::STARTUP_ARGUMENTS +
+
+
+
+ _ip + _tcpClientStruct +
+
+
+
+ _lock + LEVEL_BASE::PIN_LOCK +
+
+
+
+ _options + DEBUG_MODE +
+
+
+
+ _owner + LEVEL_BASE::PIN_LOCK +
+
+
+
+ _regDefTable + LEVEL_BASE +
+
+
+
+ _stopAtEntry + DEBUG_CONNECTION_INFO +
+
+
+
+ _tcpClient + DEBUG_MODE +
+
+ + +
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/variables_61.html b/src/tracer/pintool/pin-3.13/doc/html/search/variables_61.html new file mode 100755 index 0000000..0bc5efe --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/variables_61.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ AC_FLAG_BIT + LEVEL_BASE +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/variables_69.html b/src/tracer/pintool/pin-3.13/doc/html/search/variables_69.html new file mode 100755 index 0000000..413a76c --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/variables_69.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ INVALID_TLS_KEY + LEVEL_BASE +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/variables_6b.html b/src/tracer/pintool/pin-3.13/doc/html/search/variables_6b.html new file mode 100755 index 0000000..4c0a771 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/variables_6b.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ KnobSlowAsserts + LEVEL_BASE +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/variables_6d.html b/src/tracer/pintool/pin-3.13/doc/html/search/variables_6d.html new file mode 100755 index 0000000..9d1d7f5 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/variables_6d.html @@ -0,0 +1,32 @@ + + + + + + + +
+
Loading...
+
+
+ MAX_CLIENT_TLS_KEYS + LEVEL_PINCLIENT +
+
+
+
+ MAX_WINDOWS_EXCEPTION_ARGS + LEVEL_BASE +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/variables_6e.html b/src/tracer/pintool/pin-3.13/doc/html/search/variables_6e.html new file mode 100755 index 0000000..0c27f41 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/variables_6e.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ native + CALL_APPLICATION_FUNCTION_PARAM +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/variables_70.html b/src/tracer/pintool/pin-3.13/doc/html/search/variables_70.html new file mode 100755 index 0000000..54f8e77 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/variables_70.html @@ -0,0 +1,32 @@ + + + + + + + +
+
Loading...
+
+
+ PIN_INFINITE_TIMEOUT + LEVEL_BASE +
+
+
+
+ PIN_MAX_THREADS + LEVEL_BASE +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/variables_72.html b/src/tracer/pintool/pin-3.13/doc/html/search/variables_72.html new file mode 100755 index 0000000..91d6f95 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/variables_72.html @@ -0,0 +1,68 @@ + + + + + + + +
+
Loading...
+
+
+ REG_FirstInRegset + LEVEL_CORE +
+
+
+
+ REG_LastInRegset + LEVEL_CORE +
+
+
+
+ REGCBIT_APP_FLAGS + LEVEL_BASE +
+
+
+
+ REGCBIT_PARTIAL + LEVEL_BASE +
+
+
+
+ REGCBIT_PIN_FLAGS + LEVEL_BASE +
+
+
+
+ REGSBIT_PIN_INST_ALL + LEVEL_BASE +
+
+
+
+ REGSBIT_PIN_SCRATCH_ALL + LEVEL_BASE +
+
+
+
+ REGSBIT_STACKPTR_ALL + LEVEL_BASE +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/search/variables_73.html b/src/tracer/pintool/pin-3.13/doc/html/search/variables_73.html new file mode 100755 index 0000000..808f326 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/search/variables_73.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ syscallCallbacksRWLock + LEVEL_PINCLIENT +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/doc/html/stack-debugger-commands.png b/src/tracer/pintool/pin-3.13/doc/html/stack-debugger-commands.png new file mode 100755 index 0000000000000000000000000000000000000000..d74e76d93d763b383af4b13725c9943b0b647e2b GIT binary patch literal 7078 zcmds6RX~)%w_ny(Lg^HgZj=xdmWHJ}WJO9qLg|jBYXy;%knZko7Ni^L27#qpkcPYK z|32KO`+o1k#>_W!=FFLMe)Bu$3sF;%#l@k-0RRBF@^Vrd0071=>VF#+5cORYwor%q z!En@&l?0RyKift%K;{z45&%F&#N!*Ihp0BTo!omz0D#B|{lQo=qj3WOsD$LDB;L9i z?59|N)0=efIi&E%?Vd5D=YB+2w-jc{THF7FonD&nEqh`~kujUHGCSdC=&g8;!qTPq zyl1&Sn?DowW}T%pxx=xU9|7On^`0hs z91JwL9yFXUq@<)=pET+CnIAN43U9g|+#DusCcCG?|7_}ic>pBv1%Ucx($A5Y{4qmj zdqDsYEdV0|fHPbIz`znuF9xX{Rfa!vfdGI6;_VHXsE1fFu>c%{si+PcEO7vkRp1;w z#jlb`ynR5>VFnj93-EB08YPxi4GIjK;eySniUwBh9_rju?q}*^Fo$Xuv_~<|~46T$OnGGmOh?`t8b$`Jv#| zOn6yZ6YM4_-k|kVLe1(vJSp7UrRQ*e(d9;r^ZE4#RqnudpI?r@bN*z?AD@pZ4oBr3 zrp>Z(rClewvBZ1YrY69Sgz(Fh8nyZmJ`Q-V_bb$hP%DXdVPiRyQNE1P*{V^qp43&m zga(Z_vzn6|h`5`swRn1nGxT27HH*vC{+v$zCZJ6VUxNk!aQuagyXKN-awj3Y;y-&1DH!4z1Jd6 z|9V^B>!)3=l$3FPa9nQwT_@&sowpRt6=bN`Q#mZ8*x;sce5(eLromN?7Ww1*+V`#jp;ZvwAdoHgp9*a z;(fa+)wJ@di%3~H{dTy&$F}U|hFm1?SERW+Hm(g^!-s6?`iPvZ@M^W_@O5%`7NVL7 z%DfmrNJ7@g_>6XQS?6-Oh^FhVwA9mcGfou?U%oLHQGRn!OI3D%`=RA5N?-TR?*8w{ zf=5;4A;X_CQ&DWG@mY=pMO$Wp7+uvpht&AisJ@&qSy7*JKW)t+>zA7;o5OwDh`w|baUmrGmT!tvKq-mA@C@M68F-cfg&ZHLMyW1qkGN>Nfm}}T4haMVS zZ*8{d^6S^FnSqHnnfU6TD%`&By&2`Og&PcNv`#X~ZhW{On$5WrJN7mk_r@)|9r8i2 zRqNh__{{XyHF7Jr&#Uf(D@EQ1b2Xn9>ikZ=J|7^jwS~2fDZStO`w?G=B@I_^=TKF| z=kn)8t++Ps>oU(}>*4LzgW4qZ5ZiFwz02v5!s$gtmNKiF^Df(2x5fQLuAul)EE`7~ z_}Jo;1frbgr-eUqFd3>;u7N+#z0P0q=bx<7_^Aq4!9fp~Z;z;vM2U;k&L)YliRqd( zzk%y5yqoG!Ul(R6t=Fdb$&NSXs><-JB3^TQI?zQI#{FWqnl1Ob)j6$xs0JH{dQbZE z;6>HDq{P!#@leiBnaSrnttW@7L!NcVd&py!Kr-D1iE7GDG8rGd8TBRpSD>#__rik%}318e%Q`-w@Ud{BPsH4#+QIWi6!qEr@1M^YM4w#*npx+l@#+6;Ds z_a^#$2h&RMU`B9U_`Y@kqcIk%7~k)=yZTg*w~ikgD=mSuh^>Ox)PneE+-*bQE)X9t zR|18*a!kJdjsYk;5U_G!kTe%Fd|5;bR26R$hYv=jTcB{~eGbkxC- zUkd90FD50XSzHO-`b%4Vo`-ZO8%_9%Ltt$={w$}?MwP#Q=;dR88nMtaCqU8ASGrYy z_8UU7OB_A>H9ISFJzYu*41XLH@CWjN}TI zwRL>^Sn^YOtCF59WO?zhC7$`{zhTNLq-F8BNh-Vo&Mp>%#OLE*ntz@|t>AdTF7K|s z^!xUs^@)k`y<&A8ijQNJcaD~QA&eWYNZ z-zW2X=BjychUcne)MTd~^_$(e{*RgAAq`6KhTW0kD3k#KAa(`X3+3E7iX~Spn!j%5 z%guHHAl}a-nDi~ol6|~nLgdUnLMkio6Y3HJIA}ukZ%Ln%H9kaHfi~3l8lrShE^=!_ z(g57P%7z?=PYBeSe^}n-!|eTO;)KUprpiH6CRQYr`~|HL3$UH}sO)|O87k(!{2|rp zo@;Z!8hjZ}9rf9%-sWks)}xDNM+f(Dp~UfVYwLn>TSkFh&WPOUWpg}R^kL<*VbIM< zHcD?&-QTqECkgQ{*X-vCiXgT)&=i1(*lleGb20Sr{=h3u?|Yg_90e#BO&nOCV=Uux zGU(#oBwdZ2Q3w39WU_Cx4Syx6Jhg&o+z*t`PlWo?j3~&&BT)uH33DJ+8+*ByNxO=q z1Q(;+%0i{hIVJyg`*h@pldxD#ch1vm zr+9^e8tI50u;puBS!ZI>g)fNy4%ur`fGWmZNgP5;%LFkXa7-@xuQx5@j>8F2<{sJ{ zlX^w4LhpA{*DTKG@|$)JCP~Ny79kbhi?b3c9?>U6FCJ_OZ!_5vO%^Lo;_xfx~SX?w={By z8*xtY@>sw+rccdz;_En!E7xqNvj80_7(M=|*)u=9@aviTCG@j!yhQpAsP(u%R`Hz= z*(35`X3J53yk26XY7)ZEPW-Udl%tMB5TT~hp{!(j;IY=*V_E?PAG=sX#w+8>Y`C5J z8%qftqMcuol~NCWZpD8l+tznA#`v(>P0`RL*}jEKwHM+_4RTCZ8etVH5JIeChX43P zfQnu_u2IPZ=6L>!pVB9Mz#$|@ly~kL_IOTKk91n}aPG^{g|@t8oQA-0j2rJ(yjcXf zMbTlv^NHV-$uGkT7NR-%XS3`>PdnN)GoI%9e-Q~~bsH_F7!IWB?#j&uYqkeaHizC6 z5+8PK>60xzWfpC)DRjQE8Y2N!VuNr}*D*f~O^5$&?k~ypvUVxj_F2AtbNg-c$7d1V z#fhJTS2-n)S3i`7zVG(LD9TZ=5At_TlTyEPEomEIt)nzKNn{kl{ae5BOk<%NkJ<({ zjEzj;J|gLhGV2=RPLJwKaeTfa(V_En`x_MRu+^#PWa6TrqdULrI4)4*y6+}%-t@TH zsi)UT)iG~!?Az|Kkmso5EaQAaKg)<$~rG4<0Ed_$R)#Jrj;PI7$9;J{Ya)#q@gs2)TCi$G!T~*~@b7 z6+N!^6=L`t>y)jYg+!~2p?zufLk6;`KLZ_B*9yWL)=Rq?JtZA%E9nxga=Xb3&?e7Wut>^ymVCNf@ z+&rR>mk9D@@y6b2TIxmZ{Z$*cBO3@VlkS6eAo!;GnZ*DvZ@Z1;;e62ocU;Q(t68&Y zjFr5l>U}6wg+@~(V4X+{SO83)HqsM9`|C><7s`>;6qV0w-JzL)-90>JqXogej zLG@g}%zT9!lHQoBWxv#VwO|!bi@Vi9veYG4sy0myUx|O@9fhkg&0wvm{-P#}O0t77 zbxh!O=Z^R8+MyS&u^6ni$$yN2mf%C5(;1!7W0`e**AY1@E`_u|i_K8dMS=AFW9|~Q zOGSsTs@*%kDL06|QY4m>cMWjFRD?+^t7h2q&KA6;?6Wpm2qBvPMBL7Mp&cTzC&h@%a zEd?HE&6}>9bv1flv-aJ7P1uzJaPKvFq-r?o&m4gRWxVesoi*v7Q?81#o?oty=_6 zN>I)eDU5mk5z*J?nwfhORce*=Vbehiy6mSO4KX(id<*b9V~)&T*>{=$eiSqwIzHYv zTk`@}t0KUn-hMV()&6S~Bv0U@9}`Lt!8^P2I`1!dY}n*L?~C+QeZ|LOJ3>0fHbgI@ zqsbVxLJ1gglsNNY%;cwx4Zj9!GXuZ&n7l}vf`}*;TIkj=ew>AigS087g&4a@28d>HQ zaYD?ApzaT8-;kH;@eMT>kCX0TS+xg0ehe_@G#knLJ`*W=-}f!YjQ-2;+zSEq#~`>Q zs!!Stwo#E`0*3Wwd^fjad+e7C3g%2Ap6LyZXP3nXJIQz>48@hPW-i+;fmywaFXY3i z9kxg=nSa*q5Yo!3o^{7iqbM{fi!XW3>I0>76tNH_XbaW&qMjRpqOPy8(^n>+y@R31 z)Px@@R{pP{gQ1_ z^zrv;vRd29+fzDrv&yv;uRkqSnjfL6(|?=U!L{aT<06}LaaH<8DvnoAM@FZ3$A?Zu zIn%(CxFs}6f=ezND%YGW%apQ*Wm;maAT$RT^V^FZwAlJDQUE7=5tjA}H&J(HE-!*HOxr)6-0eEjO+3qy`!~xq zw53}N6p%zzUb~|}`@S6sTjWrwh06c#dCjrTZPtKVT85zx5eG2F1 zZ%Q3R;^3gu2sv7UVv{$4{)dRQT%kG}osK-97CO=OZ9Brc*-D9x=khtaxUfbQk2-k$ z6Vca~E>yIxPVTm5~EgFC$s&G|}u0j4U6C(3h zV1`kzN0KxLt#Atmq{F`+JRIMrv9hjqnEx=?PO%Q((7~GcDvt2K{)KV7jIpgQDRbsW zqt%pCPugtw`d2S+PWdwiI)EPrHi}MtOHE`ET=Cr}M>;SCz`41ld5DD235gV%Yf)8O z9DEW!nkaWX{sA|A?r=)cOuzCa>@sW;Ez$Le8v=6L9=l7)qLt>aqE5kH;{r8?8_ywqT_1J0DRjb9wZBL&zeRilyRMR( zY_5hFWEd$9Zh!3MAt_;O9y39J&(-XL${FJnSu6E)%4?_wQFR?p;QH44{VFxi_Ef=U zk_(m2Zs7#=iJ$S6b7T#8Xv~TMfMHM%*-nRXMW5=9{uPVQ4$o10BEX>6MRranrr5d) zt=*XsHpKO*f*oIF3!wCqL2z%sEA*n2mOCofL6YpoS7=D?_tv}8@hl30A|snsAtLS<=+LVwYI^N{NhY~ zbT>gSb0n%*I`lU#H)U8r^VrHi25n?+cA$*d#mvO}jMY%3F4@$qb_l9uycDRsNx8gU7?Imj-40^OSx@eCR6{0DKCHCe=HTNzhI50$=-I?JE^^{;+VN7B~P@ zhm V>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGmbN~PnbOGLGA9w%&d?86hK~#8N?frF} z8`rz1i}uVP=ggeB_ntFzX3w7eOB~0Joy3?piIbSxZFUSvY{!fNvtwrFHn$m?nYq=V zW@a_2nVFdl`Q7hYt4b=V)rKT?_Kuf6Pda5msp{3LNAG&qs*+x8Y^+Qsv$C?fapT6} z!-t2D{*1#Tz$3sT&@Td?4C2Rs4)d==PBUYYJEzr7ldf5R63g>*gsO-W<33mbHmnRoACh|TiAU(hNKt! z_U$t=GP1U|*0Z#>4_r<~Kaata+SSgTIv8C(7EV%DSgn&!_fj)=NNE z^{0|q`*c8Ro@NeAM)lL@lV1H)MOyV!DXCRYKuYCfps45r$>n`XWxYvdJ&C0~2_@a} z#h@#$s57<@bi@>PL>CaE^4l4a`Rx%Z^4h{Bgypt@aQYX7=Co7VLUP)I8QElf`!aB9|`Op_Ner=e#&;gtag8q zfUFLNJX<8EBQU3v5tJ(soZCsr>kP^349)LS5tiQ-R?ro$Nkm~ch!lw`>Xs5+)Gbil z6I-G|TuF~WX-`~fPrL@b38k8p^(HERx%9Sg~NlYwl%bTC1RraP=_GVP| zWr7;;SP5#uldRVOR{M&ujS*p+N1@7lWio0W>!$i~hDdt#V?x#AG%1yRsg->x6$C{& zK-1}=`shw5=>qY^opD7Sv7oR$rm#J_fWq{V*A|)A79pbHj=Z+8ywN)90uWD|l# zg0fnIlr8ux&uR(8Uu7#J0Av#UGg}yb8ESkpS_tXnuS|kZdJCo5TUcQKY{5UZ5TDuN zlOZ6khj_a83sZ$z^ngLMVBiVJh-F!$l(UJ0l7R zk(xvmb`pxZqKmp>B*YeXONlG)7AWafnI*oYM@m8o>`%eh00rL%F9e_aOOjmH1DZOY zESqjnlay5A<^;;zoXXvtD%>5a+#PD%9qQa2>OCA9JRF)m99l%$JRJU9RBOh&;JxsU zcwf9bwgFp$?ZH;D&BJzLYq8BKLneVS#AjAmaEzszPz3m`^Q3J}v#SXf2qmjr1*CTHtr z7wZ;+Rog4l>SBdg0W4^}mfla+jP>JP@Ludq@$T3LYzejpTZL`I7S_bYVQZleMR_-+ z2W`H-;|U5KOO`Cr`}EUKjV*1ntGg7X9Vw+9sb!sMh2RZR1$~76AW*4>BwSf7!78#_LIh}PMsqZltg(I{P$hR* zK(0r~Cq$_cQ$m&)79dHaiqQmpPch5e%GXU&S33&b=1aJDPWL9j9J>6KmmNvr4rsTG~6<&-i)3Pn-YkzCr2Fd~>Fq(!X>MJ@4#EwP}WIW`|O z#pHp;=-kGr+{Vb<20~6lgg|{n4k0|dJ}j#~6et^lmGyzjy1)!VKzglzTCHDdtt_R+ zC#Bk3QRA6Ja8IswPpWoLtaeST0xpaMg0qVFDknlEg)YZcIZAMdt8$2~B7Z6N62v>J z9pVU%@oJpntDO=EE+7%q09TMy%WxC%NUrrz5IjK&sPhu2_f94FFw*K}BEIPjz>kqZ z@TUYYG8^S0fyzb@l+^@?Z7Cty8jw^@BrK;TELR{rw?!bYB|NVsLX*h67DB#?*2sLM zkOP41k`g^I_3eF&CX6o)4N*S2okhugbUV-Zc7gHjBIDa7#<$BTmBzQKjBnK#->M_r zWYkNzwfEqXWt&vspQ=Zn^N{$QTeZfws_9#l8{Y<{#05@ z8iK8D?0B4nuSNoqNJ@EkbN91hqdwDn|D&-TJx^lt8sZ8X6AGFWi&~P4TT)6|Q%l>@ z%G%S*+A}KJGb=ijl^t1?omo|#*?$1M`~~1G`k}1s{DWi?4?d5K%1%Os2I&=@YRWs) z2_5NW0%>I(AhnFx7AQ*F2qkUFurP5)OJZR&;+as;6qgSgWAi`*;vAh@Pskxe<d!|u0^ z(7-05)FzS=RcaemW*b#bh%UFI*fV0v9b(EIV?m`;oPcv&C2)xsa80OUxPe51JH;cZ z8hA32tGz^^PT(T~pZccOGW=jzLY+S)AYB7_MjfR-Fq05OXkY{rSqp?H8`NYqgk&{@ zYJ%KQ0C}P=kU#3AuC@2uFFq;s_e;5Mn0mu7?S^6I4MU}oVYZQBuF=JOql<+`7mJN9 zmKt3E6-E~-jV@FfovZE##PLtb4gb8kb5FI=dHn7F5bhT_hqYmySTlPIycgaP?~8ZG zHegGzJ=iLcdi_#SfIqet`baG4NGcKZ0fS(CmgwWX565)$JdVh&jmoKu&TT+LPbg?i zENn_HYECI`PAzFkD{DK0e(98=;L zU1A?qWEW9r6JBT?R%j7gXc1Ci9+GbsoNpRLFcC2h%ma@Ya>7FpNRj7~Wy%8(AaFk* zk04h=9%Zl>ijZ{%a-ij(8 zij0v`4SXf|rB2ubwU=oT})@jUBuCYhs`~r7y?YuuiO*y#?MY@58#??+2l)SlP;aj_w`x$*_ej*zWAaxVh|)CWh4O+^zrVnQElCi zgVQQPGpf*VBeQCvb82IA>*Mn46ABuV3L6zgjVUEfsU^*6r7h{DEg5AhS~JRC66veR za{8-)_x+u~eI+e0V1H6dkYNo7jG!oPW+Y1~f>jAgltfTSDS$7CcBRUQ&8>^cts~0F zfh=kwK~_zKvO1iRiD*}aWmJV`RDuwY&Zxj=5tLRTPpJq{l=~%@$&yOF6G}YeOWb0M zoTCdJqYCW8^R2`3EJJe4f^tmc*$)Gf^7yM7@19_7A2;Q@9;oYAFlE)pr6%op+$n5Hv+?u$&x`h0?#De;yq6S4#LrQUDDpAQF z0y26Y#Z4&#(ufUUC^TqL6pPU91j#P}c1lelT-lJ=kA%W{H3jwYAfEueGGg=VV)Gca zF}bynMRZP06d=B+j>xJ)FvFCUVVRX-#1s`F85P0l<%G2IpwzNJLMf1^2n3{*`X!h6 zCKdZ66nVuLxyKc_M&~<4<=IE%T8HIWgk+fpDjx=9-t$erElV@pM&O7| zEWws=ln@8Vdh7(q`t9RR;O&I>O*rL1IPI9oIOCXj7TX4}kb}`!eUJdFB}C}XD&qv&L7PCmf(PX+AiD!>PYEWD3xsy5G zp4i&D)*jUR;|fUv!pa|lKK|!>A2oOMxW?pr#1(iY6rt4yC`tp<%FxQgGb_>hqjIWa za^R6#c!a9t50Ow%rvY8(OA?=7Cy-YcF9N}d)M6ubf&*Kd+?rSsSh7D*fC}OQLNy_~ z8e*khP!pbogaVF0LP1gq(Gf%wL2yJ`nVi}IfelcU_$x~Ml8O;$AWH;AK8c0i2?AaT zg& zt)mZHMenzW*lQNC+cbQaN%*giLctF3FmyX1WZMIQtq(%B-VX*_gufwM?yCsie4lcU zu!+K!+5LEl3$pdjG4+Kx!HAM-rhZ z^;MMkCYQ*NN+cC~Cl&z+!ZW@A5J$unxX0zY#pb($m^|PDqH~?1a`183MPyrtWmyDg zngpgl@K3uVOEL0FzUq;9(Iw%WQ`|}Wn4>m0@FMn@hW+}87-8exz@P2}tiS2M?xz15 zBfr%*d{=?%gp~x@ife@BjH^D&uF4oouc-OqiVxv3VJU+>il>RsUv||OEWakO;+pS@ z>waJ*Wz`MfznWo$Eg`JE835MZ0`m3XcHo9Pfj`~_K|kFM`uQH=7wiIM^MjDh4??#- zBy4*Www=mo2b@SXv=bVFCCwuCm`Cmf7LofbqQHL3r~_8f2d$zHSrZPkOv*Oqs9o$a zU>}S8h@?mkaVIIK9OF+r5zaUzfV0lXj1tee2%L9K0v9M3-569!?gE$Glfh*Vg^DX4 ziYuN37)rn^eHy7%64GKv5#2_#~GQQzR98fy5%ugd&fG zLihMWgwze)kl1_(!WqC3(YcOMIRK`xkIc4@$c8U$!wIm4Wk@DI6k~b%egEJsllAm| zcDUjWam1f>j6Go&eb^euOxRA7kgX4cez_~(a0|z(FO0C{vezO*uWv7SE;#Qo|D5|g zaF*~5!ENpt!W?j#F#EJCW7a8=)2=g5xk$i2HJF7b6WqY;GXi9V;H>*x$~Wf-^Uq-e zJm;UsmJk+R@B-gn^!kqA{rx4vqD$V3FZ(RHLim9h>Y8lXHQ!~|h>VDjZuqY0h`fT(>`KtsoghSVlf$>^kG9OE>s#1PyBJyDP?)y{C@#)F11n|EY`qIEN|Y zY^Qu~Gv#w@eegxN;rR*wI%-Ri^y%lG)P)K6+18g?SBugZ|%D8pNf`h7My7n zs{x!CUZe0osLzZhDsJ}i|LVM-jO^vhX;ics7yMSU>Kx9RCk zy|2KLJP^S+$aNxo;VUlA*3&y64@QYGogDKL%2BvcLDB(6nt*75GC6t^6rux~DS-R? z$qt?k64Y>S-~6+IrM@YpzK$nw|CvC+4$KjPCX!18O%PKQds0~dcMxCb7GLN}d{N*M zTi_g%?-Y|qeUVFLK{5*_3!AVkU>&MNvmiy&r9nah!5M zn~vOXfsR1vwuiwR?**>E6@V0D*%hDfFM7cjbI!QVIO#I|gtNg>M}5W-$0-B{F!`{< zB*r0!iHGb}OgLyi;gJ2;hwQ$_--Cp&`oZoePdJ1pJAjFY)sS@_aRig`UPl>D`p2C0 zj}xXIcQ!cT0;U0M-bvRPr-0kcQ_zt6>@$QpXFTSd_4wu-@SJy^dgp@If{R`YVM9aj z?}%=EzQ63V=(5k^E3zeU%{5=J?7HuAh~|dhN+UlanwubC%`E~fg9L}>IAV6AX&EM( zt&c*%cH=OD3340)Ttjt3Aejzy!(h@uzGEqXln3@XAac+;3b6EtX^3%{0vUnylKL9)QLx5jxqjfjOkZn%)c6A{ncpu38S4RjB=eY!hPZhpGhPACykU(8W}WcWay-k zVbA6C`~~nurRELy;C}5FP97OX37tGLX!1z;Wv(0f7Ck-v`^l=6 z1ZI?LpgQIUTu43-ee9QOCI#gIX$)!v393v%y1-Hf6~qw=|BbN6UVmTG-6$o3KoUXm zb|CsV6;ML52@%i4Vh=(Qa0gTwZUD-NFLa430M4=bPO5Ri$;n+1`K!z3^R9|VMc+c)KgH+m}p>nG^xt+PIEPm+$k7APfz zYL+XWhY^a~^Zg1J7?R zc+R`vIsc;90z>%4d*LPO7s%xbk;~$%vL#n#Kfo{7;TON#-UqH!oW6$Y1nqtupMUM zDt?7)%o!1kT^5Ah7LklSmI5iobF^^^?02&L2i^M4Jg zZRtWYy)8?55RmpLFazxv$ukXDVESr|Yu4_2B5D^HPbp>SLFFdgEc?g-wB4hy?Y-2Dw!z1I4O4Z8Oc zJ558kJPi8zu6(W99iDT}x=lanGUd1v4oFx7rWm`&hKj%njM`;2lCjfr1m)vj)qM1; zg}@HWk9JsoC}H?^3xIoY|3|+9tB)Bw1xD<&RxxsyH5dhU+knx#ZN}_j*pA&}`^jFy zr~B-{II!RDGXS|9aQFfobR2)s@ykPwUmbS(nlj<2)5K%Wla4u0K92oznR3Eq>Pc5H z?UWmsaoT;x83@G#%s%Te=bWeD6bR*_H-J;Vz2x)VWh5-JMOSnXB-{yHe>VthxJUT$UNHEHI)!S5IAs&#Q7G69j0sze!+?fj zOrV%>Kot}5tB9gV(8q)EV;_Av*5s?PW?zl9{EB?-JA6IL`RkFc6GwVZ8YvSKkl;xp zL%?JKBo35O;M9VJa73}>*8iWU7A#P`RVv2cztmD{H@%IHw8xQ>bOukGWoeUADodf61$_vRykovauCPYDY(4(9OXd_;=p-|v;`rvUcY#Ap zzP;s9{Nt;u(Y8@}cdtMnDEU0P9iD9&mVFleH@!K#U6iJ92a++pgC~PBVeKmYzBGxTC0Ork-N>qw;6|QydSjwcEHLTz9<&_yAPXq%!EzO zdCWfNIp@6R+zVdwE&}iQhTaQEdLsMwvh4dSzJS`q4+tu`0hI&*Y7_Y?fb`^c;F>!@ zYZ-Tg*4+(W5AFqTp!|407%bcG5Puvv#&qF7ryO;u?`bPJ5LzxI%%}$l5S9;^uLp>K}E3sXu1CA0R7RvQ$~AD8SOS{v15!tTFT{s}E%gQO5D^HPp!zr$j8!GE zZjrPSK}Iel+`|fIS=veTA(SntKF*LL1$D$ef9ei`EYK3)-%y53?3f6-hTH=8Pr8)| zWiVKx;h9+C>2HBNi`-_In?oE4P)4!4Ez<`&CPi+(B*mC;Bi=Qx$R)1O8CV~~qlbM8 z9es#CzP=Xg5M5v&U0@fTZ}_X8-ZYatk$HEnAn%yF&pik3un5gI4{=|ir}xFha1-bI zpX=!@dzb-tJd^{MAN2G-I~#nD?5*DSw-whslMLMw&b!#m!N1p7lGMX2Z0p0|pYH`? z6l2A8843aOFL=&A>uzw;W%4m6bPCW}z!(0Ao#X%}DFadoQ5M6uS%6`b4~Q(xKiDdu zlEsiMW<$1^KM$B?n?&nhA5PeezjIXRI<}%1Uy0+1$M)9)FXTB#_ogo z>_6ELk2rwOh)NtkKM0RFjX&%Jk5H93e|^+>;xQL6`M4|4Kj8+Cs3bD|w8u>95h4+i zl6cL#;7veEVklc^DEs!3?7Pdp-vhNo{C~Jc@{wg!BFl~75&6nnAaM2VAh6~(^GL8t zBJjwM_d_nbCfHgmk+%<=MBUj)zkB4qX#p_H&WU_1kw z$dlZNJHG!uWY*`WzWcuaL#j2f^@PkGA2@q_z^pI*W_{^3W4y=o@vhUyJ53*NH+{VA zjPW+pzqFY4rN#8GEM|Tke&xc~|L^~Y=>s$OV+zRFt+qa{cqHBMCi=J^kOqC2hoEzw zjlR00mkAD-A8k+pDe_4!wk2QPC+^V$n{^!M@y{qH)ko6rP%n^rgqS{%zD8;Q?MEaL zHK_U>v`ezdNy8V+4)iz@Z_o$njL__3Uw|;)A=EWXeburcy%Gu$3i>HN3V(D=Cf`aD z5{+cPpP4>r55<$>k;owFhC4|&a65h@q1X-B5_)spoVL;J$C04!Ka<4_iucl#}9|r$)SB@GX1}V_tN3C(@88_%- z(orW=7SJOgsmD$v0xZ9vsM3mUIQS_vzZfFn{Vir9=I?JAn62jTZ?ynJwppqWgtFao zDCL9gR)E-K2SHHDuht(zB|8Zp@3i@N7x9RolHInWcH52KOBl1y9v&IHA0Bb|^ne4+ zM;rkp^2K55kt5DjA}$lCL?%HZBpGqjXUWKEcbbfN&}77O7Rf}sz&97Xzq#l$-w?>) zk#8^ig6~)|a@7wkx#ka+-Uxt1h(~V9SKJJQK~xeU9wC`XFn~TNAseVf)CPe>s7F*1 z*@PYqshB_?#2vqyNA0qVPARVc`hWi40aq@Y&YNaFZ<^)2Y1Z?m*?wbS|BZpu{HZPr zrnoPh;=OQ+?As~w?+L++^g|cvhb^8O4weui2nMH@E|s1#cj||wA&c}wzMle4{qTd< zLs)|pJTs8u_np4%JAJS3^xYOtaal0cah`$wd;{D0({1KYw_Y&A=G&POM%O3)%l`v? z;Cw5IK03wD3(Y>RdL$W9eW3h-(jAI=?53kY0Tl2QbsZ@3Rp9>mTAL5_}>wPeN zhzl>!hd&h!$v9~J;@&>hvQ!_cVG&Uu4k~w`pF*txeI%0w<_n6T53gjw9mqR`ehSkE zG7dlUiFo(jzNm(}Qe_;IA>Al)p}EEpALfn%#~5M_=wq#AfrA&(#~KUfjyzkEbP#=< zlj?)GBil4MVkgzdqleH3dMgHJ+1k&~!r!l6}0tSsNiG5sYIo z1O}lzCliq-BdlwqGZP_c2+2h3M(?p31B2|PnFuim$wY`js6^16QDq`54ViG18H8ja z=+0#Qd-5u_n=&$BedXMrJleCjkr(wC8>Ax1O}xk+-6RRgCXL?8Er9Hf65 zvhg8OkMJ$j9Xre;cUna4v5MJe9h+LxF!_J|&!GEvZB{R~S@x~%vV{&S7CNq6=(2L5 z>&gWlD;IdJTp(MsAYko$`P%s*>*s~8pBK4de)Ny?V}4u^^V5P@frVJWKXE4>irz3k zYQwz9_46XYx^F-@WBoU{2lq#T4FFG@kF|wSg4QnxTDQP&?Lyh=h2E(7Y9HvlFny%l_fIp1K7yG(JlEnV z+U0`@3mBEeAf-$}`!A#)QOfF+o197BK_O*PbY6rsgcLi)0THpA!=5wcZnA%BIeqzp zvq9y8Da3My&}UH>HIRl-Wzf!xD*GT)Er0{w1JpZ=Z-wXHBH72>J#IN9^$5)}b$R%Op5Esd!X7!2&dX=#Ly0>A z;0~gXJAP@m?;`1%`HN-pWp~V6!i*+sQaf5@fiagICZU@i1aG(_$2jE=S7qNBlI#N` zp!z3VCLVSA;-EdslOuQI>)q-@u|k1rg(?S8r6B_rIA8~%^I|b%iw=gu7epBhp%+6s zGBo25k`6KNps9y7_zgOCJ-=))06J2J>Ypbr3j zsB;iv5SD|uPXjaoVL1r&G5Z|!L2?l2gBnCesv(zrNk@j{Afyx`Bp}y?1O#0est=Sx zm_bN2geD*aQVO|C>L8>bf&@gAh|rOtIS8wRu)G8A*lQJYz&7r%eL{L^ad-wLw2kQ+`cAY`x>9EtGza@ao-Hqx@=nKx_Q0#-W?G(b_<8Uuhs{hc#5eX>X8?s z53eL6A2Rp?eLRwr!50iG+L|9myIpUU?;4knxlic7U=D~asZf%65PqcNfZIvdm!TaE zVGu;iZLtk(&u5(a`Y4vFoH7N}$zZz4g`@f-R&O z2Zl{a#^D%SaCs;G_02)=0{a-$IDFRNU%z@o8MdA#Uy`l-W}io{bp%s}-byocSaOUm z(J_~)53h%0n;`W-9Z2us@xaUn^04h>dG=O2l62hhb6%vk|DY`8rp)m>+&%Hu5z=#s z-@J~7d6oGtGg3GG1$EOqsGIsNx$5(+p%?0=Gf%rtIp+NJVSG#5jooXDu@9mTQrEN~ zP<@D1PqHBNUsN3#x*+YyU>S~3^;V>Pmf^^QNHJCI4%&HPB~`Ki zLQ1NlKK5vJVeHX`QT1ZPk}55Q9C1PdB9uaCNtN_sP71vkbYVy@1_mMZRG}Axdg?c% zq)K`*BnP2&5Y~lZr4Sh8hwB8^g@HZ6|3X1Abu%fN zBK077#{rwTqYjBDos%=mn+_~qVtV0Rq=~WL$s^tecY5vH=DT;R|NgB32et+u+!}OX zOW46J5l6N}9o-UpY)jnn&59FSQciA3J+(CroZhAa_W(SECnO)=oOFD1;;~H$0vi*K zZNxtT?#H9aC&+pTC$}V=0NY}ZZ;d{-E%NZTutQrz4{ehlBpcwjZ=3hNZ9WHg`ky=; zYi440;oPxhOQ}ApLzMN=I`whIBk{VI;b8=wcPGpDf#=UGt8F9y%Ksp68wTygy&N{h?d}-1fIr2p{Xh?y)gyj)7!pt=K z{JjA(McJLb;>-0;Y{c?ROB*)MO5T^;P|l#sWEcfK5ny>swK2pU7Obv8eKGMC@dZ_e zFEWdXHxp=&Y`9_k!qhxIU;cL@AyJ)9T>8)ownV<&+o zAhrxK2eC&2!Wgs9VJsj;5J$jrkk1Y}eU3T^si!)Bc^El}i&zJ7C3TSFZZrpRM-D>L zkkcMC4e?}k5ab|p&U=4z!H3jAE|MY$tAkL9_|Y81e=#vg09Z=W5IHS^2wj*}ssx0N z$e@x6$XLvMVK|1BLR1F%1^O@!-zKIWhwT!MJ0+iSOSOzB2vOwCANA3_V~2wrol-sA zQ(PPs&JL;04r##EA=A}P>28f>B0Bb3pGxj(mEwtGf~dFRLeCC`!GPrD%?=iZe1u z$&;ZPG!ZMHR2JfZtE!N}G$A157c9#l)zJ7N=Qsi@g_2%LEbWz$)N5*Zx^jp4Z zH+|ELWH@Cj^}3JZy0_w*m*T3I;u0yECZ2UkIO&KP(=i9EG4BYeN9e`}NIitY2PS=g zbKV29sxYT>!ePfR4%mN+AzKW)>_P{DWFN#J6lv{^R9zU7fZQPo2s4PfBO_KrAQ4d?5v1pW)0gc@>T%9J?Se zicdtwezZaZ@`U9Q@RFtUg}9Tvb}WUiWEo}YnBhN+9=>GMu*D-kz&ql7@$T3LYzf<> zA3y!jaOINZyh@zd=^l^7pJX2~`K{WWm+IzD3=p!xms`Fm_elRGoty=Onbe{|oTx$E z;tSjp3ek}v6SVC}QQ(9>nIa*Xktxo$nrUGv9^R_sy#E3l_z=L*setCp3)K`1*4>bF zI)n^Dv;&iZ$_u3H!G>2wgy9nA2u)2OtpK7UP`n_hG+`N@XBnOgO<08Gnuq0@0h(Eu zQqUTVogbo*vGh^a!=S7O1R{%jL>9`6=g2hs!~Pk!fM5De-*hA2^c%9Y>rjR_&Zkmb z0iKFWo|xs4Wav)BK}sIZ@i>73bDR%YN9`eFE~IEmhHOdd;k)RvH->CyVa$bAJuv2i ziJoKjqLe`DrqBm-$L|#fm55j+rNs^%9w7s_;y4SbdPsUM8oij8kciNcQA@;b6nZgx z>{T8SB*Ho}FDDVPBjXNluzNCOz8w9rjvBzBEB#YjahhB?Z#gAh4`K$Q{IyRGL1hafmH+h$$p>3YtwYM__E# zHk#xSDy$>(kwjREScK=9hY^S-s40jem?nZj_M_nJhd?kz*8RY&dkzmi)6-k>KzS!X zd7F?4S={s^oH;}Eu}_wMU6y{$C+(_t>J_il%U&s$JW~uk6&Ku-!Fecyq#KE6T*z5f z5XUk57@RACbGmkssbZm+Du#+F8?XHy?l|wsx-FB~bdUXZpU`QhY{m!54O;aM<`J#_ zOTTnOY7JF2M6>XrcLA?V161G=hA zL}NggWFp5{CPMo%C)^+r^kQHTjOl8oA>MN?c#CNWkqFWdNQ4$s$xyCV8Ul%sQb_+a zMCix}eHn3fSqO%8F|`cUQ;fW9Gezk%dY^UN5r@Q6E{apGDW_di$byUFxMMOpH5iV; zfbOs6WL603tlKd^)jV>KRW!;aN9+?$I3=BNO*!w8cF8;As!R#4`6{pbW?l2my6Tg8 z**o)+SNa9_w9_t%V-AT2ZR7Ua#O$}m5D(!XF35tbuDB>Jc%)tS&bTI18u?}23djN1 zeU-T9qDR^pR|VeUh<*G4n^?T|5U!J87mHH?aq{sEA525X1oY?XqpG>%j8hy8f>{Qa zJrb{ZB^!|`WGOfc1|6A4K^dmOndUSTvBtG0aN$~p0bQ{r*Q_+t+7NA2VAnH{llA(O;dhb0&%wj=3SfoY~!eK6WG@4N@{j;SYco(P*NX7}k{)@`BgU_-Xr<Bz+k# zltN~o7YriQQ$>TIp87Irh^iVQOi{(444qv@CYT`yAqhw*5)c?4lKo4Nzm*iMFNB51WWa<^6VKAYG>cJap?(NvPpx}g=N8G2s-}(;4l$=3Vu?gts6^b8u6iY-FLTo;<&JL}x-*!Y z@F*}7Gs;YZl%^qBW;kU76DS$D1eO3z@9E)6vwhv*yS+c`*w%?zD8Bz0LT5oZ@`a3m zR2fL2fhGk4LCgZAAHhUGT|l}L8ag0G$h_r8AV%zF;jGJ2O~)GqTV`sEXW6U=c&7EaLG_#gzQisGCuoIHv`DI2E6neRwCrk!-1LZ+yb zi5{Qrv%?uBm()K6uL8-RaKgdXjWAZJ8M@}C7B4Ts;Ww=GtPR= zqV-f(QY8|(h&03((0OH~o=P(jp`1E=8k&pssQyi_)I;B>5GcF`y7qfa|RBC+RP;x4$xUvfu5BoXu3;SuB`D6HQ0 zOQq8j$UFstJOd*L4=@H9sAN0@LFoUpzZ8<^S!Cc&n9lKP23)|46B%3R?$0wC1HnoG`@wl(YCV1 zBx1911iqRuwHY-wd`%(O{SiGBGAJ0h<~C+_;9Lxh&Z4V=0a{We#VMya36-2vd&Kd} zgZ6Zo)@Jk`bXagQo5k=QWGXtHQECRr%uzB!RABH{bHWx8cE5V2scOpUKns#tWc_sm zA8lh;s*p}gg=Ms6rV8^@cUXNuA^jb6xG3rl4ib}Hbbw};EdiAgj4KiBM(rhxrZYsw z?5DF-#j*%0Bc!%^SnSl0(HWdC<1&F3RwuE+-BWaW2nKgaRn>DQ8QG;Cq1_oWH-wDr z(s3DhgbnLnqum({>)xP~Q;i6!i6PS2Wtg9e97NL~VlM`h*3F~Pk=bb;P5xR$;h*TR z5OtYqkE3YDXuWtou6UxM4|HCXxD;c*+J}Zd+7DVs z;6f5dY>7mU6OY8eBWInFjKCua$VYJQ7Di_-dnR4=OeT0Ku6d`R@`w804S_V215p$- zl9AFN>-KBon{ktZ%)dW3WGEwAR;CRG)GW%92Do= z5j(|MHza{1Q=mPFBmgO#q*6e#aGZJpwuThYBSoe_lLZ)^7y;iKd#z&kSjFxFma#i6 zVt%!VAx1EZ-ev|PL~S*V++rHJ*(7q4al}UODB_ogApEC?VLyTgVH@s;uD=($?q0~+ zJ0WZC1h2jwyy{laid%uCyiX?@;ABvo6^heCp$wceIuBz6XxV4n>BKN{N;^ha#^Wqi zR66$JJP~?s3q7laBpvKLH%uYjZ1z4un0T&MhRPkA%?1n4Vb6Sdbj(Io&rc=7LSADj zMSJL1X9-q1-%LH#olQ2g`EVyeB@qnJurV5SzlM#`&}n9>nP!^j%ZT&bg;}cPWEqU_ z(v$8yrk(Pbe%ezU+(nPZ8}n0zOhhFS$?P&@B19tB1&N@lijR*C?n)=Q(@aFDr?Syp zd`Ym54Dt)=2&5YXEKAR_V+Mgxkc}cS*=H4t1O#moEfbDF4gy(FQrH5Hf839zi|62( zNIFn7QNi*TbWHGaq%dghNRU-8#65T++;P|r88PeiKp!#aN8_?=V(mlJhe8~A(KzGw zUxt)7wC}SB#~E1%2$6@ZA`e?f9kGc%N^ zf+Q!rTJ;G8SrEbS~% zP*qAg<3fN7P)&df0PQ;@9CuB9bzGEN7p^oasR&99DIy>sT|+x6UDBm=OV`jP0s}}R z-Q7KOcXxL;L(C9&IOlx#-rvh#%zoFdwfA0oJP~AIV@f;vS;(>O?{|tL9F>(q7&dpHdaEA8tgi$%dZRAU|GC?%0dn?u&)l)izUWqYl!~^xW}2tx;Fl zM#q*%fhXZ7oR=H-BeCWpDL*a+bE7e>%SL(;n#{@T{H`;&0xh)!CHeNTh-)B`` zU(qWK?f4Pu*Q(mJH8}542p9$=JAq`ED0VUh6xHZoq;W_LIghy<>DUc@G0w~1u6zDx z!T+g|GMw&>K8HlEs1;^$ljKm9QWkY#a(*QC+X`!UKgv*>fDZ!A#SiL^7RB!qx5JLv zj0nh2(9e=$-NzVjc=_)C%s5f9B&_YTkdBFxbuBOErc%F5dqqG;a;?}gZbOw?KtoR0 zw(5n30usgPRZqp&`Vp!%&yMHs{*7P75OCf3@uSVWF2HS|{YuU6mfOd$kVOV$?h~NmH{S=HD%@9dFKbvk&qA(y@Kp`z4ks5=3OI@D`jXYIq`{O9g#(sd2=a-8F=nwT;<~30<@zVDK%oIX0HCFrA~Gj~dpIe{tP&0l&ifm(UlERO)DD?TQ(x z04wwlb(FQ&t}8Uos|mLa1t`lpPt`u3=-R}yJ(Mp)r975j!+q)k%4bOoIEE1eg4-N- zf2S`hbjF9AN&jB{bsa-nJY!^7WJt0>QY&Elv>$5EI!WZaQ2usVJvMHN@XcJtD9|uK_LV-;^!W8! zFA_VRp)ET;V(z^ejYbAXTb<*Egn%Le@?aUI3jYVY3X-71)HmLbWY=~r7v@_|xm26I zRdx(c+EdncO#Z-#^oRwS5G3+e+I*7`7sl{qRz~4e|I|-X&+_PVd{-XC=DYH7?sZt1 ze}D*ivb5+c%qm625A^;oHkf1L)Bz4pR85IsKNkfKso%J?hTwj*5l96(#s?g7|L{9T z*^>YAdIl>kyu)wfE&6*Rn-TsZFi`W{jv?qc4-co9C8vpE*Q>c<@AJ7vXZQ;G;o!D*ALP0 z!|G*Noh+`ncXEwG=ffQw!jXIdced0zw`ZSEMumpxfv&a(O1UgQo zjuRfp7GCXmw-K-1}Y4-+kzHGI9Fpya16ohSX!pOh5o)z;tL>toN zzclVqE3w&2+I#lo04fj@P&)pA#e0>KNo`;s@b{WEle&^s{29&pZ12YldjZ${4~a&f zw(EXl>YE0A0|i8hseuCCNc`2vPFO1Dmy3P-_CngzH9>g4P2M+L2Pc7F;4A|8(&85v z-rR@>)}d?oM<|9FQ-r|J07`!sbe+^k_>->G?cGK$wOj@~=$nI1Dn9?&89DftbhU-8(IH$~2k+L7x}#DunSWPt!%XQ&shHNc3Z0{E;f|y^oaGp2Gg@K`C0r zJ;_Q}YMy7V%O}*pj~X;BXG|i^&>Sx^TKk#5_)oI>o4@LL_1qsD#rQFV`!o4l@pI0z zVx)?_L(We-r2hQ+^Sv?hYcCP+&tx)z*_0$J&{jpqbGy}Dd*@gFLuIIKII4e3nZ%0O zB)Xb+)p&yjIyVz+dOr`;mZht5S3aZH!wbVOS_}V8_Wq|v#xt!dX_5=npnAZIt-T}2Ixwk4eP7@4zDF7Xwf3$?-hwNCW!yN zKfSVM9oN)hlX)KZI!^Uay5#F`KADYYRR#fcbs8*5biaOUzwA-|GEkrWhpu;)EY6ul zXEagus-wW*vqmb3JTDzzlby{`oTtdw#cbQR%MyuZkiJ z0C}8c{ApOTRHE5_BX9=N-?(1=+5XKy6BiP>hP~7&A;!*TH*aI z2&L9DYD~X0Os33I0hDB~oU-laoaU%he&=0bEc}p*8|OI!U&HonmIoVnutLSR(8L<6 zHYZ^nHAvRS4kbG@sq!};H8pq6Ui&W7@{rzX;}+oxVfZJ#t}z+^D$8q? zlaYf@V=jy_TJLWjt|0ncgGtw`9~qzCOlBCBtcq?R3$GByRk_W{-fA3acSo=I|<1qVJk%UHvI=2r6cNOO@yuB5p9|f7J+Qw@DGBgC-?q2-%vKFHb?<65s*(|;q%abjE@9~+FFyfdYf-4`6yA4 zk2k<$PJ42KB5|2qcP8euXPTmDIetDw6o8CI-8l_YbY-XEXr$qI#zeNog7}3MhMZ_G zklyZaLqS3sgg6>#vhBaOzDNzIs&sPm%Xan4uJt9rc=xU(slkBazmf7vh4{o=r&o7G zhGmu)Z`djTj-kTPtj2!&cZ9rHZ`sbinj3+e6aJrUw{URBt4g|y>26_6d~>UPd%O^* zXF+z)f*dX&D0TEI98H_s(36 zFcYk1lYGc4L0du8$444)>RpnW5Nbf^?v4w2yaHv!w-*VDM1P|Ikx{xj^H7^tDGq&_c#lfE z3l#zM(px@eY8e3;I(^ED1LNFX{~20hICXLOIXgLu3^yJ)>j^3E3#gXduRibjcWsCO zs)`zeBdaIM!zzP|FY=ED-YWnAA-9zU$9d_we08PljLkq`4Y4wh!~Mzl2TI<5Gz%pg zGBI{pc@}ojR~(X0X{b^nk9f^(rscF;aZ!F*IW`p)Ni6xZBE2@RI?MQ`3;h2&r)_Sn zq3-rc()g1hi6W$MZ;A37f2ZdnB*k!Tsc$Ic%+Z;yv9PGA$Z0di_y4|y<@ba`1kjg{ z%vO?INU8v62YF7NU#mMh$T>PVeN$2WX2@V-aje-0WBX4npInTNOeHETrTLNP*H@Uk z+L}$mugP6LTUlCL$>8^(OfJe$K&CB(+x}aQEf;BpJ0h+qd>d1jA|yg`CfkPBJHu`% zw=ufY{XGTyD1+K^Qx?K~{}q1%=B&OlQgz%=cG{dI5Z;)EiISRui6&rQy@69lEASPT zz{j;Tfbas^=JTJM)t{NU1-;wjf+?siGi3Si`|^-I4kIbbPDWk^Ye_vvb9F&#aZYJd zO|GaCpc5CYsDV`2@kfOvfQ>H9s>;u+s7-4tFKaH0XpYTH=j=iC@+$KnBcC6*VO0+2 zL(i=R9<@j8a&&A~Re4%PYgrrBi4zvhC3NKWehOHsymYJfRdZNL2eD%LPtzQ9G#V&l zx$R@QE~B_$(L7fwoKhF3*SpryERd{9JMc-s;|ip5)S0WNjOB8S<$)=;P_Te)Ffyq_ zkag#0$$bUkA45;7|0!mVECx{JbWr8KQs#cCpj>0Nmyvx~7B!@^<$LpLMKzJV$PRe*X9G;I;2R3_r#fRl$-3oQieo zY&XvgZN__g76t~|7ll63&@c!zR8>`#lpNPAd#nRKK5p0hzn>tfO<^mM0N&&3>LN(+ z+S5#Gd!1xKL{Zv$Sac`_gxuU*FE6ju)YQyOx-7-`#Kgq-Jn3(l zpSs_6FwkXX85@jhe*OCO^XH)E6kQV&6McPsYwP3v-xRtWkQPl!lpVBK^tLZGFiSA( zP?|`N3bzV~Oo!$5DdLEy01^`ub8=!MCpWyYvC-Gp=i}4Xl1d<#Ld8&G@}ps=piAG_ z3M08`)9JMMI1~iLA6z`7SX5F}?Cs=l;wVd$#k3MwbzCVdT6Or-(Xp|$wN*Kxtn~8F?d|O}5wJ;v(z}Ka zxry>V2iVCa@&no_9_QKspw`Chz$gS+mfy~*sCdbRXJ}-ks;c_cEI+F#Fi-P{@y}Tj z4^z!TF5*Vx4idXRMK)E;r(3b71?%J3?3W|{ARN@^sEyk)hw)d zv6u!uzGP}%CTq5b9M2_nF$^ur$P5>jlz>Dt)6>^xD~wBMgWQt@QLT-UM?*5ufE=Rv zWRN5E_dVQ86x|gd?6#PtM1I)x@y&vQvhvyrrANC)9l~*zRn?4J%S_FDrgls0&g^~I zd2VzHiVIy;dKzy7Nmz&kBL_#H26JJ#pds4KRqnhX&W{=%^@k zOw5?*=*A=f$Fe!4_cS3&6|g=CXcCD6zE#?RuJi%w92(KJID^J666E5=i-=%h0|NuW zeP6L^M$X^HYnH?mHmJ!&{iK{I7F0!xNhxkRS{NI-3<(|Nb`liOSG*ZqB4=}wn<`9t z!{L-UG?Tz)EOp|fc`$ukySESUc@~tB@k3jCaX*MwmjS8RuTgq8efWRYrIHu*V>nz2 zNipw#eW&89Zdk&KXnD=jr7q9ZNrdlI;`KY*l#KONAyBn$%>q`=q2f0l-7l-cjKR=v z_>&^vg(7Zsl~RMl8e)4{To~VMG%%BFRLUjkX%~6lHDgMKMq*Vt=P>h*mV=3#dunkK z*87LSdX-_&DIT;U2YGU#FgimKKTWPQLaI4Is5|ylRfJUR(mTs9ve-GIcCC0iA0Mau zdkFD5^Xu$JV~Xlc+oe9GEGfBfsg)?YE64cVeZ&A(ZTCWh)6*BnagHjy$wG+1(GusO zuqbt#?&?ZYO{E+w1?e05pJQ@AUwVf8z5H{4NI70|Gnk&6Gcq#Mke5Hn>5eD~2d%J# zJQ)W`$lBR^m`m$}w0<&ZrD+0ey3HrC6!8aeeR<{Ap~eT!7dl60>o>o{qCfC!1eEX4 zct=Wtem4vId<3mBj`xivBzMat>!;RbrW^Lp?wBV2!Emzpnq1CqIyQXzlDh+31$1qz zABo?mATALmAxjB~4E9aZc5=GXyw*S0-XgrVqZNUTVt^$!g;W7Q>9zf)wcg&joL_EPG(`P4_-3#cdDWj6x2yRg z+fs&O=5Knl0{e~e2F0nabr8Z<(?U=VjVaoxCr!Y3O;jk)EupmDLgj$1JPypJt)dzsoA6+w=t_56|Om!k7xnMW> zLBpz_-0KDH7tUIKF&%6(3zLx&Qy|lJlD=qTqO#Vv+itks{vGaD4x! z;&tdyGLySL?JRM_1y8eSo$sbIfG2%_-sYY-TcmPj%#J$`28Uh!VAs!V?vn zw8#X^evY_tG!8Awb)D1F(u(_tw~2`t3u1$pTS9u*0GP#odDl{cVr(`p(=Ddg(&wjk za-Tjiz^|_}b8?y$Z+yw|Ne?%0!Nq8exOKX`$tD~gMV8k$q0f&Yi5okVdh<3lu1sG9 ztK3Jdg~n>YhG6K~bDdM{$b*gFx;F@(EnKb&l4GA@V>Ym#;qzILv?sU}h2&L9$+?gD zLq}KVA<&S+6I6Piea)B{$#%_eNc+Yo=}ao}p0yXboFO{oxA){FPR6x&iQfD14ZnUp zeHs@WR^X=Bvvqc-myS>Koafmj7V(AlQzh*PFPtQOE~`ry2327w9X0i8bTQ`Hu{0nd z@m#f<{c>q+eSNc9263|AOc{!a=)+oJYF>E-NmUKLIbM!abxl-V@E5+duL9a?razl= z*cD$3n^~JyL$pY?i;1^$Q*b6#(3_kMBR4tOxND`h%#@jB2|9{)l54z#RXis)@ZTni zz?(c?rs@8EsjYpxU7ZtzQWiY*#V83Z?HE3!Je@Xf2~4sy`Mw$~<=xTIv7)sUi@)*& zE}ylYZ>>0~??tD5T^_x05Xq`#`nKdohX&&mbXv+X(Q#X@+m%z8>=JV?l!!LFYFqm2r?C$?ai_QU6bIAGkskK^XTZT!(+khp zE}Yv@DL~qA^rt^U*CboL-}!bxqz8L&*2GHZdU~p@oG7cXuexvA+nw zrb7Tu`9M`GMMaqgFQwp_A8GYB0Mr&z5AEOi!sR!YBbEPhuRKjup2QBdR{!#Yl}%A7 zko$R=iirWNa2ICHHn(iV-<*Lt5@_#x8#3d#xAa+icp@kcZb^R(Q=HFc81J<)EAip-1*O+6>a4@T>ln;k%LX1 ze%Y7lOnS3}O}HciKY4yJTC&Fo?nap!*9D9feG7E)>Hz&n@mR()^CZ4gMA81$A{FQE zr4v5{(NJ4#7I)HPt-K&y)CH7DCb9d!=eJ?GOO4G-xS zJ-u;v=-4hu|MUTmRIuA_L>j*h2jZ0D1{DZ>0w%8`rH;j-g4sAZAxR^Bccs+uspB2D z=8WU>u%?iE!xc(aHj{ircLg)UfG`GvOaQFd9n;UtRFzI(d z`>|Q5z7)+RARN3>Sr@is%=;4a>Jy2*g!gS&-`3LPJYF-DNasFYCpr1`mpc2yQ66Cp zkGek3g){k(Qk?kxyCr7GRjvRhZ1v}chJ?I46{CBPK`q-^G!~)wg(a3ubfdte^@wt_ z6HMj0DdQMX+%&9*22rSxZc_ir&RWtkHul1BT6oC?d4la66pj(I$mGnH57B{)w@RD~&bI8kn1X}qW{~-qgamTeD@J zUutzT%=gs*0o@NyWDT4)JAx^#6@rs+s=Ppk))vHawku^LB?U2Y0F8-_ zjg5u$KvkfEIP4Hp1_t0%`9Q4~?$Oc!zxTZW2g*7j3@(d=x+zyf=CQ7hf2>>%zf1ZG zVb{L#ooY>g7HG6SKA;VkNgY{D+0GYrCK=q`;q~jNp)jGH1S~yINrP#Zs8CP!)Fiu+ zUmy}r#uwCfb1r?7lk`khVRK|0BUiEyGuYPR4j0Em zRA%4}?AbsG0ByI!g<$8dz5eXrKM8Absrv%X0*;~+@uB}rD=!K0HngL&^PzNgLRD%2 zTe>avO|oxxJB5x7)@WeU)hXF)!CzuagcKA-pB1z`i8z#(^+zUJM3sE8 zWN_P-ulz8W`Sx0L&cEiyo?)%2|y@tM1_>*#Ag=7%jL=)7_2YeyNgjw(S2k4k%Wh&}OGW zb2gvxOke_jt=ExrxF{#~ao>l-3~k(e({wVmvgyYStDCOQGu8)btt~V(8eWpi92o%y z4|Cq{O@}M9N74Y_7W-jQn{LjvFehC1dl_BFy>H~%f7AWEmmNjLevWf`>?r44;rL+5 z;Tl3g*lFmVY>QXpbz4k4OUz6q?lxD&H8nhMi-bLHuQz#)o%Y2AdHp$ce|W_%1~zbp zk$wR-_a5`<+Dbn~yIRaTW>$|dfQ@nI>Lh+OL=#j}9jU~3qnLjS_C={dxWM(E1{}ri z$>-L>#;93NCtuW=dVbJwV>r}mOwDZ9$rCUkCCl&#z61>m7Ml^b?J38+XhIK}P{P!0 zLTL^&4u+fH?3X~&0Fch(Wz0BNWrxVjo(+`6E1%rw#f!tyr7NfE^?7sYIP7`YO1V_+9xVq##xQf0F=GpqlReBs^H zkHCy`BL&V-k$cXzt>o#8=U_k*4!L0nO-dkPys7DH>aH&}weM+~ZO`_v$sZCN@N$!y zjqH{poebgF-xR?crbd8cPu}{fifMu35vJ-EjYf|%FPU{a#X!&{3F!HeW zQm-BSp9iQmCp0>BXjM>GEU*dRHNGJ|dTp@sfDe9nj<5KhiOI}tPeXGa;fgrYcn=(L zqWDe#?4Ys@5+%ZT9wDCN9~$@SWD>O^!`QNqDc}0d8)W#wOC9-Z=Xg6Eo$ll_hx=JV z=bx7A!ycd};0vTaYFUnwo^k-Fl`cCX90WL^`%qdV2&XC!Di8`~rFwaQw~M zL#9<6l_s|TXKPu0em)nOqX$2tEwI88bJ#uye)5J>hT9~8b>TEwv_<#=tvJr8x~kgI z!9lp|Rd=#bqjBDA?n&@YWp3K|cXXWeK$+ig6QdrIbM2UWd)BufSX$;0k!jS=imy*& zRryypxei%%4*?Lb@WTgzgy5U*t6kv%Qe`;ypcUS*IfS|8T~RJXR9x7~Y`;8~>0q9+XQg?==@MSk~)>8N;4r^5F@8OV+Ew`-E;2IC})V7mcLsj*i`}r7N$JRFv-q#{jxl zc(FtzSl5UQG5zD6dW%EvQ#;wP1j~=^+5O?W<*nnJzBw4p!YuX!x2f?3jZNxUP~(zQ zO0ItJb!Dpl_>aKhpf~JHXB95@f10Ya>sN=80zXLlOIpdw#_fB*p^=o7yuOjrfjKXx zQ0YF*6QF3rcZkdY53dCa)3VwpXxk>xj)F2hGomF`tVICWLU2}(rlvP<-jtP{<_zhi zu$d!rDvCoBEYDY^A^PKYfin1{-w6aIbh(w65om0a+wHq&5F^R3gqQcb(3Ypm^|G4w z#t-c4BPV`s3tD7$=U7)q`rqAjbSMJ?M;BelfErB@q`yx9>F@gjR@F255yX#>-$k1R zNnv$(XQHjO=-M6gjJoI}Lgvto9Mv_|R|7NHh+n=St-IXz)g4@TxcRHO-c)vL5H`Lu ztCL}b2u)xC2npC6@Z7I&^*6z%?D}Z1?yQeJo6idUt3WO;D$+J5uf)awh6FNE8yOq( z@bH`m@9tYEy5CvLp-;ej%6>ZGMJBoh#DNwThm}#CC`{_mEauie9!3OLtZY_V zps0=d4<@Dp5I*4hcQqFm|3=^Qu~*H~33aRc@qtarZiZuRSV~Pi)4B%SE~|Hp=OxmK zo(8AEi};~McD84Izk@9RKta!~0beY9wla!X(T;_1)dYsiOHS0L96{7(R-`ZTEF?fL zA7YaSoay;(>DBfv`8!FR8A+TGNmR1tB`KB_;usCb=jFVOD;cw%v3X*Ag!dZ8d)img zDx>VbK3LtyOdUCf0a3gOO?TD({UtjwFtQ{ihhkz>hmspj4K@xALX=G9#arpvkHVIx zC9Vsc(J_OcjDnIrgQV7(=fog2hXqT0?G&*oPThD-F|Z=K=FGH-4|Ls{~hxIFKh z-7q}7EhD4qsVPcI${t2GVJ^QV)J@yJrRLVgP7iR{ek|(`Ka6R`K;9AkR(##`Z+-g| zx35T5s`k z10fYqHt6kB z6?j)Ts!?ooY(|rU-?_cQwEX+%&zz|tk&!P3)Fk84?8fSN@0|y3NS)D>Um`u>VkdIe z*vi}y2ec(Zg1XE}Ya#R1M-1NaGPV(3A=!$yZTGFs+}Q)PajRjv^`E-Yxm$7RU%W$m z^Q_QY+25Gl^U%0s`OY%POBv8QYni49#v$V>Zro+K9Wl zh3KI@aSDDi9;oYz_A%rheqGpj^`?(n--RMADtsaAEW3$oUZ=lG_CZ#E6VXO{!u_}h zR*$n5QNl&62qWhyW0s$qhI3d2Lf*o$S$EpBsiG8@LZs*cU^21xs|X}Wv2sJ`1q?P5 z0FUpXl^icl)j~GF>ahV6j}0J#5r$6^&j=#{FdzBr{{dnm zFHl4Qy$-;<(55#m5`b9>%Q0`wRtlFzZ!aeu=ly@ABUi?1gw}S_+!OHi)ihSGz&mBY zBGkT*>~Va&TsQo8GKk^f3g8}uAwa10MreS-7Fn~+W6gB4APZ5%EHKWM0DOIp9D0gJxbMp@5!~k0#VB*X1x(e<2v9jsLl8dSE|mj4 zePk)*Vj`O-NQA3{ytjL3!1Wf1$L!LgIE7ZH`8SImF|;RyB99WN;kki8cl#ajHM|G% zWbld6BLtWFA!$pcs)268nQq!G>jn7Q%t^=AO??T)$>u*SFI9m*3y%EI!j&KJqXw9R z%N$^vkH3Yd!@v12K$j0$$ageW04ym3iVmXqxNW2^A{c6Ykyzzpa*pi%TYOi%MNtpUdjr86h!-whPmYaSmrZ2+nLw} zq3(K&@^Qr2L6#E0_B(+npi>I~-F)o%2y(6P=3PWA?fprcbm={Q-m@>cCt40Up#0yu zQA1aT+sNcQfi6dN0VvAIFhaf^=!xl%f8WO@bWR2a{Mg94;^DhML2f-4w*Tui*O|}I z^M0UU)@)!dr29;8Cu5j3XPT#>CiAp+?hxdH?t*L|vW1rlvq$en18edxsds3P*%ww* z#`j|vL+7wA%8U@B-#pfl3gEm?ONDfUchRRUg&G0Oz@?@?P~N#1TwNPE^q1F*{A^$6 znh%4*ey*cDl3Gk&!4wW7<+ro-;3h9~LPN;|>D7$_@q0|JzFMElS~FSfXe04z$iIXW zuK-|VqTrauzxO7VML8iw4MD|(g;%MgGNWqp(~Y+0qW^>56#yz9o>p0nfXtpp;!q=A z!%t_nhPvYvx5!o3iBu1XR55JL`D3jYy8ka&y`fyq*Yy$1`F*Kg18MMcX6I!LbC=J& zO`mxSoq1b0!w=(G=e!twZvgNOgqT?zvp?_S{^QI1$BTK~t8ief zt8?G!4wS-$#~A2QHCur#DsYdoyo(*Q|NRt|hCU39(ALDl9q`)cmiw$!>d+ zy^aJJ2fngiA2TFybXv2xX4TNOX#1;flQdC7z7c6C{}1-RgL#)}rk#H@c{hqx`12(% zh>TD24WDGrhRUGs{mcJRb)w%R&||(T0gAoyRtWE5!dnmu{A`BAlDvny(}dSc8o7q&=<$9blI;aPUf(zc^(&a z5R&8)_uhDi_6rB%wV=C!xaJjYa|p;|x8=1bc$_16zgfF6zWZO|hlnQNqL44`{Omq3 zgZ;Q&kawB}eFLRG{I>9H>ydSV9JX5_8of99T1G^?H&G-YCRFU_KIgY`>Vd#98)7|soB?aMO?-_wnLYOAP1IPA5?Qn5{Zo5bJvG1xiY{gF7guOTwW#)z)mkIUb;hc z`H}j4fJ`FWys}jrcD>@Bem!-uyieZg`8F9)a!+y-xKYMaRdw8i_~3IsR)q}zaK1bp zV}S^tS`(mT!p0Qgf70o7MdyBQe5c#L^)Le9^?XrfK%N%p|^F@^#3RvakRlJb*{`&hbZAh^URud*s=Bq8TN2 zC_Vrj@s5zyFjktDN=PZ5_1LhqvU6X4;3jM-V`nL{o5)qbus$=Y7n8I0&kJ)>7AA1F zAWs&%-}Bfao6|zy#zzKFAvqDi7{#%RsFaUaHGCdRXB7HyXYuazJC6gO;}be`)M-x1SA5Ts}t-8M^eRI|wXoad%(cS-(V%ewuio z(Fs!6Ejt(ousAYhP8!8ZUr~7Dc28F0nTWP?xI~zZUyPST=%wM)%KHbVP_OzMY_bPLiEM85unOABBPL%F(| zbGdcD-OyZBO5e|Zr@=Qz7*s57Ly*4hz9r?kbWZbVBCa1hjGQz^NVL$s`!QPeBy)$n z2%Cx-d+403|2M4F9B^y%Xn~BpLAokh@VQ3JlkkjaS-ssi{QspWQV=>9181O+6&e(N z6u)7_%3;vs6-6>N1(>iqEHQc@9_K)+VU|Tx$XNijJaq-`N7VrSG3)kylg?i#q`fWo zNjY!Rd^Chxeplezc3E~K`AY8@`BW%`Zz~f6A&=rfB6BW3znIx5edcEs2fk%E5a^it zOwDlcFd#Rx&GHY;Ytp3^pKIcBx|=~JNsfGdFLUFY6U%1o^R<6}*5;>gJ{P-)NRI%^ zgFB|btio3Y10DryAW9*5_CY^Lm@K*+B9Nwa+W8CB-`(VrwgoQR|8)}9QUqpxq&emy zUlt?_^VZD9cgzw~x$&L;?{0!5i1I}rUY7A177x+qjk08Q(&C;2;f{6>H@I9snvc%tG1d!#-`{!kbkfJewB`iI=f7-Y z!1bEX*W%793&@mg~zHPIbE1GD>dw)i{;TX2LEQs*W>#yYr52Rf7J)B1L3?-pA*UxfPNIvRNpq7$^BU*H0)mP znz=D0RA;#x7W?zDH%m*{76MS$`PIa&56Cb4DUXiY0wpv+rrp1mkQ5$_EhaT?!i{}h zP~{hE#=T)jUVFIfv12%Q&Ljvrca9)8v;j#gkVx@ASx8HRY#kZj-^ksbVRi@~_x49V zpclAe^dtbxS7Q+~tg*X=sxgabCPov7MF)zlml7Bgxld&(-%8mJ%D;4 zZGApua@Bhf&L{w`sJ|_5xU+S=wR1x~bKP_SpShp#5)cXEy>}LScZ-iYKPL=n@nKLT zi1C5~zm|A@K>2w-c!XJA_yIs4M(ni9bh~(E2+O1&rrbZuByeGY3Uu zQKU#ASNUsVao5Lc#})2}zwO?F6G!wTtN!m9S)$6J?V9#jq-sjj)|uyLH`^&>nlqBI ztyFTlkzThsXo@GCE71hsV02WvxGIxBgj3sT7f*s>zQ!q4`mIR<9egC1cIr&imDqzC zo|s9RalXo!45=JQhv(#vjyQhO%Ah7XO$i-o^|B=deD9M-aT>7${6rP|ZLCoc`xT&` zWCBMf5*!7wj)FW=G{`$h<$Og)$pRaXb#WbapD8`1YtwtL@I@kK@z8fl61R=6EtN&W z1nsU#71IRAhl;c7-NgEO{dXhxIejGGttFX5TseH-HMBi< z3t>4-#cNFQym#q{8~&=93Q>Ja^$^dEF^uYgWguimf3qzV{Z=46$Qp0wkN1Jjw~W(o zG;c<|Ro@EIh%VR-hsXwhi=?^dXl(awQH*v}{`KxXB$s62OZC`R^0SG<7M3hnok?X5 zN=5X>+t_WNo3;rGu_j-R*dUcCpJgd5#lLpEn<}-h>wNI z_u1!}A1y=eiMq|GF3QqX$=lqMcw%o1xu-Yb*wjyUZL9!iy3K!ebm^L}>uE4sXT$>E zXVI&(m||w))_Rk0K7peTw#p2a$f_;q7RDB9B^PY*)yU3xPou~s( zL3oj9CQfe~RAc<*qE<3Gw)1iKIsVAF*HXI|@HWcQ78)DcwDEX(_jI<_l?D+U{V89vT5eE598 zjXY|&{t0sCSI5KKjQ!G^Q7@-F3Hk3NJHFzI(V@<73E}n7zwq`X{DiKQeQ?%F!g{8j zF!Lu{EHN-}=7r7zj){^2SE9#rdzA?)ezK(&r?2HWDrm$coNj=-gvJr3UC(9%@^2Mi zy~u@&%1P?IIKLIDr8(WfVaRXA-t7zc{!~@(ub4R_$-!sM3TQJviw&&Z$|KHvDWUj6 z1r*>;9c~t+Mv%run8uo+5k3X#`M6s|*ikHlwL1}XN17*-o7PzzN&u!-QpqZ$GdDDG zw5c>2yg=l9VwXHXGrutJNvcP1@$(CGP<_`Wg^OINO?ry@6n*gAD7}}G6ZydCIdcD7 z9!4O*nl2EW;tyrNf1wX^8^7-**&qFk__(KoQxtG*P`1_al^VwZ^r6TZ0XtvN=9dtOexB7=wj*09<0l<4Z>yQ+ zVlYkUSS`?+OC0X*RU6&=JzF`bvEHGkdkHumFM-cCz6gOp-B|dPEmWG-7V34j^pxw5 z&YTnMosgD=I=fgF&1$D(o!WKe2b5hOHh3OAV3gj=ue=|GxA3XIiG&BKAip5~ + + + +Pin: Member List + + + + + + + + + +
+
+
CALLSTACK::CallStackInfoStruct Member List
+
+ + + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structCALLSTACK_1_1CallStackInfoStruct.html b/src/tracer/pintool/pin-3.13/doc/html/structCALLSTACK_1_1CallStackInfoStruct.html new file mode 100755 index 0000000..1c0ccdf --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structCALLSTACK_1_1CallStackInfoStruct.html @@ -0,0 +1,114 @@ + + + + +Pin: CALLSTACK::CallStackInfoStruct Struct Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
CALLSTACK::CallStackInfoStruct Struct Reference
+
+
+ +

List of all members.

+ + + + + + + + +

+Public Attributes

+char * func_name
+char * image_name
+char * file_name
+UINT32 rtn_id
+INT32 line
+INT32 column
+
The documentation for this struct was generated from the following file:
    +
  • call-stack.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structCALL__APPLICATION__FUNCTION__PARAM-members.html b/src/tracer/pintool/pin-3.13/doc/html/structCALL__APPLICATION__FUNCTION__PARAM-members.html new file mode 100755 index 0000000..e3c8fb6 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structCALL__APPLICATION__FUNCTION__PARAM-members.html @@ -0,0 +1,87 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+
+
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
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structCALL__APPLICATION__FUNCTION__PARAM.html b/src/tracer/pintool/pin-3.13/doc/html/structCALL__APPLICATION__FUNCTION__PARAM.html new file mode 100755 index 0000000..76dceef --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structCALL__APPLICATION__FUNCTION__PARAM.html @@ -0,0 +1,102 @@ + + + + +Pin: CALL_APPLICATION_FUNCTION_PARAM Struct Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+ +
+
CALL_APPLICATION_FUNCTION_PARAM Struct Reference
+
+
+ +

#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 ()

+

The documentation for this struct was generated from the following file:
    +
  • types_vmapi.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structCONTROLLER_1_1CACHELINE__COUNTER-members.html b/src/tracer/pintool/pin-3.13/doc/html/structCONTROLLER_1_1CACHELINE__COUNTER-members.html new file mode 100755 index 0000000..17399cf --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structCONTROLLER_1_1CACHELINE__COUNTER-members.html @@ -0,0 +1,94 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
CONTROLLER::CACHELINE_COUNTER Member List
+
+
+This is the complete list of members for CONTROLLER::CACHELINE_COUNTER, including all inherited members. + + +
_count (defined in CONTROLLER::CACHELINE_COUNTER)CONTROLLER::CACHELINE_COUNTER
_pad (defined in CONTROLLER::CACHELINE_COUNTER)CONTROLLER::CACHELINE_COUNTER
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structCONTROLLER_1_1CACHELINE__COUNTER.html b/src/tracer/pintool/pin-3.13/doc/html/structCONTROLLER_1_1CACHELINE__COUNTER.html new file mode 100755 index 0000000..a517a94 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structCONTROLLER_1_1CACHELINE__COUNTER.html @@ -0,0 +1,106 @@ + + + + +Pin: CONTROLLER::CACHELINE_COUNTER Struct Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
CONTROLLER::CACHELINE_COUNTER Struct Reference
+
+
+ +

List of all members.

+ + + + +

+Public Attributes

+UINT64 _count
+UINT8 _pad [56]
+
The documentation for this struct was generated from the following file:
    +
  • ialarm.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structCONTROLLER_1_1CHAIN__EVENT-members.html b/src/tracer/pintool/pin-3.13/doc/html/structCONTROLLER_1_1CHAIN__EVENT-members.html new file mode 100755 index 0000000..f0319c4 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structCONTROLLER_1_1CHAIN__EVENT-members.html @@ -0,0 +1,95 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
CONTROLLER::CHAIN_EVENT Member List
+
+
+This is the complete list of members for CONTROLLER::CHAIN_EVENT, including all inherited members. + + + +
chain_str (defined in CONTROLLER::CHAIN_EVENT)CONTROLLER::CHAIN_EVENT
event_handler (defined in CONTROLLER::CHAIN_EVENT)CONTROLLER::CHAIN_EVENT
tid (defined in CONTROLLER::CHAIN_EVENT)CONTROLLER::CHAIN_EVENT
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structCONTROLLER_1_1CHAIN__EVENT.html b/src/tracer/pintool/pin-3.13/doc/html/structCONTROLLER_1_1CHAIN__EVENT.html new file mode 100755 index 0000000..6cf35c1 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structCONTROLLER_1_1CHAIN__EVENT.html @@ -0,0 +1,108 @@ + + + + +Pin: CONTROLLER::CHAIN_EVENT Struct Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
CONTROLLER::CHAIN_EVENT Struct Reference
+
+
+ +

List of all members.

+ + + + + +

+Public Attributes

+string chain_str
+VOID * event_handler
+THREADID tid
+
The documentation for this struct was generated from the following file:
    +
  • control_manager.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structCONTROLLER_1_1CONTROL__HANDLER__PARAMS-members.html b/src/tracer/pintool/pin-3.13/doc/html/structCONTROLLER_1_1CONTROL__HANDLER__PARAMS-members.html new file mode 100755 index 0000000..2dde122 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structCONTROLLER_1_1CONTROL__HANDLER__PARAMS-members.html @@ -0,0 +1,95 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
CONTROLLER::CONTROL_HANDLER_PARAMS Member List
+
+ + + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structCONTROLLER_1_1CONTROL__HANDLER__PARAMS.html b/src/tracer/pintool/pin-3.13/doc/html/structCONTROLLER_1_1CONTROL__HANDLER__PARAMS.html new file mode 100755 index 0000000..ceb3c26 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structCONTROLLER_1_1CONTROL__HANDLER__PARAMS.html @@ -0,0 +1,108 @@ + + + + +Pin: CONTROLLER::CONTROL_HANDLER_PARAMS Struct Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
CONTROLLER::CONTROL_HANDLER_PARAMS Struct Reference
+
+
+ +

List of all members.

+ + + + + +

+Public Attributes

+CONTROL_HANDLER handler
+VOID * val
+bool passContext
+
The documentation for this struct was generated from the following file:
    +
  • control_manager.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structCONTROLLER_1_1CONTROL__REGION__INFO-members.html b/src/tracer/pintool/pin-3.13/doc/html/structCONTROLLER_1_1CONTROL__REGION__INFO-members.html new file mode 100755 index 0000000..841587f --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structCONTROLLER_1_1CONTROL__REGION__INFO-members.html @@ -0,0 +1,94 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
CONTROLLER::CONTROL_REGION_INFO Member List
+
+
+This is the complete list of members for CONTROLLER::CONTROL_REGION_INFO, including all inherited members. + + +
regionId (defined in CONTROLLER::CONTROL_REGION_INFO)CONTROLLER::CONTROL_REGION_INFO
regionName (defined in CONTROLLER::CONTROL_REGION_INFO)CONTROLLER::CONTROL_REGION_INFO
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structCONTROLLER_1_1CONTROL__REGION__INFO.html b/src/tracer/pintool/pin-3.13/doc/html/structCONTROLLER_1_1CONTROL__REGION__INFO.html new file mode 100755 index 0000000..4acdc83 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structCONTROLLER_1_1CONTROL__REGION__INFO.html @@ -0,0 +1,106 @@ + + + + +Pin: CONTROLLER::CONTROL_REGION_INFO Struct Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
CONTROLLER::CONTROL_REGION_INFO Struct Reference
+
+
+ +

List of all members.

+ + + + +

+Public Attributes

+string regionName
+UINT32 regionId
+
The documentation for this struct was generated from the following file:
    +
  • control_manager.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structDEBUGGER__SHELL_1_1STARTUP__ARGUMENTS-members.html b/src/tracer/pintool/pin-3.13/doc/html/structDEBUGGER__SHELL_1_1STARTUP__ARGUMENTS-members.html new file mode 100755 index 0000000..e3dfee5 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structDEBUGGER__SHELL_1_1STARTUP__ARGUMENTS-members.html @@ -0,0 +1,99 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
DEBUGGER_SHELL::STARTUP_ARGUMENTS Member List
+
+ + + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structDEBUGGER__SHELL_1_1STARTUP__ARGUMENTS.html b/src/tracer/pintool/pin-3.13/doc/html/structDEBUGGER__SHELL_1_1STARTUP__ARGUMENTS.html new file mode 100755 index 0000000..bf39fd9 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structDEBUGGER__SHELL_1_1STARTUP__ARGUMENTS.html @@ -0,0 +1,145 @@ + + + + +Pin: DEBUGGER_SHELL::STARTUP_ARGUMENTS Struct Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
DEBUGGER_SHELL::STARTUP_ARGUMENTS Struct Reference
+
+
+ +

#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

+ +
+ +
+

Tells the relative position of instrumentation added by the debugger shell for "before" and "after" instrumentation.

+ +
+
+ +
+ +
+

Allows client to override some instrumentation.

+ +
+
+
The documentation for this struct was generated from the following file:
    +
  • debugger-shell.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structDEBUG__CONNECTION__INFO-members.html b/src/tracer/pintool/pin-3.13/doc/html/structDEBUG__CONNECTION__INFO-members.html new file mode 100755 index 0000000..385cf55 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structDEBUG__CONNECTION__INFO-members.html @@ -0,0 +1,89 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+
+
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
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structDEBUG__CONNECTION__INFO.html b/src/tracer/pintool/pin-3.13/doc/html/structDEBUG__CONNECTION__INFO.html new file mode 100755 index 0000000..c488b1f --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structDEBUG__CONNECTION__INFO.html @@ -0,0 +1,108 @@ + + + + +Pin: DEBUG_CONNECTION_INFO Struct Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+ +
+
DEBUG_CONNECTION_INFO Struct Reference
+
+
+ +

#include <types_vmapi.H>

+ +

List of all members.

+ + + + + + + +

+Public Attributes

+DEBUG_CONNECTION_TYPE _type
+BOOL _stopAtEntry
+union {
   struct _tcpServerStruct   _tcpServer
}; 
+

Detailed Description

+

Information that an external application level debugger needs in order to connect to Pin.

+

The documentation for this struct was generated from the following file:
    +
  • types_vmapi.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structDEBUG__MODE-members.html b/src/tracer/pintool/pin-3.13/doc/html/structDEBUG__MODE-members.html new file mode 100755 index 0000000..b260c9f --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structDEBUG__MODE-members.html @@ -0,0 +1,89 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+
+
DEBUG_MODE Member List
+
+
+This is the complete list of members for DEBUG_MODE, including all inherited members. + + + +
_optionsDEBUG_MODE
_tcpClientDEBUG_MODE
_typeDEBUG_MODE
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structDEBUG__MODE.html b/src/tracer/pintool/pin-3.13/doc/html/structDEBUG__MODE.html new file mode 100755 index 0000000..9534c50 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structDEBUG__MODE.html @@ -0,0 +1,123 @@ + + + + +Pin: DEBUG_MODE Struct Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+ +
+
DEBUG_MODE Struct Reference
+
+
+ +

#include <types_vmapi.H>

+ +

List of all members.

+ + + + + + + +

+Public Attributes

+DEBUG_CONNECTION_TYPE _type
+DEBUG_MODE_OPTIONS _options
+union {
   struct _tcpClientStruct   _tcpClient
}; 
+

Detailed Description

+

Information about the application debugging mode.

+

Member Data Documentation

+ +
+ +
+

Information for DEBUG_CONNECTION_TYPE_TCP_CLIENT.

+ +
+
+
The documentation for this struct was generated from the following file:
    +
  • types_vmapi.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1DECSTR-members.html b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1DECSTR-members.html new file mode 100755 index 0000000..c39b9be --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1DECSTR-members.html @@ -0,0 +1,95 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
LEVEL_BASE::DECSTR Member List
+
+
+This is the complete list of members for LEVEL_BASE::DECSTR, including all inherited members. + + + +
_w (defined in LEVEL_BASE::DECSTR)LEVEL_BASE::DECSTR
DECSTR(UINT32 width=0) (defined in LEVEL_BASE::DECSTR)LEVEL_BASE::DECSTR [inline]
operator()(const T &t) const (defined in LEVEL_BASE::DECSTR)LEVEL_BASE::DECSTR [inline]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1DECSTR.html b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1DECSTR.html new file mode 100755 index 0000000..12d733a --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1DECSTR.html @@ -0,0 +1,114 @@ + + + + +Pin: LEVEL_BASE::DECSTR Struct Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
LEVEL_BASE::DECSTR Struct Reference
+
+
+ +

List of all members.

+ + + + + + + +

+Public Member Functions

DECSTR (UINT32 width=0)
+template<typename T >
std::string operator() (const T &t) const

+Public Attributes

+UINT32 _w
+

Detailed Description

+

Decimal-to-string conversion object.

+

The documentation for this struct was generated from the following file:
    +
  • util.cpp
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1FLTSTR-members.html b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1FLTSTR-members.html new file mode 100755 index 0000000..e4c0ee2 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1FLTSTR-members.html @@ -0,0 +1,96 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
LEVEL_BASE::FLTSTR Member List
+
+
+This is the complete list of members for LEVEL_BASE::FLTSTR, including all inherited members. + + + + +
_p (defined in LEVEL_BASE::FLTSTR)LEVEL_BASE::FLTSTR
_w (defined in LEVEL_BASE::FLTSTR)LEVEL_BASE::FLTSTR
FLTSTR(UINT32 prec=0, UINT32 width=0) (defined in LEVEL_BASE::FLTSTR)LEVEL_BASE::FLTSTR [inline]
operator()(const T &t) const (defined in LEVEL_BASE::FLTSTR)LEVEL_BASE::FLTSTR [inline]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1FLTSTR.html b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1FLTSTR.html new file mode 100755 index 0000000..2fda3e6 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1FLTSTR.html @@ -0,0 +1,116 @@ + + + + +Pin: LEVEL_BASE::FLTSTR Struct Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
LEVEL_BASE::FLTSTR Struct Reference
+
+
+ +

List of all members.

+ + + + + + + + +

+Public Member Functions

FLTSTR (UINT32 prec=0, UINT32 width=0)
+template<typename T >
std::string operator() (const T &t) const

+Public Attributes

+UINT32 _p
+UINT32 _w
+

Detailed Description

+

Floating-to-string conversion object.

+

The documentation for this struct was generated from the following file:
    +
  • util.cpp
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1HEXSTR-members.html b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1HEXSTR-members.html new file mode 100755 index 0000000..4b2b35d --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1HEXSTR-members.html @@ -0,0 +1,95 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
LEVEL_BASE::HEXSTR Member List
+
+
+This is the complete list of members for LEVEL_BASE::HEXSTR, including all inherited members. + + + +
_w (defined in LEVEL_BASE::HEXSTR)LEVEL_BASE::HEXSTR
HEXSTR(UINT32 width=0) (defined in LEVEL_BASE::HEXSTR)LEVEL_BASE::HEXSTR [inline]
operator()(const T &t) const (defined in LEVEL_BASE::HEXSTR)LEVEL_BASE::HEXSTR [inline]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1HEXSTR.html b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1HEXSTR.html new file mode 100755 index 0000000..1a8820e --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1HEXSTR.html @@ -0,0 +1,114 @@ + + + + +Pin: LEVEL_BASE::HEXSTR Struct Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
LEVEL_BASE::HEXSTR Struct Reference
+
+
+ +

List of all members.

+ + + + + + + +

+Public Member Functions

HEXSTR (UINT32 width=0)
+template<typename T >
std::string operator() (const T &t) const

+Public Attributes

+UINT32 _w
+

Detailed Description

+

Hexadecimal-to-string conversion object.

+

The documentation for this struct was generated from the following file:
    +
  • util.cpp
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1ImageLoaderInfo-members.html b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1ImageLoaderInfo-members.html new file mode 100755 index 0000000..54175b4 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1ImageLoaderInfo-members.html @@ -0,0 +1,108 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
LEVEL_BASE::ImageLoaderInfo Member List
+
+ + + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1ImageLoaderInfo.html b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1ImageLoaderInfo.html new file mode 100755 index 0000000..81b0e8a --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1ImageLoaderInfo.html @@ -0,0 +1,135 @@ + + + + +Pin: LEVEL_BASE::ImageLoaderInfo Struct Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
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:
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1LINUX__LOADER__IMAGE__INFO-members.html b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1LINUX__LOADER__IMAGE__INFO-members.html new file mode 100755 index 0000000..e09b1fa --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1LINUX__LOADER__IMAGE__INFO-members.html @@ -0,0 +1,96 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
LEVEL_BASE::LINUX_LOADER_IMAGE_INFO Member List
+
+ + + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1LINUX__LOADER__IMAGE__INFO.html b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1LINUX__LOADER__IMAGE__INFO.html new file mode 100755 index 0000000..70ce010 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1LINUX__LOADER__IMAGE__INFO.html @@ -0,0 +1,107 @@ + + + + +Pin: LEVEL_BASE::LINUX_LOADER_IMAGE_INFO Struct Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
LEVEL_BASE::LINUX_LOADER_IMAGE_INFO Struct Reference
+
+
+ +

List of all members.

+ + + + + + +

+Public Attributes

+char * name
+ADDRINT lm
+ADDRINT l_ld
+ADDRINT l_addr
+
The documentation for this struct was generated from the following file:
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1PIN__LOCK-members.html b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1PIN__LOCK-members.html new file mode 100755 index 0000000..d7d6ad0 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1PIN__LOCK-members.html @@ -0,0 +1,94 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
LEVEL_BASE::PIN_LOCK Member List
+
+
+This is the complete list of members for LEVEL_BASE::PIN_LOCK, including all inherited members. + + +
_lockLEVEL_BASE::PIN_LOCK
_ownerLEVEL_BASE::PIN_LOCK
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1PIN__LOCK.html b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1PIN__LOCK.html new file mode 100755 index 0000000..de82c77 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1PIN__LOCK.html @@ -0,0 +1,108 @@ + + + + +Pin: LEVEL_BASE::PIN_LOCK Struct Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
LEVEL_BASE::PIN_LOCK Struct Reference
+
+
+ +

List of all members.

+ + + + +

+Public Attributes

+PINVM::PINSYNC_SAFEPOD_LOCK _lock
+INT32 _owner
+

Detailed Description

+

A simple non-recursive lock.

+

The documentation for this struct was generated from the following file:
    +
  • lock.cpp
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1REGDEF__ENTRY-members.html b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1REGDEF__ENTRY-members.html new file mode 100755 index 0000000..841cbb4 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1REGDEF__ENTRY-members.html @@ -0,0 +1,101 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
LEVEL_BASE::REGDEF_ENTRY Member List
+
+
+This is the complete list of members for LEVEL_BASE::REGDEF_ENTRY, including all inherited members. + + + + + + + + + +
reg (defined in LEVEL_BASE::REGDEF_ENTRY)LEVEL_BASE::REGDEF_ENTRY
regAllocType (defined in LEVEL_BASE::REGDEF_ENTRY)LEVEL_BASE::REGDEF_ENTRY
regClassBitMap (defined in LEVEL_BASE::REGDEF_ENTRY)LEVEL_BASE::REGDEF_ENTRY
regFullName (defined in LEVEL_BASE::REGDEF_ENTRY)LEVEL_BASE::REGDEF_ENTRY
regMachineName (defined in LEVEL_BASE::REGDEF_ENTRY)LEVEL_BASE::REGDEF_ENTRY
regPinName (defined in LEVEL_BASE::REGDEF_ENTRY)LEVEL_BASE::REGDEF_ENTRY
regSpillSize (defined in LEVEL_BASE::REGDEF_ENTRY)LEVEL_BASE::REGDEF_ENTRY
regSubClassBitMap (defined in LEVEL_BASE::REGDEF_ENTRY)LEVEL_BASE::REGDEF_ENTRY
regWidth (defined in LEVEL_BASE::REGDEF_ENTRY)LEVEL_BASE::REGDEF_ENTRY
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1REGDEF__ENTRY.html b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1REGDEF__ENTRY.html new file mode 100755 index 0000000..928a975 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__BASE_1_1REGDEF__ENTRY.html @@ -0,0 +1,122 @@ + + + + +Pin: LEVEL_BASE::REGDEF_ENTRY Struct Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
LEVEL_BASE::REGDEF_ENTRY Struct Reference
+
+
+ +

List of all members.

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

+Public Attributes

+REG reg
+UINT32 regSpillSize
+REGWIDTH regWidth
+UINT64 regClassBitMap
+UINT64 regSubClassBitMap
+REG_ALLOC_TYPE regAllocType
+REG regFullName
+REG regMachineName
+REG regPinName
+

Detailed Description

+

Information about a register. The _regDefTable must contain one entry for each unique register defined in the REG enum. This entry must be in the same row of the _regDefTable as the register is in the REG enum.

+

The documentation for this struct was generated from the following file:
    +
  • reg_ia32.cpp
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__CORE_1_1EDG__STRUCT__BASE-members.html b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__CORE_1_1EDG__STRUCT__BASE-members.html new file mode 100755 index 0000000..7e19338 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__CORE_1_1EDG__STRUCT__BASE-members.html @@ -0,0 +1,105 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
LEVEL_CORE::EDG_STRUCT_BASE Member List
+
+ + + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__CORE_1_1EDG__STRUCT__BASE.html b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__CORE_1_1EDG__STRUCT__BASE.html new file mode 100755 index 0000000..39313a4 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__CORE_1_1EDG__STRUCT__BASE.html @@ -0,0 +1,130 @@ + + + + +Pin: LEVEL_CORE::EDG_STRUCT_BASE Struct Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
LEVEL_CORE::EDG_STRUCT_BASE Struct Reference
+
+
+ +

List of all members.

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

+Public Attributes

+EDG_TYPE type:5
+EDG_STATE state:4
+UINT32 allocated:1
+UINT32 linked:1
+UINT32 original:1
+UINT32 mark:1
+UINT32 mark2:1
+INT32 weight
+EXT ext
+EDG next_succ
+EDG next_pred
+BBL bbl_src
+BBL bbl_dst
+

Detailed Description

+

main EDG stripe

+

The documentation for this struct was generated from the following file:
    +
  • edg.cpp
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__CORE_1_1IMG__REGION-members.html b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__CORE_1_1IMG__REGION-members.html new file mode 100755 index 0000000..55bcaaf --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__CORE_1_1IMG__REGION-members.html @@ -0,0 +1,95 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
LEVEL_CORE::IMG_REGION Member List
+
+
+This is the complete list of members for LEVEL_CORE::IMG_REGION, including all inherited members. + + + +
_high_addr (defined in LEVEL_CORE::IMG_REGION)LEVEL_CORE::IMG_REGION
_low_addr (defined in LEVEL_CORE::IMG_REGION)LEVEL_CORE::IMG_REGION
_region_name (defined in LEVEL_CORE::IMG_REGION)LEVEL_CORE::IMG_REGION
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__CORE_1_1IMG__REGION.html b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__CORE_1_1IMG__REGION.html new file mode 100755 index 0000000..4398647 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__CORE_1_1IMG__REGION.html @@ -0,0 +1,110 @@ + + + + +Pin: LEVEL_CORE::IMG_REGION Struct Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
LEVEL_CORE::IMG_REGION Struct Reference
+
+
+ +

List of all members.

+ + + + + +

+Public Attributes

+char _region_name [16]
+ADDRINT _low_addr
+ADDRINT _high_addr
+

Detailed Description

+

IMG builder, used to check that exception info is not mixed within one image

+

The documentation for this struct was generated from the following file:
    +
  • img.cpp
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__CORE_1_1MEM__ADDR__EXP-members.html b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__CORE_1_1MEM__ADDR__EXP-members.html new file mode 100755 index 0000000..1b177f9 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__CORE_1_1MEM__ADDR__EXP-members.html @@ -0,0 +1,105 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
LEVEL_CORE::MEM_ADDR_EXP Member List
+
+
+This is the complete list of members for LEVEL_CORE::MEM_ADDR_EXP, including all inherited members. + + + + + + + + + + + + + +
Base() const LEVEL_CORE::MEM_ADDR_EXP [inline]
Base(REG base) (defined in LEVEL_CORE::MEM_ADDR_EXP)LEVEL_CORE::MEM_ADDR_EXP [inline]
Evaluate(ADDRINT baseVal, ADDRINT indexVal) const LEVEL_CORE::MEM_ADDR_EXP [inline]
EvaluateOn(const T &ctxt) const LEVEL_CORE::MEM_ADDR_EXP [inline]
Index() const (defined in LEVEL_CORE::MEM_ADDR_EXP)LEVEL_CORE::MEM_ADDR_EXP [inline]
Index(REG index) (defined in LEVEL_CORE::MEM_ADDR_EXP)LEVEL_CORE::MEM_ADDR_EXP [inline]
Init(REG base=REG_INVALID(), INT32 offset=0, REG index=REG_INVALID(), UINT32 scale=0)LEVEL_CORE::MEM_ADDR_EXP [inline]
IsNull() const LEVEL_CORE::MEM_ADDR_EXP [inline]
Offset() const (defined in LEVEL_CORE::MEM_ADDR_EXP)LEVEL_CORE::MEM_ADDR_EXP [inline]
Offset(INT32 offset) (defined in LEVEL_CORE::MEM_ADDR_EXP)LEVEL_CORE::MEM_ADDR_EXP [inline]
Scale() const (defined in LEVEL_CORE::MEM_ADDR_EXP)LEVEL_CORE::MEM_ADDR_EXP [inline]
Scale(UINT32 scale) (defined in LEVEL_CORE::MEM_ADDR_EXP)LEVEL_CORE::MEM_ADDR_EXP [inline]
ToString() const LEVEL_CORE::MEM_ADDR_EXP [inline]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__CORE_1_1MEM__ADDR__EXP.html b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__CORE_1_1MEM__ADDR__EXP.html new file mode 100755 index 0000000..ec1098e --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__CORE_1_1MEM__ADDR__EXP.html @@ -0,0 +1,266 @@ + + + + +Pin: LEVEL_CORE::MEM_ADDR_EXP Struct Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
LEVEL_CORE::MEM_ADDR_EXP Struct Reference
+
+
+ +

List of all members.

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

+Public Member Functions

REG Base () const
+REG Index () const
+UINT32 Scale () const
+INT32 Offset () const
+MEM_ADDR_EXPBase (REG base)
+MEM_ADDR_EXPIndex (REG index)
+MEM_ADDR_EXPScale (UINT32 scale)
+MEM_ADDR_EXPOffset (INT32 offset)
MEM_ADDR_EXPInit (REG base=REG_INVALID(), INT32 offset=0, REG index=REG_INVALID(), UINT32 scale=0)
BOOL IsNull () const
ADDRINT Evaluate (ADDRINT baseVal, ADDRINT indexVal) const
template<class T >
ADDRINT EvaluateOn (const T &ctxt) const
std::string ToString () const
+

Detailed Description

+

Expression that evaluates memory address for a given base and index registers, offset and scale (similar to ia32(e) memory operand)

+
Note:
this structure is intentionally only 64 bits wide. It is used in memory-critical objects, so do not make it bigger.
+

Member Function Documentation

+ +
+
+ + + + + + + +
REG LEVEL_CORE::MEM_ADDR_EXP::Base () const [inline]
+
+
+

Accessors

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
ADDRINT LEVEL_CORE::MEM_ADDR_EXP::Evaluate (ADDRINT baseVal,
ADDRINT indexVal 
) const [inline]
+
+
+

Evaluate expression for given values of base and index registers

+ +
+
+ +
+
+
+template<class T >
+ + + + + + + + +
ADDRINT LEVEL_CORE::MEM_ADDR_EXP::EvaluateOn (const T & ctxt) const [inline]
+
+
+

Template function that evaluates expression on a context object of class T that implements method ADDRINT T::GetContextReg(REG reg) const

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MEM_ADDR_EXP& LEVEL_CORE::MEM_ADDR_EXP::Init (REG base = REG_INVALID(),
INT32 offset = 0,
REG index = REG_INVALID(),
UINT32 scale = 0 
) [inline]
+
+
+

Initialize (construct) the expression. Default arguments specify expression which is always evaluated to NULL

+ +
+
+ +
+
+ + + + + + + +
BOOL LEVEL_CORE::MEM_ADDR_EXP::IsNull () const [inline]
+
+
+

Return TRUE if expression is always evaluated to NULL

+ +
+
+ +
+
+ + + + + + + +
std::string LEVEL_CORE::MEM_ADDR_EXP::ToString () const [inline]
+
+
+

Return string representation of the expression

+ +
+
+
The documentation for this struct was generated from the following file:
    +
  • val.cpp
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1IMAGE__INIT__SESSION-members.html b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1IMAGE__INIT__SESSION-members.html new file mode 100755 index 0000000..5e42f33 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1IMAGE__INIT__SESSION-members.html @@ -0,0 +1,118 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
LEVEL_PINCLIENT::IMAGE_INIT_SESSION Member List
+
+
+This is the complete list of members for LEVEL_PINCLIENT::IMAGE_INIT_SESSION, including all inherited members. + + + + + + + + + + + + + + + + + + + + + + + + + + +
_DtDebug (defined in LEVEL_PINCLIENT::IMAGE_INIT_SESSION)LEVEL_PINCLIENT::IMAGE_INIT_SESSION
_DtDebugWasAccessed (defined in LEVEL_PINCLIENT::IMAGE_INIT_SESSION)LEVEL_PINCLIENT::IMAGE_INIT_SESSION
_interpImg (defined in LEVEL_PINCLIENT::IMAGE_INIT_SESSION)LEVEL_PINCLIENT::IMAGE_INIT_SESSION
_jitLoaderContext (defined in LEVEL_PINCLIENT::IMAGE_INIT_SESSION)LEVEL_PINCLIENT::IMAGE_INIT_SESSION
_litLoaderThreadId (defined in LEVEL_PINCLIENT::IMAGE_INIT_SESSION)LEVEL_PINCLIENT::IMAGE_INIT_SESSION
_loaderBreakAddress (defined in LEVEL_PINCLIENT::IMAGE_INIT_SESSION)LEVEL_PINCLIENT::IMAGE_INIT_SESSION
_loaderBreakProbeSet (defined in LEVEL_PINCLIENT::IMAGE_INIT_SESSION)LEVEL_PINCLIENT::IMAGE_INIT_SESSION
_loaderInfo (defined in LEVEL_PINCLIENT::IMAGE_INIT_SESSION)LEVEL_PINCLIENT::IMAGE_INIT_SESSION
_mainImg (defined in LEVEL_PINCLIENT::IMAGE_INIT_SESSION)LEVEL_PINCLIENT::IMAGE_INIT_SESSION
_mainImgIsLoader (defined in LEVEL_PINCLIENT::IMAGE_INIT_SESSION)LEVEL_PINCLIENT::IMAGE_INIT_SESSION
_vdsoImg (defined in LEVEL_PINCLIENT::IMAGE_INIT_SESSION)LEVEL_PINCLIENT::IMAGE_INIT_SESSION
_x32 (defined in LEVEL_PINCLIENT::IMAGE_INIT_SESSION)LEVEL_PINCLIENT::IMAGE_INIT_SESSION
IMAGE_INIT_SESSION() (defined in LEVEL_PINCLIENT::IMAGE_INIT_SESSION)LEVEL_PINCLIENT::IMAGE_INIT_SESSION [inline]
LoaderSupportsRtConsistent() (defined in LEVEL_PINCLIENT::IMAGE_INIT_SESSION)LEVEL_PINCLIENT::IMAGE_INIT_SESSION
m_instance (defined in LEVEL_PINCLIENT::IMAGE_INIT_SESSION)LEVEL_PINCLIENT::IMAGE_INIT_SESSION [static]
MainImgIsLoader() (defined in LEVEL_PINCLIENT::IMAGE_INIT_SESSION)LEVEL_PINCLIENT::IMAGE_INIT_SESSION
pf_rbrk (defined in LEVEL_PINCLIENT::IMAGE_INIT_SESSION)LEVEL_PINCLIENT::IMAGE_INIT_SESSION
ProbeLoaderBreak() (defined in LEVEL_PINCLIENT::IMAGE_INIT_SESSION)LEVEL_PINCLIENT::IMAGE_INIT_SESSION
ProbeMainImgEntryPoint(IMG img, VOID *arg) (defined in LEVEL_PINCLIENT::IMAGE_INIT_SESSION)LEVEL_PINCLIENT::IMAGE_INIT_SESSION [static]
ProcessInterpreter() (defined in LEVEL_PINCLIENT::IMAGE_INIT_SESSION)LEVEL_PINCLIENT::IMAGE_INIT_SESSION
ProcessLoaderAsMainImg() (defined in LEVEL_PINCLIENT::IMAGE_INIT_SESSION)LEVEL_PINCLIENT::IMAGE_INIT_SESSION
ProcessVDSO() (defined in LEVEL_PINCLIENT::IMAGE_INIT_SESSION)LEVEL_PINCLIENT::IMAGE_INIT_SESSION
Reset() (defined in LEVEL_PINCLIENT::IMAGE_INIT_SESSION)LEVEL_PINCLIENT::IMAGE_INIT_SESSION
SetDtDebug() (defined in LEVEL_PINCLIENT::IMAGE_INIT_SESSION)LEVEL_PINCLIENT::IMAGE_INIT_SESSION
SetLoaderInfo() (defined in LEVEL_PINCLIENT::IMAGE_INIT_SESSION)LEVEL_PINCLIENT::IMAGE_INIT_SESSION
SetLoaderInfoAndBreak() (defined in LEVEL_PINCLIENT::IMAGE_INIT_SESSION)LEVEL_PINCLIENT::IMAGE_INIT_SESSION
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1IMAGE__INIT__SESSION.html b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1IMAGE__INIT__SESSION.html new file mode 100755 index 0000000..04d92dc --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1IMAGE__INIT__SESSION.html @@ -0,0 +1,161 @@ + + + + +Pin: LEVEL_PINCLIENT::IMAGE_INIT_SESSION Struct Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
LEVEL_PINCLIENT::IMAGE_INIT_SESSION Struct Reference
+
+
+ +

List of all members.

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

+Public Member Functions

+VOID Reset ()
+VOID SetLoaderInfo ()
+BOOL SetLoaderInfoAndBreak ()
+VOID SetDtDebug ()
+VOID ProbeLoaderBreak ()
+VOID ProcessInterpreter ()
+VOID ProcessVDSO ()
+BOOL MainImgIsLoader ()
+VOID ProcessLoaderAsMainImg ()
+BOOL LoaderSupportsRtConsistent ()

+Static Public Member Functions

+static VOID ProbeMainImgEntryPoint (IMG img, VOID *arg)

+Public Attributes

+IMG _mainImg
+IMG _interpImg
+IMG _vdsoImg
+BOOL _x32
+const DYNREC * _DtDebug
+struct r_debug * _loaderInfo
+ADDRINT _loaderBreakAddress
+BOOL _loaderBreakProbeSet
+BOOL _mainImgIsLoader
+rbrk_ft pf_rbrk
+const CONTEXT_jitLoaderContext
+THREADID _litLoaderThreadId
+BOOL _DtDebugWasAccessed

+Static Public Attributes

+static IMAGE_INIT_SESSION m_instance
+
The documentation for this struct was generated from the following file:
    +
  • image_elf.cpp
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1ImageLoadArgs-members.html b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1ImageLoadArgs-members.html new file mode 100755 index 0000000..f5e72d8 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1ImageLoadArgs-members.html @@ -0,0 +1,96 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
LEVEL_PINCLIENT::ImageLoadArgs Member List
+
+ + + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1ImageLoadArgs.html b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1ImageLoadArgs.html new file mode 100755 index 0000000..2373e0f --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1ImageLoadArgs.html @@ -0,0 +1,110 @@ + + + + +Pin: LEVEL_PINCLIENT::ImageLoadArgs Struct Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
LEVEL_PINCLIENT::ImageLoadArgs Struct Reference
+
+
+ +

List of all members.

+ + + + + + +

+Public Attributes

+std::string filename
+ADDRINT load_offset
+void * loader_info
+void * arg
+
The documentation for this struct was generated from the following file:
    +
  • image_elf.cpp
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1OUTSIDE__TARGET-members.html b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1OUTSIDE__TARGET-members.html new file mode 100755 index 0000000..72340c8 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1OUTSIDE__TARGET-members.html @@ -0,0 +1,94 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
LEVEL_PINCLIENT::OUTSIDE_TARGET Member List
+
+
+This is the complete list of members for LEVEL_PINCLIENT::OUTSIDE_TARGET, including all inherited members. + + +
boundary (defined in LEVEL_PINCLIENT::OUTSIDE_TARGET)LEVEL_PINCLIENT::OUTSIDE_TARGET
branchTarget (defined in LEVEL_PINCLIENT::OUTSIDE_TARGET)LEVEL_PINCLIENT::OUTSIDE_TARGET
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1OUTSIDE__TARGET.html b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1OUTSIDE__TARGET.html new file mode 100755 index 0000000..931cf3c --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1OUTSIDE__TARGET.html @@ -0,0 +1,106 @@ + + + + +Pin: LEVEL_PINCLIENT::OUTSIDE_TARGET Struct Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
LEVEL_PINCLIENT::OUTSIDE_TARGET Struct Reference
+
+
+ +

List of all members.

+ + + + +

+Public Attributes

+ADDRINT branchTarget
+ADDRINT boundary
+
The documentation for this struct was generated from the following file:
    +
  • image.cpp
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1OUTSIDE__TARGET__MEM__RANGE-members.html b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1OUTSIDE__TARGET__MEM__RANGE-members.html new file mode 100755 index 0000000..f88e42a --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1OUTSIDE__TARGET__MEM__RANGE-members.html @@ -0,0 +1,94 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
LEVEL_PINCLIENT::OUTSIDE_TARGET_MEM_RANGE Member List
+
+ + + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1OUTSIDE__TARGET__MEM__RANGE.html b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1OUTSIDE__TARGET__MEM__RANGE.html new file mode 100755 index 0000000..20b9ab3 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1OUTSIDE__TARGET__MEM__RANGE.html @@ -0,0 +1,106 @@ + + + + +Pin: LEVEL_PINCLIENT::OUTSIDE_TARGET_MEM_RANGE Struct Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
LEVEL_PINCLIENT::OUTSIDE_TARGET_MEM_RANGE Struct Reference
+
+
+ +

List of all members.

+ + + + +

+Public Attributes

+MemRange memRange
+ADDRINT boundary
+
The documentation for this struct was generated from the following file:
    +
  • image.cpp
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1PIN__CLIENT__MUTEX-members.html b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1PIN__CLIENT__MUTEX-members.html new file mode 100755 index 0000000..bd75137 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1PIN__CLIENT__MUTEX-members.html @@ -0,0 +1,96 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
LEVEL_PINCLIENT::PIN_CLIENT_MUTEX Member List
+
+
+This is the complete list of members for LEVEL_PINCLIENT::PIN_CLIENT_MUTEX, including all inherited members. + + + + +
_clientLock (defined in LEVEL_PINCLIENT::PIN_CLIENT_MUTEX)LEVEL_PINCLIENT::PIN_CLIENT_MUTEX
InitLock() (defined in LEVEL_PINCLIENT::PIN_CLIENT_MUTEX)LEVEL_PINCLIENT::PIN_CLIENT_MUTEX
PIN_CLIENT_MUTEX() (defined in LEVEL_PINCLIENT::PIN_CLIENT_MUTEX)LEVEL_PINCLIENT::PIN_CLIENT_MUTEX [inline]
~PIN_CLIENT_MUTEX() (defined in LEVEL_PINCLIENT::PIN_CLIENT_MUTEX)LEVEL_PINCLIENT::PIN_CLIENT_MUTEX [inline]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1PIN__CLIENT__MUTEX.html b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1PIN__CLIENT__MUTEX.html new file mode 100755 index 0000000..d23dc3c --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1PIN__CLIENT__MUTEX.html @@ -0,0 +1,109 @@ + + + + +Pin: LEVEL_PINCLIENT::PIN_CLIENT_MUTEX Struct Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
LEVEL_PINCLIENT::PIN_CLIENT_MUTEX Struct Reference
+
+
+ +

List of all members.

+ + + + + +

+Public Member Functions

+VOID InitLock ()

+Public Attributes

+COMPLEXLOCK_INTERFACE * _clientLock
+
The documentation for this struct was generated from the following file:
    +
  • pin_client.cpp
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1SymbolDebugInfo-members.html b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1SymbolDebugInfo-members.html new file mode 100755 index 0000000..282c702 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1SymbolDebugInfo-members.html @@ -0,0 +1,95 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
LEVEL_PINCLIENT::SymbolDebugInfo Member List
+
+
+This is the complete list of members for LEVEL_PINCLIENT::SymbolDebugInfo, including all inherited members. + + + +
name (defined in LEVEL_PINCLIENT::SymbolDebugInfo)LEVEL_PINCLIENT::SymbolDebugInfo
range (defined in LEVEL_PINCLIENT::SymbolDebugInfo)LEVEL_PINCLIENT::SymbolDebugInfo
SymbolDebugInfo(std::string sym_name, ADDRINT sym_base, size_t sym_size) (defined in LEVEL_PINCLIENT::SymbolDebugInfo)LEVEL_PINCLIENT::SymbolDebugInfo [inline]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1SymbolDebugInfo.html b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1SymbolDebugInfo.html new file mode 100755 index 0000000..0a45afe --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structLEVEL__PINCLIENT_1_1SymbolDebugInfo.html @@ -0,0 +1,113 @@ + + + + +Pin: LEVEL_PINCLIENT::SymbolDebugInfo Struct Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
LEVEL_PINCLIENT::SymbolDebugInfo Struct Reference
+
+
+ +

List of all members.

+ + + + + + +

+Public Member Functions

SymbolDebugInfo (std::string sym_name, ADDRINT sym_base, size_t sym_size)

+Public Attributes

+std::string name
+SymbolAddressRange range
+

Detailed Description

+

Represents debug info for a symbol: symbol name and address range

+

The documentation for this struct was generated from the following file:
    +
  • image.cpp
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structPARG__T-members.html b/src/tracer/pintool/pin-3.13/doc/html/structPARG__T-members.html new file mode 100755 index 0000000..4dc5db9 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structPARG__T-members.html @@ -0,0 +1,88 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+
+
PARG_T Member List
+
+
+This is the complete list of members for PARG_T, including all inherited members. + + +
_parg (defined in PARG_T)PARG_T
_size (defined in PARG_T)PARG_T
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structPARG__T.html b/src/tracer/pintool/pin-3.13/doc/html/structPARG__T.html new file mode 100755 index 0000000..e277026 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structPARG__T.html @@ -0,0 +1,100 @@ + + + + +Pin: PARG_T Struct Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+ +
+
PARG_T Struct Reference
+
+
+ +

List of all members.

+ + + + +

+Public Attributes

+PARG_TYPE _parg
+size_t _size
+
The documentation for this struct was generated from the following file:
    +
  • types_vmapi.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structPIN__CODE__RANGE-members.html b/src/tracer/pintool/pin-3.13/doc/html/structPIN__CODE__RANGE-members.html new file mode 100755 index 0000000..89f3276 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structPIN__CODE__RANGE-members.html @@ -0,0 +1,88 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+
+
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
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structPIN__CODE__RANGE.html b/src/tracer/pintool/pin-3.13/doc/html/structPIN__CODE__RANGE.html new file mode 100755 index 0000000..314d6bf --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structPIN__CODE__RANGE.html @@ -0,0 +1,104 @@ + + + + +Pin: PIN_CODE_RANGE Struct Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+ +
+
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
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structPIN__MEM__ACCESS__INFO-members.html b/src/tracer/pintool/pin-3.13/doc/html/structPIN__MEM__ACCESS__INFO-members.html new file mode 100755 index 0000000..076fd2d --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structPIN__MEM__ACCESS__INFO-members.html @@ -0,0 +1,90 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+
+
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
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structPIN__MEM__ACCESS__INFO.html b/src/tracer/pintool/pin-3.13/doc/html/structPIN__MEM__ACCESS__INFO.html new file mode 100755 index 0000000..5583379 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structPIN__MEM__ACCESS__INFO.html @@ -0,0 +1,108 @@ + + + + +Pin: PIN_MEM_ACCESS_INFO Struct Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+ +
+
PIN_MEM_ACCESS_INFO Struct Reference
+
+
+ +

#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
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structPIN__MEM__TRANS__INFO-members.html b/src/tracer/pintool/pin-3.13/doc/html/structPIN__MEM__TRANS__INFO-members.html new file mode 100755 index 0000000..181e3d1 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structPIN__MEM__TRANS__INFO-members.html @@ -0,0 +1,93 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+
+
PIN_MEM_TRANS_INFO Member List
+
+
+This is the complete list of members for PIN_MEM_TRANS_INFO, including all inherited members. + + + + + + + +
addr (defined in PIN_MEM_TRANS_INFO)PIN_MEM_TRANS_INFO
bytes (defined in PIN_MEM_TRANS_INFO)PIN_MEM_TRANS_INFO
dummySpace (defined in PIN_MEM_TRANS_INFO)PIN_MEM_TRANS_INFO
flags (defined in PIN_MEM_TRANS_INFO)PIN_MEM_TRANS_INFO
ip (defined in PIN_MEM_TRANS_INFO)PIN_MEM_TRANS_INFO
memOpType (defined in PIN_MEM_TRANS_INFO)PIN_MEM_TRANS_INFO
threadIndex (defined in PIN_MEM_TRANS_INFO)PIN_MEM_TRANS_INFO
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structPIN__MEM__TRANS__INFO.html b/src/tracer/pintool/pin-3.13/doc/html/structPIN__MEM__TRANS__INFO.html new file mode 100755 index 0000000..c2a9668 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structPIN__MEM__TRANS__INFO.html @@ -0,0 +1,110 @@ + + + + +Pin: PIN_MEM_TRANS_INFO Struct Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+ +
+
PIN_MEM_TRANS_INFO Struct Reference
+
+
+ +

List of all members.

+ + + + + + + + + +

+Public Attributes

+UINT8 dummySpace [32]
+THREADID threadIndex
+ADDRINT addr
+size_t bytes
+PIN_MEMOP_ENUM memOpType
+ADDRINT ip
+PIN_MEM_TRANS_FLAGS flags
+
The documentation for this struct was generated from the following file:
    +
  • types_vmapi.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structPIN__MULTI__MEM__ACCESS__INFO-members.html b/src/tracer/pintool/pin-3.13/doc/html/structPIN__MULTI__MEM__ACCESS__INFO-members.html new file mode 100755 index 0000000..4fa3584 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structPIN__MULTI__MEM__ACCESS__INFO-members.html @@ -0,0 +1,88 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+
+
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
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structPIN__MULTI__MEM__ACCESS__INFO.html b/src/tracer/pintool/pin-3.13/doc/html/structPIN__MULTI__MEM__ACCESS__INFO.html new file mode 100755 index 0000000..2629694 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structPIN__MULTI__MEM__ACCESS__INFO.html @@ -0,0 +1,104 @@ + + + + +Pin: PIN_MULTI_MEM_ACCESS_INFO Struct Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+ +
+
PIN_MULTI_MEM_ACCESS_INFO Struct Reference
+
+
+ +

#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
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structREG__INFO-members.html b/src/tracer/pintool/pin-3.13/doc/html/structREG__INFO-members.html new file mode 100755 index 0000000..d9172c6 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structREG__INFO-members.html @@ -0,0 +1,88 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+
+
REG_INFO Member List
+
+
+This is the complete list of members for REG_INFO, including all inherited members. + + +
_name (defined in REG_INFO)REG_INFO
_reg (defined in REG_INFO)REG_INFO
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/structREG__INFO.html b/src/tracer/pintool/pin-3.13/doc/html/structREG__INFO.html new file mode 100755 index 0000000..7f27d16 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/structREG__INFO.html @@ -0,0 +1,100 @@ + + + + +Pin: REG_INFO Struct Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+ +
+
REG_INFO Struct Reference
+
+
+ +

List of all members.

+ + + + +

+Public Attributes

+REG _reg
+const char * _name
+
The documentation for this struct was generated from the following file:
    +
  • debugger-shell.cpp
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass-members.html b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass-members.html new file mode 100755 index 0000000..5c51cca --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass-members.html @@ -0,0 +1,87 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+
+
_PinPargClass< T > Member List
+
+
+This is the complete list of members for _PinPargClass< T >, including all inherited members. + +
parg() (defined in _PinPargClass< T >)_PinPargClass< T > [inline, static]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass.html b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass.html new file mode 100755 index 0000000..27ac38d --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass.html @@ -0,0 +1,101 @@ + + + + +Pin: _PinPargClass< T > Struct Template Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+ +
+
_PinPargClass< T > Struct Template Reference
+
+
+ +

List of all members.

+ + + +

+Static Public Member Functions

+static PARG_T parg ()
+

template<typename T>
+ struct _PinPargClass< T >

+ +
The documentation for this struct was generated from the following file:
    +
  • types_vmapi.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01T_01_5_01_4-members.html b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01T_01_5_01_4-members.html new file mode 100755 index 0000000..a51de4f --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01T_01_5_01_4-members.html @@ -0,0 +1,87 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+
+
_PinPargClass< T * > Member List
+
+
+This is the complete list of members for _PinPargClass< T * >, including all inherited members. + +
parg() (defined in _PinPargClass< T * >)_PinPargClass< T * > [inline, static]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01T_01_5_01_4.html b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01T_01_5_01_4.html new file mode 100755 index 0000000..ec3e0b5 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01T_01_5_01_4.html @@ -0,0 +1,101 @@ + + + + +Pin: _PinPargClass< T * > Struct Template Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+ +
+
_PinPargClass< T * > Struct Template Reference
+
+
+ +

List of all members.

+ + + +

+Static Public Member Functions

+static PARG_T parg ()
+

template<typename T>
+ struct _PinPargClass< T * >

+ +
The documentation for this struct was generated from the following file:
    +
  • types_vmapi.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01T_01_6_01_4-members.html b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01T_01_6_01_4-members.html new file mode 100755 index 0000000..cdb9669 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01T_01_6_01_4-members.html @@ -0,0 +1,87 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+
+
_PinPargClass< T & > Member List
+
+
+This is the complete list of members for _PinPargClass< T & >, including all inherited members. + +
parg() (defined in _PinPargClass< T & >)_PinPargClass< T & > [inline, static]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01T_01_6_01_4.html b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01T_01_6_01_4.html new file mode 100755 index 0000000..f6e341c --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01T_01_6_01_4.html @@ -0,0 +1,101 @@ + + + + +Pin: _PinPargClass< T & > Struct Template Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+ +
+
_PinPargClass< T & > Struct Template Reference
+
+
+ +

List of all members.

+ + + +

+Static Public Member Functions

+static PARG_T parg ()
+

template<typename T>
+ struct _PinPargClass< T & >

+ +
The documentation for this struct was generated from the following file:
    +
  • types_vmapi.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01bool_01_4-members.html b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01bool_01_4-members.html new file mode 100755 index 0000000..04834ea --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01bool_01_4-members.html @@ -0,0 +1,87 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+
+
_PinPargClass< bool > Member List
+
+
+This is the complete list of members for _PinPargClass< bool >, including all inherited members. + +
parg() (defined in _PinPargClass< bool >)_PinPargClass< bool > [inline, static]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01bool_01_4.html b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01bool_01_4.html new file mode 100755 index 0000000..62e94cb --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01bool_01_4.html @@ -0,0 +1,101 @@ + + + + +Pin: _PinPargClass< bool > Struct Template Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+ +
+
_PinPargClass< bool > Struct Template Reference
+
+
+ +

List of all members.

+ + + +

+Static Public Member Functions

+static PARG_T parg ()
+

template<>
+ struct _PinPargClass< bool >

+ +
The documentation for this struct was generated from the following file:
    +
  • types_vmapi.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01char_01_4-members.html b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01char_01_4-members.html new file mode 100755 index 0000000..55a8131 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01char_01_4-members.html @@ -0,0 +1,87 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+
+
_PinPargClass< char > Member List
+
+
+This is the complete list of members for _PinPargClass< char >, including all inherited members. + +
parg() (defined in _PinPargClass< char >)_PinPargClass< char > [inline, static]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01char_01_4.html b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01char_01_4.html new file mode 100755 index 0000000..11ae68a --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01char_01_4.html @@ -0,0 +1,101 @@ + + + + +Pin: _PinPargClass< char > Struct Template Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+ +
+
_PinPargClass< char > Struct Template Reference
+
+
+ +

List of all members.

+ + + +

+Static Public Member Functions

+static PARG_T parg ()
+

template<>
+ struct _PinPargClass< char >

+ +
The documentation for this struct was generated from the following file:
    +
  • types_vmapi.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01double_01_4-members.html b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01double_01_4-members.html new file mode 100755 index 0000000..4150129 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01double_01_4-members.html @@ -0,0 +1,87 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+
+
_PinPargClass< double > Member List
+
+
+This is the complete list of members for _PinPargClass< double >, including all inherited members. + +
parg() (defined in _PinPargClass< double >)_PinPargClass< double > [inline, static]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01double_01_4.html b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01double_01_4.html new file mode 100755 index 0000000..e153e97 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01double_01_4.html @@ -0,0 +1,101 @@ + + + + +Pin: _PinPargClass< double > Struct Template Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+ +
+
_PinPargClass< double > Struct Template Reference
+
+
+ +

List of all members.

+ + + +

+Static Public Member Functions

+static PARG_T parg ()
+

template<>
+ struct _PinPargClass< double >

+ +
The documentation for this struct was generated from the following file:
    +
  • types_vmapi.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01float_01_4-members.html b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01float_01_4-members.html new file mode 100755 index 0000000..2061e3b --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01float_01_4-members.html @@ -0,0 +1,87 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+
+
_PinPargClass< float > Member List
+
+
+This is the complete list of members for _PinPargClass< float >, including all inherited members. + +
parg() (defined in _PinPargClass< float >)_PinPargClass< float > [inline, static]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01float_01_4.html b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01float_01_4.html new file mode 100755 index 0000000..d7c41fa --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01float_01_4.html @@ -0,0 +1,101 @@ + + + + +Pin: _PinPargClass< float > Struct Template Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+ +
+
_PinPargClass< float > Struct Template Reference
+
+
+ +

List of all members.

+ + + +

+Static Public Member Functions

+static PARG_T parg ()
+

template<>
+ struct _PinPargClass< float >

+ +
The documentation for this struct was generated from the following file:
    +
  • types_vmapi.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01int_01_4-members.html b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01int_01_4-members.html new file mode 100755 index 0000000..de29b8a --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01int_01_4-members.html @@ -0,0 +1,87 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+
+
_PinPargClass< int > Member List
+
+
+This is the complete list of members for _PinPargClass< int >, including all inherited members. + +
parg() (defined in _PinPargClass< int >)_PinPargClass< int > [inline, static]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01int_01_4.html b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01int_01_4.html new file mode 100755 index 0000000..140b019 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01int_01_4.html @@ -0,0 +1,101 @@ + + + + +Pin: _PinPargClass< int > Struct Template Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+ +
+
_PinPargClass< int > Struct Template Reference
+
+
+ +

List of all members.

+ + + +

+Static Public Member Functions

+static PARG_T parg ()
+

template<>
+ struct _PinPargClass< int >

+ +
The documentation for this struct was generated from the following file:
    +
  • types_vmapi.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01long_01_4-members.html b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01long_01_4-members.html new file mode 100755 index 0000000..241ab6c --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01long_01_4-members.html @@ -0,0 +1,87 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+
+
_PinPargClass< long > Member List
+
+
+This is the complete list of members for _PinPargClass< long >, including all inherited members. + +
parg() (defined in _PinPargClass< long >)_PinPargClass< long > [inline, static]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01long_01_4.html b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01long_01_4.html new file mode 100755 index 0000000..66ee833 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01long_01_4.html @@ -0,0 +1,101 @@ + + + + +Pin: _PinPargClass< long > Struct Template Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+ +
+
_PinPargClass< long > Struct Template Reference
+
+
+ +

List of all members.

+ + + +

+Static Public Member Functions

+static PARG_T parg ()
+

template<>
+ struct _PinPargClass< long >

+ +
The documentation for this struct was generated from the following file:
    +
  • types_vmapi.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01long_01long_01_4-members.html b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01long_01long_01_4-members.html new file mode 100755 index 0000000..ca16518 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01long_01long_01_4-members.html @@ -0,0 +1,87 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+
+
_PinPargClass< long long > Member List
+
+
+This is the complete list of members for _PinPargClass< long long >, including all inherited members. + +
parg() (defined in _PinPargClass< long long >)_PinPargClass< long long > [inline, static]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01long_01long_01_4.html b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01long_01long_01_4.html new file mode 100755 index 0000000..a725fa3 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01long_01long_01_4.html @@ -0,0 +1,101 @@ + + + + +Pin: _PinPargClass< long long > Struct Template Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+ +
+
_PinPargClass< long long > Struct Template Reference
+
+
+ +

List of all members.

+ + + +

+Static Public Member Functions

+static PARG_T parg ()
+

template<>
+ struct _PinPargClass< long long >

+ +
The documentation for this struct was generated from the following file:
    +
  • types_vmapi.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01short_01_4-members.html b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01short_01_4-members.html new file mode 100755 index 0000000..80f9d55 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01short_01_4-members.html @@ -0,0 +1,87 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+
+
_PinPargClass< short > Member List
+
+
+This is the complete list of members for _PinPargClass< short >, including all inherited members. + +
parg() (defined in _PinPargClass< short >)_PinPargClass< short > [inline, static]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01short_01_4.html b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01short_01_4.html new file mode 100755 index 0000000..a09611f --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01short_01_4.html @@ -0,0 +1,101 @@ + + + + +Pin: _PinPargClass< short > Struct Template Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+ +
+
_PinPargClass< short > Struct Template Reference
+
+
+ +

List of all members.

+ + + +

+Static Public Member Functions

+static PARG_T parg ()
+

template<>
+ struct _PinPargClass< short >

+ +
The documentation for this struct was generated from the following file:
    +
  • types_vmapi.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01signed_01char_01_4-members.html b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01signed_01char_01_4-members.html new file mode 100755 index 0000000..720178c --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01signed_01char_01_4-members.html @@ -0,0 +1,87 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+
+
_PinPargClass< signed char > Member List
+
+
+This is the complete list of members for _PinPargClass< signed char >, including all inherited members. + +
parg() (defined in _PinPargClass< signed char >)_PinPargClass< signed char > [inline, static]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01signed_01char_01_4.html b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01signed_01char_01_4.html new file mode 100755 index 0000000..7b0d66d --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01signed_01char_01_4.html @@ -0,0 +1,101 @@ + + + + +Pin: _PinPargClass< signed char > Struct Template Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+ +
+
_PinPargClass< signed char > Struct Template Reference
+
+
+ +

List of all members.

+ + + +

+Static Public Member Functions

+static PARG_T parg ()
+

template<>
+ struct _PinPargClass< signed char >

+ +
The documentation for this struct was generated from the following file:
    +
  • types_vmapi.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01unsigned_01char_01_4-members.html b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01unsigned_01char_01_4-members.html new file mode 100755 index 0000000..2dd33f6 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01unsigned_01char_01_4-members.html @@ -0,0 +1,87 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+
+
_PinPargClass< unsigned char > Member List
+
+
+This is the complete list of members for _PinPargClass< unsigned char >, including all inherited members. + +
parg() (defined in _PinPargClass< unsigned char >)_PinPargClass< unsigned char > [inline, static]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01unsigned_01char_01_4.html b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01unsigned_01char_01_4.html new file mode 100755 index 0000000..59a481d --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01unsigned_01char_01_4.html @@ -0,0 +1,101 @@ + + + + +Pin: _PinPargClass< unsigned char > Struct Template Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+ +
+
_PinPargClass< unsigned char > Struct Template Reference
+
+
+ +

List of all members.

+ + + +

+Static Public Member Functions

+static PARG_T parg ()
+

template<>
+ struct _PinPargClass< unsigned char >

+ +
The documentation for this struct was generated from the following file:
    +
  • types_vmapi.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01unsigned_01int_01_4-members.html b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01unsigned_01int_01_4-members.html new file mode 100755 index 0000000..5ca2ecb --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01unsigned_01int_01_4-members.html @@ -0,0 +1,87 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+
+
_PinPargClass< unsigned int > Member List
+
+
+This is the complete list of members for _PinPargClass< unsigned int >, including all inherited members. + +
parg() (defined in _PinPargClass< unsigned int >)_PinPargClass< unsigned int > [inline, static]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01unsigned_01int_01_4.html b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01unsigned_01int_01_4.html new file mode 100755 index 0000000..d386b2b --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01unsigned_01int_01_4.html @@ -0,0 +1,101 @@ + + + + +Pin: _PinPargClass< unsigned int > Struct Template Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+ +
+
_PinPargClass< unsigned int > Struct Template Reference
+
+
+ +

List of all members.

+ + + +

+Static Public Member Functions

+static PARG_T parg ()
+

template<>
+ struct _PinPargClass< unsigned int >

+ +
The documentation for this struct was generated from the following file:
    +
  • types_vmapi.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01unsigned_01long_01_4-members.html b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01unsigned_01long_01_4-members.html new file mode 100755 index 0000000..02a09eb --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01unsigned_01long_01_4-members.html @@ -0,0 +1,87 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+
+
_PinPargClass< unsigned long > Member List
+
+
+This is the complete list of members for _PinPargClass< unsigned long >, including all inherited members. + +
parg() (defined in _PinPargClass< unsigned long >)_PinPargClass< unsigned long > [inline, static]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01unsigned_01long_01_4.html b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01unsigned_01long_01_4.html new file mode 100755 index 0000000..0252cc8 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01unsigned_01long_01_4.html @@ -0,0 +1,101 @@ + + + + +Pin: _PinPargClass< unsigned long > Struct Template Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+ +
+
_PinPargClass< unsigned long > Struct Template Reference
+
+
+ +

List of all members.

+ + + +

+Static Public Member Functions

+static PARG_T parg ()
+

template<>
+ struct _PinPargClass< unsigned long >

+ +
The documentation for this struct was generated from the following file:
    +
  • types_vmapi.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01unsigned_01long_01long_01_4-members.html b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01unsigned_01long_01long_01_4-members.html new file mode 100755 index 0000000..274a43c --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01unsigned_01long_01long_01_4-members.html @@ -0,0 +1,87 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+
+
_PinPargClass< unsigned long long > Member List
+
+
+This is the complete list of members for _PinPargClass< unsigned long long >, including all inherited members. + +
parg() (defined in _PinPargClass< unsigned long long >)_PinPargClass< unsigned long long > [inline, static]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01unsigned_01long_01long_01_4.html b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01unsigned_01long_01long_01_4.html new file mode 100755 index 0000000..8fc4865 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01unsigned_01long_01long_01_4.html @@ -0,0 +1,101 @@ + + + + +Pin: _PinPargClass< unsigned long long > Struct Template Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+ +
+
_PinPargClass< unsigned long long > Struct Template Reference
+
+
+ +

List of all members.

+ + + +

+Static Public Member Functions

+static PARG_T parg ()
+

template<>
+ struct _PinPargClass< unsigned long long >

+ +
The documentation for this struct was generated from the following file:
    +
  • types_vmapi.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01unsigned_01short_01_4-members.html b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01unsigned_01short_01_4-members.html new file mode 100755 index 0000000..1066175 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01unsigned_01short_01_4-members.html @@ -0,0 +1,87 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+
+
_PinPargClass< unsigned short > Member List
+
+
+This is the complete list of members for _PinPargClass< unsigned short >, including all inherited members. + +
parg() (defined in _PinPargClass< unsigned short >)_PinPargClass< unsigned short > [inline, static]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01unsigned_01short_01_4.html b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01unsigned_01short_01_4.html new file mode 100755 index 0000000..7d9a3e1 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01unsigned_01short_01_4.html @@ -0,0 +1,101 @@ + + + + +Pin: _PinPargClass< unsigned short > Struct Template Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+ +
+
_PinPargClass< unsigned short > Struct Template Reference
+
+
+ +

List of all members.

+ + + +

+Static Public Member Functions

+static PARG_T parg ()
+

template<>
+ struct _PinPargClass< unsigned short >

+ +
The documentation for this struct was generated from the following file:
    +
  • types_vmapi.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01void_01_4-members.html b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01void_01_4-members.html new file mode 100755 index 0000000..d89a3c1 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01void_01_4-members.html @@ -0,0 +1,87 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+
+
_PinPargClass< void > Member List
+
+
+This is the complete list of members for _PinPargClass< void >, including all inherited members. + +
parg() (defined in _PinPargClass< void >)_PinPargClass< void > [inline, static]
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01void_01_4.html b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01void_01_4.html new file mode 100755 index 0000000..6dc4ac4 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/struct__PinPargClass_3_01void_01_4.html @@ -0,0 +1,101 @@ + + + + +Pin: _PinPargClass< void > Struct Template Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+ +
+
_PinPargClass< void > Struct Template Reference
+
+
+ +

List of all members.

+ + + +

+Static Public Member Functions

+static PARG_T parg ()
+

template<>
+ struct _PinPargClass< void >

+ +
The documentation for this struct was generated from the following file:
    +
  • types_vmapi.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/struct__tcpClientStruct-members.html b/src/tracer/pintool/pin-3.13/doc/html/struct__tcpClientStruct-members.html new file mode 100755 index 0000000..0fe3aa2 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/struct__tcpClientStruct-members.html @@ -0,0 +1,88 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+
+
_tcpClientStruct Member List
+
+
+This is the complete list of members for _tcpClientStruct, including all inherited members. + + +
_ip_tcpClientStruct
_tcpPort_tcpClientStruct
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/struct__tcpClientStruct.html b/src/tracer/pintool/pin-3.13/doc/html/struct__tcpClientStruct.html new file mode 100755 index 0000000..85bfc1a --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/struct__tcpClientStruct.html @@ -0,0 +1,104 @@ + + + + +Pin: _tcpClientStruct Struct Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+ +
+
_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.

+

The documentation for this struct was generated from the following file:
    +
  • types_vmapi.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/struct__tcpServerStruct-members.html b/src/tracer/pintool/pin-3.13/doc/html/struct__tcpServerStruct-members.html new file mode 100755 index 0000000..07a7d32 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/struct__tcpServerStruct-members.html @@ -0,0 +1,87 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+
+
_tcpServerStruct Member List
+
+
+This is the complete list of members for _tcpServerStruct, including all inherited members. + +
_tcpPort_tcpServerStruct
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/struct__tcpServerStruct.html b/src/tracer/pintool/pin-3.13/doc/html/struct__tcpServerStruct.html new file mode 100755 index 0000000..82b4f14 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/struct__tcpServerStruct.html @@ -0,0 +1,102 @@ + + + + +Pin: _tcpServerStruct Struct Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+ +
+
_tcpServerStruct Struct Reference
+
+
+ +

#include <types_vmapi.H>

+ +

List of all members.

+ + + +

+Public Attributes

+int _tcpPort
+

Detailed Description

+

Information for DEBUG_CONNECTION_TYPE_TCP_SERVER.

+

The documentation for this struct was generated from the following file:
    +
  • types_vmapi.H
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/tab_a.png b/src/tracer/pintool/pin-3.13/doc/html/tab_a.png new file mode 100755 index 0000000000000000000000000000000000000000..2d99ef23fed78c7683f0b5aa803d937060d288c4 GIT binary patch literal 140 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qo)`sjv*C{Z|CmjY;X`^DSv)) z;hc^cTF;t%XWXdwWP5+kt?jQ5uhqKtjd^EY`^^-S;M%tFAj_l)EwVTK)E@1LSD0{e q?a6($SGQTzz1#QBzr0NMKf^0WCX-0bi?u-G89ZJ6T-G@yGywp8?ljB* literal 0 HcmV?d00001 diff --git a/src/tracer/pintool/pin-3.13/doc/html/tab_b.png b/src/tracer/pintool/pin-3.13/doc/html/tab_b.png new file mode 100755 index 0000000000000000000000000000000000000000..b2c3d2be3c7e518fbca6bb30f571882e72fc506d GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qk9-Ajv*C{Z|~mbJ)|JfaM8Xd zIP7xAmLwau9@iXhZTrl-TjWj9jM#?{xt`6uU{<)jb9Suc^QnbhJ(o{ib8=j9u0_mE8M7kgF7f<7W7IEf=8(L_qx|g0H;V7iPxm&Q@G7p8W2Kx&iT|YUM=ITC zY<0Qbr;u&AtXD{o@41wH=7&d8=2Z_{M9Tsa=g*t*@A3H$UOlxZk7?f6RUWpx>Fc_L s#LQ{edY3MpIXkMeV^&YV=9fR%8Jv|Kya=#u06K}m)78&qol`;+0RKEt)&Kwi literal 0 HcmV?d00001 diff --git a/src/tracer/pintool/pin-3.13/doc/html/tab_s.png b/src/tracer/pintool/pin-3.13/doc/html/tab_s.png new file mode 100755 index 0000000000000000000000000000000000000000..978943ac807718de0e69e5a585a8f0a1e5999285 GIT binary patch literal 189 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QZ1e?jv*C{Z|}b5Yzkm-c<7z3 zq^cq0=~}Z;b(!Zvb5Z%sTRFKGlz1=qOFg;myyu?$r`wZb^irPsN1a)6)TwB0r+)wb zPL25;=adu89?fTK`qDR>$D*)b_WOmdKI;Vst02j(hg8%>k literal 0 HcmV?d00001 diff --git a/src/tracer/pintool/pin-3.13/doc/html/tabs.css b/src/tracer/pintool/pin-3.13/doc/html/tabs.css new file mode 100755 index 0000000..2192056 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/tabs.css @@ -0,0 +1,59 @@ +.tabs, .tabs2, .tabs3 { + background-image: url('tab_b.png'); + width: 100%; + z-index: 101; + font-size: 13px; +} + +.tabs2 { + font-size: 10px; +} +.tabs3 { + font-size: 9px; +} + +.tablist { + margin: 0; + padding: 0; + display: table; +} + +.tablist li { + float: left; + display: table-cell; + background-image: url('tab_b.png'); + line-height: 36px; + list-style: none; +} + +.tablist a { + display: block; + padding: 0 20px; + font-weight: bold; + background-image:url('tab_s.png'); + background-repeat:no-repeat; + background-position:right; + color: #283A5D; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; + outline: none; +} + +.tabs3 .tablist a { + padding: 0 10px; +} + +.tablist a:hover { + background-image: url('tab_h.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); + text-decoration: none; +} + +.tablist li.current a { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} diff --git a/src/tracer/pintool/pin-3.13/doc/html/unionLEVEL__CORE_1_1VAL-members.html b/src/tracer/pintool/pin-3.13/doc/html/unionLEVEL__CORE_1_1VAL-members.html new file mode 100755 index 0000000..c462188 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/unionLEVEL__CORE_1_1VAL-members.html @@ -0,0 +1,134 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+
+
LEVEL_CORE::VAL Member List
+
+
+This is the complete list of members for LEVEL_CORE::VAL, including all inherited members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
afunptr (defined in LEVEL_CORE::VAL)LEVEL_CORE::VAL
bbl (defined in LEVEL_CORE::VAL)LEVEL_CORE::VAL
casev (defined in LEVEL_CORE::VAL)LEVEL_CORE::VAL
chunk (defined in LEVEL_CORE::VAL)LEVEL_CORE::VAL
chunkoff (defined in LEVEL_CORE::VAL)LEVEL_CORE::VAL
const_ptr (defined in LEVEL_CORE::VAL)LEVEL_CORE::VAL
edg (defined in LEVEL_CORE::VAL)LEVEL_CORE::VAL
flt64 (defined in LEVEL_CORE::VAL)LEVEL_CORE::VAL
got (defined in LEVEL_CORE::VAL)LEVEL_CORE::VAL
hint (defined in LEVEL_CORE::VAL)LEVEL_CORE::VAL
i (defined in LEVEL_CORE::VAL)LEVEL_CORE::VAL
i1 (defined in LEVEL_CORE::VAL)LEVEL_CORE::VAL
i2 (defined in LEVEL_CORE::VAL)LEVEL_CORE::VAL
iaddr (defined in LEVEL_CORE::VAL)LEVEL_CORE::VAL
iaddr_int (defined in LEVEL_CORE::VAL)LEVEL_CORE::VAL
ins (defined in LEVEL_CORE::VAL)LEVEL_CORE::VAL
int32 (defined in LEVEL_CORE::VAL)LEVEL_CORE::VAL
ldef (defined in LEVEL_CORE::VAL)LEVEL_CORE::VAL
off (defined in LEVEL_CORE::VAL)LEVEL_CORE::VAL
opd (defined in LEVEL_CORE::VAL)LEVEL_CORE::VAL
pltoff (defined in LEVEL_CORE::VAL)LEVEL_CORE::VAL
preg (defined in LEVEL_CORE::VAL)LEVEL_CORE::VAL
ptr (defined in LEVEL_CORE::VAL)LEVEL_CORE::VAL
reg (defined in LEVEL_CORE::VAL)LEVEL_CORE::VAL
reg_int (defined in LEVEL_CORE::VAL)LEVEL_CORE::VAL
regallochint (defined in LEVEL_CORE::VAL)LEVEL_CORE::VAL
reguse (defined in LEVEL_CORE::VAL)LEVEL_CORE::VAL
rel (defined in LEVEL_CORE::VAL)LEVEL_CORE::VAL
rtn (defined in LEVEL_CORE::VAL)LEVEL_CORE::VAL
sact (defined in LEVEL_CORE::VAL)LEVEL_CORE::VAL
sec (defined in LEVEL_CORE::VAL)LEVEL_CORE::VAL
secoff (defined in LEVEL_CORE::VAL)LEVEL_CORE::VAL
str (defined in LEVEL_CORE::VAL)LEVEL_CORE::VAL
sym (defined in LEVEL_CORE::VAL)LEVEL_CORE::VAL
symoff (defined in LEVEL_CORE::VAL)LEVEL_CORE::VAL
two_int (defined in LEVEL_CORE::VAL)LEVEL_CORE::VAL
uint32 (defined in LEVEL_CORE::VAL)LEVEL_CORE::VAL
uint64 (defined in LEVEL_CORE::VAL)LEVEL_CORE::VAL
use (defined in LEVEL_CORE::VAL)LEVEL_CORE::VAL
version (defined in LEVEL_CORE::VAL)LEVEL_CORE::VAL
version_case (defined in LEVEL_CORE::VAL)LEVEL_CORE::VAL
vreg (defined in LEVEL_CORE::VAL)LEVEL_CORE::VAL
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/unionLEVEL__CORE_1_1VAL.html b/src/tracer/pintool/pin-3.13/doc/html/unionLEVEL__CORE_1_1VAL.html new file mode 100755 index 0000000..cc58001 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/unionLEVEL__CORE_1_1VAL.html @@ -0,0 +1,195 @@ + + + + +Pin: LEVEL_CORE::VAL Union Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + + +
+
+ +
+
LEVEL_CORE::VAL Union Reference
+
+
+ +

List of all members.

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

+Public Attributes

+REL rel
+INS ins
+BBL bbl
+EDG edg
+RTN rtn
+SEC sec
+SYM sym
+CHUNK chunk
+GOT got
+UINT32 opd
+UINT32 pltoff
+UINT32 uint32
+LDEF ldef
+INT32 int32
+UINT64 uint64
+FLT64 flt64
+IADDR iaddr
+struct {
   SEC   sec
   UINT32   off
secoff
+struct {
   SYM   sym
   UINT32   off
symoff
+struct {
   CHUNK   chunk
   UINT32   off
chunkoff
+struct {
   UINT32   i1
   UINT32   i2
two_int
+std::string * str
+struct {
   REG   reg
   UINT32   use
reguse
+struct {
   REG   reg
   INT32   i
reg_int
+struct {
   REG   reg
   INT32   casev
   ADDRINT   version
version_case
+struct {
   IADDR   iaddr
   INT32   i
iaddr_int
+struct {
   REG   vreg
   REG   preg
   REGALLOC_HINT_TYPE   hint
regallochint
+SACT sact
+const VOID * const_ptr
+VOID * ptr
+AFUNPTR afunptr
+

Detailed Description

+

THIS union is intentionally only 64bits wide, do not make it bigger

+

The documentation for this union was generated from the following file:
    +
  • val.cpp
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/unionPIN__MEM__TRANS__FLAGS-members.html b/src/tracer/pintool/pin-3.13/doc/html/unionPIN__MEM__TRANS__FLAGS-members.html new file mode 100755 index 0000000..e7a092b --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/unionPIN__MEM__TRANS__FLAGS-members.html @@ -0,0 +1,92 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+
+
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
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/unionPIN__MEM__TRANS__FLAGS.html b/src/tracer/pintool/pin-3.13/doc/html/unionPIN__MEM__TRANS__FLAGS.html new file mode 100755 index 0000000..4d2bd18 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/unionPIN__MEM__TRANS__FLAGS.html @@ -0,0 +1,109 @@ + + + + +Pin: PIN_MEM_TRANS_FLAGS Union Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+ +
+
PIN_MEM_TRANS_FLAGS Union Reference
+
+
+ +

#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
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/unionPIN__REGISTER-members.html b/src/tracer/pintool/pin-3.13/doc/html/unionPIN__REGISTER-members.html new file mode 100755 index 0000000..a9ab9fa --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/unionPIN__REGISTER-members.html @@ -0,0 +1,96 @@ + + + + +Pin: Member List + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+
+
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
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/doc/html/unionPIN__REGISTER.html b/src/tracer/pintool/pin-3.13/doc/html/unionPIN__REGISTER.html new file mode 100755 index 0000000..143048d --- /dev/null +++ b/src/tracer/pintool/pin-3.13/doc/html/unionPIN__REGISTER.html @@ -0,0 +1,120 @@ + + + + +Pin: PIN_REGISTER Union Reference + + + + + + + + +
+
+ + + + + + +
+
Pin
+
+
+ + +
+
+ +
+
PIN_REGISTER Union Reference
+
+
+ +

#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
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/extras/components/include/asm.h b/src/tracer/pintool/pin-3.13/extras/components/include/asm.h new file mode 100755 index 0000000..f32bfa8 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/asm.h @@ -0,0 +1,144 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +/* +** : 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/src/tracer/pintool/pin-3.13/extras/components/include/asm/gas-x86.h b/src/tracer/pintool/pin-3.13/extras/components/include/asm/gas-x86.h new file mode 100755 index 0000000..c2b2992 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/asm/gas-x86.h @@ -0,0 +1,96 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +/* +** : 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 macOS* 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/src/tracer/pintool/pin-3.13/extras/components/include/asm/masm-x86.h b/src/tracer/pintool/pin-3.13/extras/components/include/asm/masm-x86.h new file mode 100755 index 0000000..f1b83e0 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/asm/masm-x86.h @@ -0,0 +1,57 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +/* +** : 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/src/tracer/pintool/pin-3.13/extras/components/include/asm/nasm-x86.h b/src/tracer/pintool/pin-3.13/extras/components/include/asm/nasm-x86.h new file mode 100755 index 0000000..8358e36 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/asm/nasm-x86.h @@ -0,0 +1,76 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +/* +** : 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/src/tracer/pintool/pin-3.13/extras/components/include/asm/unix-intel64.h b/src/tracer/pintool/pin-3.13/extras/components/include/asm/unix-intel64.h new file mode 100755 index 0000000..c4b8da6 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/asm/unix-intel64.h @@ -0,0 +1,36 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +/* +** : 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/src/tracer/pintool/pin-3.13/extras/components/include/asm/windows-intel64.h b/src/tracer/pintool/pin-3.13/extras/components/include/asm/windows-intel64.h new file mode 100755 index 0000000..f56db6c --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/asm/windows-intel64.h @@ -0,0 +1,32 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +/* +** : 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/src/tracer/pintool/pin-3.13/extras/components/include/atomic.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/atomic.hpp new file mode 100755 index 0000000..5b862d7 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/atomic.hpp @@ -0,0 +1,60 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/atomic/config.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/atomic/config.hpp new file mode 100755 index 0000000..d87c7cb --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/atomic/config.hpp @@ -0,0 +1,60 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/atomic/exponential-backoff.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/atomic/exponential-backoff.hpp new file mode 100755 index 0000000..44c1a43 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/atomic/exponential-backoff.hpp @@ -0,0 +1,111 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/atomic/fixed-lifo.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/atomic/fixed-lifo.hpp new file mode 100755 index 0000000..e68851b --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/atomic/fixed-lifo.hpp @@ -0,0 +1,282 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/atomic/fixed-multimap.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/atomic/fixed-multimap.hpp new file mode 100755 index 0000000..11d18e4 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/atomic/fixed-multimap.hpp @@ -0,0 +1,405 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/atomic/fixed-multiset.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/atomic/fixed-multiset.hpp new file mode 100755 index 0000000..9a2a558 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/atomic/fixed-multiset.hpp @@ -0,0 +1,149 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/atomic/idset.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/atomic/idset.hpp new file mode 100755 index 0000000..f8a43e8 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/atomic/idset.hpp @@ -0,0 +1,158 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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() + * { + * 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)*8 + 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/src/tracer/pintool/pin-3.13/extras/components/include/atomic/lifo-ctr.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/atomic/lifo-ctr.hpp new file mode 100755 index 0000000..5066ac8 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/atomic/lifo-ctr.hpp @@ -0,0 +1,283 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/atomic/lifo-ptr.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/atomic/lifo-ptr.hpp new file mode 100755 index 0000000..0e7d3e0 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/atomic/lifo-ptr.hpp @@ -0,0 +1,378 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/atomic/nullstats.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/atomic/nullstats.hpp new file mode 100755 index 0000000..265e036 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/atomic/nullstats.hpp @@ -0,0 +1,44 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/atomic/ops-enum.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/atomic/ops-enum.hpp new file mode 100755 index 0000000..03bef6a --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/atomic/ops-enum.hpp @@ -0,0 +1,66 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/atomic/ops.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/atomic/ops.hpp new file mode 100755 index 0000000..515041d --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/atomic/ops.hpp @@ -0,0 +1,198 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/atomic/private/backoff-impl.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/atomic/private/backoff-impl.hpp new file mode 100755 index 0000000..76f729f --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/atomic/private/backoff-impl.hpp @@ -0,0 +1,23 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/atomic/private/ia32/ops-impl-ia32-asm.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/atomic/private/ia32/ops-impl-ia32-asm.hpp new file mode 100755 index 0000000..0e068e3 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/atomic/private/ia32/ops-impl-ia32-asm.hpp @@ -0,0 +1,33 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/atomic/private/ia32/ops-impl.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/atomic/private/ia32/ops-impl.hpp new file mode 100755 index 0000000..7a6b030 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/atomic/private/ia32/ops-impl.hpp @@ -0,0 +1,178 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/atomic/private/intel64/ops-impl-intel64-asm.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/atomic/private/intel64/ops-impl-intel64-asm.hpp new file mode 100755 index 0000000..d74e53d --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/atomic/private/intel64/ops-impl-intel64-asm.hpp @@ -0,0 +1,34 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/atomic/private/intel64/ops-impl.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/atomic/private/intel64/ops-impl.hpp new file mode 100755 index 0000000..b0d972e --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/atomic/private/intel64/ops-impl.hpp @@ -0,0 +1,172 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/atomic/private/ops-common-impl.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/atomic/private/ops-common-impl.hpp new file mode 100755 index 0000000..e93ae6b --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/atomic/private/ops-common-impl.hpp @@ -0,0 +1,93 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol.hpp new file mode 100755 index 0000000..ff41c4d --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol.hpp @@ -0,0 +1,2014 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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 UINT32 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 UINT32 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 UINT32 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 UINT32 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 UINT32 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 UINT32 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, invalid thread Id if \a iThread is out of range. + * + * @par Error Returns (when used by debugger front-end) + * Returns invalid thread Id if called during "run mode". + */ + virtual THREAD GetThreadId(unsigned iThread) = 0; + + /*! + * Retrieves the ID of a thread in the application that caused current stop + * or invalid thread Id if the focus thread can not be safely determined, + * like when all stopped threads are blocked in OS. + * + * @return The ID of the focus thread as determined by the back-end. + * + * @par Error Returns (when used by debugger front-end) + * Returns invalid thread Id if called during "run mode". + */ + virtual THREAD GetFocusThreadId() = 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/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/event-linux.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/event-linux.hpp new file mode 100755 index 0000000..e1b6314 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/event-linux.hpp @@ -0,0 +1,210 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/event-mac.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/event-mac.hpp new file mode 100755 index 0000000..8d691a4 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/event-mac.hpp @@ -0,0 +1,142 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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 macOS* 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 LLDB connects to an macOS* process, it expects that these signals are initially not + * intercepted. If a back-end connects to a debugger of type FRONTEND_TYPE_LLDB, the + * back-end should arrange for these signals to be handled internally by the process, + * without notifying LLDB. Note that these are only an initial default setting. LLDB 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 macOS* 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 macOS* 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/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/event-windows.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/event-windows.hpp new file mode 100755 index 0000000..d4795ec --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/event-windows.hpp @@ -0,0 +1,96 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/forward.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/forward.hpp new file mode 100755 index 0000000..c97d3ea --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/forward.hpp @@ -0,0 +1,31 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/image-linux.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/image-linux.hpp new file mode 100755 index 0000000..57d0d84 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/image-linux.hpp @@ -0,0 +1,83 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/image-mac.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/image-mac.hpp new file mode 100755 index 0000000..62525bc --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/image-mac.hpp @@ -0,0 +1,61 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/image-windows.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/image-windows.hpp new file mode 100755 index 0000000..f7ad619 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/image-windows.hpp @@ -0,0 +1,70 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-gdb-linux-avx32.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-gdb-linux-avx32.hpp new file mode 100755 index 0000000..0c05100 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-gdb-linux-avx32.hpp @@ -0,0 +1,157 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-gdb-linux-avx512-32.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-gdb-linux-avx512-32.hpp new file mode 100755 index 0000000..1e711a6 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-gdb-linux-avx512-32.hpp @@ -0,0 +1,189 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-gdb-linux-avx512-64.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-gdb-linux-avx512-64.hpp new file mode 100755 index 0000000..9237a9a --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-gdb-linux-avx512-64.hpp @@ -0,0 +1,349 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-gdb-linux-avx64.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-gdb-linux-avx64.hpp new file mode 100755 index 0000000..63b94b0 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-gdb-linux-avx64.hpp @@ -0,0 +1,205 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-gdb-linux-ia32.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-gdb-linux-ia32.hpp new file mode 100755 index 0000000..a8469a6 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-gdb-linux-ia32.hpp @@ -0,0 +1,141 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-gdb-linux-intel64.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-gdb-linux-intel64.hpp new file mode 100755 index 0000000..1e8411c --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-gdb-linux-intel64.hpp @@ -0,0 +1,173 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-gdb-mac-ia32.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-gdb-mac-ia32.hpp new file mode 100755 index 0000000..3337336 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-gdb-mac-ia32.hpp @@ -0,0 +1,155 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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 macOS*. + */ +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 macOS*. +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/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-gdb-mac-intel64.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-gdb-mac-intel64.hpp new file mode 100755 index 0000000..8a6e34c --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-gdb-mac-intel64.hpp @@ -0,0 +1,203 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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 macOS*. + */ +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 macOS*. +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/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-windows-avx32.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-windows-avx32.hpp new file mode 100755 index 0000000..b0ed71c --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-windows-avx32.hpp @@ -0,0 +1,157 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-windows-avx512-32.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-windows-avx512-32.hpp new file mode 100755 index 0000000..12c3bf8 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-windows-avx512-32.hpp @@ -0,0 +1,189 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-windows-avx512-64.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-windows-avx512-64.hpp new file mode 100755 index 0000000..11d2da4 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-windows-avx512-64.hpp @@ -0,0 +1,349 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-windows-avx64.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-windows-avx64.hpp new file mode 100755 index 0000000..97efdce --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-windows-avx64.hpp @@ -0,0 +1,205 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-windows-ia32.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-windows-ia32.hpp new file mode 100755 index 0000000..f559d6f --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-windows-ia32.hpp @@ -0,0 +1,141 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-windows-intel64.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-windows-intel64.hpp new file mode 100755 index 0000000..f23b726 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/regs-windows-intel64.hpp @@ -0,0 +1,173 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/thread-linux.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/thread-linux.hpp new file mode 100755 index 0000000..ae0db4f --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/thread-linux.hpp @@ -0,0 +1,53 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/thread-mac.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/thread-mac.hpp new file mode 100755 index 0000000..1dd1eea --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/thread-mac.hpp @@ -0,0 +1,53 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/thread-windows.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/thread-windows.hpp new file mode 100755 index 0000000..96db3ec --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/debugger-protocol/thread-windows.hpp @@ -0,0 +1,59 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/types.h b/src/tracer/pintool/pin-3.13/extras/components/include/types.h new file mode 100755 index 0000000..fe0c023 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/types.h @@ -0,0 +1,208 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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 INT32 ADDRDELTA; +#define ADDRINT_SIZE_IN_BITS 32 +#define STACK_WORD_SIZE 4 + +#elif defined(TARGET_IA32E) + +typedef UINT64 ADDRINT; +typedef INT64 ADDRDELTA; +#define ADDRINT_SIZE_IN_BITS 64 +#define STACK_WORD_SIZE 8 + +#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 + +/*! @ingroup OS_APIS_TYPES + * The size of the file name buffer. + */ +#define FILENAME_BUF_SIZE 1024 + +#endif // ASM_ONLY + +#endif diff --git a/src/tracer/pintool/pin-3.13/extras/components/include/util.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/util.hpp new file mode 100755 index 0000000..6438f4e --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/util.hpp @@ -0,0 +1,41 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/util/data.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/util/data.hpp new file mode 100755 index 0000000..68bd58d --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/util/data.hpp @@ -0,0 +1,606 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/util/intel-fp.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/util/intel-fp.hpp new file mode 100755 index 0000000..fefe870 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/util/intel-fp.hpp @@ -0,0 +1,245 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/util/locker.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/util/locker.hpp new file mode 100755 index 0000000..408ab2d --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/util/locker.hpp @@ -0,0 +1,296 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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; + + // _lock might be dead/deallocated while we are inside a scope, we don't want to unlock it in this case (will cause exception). + // _isLocked gives us a way out in such a case (See SetLocked()). + 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), _isLocked(false) + { + 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/src/tracer/pintool/pin-3.13/extras/components/include/util/numberbits.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/util/numberbits.hpp new file mode 100755 index 0000000..8222b24 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/util/numberbits.hpp @@ -0,0 +1,80 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/util/quote-argument-ms.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/util/quote-argument-ms.hpp new file mode 100755 index 0000000..99c9328 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/util/quote-argument-ms.hpp @@ -0,0 +1,164 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/util/range.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/util/range.hpp new file mode 100755 index 0000000..815da72 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/util/range.hpp @@ -0,0 +1,125 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/util/regvalue.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/util/regvalue.hpp new file mode 100755 index 0000000..5eee994 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/util/regvalue.hpp @@ -0,0 +1,530 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/util/round.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/util/round.hpp new file mode 100755 index 0000000..c65468b --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/util/round.hpp @@ -0,0 +1,145 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/util/scoped-array.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/util/scoped-array.hpp new file mode 100755 index 0000000..237e37c --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/util/scoped-array.hpp @@ -0,0 +1,111 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/util/scoped-ptr.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/util/scoped-ptr.hpp new file mode 100755 index 0000000..a2a08c1 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/util/scoped-ptr.hpp @@ -0,0 +1,126 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/util/singleton.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/util/singleton.hpp new file mode 100755 index 0000000..5f9ca24 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/util/singleton.hpp @@ -0,0 +1,81 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/components/include/util/strings.hpp b/src/tracer/pintool/pin-3.13/extras/components/include/util/strings.hpp new file mode 100755 index 0000000..94c7ee4 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/components/include/util/strings.hpp @@ -0,0 +1,217 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/crt/doc/html/annotated.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/annotated.html new file mode 100755 index 0000000..58a64ef --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/annotated.html @@ -0,0 +1,93 @@ + + + + +PinCRT: Class List + + + + + + + + +
+
+ + + + + + +
+
PinCRT
+
+
+ + +
+
+
+
Class List
+
+ + + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/bc_s.png b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/bc_s.png new file mode 100755 index 0000000000000000000000000000000000000000..e4018628b5b45cb4301037485a29d7d74ac22138 GIT binary patch literal 677 zcmV;W0$TlvP)X?0Pv5h+5!wElpi=&YL!gfY!djl#UDdPKy97F|A-deTa@qo3BWh1YQIvzmHR^g zFjV4I6pLB7_*vEZk^%p7c7Bh>0`4r^X#gpJE_Vz9fSHKqclcZaV^k3gX%h+1`u||O zZ+BY?7(R=ayr^kXE=E0Dw=$Ud3VJ?9^Cz@hP?388Cw5>9TloOJ>^KczCgj zns2=|0!a|)Yq3{hjL{xyy7|Tk0N}Pe+g9PUTL!4{#;eUhrNd@!_T<>Vu+35c)h>sq ztgb?(6W3oFLz#%?OMEV@{j#4LuDvjVGZ~6hpQT8li5b0yjvK8c4efl+vSz5)P6 zle78)00_Iv5)&E~hnOdcd}L}i+MU>k+Q8#@KjqJJN`gRj(~)RmNrck9ht@LelPtVO zwp(J;k!T=gC#%o(13-^E+g@aqc()pf{+j|0w)AH*Mq$54UjLv#jV$RYpz3Vjg$$=u z>yjfBQOhL=^@+#4#$l|{~}HZ-?1Yy{lI*$N}*YDC`<{+;>_#gMXZdz4NI00000 LNkvXXu0mjfx86dR literal 0 HcmV?d00001 diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/classes.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/classes.html new file mode 100755 index 0000000..b5529c6 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/classes.html @@ -0,0 +1,90 @@ + + + + +PinCRT: Class Index + + + + + + + + +
+
+ + + + + + +
+
PinCRT
+
+
+ + +
+
+
+
Class Index
+
+
+
K | O | S | _
+ +
  K  
+
OS_APIS_RW_LOCK_IMPL_T   SIGACTION   _OS_APIS_MUTEX_TYPE   _OS_RETURN_CODE   
kernel_sigaction   OS_MEMORY_AT_ADDR_INFORMATION   
  _  
+
_OS_FILE_UNIQUE_ID   _OS_RETURN_CODE_POSIX   
  O  
+
  S  
+
K | O | S | _
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/closed.png b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/closed.png new file mode 100755 index 0000000000000000000000000000000000000000..b7d4bd9fef2272c74b94762c9e2496177017775e GIT binary patch literal 126 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VuAVNAAr*{o?>h22DDp4|bgj*t z)u^AqcA-V@guRYpb17F<&b?_~8HV>~XqWvB;^$!VVSTy0!eQcJp_yD7TIQA>7dijs YXf6~H5cs^Q6KEiVr>mdKI;Vst0NsWqGynhq literal 0 HcmV?d00001 diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/doxygen.css b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/doxygen.css new file mode 100755 index 0000000..74445fe --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/doxygen.css @@ -0,0 +1,835 @@ +/* The standard CSS for doxygen */ + +body, table, div, p, dl { + font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif; + font-size: 12px; +} + +/* @group Heading Levels */ + +h1 { + font-size: 150%; +} + +.title { + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2 { + font-size: 120%; +} + +h3 { + font-size: 100%; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd, p.starttd { + margin-top: 2px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + padding: 2px; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code { + color: #4665A2; +} + +a.codeRef { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +.fragment { + font-family: monospace, fixed; + font-size: 105%; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; +} + +div.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000); +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 10px; + margin-right: 5px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +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 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +/* @end */ + +/* +.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%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memItemLeft, .memItemRight, .memTemplParams { + border-top: 1px solid #C4CFE5; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; +} + +.memname { + white-space: nowrap; + font-weight: bold; + margin-left: 6px; +} + +.memproto { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 8px; + border-top-left-radius: 8px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 8px; + -moz-border-radius-topleft: 8px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 8px; + -webkit-border-top-left-radius: 8px; + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + +} + +.memdoc { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 2px 5px; + background-color: #FBFCFD; + border-top-width: 0; + /* opera specific markup */ + border-bottom-left-radius: 8px; + border-bottom-right-radius: 8px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 8px; + -moz-border-radius-bottomright: 8px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 60%, #F7F8FB 95%, #EEF1F7); + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 8px; + -webkit-border-bottom-right-radius: 8px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.6,#FFFFFF), color-stop(0.60,#FFFFFF), color-stop(0.95,#F7F8FB), to(#EEF1F7)); +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} + +.params, .retval, .exception, .tparams { + border-spacing: 6px 2px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + + + + +/* @end */ + +/* @group Directory (tree) */ + +/* for the tree view */ + +.ftvtree { + font-family: sans-serif; + margin: 0px; +} + +/* these are for tree view when used as main index */ + +.directory { + font-size: 9pt; + font-weight: bold; + margin: 5px; +} + +.directory h3 { + margin: 0px; + margin-top: 1em; + font-size: 11pt; +} + +/* +The following two styles can be used to replace the root node title +with an image of your choice. Simply uncomment the next two styles, +specify the name of your image and be sure to set 'height' to the +proper pixel height of your image. +*/ + +/* +.directory h3.swap { + height: 61px; + background-repeat: no-repeat; + background-image: url("yourimage.gif"); +} +.directory h3.swap span { + display: none; +} +*/ + +.directory > h3 { + margin-top: 0; +} + +.directory p { + margin: 0px; + white-space: nowrap; +} + +.directory div { + display: none; + margin: 0px; +} + +.directory img { + vertical-align: -30%; +} + +/* these are for tree view when not used as main index */ + +.directory-alt { + font-size: 100%; + font-weight: bold; +} + +.directory-alt h3 { + margin: 0px; + margin-top: 1em; + font-size: 11pt; +} + +.directory-alt > h3 { + margin-top: 0; +} + +.directory-alt p { + margin: 0px; + white-space: nowrap; +} + +.directory-alt div { + display: none; + margin: 0px; +} + +.directory-alt img { + vertical-align: -30%; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable { + border-collapse:collapse; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; +} + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +div.ingroups +{ + font-size: 8pt; + padding-left: 5px; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug +{ + border-left:4px solid; + padding: 0 0 0 6px; +} + +dl.note +{ + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + border-color: #00D000; +} + +dl.deprecated +{ + border-color: #505050; +} + +dl.todo +{ + border-color: #00C0E0; +} + +dl.test +{ + border-color: #3030E0; +} + +dl.bug +{ + border-color: #C08050; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/doxygen.png b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/doxygen.png new file mode 100755 index 0000000000000000000000000000000000000000..635ed52fce7057ac24df92ec7664088a881fa5d0 GIT binary patch literal 3942 zcmV-s51H_ZP)95ENDh(OT9xpYZC{M(=rqI* z+1erNEr&9zRjUI-4rN=4BBz>P@ys*xOjGRjzVE*Fx_qvyt9d@B@BO*&@8Mq!nM{Tc z_WoM84-~xLreSL9@vgZ{m2dF}`u=^ZF3syQ-s2tnBwCI3ZFvSfI20Wbj236~Urq*8Kfw@RKKfRQTgE>}uUHK^ptamY=o)LU(xy55zNQ(`qZ znZ&$O075mrrInIXQgw4%GCbMD8Vn`3n3$EaRwtP1D{A!Gs=e!L%3;ayv@I{rAw{xw z^x^>EIWQM8ob3m}$(BaupDMV;Ed8w5|i(*e`7rU$TOc&1o7`|!LyN5jHI z7uWAR!v4c2xMp?}QmRYyf>i}tYGU(g=>DW&==J@GbhR z5@BNVY3O$`^D%gk4khm9XpFhuwzxUhi9T=Du4rpVuYRSMPHeDqo+4htnZRU@G9`0& z9~p)CsFl1|t*wjfoTo&%davN^3RfJUhQ{ZZIAcD77X^XsF_iR&ZMQ;p>K5*+*48)x z+=<>nh+6Uq85jOkg>{z>a;+V`s(I;I%*5s+R@9a^wNoZ03(g9-EcH%uHvX&yp7`D#`9Kw>DU3s zjD-VuW_A-K)unlS4O3f>_B%pPONUmI#oyL};Lglp3=04>0eBBEw$D1k-$WTsoi#K* z$7h`NcyRZsZ#w~6I<%~u!^xDofYrzF>zVIj2N>Ijs`mVR(Oy&*9f}<{JtQj8jJT!oEc!NQXBq5y|6ET*N?7ox*E6#{i- z@_DLD^IYTtg|Pg?A~!7@OCd8p^)kxK%VBM84docx$Z{MvO)iiqep@or-N}TEU8$%; zJih?#yJ9)V1s_`}c3XbY9V}nEKwNz8ILmR|v)(w|D@oVG;=i`+$*)!(xH{9#$2Za;pyZ1wgU#)mHl|&8%iwu%yncO z`T32Ib0$D}j`c}}5M@M#7oR&G=QwU!!Ja*P7|NJt1@lo=d{_dY-q_lmDcH7{BHncF zR@^PmcLC6EsN?6N{fV3o8}>?h9X_@;=&-p7%tms7$_{3w(anwek_k&<&)~c$Ar?S> zy9gKavndTmxqAbE?SMgcWhXPENdKdz7ntt55Y3Hs3jjc~uR-#$tR(1a_abv9`-QzG z^J0Fsbd&yruq%xAsxf3rc=T}$Zx|AD%x{Fd=? z{qhl3kG5w-PqVK9-Gru%7UIEw)bt$ZMF|Z6HpmO)F%@GNT8yT|#FuWPxv@@Ic={;6 zU7)e!XG|1dx=kU|&|)+m+$&|Yw92Fa;*MnegXcCf8XsHfqg_F5t)3Jt8)EkXKuY21 zqt%4}@R8hK*(_JO0*H+Pa)6Pp&K49rKNeQEYb*x9WY`!`Vh3|80YF%I`lxv9_!$hD zOh$>zWaRIW!);6`vA$Zp;5lnGyX^^N%YEjCeJMHPolKCE1ttIqK<$0w&LcE8)`_c2 z^H^qf6ACV0t7FLLCsu#mL&Mb8gE@rZE#k+1Nrrxw+{N0^#bN*~!qt2>S4e#jC$a$` ze4@{)$aTEYq_!#2|t@Fj3e?w-XVuG$Z}kAR?_kgJAlZIJ)0{eHw#fybNooA zp02jyYVc&w!}m#BVP>ef2|U^J(A-#O1R#A&><*?Y! zOwml{CnE+aU3JfKE@uzge(qMY{^6siuXFt;+mMbapU;Ppejl=L#>s2#SMBbfP9AFT znEVA=TBtZ6d-GfF>kOxylg>Ek%qTp*h2ze!^^hOsmKOEE6b;maQ>~R>3#z`Zawbik z88OTykU3_!Atg^+vnM=1n}?%<$dHzn)?k&T#RWwb+*y;XNQbYNHKo3wr~&}Qa$id; z6^D*K9RTQZUuQVg)g~P%!BIiv+cXllt)KEP9IN)1udQKf>p|~lXj7K<-9}0Q%i9+K zXaF7qXclE>sf)7)J4_M%V{;(sFT7HN$o0#_qU#Ah1D{ zon=JihPcgG5xHuvQwOXBkt3(iUdx{6Gn|aa>@C9Cqg%rPK(+REZ4>6t3z7m@Aj;0l zSHh&%cKSJ*+WOJGwe?Y7d(9RAy)&NVS6uj}1m@U}jXH3oVQT9E0A)$ZDRdK>;_i;+ z7vbEoI7$1XK6vNxT(_sJ(GM4s92e;gB&Q zDO;(Ve^%gPG&lWW1fUf_=9-Q1%&`s%aD^o`Q2u`WI9V>Qm#D5?SW<)Njmt@aR5@6( zL4cdTo+Jg@>Brm1^_gf%0Z?}1AppR3NdFE5uzdpBZz;{Thd6SI-$gb2}pFAww$*j(2=s{mdz2E;lBvVcrN@}i2bC`Q5Y_;BID^f0J+ACVhyQsLg0@`okIk+i=LJ=3yvI*oASj62 za3C{Pu_fQ+atw!zN{$Shr*_UV=|jp4#CqWeGE?Jb`pq!|5bDES&-Ix=-N>DpydHqW z+-{QS+i)d;uGS)M%Suw9khR}3N82j|S{a#&Tctme0s%mTy<1S|;@M-+S4#o@!qr;r z+w(n=;@43Y_n#dI0Gb(T0{G7k-KY8k`MPM_Bss$?)SK){KJMrwv!vz42_U_Za zX7lDqiU8ZvCAfGpAtfVC5bQrYa4C)M9G$S4D&VqpJ8)lm$t5FAAR%ywf>*~VaivC70RVFXISv4Lx&tk^Cf1)qQ|rxp z*8H>)cgoM;(eKxH14u~~@JopNr9@A z#-yXVG?$es;EPqsn-j?45^L52U=nT#0A^T3JY$&B3EH&%2UHdv3P=_3$!n76!34ks zz^2ii@sXAu8LKYMmG=_^*qtiiOFNlG3?QYtG%wrCZh|)vlj8vq3sw~f1b8;_TMB>z zPSyDQy_9bbXD*#sNRGMzfSAwUD}ASX;ZGQcGdE=9q~ORU{v$}=z2Bc8EOe2S&);jS zCZB8P`hPoV1NBk)TQP2z{q$NL-GLUc7%>&fecE^E{I5gs?8!qTK7VgR7Z?}-`YG|z zVN-NvOlQ+B;~J*69_Xd1n-0MLKTY6&*%rTi*0^HXniz8{bCMsVpSXqs(GGO)*_#Kz z9YBCQ_VRhtwhMfppMh@OdxjCN0mH`5hKZr>UoxMx`W~u^kD&bskplglOiRxQvep*2 z0mk+kMP>J)K`8X3`6Zq|X~5IQ-_rrOn+_WvU{1Gs{ow1-Eb;K(Z?p$@ugXpr^?PM( z(5Hv;$*X=QZaqG_4q)N1v9sO(Dsei!;%IcIztt6YUs{yj z^77e`UYa^%<-Ts+d*b=ihKt?0_sj!ePNO@K*PGmGD*v^;rRAkduikx~UNk=@{XKeV zp_ir(dTaGVWBr{_02Kg2Xmlsn|IvIIRYivbo|L{yx}yX5Bte@P6C>1KyqvYnT{boB#j-07*qoM6N<$f^XQQ A+yDRo literal 0 HcmV?d00001 diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/functions.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/functions.html new file mode 100755 index 0000000..ac0aa17 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/functions.html @@ -0,0 +1,120 @@ + + + + +PinCRT: Class Members + + + + + + + + +
+
+ + + + + + +
+
PinCRT
+
+
+ + + +
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/functions_vars.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/functions_vars.html new file mode 100755 index 0000000..bc9548e --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/functions_vars.html @@ -0,0 +1,120 @@ + + + + +PinCRT: Class Members - Variables + + + + + + + + +
+
+ + + + + + +
+
PinCRT
+
+
+ + + +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__DEF.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__DEF.html new file mode 100755 index 0000000..3aaa050 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__DEF.html @@ -0,0 +1,201 @@ + + + + +PinCRT: Generic error codes + + + + + + + + +
+
+ + + + + + +
+
PinCRT
+
+
+ +
+
+ +
+
Generic error codes
+
+
+ +

os_return_codes.h +

+ + + + + + + +

+Classes

struct  _OS_RETURN_CODE

+Typedefs

typedef struct _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 +
+ }
+

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

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__FILE.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__FILE.html new file mode 100755 index 0000000..24ec14c --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__FILE.html @@ -0,0 +1,1547 @@ + + + + +PinCRT: File + + + + + + + + +
+
+ + + + + + +
+
PinCRT
+
+
+ +
+
+ +
+
File
+
+
+ +

Contains file related os apis. +

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

+Classes

struct  _OS_FILE_UNIQUE_ID

+Typedefs

typedef struct _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)
+

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]dirThe directory to move to.
[out]cwdBuffer to receive the CWD.
[in]lenMax buffer length for cwd.
+
+
+
Return values:
+ + + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_FILE_QUERY_FAILEDIf current directory capture failed
OS_RETURN_CODE_FILE_OPEN_FAILEDIf the operation failed
+
+
+
Availability:
O/S: Windows, Linux & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + +
OS_RETURN_CODE OS_CloseFD (NATIVE_FD fd)
+
+
+

Closes fd and removes references to it from the process.

+
Parameters:
+ + +
[in]fdFile descriptor
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_FILE_CLOSE_FAILEDIf the operation failed
+
+
+
Availability:
O/S: Windows, Linux & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_Cwd (CHAR * cwd,
INT len 
)
+
+
+

Retrieves size in bytes of fd.

+
Parameters:
+ + + +
[out]cwdBuffer to receive the CWD.
[in]lenMax buffer length.
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_FILE_QUERY_FAILEDIf the operation failed
+
+
+
Availability:
O/S: Windows, Linux & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + +
OS_RETURN_CODE OS_DeleteDirectory (const CHAR * name)
+
+
+

Deletes a directory.

+
Parameters:
+ + +
[in]nameDirectory file name to delete.
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded.
OS_RETURN_CODE_FILE_DELETE_FAILEDIf the operation failed.
+
+
+
Availability:
O/S: Windows, Linux & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + +
OS_RETURN_CODE OS_DeleteFile (const CHAR * name)
+
+
+

Delete a file by name

+
Parameters:
+ + +
[in]nameFile path.
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_FILE_DELETE_FAILEDIf the operation failed
+
+
+
Availability:
O/S: Windows, Linux & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_DuplicateFD (NATIVE_FD fd,
BOOL_T dupCloseOnExec,
NATIVE_FDoutFd 
)
+
+
+

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]fdFile descriptor to duplicate an ID.
[in]dupCloseOnExecTRUE to duplicate the close-on-exec property of the descriptor, FALSE otherwise.
[out]outFdResult duplicated file descriptor.
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_FILE_OPERATION_FAILEDIf the operation failed
+
+
+
Availability:
O/S: Linux & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_FilePermissionsFD (NATIVE_FD fd,
OS_FILE_PERMISSION_TYPEpermissions 
)
+
+
+

Retrieve the current permissions for the specified file.

+
Parameters:
+ + + +
[in]fdFile descriptor
[out]permissionsor'ed OS_FILE_PERMISSION_TYPE.
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_FILE_QUERY_FAILEDIf the operation failed
+
+
+
Remarks:
On Unix, will provide the user (not group/other) permissions.
+
Availability:
O/S: Windows, Linux & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_FileSizeFD (NATIVE_FD fd,
USIZE * size 
)
+
+
+

Retrieves size in bytes of fd.

+
Parameters:
+ + + +
[in]fdFile descriptor
[out]sizeNumber of bytes.
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_FILE_QUERY_FAILEDIf the operation failed
+
+
+
Availability:
O/S: Windows, Linux & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_FileUniqueID (NATIVE_FD fd,
OS_FILE_UNIQUE_IDuniqueId 
)
+
+
+

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]fdFile descriptor to calculate an ID.
[out]uniqueIdThe calculate unique ID (opaque binary data)
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_FILE_QUERY_FAILEDIf 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]fdFile descriptor
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_FILE_FLUSH_FAILEDIf 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]fdFile descriptor to change his size.
[in]lengthFile new length.
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_FILE_OPERATION_FAILEDIf the operation failed
+
+
+
Availability:
O/S: Windows & Linux & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_GetFDAccessMode (NATIVE_FD fd,
OS_FILE_OPEN_TYPEmode 
)
+
+
+

Get the permissions type requested when fd was opened. This is useful to check whether we can read or write fd.

+
Parameters:
+ + + +
[in]fdFile descriptor to check.
[out]modeThe permissions of the file descriptor.
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded.
OS_RETURN_CODE_FILE_QUERY_FAILEDIf the operation failed.
+
+
+
Availability:
O/S: Windows, Linux & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_GetFDAttributes (NATIVE_FD fd,
OS_FILE_ATTRIBUTESattr 
)
+
+
+

Query fd's file attributes

+
Parameters:
+ + + +
[in]fdFile descriptor
[out]attrFile attributes
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_FILE_QUERY_FAILEDIf the operation failed
+
+
+
Availability:
O/S: Windows, Linux & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_GetFileAttributes (const CHAR * path,
OS_FILE_ATTRIBUTESattr 
)
+
+
+

Query file attributes of the file denoted by path

+
Parameters:
+ + + +
[in]pathPath to file
[out]attrFile attributes
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_FILE_QUERY_FAILEDIf the operation failed
+
+
+
Availability:
O/S: Windows, Linux & macOS*
+ 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:
+ + +
Lowestfile descriptor to use.
+
+
+
Availability:
O/S: Linux & macOS*
+ 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]fdFile descriptor to check.
[out]isConsolenon-zero if 'fd' is the application's console. Zero otherwise.
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded.
OS_RETURN_CODE_FILE_QUERY_FAILEDIf the operation failed.
+
+
+
Availability:
O/S: Windows, Linux & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_MkDir (const CHAR * name,
INT mode 
)
+
+
+

Creates a directory.

+
Parameters:
+ + + +
[in]nameDirectory file name to create.
[in]modeFile mode to create the directory.
+
+
+
Return values:
+ + + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded.
OS_RETURN_CODE_FILE_EXISTDirectory exists.
OS_RETURN_CODE_FILE_OPEN_FAILEDIf the operation failed.
+
+
+
Availability:
O/S: Windows, Linux & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_OpenDirFD (const CHAR * name,
NATIVE_FDfd 
)
+
+
+

Opens a directory for browsing.

+
Parameters:
+ + + +
[in]nameDirectory file name to open.
[out]fdPointer to returned file descriptor.
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_FILE_OPEN_FAILEDIf the operation failed
+
+
+
Availability:
O/S: Windows, Linux & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_OpenFD (const CHAR * path,
INT flags,
INT mode,
NATIVE_FDfd 
)
+
+
+

The file name specified by path is opened for reading and/or writing, as specified by the argument flags.

+
Parameters:
+ + + + + +
[in]pathFile path.
[in]flagsor'ed OS_FILE_OPEN_TYPE. If mode OS_FILE_OPEN_TYPE_CREATE
+ was given, the file is created with mode.
[in]modeIf 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]fdReturned file descriptor
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_FILE_OPEN_FAILEDIf the operation Failed
+
+
+
Returns:
fd - Assigned with the file descriptor
+
+
Availability:
O/S: Windows, Linux & macOS*
+ 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]fdFile descriptor
[in,out]countBytes to read/Bytes read
[out]bufferOutput buffer
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_FILE_READ_FAILEDIf 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 & macOS*
+ 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]fdFile descriptor
[in,out]countBytes to read
[out]bufferOutput buffer
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_FILE_READ_FAILEDIf 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 & macOS*
+ 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]pathPath to the symbolic link to read.
[out]bufThe path where the symlink points to.
[in,out]sizeThe number of bytes in buf, returns the number of bytes filled inside buf.
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded.
OS_RETURN_CODE_FILE_QUERY_FAILEDIf the operation failed.
+
+
+
Availability:
O/S: Linux & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + +
void OS_RelocateAndReportFileOpen (NATIVE_FDfd)
+
+
+

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]fdFile descriptor to relocate and record.
+
+
+
Availability:
O/S: Linux & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_RenameFile (const CHAR * oldPath,
const CHAR * newPath 
)
+
+
+

Renamed the file oldPath to newPath

+
Parameters:
+ + + +
[in]oldPathFilename to rename
[in]newPathNew filename to rename to
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_FILE_OPERATION_FAILEDIf the operation failed
+
+
+
Availability:
O/S: Windows, Linux & macOS*
+ 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]fdFile descriptor to record.
+
+
+
Availability:
O/S: Linux & macOS*
+ 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]fdFile descriptor to record.
+
+
+
Availability:
O/S: Linux & macOS*
+ 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]fdFile descriptor
[in]whenceOS_FILE_SEEK_TYPE
[in,out]offsetBytes to move
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_FILE_SEEK_FAILEDIf the operation failed
+
+
+
Returns:
offset - Assigned with the number of bytes successfully read
+
+
Availability:
O/S: Windows, Linux & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + +
BOOL_T OS_WasFileReportedOpen (NATIVE_FD fd)
+
+
+

Queries whether a certain file descriptor was opened by OS-APIs or not.

+
Parameters:
+ + +
[in]fdFile descriptor to query.
+
+
+
Availability:
O/S: Linux & macOS*
+ 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]fdFile descriptor
[in]bufferData buffer
[in,out]countBytes to write
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_FILE_WRITE_FAILEDIf the operation failed
+
+
+
Returns:
size Assigned with the number of bytes successfully written
+
+
Availability:
O/S: Windows, Linux & macOS*
+ CPU: All
+
+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__HOST.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__HOST.html new file mode 100755 index 0000000..88d47d8 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__HOST.html @@ -0,0 +1,403 @@ + + + + +PinCRT: Host machine queries + + + + + + + + +
+
+ + + + + + +
+
PinCRT
+
+
+ +
+
+ +
+
Host machine queries
+
+
+ +

host.h +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

+

Contains API for host related queries

+

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]archThe architecture to get a string for it
+
+
+
Return values:
+ + +
read-onlystring representing the CPU arch
+
+
+
Availability:
O/S: Windows, Linux & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + +
OS_RETURN_CODE OS_GetHostCPUArch (OS_HOST_CPU_ARCH_TYPEarch)
+
+
+

Query CPU architecture.

+
Parameters:
+ + +
[out]archThe architecture of this system's CPU
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_QUERY_FAILEDIf the operation failed
+
+
+
Availability:
O/S: Windows, Linux & macOS*
+ 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]bufBuffer to receive the host name
[in]buflenSize of buffer buf in bytes
+
+
+
Return values:
+ + + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_BUFFER_TOO_SHORTIf the buffer buf is too short
OS_RETURN_CODE_QUERY_FAILEDIf the operation failed
+
+
+
Availability:
O/S: Windows, Linux & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_GetKernelRelease (CHAR * buf,
USIZE bufsize 
)
+
+
+

Get kernel release description string.

+
Parameters:
+ + + +
[out]bufBuffer to receive the release string
[in]bufsizeSize of buffer buf in bytes
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_QUERY_FAILEDIf the operation failed
+
+
+
Availability:
O/S: Windows, Linux & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_GetOSName (CHAR * buf,
USIZE bufsize 
)
+
+
+

Get the name of the operating system we're running on.

+
Parameters:
+ + + +
[out]bufBuffer to receive the OS name string
[in]bufsizeSize of buffer buf in bytes
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_QUERY_FAILEDIf the operation failed
+
+
+
Availability:
O/S: Windows, Linux & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_GetOSVersion (CHAR * buf,
USIZE bufsize 
)
+
+
+

Get the version of the operating system we're running on.

+
Parameters:
+ + + +
[out]bufBuffer to receive the OS version string
[in]bufsizeSize of buffer buf in bytes
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_QUERY_FAILEDIf the operation failed
+
+
+
Availability:
O/S: Windows, Linux & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + +
OS_RETURN_CODE OS_ReadProcessorFrequency (UINT32 * freq)
+
+
+

Get CPU processor frequency in MHz.

+
Parameters:
+ + +
[out]freqFrequency of the CPU
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_QUERY_FAILEDIf the operation failed
+
+
+
Availability:
O/S: macOS*
+ CPU: All
+
+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__IPC.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__IPC.html new file mode 100755 index 0000000..5f7e3cf --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__IPC.html @@ -0,0 +1,742 @@ + + + + +PinCRT: IPC + + + + + + + + +
+
+ + + + + + +
+
PinCRT
+
+
+ +
+
+ +
+
IPC
+
+
+ +

memory.h +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

+

ipc-pipe.h

+

Contains IPC related os apis

+

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_FDnewfd 
)
+
+
+

Accepts a new connection on a listening socket. See man page of accept(2) for more details.

+
Parameters:
+ + + + + +
[in]sockfdThe listening socket
[out]addrThe address of the remote connection that was accepted.
[in,out]addrlenThe size in bytes of addr, returns the number of bytes writen to addr.
[out]newfdThe file descriptor of the socket created for this session.
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_FILE_OPEN_FAILEDIf the operation failed
+
+
+
Availability:
O/S: Linux & macOS*
+ 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]sockfdThe socket to bind.
[in]addrThe address to bind the socket to.
[in]addrlenThe size in bytes of addr.
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_FILE_OPEN_FAILEDIf the operation failed
+
+
+
Availability:
O/S: Linux & macOS*
+ 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]sockfdThe socket to initiate the connect from.
[in]addrThe address of the remote socket to connect to.
[in]addrlenThe size in bytes of addr.
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_FILE_OPEN_FAILEDIf the operation failed
+
+
+
Availability:
O/S: Linux & macOS*
+ 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]sockfdThe socket to initiate the connect from.
[out]addrThe address where the socket was bound.
[in,out]addrlenThe size in bytes of addr, returns the number of bytes writen to addr.
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_FILE_OPEN_FAILEDIf the operation failed
+
+
+
Availability:
O/S: Linux & macOS*
+ 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]sockfdThe socket to listen on.
[in]backlogNumber of connections to backlog (the meanning of it depends on the OS and kernel version).
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_FILE_OPEN_FAILEDIf the operation failed
+
+
+
Availability:
O/S: Linux & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_Pipe (OS_PIPE_CREATE_FLAGS flags,
NATIVE_FDreadFd,
NATIVE_FDwriteFd 
)
+
+
+

Creates an anonymous pipe, and returns handles to the read and write ends of the pipe.

+
Parameters:
+ + + + +
[in]flagsPipes creation flags
[out]readFdFile descriptor for the read side
[out]writeFdFile descriptor for the write side
+
+
+
Return values:
+ + + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_INVALID_ARGSOne of the input arguments is invalid.
OS_RETURN_CODE_FILE_OPEN_FAILEDIf 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]sockfdThe socket to send data to.
[in]bufferData buffer
[in]flagsMessage flags
[in]dest_addrSocket destination address
[in]dest_lenSize of dest_addr
[in,out]buf_lengthLength of the bytes in buffer / bytes sent
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_FILE_WRITE_FAILEDIf the operation failed
+
+
+
Availability:
O/S: Linux & macOS*
+ 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]sockfdThe file descriptor of the socket to shut down.
[in]howBitwise 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_ERRORIf the operation succeeded
OS_RETURN_CODE_INVALID_ARGSIf the value of how is invalid.
OS_RETURN_CODE_FILE_CLOSE_FAILEDIf the operation failed
+
+
+
Availability:
O/S: Linux & macOS*
+ 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_FDfd 
)
+
+
+

Creates a socket. See man page of socket(2) for more details.

+
Parameters:
+ + + + + +
[in]domainSocket domain
[in]typeSocket type
[in]protocolSocket Protocol
[out]fdCreated file descriptor for the socket
+
+
+
Return values:
+ + + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_INVALID_ARGSOne of the input arguments is invalid.
OS_RETURN_CODE_FILE_OPEN_FAILEDIf the operation failed
+
+
+
Availability:
O/S: Linux & macOS*
+ CPU: All
+
+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__MEMORY.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__MEMORY.html new file mode 100755 index 0000000..2d175cc --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__MEMORY.html @@ -0,0 +1,542 @@ + + + + +PinCRT: Memory + + + + + + + + +
+
+ + + + + + +
+
PinCRT
+
+
+ +
+
+ +
+
Memory
+
+
+ +

Contains memory related os apis. +

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

+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)
+

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]processIdPID of the target process
[in]protectionTypeor'ed protection options
[in]sizeSize of memory to allocate
[in]flagsProperties of the region to allocate. This is a bitwise OR of the enum values in OS_MEMORY_FLAGS.
[in,out]basein: Target memory address
+ out: Where the memory was allocated
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_MEMORY_MAP_FAILEDIf 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 & macOS*
+ 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]processIdPID of the target process
[in]baseTarget memory address
[in]sizeSize in bytes of memory to free
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_MEMORY_FREE_FAILEDIf 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 & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + +
OS_RETURN_CODE OS_GetPageSize (USIZE * size)
+
+
+

Query the system page size.

+
Parameters:
+ + +
[out]sizeSystem page size
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_QUERY_FAILEDIf the operation failed
+
+
+
Availability:
O/S: Windows, Linux & macOS*
+ 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]processIdPID of the target process
[in]protectionTypeor'ed protection options
[in]sizeSize in bytes of memory to allocate
[in]flagsProperties of the region to allocate. This is a bitwise OR of the enum values in OS_MEMORY_FLAGS.
[in]fdFile 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]offsetBytes offset in the file to start mapping from.
[in,out]basein: Target memory address
+ out: Where the memory was allocated
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_MEMORY_MAP_FAILEDIf 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 & macOS*
+ 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]processIdPID of the target process
[in]baseThe address of the starting page - must be page aligned.
[in]sizeSize in bytes of the region to change protection - must be multiple of page size.
[in]newProtectionTypeThe new protection mode
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_MEMORY_PROTECT_FAILEDIf 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 & macOS*
  • +
  • CPU: All
  • +
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_QueryMemory (NATIVE_PID processId,
VOID * memoryAddr,
OS_MEMORY_AT_ADDR_INFORMATIONinfo 
)
+
+
+

Retrieves the information on the memory block containing memoryAddr.

+
Parameters:
+ + + + +
[in]processIdPID of the target process
[in]memoryAddrTarget memory address. This memory address can reside inside the page.
[out]infoThe 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_ERRORIf the operation succeeded
OS_RETURN_CODE_QUERY_FAILEDIf 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 & macOS*
+ CPU: All
+
+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__MUTEX.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__MUTEX.html new file mode 100755 index 0000000..1986285 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__MUTEX.html @@ -0,0 +1,667 @@ + + + + +PinCRT: Mutex + + + + + + + + +
+
+ + + + + + +
+
PinCRT
+
+
+ +
+
+ +
+
Mutex
+
+
+ +

Implementation of mutex lock. +

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

+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 struct _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)
+

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 & macOS*
  • +
  • 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 & macOS*
  • +
  • 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 & macOS*
  • +
  • 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]lockThe mutex to destroy.
+
+
+
Availability:
    +
  • O/S: Windows, Linux & macOS*
  • +
  • CPU: All
  • +
+
+ +
+
+ +
+
+ + + + + + + + +
NATIVE_TID OS_MutexGetOwner (volatile OS_MUTEX_TYPE * lock)
+
+
+

Queries the owner of a recursive mutex.

+
Parameters:
+ + +
[in]lockThe mutex to query.
+
+
+
Return values:
+ + +
NATIVE_TIDThe 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 & macOS*
  • +
  • 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]lockThe mutex to query.
+
+
+
Return values:
+ + +
UINT32The 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 & macOS*
  • +
  • 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]lockThe mutex to initialize.
+
+
+
Availability:
    +
  • O/S: Windows, Linux & macOS*
  • +
  • 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]lockThe mutex to check.
+
+
+
Return values:
+ + +
TRUEIf the mutex is locked.
+
+
+
Availability:
    +
  • O/S: Windows, Linux & macOS*
  • +
  • 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]lockThe mutex to acquire.
+
+
+
Availability:
    +
  • O/S: Windows, Linux & macOS*
  • +
  • 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]lockThe mutex to acquire.
[in]tidThe 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 & macOS*
  • +
  • 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]lockThe mutex to initialize.
+
+
+
Availability:
    +
  • O/S: Windows, Linux & macOS*
  • +
  • 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]lockThe mutex to acquire.
[in]timeoutMillisThe timeout to block.
+
+
+
Return values:
+ + +
TRUEIf 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 & macOS*
  • +
  • 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]lockThe mutex to acquire.
[in]timeoutMillisThe timeout to block.
[in]tidThe 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:
+ + +
TRUEIf 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 & macOS*
  • +
  • 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]lockThe mutex to acquire.
+
+
+
Return values:
+ + +
TRUEIf the mutex was acquired.
+
+
+
Availability:
    +
  • O/S: Windows, Linux & macOS*
  • +
  • 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]lockThe mutex to acquire.
[in]tidThe 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:
+ + +
TRUEIf the mutex was acquired.
+
+
+
Availability:
    +
  • O/S: Windows, Linux & macOS*
  • +
  • CPU: All
  • +
+
+ +
+
+ +
+
+ + + + + + + + +
BOOL_T OS_MutexUnlock (volatile OS_MUTEX_TYPE * lock)
+
+
+

Releases a mutex.

+
Parameters:
+ + +
[in]lockThe mutex to release.
+
+
+
Return values:
+ + +
TRUEIf the mutex was locked and as a result of this call was unlocked.
+
+
+
Availability:
    +
  • O/S: Windows, Linux & macOS*
  • +
  • CPU: All
  • +
+
+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__PIN__TLS.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__PIN__TLS.html new file mode 100755 index 0000000..40a26cf --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__PIN__TLS.html @@ -0,0 +1,464 @@ + + + + +PinCRT: Thread local storage + + + + + + + + +
+
+ + + + + + +
+
PinCRT
+
+
+ +
+
+ +
+
Thread local storage
+
+
+ +

Contains API for thread local storage (TLS). +

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

+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)
+

Typedef Documentation

+ +
+
+ + + + +
typedef ADDRINT PIN_TLS_INDEX
+
+
+

Type for index inside the dynamic TLS.

+ +
+
+ +
+
+ + + + +
typedef VOID(* TLS_DESTRUCTOR)(VOID *)
+
+
+

Prototype for TLS value destructor 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]destructorDestructor function that will be called with the pointer to the fixed TLS when a thread terminates.
+
+
+
Availability:
O/S: Windows, Linux & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + +
PIN_TLS_INDEX OS_TlsAlloc (TLS_DESTRUCTOR dest)
+
+
+

Allocates a new slot in the dynamic TLS.

+
Parameters:
+ + +
[in]destOptional 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 & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + +
BOOL_T OS_TlsFree (PIN_TLS_INDEX idx)
+
+
+

Free a previously allocated slot in the dynamic TLS.

+
Parameters:
+ + +
[in]idxThe index to free.
+
+
+
Returns:
True on success.
+
Availability:
O/S: Windows, Linux & macOS*
+ 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]ntidThe thread ID for which the TLS need to be freed.
+
+
+
Availability:
O/S: Windows, Linux & macOS*
+ 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 & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + +
VOID** OS_TlsGetArrayAddressForThread (NATIVE_TID ntid)
+
+
+

Return the address of the static TLS for a particular thread

+
Parameters:
+ + +
[in]ntidThe 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 & macOS*
+ 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 & macOS*
+ 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]idxThe index of the value to get.
+
+
+
Returns:
Pointer to the value, or NULL otherwise.
+
Availability:
O/S: Windows, Linux & macOS*
+ 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]idxThe index of the value to get.
[in]ntidThe thread ID for which the TLS value will be retrieved.
+
+
+
Returns:
Pointer to the value, or NULL otherwise.
+
Availability:
O/S: Windows, Linux & macOS*
+ 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]idxThe index of the value to set.
[in]valThe new value to set.
+
+
+
Returns:
True on success.
+
Availability:
O/S: Windows, Linux & macOS*
+ 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]idxThe index of the value to set.
[in]ntidThe thread ID for which the value will be set in its TLS.
[in]valThe new value to set.
+
+
+
Returns:
True on success.
+
Availability:
O/S: Windows, Linux & macOS*
+ CPU: All
+
+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__PROCESS.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__PROCESS.html new file mode 100755 index 0000000..03c07a1 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__PROCESS.html @@ -0,0 +1,587 @@ + + + + +PinCRT: Process + + + + + + + + +
+
+ + + + + + +
+
PinCRT
+
+
+ +
+
+ +
+
Process
+
+
+ +

Contains process-related os apis. +

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

+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 ()
UINT32 OS_GetForksCount ()
+

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_FDstdFiles,
NATIVE_FDcloseFiles,
char ** environ,
OS_PROCESS_WAITABLE_PROCESSprocess 
)
+
+
+

Create a process, possibly redirect its standard input/output/error. The process is created using the system command line interpreter or shell.

+
Parameters:
+ + + + + + +
[in]argsFull command line for the process.
[in]stdFilesPoints 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]environPointer to the environment block to use in the new process.
[out]processAn 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_ERRORIf the operation succeeded
OS_RETURN_CODE_PROCESS_QUERY_FAILEDIf the operation Failed
+
+
+
Availability:
O/S: Windows, Linux & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + +
NORETURN void OS_ExitProcess (INT code)
+
+
+

Exits the current process.

+
Parameters:
+ + +
[in]codeProcess descriptor
+
+
+
Availability:
O/S: Windows, Linux & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + +
OS_RETURN_CODE OS_FindStdFiles (NATIVE_FDfiles)
+
+
+

Queries whether the current process is being debugged.

+
Parameters:
+ + +
[out]filesPoints 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_ERRORIf the operation succeeded
OS_RETURN_CODE_PROCESS_QUERY_FAILEDIf 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]pidProcess descriptor
[out]argcCommand line's argc
[out]argvCommand line's argv array, allocated by this function (with OS_AllocateMemory())
[out]bufsizeSize in bytes of the buffer pointer by argv
+
+
+
Returns:
Operation status code.
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_PROCESS_QUERY_FAILEDIf the operation Failed
+
+
+
Availability:
O/S: Windows, Linux & macOS*
+ 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]pidProcess descriptor.
[out]blockReturn pointer to point to the environment block.
[out]bufSizeNumber of bytes allocated for the envrionement block.
+
+
+
Returns:
Operation status code.
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_PROCESS_UPDATE_FAILEDIf the operation Failed
+
+
+
Note:
On Linux and macOS* 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 & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + +
UINT32 OS_GetForksCount ()
+
+
+

Get the current generation of forked processes. This value is increased by one every time OS_NotifyFork() is called.

+
Availability:
    +
  • O/S: Linux & macOS*
  • +
  • CPU: All
  • +
+
+ +
+
+ +
+
+ + + + + + + + +
OS_RETURN_CODE OS_GetPid (NATIVE_PIDpid)
+
+
+

Retrieves the process ID of the current process.

+
Parameters:
+ + +
[out]pidProcess descriptor
+
+
+
Returns:
Operation status code.
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_PROCESS_QUERY_FAILEDIf the operation Failed
+
+
+
Availability:
O/S: Windows, Linux & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + +
OS_RETURN_CODE OS_GetUid (NATIVE_UID * uid)
+
+
+

Queries whether the current process is being debugged.

+
Parameters:
+ + +
[out]uidProcess descriptor
+
+
+
Returns:
Operation status code.
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_PROCESS_QUERY_FAILEDIf the operation Failed
+
+
+
Availability:
O/S: Linux & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_IsDebuggerPresent (NATIVE_PID pid,
BOOL_TisPresent 
)
+
+
+

Queries whether the current process is being debugged.

+
Parameters:
+ + + +
[out]pidProcess descriptor
[out]isPresentTrue if the process 'pid' is being debugged.
+
+
+
Returns:
Operation status code.
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_PROCESS_QUERY_FAILEDIf the operation Failed
+
+
+
Availability:
O/S: Windows, Linux & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + +
void OS_NotifyFork ()
+
+
+

Notify the locking mechanism about a forked child.

+
Note:
Must be called earliest as possible by the child process after it was created for functional correctness.
+
Availability:
    +
  • O/S: Linux & macOS*
  • +
  • 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 & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_WaitForProcessTermination (OS_PROCESS_WAITABLE_PROCESS process,
UINT32 * exitStatus 
)
+
+
+

Wait for process termination.

+
Parameters:
+ + + +
[in]processAn opaque object representing the process to wait for.
[out]exitStatusThe exit status of the terminated process.
+
+
+
Returns:
Operation status code.
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_PROCESS_QUERY_FAILEDIf the operation Failed
+
+
+
Availability:
O/S: Windows, Linux & macOS*
+ CPU: All
+
+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__RW__LOCK.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__RW__LOCK.html new file mode 100755 index 0000000..9367a7b --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__RW__LOCK.html @@ -0,0 +1,341 @@ + + + + +PinCRT: Readers writers lock + + + + + + + + +
+
+ + + + + + +
+
PinCRT
+
+
+ +
+
+ +
+
Readers writers lock
+
+
+ +

Implementation of readers writers lock. +

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

+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)
+

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]lockThe lock to acquire
+
+
+
Availability:
O/S: Windows, Linux & macOS*
+ 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]lockThe lock to acquire
+
+
+
Availability:
O/S: Windows, Linux & macOS*
+ 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]lockThe lock to destroy
+
+
+
Availability:
O/S: Windows, Linux & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + +
void OS_RWLockInitialize (volatile OS_APIS_RW_LOCK_T * l)
+
+
+

Initializes a reader-writer lock.

+
Parameters:
+ + +
[in]lockThe lock to initialize
+
+
+
Availability:
O/S: Windows, Linux & macOS*
+ 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]lockThe 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 & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + +
void OS_RWLockReleaseRead (volatile OS_APIS_RW_LOCK_T * lock)
+
+
+

Releases the lock for reader.

+
Parameters:
+ + +
[in]lockThe lock to release
+
+
+
Availability:
O/S: Windows, Linux & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + +
void OS_RWLockReleaseWrite (volatile OS_APIS_RW_LOCK_T * lock)
+
+
+

Releases the lock for writer.

+
Parameters:
+ + +
[in]lockThe lock to release
+
+
+
Availability:
O/S: Windows, Linux & macOS*
+ 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]lockThe lock to acquire
+
+
+
Returns:
TRUE If the reader lock was acquired.
+
Availability:
O/S: Windows, Linux & macOS*
+ 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]lockThe lock to acquire
+
+
+
Returns:
TRUE If the writer lock was acquired.
+
Availability:
O/S: Windows, Linux & macOS*
+ CPU: All
+
+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__SIGNALS.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__SIGNALS.html new file mode 100755 index 0000000..87eb234 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__SIGNALS.html @@ -0,0 +1,329 @@ + + + + +PinCRT: Signals + + + + + + + + +
+
+ + + + + + +
+
PinCRT
+
+
+ +
+
+ +
+
Signals
+
+
+ +

Contains signals related os apis. +

+ + + + + + + + + + +

+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)
+

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]pidThe process to send signal to.
[in]signalThe signal to send.
+
+
+
Returns:
Operation status code.
+
Availability:
O/S: Linux & macOS*
+ 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]pidThe process ID where the thread is running.if it's INVALID_NATIVE_PID then we ignore the pid.
[in]tidThe thread ID to send the signal to.
[in]signalThe signal to send.
+
+
+
Returns:
Operation status code.
+
Availability:
O/S: Linux & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_SigAction (INT signum,
const struct SIGACTIONact,
struct SIGACTIONoldact 
)
+
+
+

Change the action taken by a process on receipt of a specific signal. This function is compatible with POSIX sigaction().

+
Parameters:
+ + + + +
[in]signumThe signal to alter its behavior.
[in]actThe action to be taken upon signal reception.
[in]oldactThe previous action that was taken upon signal reception.
+
+
+
Returns:
Operation status code.
+
Availability:
O/S: Linux & macOS*
+ 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]setWhere to store the signal set.
+
+
+
Returns:
Operation status code.
+
Availability:
O/S: Linux & macOS*
+ 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]howSpecifies 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]setThe signal set to alter.
[in]oldsetThe previous blocked signals set.
+
+
+
Returns:
Operation status code.
+
Availability:
O/S: Linux & macOS*
+ 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]maskThe mask to use for the signals
+
+
+
Returns:
Operation status code.
+
Availability:
O/S: Linux & macOS*
+ CPU: All
+
+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__THREAD.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__THREAD.html new file mode 100755 index 0000000..e40547b --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__THREAD.html @@ -0,0 +1,465 @@ + + + + +PinCRT: Threads + + + + + + + + +
+
+ + + + + + +
+
PinCRT
+
+
+ +
+
+ +
+
Threads
+
+
+ +

threads.h +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

+

Contains thread-related os apis

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_CreateThread (VOID(*)(VOID *) ThreadMainFunction,
VOID * ThreadParam,
VOID * stackBottom,
ADDRINT stackSize,
NATIVE_TIDtd 
)
+
+
+

Create a new thread in the current process.

+
Parameters:
+ + + + + + +
[in]ThreadMainFunctionThread start address
[in]ThreadParamThread optional parameter
[in]stackBottomThe 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]stackSizeThe size of the thread's stack.
[out]tdThe descriptor of newly created thread.
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_THREAD_CREATE_FAILEDIf the operation Failed
+
+
+
Returns:
Operation status code.
+
Availability:
O/S: Windows, Linux & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + +
OS_RETURN_CODE OS_ExitThread (NATIVE_TID td)
+
+
+

Causes a running thread to exit.

+
Parameters:
+ + +
[in]tdThread descriptor
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_THREAD_EXIT_FAILEDIf the operation Failed
+
+
+
Returns:
Operation status code.
+
Availability:
O/S: Windows, Linux & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + +
OS_RETURN_CODE OS_GetTid (NATIVE_TIDid)
+
+
+

Retrieves the current thread's handle.

+
Parameters:
+ + +
[out]idAddress of handle container variable
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_THREAD_QUERY_FAILEDIf the operation Failed
+
+
+
Returns:
Operation status code.
+
Availability:
O/S: Windows, Linux & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_RaiseException (NATIVE_TID td,
UINT32 code 
)
+
+
+

Raise an exception.

+
Parameters:
+ + + +
[in]tdThread descriptor
[in]codeException type
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_THREAD_SLEEP_FAILEDIf the operation Failed
+
+
+
Returns:
Operation status code.
+
Availability:
O/S: Windows, Linux & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + +
OS_RETURN_CODE OS_ResumeThread (NATIVE_TID td)
+
+
+

Resumes running thread.

+
Parameters:
+ + +
[in]tdThread descriptor
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_THREAD_RESUME_FAILEDIf the operation Failed
+
+
+
Returns:
Operation status code.
+
Availability:
O/S: Windows, Linux & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + +
OS_RETURN_CODE OS_Sleep (INT interval)
+
+
+

Sends thread to sleep.

+
Parameters:
+ + +
[in]intervalInterval to sleep in milli-seconds.
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_THREAD_SLEEP_FAILEDIf the operation Failed
+
+
+
Returns:
Operation status code.
+
Availability:
O/S: Windows, Linux & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + +
OS_RETURN_CODE OS_SuspendThread (NATIVE_TID td)
+
+
+

Suspends a running thread.

+
Parameters:
+ + +
[in]tdThread descriptor
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_THREAD_SUSPEND_FAILEDIf the operation Failed
+
+
+
Returns:
Operation status code.
+
Availability:
O/S: Windows, Linux & macOS*
+ 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]codeThe thread exit code as passed from the caller
[out]dwordToResetThis memory location is cleared (set to zero).
+
+
+
Return values:
+ + +
OS_RETURN_CODE_THREAD_EXIT_FAILEDIf the operation Failed
+
+
+
Returns:
Operation status code.
+
Availability:
O/S: Linux & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + +
OS_RETURN_CODE OS_Yield (void )
+
+
+

Pre-empts the thread specified by the running thread.

+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_THREAD_SLEEP_FAILEDIf the operation Failed
+
+
+
Returns:
Operation status code.
+
Availability:
O/S: Windows, Linux & macOS*
+ CPU: All
+
+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__THREAD__MANAGEMENT.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__THREAD__MANAGEMENT.html new file mode 100755 index 0000000..7d14f06 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__THREAD__MANAGEMENT.html @@ -0,0 +1,140 @@ + + + + +PinCRT: Threads database + + + + + + + + +
+
+ + + + + + +
+
PinCRT
+
+
+ +
+
+ +
+
Threads database
+
+
+ +

Contains API for thread tracking. +

+ + + + +

+Functions

VOID OS_DeregisterThread (NATIVE_TID ntid)
VOID OS_DeregisterCurrentThread (void)
+

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 & macOS*
  • +
  • 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]ntidOS thread ID of the thread to deregister.
+
+
+
Availability:
    +
  • O/S: Windows, Linux & macOS*
  • +
  • CPU: All
  • +
+
+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__TIME.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__TIME.html new file mode 100755 index 0000000..d966a50 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__TIME.html @@ -0,0 +1,169 @@ + + + + +PinCRT: Time + + + + + + + + +
+
+ + + + + + +
+
PinCRT
+
+
+ +
+
+ +
+
Time
+
+
+ +

Contains time related os apis. +

+ + + + +

+Functions

OS_RETURN_CODE OS_Time (UINT64 *CurrentTime)
OS_RETURN_CODE OS_GetDefaultTimeZone (CHAR *tzname, USIZE buflen)
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
OS_RETURN_CODE OS_GetDefaultTimeZone (CHAR * tzname,
USIZE buflen 
)
+
+
+

Retrieves a string containing the default timezone for the current host.

+
Parameters:
+ + + +
[out]tznamePoints to a buffer that will be filled with the timezone string.
[in]buflenSize in bytes of the buffer provided for the 'tzname' argument.
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_TIME_QUERY_FAILEDIf the operation failed
+
+
+
Returns:
Operation status code.
+
Availability:
O/S: Windows, Linux & macOS*
+ CPU: All
+
+ +
+
+ +
+
+ + + + + + + + +
OS_RETURN_CODE OS_Time (UINT64 * CurrentTime)
+
+
+

Retrieves current time in 1us ticks since 1970.

+
Parameters:
+ + +
[out]CurrentTimeCurrent time
+
+
+
Return values:
+ + + +
OS_RETURN_CODE_NO_ERRORIf the operation succeeded
OS_RETURN_CODE_TIME_QUERY_FAILEDIf the operation failed
+
+
+
Returns:
Operation status code.
+
Availability:
O/S: Windows, Linux & macOS*
+ CPU: All
+
+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__TYPES.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__TYPES.html new file mode 100755 index 0000000..e638aec --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/group__OS__APIS__TYPES.html @@ -0,0 +1,208 @@ + + + + +PinCRT: Data types + + + + + + + + +
+
+ + + + + + +
+
PinCRT
+
+
+ +
+
+ +
+
Data types
+
+
+ +

Contains data-type definitions. +More...

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

+Defines

#define CPU_MEMORY_CACHELINE_SIZE   64
#define FILENAME_BUF_SIZE   1024

+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

+

this headerfile contains defines the types that are the foundation of other code

+

Define Documentation

+ +
+
+ + + + +
#define CPU_MEMORY_CACHELINE_SIZE   64
+
+
+

The size of the memory cache line in a single core.

+ +
+
+ +
+
+ + + + +
#define FILENAME_BUF_SIZE   1024
+
+
+

The size of the file name buffer.

+ +
+
+

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.

+ +
+
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/index.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/index.html new file mode 100755 index 0000000..42fde6f --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/index.html @@ -0,0 +1,163 @@ + + + + +PinCRT: Pin OS-APIs User Guide + + + + + + + + +
+
+ + + + + + +
+
PinCRT
+
+
+ +
+
+
+
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 macOS*) 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()
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/installdox b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/installdox new file mode 100755 index 0000000..edf5bbf --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/installdox @@ -0,0 +1,112 @@ +#!/usr/bin/perl + +%subst = ( ); +$quiet = 0; + +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 occurrence 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 =~ /\.svg/) && (push @files, $file); + ($file =~ "navtree.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\>\<]*)\" (xlink:href|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/src/tracer/pintool/pin-3.13/extras/crt/doc/html/jquery.js b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/jquery.js new file mode 100755 index 0000000..c052173 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/jquery.js @@ -0,0 +1,54 @@ +/* + * jQuery JavaScript Library v1.3.2 + * http://jquery.com/ + * + * Copyright (c) 2009 John Resig + * Dual licensed under the MIT and GPL licenses. + * http://docs.jquery.com/License + * + * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009) + * Revision: 6246 + */ +(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("",""]||!O.indexOf("",""]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
"]||!O.indexOf("",""]||(!O.indexOf("",""]||!O.indexOf("",""]||!o.support.htmlSerialize&&[1,"div
","
"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}}); +/* + * Sizzle CSS Selector Engine - v0.9.3 + * Copyright 2009, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return UT[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="

";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="
";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0) +{I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("
").append(M.responseText.replace(//g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function() +{G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='
';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})(); +/* + * jQuery UI 1.7.2 + * + * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI + */ +jQuery.ui||(function(c){var i=c.fn.remove,d=c.browser.mozilla&&(parseFloat(c.browser.version)<1.9);c.ui={version:"1.7.2",plugin:{add:function(k,l,n){var m=c.ui[k].prototype;for(var j in n){m.plugins[j]=m.plugins[j]||[];m.plugins[j].push([l,n[j]])}},call:function(j,l,k){var n=j.plugins[l];if(!n||!j.element[0].parentNode){return}for(var m=0;m0){return true}m[j]=1;l=(m[j]>0);m[j]=0;return l},isOverAxis:function(k,j,l){return(k>j)&&(k<(j+l))},isOver:function(o,k,n,m,j,l){return c.ui.isOverAxis(o,n,j)&&c.ui.isOverAxis(k,m,l)},keyCode:{BACKSPACE:8,CAPS_LOCK:20,COMMA:188,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38}};if(d){var f=c.attr,e=c.fn.removeAttr,h="http://www.w3.org/2005/07/aaa",a=/^aria-/,b=/^wairole:/;c.attr=function(k,j,l){var m=l!==undefined;return(j=="role"?(m?f.call(this,k,j,"wairole:"+l):(f.apply(this,arguments)||"").replace(b,"")):(a.test(j)?(m?k.setAttributeNS(h,j.replace(a,"aaa:"),l):f.call(this,k,j.replace(a,"aaa:"))):f.apply(this,arguments)))};c.fn.removeAttr=function(j){return(a.test(j)?this.each(function(){this.removeAttributeNS(h,j.replace(a,""))}):e.call(this,j))}}c.fn.extend({remove:function(){c("*",this).add(this).each(function(){c(this).triggerHandler("remove")});return i.apply(this,arguments)},enableSelection:function(){return this.attr("unselectable","off").css("MozUserSelect","").unbind("selectstart.ui")},disableSelection:function(){return this.attr("unselectable","on").css("MozUserSelect","none").bind("selectstart.ui",function(){return false})},scrollParent:function(){var j;if((c.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){j=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(c.curCSS(this,"position",1))&&(/(auto|scroll)/).test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0)}else{j=this.parents().filter(function(){return(/(auto|scroll)/).test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!j.length?c(document):j}});c.extend(c.expr[":"],{data:function(l,k,j){return !!c.data(l,j[3])},focusable:function(k){var l=k.nodeName.toLowerCase(),j=c.attr(k,"tabindex");return(/input|select|textarea|button|object/.test(l)?!k.disabled:"a"==l||"area"==l?k.href||!isNaN(j):!isNaN(j))&&!c(k)["area"==l?"parents":"closest"](":hidden").length},tabbable:function(k){var j=c.attr(k,"tabindex");return(isNaN(j)||j>=0)&&c(k).is(":focusable")}});function g(m,n,o,l){function k(q){var p=c[m][n][q]||[];return(typeof p=="string"?p.split(/,?\s+/):p)}var j=k("getter");if(l.length==1&&typeof l[0]=="string"){j=j.concat(k("getterSetter"))}return(c.inArray(o,j)!=-1)}c.widget=function(k,j){var l=k.split(".")[0];k=k.split(".")[1];c.fn[k]=function(p){var n=(typeof p=="string"),o=Array.prototype.slice.call(arguments,1);if(n&&p.substring(0,1)=="_"){return this}if(n&&g(l,k,p,o)){var m=c.data(this[0],k);return(m?m[p].apply(m,o):undefined)}return this.each(function(){var q=c.data(this,k);(!q&&!n&&c.data(this,k,new c[l][k](this,p))._init());(q&&n&&c.isFunction(q[p])&&q[p].apply(q,o))})};c[l]=c[l]||{};c[l][k]=function(o,n){var m=this;this.namespace=l;this.widgetName=k;this.widgetEventPrefix=c[l][k].eventPrefix||k;this.widgetBaseClass=l+"-"+k;this.options=c.extend({},c.widget.defaults,c[l][k].defaults,c.metadata&&c.metadata.get(o)[k],n);this.element=c(o).bind("setData."+k,function(q,p,r){if(q.target==o){return m._setData(p,r)}}).bind("getData."+k,function(q,p){if(q.target==o){return m._getData(p)}}).bind("remove",function(){return m.destroy()})};c[l][k].prototype=c.extend({},c.widget.prototype,j);c[l][k].getterSetter="option"};c.widget.prototype={_init:function(){},destroy:function(){this.element.removeData(this.widgetName).removeClass(this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").removeAttr("aria-disabled")},option:function(l,m){var k=l,j=this;if(typeof l=="string"){if(m===undefined){return this._getData(l)}k={};k[l]=m}c.each(k,function(n,o){j._setData(n,o)})},_getData:function(j){return this.options[j]},_setData:function(j,k){this.options[j]=k;if(j=="disabled"){this.element[k?"addClass":"removeClass"](this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").attr("aria-disabled",k)}},enable:function(){this._setData("disabled",false)},disable:function(){this._setData("disabled",true)},_trigger:function(l,m,n){var p=this.options[l],j=(l==this.widgetEventPrefix?l:this.widgetEventPrefix+l);m=c.Event(m);m.type=j;if(m.originalEvent){for(var k=c.event.props.length,o;k;){o=c.event.props[--k];m[o]=m.originalEvent[o]}}this.element.trigger(m,n);return !(c.isFunction(p)&&p.call(this.element[0],m,n)===false||m.isDefaultPrevented())}};c.widget.defaults={disabled:false};c.ui.mouse={_mouseInit:function(){var j=this;this.element.bind("mousedown."+this.widgetName,function(k){return j._mouseDown(k)}).bind("click."+this.widgetName,function(k){if(j._preventClickEvent){j._preventClickEvent=false;k.stopImmediatePropagation();return false}});if(c.browser.msie){this._mouseUnselectable=this.element.attr("unselectable");this.element.attr("unselectable","on")}this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName);(c.browser.msie&&this.element.attr("unselectable",this._mouseUnselectable))},_mouseDown:function(l){l.originalEvent=l.originalEvent||{};if(l.originalEvent.mouseHandled){return}(this._mouseStarted&&this._mouseUp(l));this._mouseDownEvent=l;var k=this,m=(l.which==1),j=(typeof this.options.cancel=="string"?c(l.target).parents().add(l.target).filter(this.options.cancel).length:false);if(!m||j||!this._mouseCapture(l)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){k.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(l)&&this._mouseDelayMet(l)){this._mouseStarted=(this._mouseStart(l)!==false);if(!this._mouseStarted){l.preventDefault();return true}}this._mouseMoveDelegate=function(n){return k._mouseMove(n)};this._mouseUpDelegate=function(n){return k._mouseUp(n)};c(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);(c.browser.safari||l.preventDefault());l.originalEvent.mouseHandled=true;return true},_mouseMove:function(j){if(c.browser.msie&&!j.button){return this._mouseUp(j)}if(this._mouseStarted){this._mouseDrag(j);return j.preventDefault()}if(this._mouseDistanceMet(j)&&this._mouseDelayMet(j)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,j)!==false);(this._mouseStarted?this._mouseDrag(j):this._mouseUp(j))}return !this._mouseStarted},_mouseUp:function(j){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=(j.target==this._mouseDownEvent.target);this._mouseStop(j)}return false},_mouseDistanceMet:function(j){return(Math.max(Math.abs(this._mouseDownEvent.pageX-j.pageX),Math.abs(this._mouseDownEvent.pageY-j.pageY))>=this.options.distance)},_mouseDelayMet:function(j){return this.mouseDelayMet},_mouseStart:function(j){},_mouseDrag:function(j){},_mouseStop:function(j){},_mouseCapture:function(j){return true}};c.ui.mouse.defaults={cancel:null,distance:1,delay:0}})(jQuery);;/* * jQuery UI Resizable 1.7.2 + * + * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Resizables + * + * Depends: + * ui.core.js + */ +(function(c){c.widget("ui.resizable",c.extend({},c.ui.mouse,{_init:function(){var e=this,j=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(j.aspectRatio),aspectRatio:j.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:j.helper||j.ghost||j.animate?j.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){if(/relative/.test(this.element.css("position"))&&c.browser.opera){this.element.css({position:"relative",top:"auto",left:"auto"})}this.element.wrap(c('
').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=j.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var k=this.handles.split(",");this.handles={};for(var f=0;f
');if(/sw|se|ne|nw/.test(h)){g.css({zIndex:++j.zIndex})}if("se"==h){g.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[h]=".ui-resizable-"+h;this.element.append(g)}}this._renderAxis=function(p){p=p||this.element;for(var m in this.handles){if(this.handles[m].constructor==String){this.handles[m]=c(this.handles[m],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var n=c(this.handles[m],this.element),o=0;o=/sw|ne|nw|se|n|s/.test(m)?n.outerHeight():n.outerWidth();var l=["padding",/ne|nw|n/.test(m)?"Top":/se|sw|s/.test(m)?"Bottom":/^e$/.test(m)?"Right":"Left"].join("");p.css(l,o);this._proportionallyResize()}if(!c(this.handles[m]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!e.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}e.axis=i&&i[1]?i[1]:"se"}});if(j.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){c(this).removeClass("ui-resizable-autohide");e._handles.show()},function(){if(!e.resizing){c(this).addClass("ui-resizable-autohide");e._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var d=function(f){c(f).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){d(this.element);var e=this.element;e.parent().append(this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")})).end().remove()}this.originalElement.css("resize",this.originalResizeStyle);d(this.originalElement)},_mouseCapture:function(e){var f=false;for(var d in this.handles){if(c(this.handles[d])[0]==e.target){f=true}}return this.options.disabled||!!f},_mouseStart:function(f){var i=this.options,e=this.element.position(),d=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(d.is(".ui-draggable")||(/absolute/).test(d.css("position"))){d.css({position:"absolute",top:e.top,left:e.left})}if(c.browser.opera&&(/relative/).test(d.css("position"))){d.css({position:"relative",top:"auto",left:"auto"})}this._renderProxy();var j=b(this.helper.css("left")),g=b(this.helper.css("top"));if(i.containment){j+=c(i.containment).scrollLeft()||0;g+=c(i.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:j,top:g};this.size=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalSize=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalPosition={left:j,top:g};this.sizeDiff={width:d.outerWidth()-d.width(),height:d.outerHeight()-d.height()};this.originalMousePosition={left:f.pageX,top:f.pageY};this.aspectRatio=(typeof i.aspectRatio=="number")?i.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var h=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",h=="auto"?this.axis+"-resize":h);d.addClass("ui-resizable-resizing");this._propagate("start",f);return true},_mouseDrag:function(d){var g=this.helper,f=this.options,l={},p=this,i=this.originalMousePosition,m=this.axis;var q=(d.pageX-i.left)||0,n=(d.pageY-i.top)||0;var h=this._change[m];if(!h){return false}var k=h.apply(this,[d,q,n]),j=c.browser.msie&&c.browser.version<7,e=this.sizeDiff;if(this._aspectRatio||d.shiftKey){k=this._updateRatio(k,d)}k=this._respectSize(k,d);this._propagate("resize",d);g.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(k);this._trigger("resize",d,this.ui());return false},_mouseStop:function(g){this.resizing=false;var h=this.options,l=this;if(this._helper){var f=this._proportionallyResizeElements,d=f.length&&(/textarea/i).test(f[0].nodeName),e=d&&c.ui.hasScroll(f[0],"left")?0:l.sizeDiff.height,j=d?0:l.sizeDiff.width;var m={width:(l.size.width-j),height:(l.size.height-e)},i=(parseInt(l.element.css("left"),10)+(l.position.left-l.originalPosition.left))||null,k=(parseInt(l.element.css("top"),10)+(l.position.top-l.originalPosition.top))||null;if(!h.animate){this.element.css(c.extend(m,{top:k,left:i}))}l.helper.height(l.size.height);l.helper.width(l.size.width);if(this._helper&&!h.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",g);if(this._helper){this.helper.remove()}return false},_updateCache:function(d){var e=this.options;this.offset=this.helper.offset();if(a(d.left)){this.position.left=d.left}if(a(d.top)){this.position.top=d.top}if(a(d.height)){this.size.height=d.height}if(a(d.width)){this.size.width=d.width}},_updateRatio:function(g,f){var h=this.options,i=this.position,e=this.size,d=this.axis;if(g.height){g.width=(e.height*this.aspectRatio)}else{if(g.width){g.height=(e.width/this.aspectRatio)}}if(d=="sw"){g.left=i.left+(e.width-g.width);g.top=null}if(d=="nw"){g.top=i.top+(e.height-g.height);g.left=i.left+(e.width-g.width)}return g},_respectSize:function(k,f){var i=this.helper,h=this.options,q=this._aspectRatio||f.shiftKey,p=this.axis,s=a(k.width)&&h.maxWidth&&(h.maxWidthk.width),r=a(k.height)&&h.minHeight&&(h.minHeight>k.height);if(g){k.width=h.minWidth}if(r){k.height=h.minHeight}if(s){k.width=h.maxWidth}if(l){k.height=h.maxHeight}var e=this.originalPosition.left+this.originalSize.width,n=this.position.top+this.size.height;var j=/sw|nw|w/.test(p),d=/nw|ne|n/.test(p);if(g&&j){k.left=e-h.minWidth}if(s&&j){k.left=e-h.maxWidth}if(r&&d){k.top=n-h.minHeight}if(l&&d){k.top=n-h.maxHeight}var m=!k.width&&!k.height;if(m&&!k.left&&k.top){k.top=null}else{if(m&&!k.top&&k.left){k.left=null}}return k},_proportionallyResize:function(){var j=this.options;if(!this._proportionallyResizeElements.length){return}var f=this.helper||this.element;for(var e=0;e');var d=c.browser.msie&&c.browser.version<7,f=(d?1:0),g=(d?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+g,height:this.element.outerHeight()+g,position:"absolute",left:this.elementOffset.left-f+"px",top:this.elementOffset.top-f+"px",zIndex:++h.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(f,e,d){return{width:this.originalSize.width+e}},w:function(g,e,d){var i=this.options,f=this.originalSize,h=this.originalPosition;return{left:h.left+e,width:f.width-e}},n:function(g,e,d){var i=this.options,f=this.originalSize,h=this.originalPosition;return{top:h.top+d,height:f.height-d}},s:function(f,e,d){return{height:this.originalSize.height+d}},se:function(f,e,d){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[f,e,d]))},sw:function(f,e,d){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[f,e,d]))},ne:function(f,e,d){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[f,e,d]))},nw:function(f,e,d){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[f,e,d]))}},_propagate:function(e,d){c.ui.plugin.call(this,e,[d,this.ui()]);(e!="resize"&&this._trigger(e,d,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}));c.extend(c.ui.resizable,{version:"1.7.2",eventPrefix:"resize",defaults:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,cancel:":input,option",containment:false,delay:0,distance:1,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000}});c.ui.plugin.add("resizable","alsoResize",{start:function(e,f){var d=c(this).data("resizable"),g=d.options;_store=function(h){c(h).each(function(){c(this).data("resizable-alsoresize",{width:parseInt(c(this).width(),10),height:parseInt(c(this).height(),10),left:parseInt(c(this).css("left"),10),top:parseInt(c(this).css("top"),10)})})};if(typeof(g.alsoResize)=="object"&&!g.alsoResize.parentNode){if(g.alsoResize.length){g.alsoResize=g.alsoResize[0];_store(g.alsoResize)}else{c.each(g.alsoResize,function(h,i){_store(h)})}}else{_store(g.alsoResize)}},resize:function(f,h){var e=c(this).data("resizable"),i=e.options,g=e.originalSize,k=e.originalPosition;var j={height:(e.size.height-g.height)||0,width:(e.size.width-g.width)||0,top:(e.position.top-k.top)||0,left:(e.position.left-k.left)||0},d=function(l,m){c(l).each(function(){var p=c(this),q=c(this).data("resizable-alsoresize"),o={},n=m&&m.length?m:["width","height","top","left"];c.each(n||["width","height","top","left"],function(r,t){var s=(q[t]||0)+(j[t]||0);if(s&&s>=0){o[t]=s||null}});if(/relative/.test(p.css("position"))&&c.browser.opera){e._revertToRelativePosition=true;p.css({position:"absolute",top:"auto",left:"auto"})}p.css(o)})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.nodeType){c.each(i.alsoResize,function(l,m){d(l,m)})}else{d(i.alsoResize)}},stop:function(e,f){var d=c(this).data("resizable");if(d._revertToRelativePosition&&c.browser.opera){d._revertToRelativePosition=false;el.css({position:"relative"})}c(this).removeData("resizable-alsoresize-start")}});c.ui.plugin.add("resizable","animate",{stop:function(h,m){var n=c(this).data("resizable"),i=n.options;var g=n._proportionallyResizeElements,d=g.length&&(/textarea/i).test(g[0].nodeName),e=d&&c.ui.hasScroll(g[0],"left")?0:n.sizeDiff.height,k=d?0:n.sizeDiff.width;var f={width:(n.size.width-k),height:(n.size.height-e)},j=(parseInt(n.element.css("left"),10)+(n.position.left-n.originalPosition.left))||null,l=(parseInt(n.element.css("top"),10)+(n.position.top-n.originalPosition.top))||null;n.element.animate(c.extend(f,l&&j?{top:l,left:j}:{}),{duration:i.animateDuration,easing:i.animateEasing,step:function(){var o={width:parseInt(n.element.css("width"),10),height:parseInt(n.element.css("height"),10),top:parseInt(n.element.css("top"),10),left:parseInt(n.element.css("left"),10)};if(g&&g.length){c(g[0]).css({width:o.width,height:o.height})}n._updateCache(o);n._propagate("resize",h)}})}});c.ui.plugin.add("resizable","containment",{start:function(e,q){var s=c(this).data("resizable"),i=s.options,k=s.element;var f=i.containment,j=(f instanceof c)?f.get(0):(/parent/.test(f))?k.parent().get(0):f;if(!j){return}s.containerElement=c(j);if(/document/.test(f)||f==document){s.containerOffset={left:0,top:0};s.containerPosition={left:0,top:0};s.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var m=c(j),h=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){h[p]=b(m.css("padding"+o))});s.containerOffset=m.offset();s.containerPosition=m.position();s.containerSize={height:(m.innerHeight()-h[3]),width:(m.innerWidth()-h[1])};var n=s.containerOffset,d=s.containerSize.height,l=s.containerSize.width,g=(c.ui.hasScroll(j,"left")?j.scrollWidth:l),r=(c.ui.hasScroll(j)?j.scrollHeight:d);s.parentData={element:j,left:n.left,top:n.top,width:g,height:r}}},resize:function(f,p){var s=c(this).data("resizable"),h=s.options,e=s.containerSize,n=s.containerOffset,l=s.size,m=s.position,q=s._aspectRatio||f.shiftKey,d={top:0,left:0},g=s.containerElement;if(g[0]!=document&&(/static/).test(g.css("position"))){d=n}if(m.left<(s._helper?n.left:0)){s.size.width=s.size.width+(s._helper?(s.position.left-n.left):(s.position.left-d.left));if(q){s.size.height=s.size.width/h.aspectRatio}s.position.left=h.helper?n.left:0}if(m.top<(s._helper?n.top:0)) +{s.size.height=s.size.height+(s._helper?(s.position.top-n.top):s.position.top);if(q){s.size.width=s.size.height*h.aspectRatio}s.position.top=s._helper?n.top:0}s.offset.left=s.parentData.left+s.position.left;s.offset.top=s.parentData.top+s.position.top;var k=Math.abs((s._helper?s.offset.left-d.left:(s.offset.left-d.left))+s.sizeDiff.width),r=Math.abs((s._helper?s.offset.top-d.top:(s.offset.top-n.top))+s.sizeDiff.height);var j=s.containerElement.get(0)==s.element.parent().get(0),i=/relative|absolute/.test(s.containerElement.css("position"));if(j&&i){k-=s.parentData.left}if(k+s.size.width>=s.parentData.width){s.size.width=s.parentData.width-k;if(q){s.size.height=s.size.width/s.aspectRatio}}if(r+s.size.height>=s.parentData.height){s.size.height=s.parentData.height-r;if(q){s.size.width=s.size.height*s.aspectRatio}}},stop:function(e,m){var p=c(this).data("resizable"),f=p.options,k=p.position,l=p.containerOffset,d=p.containerPosition,g=p.containerElement;var i=c(p.helper),q=i.offset(),n=i.outerWidth()-p.sizeDiff.width,j=i.outerHeight()-p.sizeDiff.height;if(p._helper&&!f.animate&&(/relative/).test(g.css("position"))){c(this).css({left:q.left-d.left-l.left,width:n,height:j})}if(p._helper&&!f.animate&&(/static/).test(g.css("position"))){c(this).css({left:q.left-d.left-l.left,width:n,height:j})}}});c.ui.plugin.add("resizable","ghost",{start:function(f,g){var d=c(this).data("resizable"),h=d.options,e=d.size;d.ghost=d.originalElement.clone();d.ghost.css({opacity:0.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof h.ghost=="string"?h.ghost:"");d.ghost.appendTo(d.helper)},resize:function(e,f){var d=c(this).data("resizable"),g=d.options;if(d.ghost){d.ghost.css({position:"relative",height:d.size.height,width:d.size.width})}},stop:function(e,f){var d=c(this).data("resizable"),g=d.options;if(d.ghost&&d.helper){d.helper.get(0).removeChild(d.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(d,l){var n=c(this).data("resizable"),g=n.options,j=n.size,h=n.originalSize,i=n.originalPosition,m=n.axis,k=g._aspectRatio||d.shiftKey;g.grid=typeof g.grid=="number"?[g.grid,g.grid]:g.grid;var f=Math.round((j.width-h.width)/(g.grid[0]||1))*(g.grid[0]||1),e=Math.round((j.height-h.height)/(g.grid[1]||1))*(g.grid[1]||1);if(/^(se|s|e)$/.test(m)){n.size.width=h.width+f;n.size.height=h.height+e}else{if(/^(ne)$/.test(m)){n.size.width=h.width+f;n.size.height=h.height+e;n.position.top=i.top-e}else{if(/^(sw)$/.test(m)){n.size.width=h.width+f;n.size.height=h.height+e;n.position.left=i.left-f}else{n.size.width=h.width+f;n.size.height=h.height+e;n.position.top=i.top-e;n.position.left=i.left-f}}}}});var b=function(d){return parseInt(d,10)||0};var a=function(d){return !isNaN(parseInt(d,10))}})(jQuery);; +/** + * jQuery.ScrollTo - Easy element scrolling using jQuery. + * Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com + * Licensed under GPL license (http://www.opensource.org/licenses/gpl-license.php). + * Date: 2/8/2008 + * @author Ariel Flesler + * @version 1.3.2 + */ +;(function($){var o=$.scrollTo=function(a,b,c){o.window().scrollTo(a,b,c)};o.defaults={axis:'y',duration:1};o.window=function(){return $($.browser.safari?'body':'html')};$.fn.scrollTo=function(l,m,n){if(typeof m=='object'){n=m;m=0}n=$.extend({},o.defaults,n);m=m||n.speed||n.duration;n.queue=n.queue&&n.axis.length>1;if(n.queue)m/=2;n.offset=j(n.offset);n.over=j(n.over);return this.each(function(){var a=this,b=$(a),t=l,c,d={},w=b.is('html,body');switch(typeof t){case'number':case'string':if(/^([+-]=)?\d+(px)?$/.test(t)){t=j(t);break}t=$(t,this);case'object':if(t.is||t.style)c=(t=$(t)).offset()}$.each(n.axis.split(''),function(i,f){var P=f=='x'?'Left':'Top',p=P.toLowerCase(),k='scroll'+P,e=a[k],D=f=='x'?'Width':'Height';if(c){d[k]=c[p]+(w?0:e-b.offset()[p]);if(n.margin){d[k]-=parseInt(t.css('margin'+P))||0;d[k]-=parseInt(t.css('border'+P+'Width'))||0}d[k]+=n.offset[p]||0;if(n.over[p])d[k]+=t[D.toLowerCase()]()*n.over[p]}else d[k]=t[p];if(/^\d+$/.test(d[k]))d[k]=d[k]<=0?0:Math.min(d[k],h(D));if(!i&&n.queue){if(e!=d[k])g(n.onAfterFirst);delete d[k]}});g(n.onAfter);function g(a){b.animate(d,m,n.easing,a&&function(){a.call(this,l)})};function h(D){var b=w?$.browser.opera?document.body:document.documentElement:a;return b['scroll'+D]-b['client'+D]}})};function j(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery); + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/modules.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/modules.html new file mode 100755 index 0000000..cdbbe1d --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/modules.html @@ -0,0 +1,92 @@ + + + + +PinCRT: Modules + + + + + + + + +
+
+ + + + + + +
+
PinCRT
+
+
+ +
+
+
+
Modules
+
+ + + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/nav_f.png b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/nav_f.png new file mode 100755 index 0000000000000000000000000000000000000000..1b07a16207e67c95fe2ee17e7016e6d08ac7ac99 GIT binary patch literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQfZzpjv*C{Z|{2YIT`Y>1X`Eg z-tTbne1`SITM8Q!Pb(<)UFZ(m>wMzvKZQqKM~~GcZ=A7j<~E6K62>ozFS=cD3)mf8 z9WX0+R&m(l9KUsLdTx4?9~({T__KA%`}olPJ^N;y|F^pHgs_K%!rj~{8>RwnWbkzL Kb6Mw<&;$VTdq1fF literal 0 HcmV?d00001 diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/nav_h.png b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/nav_h.png new file mode 100755 index 0000000000000000000000000000000000000000..01f5fa6a596e36bd12c2d6ceff1b0169fda7e699 GIT binary patch literal 97 zcmeAS@N?(olHy`uVBq!ia0vp^j6lr8!2~3AUOE6t1`SUa$B+ufw|6&kG8phMJMJ~w va4>Y+bZ&9QY?(VEUPY_cGd9nQ`um^ZSUyYpAAuKhL7F^W{an^LB{Ts5DmojT literal 0 HcmV?d00001 diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/open.png b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/open.png new file mode 100755 index 0000000000000000000000000000000000000000..7b35d2c2c389743089632fe24c3104f2173d97af GIT binary patch literal 118 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{Vww^AIAr*{o=Nbw!DDW^(zOibV zl!F8B0?t?i!vld4k#$~0_AX3zElaokn + + + + + + +
+
Loading...
+ + + + +
+
+ _sa_handler_ptr + SIGACTION +
+
+
+
+ _sa_sigaction + SIGACTION +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/all_62.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/all_62.html new file mode 100755 index 0000000..8c422a4 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/all_62.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ BaseAddress + OS_MEMORY_AT_ADDR_INFORMATION +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/all_67.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/all_67.html new file mode 100755 index 0000000..800c457 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/all_67.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ generic_err + _OS_RETURN_CODE +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/all_6b.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/all_6b.html new file mode 100755 index 0000000..8398952 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/all_6b.html @@ -0,0 +1,25 @@ + + + + + + + +
+
Loading...
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/all_6d.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/all_6d.html new file mode 100755 index 0000000..185a187 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/all_6d.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ MapSize + OS_MEMORY_AT_ADDR_INFORMATION +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/all_6f.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/all_6f.html new file mode 100755 index 0000000..e371781 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/all_6f.html @@ -0,0 +1,36 @@ + + + + + + + +
+
Loading...
+ + +
+
+ os_specific_err + _OS_RETURN_CODE +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/all_70.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/all_70.html new file mode 100755 index 0000000..a6d87a7 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/all_70.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ Protection + OS_MEMORY_AT_ADDR_INFORMATION +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/all_73.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/all_73.html new file mode 100755 index 0000000..9c5e097 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/all_73.html @@ -0,0 +1,43 @@ + + + + + + + +
+
Loading...
+
+
+ sa_flags + SIGACTION +
+
+
+
+ sa_restorer + SIGACTION +
+
+
+
+ Shared + OS_MEMORY_AT_ADDR_INFORMATION +
+
+
+
+ SIGACTION +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/all_74.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/all_74.html new file mode 100755 index 0000000..b27b5eb --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/all_74.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ Type + OS_MEMORY_AT_ADDR_INFORMATION +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/classes_5f.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/classes_5f.html new file mode 100755 index 0000000..a593997 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/classes_5f.html @@ -0,0 +1,40 @@ + + + + + + + +
+
Loading...
+ + + + +
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/classes_6b.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/classes_6b.html new file mode 100755 index 0000000..8398952 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/classes_6b.html @@ -0,0 +1,25 @@ + + + + + + + +
+
Loading...
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/classes_6f.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/classes_6f.html new file mode 100755 index 0000000..ae80c5f --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/classes_6f.html @@ -0,0 +1,30 @@ + + + + + + + +
+
Loading...
+ + +
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/classes_73.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/classes_73.html new file mode 100755 index 0000000..ede925d --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/classes_73.html @@ -0,0 +1,25 @@ + + + + + + + +
+
Loading...
+
+
+ SIGACTION +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/close.png b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/close.png new file mode 100755 index 0000000000000000000000000000000000000000..9342d3dfeea7b7c4ee610987e717804b5a42ceb9 GIT binary patch literal 273 zcmV+s0q*{ZP)4(RlMby96)VwnbG{ zbe&}^BDn7x>$<{ck4zAK-=nT;=hHG)kmplIF${xqm8db3oX6wT3bvp`TE@m0cg;b) zBuSL}5?N7O(iZLdAlz@)b)Rd~DnSsSX&P5qC`XwuFwcAYLC+d2>+1(8on;wpt8QIC X2MT$R4iQDd00000NkvXXu0mjfia~GN literal 0 HcmV?d00001 diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/mag_sel.png b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/mag_sel.png new file mode 100755 index 0000000000000000000000000000000000000000..81f6040a2092402b4d98f9ffa8855d12a0d4ca17 GIT binary patch literal 563 zcmV-30?hr1P)zxx&tqG15pu7)IiiXFflOc2k;dXd>%13GZAy? zRz!q0=|E6a6vV)&ZBS~G9oe0kbqyw1*gvY`{Pop2oKq#FlzgXt@Xh-7fxh>}`Fxg> z$%N%{$!4=5nM{(;=c!aG1Ofr^Do{u%Ih{^&Fc@H2)+a-?TBXrw5DW&z%Nb6mQ!L9O zl}b@6mB?f=tX3;#vl)}ggh(Vpyh(IK z(Mb0D{l{U$FsRjP;!{($+bsaaVi8T#1c0V#qEIOCYa9@UVLV`f__E81L;?WEaRA;Y zUH;rZ;vb;mk7JX|$=i3O~&If0O@oZfLg8gfIjW=dcBsz;gI=!{-r4# z4%6v$&~;q^j7Fo67yJ(NJWuX+I~I!tj^nW3?}^9bq|<3^+vapS5sgM^x7!cs(+mMT z&y%j};&~po+YO)3hoUH4E*E;e9>?R6SS&`X)p`njycAVcg{rEb41T{~Hk(bl-7eSb zmFxA2uIqo#@R?lKm50ND`~6Nfn|-b1|L6O98vt3Tx@gKz#isxO002ovPDHLkV1kyW B_l^Jn literal 0 HcmV?d00001 diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/nomatches.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/nomatches.html new file mode 100755 index 0000000..b1ded27 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
+
No Matches
+
+ + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/search.css b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/search.css new file mode 100755 index 0000000..50249e5 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/search.css @@ -0,0 +1,240 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#searchli { + float: right; + display: block; + width: 170px; + height: 36px; +} + +#MSearchBox { + white-space : nowrap; + position: absolute; + float: none; + display: inline; + margin-top: 8px; + right: 0px; + width: 170px; + z-index: 102; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:116px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:0px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 1; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/search.js b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/search.js new file mode 100755 index 0000000..dc3b4fb --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/search.js @@ -0,0 +1,730 @@ +// Search script generated by doxygen +// Copyright (C) 2009 by Dimitri van Heesch. + +// The code in this file is loosly based on main.js, part of Natural Docs, +// which is Copyright (C) 2003-2008 Greg Valure +// Natural Docs is licensed under the GPL. + +var indexSectionsWithContent = +{ + 0: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010010000100010101100110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 1: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000010001000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 2: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010010000100000101100110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" +}; + +var indexSectionNames = +{ + 0: "all", + 1: "classes", + 2: "variables" +}; + +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var hexCode; + if (code<16) + { + hexCode="0"+code.toString(16); + } + else + { + hexCode=code.toString(16); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + if (indexSectionsWithContent[this.searchIndex].charAt(code) == '1') + { + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location.href = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/search_l.png b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/search_l.png new file mode 100755 index 0000000000000000000000000000000000000000..c872f4da4a01d0754f923e6c94fd8159c0621bd1 GIT binary patch literal 604 zcmV-i0;BzjP)k7RCwB~R6VQOP#AvB$vH7i{6H{96zot$7cZT<7246EF5Np6N}+$IbiG6W zg#87A+NFaX+=_^xM1#gCtshC=E{%9^uQX_%?YwXvo{#q&MnpJ8uh(O?ZRc&~_1%^SsPxG@rfElJg-?U zm!Cz-IOn(qJP3kDp-^~qt+FGbl=5jNli^Wj_xIBG{Rc0en{!oFvyoNC7{V~T8}b>| z=jL2WIReZzX(YN(_9fV;BBD$VXQIxNasAL8ATvEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/search_r.png b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/search_r.png new file mode 100755 index 0000000000000000000000000000000000000000..97ee8b439687084201b79c6f776a41f495c6392a GIT binary patch literal 612 zcmV-q0-ODbP)PbXFRCwB?)W514K@j&X?z2*SxFI6-@HT2E2K=9X9%Pb zEK*!TBw&g(DMC;|A)uGlRkOS9vd-?zNs%bR4d$w+ox_iFnE8fvIvv7^5<(>Te12Li z7C)9srCzmK{ZcNM{YIl9j{DePFgOWiS%xG@5CnnnJa4nvY<^glbz7^|-ZY!dUkAwd z{gaTC@_>b5h~;ug#R0wRL0>o5!hxm*s0VW?8dr}O#zXTRTnrQm_Z7z1Mrnx>&p zD4qifUjzLvbVVWi?l?rUzwt^sdb~d!f_LEhsRVIXZtQ=qSxuxqm zEX#tf>$?M_Y1-LSDT)HqG?`%-%ZpY!#{N!rcNIiL;G7F0`l?)mNGTD9;f9F5Up3Kg zw}a<-JylhG&;=!>B+fZaCX+?C+kHYrP%c?X2!Zu_olK|GcS4A70HEy;vn)I0>0kLH z`jc(WIaaHc7!HS@f*^R^Znx8W=_jIl2oWJoQ*h1^$FX!>*PqR1J8k|fw}w_y}TpE>7m8DqDO<3z`OzXt$ccSejbEZCg@0000 + + + + + + +
+
Loading...
+
+
+ _sa_handler_ptr + SIGACTION +
+
+
+
+ _sa_sigaction + SIGACTION +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/variables_62.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/variables_62.html new file mode 100755 index 0000000..8c422a4 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/variables_62.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ BaseAddress + OS_MEMORY_AT_ADDR_INFORMATION +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/variables_67.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/variables_67.html new file mode 100755 index 0000000..800c457 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/variables_67.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ generic_err + _OS_RETURN_CODE +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/variables_6d.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/variables_6d.html new file mode 100755 index 0000000..185a187 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/variables_6d.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ MapSize + OS_MEMORY_AT_ADDR_INFORMATION +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/variables_6f.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/variables_6f.html new file mode 100755 index 0000000..8f9a8cb --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/variables_6f.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ os_specific_err + _OS_RETURN_CODE +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/variables_70.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/variables_70.html new file mode 100755 index 0000000..a6d87a7 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/variables_70.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ Protection + OS_MEMORY_AT_ADDR_INFORMATION +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/variables_73.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/variables_73.html new file mode 100755 index 0000000..675210f --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/variables_73.html @@ -0,0 +1,38 @@ + + + + + + + +
+
Loading...
+
+
+ sa_flags + SIGACTION +
+
+
+
+ sa_restorer + SIGACTION +
+
+
+
+ Shared + OS_MEMORY_AT_ADDR_INFORMATION +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/variables_74.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/variables_74.html new file mode 100755 index 0000000..b27b5eb --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/search/variables_74.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ Type + OS_MEMORY_AT_ADDR_INFORMATION +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/structOS__APIS__RW__LOCK__IMPL__T-members.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/structOS__APIS__RW__LOCK__IMPL__T-members.html new file mode 100755 index 0000000..3e15299 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/structOS__APIS__RW__LOCK__IMPL__T-members.html @@ -0,0 +1,90 @@ + + + + +PinCRT: Member List + + + + + + + + +
+
+ + + + + + +
+
PinCRT
+
+
+ + +
+
+
+
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
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/structOS__APIS__RW__LOCK__IMPL__T.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/structOS__APIS__RW__LOCK__IMPL__T.html new file mode 100755 index 0000000..be916f6 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/structOS__APIS__RW__LOCK__IMPL__T.html @@ -0,0 +1,110 @@ + + + + +PinCRT: OS_APIS_RW_LOCK_IMPL_T Struct Reference + + + + + + + + +
+
+ + + + + + +
+
PinCRT
+
+
+ + +
+
+ +
+
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
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/structOS__MEMORY__AT__ADDR__INFORMATION-members.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/structOS__MEMORY__AT__ADDR__INFORMATION-members.html new file mode 100755 index 0000000..53d3c7e --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/structOS__MEMORY__AT__ADDR__INFORMATION-members.html @@ -0,0 +1,89 @@ + + + + +PinCRT: Member List + + + + + + + + +
+
+ + + + + + +
+
PinCRT
+
+
+ + +
+
+
+
OS_MEMORY_AT_ADDR_INFORMATION Member List
+
+ + + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/structOS__MEMORY__AT__ADDR__INFORMATION.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/structOS__MEMORY__AT__ADDR__INFORMATION.html new file mode 100755 index 0000000..d778eb6 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/structOS__MEMORY__AT__ADDR__INFORMATION.html @@ -0,0 +1,108 @@ + + + + +PinCRT: OS_MEMORY_AT_ADDR_INFORMATION Struct Reference + + + + + + + + +
+
+ + + + + + +
+
PinCRT
+
+
+ + +
+
+ +
+
OS_MEMORY_AT_ADDR_INFORMATION Struct Reference
+
+
+ +

#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

+

The documentation for this struct was generated from the following file:
    +
  • memory.h
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/structSIGACTION-members.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/structSIGACTION-members.html new file mode 100755 index 0000000..5ea88f9 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/structSIGACTION-members.html @@ -0,0 +1,91 @@ + + + + +PinCRT: Member List + + + + + + + + +
+
+ + + + + + +
+
PinCRT
+
+
+ + +
+
+
+
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
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/structSIGACTION.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/structSIGACTION.html new file mode 100755 index 0000000..f20f73f --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/structSIGACTION.html @@ -0,0 +1,110 @@ + + + + +PinCRT: SIGACTION Struct Reference + + + + + + + + +
+
+ + + + + + +
+
PinCRT
+
+
+ + +
+
+ +
+
SIGACTION Struct Reference
+
+
+ +

#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()

+

The documentation for this struct was generated from the following file:
    +
  • signals.h
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/struct__OS__APIS__MUTEX__TYPE-members.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/struct__OS__APIS__MUTEX__TYPE-members.html new file mode 100755 index 0000000..e770449 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/struct__OS__APIS__MUTEX__TYPE-members.html @@ -0,0 +1,90 @@ + + + + +PinCRT: Member List + + + + + + + + +
+
+ + + + + + +
+
PinCRT
+
+
+ + +
+
+
+
_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
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/struct__OS__APIS__MUTEX__TYPE.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/struct__OS__APIS__MUTEX__TYPE.html new file mode 100755 index 0000000..4611ca7 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/struct__OS__APIS__MUTEX__TYPE.html @@ -0,0 +1,115 @@ + + + + +PinCRT: _OS_APIS_MUTEX_TYPE Struct Reference + + + + + + + + +
+
+ + + + + + +
+
PinCRT
+
+
+ + +
+
+ +
+
_OS_APIS_MUTEX_TYPE Struct Reference
+
+
+ +

#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 & macOS*
  • +
  • CPU: All
  • +
+
+

The documentation for this struct was generated from the following file:
    +
  • mutex.h
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/struct__OS__FILE__UNIQUE__ID-members.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/struct__OS__FILE__UNIQUE__ID-members.html new file mode 100755 index 0000000..2cdde03 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/struct__OS__FILE__UNIQUE__ID-members.html @@ -0,0 +1,85 @@ + + + + +PinCRT: Member List + + + + + + + + +
+
+ + + + + + +
+
PinCRT
+
+
+ + +
+
+
+
_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
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/struct__OS__FILE__UNIQUE__ID.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/struct__OS__FILE__UNIQUE__ID.html new file mode 100755 index 0000000..a281553 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/struct__OS__FILE__UNIQUE__ID.html @@ -0,0 +1,100 @@ + + + + +PinCRT: _OS_FILE_UNIQUE_ID Struct Reference + + + + + + + + +
+
+ + + + + + +
+
PinCRT
+
+
+ + +
+
+ +
+
_OS_FILE_UNIQUE_ID Struct Reference
+
+
+ +

#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
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/struct__OS__RETURN__CODE-members.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/struct__OS__RETURN__CODE-members.html new file mode 100755 index 0000000..a3dd1c5 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/struct__OS__RETURN__CODE-members.html @@ -0,0 +1,86 @@ + + + + +PinCRT: Member List + + + + + + + + +
+
+ + + + + + +
+
PinCRT
+
+
+ + +
+
+
+
_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
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/struct__OS__RETURN__CODE.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/struct__OS__RETURN__CODE.html new file mode 100755 index 0000000..0d16357 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/struct__OS__RETURN__CODE.html @@ -0,0 +1,102 @@ + + + + +PinCRT: _OS_RETURN_CODE Struct Reference + + + + + + + + +
+
+ + + + + + +
+
PinCRT
+
+
+ + +
+
+ +
+
_OS_RETURN_CODE Struct Reference
+
+
+ +

#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

+

The documentation for this struct was generated from the following file:
    +
  • os_return_codes.h
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/struct__OS__RETURN__CODE__POSIX-members.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/struct__OS__RETURN__CODE__POSIX-members.html new file mode 100755 index 0000000..f530604 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/struct__OS__RETURN__CODE__POSIX-members.html @@ -0,0 +1,86 @@ + + + + +PinCRT: Member List + + + + + + + + +
+
+ + + + + + +
+
PinCRT
+
+
+ + +
+
+
+
_OS_RETURN_CODE_POSIX Member List
+
+
+This is the complete list of members for _OS_RETURN_CODE_POSIX, including all inherited members. + + +
function_return_value (defined in _OS_RETURN_CODE_POSIX)_OS_RETURN_CODE_POSIX
return_errno (defined in _OS_RETURN_CODE_POSIX)_OS_RETURN_CODE_POSIX
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/struct__OS__RETURN__CODE__POSIX.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/struct__OS__RETURN__CODE__POSIX.html new file mode 100755 index 0000000..915cf61 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/struct__OS__RETURN__CODE__POSIX.html @@ -0,0 +1,98 @@ + + + + +PinCRT: _OS_RETURN_CODE_POSIX Struct Reference + + + + + + + + +
+
+ + + + + + +
+
PinCRT
+
+
+ + +
+
+ +
+
_OS_RETURN_CODE_POSIX Struct Reference
+
+
+ +

List of all members.

+ + + + +

+Public Attributes

+ADDRINT function_return_value
+ADDRINT return_errno
+
The documentation for this struct was generated from the following file:
    +
  • os_return_codes.h
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/structkernel__sigaction-members.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/structkernel__sigaction-members.html new file mode 100755 index 0000000..21b287f --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/structkernel__sigaction-members.html @@ -0,0 +1,88 @@ + + + + +PinCRT: Member List + + + + + + + + +
+
+ + + + + + +
+
PinCRT
+
+
+ + +
+
+
+
kernel_sigaction Member List
+
+
+This is the complete list of members for kernel_sigaction, including all inherited members. + + + + +
_flags (defined in kernel_sigaction)kernel_sigaction
_handler (defined in kernel_sigaction)kernel_sigaction
_mask (defined in kernel_sigaction)kernel_sigaction
_restorer (defined in kernel_sigaction)kernel_sigaction
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/structkernel__sigaction.html b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/structkernel__sigaction.html new file mode 100755 index 0000000..1a3ff74 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/structkernel__sigaction.html @@ -0,0 +1,102 @@ + + + + +PinCRT: kernel_sigaction Struct Reference + + + + + + + + +
+
+ + + + + + +
+
PinCRT
+
+
+ + +
+
+ +
+
kernel_sigaction Struct Reference
+
+
+ +

List of all members.

+ + + + + + +

+Public Attributes

+void(* _handler )(int)
+unsigned long _flags
+void(* _restorer )(void)
+UINT64 _mask
+
The documentation for this struct was generated from the following file:
    +
  • sigaction_kernel.h
  • +
+
+ + + + +
+ +
+ + + + diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/tab_a.png b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/tab_a.png new file mode 100755 index 0000000000000000000000000000000000000000..2d99ef23fed78c7683f0b5aa803d937060d288c4 GIT binary patch literal 140 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qo)`sjv*C{Z|CmjY;X`^DSv)) z;hc^cTF;t%XWXdwWP5+kt?jQ5uhqKtjd^EY`^^-S;M%tFAj_l)EwVTK)E@1LSD0{e q?a6($SGQTzz1#QBzr0NMKf^0WCX-0bi?u-G89ZJ6T-G@yGywp8?ljB* literal 0 HcmV?d00001 diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/tab_b.png b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/tab_b.png new file mode 100755 index 0000000000000000000000000000000000000000..b2c3d2be3c7e518fbca6bb30f571882e72fc506d GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qk9-Ajv*C{Z|~mbJ)|JfaM8Xd zIP7xAmLwau9@iXhZTrl-TjWj9jM#?{xt`6uU{<)jb9Suc^QnbhJ(o{ib8=j9u0_mE8M7kgF7f<7W7IEf=8(L_qx|g0H;V7iPxm&Q@G7p8W2Kx&iT|YUM=ITC zY<0Qbr;u&AtXD{o@41wH=7&d8=2Z_{M9Tsa=g*t*@A3H$UOlxZk7?f6RUWpx>Fc_L s#LQ{edY3MpIXkMeV^&YV=9fR%8Jv|Kya=#u06K}m)78&qol`;+0RKEt)&Kwi literal 0 HcmV?d00001 diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/tab_s.png b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/tab_s.png new file mode 100755 index 0000000000000000000000000000000000000000..978943ac807718de0e69e5a585a8f0a1e5999285 GIT binary patch literal 189 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QZ1e?jv*C{Z|}b5Yzkm-c<7z3 zq^cq0=~}Z;b(!Zvb5Z%sTRFKGlz1=qOFg;myyu?$r`wZb^irPsN1a)6)TwB0r+)wb zPL25;=adu89?fTK`qDR>$D*)b_WOmdKI;Vst02j(hg8%>k literal 0 HcmV?d00001 diff --git a/src/tracer/pintool/pin-3.13/extras/crt/doc/html/tabs.css b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/tabs.css new file mode 100755 index 0000000..2192056 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/doc/html/tabs.css @@ -0,0 +1,59 @@ +.tabs, .tabs2, .tabs3 { + background-image: url('tab_b.png'); + width: 100%; + z-index: 101; + font-size: 13px; +} + +.tabs2 { + font-size: 10px; +} +.tabs3 { + font-size: 9px; +} + +.tablist { + margin: 0; + padding: 0; + display: table; +} + +.tablist li { + float: left; + display: table-cell; + background-image: url('tab_b.png'); + line-height: 36px; + list-style: none; +} + +.tablist a { + display: block; + padding: 0 20px; + font-weight: bold; + background-image:url('tab_s.png'); + background-repeat:no-repeat; + background-position:right; + color: #283A5D; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; + outline: none; +} + +.tabs3 .tablist a { + padding: 0 10px; +} + +.tablist a:hover { + background-image: url('tab_h.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); + text-decoration: none; +} + +.tablist li.current a { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} diff --git a/src/tracer/pintool/pin-3.13/extras/crt/include/alloca.h b/src/tracer/pintool/pin-3.13/extras/crt/include/alloca.h new file mode 100755 index 0000000..430efd4 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/include/alloca.h @@ -0,0 +1,62 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + * + * This file incorporates work covered by the following copyright and permission notice: + */ + +/* + * 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/src/tracer/pintool/pin-3.13/extras/crt/include/amd64/machine/fenv.h b/src/tracer/pintool/pin-3.13/extras/crt/include/amd64/machine/fenv.h new file mode 100755 index 0000000..c2b25ed --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/android/api-level.h b/src/tracer/pintool/pin-3.13/extras/crt/include/android/api-level.h new file mode 100755 index 0000000..2d2f096 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/android/dlext.h b/src/tracer/pintool/pin-3.13/extras/crt/include/android/dlext.h new file mode 100755 index 0000000..5c3a206 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/android/set_abort_message.h b/src/tracer/pintool/pin-3.13/extras/crt/include/android/set_abort_message.h new file mode 100755 index 0000000..4b3d82b --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/ar.h b/src/tracer/pintool/pin-3.13/extras/crt/include/ar.h new file mode 100755 index 0000000..835290b --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/arch-x86/machine/asm.h b/src/tracer/pintool/pin-3.13/extras/crt/include/arch-x86/machine/asm.h new file mode 100755 index 0000000..943f9dd --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/arch-x86/machine/elf_machdep.h b/src/tracer/pintool/pin-3.13/extras/crt/include/arch-x86/machine/elf_machdep.h new file mode 100755 index 0000000..4bce933 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/arch-x86/machine/endian.h b/src/tracer/pintool/pin-3.13/extras/crt/include/arch-x86/machine/endian.h new file mode 100755 index 0000000..e1506b1 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/arch-x86/machine/exec.h b/src/tracer/pintool/pin-3.13/extras/crt/include/arch-x86/machine/exec.h new file mode 100755 index 0000000..d091741 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/arch-x86/machine/setjmp.h b/src/tracer/pintool/pin-3.13/extras/crt/include/arch-x86/machine/setjmp.h new file mode 100755 index 0000000..1114839 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/include/arch-x86/machine/setjmp.h @@ -0,0 +1,31 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + * + * This file incorporates work covered by the following copyright and permission notice: + */ + +/* $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/src/tracer/pintool/pin-3.13/extras/crt/include/arch-x86_64/machine/asm.h b/src/tracer/pintool/pin-3.13/extras/crt/include/arch-x86_64/machine/asm.h new file mode 100755 index 0000000..28cd08f --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/arch-x86_64/machine/elf_machdep.h b/src/tracer/pintool/pin-3.13/extras/crt/include/arch-x86_64/machine/elf_machdep.h new file mode 100755 index 0000000..bf1f273 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/arch-x86_64/machine/endian.h b/src/tracer/pintool/pin-3.13/extras/crt/include/arch-x86_64/machine/endian.h new file mode 100755 index 0000000..7889a37 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/arch-x86_64/machine/exec.h b/src/tracer/pintool/pin-3.13/extras/crt/include/arch-x86_64/machine/exec.h new file mode 100755 index 0000000..829351c --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/arch-x86_64/machine/fpu.h b/src/tracer/pintool/pin-3.13/extras/crt/include/arch-x86_64/machine/fpu.h new file mode 100755 index 0000000..a1a7e37 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/include/arch-x86_64/machine/fpu.h @@ -0,0 +1,89 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + * + * This file incorporates work covered by the following copyright and permission notice: + */ + +/* $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/src/tracer/pintool/pin-3.13/extras/crt/include/arch-x86_64/machine/setjmp.h b/src/tracer/pintool/pin-3.13/extras/crt/include/arch-x86_64/machine/setjmp.h new file mode 100755 index 0000000..d5208f2 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/include/arch-x86_64/machine/setjmp.h @@ -0,0 +1,58 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + * + * This file incorporates work covered by the following copyright and permission notice: + */ + +/* $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/src/tracer/pintool/pin-3.13/extras/crt/include/arpa/inet.h b/src/tracer/pintool/pin-3.13/extras/crt/include/arpa/inet.h new file mode 100755 index 0000000..86265bf --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/arpa/nameser.h b/src/tracer/pintool/pin-3.13/extras/crt/include/arpa/nameser.h new file mode 100755 index 0000000..a87ac91 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/arpa/nameser_compat.h b/src/tracer/pintool/pin-3.13/extras/crt/include/arpa/nameser_compat.h new file mode 100755 index 0000000..1b4a7b0 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/include/arpa/nameser_compat.h @@ -0,0 +1,253 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + * + * This file incorporates work covered by the following copyright and permission notice: + */ + +/* $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/src/tracer/pintool/pin-3.13/extras/crt/include/arpa/telnet.h b/src/tracer/pintool/pin-3.13/extras/crt/include/arpa/telnet.h new file mode 100755 index 0000000..d318e08 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/assert.h b/src/tracer/pintool/pin-3.13/extras/crt/include/assert.h new file mode 100755 index 0000000..438a5c5 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/include/assert.h @@ -0,0 +1,93 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + * + * This file incorporates work covered by the following copyright and permission notice: + */ + +/* $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/src/tracer/pintool/pin-3.13/extras/crt/include/baresyscall/baresyscall.h b/src/tracer/pintool/pin-3.13/extras/crt/include/baresyscall/baresyscall.h new file mode 100755 index 0000000..8acb3a8 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/include/baresyscall/baresyscall.h @@ -0,0 +1,63 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/crt/include/baresyscall/ia32-linux/baresyscall.h b/src/tracer/pintool/pin-3.13/extras/crt/include/baresyscall/ia32-linux/baresyscall.h new file mode 100755 index 0000000..dec2ab5 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/include/baresyscall/ia32-linux/baresyscall.h @@ -0,0 +1,48 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/crt/include/baresyscall/intel64-linux/baresyscall.h b/src/tracer/pintool/pin-3.13/extras/crt/include/baresyscall/intel64-linux/baresyscall.h new file mode 100755 index 0000000..a761e51 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/include/baresyscall/intel64-linux/baresyscall.h @@ -0,0 +1,39 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/crt/include/baresyscall/linux-baresyscall.h b/src/tracer/pintool/pin-3.13/extras/crt/include/baresyscall/linux-baresyscall.h new file mode 100755 index 0000000..edb9793 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/include/baresyscall/linux-baresyscall.h @@ -0,0 +1,66 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/crt/include/baresyscall/syscalltypes.h b/src/tracer/pintool/pin-3.13/extras/crt/include/baresyscall/syscalltypes.h new file mode 100755 index 0000000..c1008f9 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/include/baresyscall/syscalltypes.h @@ -0,0 +1,29 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/crt/include/baresyscall/unix-baresyscall.h b/src/tracer/pintool/pin-3.13/extras/crt/include/baresyscall/unix-baresyscall.h new file mode 100755 index 0000000..63c01e1 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/include/baresyscall/unix-baresyscall.h @@ -0,0 +1,58 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +// : 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/src/tracer/pintool/pin-3.13/extras/crt/include/byteswap.h b/src/tracer/pintool/pin-3.13/extras/crt/include/byteswap.h new file mode 100755 index 0000000..74b0e91 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/complex.h b/src/tracer/pintool/pin-3.13/extras/crt/include/complex.h new file mode 100755 index 0000000..0db07cc --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/include/complex.h @@ -0,0 +1,111 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + * + * This file incorporates work covered by the following copyright and permission notice: + */ + +/*- + * 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/src/tracer/pintool/pin-3.13/extras/crt/include/ctype.h b/src/tracer/pintool/pin-3.13/extras/crt/include/ctype.h new file mode 100755 index 0000000..3ec0ed1 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/include/ctype.h @@ -0,0 +1,122 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + * + * This file incorporates work covered by the following copyright and permission notice: + */ + +/* $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/src/tracer/pintool/pin-3.13/extras/crt/include/dirent.h b/src/tracer/pintool/pin-3.13/extras/crt/include/dirent.h new file mode 100755 index 0000000..bee6b9f --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/include/dirent.h @@ -0,0 +1,104 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + * + * This file incorporates work covered by the following copyright and permission notice: + */ + +/* + * 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/src/tracer/pintool/pin-3.13/extras/crt/include/dlfcn.h b/src/tracer/pintool/pin-3.13/extras/crt/include/dlfcn.h new file mode 100755 index 0000000..1e983ee --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/include/dlfcn.h @@ -0,0 +1,132 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + * + * This file incorporates work covered by the following copyright and permission notice: + */ + +/* + * 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, /* macOS 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 (macOS 10.5 and later) */ +# define RTLD_MAIN_ONLY ((void *) -5) /* Search main executable only (macOS 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/src/tracer/pintool/pin-3.13/extras/crt/include/elf.h b/src/tracer/pintool/pin-3.13/extras/crt/include/elf.h new file mode 100755 index 0000000..18c4b97 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/include/elf.h @@ -0,0 +1,67 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + * + * This file incorporates work covered by the following copyright and permission notice: + */ + +/* + * 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 "freebsd/include/elf.h" +#include "freebsd/sys/compat/linux/linux_misc.h" +#include "linux/auxvec.h" +#include "asm-x86/asm/auxvec.h" + +#ifdef TARGET_IA32 +typedef Elf32_Auxinfo Elf32_auxv_t; +#else +typedef Elf32_Auxinfo Elf32_auxv_t; +typedef Elf64_Auxinfo Elf64_auxv_t; +#endif // TARGET_IA32 + +/* + * Copied from bionic + */ +#define ELF_ST_BIND(x) ((x) >> 4) +#define ELF_ST_TYPE(x) (((unsigned int) x) & 0xf) + +#endif /* _ELF_H */ diff --git a/src/tracer/pintool/pin-3.13/extras/crt/include/endian.h b/src/tracer/pintool/pin-3.13/extras/crt/include/endian.h new file mode 100755 index 0000000..475b48c --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/err.h b/src/tracer/pintool/pin-3.13/extras/crt/include/err.h new file mode 100755 index 0000000..3615a4e --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/include/err.h @@ -0,0 +1,74 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + * + * This file incorporates work covered by the following copyright and permission notice: + */ + +/* $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/src/tracer/pintool/pin-3.13/extras/crt/include/errno.h b/src/tracer/pintool/pin-3.13/extras/crt/include/errno.h new file mode 100755 index 0000000..1a36b7a --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/execinfo.h b/src/tracer/pintool/pin-3.13/extras/crt/include/execinfo.h new file mode 100755 index 0000000..4080e3c --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/include/execinfo.h @@ -0,0 +1,21 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + */ + +#include + +__BEGIN_DECLS + +int backtrace(void **buffer, int size); +char **backtrace_symbols(void *const *buffer, int size); + +__END_DECLS diff --git a/src/tracer/pintool/pin-3.13/extras/crt/include/fcntl.h b/src/tracer/pintool/pin-3.13/extras/crt/include/fcntl.h new file mode 100755 index 0000000..f04f7a9 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/include/fcntl.h @@ -0,0 +1,160 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + * + * This file incorporates work covered by the following copyright and permission notice: + */ + +/* + * 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/src/tracer/pintool/pin-3.13/extras/crt/include/features.h b/src/tracer/pintool/pin-3.13/extras/crt/include/features.h new file mode 100755 index 0000000..a279c7f --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/fenv.h b/src/tracer/pintool/pin-3.13/extras/crt/include/fenv.h new file mode 100755 index 0000000..d5ca3aa --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/include/fenv.h @@ -0,0 +1,90 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + * + * This file incorporates work covered by the following copyright and permission notice: + */ + +/* $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/src/tracer/pintool/pin-3.13/extras/crt/include/fnmatch.h b/src/tracer/pintool/pin-3.13/extras/crt/include/fnmatch.h new file mode 100755 index 0000000..772b4ef --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/freebsd/include/elf.h b/src/tracer/pintool/pin-3.13/extras/crt/include/freebsd/include/elf.h new file mode 100755 index 0000000..8708006 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/include/freebsd/include/elf.h @@ -0,0 +1,55 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + * + * This file incorporates work covered by the following copyright and permission notice: + */ + +/*- + * Copyright (c) 2001 David E. O'Brien. + * 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$ + */ + +/* + * This is a Solaris compatibility header + */ + +#ifndef _ELF_H_ +#define _ELF_H_ + +#include "../sys/x86/include/elf.h" +#include "../sys/sys/elf32.h" +#include "../sys/sys/elf64.h" + +#endif /* !_ELF_H_ */ diff --git a/src/tracer/pintool/pin-3.13/extras/crt/include/freebsd/sys/compat/linux/linux_misc.h b/src/tracer/pintool/pin-3.13/extras/crt/include/freebsd/sys/compat/linux/linux_misc.h new file mode 100755 index 0000000..7c8a717 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/include/freebsd/sys/compat/linux/linux_misc.h @@ -0,0 +1,154 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + * + * This file incorporates work covered by the following copyright and permission notice: + */ + +/*- + * Copyright (c) 2006 Roman Divacky + * 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. + * + * $FreeBSD$ + */ + +#ifndef _LINUX_MISC_H_ +#define _LINUX_MISC_H_ + + + /* bits per mask */ +#define LINUX_NFDBITS sizeof(l_fd_mask) * 8 + +/* + * Miscellaneous + */ +#define LINUX_NAME_MAX 255 +#define LINUX_MAX_UTSNAME 65 + +#define LINUX_CTL_MAXNAME 10 + +/* defines for prctl */ +#define LINUX_PR_SET_PDEATHSIG 1 /* Second arg is a signal. */ +#define LINUX_PR_GET_PDEATHSIG 2 /* + * Second arg is a ptr to return the + * signal. + */ +#define LINUX_PR_GET_KEEPCAPS 7 /* Get drop capabilities on setuid */ +#define LINUX_PR_SET_KEEPCAPS 8 /* Set drop capabilities on setuid */ +#define LINUX_PR_SET_NAME 15 /* Set process name. */ +#define LINUX_PR_GET_NAME 16 /* Get process name. */ + +#define LINUX_MAX_COMM_LEN 16 /* Maximum length of the process name. */ + +#define LINUX_MREMAP_MAYMOVE 1 +#define LINUX_MREMAP_FIXED 2 + +#define LINUX_PATH_MAX 4096 + + +/* + * Non-standard aux entry types used in Linux ELF binaries. + */ + +#define LINUX_AT_PLATFORM 15 /* String identifying CPU */ +#define LINUX_AT_HWCAP 16 /* CPU capabilities */ +#define LINUX_AT_CLKTCK 17 /* frequency at which times() increments */ +#define LINUX_AT_SECURE 23 /* secure mode boolean */ +#define LINUX_AT_BASE_PLATFORM 24 /* string identifying real platform, may + * differ from AT_PLATFORM. + */ +#define LINUX_AT_RANDOM 25 /* address of random bytes */ +#define LINUX_AT_EXECFN 31 /* filename of program */ +#define LINUX_AT_SYSINFO 32 /* vsyscall */ +#define LINUX_AT_SYSINFO_EHDR 33 /* vdso header */ + +#define LINUX_AT_RANDOM_LEN 16 /* size of random bytes */ + +/* Linux sets the i387 to extended precision. */ +#define __LINUX_NPXCW__ 0x37f + +#define LINUX_CLONE_VM 0x00000100 +#define LINUX_CLONE_FS 0x00000200 +#define LINUX_CLONE_FILES 0x00000400 +#define LINUX_CLONE_SIGHAND 0x00000800 +#define LINUX_CLONE_PID 0x00001000 /* No longer exist in Linux */ +#define LINUX_CLONE_VFORK 0x00004000 +#define LINUX_CLONE_PARENT 0x00008000 +#define LINUX_CLONE_THREAD 0x00010000 +#define LINUX_CLONE_SETTLS 0x00080000 +#define LINUX_CLONE_PARENT_SETTID 0x00100000 +#define LINUX_CLONE_CHILD_CLEARTID 0x00200000 +#define LINUX_CLONE_CHILD_SETTID 0x01000000 + +/* Scheduling policies */ +#define LINUX_SCHED_OTHER 0 +#define LINUX_SCHED_FIFO 1 +#define LINUX_SCHED_RR 2 + +#define LINUX_UTIME_NOW 0x3FFFFFFF +#define LINUX_UTIME_OMIT 0x3FFFFFFE + +extern int stclohz; + +#define LINUX_WNOHANG 0x00000001 +#define LINUX_WUNTRACED 0x00000002 +#define LINUX_WSTOPPED LINUX_WUNTRACED +#define LINUX_WEXITED 0x00000004 +#define LINUX_WCONTINUED 0x00000008 +#define LINUX_WNOWAIT 0x01000000 + + +#define __WNOTHREAD 0x20000000 +#define __WALL 0x40000000 +#define __WCLONE 0x80000000 + +/* Linux waitid idtype */ +#define LINUX_P_ALL 0 +#define LINUX_P_PID 1 +#define LINUX_P_PGID 2 + +#define LINUX_RLIMIT_LOCKS RLIM_NLIMITS + 1 +#define LINUX_RLIMIT_SIGPENDING RLIM_NLIMITS + 2 +#define LINUX_RLIMIT_MSGQUEUE RLIM_NLIMITS + 3 +#define LINUX_RLIMIT_NICE RLIM_NLIMITS + 4 +#define LINUX_RLIMIT_RTPRIO RLIM_NLIMITS + 5 +#define LINUX_RLIMIT_RTTIME RLIM_NLIMITS + 6 + +#define LINUX_RLIM_INFINITY (~0UL) + +/* Linux getrandom flags */ +#define LINUX_GRND_NONBLOCK 0x0001 +#define LINUX_GRND_RANDOM 0x0002 + +#endif /* _LINUX_MISC_H_ */ diff --git a/src/tracer/pintool/pin-3.13/extras/crt/include/freebsd/sys/sys/elf32.h b/src/tracer/pintool/pin-3.13/extras/crt/include/freebsd/sys/sys/elf32.h new file mode 100755 index 0000000..0c8f1f2 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/include/freebsd/sys/sys/elf32.h @@ -0,0 +1,278 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + * + * This file incorporates work covered by the following copyright and permission notice: + */ + +/*- + * Copyright (c) 1996-1998 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 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$ + */ + +#ifndef _SYS_ELF32_H_ +#define _SYS_ELF32_H_ 1 + +#include "elf_common.h" + +/* + * ELF definitions common to all 32-bit architectures. + */ + +typedef uint32_t Elf32_Addr; +typedef uint16_t Elf32_Half; +typedef uint32_t Elf32_Off; +typedef int32_t Elf32_Sword; +typedef uint32_t Elf32_Word; +typedef uint64_t Elf32_Lword; + +typedef Elf32_Word Elf32_Hashelt; + +/* Non-standard class-dependent datatype used for abstraction. */ +typedef Elf32_Word Elf32_Size; +typedef Elf32_Sword Elf32_Ssize; + +/* + * ELF header. + */ + +typedef struct { + unsigned char e_ident[EI_NIDENT]; /* File identification. */ + Elf32_Half e_type; /* File type. */ + Elf32_Half e_machine; /* Machine architecture. */ + Elf32_Word e_version; /* ELF format version. */ + Elf32_Addr e_entry; /* Entry point. */ + Elf32_Off e_phoff; /* Program header file offset. */ + Elf32_Off e_shoff; /* Section header file offset. */ + Elf32_Word e_flags; /* Architecture-specific flags. */ + Elf32_Half e_ehsize; /* Size of ELF header in bytes. */ + Elf32_Half e_phentsize; /* Size of program header entry. */ + Elf32_Half e_phnum; /* Number of program header entries. */ + Elf32_Half e_shentsize; /* Size of section header entry. */ + Elf32_Half e_shnum; /* Number of section header entries. */ + Elf32_Half e_shstrndx; /* Section name strings section. */ +} Elf32_Ehdr; + +/* + * Shared object information, found in SHT_MIPS_LIBLIST. + */ + +typedef struct { + Elf32_Word l_name; /* The name of a shared object. */ + Elf32_Word l_time_stamp; /* 32-bit timestamp. */ + Elf32_Word l_checksum; /* Checksum of visible symbols, sizes. */ + Elf32_Word l_version; /* Interface version string index. */ + Elf32_Word l_flags; /* Flags (LL_*). */ +} Elf32_Lib; + +/* + * Section header. + */ + +typedef struct { + Elf32_Word sh_name; /* Section name (index into the + section header string table). */ + Elf32_Word sh_type; /* Section type. */ + Elf32_Word sh_flags; /* Section flags. */ + Elf32_Addr sh_addr; /* Address in memory image. */ + Elf32_Off sh_offset; /* Offset in file. */ + Elf32_Word sh_size; /* Size in bytes. */ + Elf32_Word sh_link; /* Index of a related section. */ + Elf32_Word sh_info; /* Depends on section type. */ + Elf32_Word sh_addralign; /* Alignment in bytes. */ + Elf32_Word sh_entsize; /* Size of each entry in section. */ +} Elf32_Shdr; + +/* + * Program header. + */ + +typedef struct { + Elf32_Word p_type; /* Entry type. */ + Elf32_Off p_offset; /* File offset of contents. */ + Elf32_Addr p_vaddr; /* Virtual address in memory image. */ + Elf32_Addr p_paddr; /* Physical address (not used). */ + Elf32_Word p_filesz; /* Size of contents in file. */ + Elf32_Word p_memsz; /* Size of contents in memory. */ + Elf32_Word p_flags; /* Access permission flags. */ + Elf32_Word p_align; /* Alignment in memory and file. */ +} Elf32_Phdr; + +/* + * Dynamic structure. The ".dynamic" section contains an array of them. + */ + +typedef struct { + Elf32_Sword d_tag; /* Entry type. */ + union { + Elf32_Word d_val; /* Integer value. */ + Elf32_Addr d_ptr; /* Address value. */ + } d_un; +} Elf32_Dyn; + +/* + * Relocation entries. + */ + +/* Relocations that don't need an addend field. */ +typedef struct { + Elf32_Addr r_offset; /* Location to be relocated. */ + Elf32_Word r_info; /* Relocation type and symbol index. */ +} Elf32_Rel; + +/* Relocations that need an addend field. */ +typedef struct { + Elf32_Addr r_offset; /* Location to be relocated. */ + Elf32_Word r_info; /* Relocation type and symbol index. */ + Elf32_Sword r_addend; /* Addend. */ +} Elf32_Rela; + +/* Macros for accessing the fields of r_info. */ +#define ELF32_R_SYM(info) ((info) >> 8) +#define ELF32_R_TYPE(info) ((unsigned char)(info)) + +/* Macro for constructing r_info from field values. */ +#define ELF32_R_INFO(sym, type) (((sym) << 8) + (unsigned char)(type)) + +/* + * Note entry header + */ +typedef Elf_Note Elf32_Nhdr; + +/* + * Move entry + */ +typedef struct { + Elf32_Lword m_value; /* symbol value */ + Elf32_Word m_info; /* size + index */ + Elf32_Word m_poffset; /* symbol offset */ + Elf32_Half m_repeat; /* repeat count */ + Elf32_Half m_stride; /* stride info */ +} Elf32_Move; + +/* + * The macros compose and decompose values for Move.r_info + * + * sym = ELF32_M_SYM(M.m_info) + * size = ELF32_M_SIZE(M.m_info) + * M.m_info = ELF32_M_INFO(sym, size) + */ +#define ELF32_M_SYM(info) ((info)>>8) +#define ELF32_M_SIZE(info) ((unsigned char)(info)) +#define ELF32_M_INFO(sym, size) (((sym)<<8)+(unsigned char)(size)) + +/* + * Hardware/Software capabilities entry + */ +typedef struct { + Elf32_Word c_tag; /* how to interpret value */ + union { + Elf32_Word c_val; + Elf32_Addr c_ptr; + } c_un; +} Elf32_Cap; + +/* + * Symbol table entries. + */ + +typedef struct { + Elf32_Word st_name; /* String table index of name. */ + Elf32_Addr st_value; /* Symbol value. */ + Elf32_Word st_size; /* Size of associated object. */ + unsigned char st_info; /* Type and binding information. */ + unsigned char st_other; /* Reserved (not used). */ + Elf32_Half st_shndx; /* Section index of symbol. */ +} Elf32_Sym; + +/* Macros for accessing the fields of st_info. */ +#define ELF32_ST_BIND(info) ((info) >> 4) +#define ELF32_ST_TYPE(info) ((info) & 0xf) + +/* Macro for constructing st_info from field values. */ +#define ELF32_ST_INFO(bind, type) (((bind) << 4) + ((type) & 0xf)) + +/* Macro for accessing the fields of st_other. */ +#define ELF32_ST_VISIBILITY(oth) ((oth) & 0x3) + +/* Structures used by Sun & GNU symbol versioning. */ +typedef struct +{ + Elf32_Half vd_version; + Elf32_Half vd_flags; + Elf32_Half vd_ndx; + Elf32_Half vd_cnt; + Elf32_Word vd_hash; + Elf32_Word vd_aux; + Elf32_Word vd_next; +} Elf32_Verdef; + +typedef struct +{ + Elf32_Word vda_name; + Elf32_Word vda_next; +} Elf32_Verdaux; + +typedef struct +{ + Elf32_Half vn_version; + Elf32_Half vn_cnt; + Elf32_Word vn_file; + Elf32_Word vn_aux; + Elf32_Word vn_next; +} Elf32_Verneed; + +typedef struct +{ + Elf32_Word vna_hash; + Elf32_Half vna_flags; + Elf32_Half vna_other; + Elf32_Word vna_name; + Elf32_Word vna_next; +} Elf32_Vernaux; + +typedef Elf32_Half Elf32_Versym; + +typedef struct { + Elf32_Half si_boundto; /* direct bindings - symbol bound to */ + Elf32_Half si_flags; /* per symbol flags */ +} Elf32_Syminfo; + +typedef struct { + Elf32_Word ch_type; + Elf32_Word ch_size; + Elf32_Word ch_addralign; +} Elf32_Chdr; + +#endif /* !_SYS_ELF32_H_ */ diff --git a/src/tracer/pintool/pin-3.13/extras/crt/include/freebsd/sys/sys/elf64.h b/src/tracer/pintool/pin-3.13/extras/crt/include/freebsd/sys/sys/elf64.h new file mode 100755 index 0000000..f713121 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/include/freebsd/sys/sys/elf64.h @@ -0,0 +1,282 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + * + * This file incorporates work covered by the following copyright and permission notice: + */ + +/*- + * Copyright (c) 1996-1998 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 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$ + */ + +#ifndef _SYS_ELF64_H_ +#define _SYS_ELF64_H_ 1 + +#include "elf_common.h" + +/* + * ELF definitions common to all 64-bit architectures. + */ + +typedef uint64_t Elf64_Addr; +typedef uint16_t Elf64_Half; +typedef uint64_t Elf64_Off; +typedef int32_t Elf64_Sword; +typedef int64_t Elf64_Sxword; +typedef uint32_t Elf64_Word; +typedef uint64_t Elf64_Lword; +typedef uint64_t Elf64_Xword; + +/* + * Types of dynamic symbol hash table bucket and chain elements. + * + * This is inconsistent among 64 bit architectures, so a machine dependent + * typedef is required. + */ + +typedef Elf64_Word Elf64_Hashelt; + +/* Non-standard class-dependent datatype used for abstraction. */ +typedef Elf64_Xword Elf64_Size; +typedef Elf64_Sxword Elf64_Ssize; + +/* + * ELF header. + */ + +typedef struct { + unsigned char e_ident[EI_NIDENT]; /* File identification. */ + Elf64_Half e_type; /* File type. */ + Elf64_Half e_machine; /* Machine architecture. */ + Elf64_Word e_version; /* ELF format version. */ + Elf64_Addr e_entry; /* Entry point. */ + Elf64_Off e_phoff; /* Program header file offset. */ + Elf64_Off e_shoff; /* Section header file offset. */ + Elf64_Word e_flags; /* Architecture-specific flags. */ + Elf64_Half e_ehsize; /* Size of ELF header in bytes. */ + Elf64_Half e_phentsize; /* Size of program header entry. */ + Elf64_Half e_phnum; /* Number of program header entries. */ + Elf64_Half e_shentsize; /* Size of section header entry. */ + Elf64_Half e_shnum; /* Number of section header entries. */ + Elf64_Half e_shstrndx; /* Section name strings section. */ +} Elf64_Ehdr; + +/* + * Shared object information, found in SHT_MIPS_LIBLIST. + */ + +typedef struct { + Elf64_Word l_name; /* The name of a shared object. */ + Elf64_Word l_time_stamp; /* 64-bit timestamp. */ + Elf64_Word l_checksum; /* Checksum of visible symbols, sizes. */ + Elf64_Word l_version; /* Interface version string index. */ + Elf64_Word l_flags; /* Flags (LL_*). */ +} Elf64_Lib; + +/* + * Section header. + */ + +typedef struct { + Elf64_Word sh_name; /* Section name (index into the + section header string table). */ + Elf64_Word sh_type; /* Section type. */ + Elf64_Xword sh_flags; /* Section flags. */ + Elf64_Addr sh_addr; /* Address in memory image. */ + Elf64_Off sh_offset; /* Offset in file. */ + Elf64_Xword sh_size; /* Size in bytes. */ + Elf64_Word sh_link; /* Index of a related section. */ + Elf64_Word sh_info; /* Depends on section type. */ + Elf64_Xword sh_addralign; /* Alignment in bytes. */ + Elf64_Xword sh_entsize; /* Size of each entry in section. */ +} Elf64_Shdr; + +/* + * Program header. + */ + +typedef struct { + Elf64_Word p_type; /* Entry type. */ + Elf64_Word p_flags; /* Access permission flags. */ + Elf64_Off p_offset; /* File offset of contents. */ + Elf64_Addr p_vaddr; /* Virtual address in memory image. */ + Elf64_Addr p_paddr; /* Physical address (not used). */ + Elf64_Xword p_filesz; /* Size of contents in file. */ + Elf64_Xword p_memsz; /* Size of contents in memory. */ + Elf64_Xword p_align; /* Alignment in memory and file. */ +} Elf64_Phdr; + +/* + * Dynamic structure. The ".dynamic" section contains an array of them. + */ + +typedef struct { + Elf64_Sxword d_tag; /* Entry type. */ + union { + Elf64_Xword d_val; /* Integer value. */ + Elf64_Addr d_ptr; /* Address value. */ + } d_un; +} Elf64_Dyn; + +/* + * Relocation entries. + */ + +/* Relocations that don't need an addend field. */ +typedef struct { + Elf64_Addr r_offset; /* Location to be relocated. */ + Elf64_Xword r_info; /* Relocation type and symbol index. */ +} Elf64_Rel; + +/* Relocations that need an addend field. */ +typedef struct { + Elf64_Addr r_offset; /* Location to be relocated. */ + Elf64_Xword r_info; /* Relocation type and symbol index. */ + Elf64_Sxword r_addend; /* Addend. */ +} Elf64_Rela; + +/* Macros for accessing the fields of r_info. */ +#define ELF64_R_SYM(info) ((info) >> 32) +#define ELF64_R_TYPE(info) ((info) & 0xffffffffL) + +/* Macro for constructing r_info from field values. */ +#define ELF64_R_INFO(sym, type) (((sym) << 32) + ((type) & 0xffffffffL)) + +#define ELF64_R_TYPE_DATA(info) (((Elf64_Xword)(info)<<32)>>40) +#define ELF64_R_TYPE_ID(info) (((Elf64_Xword)(info)<<56)>>56) +#define ELF64_R_TYPE_INFO(data, type) \ + (((Elf64_Xword)(data)<<8)+(Elf64_Xword)(type)) + +/* + * Note entry header + */ +typedef Elf_Note Elf64_Nhdr; + +/* + * Move entry + */ +typedef struct { + Elf64_Lword m_value; /* symbol value */ + Elf64_Xword m_info; /* size + index */ + Elf64_Xword m_poffset; /* symbol offset */ + Elf64_Half m_repeat; /* repeat count */ + Elf64_Half m_stride; /* stride info */ +} Elf64_Move; + +#define ELF64_M_SYM(info) ((info)>>8) +#define ELF64_M_SIZE(info) ((unsigned char)(info)) +#define ELF64_M_INFO(sym, size) (((sym)<<8)+(unsigned char)(size)) + +/* + * Hardware/Software capabilities entry + */ +typedef struct { + Elf64_Xword c_tag; /* how to interpret value */ + union { + Elf64_Xword c_val; + Elf64_Addr c_ptr; + } c_un; +} Elf64_Cap; + +/* + * Symbol table entries. + */ + +typedef struct { + Elf64_Word st_name; /* String table index of name. */ + unsigned char st_info; /* Type and binding information. */ + unsigned char st_other; /* Reserved (not used). */ + Elf64_Half st_shndx; /* Section index of symbol. */ + Elf64_Addr st_value; /* Symbol value. */ + Elf64_Xword st_size; /* Size of associated object. */ +} Elf64_Sym; + +/* Macros for accessing the fields of st_info. */ +#define ELF64_ST_BIND(info) ((info) >> 4) +#define ELF64_ST_TYPE(info) ((info) & 0xf) + +/* Macro for constructing st_info from field values. */ +#define ELF64_ST_INFO(bind, type) (((bind) << 4) + ((type) & 0xf)) + +/* Macro for accessing the fields of st_other. */ +#define ELF64_ST_VISIBILITY(oth) ((oth) & 0x3) + +/* Structures used by Sun & GNU-style symbol versioning. */ +typedef struct { + Elf64_Half vd_version; + Elf64_Half vd_flags; + Elf64_Half vd_ndx; + Elf64_Half vd_cnt; + Elf64_Word vd_hash; + Elf64_Word vd_aux; + Elf64_Word vd_next; +} Elf64_Verdef; + +typedef struct { + Elf64_Word vda_name; + Elf64_Word vda_next; +} Elf64_Verdaux; + +typedef struct { + Elf64_Half vn_version; + Elf64_Half vn_cnt; + Elf64_Word vn_file; + Elf64_Word vn_aux; + Elf64_Word vn_next; +} Elf64_Verneed; + +typedef struct { + Elf64_Word vna_hash; + Elf64_Half vna_flags; + Elf64_Half vna_other; + Elf64_Word vna_name; + Elf64_Word vna_next; +} Elf64_Vernaux; + +typedef Elf64_Half Elf64_Versym; + +typedef struct { + Elf64_Half si_boundto; /* direct bindings - symbol bound to */ + Elf64_Half si_flags; /* per symbol flags */ +} Elf64_Syminfo; + +typedef struct { + Elf64_Word ch_type; + Elf64_Word ch_reserved; + Elf64_Xword ch_size; + Elf64_Xword ch_addralign; +} Elf64_Chdr; + +#endif /* !_SYS_ELF64_H_ */ diff --git a/src/tracer/pintool/pin-3.13/extras/crt/include/freebsd/sys/sys/elf_common.h b/src/tracer/pintool/pin-3.13/extras/crt/include/freebsd/sys/sys/elf_common.h new file mode 100755 index 0000000..458813d --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/include/freebsd/sys/sys/elf_common.h @@ -0,0 +1,1361 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + * + * This file incorporates work covered by the following copyright and permission notice: + */ + +/*- + * Copyright (c) 2017 Dell EMC + * Copyright (c) 2000, 2001, 2008, 2011, David E. O'Brien + * Copyright (c) 1998 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 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$ + */ + +#ifndef _SYS_ELF_COMMON_H_ +#define _SYS_ELF_COMMON_H_ 1 + +/* + * ELF definitions that are independent of architecture or word size. + */ + +/* + * Note header. The ".note" section contains an array of notes. Each + * begins with this header, aligned to a word boundary. Immediately + * following the note header is n_namesz bytes of name, padded to the + * next word boundary. Then comes n_descsz bytes of descriptor, again + * padded to a word boundary. The values of n_namesz and n_descsz do + * not include the padding. + */ + +typedef struct { + u_int32_t n_namesz; /* Length of name. */ + u_int32_t n_descsz; /* Length of descriptor. */ + u_int32_t n_type; /* Type of this note. */ +} Elf_Note; + +/* + * Option kinds. + */ +#define ODK_NULL 0 /* undefined */ +#define ODK_REGINFO 1 /* register usage info */ +#define ODK_EXCEPTIONS 2 /* exception processing info */ +#define ODK_PAD 3 /* section padding */ +#define ODK_HWPATCH 4 /* hardware patch applied */ +#define ODK_FILL 5 /* fill value used by the linker */ +#define ODK_TAGS 6 /* reserved space for tools */ +#define ODK_HWAND 7 /* hardware AND patch applied */ +#define ODK_HWOR 8 /* hardware OR patch applied */ +#define ODK_GP_GROUP 9 /* GP group for text/data sections */ +#define ODK_IDENT 10 /* ID information */ +#define ODK_PAGESIZE 11 /* page size information */ + +/* + * ODK_EXCEPTIONS info field masks. + */ +#define OEX_FPU_MIN 0x0000001f /* min FPU exception required */ +#define OEX_FPU_MAX 0x00001f00 /* max FPU exception allowed */ +#define OEX_PAGE0 0x00010000 /* page zero must be mapped */ +#define OEX_SMM 0x00020000 /* run in sequential memory mode */ +#define OEX_PRECISEFP 0x00040000 /* run in precise FP exception mode */ +#define OEX_DISMISS 0x00080000 /* dismiss invalid address traps */ + +/* + * ODK_PAD info field masks. + */ +#define OPAD_PREFIX 0x0001 +#define OPAD_POSTFIX 0x0002 +#define OPAD_SYMBOL 0x0004 + +/* + * ODK_HWPATCH info field masks. + */ +#define OHW_R4KEOP 0x00000001 /* patch for R4000 branch at end-of-page bug */ +#define OHW_R8KPFETCH 0x00000002 /* R8000 prefetch bug may occur */ +#define OHW_R5KEOP 0x00000004 /* patch for R5000 branch at end-of-page bug */ +#define OHW_R5KCVTL 0x00000008 /* R5000 cvt.[ds].l bug: clean == 1 */ +#define OHW_R10KLDL 0x00000010UL /* need patch for R10000 misaligned load */ + +/* + * ODK_HWAND/ODK_HWOR info field and hwp_flags[12] masks. + */ +#define OHWA0_R4KEOP_CHECKED 0x00000001 /* object checked for R4000 end-of-page bug */ +#define OHWA0_R4KEOP_CLEAN 0x00000002 /* object verified clean for R4000 end-of-page bug */ +#define OHWO0_FIXADE 0x00000001 /* object requires call to fixade */ + +/* + * ODK_IDENT/ODK_GP_GROUP info field masks. + */ +#define OGP_GROUP 0x0000ffff /* GP group number */ +#define OGP_SELF 0x00010000 /* GP group is self-contained */ + +/* + * The header for GNU-style hash sections. + */ + +typedef struct { + u_int32_t gh_nbuckets; /* Number of hash buckets. */ + u_int32_t gh_symndx; /* First visible symbol in .dynsym. */ + u_int32_t gh_maskwords; /* #maskwords used in bloom filter. */ + u_int32_t gh_shift2; /* Bloom filter shift count. */ +} Elf_GNU_Hash_Header; + +/* Indexes into the e_ident array. Keep synced with + http://www.sco.com/developers/gabi/latest/ch4.eheader.html */ +#define EI_MAG0 0 /* Magic number, byte 0. */ +#define EI_MAG1 1 /* Magic number, byte 1. */ +#define EI_MAG2 2 /* Magic number, byte 2. */ +#define EI_MAG3 3 /* Magic number, byte 3. */ +#define EI_CLASS 4 /* Class of machine. */ +#define EI_DATA 5 /* Data format. */ +#define EI_VERSION 6 /* ELF format version. */ +#define EI_OSABI 7 /* Operating system / ABI identification */ +#define EI_ABIVERSION 8 /* ABI version */ +#define OLD_EI_BRAND 8 /* Start of architecture identification. */ +#define EI_PAD 9 /* Start of padding (per SVR4 ABI). */ +#define EI_NIDENT 16 /* Size of e_ident array. */ + +/* Values for the magic number bytes. */ +#define ELFMAG0 0x7f +#define ELFMAG1 'E' +#define ELFMAG2 'L' +#define ELFMAG3 'F' +#define ELFMAG "\177ELF" /* magic string */ +#define SELFMAG 4 /* magic string size */ + +/* Values for e_ident[EI_VERSION] and e_version. */ +#define EV_NONE 0 +#define EV_CURRENT 1 + +/* Values for e_ident[EI_CLASS]. */ +#define ELFCLASSNONE 0 /* Unknown class. */ +#define ELFCLASS32 1 /* 32-bit architecture. */ +#define ELFCLASS64 2 /* 64-bit architecture. */ + +/* Values for e_ident[EI_DATA]. */ +#define ELFDATANONE 0 /* Unknown data format. */ +#define ELFDATA2LSB 1 /* 2's complement little-endian. */ +#define ELFDATA2MSB 2 /* 2's complement big-endian. */ + +/* Values for e_ident[EI_OSABI]. */ +#define ELFOSABI_NONE 0 /* UNIX System V ABI */ +#define ELFOSABI_HPUX 1 /* HP-UX operating system */ +#define ELFOSABI_NETBSD 2 /* NetBSD */ +#define ELFOSABI_LINUX 3 /* GNU/Linux */ +#define ELFOSABI_HURD 4 /* GNU/Hurd */ +#define ELFOSABI_86OPEN 5 /* 86Open common IA32 ABI */ +#define ELFOSABI_SOLARIS 6 /* Solaris */ +#define ELFOSABI_AIX 7 /* AIX */ +#define ELFOSABI_IRIX 8 /* IRIX */ +#define ELFOSABI_FREEBSD 9 /* FreeBSD */ +#define ELFOSABI_TRU64 10 /* TRU64 UNIX */ +#define ELFOSABI_MODESTO 11 /* Novell Modesto */ +#define ELFOSABI_OPENBSD 12 /* OpenBSD */ +#define ELFOSABI_OPENVMS 13 /* Open VMS */ +#define ELFOSABI_NSK 14 /* HP Non-Stop Kernel */ +#define ELFOSABI_AROS 15 /* Amiga Research OS */ +#define ELFOSABI_FENIXOS 16 /* FenixOS */ +#define ELFOSABI_CLOUDABI 17 /* Nuxi CloudABI */ +#define ELFOSABI_ARM_AEABI 64 /* ARM EABI */ +#define ELFOSABI_ARM 97 /* ARM */ +#define ELFOSABI_STANDALONE 255 /* Standalone (embedded) application */ + +#define ELFOSABI_SYSV ELFOSABI_NONE /* symbol used in old spec */ +#define ELFOSABI_MONTEREY ELFOSABI_AIX /* Monterey */ +#define ELFOSABI_GNU ELFOSABI_LINUX + +/* e_ident */ +#define IS_ELF(ehdr) ((ehdr).e_ident[EI_MAG0] == ELFMAG0 && \ + (ehdr).e_ident[EI_MAG1] == ELFMAG1 && \ + (ehdr).e_ident[EI_MAG2] == ELFMAG2 && \ + (ehdr).e_ident[EI_MAG3] == ELFMAG3) + +/* Values for e_type. */ +#define ET_NONE 0 /* Unknown type. */ +#define ET_REL 1 /* Relocatable. */ +#define ET_EXEC 2 /* Executable. */ +#define ET_DYN 3 /* Shared object. */ +#define ET_CORE 4 /* Core file. */ +#define ET_LOOS 0xfe00 /* First operating system specific. */ +#define ET_HIOS 0xfeff /* Last operating system-specific. */ +#define ET_LOPROC 0xff00 /* First processor-specific. */ +#define ET_HIPROC 0xffff /* Last processor-specific. */ + +/* Values for e_machine. */ +#define EM_NONE 0 /* Unknown machine. */ +#define EM_M32 1 /* AT&T WE32100. */ +#define EM_SPARC 2 /* Sun SPARC. */ +#define EM_386 3 /* Intel i386. */ +#define EM_68K 4 /* Motorola 68000. */ +#define EM_88K 5 /* Motorola 88000. */ +#define EM_IAMCU 6 /* Intel MCU. */ +#define EM_860 7 /* Intel i860. */ +#define EM_MIPS 8 /* MIPS R3000 Big-Endian only. */ +#define EM_S370 9 /* IBM System/370. */ +#define EM_MIPS_RS3_LE 10 /* MIPS R3000 Little-Endian. */ +#define EM_PARISC 15 /* HP PA-RISC. */ +#define EM_VPP500 17 /* Fujitsu VPP500. */ +#define EM_SPARC32PLUS 18 /* SPARC v8plus. */ +#define EM_960 19 /* Intel 80960. */ +#define EM_PPC 20 /* PowerPC 32-bit. */ +#define EM_PPC64 21 /* PowerPC 64-bit. */ +#define EM_S390 22 /* IBM System/390. */ +#define EM_V800 36 /* NEC V800. */ +#define EM_FR20 37 /* Fujitsu FR20. */ +#define EM_RH32 38 /* TRW RH-32. */ +#define EM_RCE 39 /* Motorola RCE. */ +#define EM_ARM 40 /* ARM. */ +#define EM_SH 42 /* Hitachi SH. */ +#define EM_SPARCV9 43 /* SPARC v9 64-bit. */ +#define EM_TRICORE 44 /* Siemens TriCore embedded processor. */ +#define EM_ARC 45 /* Argonaut RISC Core. */ +#define EM_H8_300 46 /* Hitachi H8/300. */ +#define EM_H8_300H 47 /* Hitachi H8/300H. */ +#define EM_H8S 48 /* Hitachi H8S. */ +#define EM_H8_500 49 /* Hitachi H8/500. */ +#define EM_IA_64 50 /* Intel IA-64 Processor. */ +#define EM_MIPS_X 51 /* Stanford MIPS-X. */ +#define EM_COLDFIRE 52 /* Motorola ColdFire. */ +#define EM_68HC12 53 /* Motorola M68HC12. */ +#define EM_MMA 54 /* Fujitsu MMA. */ +#define EM_PCP 55 /* Siemens PCP. */ +#define EM_NCPU 56 /* Sony nCPU. */ +#define EM_NDR1 57 /* Denso NDR1 microprocessor. */ +#define EM_STARCORE 58 /* Motorola Star*Core processor. */ +#define EM_ME16 59 /* Toyota ME16 processor. */ +#define EM_ST100 60 /* STMicroelectronics ST100 processor. */ +#define EM_TINYJ 61 /* Advanced Logic Corp. TinyJ processor. */ +#define EM_X86_64 62 /* Advanced Micro Devices x86-64 */ +#define EM_AMD64 EM_X86_64 /* Advanced Micro Devices x86-64 (compat) */ +#define EM_PDSP 63 /* Sony DSP Processor. */ +#define EM_FX66 66 /* Siemens FX66 microcontroller. */ +#define EM_ST9PLUS 67 /* STMicroelectronics ST9+ 8/16 + microcontroller. */ +#define EM_ST7 68 /* STmicroelectronics ST7 8-bit + microcontroller. */ +#define EM_68HC16 69 /* Motorola MC68HC16 microcontroller. */ +#define EM_68HC11 70 /* Motorola MC68HC11 microcontroller. */ +#define EM_68HC08 71 /* Motorola MC68HC08 microcontroller. */ +#define EM_68HC05 72 /* Motorola MC68HC05 microcontroller. */ +#define EM_SVX 73 /* Silicon Graphics SVx. */ +#define EM_ST19 74 /* STMicroelectronics ST19 8-bit mc. */ +#define EM_VAX 75 /* Digital VAX. */ +#define EM_CRIS 76 /* Axis Communications 32-bit embedded + processor. */ +#define EM_JAVELIN 77 /* Infineon Technologies 32-bit embedded + processor. */ +#define EM_FIREPATH 78 /* Element 14 64-bit DSP Processor. */ +#define EM_ZSP 79 /* LSI Logic 16-bit DSP Processor. */ +#define EM_MMIX 80 /* Donald Knuth's educational 64-bit proc. */ +#define EM_HUANY 81 /* Harvard University machine-independent + object files. */ +#define EM_PRISM 82 /* SiTera Prism. */ +#define EM_AVR 83 /* Atmel AVR 8-bit microcontroller. */ +#define EM_FR30 84 /* Fujitsu FR30. */ +#define EM_D10V 85 /* Mitsubishi D10V. */ +#define EM_D30V 86 /* Mitsubishi D30V. */ +#define EM_V850 87 /* NEC v850. */ +#define EM_M32R 88 /* Mitsubishi M32R. */ +#define EM_MN10300 89 /* Matsushita MN10300. */ +#define EM_MN10200 90 /* Matsushita MN10200. */ +#define EM_PJ 91 /* picoJava. */ +#define EM_OPENRISC 92 /* OpenRISC 32-bit embedded processor. */ +#define EM_ARC_A5 93 /* ARC Cores Tangent-A5. */ +#define EM_XTENSA 94 /* Tensilica Xtensa Architecture. */ +#define EM_VIDEOCORE 95 /* Alphamosaic VideoCore processor. */ +#define EM_TMM_GPP 96 /* Thompson Multimedia General Purpose + Processor. */ +#define EM_NS32K 97 /* National Semiconductor 32000 series. */ +#define EM_TPC 98 /* Tenor Network TPC processor. */ +#define EM_SNP1K 99 /* Trebia SNP 1000 processor. */ +#define EM_ST200 100 /* STMicroelectronics ST200 microcontroller. */ +#define EM_IP2K 101 /* Ubicom IP2xxx microcontroller family. */ +#define EM_MAX 102 /* MAX Processor. */ +#define EM_CR 103 /* National Semiconductor CompactRISC + microprocessor. */ +#define EM_F2MC16 104 /* Fujitsu F2MC16. */ +#define EM_MSP430 105 /* Texas Instruments embedded microcontroller + msp430. */ +#define EM_BLACKFIN 106 /* Analog Devices Blackfin (DSP) processor. */ +#define EM_SE_C33 107 /* S1C33 Family of Seiko Epson processors. */ +#define EM_SEP 108 /* Sharp embedded microprocessor. */ +#define EM_ARCA 109 /* Arca RISC Microprocessor. */ +#define EM_UNICORE 110 /* Microprocessor series from PKU-Unity Ltd. + and MPRC of Peking University */ +#define EM_AARCH64 183 /* AArch64 (64-bit ARM) */ +#define EM_RISCV 243 /* RISC-V */ + +/* Non-standard or deprecated. */ +#define EM_486 6 /* Intel i486. */ +#define EM_MIPS_RS4_BE 10 /* MIPS R4000 Big-Endian */ +#define EM_ALPHA_STD 41 /* Digital Alpha (standard value). */ +#define EM_ALPHA 0x9026 /* Alpha (written in the absence of an ABI) */ + +/** + * e_flags + */ +#define EF_ARM_RELEXEC 0x1 +#define EF_ARM_HASENTRY 0x2 +#define EF_ARM_SYMSARESORTED 0x4 +#define EF_ARM_DYNSYMSUSESEGIDX 0x8 +#define EF_ARM_MAPSYMSFIRST 0x10 +#define EF_ARM_LE8 0x00400000 +#define EF_ARM_BE8 0x00800000 +#define EF_ARM_EABIMASK 0xFF000000 +#define EF_ARM_EABI_UNKNOWN 0x00000000 +#define EF_ARM_EABI_VER1 0x01000000 +#define EF_ARM_EABI_VER2 0x02000000 +#define EF_ARM_EABI_VER3 0x03000000 +#define EF_ARM_EABI_VER4 0x04000000 +#define EF_ARM_EABI_VER5 0x05000000 +#define EF_ARM_INTERWORK 0x00000004 +#define EF_ARM_APCS_26 0x00000008 +#define EF_ARM_APCS_FLOAT 0x00000010 +#define EF_ARM_PIC 0x00000020 +#define EF_ARM_ALIGN8 0x00000040 +#define EF_ARM_NEW_ABI 0x00000080 +#define EF_ARM_OLD_ABI 0x00000100 +#define EF_ARM_SOFT_FLOAT 0x00000200 +#define EF_ARM_VFP_FLOAT 0x00000400 +#define EF_ARM_MAVERICK_FLOAT 0x00000800 + +#define EF_MIPS_NOREORDER 0x00000001 +#define EF_MIPS_PIC 0x00000002 /* Contains PIC code */ +#define EF_MIPS_CPIC 0x00000004 /* STD PIC calling sequence */ +#define EF_MIPS_UCODE 0x00000010 +#define EF_MIPS_ABI2 0x00000020 /* N32 */ +#define EF_MIPS_OPTIONS_FIRST 0x00000080 +#define EF_MIPS_ARCH_ASE 0x0F000000 /* Architectural extensions */ +#define EF_MIPS_ARCH_ASE_MDMX 0x08000000 /* MDMX multimedia extension */ +#define EF_MIPS_ARCH_ASE_M16 0x04000000 /* MIPS-16 ISA extensions */ +#define EF_MIPS_ARCH 0xF0000000 /* Architecture field */ + +#define EF_PPC_EMB 0x80000000 +#define EF_PPC_RELOCATABLE 0x00010000 +#define EF_PPC_RELOCATABLE_LIB 0x00008000 + +#define EF_SPARC_EXT_MASK 0x00ffff00 +#define EF_SPARC_32PLUS 0x00000100 +#define EF_SPARC_SUN_US1 0x00000200 +#define EF_SPARC_HAL_R1 0x00000200 +#define EF_SPARC_SUN_US3 0x00000800 + +#define EF_SPARCV9_MM 0x00000003 +#define EF_SPARCV9_TSO 0x00000000 +#define EF_SPARCV9_PSO 0x00000001 +#define EF_SPARCV9_RMO 0x00000002 + +/* Special section indexes. */ +#define SHN_UNDEF 0 /* Undefined, missing, irrelevant. */ +#define SHN_LORESERVE 0xff00 /* First of reserved range. */ +#define SHN_LOPROC 0xff00 /* First processor-specific. */ +#define SHN_HIPROC 0xff1f /* Last processor-specific. */ +#define SHN_LOOS 0xff20 /* First operating system-specific. */ +#define SHN_FBSD_CACHED SHN_LOOS /* Transient, for sys/kern/link_elf_obj + linker only: Cached global in local + symtab. */ +#define SHN_HIOS 0xff3f /* Last operating system-specific. */ +#define SHN_ABS 0xfff1 /* Absolute values. */ +#define SHN_COMMON 0xfff2 /* Common data. */ +#define SHN_XINDEX 0xffff /* Escape -- index stored elsewhere. */ +#define SHN_HIRESERVE 0xffff /* Last of reserved range. */ + +/* sh_type */ +#define SHT_NULL 0 /* inactive */ +#define SHT_PROGBITS 1 /* program defined information */ +#define SHT_SYMTAB 2 /* symbol table section */ +#define SHT_STRTAB 3 /* string table section */ +#define SHT_RELA 4 /* relocation section with addends */ +#define SHT_HASH 5 /* symbol hash table section */ +#define SHT_DYNAMIC 6 /* dynamic section */ +#define SHT_NOTE 7 /* note section */ +#define SHT_NOBITS 8 /* no space section */ +#define SHT_REL 9 /* relocation section - no addends */ +#define SHT_SHLIB 10 /* reserved - purpose unknown */ +#define SHT_DYNSYM 11 /* dynamic symbol table section */ +#define SHT_INIT_ARRAY 14 /* Initialization function pointers. */ +#define SHT_FINI_ARRAY 15 /* Termination function pointers. */ +#define SHT_PREINIT_ARRAY 16 /* Pre-initialization function ptrs. */ +#define SHT_GROUP 17 /* Section group. */ +#define SHT_SYMTAB_SHNDX 18 /* Section indexes (see SHN_XINDEX). */ +#define SHT_LOOS 0x60000000 /* First of OS specific semantics */ +#define SHT_LOSUNW 0x6ffffff4 +#define SHT_SUNW_dof 0x6ffffff4 +#define SHT_SUNW_cap 0x6ffffff5 +#define SHT_GNU_ATTRIBUTES 0x6ffffff5 +#define SHT_SUNW_SIGNATURE 0x6ffffff6 +#define SHT_GNU_HASH 0x6ffffff6 +#define SHT_GNU_LIBLIST 0x6ffffff7 +#define SHT_SUNW_ANNOTATE 0x6ffffff7 +#define SHT_SUNW_DEBUGSTR 0x6ffffff8 +#define SHT_SUNW_DEBUG 0x6ffffff9 +#define SHT_SUNW_move 0x6ffffffa +#define SHT_SUNW_COMDAT 0x6ffffffb +#define SHT_SUNW_syminfo 0x6ffffffc +#define SHT_SUNW_verdef 0x6ffffffd +#define SHT_GNU_verdef 0x6ffffffd /* Symbol versions provided */ +#define SHT_SUNW_verneed 0x6ffffffe +#define SHT_GNU_verneed 0x6ffffffe /* Symbol versions required */ +#define SHT_SUNW_versym 0x6fffffff +#define SHT_GNU_versym 0x6fffffff /* Symbol version table */ +#define SHT_HISUNW 0x6fffffff +#define SHT_HIOS 0x6fffffff /* Last of OS specific semantics */ +#define SHT_LOPROC 0x70000000 /* reserved range for processor */ +#define SHT_X86_64_UNWIND 0x70000001 /* unwind information */ +#define SHT_AMD64_UNWIND SHT_X86_64_UNWIND + +#define SHT_ARM_EXIDX 0x70000001 /* Exception index table. */ +#define SHT_ARM_PREEMPTMAP 0x70000002 /* BPABI DLL dynamic linking + pre-emption map. */ +#define SHT_ARM_ATTRIBUTES 0x70000003 /* Object file compatibility + attributes. */ +#define SHT_ARM_DEBUGOVERLAY 0x70000004 /* See DBGOVL for details. */ +#define SHT_ARM_OVERLAYSECTION 0x70000005 /* See DBGOVL for details. */ +#define SHT_MIPS_LIBLIST 0x70000000 +#define SHT_MIPS_MSYM 0x70000001 +#define SHT_MIPS_CONFLICT 0x70000002 +#define SHT_MIPS_GPTAB 0x70000003 +#define SHT_MIPS_UCODE 0x70000004 +#define SHT_MIPS_DEBUG 0x70000005 +#define SHT_MIPS_REGINFO 0x70000006 +#define SHT_MIPS_PACKAGE 0x70000007 +#define SHT_MIPS_PACKSYM 0x70000008 +#define SHT_MIPS_RELD 0x70000009 +#define SHT_MIPS_IFACE 0x7000000b +#define SHT_MIPS_CONTENT 0x7000000c +#define SHT_MIPS_OPTIONS 0x7000000d +#define SHT_MIPS_DELTASYM 0x7000001b +#define SHT_MIPS_DELTAINST 0x7000001c +#define SHT_MIPS_DELTACLASS 0x7000001d +#define SHT_MIPS_DWARF 0x7000001e /* MIPS gcc uses MIPS_DWARF */ +#define SHT_MIPS_DELTADECL 0x7000001f +#define SHT_MIPS_SYMBOL_LIB 0x70000020 +#define SHT_MIPS_EVENTS 0x70000021 +#define SHT_MIPS_TRANSLATE 0x70000022 +#define SHT_MIPS_PIXIE 0x70000023 +#define SHT_MIPS_XLATE 0x70000024 +#define SHT_MIPS_XLATE_DEBUG 0x70000025 +#define SHT_MIPS_WHIRL 0x70000026 +#define SHT_MIPS_EH_REGION 0x70000027 +#define SHT_MIPS_XLATE_OLD 0x70000028 +#define SHT_MIPS_PDR_EXCEPTION 0x70000029 +#define SHT_MIPS_ABIFLAGS 0x7000002a + +#define SHT_SPARC_GOTDATA 0x70000000 + +#define SHTORDERED +#define SHT_HIPROC 0x7fffffff /* specific section header types */ +#define SHT_LOUSER 0x80000000 /* reserved range for application */ +#define SHT_HIUSER 0xffffffff /* specific indexes */ + +/* Flags for sh_flags. */ +#define SHF_WRITE 0x1 /* Section contains writable data. */ +#define SHF_ALLOC 0x2 /* Section occupies memory. */ +#define SHF_EXECINSTR 0x4 /* Section contains instructions. */ +#define SHF_MERGE 0x10 /* Section may be merged. */ +#define SHF_STRINGS 0x20 /* Section contains strings. */ +#define SHF_INFO_LINK 0x40 /* sh_info holds section index. */ +#define SHF_LINK_ORDER 0x80 /* Special ordering requirements. */ +#define SHF_OS_NONCONFORMING 0x100 /* OS-specific processing required. */ +#define SHF_GROUP 0x200 /* Member of section group. */ +#define SHF_TLS 0x400 /* Section contains TLS data. */ +#define SHF_COMPRESSED 0x800 /* Section contains compressed data. */ +#define SHF_MASKOS 0x0ff00000 /* OS-specific semantics. */ +#define SHF_MASKPROC 0xf0000000 /* Processor-specific semantics. */ + +/* Flags for section groups. */ +#define GRP_COMDAT 0x1 /* COMDAT semantics. */ + +/* + * Flags / mask for .gnu.versym sections. + */ +#define VERSYM_VERSION 0x7fff +#define VERSYM_HIDDEN 0x8000 + +/* Values for p_type. */ +#define PT_NULL 0 /* Unused entry. */ +#define PT_LOAD 1 /* Loadable segment. */ +#define PT_DYNAMIC 2 /* Dynamic linking information segment. */ +#define PT_INTERP 3 /* Pathname of interpreter. */ +#define PT_NOTE 4 /* Auxiliary information. */ +#define PT_SHLIB 5 /* Reserved (not used). */ +#define PT_PHDR 6 /* Location of program header itself. */ +#define PT_TLS 7 /* Thread local storage segment */ +#define PT_LOOS 0x60000000 /* First OS-specific. */ +#define PT_SUNW_UNWIND 0x6464e550 /* amd64 UNWIND program header */ +#define PT_GNU_EH_FRAME 0x6474e550 +#define PT_GNU_STACK 0x6474e551 +#define PT_GNU_RELRO 0x6474e552 +#define PT_DUMP_DELTA 0x6fb5d000 /* va->pa map for kernel dumps + (currently arm). */ +#define PT_LOSUNW 0x6ffffffa +#define PT_SUNWBSS 0x6ffffffa /* Sun Specific segment */ +#define PT_SUNWSTACK 0x6ffffffb /* describes the stack segment */ +#define PT_SUNWDTRACE 0x6ffffffc /* private */ +#define PT_SUNWCAP 0x6ffffffd /* hard/soft capabilities segment */ +#define PT_HISUNW 0x6fffffff +#define PT_HIOS 0x6fffffff /* Last OS-specific. */ +#define PT_LOPROC 0x70000000 /* First processor-specific type. */ +#define PT_ARM_ARCHEXT 0x70000000 /* ARM arch compat information. */ +#define PT_ARM_EXIDX 0x70000001 /* ARM exception unwind tables. */ +#define PT_HIPROC 0x7fffffff /* Last processor-specific type. */ + +/* Values for p_flags. */ +#define PF_X 0x1 /* Executable. */ +#define PF_W 0x2 /* Writable. */ +#define PF_R 0x4 /* Readable. */ +#define PF_MASKOS 0x0ff00000 /* Operating system-specific. */ +#define PF_MASKPROC 0xf0000000 /* Processor-specific. */ + +/* Extended program header index. */ +#define PN_XNUM 0xffff + +/* Values for d_tag. */ +#define DT_NULL 0 /* Terminating entry. */ +#define DT_NEEDED 1 /* String table offset of a needed shared + library. */ +#define DT_PLTRELSZ 2 /* Total size in bytes of PLT relocations. */ +#define DT_PLTGOT 3 /* Processor-dependent address. */ +#define DT_HASH 4 /* Address of symbol hash table. */ +#define DT_STRTAB 5 /* Address of string table. */ +#define DT_SYMTAB 6 /* Address of symbol table. */ +#define DT_RELA 7 /* Address of ElfNN_Rela relocations. */ +#define DT_RELASZ 8 /* Total size of ElfNN_Rela relocations. */ +#define DT_RELAENT 9 /* Size of each ElfNN_Rela relocation entry. */ +#define DT_STRSZ 10 /* Size of string table. */ +#define DT_SYMENT 11 /* Size of each symbol table entry. */ +#define DT_INIT 12 /* Address of initialization function. */ +#define DT_FINI 13 /* Address of finalization function. */ +#define DT_SONAME 14 /* String table offset of shared object + name. */ +#define DT_RPATH 15 /* String table offset of library path. [sup] */ +#define DT_SYMBOLIC 16 /* Indicates "symbolic" linking. [sup] */ +#define DT_REL 17 /* Address of ElfNN_Rel relocations. */ +#define DT_RELSZ 18 /* Total size of ElfNN_Rel relocations. */ +#define DT_RELENT 19 /* Size of each ElfNN_Rel relocation. */ +#define DT_PLTREL 20 /* Type of relocation used for PLT. */ +#define DT_DEBUG 21 /* Reserved (not used). */ +#define DT_TEXTREL 22 /* Indicates there may be relocations in + non-writable segments. [sup] */ +#define DT_JMPREL 23 /* Address of PLT relocations. */ +#define DT_BIND_NOW 24 /* [sup] */ +#define DT_INIT_ARRAY 25 /* Address of the array of pointers to + initialization functions */ +#define DT_FINI_ARRAY 26 /* Address of the array of pointers to + termination functions */ +#define DT_INIT_ARRAYSZ 27 /* Size in bytes of the array of + initialization functions. */ +#define DT_FINI_ARRAYSZ 28 /* Size in bytes of the array of + termination functions. */ +#define DT_RUNPATH 29 /* String table offset of a null-terminated + library search path string. */ +#define DT_FLAGS 30 /* Object specific flag values. */ +#define DT_ENCODING 32 /* Values greater than or equal to DT_ENCODING + and less than DT_LOOS follow the rules for + the interpretation of the d_un union + as follows: even == 'd_ptr', odd == 'd_val' + or none */ +#define DT_PREINIT_ARRAY 32 /* Address of the array of pointers to + pre-initialization functions. */ +#define DT_PREINIT_ARRAYSZ 33 /* Size in bytes of the array of + pre-initialization functions. */ +#define DT_MAXPOSTAGS 34 /* number of positive tags */ +#define DT_LOOS 0x6000000d /* First OS-specific */ +#define DT_SUNW_AUXILIARY 0x6000000d /* symbol auxiliary name */ +#define DT_SUNW_RTLDINF 0x6000000e /* ld.so.1 info (private) */ +#define DT_SUNW_FILTER 0x6000000f /* symbol filter name */ +#define DT_SUNW_CAP 0x60000010 /* hardware/software */ +#define DT_HIOS 0x6ffff000 /* Last OS-specific */ + +/* + * DT_* entries which fall between DT_VALRNGHI & DT_VALRNGLO use the + * Dyn.d_un.d_val field of the Elf*_Dyn structure. + */ +#define DT_VALRNGLO 0x6ffffd00 +#define DT_GNU_PRELINKED 0x6ffffdf5 /* prelinking timestamp */ +#define DT_GNU_CONFLICTSZ 0x6ffffdf6 /* size of conflict section */ +#define DT_GNU_LIBLISTSZ 0x6ffffdf7 /* size of library list */ +#define DT_CHECKSUM 0x6ffffdf8 /* elf checksum */ +#define DT_PLTPADSZ 0x6ffffdf9 /* pltpadding size */ +#define DT_MOVEENT 0x6ffffdfa /* move table entry size */ +#define DT_MOVESZ 0x6ffffdfb /* move table size */ +#define DT_FEATURE 0x6ffffdfc /* feature holder */ +#define DT_FEATURE_1 DT_FEATURE +#define DT_POSFLAG_1 0x6ffffdfd /* flags for DT_* entries, effecting */ + /* the following DT_* entry. */ + /* See DF_P1_* definitions */ +#define DT_SYMINSZ 0x6ffffdfe /* syminfo table size (in bytes) */ +#define DT_SYMINENT 0x6ffffdff /* syminfo entry size (in bytes) */ +#define DT_VALRNGHI 0x6ffffdff + +/* + * DT_* entries which fall between DT_ADDRRNGHI & DT_ADDRRNGLO use the + * Dyn.d_un.d_ptr field of the Elf*_Dyn structure. + * + * If any adjustment is made to the ELF object after it has been + * built, these entries will need to be adjusted. + */ +#define DT_ADDRRNGLO 0x6ffffe00 +#define DT_GNU_HASH 0x6ffffef5 /* GNU-style hash table */ +#define DT_TLSDESC_PLT 0x6ffffef6 /* loc. of PLT for tlsdesc resolver */ +#define DT_TLSDESC_GOT 0x6ffffef7 /* loc. of GOT for tlsdesc resolver */ +#define DT_GNU_CONFLICT 0x6ffffef8 /* address of conflict section */ +#define DT_GNU_LIBLIST 0x6ffffef9 /* address of library list */ +#define DT_CONFIG 0x6ffffefa /* configuration information */ +#define DT_DEPAUDIT 0x6ffffefb /* dependency auditing */ +#define DT_AUDIT 0x6ffffefc /* object auditing */ +#define DT_PLTPAD 0x6ffffefd /* pltpadding (sparcv9) */ +#define DT_MOVETAB 0x6ffffefe /* move table */ +#define DT_SYMINFO 0x6ffffeff /* syminfo table */ +#define DT_ADDRRNGHI 0x6ffffeff + +#define DT_VERSYM 0x6ffffff0 /* Address of versym section. */ +#define DT_RELACOUNT 0x6ffffff9 /* number of RELATIVE relocations */ +#define DT_RELCOUNT 0x6ffffffa /* number of RELATIVE relocations */ +#define DT_FLAGS_1 0x6ffffffb /* state flags - see DF_1_* defs */ +#define DT_VERDEF 0x6ffffffc /* Address of verdef section. */ +#define DT_VERDEFNUM 0x6ffffffd /* Number of elems in verdef section */ +#define DT_VERNEED 0x6ffffffe /* Address of verneed section. */ +#define DT_VERNEEDNUM 0x6fffffff /* Number of elems in verneed section */ + +#define DT_LOPROC 0x70000000 /* First processor-specific type. */ + +#define DT_ARM_SYMTABSZ 0x70000001 +#define DT_ARM_PREEMPTMAP 0x70000002 + +#define DT_SPARC_REGISTER 0x70000001 +#define DT_DEPRECATED_SPARC_REGISTER 0x7000001 + +#define DT_MIPS_RLD_VERSION 0x70000001 +#define DT_MIPS_TIME_STAMP 0x70000002 +#define DT_MIPS_ICHECKSUM 0x70000003 +#define DT_MIPS_IVERSION 0x70000004 +#define DT_MIPS_FLAGS 0x70000005 +#define DT_MIPS_BASE_ADDRESS 0x70000006 +#define DT_MIPS_CONFLICT 0x70000008 +#define DT_MIPS_LIBLIST 0x70000009 +#define DT_MIPS_LOCAL_GOTNO 0x7000000a +#define DT_MIPS_CONFLICTNO 0x7000000b +#define DT_MIPS_LIBLISTNO 0x70000010 +#define DT_MIPS_SYMTABNO 0x70000011 +#define DT_MIPS_UNREFEXTNO 0x70000012 +#define DT_MIPS_GOTSYM 0x70000013 +#define DT_MIPS_HIPAGENO 0x70000014 +#define DT_MIPS_RLD_MAP 0x70000016 +#define DT_MIPS_DELTA_CLASS 0x70000017 +#define DT_MIPS_DELTA_CLASS_NO 0x70000018 +#define DT_MIPS_DELTA_INSTANCE 0x70000019 +#define DT_MIPS_DELTA_INSTANCE_NO 0x7000001A +#define DT_MIPS_DELTA_RELOC 0x7000001B +#define DT_MIPS_DELTA_RELOC_NO 0x7000001C +#define DT_MIPS_DELTA_SYM 0x7000001D +#define DT_MIPS_DELTA_SYM_NO 0x7000001E +#define DT_MIPS_DELTA_CLASSSYM 0x70000020 +#define DT_MIPS_DELTA_CLASSSYM_NO 0x70000021 +#define DT_MIPS_CXX_FLAGS 0x70000022 +#define DT_MIPS_PIXIE_INIT 0x70000023 +#define DT_MIPS_SYMBOL_LIB 0x70000024 +#define DT_MIPS_LOCALPAGE_GOTIDX 0x70000025 +#define DT_MIPS_LOCAL_GOTIDX 0x70000026 +#define DT_MIPS_HIDDEN_GOTIDX 0x70000027 +#define DT_MIPS_PROTECTED_GOTIDX 0x70000028 +#define DT_MIPS_OPTIONS 0x70000029 +#define DT_MIPS_INTERFACE 0x7000002A +#define DT_MIPS_DYNSTR_ALIGN 0x7000002B +#define DT_MIPS_INTERFACE_SIZE 0x7000002C +#define DT_MIPS_RLD_TEXT_RESOLVE_ADDR 0x7000002D +#define DT_MIPS_PERF_SUFFIX 0x7000002E +#define DT_MIPS_COMPACT_SIZE 0x7000002F +#define DT_MIPS_GP_VALUE 0x70000030 +#define DT_MIPS_AUX_DYNAMIC 0x70000031 +#define DT_MIPS_PLTGOT 0x70000032 +#define DT_MIPS_RLD_OBJ_UPDATE 0x70000033 +#define DT_MIPS_RWPLT 0x70000034 + +#define DT_PPC_GOT 0x70000000 +#define DT_PPC_TLSOPT 0x70000001 + +#define DT_PPC64_GLINK 0x70000000 +#define DT_PPC64_OPD 0x70000001 +#define DT_PPC64_OPDSZ 0x70000002 +#define DT_PPC64_TLSOPT 0x70000003 + +#define DT_AUXILIARY 0x7ffffffd /* shared library auxiliary name */ +#define DT_USED 0x7ffffffe /* ignored - same as needed */ +#define DT_FILTER 0x7fffffff /* shared library filter name */ +#define DT_HIPROC 0x7fffffff /* Last processor-specific type. */ + +/* Values for DT_FLAGS */ +#define DF_ORIGIN 0x0001 /* Indicates that the object being loaded may + make reference to the $ORIGIN substitution + string */ +#define DF_SYMBOLIC 0x0002 /* Indicates "symbolic" linking. */ +#define DF_TEXTREL 0x0004 /* Indicates there may be relocations in + non-writable segments. */ +#define DF_BIND_NOW 0x0008 /* Indicates that the dynamic linker should + process all relocations for the object + containing this entry before transferring + control to the program. */ +#define DF_STATIC_TLS 0x0010 /* Indicates that the shared object or + executable contains code using a static + thread-local storage scheme. */ + +/* Values for DT_FLAGS_1 */ +#define DF_1_BIND_NOW 0x00000001 /* Same as DF_BIND_NOW */ +#define DF_1_GLOBAL 0x00000002 /* Set the RTLD_GLOBAL for object */ +#define DF_1_NODELETE 0x00000008 /* Set the RTLD_NODELETE for object */ +#define DF_1_LOADFLTR 0x00000010 /* Immediate loading of filtees */ +#define DF_1_NOOPEN 0x00000040 /* Do not allow loading on dlopen() */ +#define DF_1_ORIGIN 0x00000080 /* Process $ORIGIN */ +#define DF_1_INTERPOSE 0x00000400 /* Interpose all objects but main */ +#define DF_1_NODEFLIB 0x00000800 /* Do not search default paths */ + +/* Values for l_flags. */ +#define LL_NONE 0x0 /* no flags */ +#define LL_EXACT_MATCH 0x1 /* require an exact match */ +#define LL_IGNORE_INT_VER 0x2 /* ignore version incompatibilities */ +#define LL_REQUIRE_MINOR 0x4 +#define LL_EXPORTS 0x8 +#define LL_DELAY_LOAD 0x10 +#define LL_DELTA 0x20 + +/* Values for n_type used in executables. */ +#define NT_FREEBSD_ABI_TAG 1 +#define NT_FREEBSD_NOINIT_TAG 2 +#define NT_FREEBSD_ARCH_TAG 3 + +/* Values for n_type. Used in core files. */ +#define NT_PRSTATUS 1 /* Process status. */ +#define NT_FPREGSET 2 /* Floating point registers. */ +#define NT_PRPSINFO 3 /* Process state info. */ +#define NT_THRMISC 7 /* Thread miscellaneous info. */ +#define NT_PROCSTAT_PROC 8 /* Procstat proc data. */ +#define NT_PROCSTAT_FILES 9 /* Procstat files data. */ +#define NT_PROCSTAT_VMMAP 10 /* Procstat vmmap data. */ +#define NT_PROCSTAT_GROUPS 11 /* Procstat groups data. */ +#define NT_PROCSTAT_UMASK 12 /* Procstat umask data. */ +#define NT_PROCSTAT_RLIMIT 13 /* Procstat rlimit data. */ +#define NT_PROCSTAT_OSREL 14 /* Procstat osreldate data. */ +#define NT_PROCSTAT_PSSTRINGS 15 /* Procstat ps_strings data. */ +#define NT_PROCSTAT_AUXV 16 /* Procstat auxv data. */ +#define NT_PTLWPINFO 17 /* Thread ptrace miscellaneous info. */ +#define NT_PPC_VMX 0x100 /* PowerPC Altivec/VMX registers */ +#define NT_X86_XSTATE 0x202 /* x86 XSAVE extended state. */ +#define NT_ARM_VFP 0x400 /* ARM VFP registers */ + +/* Symbol Binding - ELFNN_ST_BIND - st_info */ +#define STB_LOCAL 0 /* Local symbol */ +#define STB_GLOBAL 1 /* Global symbol */ +#define STB_WEAK 2 /* like global - lower precedence */ +#define STB_LOOS 10 /* Start of operating system reserved range. */ +#define STB_GNU_UNIQUE 10 /* Unique symbol (GNU) */ +#define STB_HIOS 12 /* End of operating system reserved range. */ +#define STB_LOPROC 13 /* reserved range for processor */ +#define STB_HIPROC 15 /* specific semantics. */ + +/* Symbol type - ELFNN_ST_TYPE - st_info */ +#define STT_NOTYPE 0 /* Unspecified type. */ +#define STT_OBJECT 1 /* Data object. */ +#define STT_FUNC 2 /* Function. */ +#define STT_SECTION 3 /* Section. */ +#define STT_FILE 4 /* Source file. */ +#define STT_COMMON 5 /* Uninitialized common block. */ +#define STT_TLS 6 /* TLS object. */ +#define STT_NUM 7 +#define STT_LOOS 10 /* Reserved range for operating system */ +#define STT_GNU_IFUNC 10 +#define STT_HIOS 12 /* specific semantics. */ +#define STT_LOPROC 13 /* Start of processor reserved range. */ +#define STT_SPARC_REGISTER 13 /* SPARC register information. */ +#define STT_HIPROC 15 /* End of processor reserved range. */ + +/* Symbol visibility - ELFNN_ST_VISIBILITY - st_other */ +#define STV_DEFAULT 0x0 /* Default visibility (see binding). */ +#define STV_INTERNAL 0x1 /* Special meaning in relocatable objects. */ +#define STV_HIDDEN 0x2 /* Not visible. */ +#define STV_PROTECTED 0x3 /* Visible but not preemptible. */ +#define STV_EXPORTED 0x4 +#define STV_SINGLETON 0x5 +#define STV_ELIMINATE 0x6 + +/* Special symbol table indexes. */ +#define STN_UNDEF 0 /* Undefined symbol index. */ + +/* Symbol versioning flags. */ +#define VER_DEF_CURRENT 1 +#define VER_DEF_IDX(x) VER_NDX(x) + +#define VER_FLG_BASE 0x01 +#define VER_FLG_WEAK 0x02 + +#define VER_NEED_CURRENT 1 +#define VER_NEED_WEAK (1u << 15) +#define VER_NEED_HIDDEN VER_NDX_HIDDEN +#define VER_NEED_IDX(x) VER_NDX(x) + +#define VER_NDX_LOCAL 0 +#define VER_NDX_GLOBAL 1 +#define VER_NDX_GIVEN 2 + +#define VER_NDX_HIDDEN (1u << 15) +#define VER_NDX(x) ((x) & ~(1u << 15)) + +#define CA_SUNW_NULL 0 +#define CA_SUNW_HW_1 1 /* first hardware capabilities entry */ +#define CA_SUNW_SF_1 2 /* first software capabilities entry */ + +/* + * Syminfo flag values + */ +#define SYMINFO_FLG_DIRECT 0x0001 /* symbol ref has direct association */ + /* to object containing defn. */ +#define SYMINFO_FLG_PASSTHRU 0x0002 /* ignored - see SYMINFO_FLG_FILTER */ +#define SYMINFO_FLG_COPY 0x0004 /* symbol is a copy-reloc */ +#define SYMINFO_FLG_LAZYLOAD 0x0008 /* object containing defn should be */ + /* lazily-loaded */ +#define SYMINFO_FLG_DIRECTBIND 0x0010 /* ref should be bound directly to */ + /* object containing defn. */ +#define SYMINFO_FLG_NOEXTDIRECT 0x0020 /* don't let an external reference */ + /* directly bind to this symbol */ +#define SYMINFO_FLG_FILTER 0x0002 /* symbol ref is associated to a */ +#define SYMINFO_FLG_AUXILIARY 0x0040 /* standard or auxiliary filter */ + +/* + * Syminfo.si_boundto values. + */ +#define SYMINFO_BT_SELF 0xffff /* symbol bound to self */ +#define SYMINFO_BT_PARENT 0xfffe /* symbol bound to parent */ +#define SYMINFO_BT_NONE 0xfffd /* no special symbol binding */ +#define SYMINFO_BT_EXTERN 0xfffc /* symbol defined as external */ +#define SYMINFO_BT_LOWRESERVE 0xff00 /* beginning of reserved entries */ + +/* + * Syminfo version values. + */ +#define SYMINFO_NONE 0 /* Syminfo version */ +#define SYMINFO_CURRENT 1 +#define SYMINFO_NUM 2 + +/* Values for ch_type (compressed section headers). */ +#define ELFCOMPRESS_ZLIB 1 /* ZLIB/DEFLATE */ +#define ELFCOMPRESS_LOOS 0x60000000 /* OS-specific */ +#define ELFCOMPRESS_HIOS 0x6fffffff +#define ELFCOMPRESS_LOPROC 0x70000000 /* Processor-specific */ +#define ELFCOMPRESS_HIPROC 0x7fffffff + +/* + * Relocation types. + * + * All machine architectures are defined here to allow tools on one to + * handle others. + */ + +#define R_386_NONE 0 /* No relocation. */ +#define R_386_32 1 /* Add symbol value. */ +#define R_386_PC32 2 /* Add PC-relative symbol value. */ +#define R_386_GOT32 3 /* Add PC-relative GOT offset. */ +#define R_386_PLT32 4 /* Add PC-relative PLT offset. */ +#define R_386_COPY 5 /* Copy data from shared object. */ +#define R_386_GLOB_DAT 6 /* Set GOT entry to data address. */ +#define R_386_JMP_SLOT 7 /* Set GOT entry to code address. */ +#define R_386_RELATIVE 8 /* Add load address of shared object. */ +#define R_386_GOTOFF 9 /* Add GOT-relative symbol address. */ +#define R_386_GOTPC 10 /* Add PC-relative GOT table address. */ +#define R_386_TLS_TPOFF 14 /* Negative offset in static TLS block */ +#define R_386_TLS_IE 15 /* Absolute address of GOT for -ve static TLS */ +#define R_386_TLS_GOTIE 16 /* GOT entry for negative static TLS block */ +#define R_386_TLS_LE 17 /* Negative offset relative to static TLS */ +#define R_386_TLS_GD 18 /* 32 bit offset to GOT (index,off) pair */ +#define R_386_TLS_LDM 19 /* 32 bit offset to GOT (index,zero) pair */ +#define R_386_TLS_GD_32 24 /* 32 bit offset to GOT (index,off) pair */ +#define R_386_TLS_GD_PUSH 25 /* pushl instruction for Sun ABI GD sequence */ +#define R_386_TLS_GD_CALL 26 /* call instruction for Sun ABI GD sequence */ +#define R_386_TLS_GD_POP 27 /* popl instruction for Sun ABI GD sequence */ +#define R_386_TLS_LDM_32 28 /* 32 bit offset to GOT (index,zero) pair */ +#define R_386_TLS_LDM_PUSH 29 /* pushl instruction for Sun ABI LD sequence */ +#define R_386_TLS_LDM_CALL 30 /* call instruction for Sun ABI LD sequence */ +#define R_386_TLS_LDM_POP 31 /* popl instruction for Sun ABI LD sequence */ +#define R_386_TLS_LDO_32 32 /* 32 bit offset from start of TLS block */ +#define R_386_TLS_IE_32 33 /* 32 bit offset to GOT static TLS offset entry */ +#define R_386_TLS_LE_32 34 /* 32 bit offset within static TLS block */ +#define R_386_TLS_DTPMOD32 35 /* GOT entry containing TLS index */ +#define R_386_TLS_DTPOFF32 36 /* GOT entry containing TLS offset */ +#define R_386_TLS_TPOFF32 37 /* GOT entry of -ve static TLS offset */ +#define R_386_IRELATIVE 42 /* PLT entry resolved indirectly at runtime */ + +#define R_AARCH64_NONE 0 /* No relocation */ +#define R_AARCH64_ABS64 257 /* Absolute offset */ +#define R_AARCH64_ABS32 258 /* Absolute, 32-bit overflow check */ +#define R_AARCH64_ABS16 259 /* Absolute, 16-bit overflow check */ +#define R_AARCH64_PREL64 260 /* PC relative */ +#define R_AARCH64_PREL32 261 /* PC relative, 32-bit overflow check */ +#define R_AARCH64_PREL16 262 /* PC relative, 16-bit overflow check */ +#define R_AARCH64_COPY 1024 /* Copy data from shared object */ +#define R_AARCH64_GLOB_DAT 1025 /* Set GOT entry to data address */ +#define R_AARCH64_JUMP_SLOT 1026 /* Set GOT entry to code address */ +#define R_AARCH64_RELATIVE 1027 /* Add load address of shared object */ +#define R_AARCH64_TLS_DTPREL64 1028 +#define R_AARCH64_TLS_DTPMOD64 1029 +#define R_AARCH64_TLS_TPREL64 1030 +#define R_AARCH64_TLSDESC 1031 /* Identify the TLS descriptor */ +#define R_AARCH64_IRELATIVE 1032 + +#define R_ARM_NONE 0 /* No relocation. */ +#define R_ARM_PC24 1 +#define R_ARM_ABS32 2 +#define R_ARM_REL32 3 +#define R_ARM_PC13 4 +#define R_ARM_ABS16 5 +#define R_ARM_ABS12 6 +#define R_ARM_THM_ABS5 7 +#define R_ARM_ABS8 8 +#define R_ARM_SBREL32 9 +#define R_ARM_THM_PC22 10 +#define R_ARM_THM_PC8 11 +#define R_ARM_AMP_VCALL9 12 +#define R_ARM_SWI24 13 +#define R_ARM_THM_SWI8 14 +#define R_ARM_XPC25 15 +#define R_ARM_THM_XPC22 16 +/* TLS relocations */ +#define R_ARM_TLS_DTPMOD32 17 /* ID of module containing symbol */ +#define R_ARM_TLS_DTPOFF32 18 /* Offset in TLS block */ +#define R_ARM_TLS_TPOFF32 19 /* Offset in static TLS block */ +#define R_ARM_COPY 20 /* Copy data from shared object. */ +#define R_ARM_GLOB_DAT 21 /* Set GOT entry to data address. */ +#define R_ARM_JUMP_SLOT 22 /* Set GOT entry to code address. */ +#define R_ARM_RELATIVE 23 /* Add load address of shared object. */ +#define R_ARM_GOTOFF 24 /* Add GOT-relative symbol address. */ +#define R_ARM_GOTPC 25 /* Add PC-relative GOT table address. */ +#define R_ARM_GOT32 26 /* Add PC-relative GOT offset. */ +#define R_ARM_PLT32 27 /* Add PC-relative PLT offset. */ +#define R_ARM_GNU_VTENTRY 100 +#define R_ARM_GNU_VTINHERIT 101 +#define R_ARM_RSBREL32 250 +#define R_ARM_THM_RPC22 251 +#define R_ARM_RREL32 252 +#define R_ARM_RABS32 253 +#define R_ARM_RPC24 254 +#define R_ARM_RBASE 255 + +/* Name Value Field Calculation */ +#define R_IA_64_NONE 0 /* None */ +#define R_IA_64_IMM14 0x21 /* immediate14 S + A */ +#define R_IA_64_IMM22 0x22 /* immediate22 S + A */ +#define R_IA_64_IMM64 0x23 /* immediate64 S + A */ +#define R_IA_64_DIR32MSB 0x24 /* word32 MSB S + A */ +#define R_IA_64_DIR32LSB 0x25 /* word32 LSB S + A */ +#define R_IA_64_DIR64MSB 0x26 /* word64 MSB S + A */ +#define R_IA_64_DIR64LSB 0x27 /* word64 LSB S + A */ +#define R_IA_64_GPREL22 0x2a /* immediate22 @gprel(S + A) */ +#define R_IA_64_GPREL64I 0x2b /* immediate64 @gprel(S + A) */ +#define R_IA_64_GPREL32MSB 0x2c /* word32 MSB @gprel(S + A) */ +#define R_IA_64_GPREL32LSB 0x2d /* word32 LSB @gprel(S + A) */ +#define R_IA_64_GPREL64MSB 0x2e /* word64 MSB @gprel(S + A) */ +#define R_IA_64_GPREL64LSB 0x2f /* word64 LSB @gprel(S + A) */ +#define R_IA_64_LTOFF22 0x32 /* immediate22 @ltoff(S + A) */ +#define R_IA_64_LTOFF64I 0x33 /* immediate64 @ltoff(S + A) */ +#define R_IA_64_PLTOFF22 0x3a /* immediate22 @pltoff(S + A) */ +#define R_IA_64_PLTOFF64I 0x3b /* immediate64 @pltoff(S + A) */ +#define R_IA_64_PLTOFF64MSB 0x3e /* word64 MSB @pltoff(S + A) */ +#define R_IA_64_PLTOFF64LSB 0x3f /* word64 LSB @pltoff(S + A) */ +#define R_IA_64_FPTR64I 0x43 /* immediate64 @fptr(S + A) */ +#define R_IA_64_FPTR32MSB 0x44 /* word32 MSB @fptr(S + A) */ +#define R_IA_64_FPTR32LSB 0x45 /* word32 LSB @fptr(S + A) */ +#define R_IA_64_FPTR64MSB 0x46 /* word64 MSB @fptr(S + A) */ +#define R_IA_64_FPTR64LSB 0x47 /* word64 LSB @fptr(S + A) */ +#define R_IA_64_PCREL60B 0x48 /* immediate60 form1 S + A - P */ +#define R_IA_64_PCREL21B 0x49 /* immediate21 form1 S + A - P */ +#define R_IA_64_PCREL21M 0x4a /* immediate21 form2 S + A - P */ +#define R_IA_64_PCREL21F 0x4b /* immediate21 form3 S + A - P */ +#define R_IA_64_PCREL32MSB 0x4c /* word32 MSB S + A - P */ +#define R_IA_64_PCREL32LSB 0x4d /* word32 LSB S + A - P */ +#define R_IA_64_PCREL64MSB 0x4e /* word64 MSB S + A - P */ +#define R_IA_64_PCREL64LSB 0x4f /* word64 LSB S + A - P */ +#define R_IA_64_LTOFF_FPTR22 0x52 /* immediate22 @ltoff(@fptr(S + A)) */ +#define R_IA_64_LTOFF_FPTR64I 0x53 /* immediate64 @ltoff(@fptr(S + A)) */ +#define R_IA_64_LTOFF_FPTR32MSB 0x54 /* word32 MSB @ltoff(@fptr(S + A)) */ +#define R_IA_64_LTOFF_FPTR32LSB 0x55 /* word32 LSB @ltoff(@fptr(S + A)) */ +#define R_IA_64_LTOFF_FPTR64MSB 0x56 /* word64 MSB @ltoff(@fptr(S + A)) */ +#define R_IA_64_LTOFF_FPTR64LSB 0x57 /* word64 LSB @ltoff(@fptr(S + A)) */ +#define R_IA_64_SEGREL32MSB 0x5c /* word32 MSB @segrel(S + A) */ +#define R_IA_64_SEGREL32LSB 0x5d /* word32 LSB @segrel(S + A) */ +#define R_IA_64_SEGREL64MSB 0x5e /* word64 MSB @segrel(S + A) */ +#define R_IA_64_SEGREL64LSB 0x5f /* word64 LSB @segrel(S + A) */ +#define R_IA_64_SECREL32MSB 0x64 /* word32 MSB @secrel(S + A) */ +#define R_IA_64_SECREL32LSB 0x65 /* word32 LSB @secrel(S + A) */ +#define R_IA_64_SECREL64MSB 0x66 /* word64 MSB @secrel(S + A) */ +#define R_IA_64_SECREL64LSB 0x67 /* word64 LSB @secrel(S + A) */ +#define R_IA_64_REL32MSB 0x6c /* word32 MSB BD + A */ +#define R_IA_64_REL32LSB 0x6d /* word32 LSB BD + A */ +#define R_IA_64_REL64MSB 0x6e /* word64 MSB BD + A */ +#define R_IA_64_REL64LSB 0x6f /* word64 LSB BD + A */ +#define R_IA_64_LTV32MSB 0x74 /* word32 MSB S + A */ +#define R_IA_64_LTV32LSB 0x75 /* word32 LSB S + A */ +#define R_IA_64_LTV64MSB 0x76 /* word64 MSB S + A */ +#define R_IA_64_LTV64LSB 0x77 /* word64 LSB S + A */ +#define R_IA_64_PCREL21BI 0x79 /* immediate21 form1 S + A - P */ +#define R_IA_64_PCREL22 0x7a /* immediate22 S + A - P */ +#define R_IA_64_PCREL64I 0x7b /* immediate64 S + A - P */ +#define R_IA_64_IPLTMSB 0x80 /* function descriptor MSB special */ +#define R_IA_64_IPLTLSB 0x81 /* function descriptor LSB speciaal */ +#define R_IA_64_SUB 0x85 /* immediate64 A - S */ +#define R_IA_64_LTOFF22X 0x86 /* immediate22 special */ +#define R_IA_64_LDXMOV 0x87 /* immediate22 special */ +#define R_IA_64_TPREL14 0x91 /* imm14 @tprel(S + A) */ +#define R_IA_64_TPREL22 0x92 /* imm22 @tprel(S + A) */ +#define R_IA_64_TPREL64I 0x93 /* imm64 @tprel(S + A) */ +#define R_IA_64_TPREL64MSB 0x96 /* word64 MSB @tprel(S + A) */ +#define R_IA_64_TPREL64LSB 0x97 /* word64 LSB @tprel(S + A) */ +#define R_IA_64_LTOFF_TPREL22 0x9a /* imm22 @ltoff(@tprel(S+A)) */ +#define R_IA_64_DTPMOD64MSB 0xa6 /* word64 MSB @dtpmod(S + A) */ +#define R_IA_64_DTPMOD64LSB 0xa7 /* word64 LSB @dtpmod(S + A) */ +#define R_IA_64_LTOFF_DTPMOD22 0xaa /* imm22 @ltoff(@dtpmod(S+A)) */ +#define R_IA_64_DTPREL14 0xb1 /* imm14 @dtprel(S + A) */ +#define R_IA_64_DTPREL22 0xb2 /* imm22 @dtprel(S + A) */ +#define R_IA_64_DTPREL64I 0xb3 /* imm64 @dtprel(S + A) */ +#define R_IA_64_DTPREL32MSB 0xb4 /* word32 MSB @dtprel(S + A) */ +#define R_IA_64_DTPREL32LSB 0xb5 /* word32 LSB @dtprel(S + A) */ +#define R_IA_64_DTPREL64MSB 0xb6 /* word64 MSB @dtprel(S + A) */ +#define R_IA_64_DTPREL64LSB 0xb7 /* word64 LSB @dtprel(S + A) */ +#define R_IA_64_LTOFF_DTPREL22 0xba /* imm22 @ltoff(@dtprel(S+A)) */ + +#define R_MIPS_NONE 0 /* No reloc */ +#define R_MIPS_16 1 /* Direct 16 bit */ +#define R_MIPS_32 2 /* Direct 32 bit */ +#define R_MIPS_REL32 3 /* PC relative 32 bit */ +#define R_MIPS_26 4 /* Direct 26 bit shifted */ +#define R_MIPS_HI16 5 /* High 16 bit */ +#define R_MIPS_LO16 6 /* Low 16 bit */ +#define R_MIPS_GPREL16 7 /* GP relative 16 bit */ +#define R_MIPS_LITERAL 8 /* 16 bit literal entry */ +#define R_MIPS_GOT16 9 /* 16 bit GOT entry */ +#define R_MIPS_PC16 10 /* PC relative 16 bit */ +#define R_MIPS_CALL16 11 /* 16 bit GOT entry for function */ +#define R_MIPS_GPREL32 12 /* GP relative 32 bit */ +#define R_MIPS_64 18 /* Direct 64 bit */ +#define R_MIPS_GOT_DISP 19 +#define R_MIPS_GOT_PAGE 20 +#define R_MIPS_GOT_OFST 21 +#define R_MIPS_GOT_HI16 22 /* GOT HI 16 bit */ +#define R_MIPS_GOT_LO16 23 /* GOT LO 16 bit */ +#define R_MIPS_SUB 24 +#define R_MIPS_CALLHI16 30 /* upper 16 bit GOT entry for function */ +#define R_MIPS_CALLLO16 31 /* lower 16 bit GOT entry for function */ +#define R_MIPS_JALR 37 +#define R_MIPS_TLS_GD 42 +#define R_MIPS_COPY 126 +#define R_MIPS_JUMP_SLOT 127 + +#define R_PPC_NONE 0 /* No relocation. */ +#define R_PPC_ADDR32 1 +#define R_PPC_ADDR24 2 +#define R_PPC_ADDR16 3 +#define R_PPC_ADDR16_LO 4 +#define R_PPC_ADDR16_HI 5 +#define R_PPC_ADDR16_HA 6 +#define R_PPC_ADDR14 7 +#define R_PPC_ADDR14_BRTAKEN 8 +#define R_PPC_ADDR14_BRNTAKEN 9 +#define R_PPC_REL24 10 +#define R_PPC_REL14 11 +#define R_PPC_REL14_BRTAKEN 12 +#define R_PPC_REL14_BRNTAKEN 13 +#define R_PPC_GOT16 14 +#define R_PPC_GOT16_LO 15 +#define R_PPC_GOT16_HI 16 +#define R_PPC_GOT16_HA 17 +#define R_PPC_PLTREL24 18 +#define R_PPC_COPY 19 +#define R_PPC_GLOB_DAT 20 +#define R_PPC_JMP_SLOT 21 +#define R_PPC_RELATIVE 22 +#define R_PPC_LOCAL24PC 23 +#define R_PPC_UADDR32 24 +#define R_PPC_UADDR16 25 +#define R_PPC_REL32 26 +#define R_PPC_PLT32 27 +#define R_PPC_PLTREL32 28 +#define R_PPC_PLT16_LO 29 +#define R_PPC_PLT16_HI 30 +#define R_PPC_PLT16_HA 31 +#define R_PPC_SDAREL16 32 +#define R_PPC_SECTOFF 33 +#define R_PPC_SECTOFF_LO 34 +#define R_PPC_SECTOFF_HI 35 +#define R_PPC_SECTOFF_HA 36 + +/* + * 64-bit relocations + */ +#define R_PPC64_ADDR64 38 +#define R_PPC64_ADDR16_HIGHER 39 +#define R_PPC64_ADDR16_HIGHERA 40 +#define R_PPC64_ADDR16_HIGHEST 41 +#define R_PPC64_ADDR16_HIGHESTA 42 +#define R_PPC64_UADDR64 43 +#define R_PPC64_REL64 44 +#define R_PPC64_PLT64 45 +#define R_PPC64_PLTREL64 46 +#define R_PPC64_TOC16 47 +#define R_PPC64_TOC16_LO 48 +#define R_PPC64_TOC16_HI 49 +#define R_PPC64_TOC16_HA 50 +#define R_PPC64_TOC 51 +#define R_PPC64_DTPMOD64 68 +#define R_PPC64_TPREL64 73 +#define R_PPC64_DTPREL64 78 + +/* + * TLS relocations + */ +#define R_PPC_TLS 67 +#define R_PPC_DTPMOD32 68 +#define R_PPC_TPREL16 69 +#define R_PPC_TPREL16_LO 70 +#define R_PPC_TPREL16_HI 71 +#define R_PPC_TPREL16_HA 72 +#define R_PPC_TPREL32 73 +#define R_PPC_DTPREL16 74 +#define R_PPC_DTPREL16_LO 75 +#define R_PPC_DTPREL16_HI 76 +#define R_PPC_DTPREL16_HA 77 +#define R_PPC_DTPREL32 78 +#define R_PPC_GOT_TLSGD16 79 +#define R_PPC_GOT_TLSGD16_LO 80 +#define R_PPC_GOT_TLSGD16_HI 81 +#define R_PPC_GOT_TLSGD16_HA 82 +#define R_PPC_GOT_TLSLD16 83 +#define R_PPC_GOT_TLSLD16_LO 84 +#define R_PPC_GOT_TLSLD16_HI 85 +#define R_PPC_GOT_TLSLD16_HA 86 +#define R_PPC_GOT_TPREL16 87 +#define R_PPC_GOT_TPREL16_LO 88 +#define R_PPC_GOT_TPREL16_HI 89 +#define R_PPC_GOT_TPREL16_HA 90 + +/* + * The remaining relocs are from the Embedded ELF ABI, and are not in the + * SVR4 ELF ABI. + */ + +#define R_PPC_EMB_NADDR32 101 +#define R_PPC_EMB_NADDR16 102 +#define R_PPC_EMB_NADDR16_LO 103 +#define R_PPC_EMB_NADDR16_HI 104 +#define R_PPC_EMB_NADDR16_HA 105 +#define R_PPC_EMB_SDAI16 106 +#define R_PPC_EMB_SDA2I16 107 +#define R_PPC_EMB_SDA2REL 108 +#define R_PPC_EMB_SDA21 109 +#define R_PPC_EMB_MRKREF 110 +#define R_PPC_EMB_RELSEC16 111 +#define R_PPC_EMB_RELST_LO 112 +#define R_PPC_EMB_RELST_HI 113 +#define R_PPC_EMB_RELST_HA 114 +#define R_PPC_EMB_BIT_FLD 115 +#define R_PPC_EMB_RELSDA 116 + +/* + * RISC-V relocation types. + */ + +/* Relocation types used by the dynamic linker. */ +#define R_RISCV_NONE 0 +#define R_RISCV_32 1 +#define R_RISCV_64 2 +#define R_RISCV_RELATIVE 3 +#define R_RISCV_COPY 4 +#define R_RISCV_JUMP_SLOT 5 +#define R_RISCV_TLS_DTPMOD32 6 +#define R_RISCV_TLS_DTPMOD64 7 +#define R_RISCV_TLS_DTPREL32 8 +#define R_RISCV_TLS_DTPREL64 9 +#define R_RISCV_TLS_TPREL32 10 +#define R_RISCV_TLS_TPREL64 11 + +/* Relocation types not used by the dynamic linker. */ +#define R_RISCV_BRANCH 16 +#define R_RISCV_JAL 17 +#define R_RISCV_CALL 18 +#define R_RISCV_CALL_PLT 19 +#define R_RISCV_GOT_HI20 20 +#define R_RISCV_TLS_GOT_HI20 21 +#define R_RISCV_TLS_GD_HI20 22 +#define R_RISCV_PCREL_HI20 23 +#define R_RISCV_PCREL_LO12_I 24 +#define R_RISCV_PCREL_LO12_S 25 +#define R_RISCV_HI20 26 +#define R_RISCV_LO12_I 27 +#define R_RISCV_LO12_S 28 +#define R_RISCV_TPREL_HI20 29 +#define R_RISCV_TPREL_LO12_I 30 +#define R_RISCV_TPREL_LO12_S 31 +#define R_RISCV_TPREL_ADD 32 +#define R_RISCV_ADD8 33 +#define R_RISCV_ADD16 34 +#define R_RISCV_ADD32 35 +#define R_RISCV_ADD64 36 +#define R_RISCV_SUB8 37 +#define R_RISCV_SUB16 38 +#define R_RISCV_SUB32 39 +#define R_RISCV_SUB64 40 +#define R_RISCV_GNU_VTINHERIT 41 +#define R_RISCV_GNU_VTENTRY 42 +#define R_RISCV_ALIGN 43 +#define R_RISCV_RVC_BRANCH 44 +#define R_RISCV_RVC_JUMP 45 + +#define R_SPARC_NONE 0 +#define R_SPARC_8 1 +#define R_SPARC_16 2 +#define R_SPARC_32 3 +#define R_SPARC_DISP8 4 +#define R_SPARC_DISP16 5 +#define R_SPARC_DISP32 6 +#define R_SPARC_WDISP30 7 +#define R_SPARC_WDISP22 8 +#define R_SPARC_HI22 9 +#define R_SPARC_22 10 +#define R_SPARC_13 11 +#define R_SPARC_LO10 12 +#define R_SPARC_GOT10 13 +#define R_SPARC_GOT13 14 +#define R_SPARC_GOT22 15 +#define R_SPARC_PC10 16 +#define R_SPARC_PC22 17 +#define R_SPARC_WPLT30 18 +#define R_SPARC_COPY 19 +#define R_SPARC_GLOB_DAT 20 +#define R_SPARC_JMP_SLOT 21 +#define R_SPARC_RELATIVE 22 +#define R_SPARC_UA32 23 +#define R_SPARC_PLT32 24 +#define R_SPARC_HIPLT22 25 +#define R_SPARC_LOPLT10 26 +#define R_SPARC_PCPLT32 27 +#define R_SPARC_PCPLT22 28 +#define R_SPARC_PCPLT10 29 +#define R_SPARC_10 30 +#define R_SPARC_11 31 +#define R_SPARC_64 32 +#define R_SPARC_OLO10 33 +#define R_SPARC_HH22 34 +#define R_SPARC_HM10 35 +#define R_SPARC_LM22 36 +#define R_SPARC_PC_HH22 37 +#define R_SPARC_PC_HM10 38 +#define R_SPARC_PC_LM22 39 +#define R_SPARC_WDISP16 40 +#define R_SPARC_WDISP19 41 +#define R_SPARC_GLOB_JMP 42 +#define R_SPARC_7 43 +#define R_SPARC_5 44 +#define R_SPARC_6 45 +#define R_SPARC_DISP64 46 +#define R_SPARC_PLT64 47 +#define R_SPARC_HIX22 48 +#define R_SPARC_LOX10 49 +#define R_SPARC_H44 50 +#define R_SPARC_M44 51 +#define R_SPARC_L44 52 +#define R_SPARC_REGISTER 53 +#define R_SPARC_UA64 54 +#define R_SPARC_UA16 55 +#define R_SPARC_TLS_GD_HI22 56 +#define R_SPARC_TLS_GD_LO10 57 +#define R_SPARC_TLS_GD_ADD 58 +#define R_SPARC_TLS_GD_CALL 59 +#define R_SPARC_TLS_LDM_HI22 60 +#define R_SPARC_TLS_LDM_LO10 61 +#define R_SPARC_TLS_LDM_ADD 62 +#define R_SPARC_TLS_LDM_CALL 63 +#define R_SPARC_TLS_LDO_HIX22 64 +#define R_SPARC_TLS_LDO_LOX10 65 +#define R_SPARC_TLS_LDO_ADD 66 +#define R_SPARC_TLS_IE_HI22 67 +#define R_SPARC_TLS_IE_LO10 68 +#define R_SPARC_TLS_IE_LD 69 +#define R_SPARC_TLS_IE_LDX 70 +#define R_SPARC_TLS_IE_ADD 71 +#define R_SPARC_TLS_LE_HIX22 72 +#define R_SPARC_TLS_LE_LOX10 73 +#define R_SPARC_TLS_DTPMOD32 74 +#define R_SPARC_TLS_DTPMOD64 75 +#define R_SPARC_TLS_DTPOFF32 76 +#define R_SPARC_TLS_DTPOFF64 77 +#define R_SPARC_TLS_TPOFF32 78 +#define R_SPARC_TLS_TPOFF64 79 + +#define R_X86_64_NONE 0 /* No relocation. */ +#define R_X86_64_64 1 /* Add 64 bit symbol value. */ +#define R_X86_64_PC32 2 /* PC-relative 32 bit signed sym value. */ +#define R_X86_64_GOT32 3 /* PC-relative 32 bit GOT offset. */ +#define R_X86_64_PLT32 4 /* PC-relative 32 bit PLT offset. */ +#define R_X86_64_COPY 5 /* Copy data from shared object. */ +#define R_X86_64_GLOB_DAT 6 /* Set GOT entry to data address. */ +#define R_X86_64_JMP_SLOT 7 /* Set GOT entry to code address. */ +#define R_X86_64_RELATIVE 8 /* Add load address of shared object. */ +#define R_X86_64_GOTPCREL 9 /* Add 32 bit signed pcrel offset to GOT. */ +#define R_X86_64_32 10 /* Add 32 bit zero extended symbol value */ +#define R_X86_64_32S 11 /* Add 32 bit sign extended symbol value */ +#define R_X86_64_16 12 /* Add 16 bit zero extended symbol value */ +#define R_X86_64_PC16 13 /* Add 16 bit signed extended pc relative symbol value */ +#define R_X86_64_8 14 /* Add 8 bit zero extended symbol value */ +#define R_X86_64_PC8 15 /* Add 8 bit signed extended pc relative symbol value */ +#define R_X86_64_DTPMOD64 16 /* ID of module containing symbol */ +#define R_X86_64_DTPOFF64 17 /* Offset in TLS block */ +#define R_X86_64_TPOFF64 18 /* Offset in static TLS block */ +#define R_X86_64_TLSGD 19 /* PC relative offset to GD GOT entry */ +#define R_X86_64_TLSLD 20 /* PC relative offset to LD GOT entry */ +#define R_X86_64_DTPOFF32 21 /* Offset in TLS block */ +#define R_X86_64_GOTTPOFF 22 /* PC relative offset to IE GOT entry */ +#define R_X86_64_TPOFF32 23 /* Offset in static TLS block */ +#define R_X86_64_PC64 24 /* PC-relative 64 bit signed sym value. */ +#define R_X86_64_GOTOFF64 25 +#define R_X86_64_GOTPC32 26 +#define R_X86_64_GOT64 27 +#define R_X86_64_GOTPCREL64 28 +#define R_X86_64_GOTPC64 29 +#define R_X86_64_GOTPLT64 30 +#define R_X86_64_PLTOFF64 31 +#define R_X86_64_SIZE32 32 +#define R_X86_64_SIZE64 33 +#define R_X86_64_GOTPC32_TLSDESC 34 +#define R_X86_64_TLSDESC_CALL 35 +#define R_X86_64_TLSDESC 36 +#define R_X86_64_IRELATIVE 37 + + +#endif /* !_SYS_ELF_COMMON_H_ */ diff --git a/src/tracer/pintool/pin-3.13/extras/crt/include/freebsd/sys/x86/include/elf.h b/src/tracer/pintool/pin-3.13/extras/crt/include/freebsd/sys/x86/include/elf.h new file mode 100755 index 0000000..25fddf0 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/include/freebsd/sys/x86/include/elf.h @@ -0,0 +1,132 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + * + * This file incorporates work covered by the following copyright and permission notice: + */ + +/*- + * Copyright (c) 1996-1997 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 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$ + */ + +#ifndef _MACHINE_ELF_H_ +#define _MACHINE_ELF_H_ 1 + +#ifdef TARGET_IA32 +#define __ELF_WORD_SIZE 32 +#else +#define __ELF_WORD_SIZE 64 +#endif + +/* + * ELF definitions for the i386 architecture. + */ + +#include "../../sys/elf32.h" /* Definitions common to all 32 bit architectures. */ +#if defined(__ELF_WORD_SIZE) && __ELF_WORD_SIZE == 64 +#include "../../sys/elf64.h" /* Definitions common to all 64 bit architectures. */ +#endif + +/* + * Auxiliary vector entries for passing information to the interpreter. + * + * The i386 supplement to the SVR4 ABI specification names this "auxv_t", + * but POSIX lays claim to all symbols ending with "_t". + */ + +typedef struct { /* Auxiliary vector entry on initial stack */ + uint32_t /*int*/ a_type; /* Entry type. */ + union { + uint32_t /*long*/ a_val; /* Integer value. */ + void *a_ptr; /* Address. */ + void (*a_fcn)(void); /* Function pointer (not used). */ + } a_un; +} Elf32_Auxinfo; + +/* Values for a_type. */ +#define AT_NULL 0 /* Terminates the vector. */ +#define AT_IGNORE 1 /* Ignored entry. */ +#define AT_EXECFD 2 /* File descriptor of program to load. */ +#define AT_PHDR 3 /* Program header of program already loaded. */ +#define AT_PHENT 4 /* Size of each program header entry. */ +#define AT_PHNUM 5 /* Number of program header entries. */ +#define AT_PAGESZ 6 /* Page size in bytes. */ +#define AT_BASE 7 /* Interpreter's base address. */ +#define AT_FLAGS 8 /* Flags (unused for i386). */ +#define AT_ENTRY 9 /* Where interpreter should transfer control. */ +#define AT_NOTELF 10 /* Program is not ELF ?? */ +#define AT_UID 11 /* Real uid. */ +#define AT_EUID 12 /* Effective uid. */ +#define AT_GID 13 /* Real gid. */ +#define AT_EGID 14 /* Effective gid. */ +#define AT_EXECPATH 15 /* Path to the executable. */ +#define AT_CANARY 16 /* Canary for SSP. */ +#define AT_CANARYLEN 17 /* Length of the canary. */ +#define AT_OSRELDATE 18 /* OSRELDATE. */ +#define AT_NCPUS 19 /* Number of CPUs. */ +#define AT_PAGESIZES 20 /* Pagesizes. */ +#define AT_PAGESIZESLEN 21 /* Number of pagesizes. */ +#define AT_TIMEKEEP 22 /* Pointer to timehands. */ +#define AT_STACKPROT 23 /* Initial stack protection. */ +#define AT_EHDRFLAGS 24 /* e_flags field from elf hdr */ +//#define AT_HWCAP 25 /* CPU feature flags. */ +//#define AT_HWCAP2 26 /* CPU feature flags 2. */ + +#define AT_COUNT 27 /* Count of defined aux entry types. */ + +/* + * Relocation types. + */ + +#define R_386_COUNT 38 /* Count of defined relocation types. */ + +/* Define "machine" characteristics */ +#define ELF_TARG_CLASS ELFCLASS32 +#define ELF_TARG_DATA ELFDATA2LSB +#define ELF_TARG_MACH EM_386 +#define ELF_TARG_VER 1 + +#define ET_DYN_LOAD_ADDR 0x01001000 + +typedef struct { /* Auxiliary vector entry on initial stack */ + uint64_t /*long*/ a_type; /* Entry type. */ + union { + uint64_t /*long*/ a_val; /* Integer value. */ + void *a_ptr; /* Address. */ + void (*a_fcn)(void); /* Function pointer (not used). */ + } a_un; +} Elf64_Auxinfo; + +#endif /* !_MACHINE_ELF_H_ */ diff --git a/src/tracer/pintool/pin-3.13/extras/crt/include/fts.h b/src/tracer/pintool/pin-3.13/extras/crt/include/fts.h new file mode 100755 index 0000000..da26a88 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/ftw.h b/src/tracer/pintool/pin-3.13/extras/crt/include/ftw.h new file mode 100755 index 0000000..af524d0 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/getopt.h b/src/tracer/pintool/pin-3.13/extras/crt/include/getopt.h new file mode 100755 index 0000000..4451941 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/grp.h b/src/tracer/pintool/pin-3.13/extras/crt/include/grp.h new file mode 100755 index 0000000..fc4d520 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/i387/machine/fenv.h b/src/tracer/pintool/pin-3.13/extras/crt/include/i387/machine/fenv.h new file mode 100755 index 0000000..de45add --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/inttypes.h b/src/tracer/pintool/pin-3.13/extras/crt/include/inttypes.h new file mode 100755 index 0000000..8853c08 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/auxvec.h b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/auxvec.h new file mode 100755 index 0000000..fad637b --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/bitsperlong.h b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/bitsperlong.h new file mode 100755 index 0000000..7f0a0fc --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/errno-base.h b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/errno-base.h new file mode 100755 index 0000000..a26bf75 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/errno.h b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/errno.h new file mode 100755 index 0000000..91c5dea --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/fcntl.h b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/fcntl.h new file mode 100755 index 0000000..a15878f --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/int-l64.h b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/int-l64.h new file mode 100755 index 0000000..59eed08 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/int-ll64.h b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/int-ll64.h new file mode 100755 index 0000000..7622c49 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/ioctl.h b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/ioctl.h new file mode 100755 index 0000000..79ec83c --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/ioctls.h b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/ioctls.h new file mode 100755 index 0000000..86d6eaf --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/ipcbuf.h b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/ipcbuf.h new file mode 100755 index 0000000..cc7274e --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/kvm_para.h b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/kvm_para.h new file mode 100755 index 0000000..878419c --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/mman-common.h b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/mman-common.h new file mode 100755 index 0000000..873efb9 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/mman-common.h @@ -0,0 +1,80 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + * + * This file incorporates work covered by the following copyright and permission notice: + */ + +/**************************************************************************** + **************************************************************************** + *** + *** 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 +#define MAP_ANONYMOUS 0x20 +#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/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/mman.h b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/mman.h new file mode 100755 index 0000000..2aa2ec9 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/mman.h @@ -0,0 +1,55 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + * + * This file incorporates work covered by the following copyright and permission notice: + */ + +/**************************************************************************** + **************************************************************************** + *** + *** 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/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/msgbuf.h b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/msgbuf.h new file mode 100755 index 0000000..b2500ef --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/param.h b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/param.h new file mode 100755 index 0000000..416c4fb --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/poll.h b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/poll.h new file mode 100755 index 0000000..7faa0b8 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/posix_types.h b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/posix_types.h new file mode 100755 index 0000000..8e5d5ba --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/posix_types.h @@ -0,0 +1,124 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + * + * This file incorporates work covered by the following copyright and permission notice: + */ + +/**************************************************************************** + **************************************************************************** + *** + *** 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/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/resource.h b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/resource.h new file mode 100755 index 0000000..a24a95c --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/resource.h @@ -0,0 +1,97 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + * + * This file incorporates work covered by the following copyright and permission notice: + */ + +/**************************************************************************** + **************************************************************************** + *** + *** 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/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/sembuf.h b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/sembuf.h new file mode 100755 index 0000000..bcf1702 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/setup.h b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/setup.h new file mode 100755 index 0000000..09bbdbb --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/shmbuf.h b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/shmbuf.h new file mode 100755 index 0000000..68b859d --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/shmparam.h b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/shmparam.h new file mode 100755 index 0000000..77eca8c --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/siginfo.h b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/siginfo.h new file mode 100755 index 0000000..8071e10 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/siginfo.h @@ -0,0 +1,280 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + * + * This file incorporates work covered by the following copyright and permission notice: + */ + +/**************************************************************************** + **************************************************************************** + *** + *** 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/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/signal-defs.h b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/signal-defs.h new file mode 100755 index 0000000..f47cbe7 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/signal.h b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/signal.h new file mode 100755 index 0000000..de74f3a --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/signal.h @@ -0,0 +1,131 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + * + * This file incorporates work covered by the following copyright and permission notice: + */ + +/**************************************************************************** + **************************************************************************** + *** + *** 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/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/socket.h b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/socket.h new file mode 100755 index 0000000..2704ffc --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/socket.h @@ -0,0 +1,148 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + * + * This file incorporates work covered by the following copyright and permission notice: + */ + +/**************************************************************************** + **************************************************************************** + *** + *** 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_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/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/sockios.h b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/sockios.h new file mode 100755 index 0000000..ce063f1 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/stat.h b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/stat.h new file mode 100755 index 0000000..a94c69d --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/statfs.h b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/statfs.h new file mode 100755 index 0000000..1c8c589 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/swab.h b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/swab.h new file mode 100755 index 0000000..bcbc94f --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/termbits.h b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/termbits.h new file mode 100755 index 0000000..58acd3d --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/termios.h b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/termios.h new file mode 100755 index 0000000..0a5dfd6 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/types.h b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/types.h new file mode 100755 index 0000000..c0d4bea --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/ucontext.h b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/ucontext.h new file mode 100755 index 0000000..f26d1cc --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/unistd.h b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-generic/unistd.h new file mode 100755 index 0000000..becc82d --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/a.out.h b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/a.out.h new file mode 100755 index 0000000..fa287b5 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/auxvec.h b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/auxvec.h new file mode 100755 index 0000000..a601e55 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/auxvec.h @@ -0,0 +1,41 @@ +/* + * Copyright 2002-2019 Intel Corporation. + * + * This software and the related documents are Intel copyrighted materials, and your + * use of them is governed by the express license under which they were provided to + * you ("License"). Unless the License provides otherwise, you may not use, modify, + * copy, publish, distribute, disclose or transmit this software or the related + * documents without Intel's prior written permission. + * + * This software and the related documents are provided as is, with no express or + * implied warranties, other than those that are expressly stated in the License. + * + * This file incorporates work covered by the following copyright and permission notice: + */ + +/**************************************************************************** + **************************************************************************** + *** + *** 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 +#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 +/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ diff --git a/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/bitsperlong.h b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/bitsperlong.h new file mode 100755 index 0000000..2deae24 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/boot.h b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/boot.h new file mode 100755 index 0000000..1560dd0 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/bootparam.h b/src/tracer/pintool/pin-3.13/extras/crt/include/kernel/uapi/asm-x86/asm/bootparam.h new file mode 100755 index 0000000..b576825 --- /dev/null +++ b/src/tracer/pintool/pin-3.13/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