Some transformations need a source of randomness during execution. For this reason, we can insert statements that collect random values, preferably from variables that are input dependent.

At a minimum, you should issue the --Transform=InitEntropy transformation, since this creates the variables that hold the entropy. You should issue as many --Transform=UpdateEntropy as you can, making sure you collect entropy from variables that are truly input dependent.



--Transform InitEntropy Add initialization of the entropy variables.
--Transform UpdateEntropy Add updates to the entropy variables.
--UpdateEntropyVar IDENTSPEC Add to the entropy variables from these variables. Default=*.


This command initializes the entropy variables in main, and then collects randomness from variables x,y,z in function inputData, from variable packet in function acceptNetworkPacket, and from all variables in function random:

tigress \
   --Transform=InitEntropy --Functions=main \
   --Transform=UpdateEntropy --Functions=inputData --UpdateEntropyVar=x,y,z \
   --Transform=UpdateEntropy --Functions=acceptNetworkPacket --UpdateEntropyVar=packet \
   --Transform=UpdateEntropy --Functions=random --UpdateEntropyVar=\* \
   --out=foo prog.c