This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Modifying the values of Gimple Instruction Operands


On Tue, Sep 3, 2013 at 7:59 PM,  <tturhan@cs.bilkent.edu.tr> wrote:
> Sorry forgot to mention, my name is Tuncer.
>
> Again any help would be much appreciated.
> I know these maybe simple for some of you if you could lend me a hand, you
> will be doing a great deal of help.
>
> Changed the subject for better understanding,
>
> Thanks again guys :)

Something like

   oldop = gimple_assign_rhs1 (stmt);
   gsi = gsi_for_stmt (stmt);
   newop = force_gimple_operand_gsi (&gsi, fold_build2 (BIT_IOR_EXPR,
TREE_TYPE (oldop), oldop, build_int_cst (TREE_TYPE (oldop), 1<<3)),
true, NULL_TREE, true, GSI_CONTINUE_LINKING);
   gimple_assign_set_rhs1 (stmt, newop);
   update_stmt (stmt);

>
>> Hi,
>>
>> I am a student at Bilkent Uni. in Turkey and using GCC as a tool for my
>> M.S. Thesis which is about Software Fault Tolerance.
>> I am stuck, in terms of implementing bit flips in the operands of a gimple
>> statement.
>>
>> I need to inject bit flips to all kinds of operands, constant integers,
>> floats, variables, pointers etc...
>>
>> It is simpler for constants, but I am having a hard time to get the value
>> of pointers and other variables.
>>
>> My objective is to simply change the value of a tree operand, by injecting
>> a new instruction that changes the value or directly change the operand to
>> a bit flipped value.
>>
>> For constant integers I did something like this:
>>
>> int valueBefore = TREE_INT_CST_LOW(operands[i]);
>> int valueAfter = (valueBefore ^ (1u << 2));                                   tree number =
>> build_int_cst (integer_type_node, valueAfter);
>>
>> I would love it if you can help me and
>> may even implement a tool for GCC for error injection purposes.
>>
>> Any help would be much appreciated!
>>
>> Thank you very much!
>>
>
>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]