<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="moz-cite-prefix">On 2/25/13 1:44 PM, teja tamboli wrote:<br>
</div>
<blockquote
cite="mid:CABE5wVLB-J8HbQWVj+9e9f8hdwemVvJZsS3FC660x6jQ16nvsA@mail.gmail.com"
type="cite">
<meta http-equiv="Content-Type" content="text/html;
charset=ISO-8859-1">
<div
style="color:rgb(34,34,34);font-size:12.727272033691406px;font-family:arial,sans-serif">Hi
all,</div>
<div
style="color:rgb(34,34,34);font-size:12.727272033691406px;font-family:arial,sans-serif"><br>
</div>
<div
style="color:rgb(34,34,34);font-size:12.727272033691406px;font-family:arial,sans-serif">I
am working on my Master's project in security and I am trying to
iterate over the argument list of the function. Basically I need
to do following things :</div>
</blockquote>
<br>
Interesting. Just out of curiosity, can you tell us what your
project is about?<br>
<br>
<blockquote
cite="mid:CABE5wVLB-J8HbQWVj+9e9f8hdwemVvJZsS3FC660x6jQ16nvsA@mail.gmail.com"
type="cite">
<div
style="color:rgb(34,34,34);font-size:12.727272033691406px;font-family:arial,sans-serif"><br>
</div>
<div
style="color:rgb(34,34,34);font-size:12.727272033691406px;font-family:arial,sans-serif">1.
Check data type of each argument of the argument list of the
function.<br>
2. Based on its data type like character array or integer array,
pointer, int, char, take different action. <br>
3. I have added following code to check its data type. <br>
</div>
</blockquote>
<br>
There is one caveat when working with LLVM types: the type indicates
what the function *expects* to get as an argument; it does not
represent what the type of the actual memory object passed into the
function will be. A caller can cast a pointer of one structure type
to a different structure type and pass that into a function.<br>
<br>
<blockquote
cite="mid:CABE5wVLB-J8HbQWVj+9e9f8hdwemVvJZsS3FC660x6jQ16nvsA@mail.gmail.com"
type="cite">
<div
style="color:rgb(34,34,34);font-size:12.727272033691406px;font-family:arial,sans-serif"><br>
// F is any function basically of type function *<br>
FunctionType *FTy = F->getFunctionType();<br>
unsigned int numArgs = FTy->getNumParams();<br>
<br>
//Currently just checking data type of the 0th argument.
Eventually will be running it in the loop from 0 to numArgs.<br>
</div>
<div>
errs() << "\n1 Argument type int 32 : " <<
FTy->getParamType(0)->isIntegerTy(32);<br>
errs() << "\n2 Argument type char : " <<
FTy->getParamType(0)->isIntegerTy(8);<br>
errs() << "\n4 Argument type pointer : " <<
FTy->getParamType(0)->isPointerTy();<br>
errs() << "\n5 Argument type array : " <<
FTy->getParamType(0)->isArrayTy();<br>
errs() << "\n6 Argument type structure : " <<
FTy->getParamType(0)->isStructTy(); <br>
</div>
<br>
I can just find these many data types for integer and characters.
This just tells me that parameter is of type pointer or array or
structure. <br>
<br>
My question is if function's parameter type is pointer / array,
how can I figure it out whether its character pointer or integer
pointer? <br>
</blockquote>
<br>
You need to use dyn_cast<SequentialType> to convert the Type *
into a SequentialType *. With that, you can use
SequentialType::getElementType() to see what type of pointer
type/array type it is.<br>
<br>
You can also use dyn_cast<> to cast to an ArrayType to get the
declared size of the array, or to a StructType so that you can
examine the structure type's fields.<br>
<br>
You should be familiar with how to use dyn_cast<>(), and you
should be familiar with the LLVM type classes. The former is
documented in the LLVM Programmer's Manual, and the latter can be
found within the doxygen documentation.<br>
<br>
-- John T.<br>
<br>
<blockquote
cite="mid:CABE5wVLB-J8HbQWVj+9e9f8hdwemVvJZsS3FC660x6jQ16nvsA@mail.gmail.com"
type="cite">Also if it is a array then how can I find size of the
array? <br>
In case of structure how to check exact structure definition I
mean exactly it is instance of which structure? <br>
<br>
Please let me know. <br>
<br>
Thanks, <br>
--Teja
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
LLVM Developers mailing list
<a class="moz-txt-link-abbreviated" href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a> <a class="moz-txt-link-freetext" href="http://llvm.cs.uiuc.edu">http://llvm.cs.uiuc.edu</a>
<a class="moz-txt-link-freetext" href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a>
</pre>
</blockquote>
<br>
</body>
</html>