You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

539 lines
26 KiB

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Pin: BBL: Single entrance, single exit sequence of instructions</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Pin
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">BBL: Single entrance, single exit sequence of instructions</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:gabff0ef78906564968da9352d35e68f24"><td class="memItemLeft" align="right" valign="top">VOID&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__BBL__BASIC__API.html#gabff0ef78906564968da9352d35e68f24">LEVEL_CORE::BBL_MoveAllAttributes</a> (BBL fromBbl, BBL toBbl)</td></tr>
<tr class="separator:gabff0ef78906564968da9352d35e68f24"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga76ceb2d9e0fb974d3c3769b2413ed634"><td class="memItemLeft" align="right" valign="top">UINT32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__BBL__BASIC__API.html#ga76ceb2d9e0fb974d3c3769b2413ed634">LEVEL_CORE::BBL_NumIns</a> (BBL bbl)</td></tr>
<tr class="separator:ga76ceb2d9e0fb974d3c3769b2413ed634"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7618bc7c80a25024227d3a24d59b936b"><td class="memItemLeft" align="right" valign="top">INS&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__BBL__BASIC__API.html#ga7618bc7c80a25024227d3a24d59b936b">LEVEL_PINCLIENT::BBL_InsHead</a> (BBL x)</td></tr>
<tr class="separator:ga7618bc7c80a25024227d3a24d59b936b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga732ec73ec6ef1bd2dfcd26f80d7de9da"><td class="memItemLeft" align="right" valign="top">INS&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__BBL__BASIC__API.html#ga732ec73ec6ef1bd2dfcd26f80d7de9da">LEVEL_PINCLIENT::BBL_InsTail</a> (BBL x)</td></tr>
<tr class="separator:ga732ec73ec6ef1bd2dfcd26f80d7de9da"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gadd7141abb47139b52922e04e0c4a10f3"><td class="memItemLeft" align="right" valign="top">BBL&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__BBL__BASIC__API.html#gadd7141abb47139b52922e04e0c4a10f3">LEVEL_PINCLIENT::BBL_Next</a> (BBL x)</td></tr>
<tr class="separator:gadd7141abb47139b52922e04e0c4a10f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf02bad35306c92f23db35bf956cf03d0"><td class="memItemLeft" align="right" valign="top">BBL&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__BBL__BASIC__API.html#gaf02bad35306c92f23db35bf956cf03d0">LEVEL_PINCLIENT::BBL_Prev</a> (BBL x)</td></tr>
<tr class="separator:gaf02bad35306c92f23db35bf956cf03d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga58a8d019cd09ce46cfe431ec8f14a075"><td class="memItemLeft" align="right" valign="top">BOOL&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__BBL__BASIC__API.html#ga58a8d019cd09ce46cfe431ec8f14a075">LEVEL_PINCLIENT::BBL_Valid</a> (BBL x)</td></tr>
<tr class="separator:ga58a8d019cd09ce46cfe431ec8f14a075"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga87270a66b97b60a42443922cdeac47a1"><td class="memItemLeft" align="right" valign="top">BOOL&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__BBL__BASIC__API.html#ga87270a66b97b60a42443922cdeac47a1">LEVEL_PINCLIENT::BBL_Original</a> (BBL bbl)</td></tr>
<tr class="separator:ga87270a66b97b60a42443922cdeac47a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa11bc3cbdfb07b039491b17501b58e63"><td class="memItemLeft" align="right" valign="top">ADDRINT&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__BBL__BASIC__API.html#gaa11bc3cbdfb07b039491b17501b58e63">LEVEL_PINCLIENT::BBL_Address</a> (BBL bbl)</td></tr>
<tr class="separator:gaa11bc3cbdfb07b039491b17501b58e63"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5bd7460c8ffab83343046308a5ae646f"><td class="memItemLeft" align="right" valign="top">USIZE&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__BBL__BASIC__API.html#ga5bd7460c8ffab83343046308a5ae646f">LEVEL_PINCLIENT::BBL_Size</a> (BBL bbl)</td></tr>
<tr class="separator:ga5bd7460c8ffab83343046308a5ae646f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaeee9d7a6253d49d226bbed3f35768169"><td class="memItemLeft" align="right" valign="top">VOID&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__BBL__BASIC__API.html#gaeee9d7a6253d49d226bbed3f35768169">LEVEL_PINCLIENT::BBL_InsertCall</a> (BBL bbl, <a class="el" href="group__INST__ARGS.html#ga707ea08e31f44f4a81e2a7766123bad7">IPOINT</a> action, AFUNPTR funptr,...)</td></tr>
<tr class="separator:gaeee9d7a6253d49d226bbed3f35768169"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2cb232c4ec093d6212130d2212b7753f"><td class="memItemLeft" align="right" valign="top">VOID&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__BBL__BASIC__API.html#ga2cb232c4ec093d6212130d2212b7753f">LEVEL_PINCLIENT::BBL_InsertIfCall</a> (BBL bbl, <a class="el" href="group__INST__ARGS.html#ga707ea08e31f44f4a81e2a7766123bad7">IPOINT</a> action, AFUNPTR funptr,...)</td></tr>
<tr class="separator:ga2cb232c4ec093d6212130d2212b7753f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafc21707fffe4859507872641a5e8e245"><td class="memItemLeft" align="right" valign="top">VOID&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__BBL__BASIC__API.html#gafc21707fffe4859507872641a5e8e245">LEVEL_PINCLIENT::BBL_InsertThenCall</a> (BBL bbl, <a class="el" href="group__INST__ARGS.html#ga707ea08e31f44f4a81e2a7766123bad7">IPOINT</a> action, AFUNPTR funptr,...)</td></tr>
<tr class="separator:gafc21707fffe4859507872641a5e8e245"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8a127ecac76dc52fc032e1e852b50a1d"><td class="memItemLeft" align="right" valign="top">BOOL&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__BBL__BASIC__API.html#ga8a127ecac76dc52fc032e1e852b50a1d">LEVEL_PINCLIENT::BBL_HasFallThrough</a> (BBL bbl)</td></tr>
<tr class="separator:ga8a127ecac76dc52fc032e1e852b50a1d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p>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 <a class="el" href="index.html#GRAN">Instrumentation Granularity</a>. </p>
<h2 class="groupheader">Function Documentation</h2>
<a id="gaa11bc3cbdfb07b039491b17501b58e63"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa11bc3cbdfb07b039491b17501b58e63">&#9670;&nbsp;</a></span>BBL_Address()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ADDRINT LEVEL_PINCLIENT::BBL_Address </td>
<td>(</td>
<td class="paramtype">BBL&#160;</td>
<td class="paramname"><em>bbl</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>Address of a bbl</dd></dl>
<dl class="section user"><dt>Availability:</dt><dd><b>Mode:</b> JIT &amp; Probe<br />
<b>O/S</b>: Linux, Windows &amp; macOS*<br />
<b>CPU:</b> All<br />
</dd></dl>
</div>
</div>
<a id="ga8a127ecac76dc52fc032e1e852b50a1d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8a127ecac76dc52fc032e1e852b50a1d">&#9670;&nbsp;</a></span>BBL_HasFallThrough()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">BOOL LEVEL_PINCLIENT::BBL_HasFallThrough </td>
<td>(</td>
<td class="paramtype">BBL&#160;</td>
<td class="paramname"><em>bbl</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Refer to INS_HasFallThrough for checking if an instruction could have a fall-through path based on the opcode. </p><dl class="section return"><dt>Returns</dt><dd>TRUE if the BBL has a fall-through bbl within the trace, else returns FALSE.</dd></dl>
<dl class="section user"><dt>Availability:</dt><dd><b>Mode:</b> JIT &amp; Probe<br />
<b>O/S</b>: Linux, Windows &amp; macOS*<br />
<b>CPU:</b> All<br />
</dd></dl>
</div>
</div>
<a id="gaeee9d7a6253d49d226bbed3f35768169"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaeee9d7a6253d49d226bbed3f35768169">&#9670;&nbsp;</a></span>BBL_InsertCall()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">VOID LEVEL_PINCLIENT::BBL_InsertCall </td>
<td>(</td>
<td class="paramtype">BBL&#160;</td>
<td class="paramname"><em>bbl</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__INST__ARGS.html#ga707ea08e31f44f4a81e2a7766123bad7">IPOINT</a>&#160;</td>
<td class="paramname"><em>action</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">AFUNPTR&#160;</td>
<td class="paramname"><em>funptr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>...</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Insert call relative to a bbl. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">bbl</td><td>BBL to instrument </td></tr>
<tr><td class="paramname">action</td><td>Specifies before, after, etc. <br />
<a class="el" href="group__INST__ARGS.html#gga707ea08e31f44f4a81e2a7766123bad7a7c7cbebb7a62a40e9f803b1db2e6ce20">IPOINT_BEFORE</a> is always valid for all BBLs. <br />
<a class="el" href="group__INST__ARGS.html#gga707ea08e31f44f4a81e2a7766123bad7a42eff26179c6d87348abe492301c12ec">IPOINT_AFTER</a> is valid only when a fall-through exists. Can only be used if <a class="el" href="group__BBL__BASIC__API.html#ga8a127ecac76dc52fc032e1e852b50a1d">BBL_HasFallThrough</a> is true. <br />
<a class="el" href="group__INST__ARGS.html#gga707ea08e31f44f4a81e2a7766123bad7acf7dee2063098dd79907d19f9c7df65d">IPOINT_ANYWHERE</a> will put the instrumentation at a place inside the bbl for best performance. <br />
<a class="el" href="group__INST__ARGS.html#gga707ea08e31f44f4a81e2a7766123bad7a5ef5b45901a8447e5173f50746ab029d">IPOINT_TAKEN_BRANCH</a> 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. </td></tr>
<tr><td class="paramname">funptr</td><td>Analysis function to call </td></tr>
<tr><td class="paramname">...</td><td><a class="el" href="group__INST__ARGS.html#ga089c27ca15e9ff139dd3a3f8a6f8451d">IARG_TYPE</a>. Arguments to pass to funptr</td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Availability:</dt><dd><b>Mode:</b> JIT<br />
<b>O/S</b>: Linux, Windows &amp; macOS*<br />
<b>CPU:</b> All<br />
</dd></dl>
</div>
</div>
<a id="ga2cb232c4ec093d6212130d2212b7753f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga2cb232c4ec093d6212130d2212b7753f">&#9670;&nbsp;</a></span>BBL_InsertIfCall()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">VOID LEVEL_PINCLIENT::BBL_InsertIfCall </td>
<td>(</td>
<td class="paramtype">BBL&#160;</td>
<td class="paramname"><em>bbl</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__INST__ARGS.html#ga707ea08e31f44f4a81e2a7766123bad7">IPOINT</a>&#160;</td>
<td class="paramname"><em>action</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">AFUNPTR&#160;</td>
<td class="paramname"><em>funptr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>...</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>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 <a class="el" href="group__INST__ARGS.html#ga3d1d5f6805cb16d00bce441290ca2212">CALL_ORDER</a> is used, Both "if" and "then" analysis calls must have the same order.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">bbl</td><td>BBL to instrument </td></tr>
<tr><td class="paramname">action</td><td>Specifies when the analysis call executes. See the documentation in <a class="el" href="group__BBL__BASIC__API.html#gaeee9d7a6253d49d226bbed3f35768169">BBL_InsertCall()</a>. </td></tr>
<tr><td class="paramname">funptr</td><td>Analysis function to call. Its return type must be ADDRINT </td></tr>
<tr><td class="paramname">...</td><td><a class="el" href="group__INST__ARGS.html#ga089c27ca15e9ff139dd3a3f8a6f8451d">IARG_TYPE</a>. Arguments to pass to funptr</td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Availability:</dt><dd><b>Mode:</b> JIT<br />
<b>O/S</b>: Linux, Windows &amp; macOS*<br />
<b>CPU:</b> All<br />
</dd></dl>
</div>
</div>
<a id="gafc21707fffe4859507872641a5e8e245"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gafc21707fffe4859507872641a5e8e245">&#9670;&nbsp;</a></span>BBL_InsertThenCall()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">VOID LEVEL_PINCLIENT::BBL_InsertThenCall </td>
<td>(</td>
<td class="paramtype">BBL&#160;</td>
<td class="paramname"><em>bbl</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__INST__ARGS.html#ga707ea08e31f44f4a81e2a7766123bad7">IPOINT</a>&#160;</td>
<td class="paramname"><em>action</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">AFUNPTR&#160;</td>
<td class="paramname"><em>funptr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>...</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>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 <a class="el" href="group__INST__ARGS.html#ga3d1d5f6805cb16d00bce441290ca2212">CALL_ORDER</a> is used, Both "if" and "then" analysis calls must have the same order.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">bbl</td><td>BBL to instrument </td></tr>
<tr><td class="paramname">action</td><td>Specifies when the analysis call executes. See the documentation in <a class="el" href="group__BBL__BASIC__API.html#gaeee9d7a6253d49d226bbed3f35768169">BBL_InsertCall()</a>. </td></tr>
<tr><td class="paramname">funptr</td><td>Analysis function to call </td></tr>
<tr><td class="paramname">...</td><td><a class="el" href="group__INST__ARGS.html#ga089c27ca15e9ff139dd3a3f8a6f8451d">IARG_TYPE</a>. Arguments to pass to funptr</td></tr>
</table>
</dd>
</dl>
<dl class="section user"><dt>Availability:</dt><dd><b>Mode:</b> JIT<br />
<b>O/S</b>: Linux, Windows &amp; macOS*<br />
<b>CPU:</b> All<br />
</dd></dl>
</div>
</div>
<a id="ga7618bc7c80a25024227d3a24d59b936b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga7618bc7c80a25024227d3a24d59b936b">&#9670;&nbsp;</a></span>BBL_InsHead()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">INS LEVEL_PINCLIENT::BBL_InsHead </td>
<td>(</td>
<td class="paramtype">BBL&#160;</td>
<td class="paramname"><em>x</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>First instruction of bbl</dd></dl>
<dl class="section user"><dt>Availability:</dt><dd><b>Mode:</b> JIT &amp; Probe<br />
<b>O/S</b>: Linux, Windows &amp; macOS*<br />
<b>CPU:</b> All<br />
</dd></dl>
</div>
</div>
<a id="ga732ec73ec6ef1bd2dfcd26f80d7de9da"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga732ec73ec6ef1bd2dfcd26f80d7de9da">&#9670;&nbsp;</a></span>BBL_InsTail()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">INS LEVEL_PINCLIENT::BBL_InsTail </td>
<td>(</td>
<td class="paramtype">BBL&#160;</td>
<td class="paramname"><em>x</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>Last instruction of bbl</dd></dl>
<dl class="section user"><dt>Availability:</dt><dd><b>Mode:</b> JIT &amp; Probe<br />
<b>O/S</b>: Linux, Windows &amp; macOS*<br />
<b>CPU:</b> All<br />
</dd></dl>
</div>
</div>
<a id="gabff0ef78906564968da9352d35e68f24"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gabff0ef78906564968da9352d35e68f24">&#9670;&nbsp;</a></span>BBL_MoveAllAttributes()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">VOID LEVEL_CORE::BBL_MoveAllAttributes </td>
<td>(</td>
<td class="paramtype">BBL&#160;</td>
<td class="paramname"><em>fromBbl</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">BBL&#160;</td>
<td class="paramname"><em>toBbl</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Move all attributes from one BBL to another</p>
<dl class="section user"><dt>Availability:</dt><dd><b>Mode:</b> JIT &amp; Probe<br />
<b>O/S</b>: Linux, Windows &amp; macOS*<br />
<b>CPU:</b> All<br />
</dd></dl>
</div>
</div>
<a id="gadd7141abb47139b52922e04e0c4a10f3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gadd7141abb47139b52922e04e0c4a10f3">&#9670;&nbsp;</a></span>BBL_Next()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">BBL LEVEL_PINCLIENT::BBL_Next </td>
<td>(</td>
<td class="paramtype">BBL&#160;</td>
<td class="paramname"><em>x</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>Next bbl or BBL_INVALID() if this is the end of trace or rtn</dd></dl>
<dl class="section user"><dt>Availability:</dt><dd><b>Mode:</b> JIT &amp; Probe<br />
<b>O/S</b>: Linux, Windows &amp; macOS*<br />
<b>CPU:</b> All<br />
</dd></dl>
</div>
</div>
<a id="ga76ceb2d9e0fb974d3c3769b2413ed634"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga76ceb2d9e0fb974d3c3769b2413ed634">&#9670;&nbsp;</a></span>BBL_NumIns()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">UINT32 LEVEL_CORE::BBL_NumIns </td>
<td>(</td>
<td class="paramtype">BBL&#160;</td>
<td class="paramname"><em>bbl</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Number of INSs within a BBL.</p>
<dl class="section user"><dt>Availability:</dt><dd><b>Mode:</b> JIT &amp; Probe<br />
<b>O/S</b>: Linux, Windows &amp; macOS*<br />
<b>CPU:</b> All<br />
</dd></dl>
</div>
</div>
<a id="ga87270a66b97b60a42443922cdeac47a1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga87270a66b97b60a42443922cdeac47a1">&#9670;&nbsp;</a></span>BBL_Original()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">BOOL LEVEL_PINCLIENT::BBL_Original </td>
<td>(</td>
<td class="paramtype">BBL&#160;</td>
<td class="paramname"><em>bbl</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>Whether the BBL data structure has been instrumented or optimized since it was created</dd></dl>
<dl class="section user"><dt>Availability:</dt><dd><b>Mode:</b> JIT &amp; Probe<br />
<b>O/S</b>: Linux, Windows &amp; macOS*<br />
<b>CPU:</b> All<br />
</dd></dl>
</div>
</div>
<a id="gaf02bad35306c92f23db35bf956cf03d0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaf02bad35306c92f23db35bf956cf03d0">&#9670;&nbsp;</a></span>BBL_Prev()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">BBL LEVEL_PINCLIENT::BBL_Prev </td>
<td>(</td>
<td class="paramtype">BBL&#160;</td>
<td class="paramname"><em>x</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>Previous bbl or BBL_INVALID() if this is the beginning of trace or rtn</dd></dl>
<dl class="section user"><dt>Availability:</dt><dd><b>Mode:</b> JIT &amp; Probe<br />
<b>O/S</b>: Linux, Windows &amp; macOS*<br />
<b>CPU:</b> All<br />
</dd></dl>
</div>
</div>
<a id="ga5bd7460c8ffab83343046308a5ae646f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga5bd7460c8ffab83343046308a5ae646f">&#9670;&nbsp;</a></span>BBL_Size()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">USIZE LEVEL_PINCLIENT::BBL_Size </td>
<td>(</td>
<td class="paramtype">BBL&#160;</td>
<td class="paramname"><em>bbl</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>Size of bbl code, in bytes</dd></dl>
<dl class="section user"><dt>Availability:</dt><dd><b>Mode:</b> JIT &amp; Probe<br />
<b>O/S</b>: Linux, Windows &amp; macOS*<br />
<b>CPU:</b> All<br />
</dd></dl>
</div>
</div>
<a id="ga58a8d019cd09ce46cfe431ec8f14a075"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga58a8d019cd09ce46cfe431ec8f14a075">&#9670;&nbsp;</a></span>BBL_Valid()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">BOOL LEVEL_PINCLIENT::BBL_Valid </td>
<td>(</td>
<td class="paramtype">BBL&#160;</td>
<td class="paramname"><em>x</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>True if x is not BBL_INVALID()</dd></dl>
<dl class="section user"><dt>Availability:</dt><dd><b>Mode:</b> JIT &amp; Probe<br />
<b>O/S</b>: Linux, Windows &amp; macOS*<br />
<b>CPU:</b> All<br />
</dd></dl>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>