Changeset 40975 in vbox for trunk/src/bldprogs
- Timestamp:
- Apr 18, 2012 2:49:24 PM (13 years ago)
- svn:sync-xref-src-repo-rev:
- 77533
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/bldprogs/VBoxTpG.cpp
r40892 r40975 183 183 static const char *g_pszProbeFnName = "SUPR0TracerFireProbe"; 184 184 static bool g_fProbeFnImported = true; 185 static bool g_fPic = false; 185 186 /** @} */ 186 187 … … 750 751 g_fProbeFnImported ? "IMP" : "", 751 752 g_pszProbeFnName); 752 if (fMachO64 && g_fProbeFnImported )753 if (fMachO64 && g_fProbeFnImported && !g_fPic) 753 754 ScmStreamPrintf(pStrm, 754 755 "g_pfnVtgProbeFn:\n" … … 792 793 */ 793 794 if (g_cBits == 32) 794 ScmStreamPrintf(pStrm, g_fProbeFnImported ? 795 ScmStreamPrintf(pStrm, g_fPic ? 796 " call .mov_ecx_eip_plus_5\n" 797 ".got_eip:\n" 798 " add ecx, _GLOBAL_OFFSET_TABLE + ($$ - .got_eip) wrt ..gotpc\n" 799 " mov ecx, [%s@GOT + ecx]\n" 800 " jmp ecx\n" 801 ".mov_ecx_eip_plus_5:\n" 802 " pop ecx\n" 803 " jmp ecx\n" 804 : g_fProbeFnImported ? 795 805 " mov ecx, IMP2(%s)\n" 796 806 " jmp ecx\n" … … 809 819 " jmp [g_pfnVtgProbeFn wrt rip]\n"); 810 820 else 811 ScmStreamPrintf(pStrm, g_fProbeFnImported ? 812 " lea rax, [IMP2(%s)]\n" //??? macho64? 821 ScmStreamPrintf(pStrm, g_fPic ? 822 " jmp [rel %s wrt ..got]\n" 823 : g_fProbeFnImported ? 824 " lea rax, [IMP2(%s)]\n" 813 825 " jmp rax\n" 814 826 : … … 2043 2055 kVBoxTpGOpt_AssemblerOutputOpt, 2044 2056 kVBoxTpGOpt_AssemblerOption, 2057 kVBoxTpGOpt_Pic, 2045 2058 kVBoxTpGOpt_ProbeFnName, 2046 2059 kVBoxTpGOpt_ProbeFnImported, 2060 kVBoxTpGOpt_ProbeFnNotImported, 2047 2061 kVBoxTpGOpt_End 2048 2062 }; … … 2065 2079 { "--assembler-output-opt", kVBoxTpGOpt_AssemblerOutputOpt, RTGETOPT_REQ_STRING }, 2066 2080 { "--assembler-option", kVBoxTpGOpt_AssemblerOption, RTGETOPT_REQ_STRING }, 2081 { "--pic", kVBoxTpGOpt_Pic, RTGETOPT_REQ_NOTHING }, 2067 2082 { "--probe-fn-name", kVBoxTpGOpt_ProbeFnName, RTGETOPT_REQ_STRING }, 2068 { "--probe-fn-imported", kVBoxTpGOpt_ProbeFnImported, RTGETOPT_REQ_BOOL }, 2083 { "--probe-fn-imported", kVBoxTpGOpt_ProbeFnImported, RTGETOPT_REQ_NOTHING }, 2084 { "--probe-fn-not-imported", kVBoxTpGOpt_ProbeFnNotImported, RTGETOPT_REQ_NOTHING }, 2069 2085 /** @todo We're missing a bunch of assembler options! */ 2070 2086 }; … … 2189 2205 break; 2190 2206 2207 case kVBoxTpGOpt_Pic: 2208 g_fPic = true; 2209 break; 2210 2191 2211 case kVBoxTpGOpt_ProbeFnName: 2192 2212 g_pszProbeFnName = ValueUnion.psz; … … 2194 2214 2195 2215 case kVBoxTpGOpt_ProbeFnImported: 2196 g_pszProbeFnName = ValueUnion.psz; 2216 g_fProbeFnImported = true; 2217 break; 2218 2219 case kVBoxTpGOpt_ProbeFnNotImported: 2220 g_fProbeFnImported = false; 2197 2221 break; 2198 2222
Note:
See TracChangeset
for help on using the changeset viewer.