duplicate a variable!!!!

David Brown david@westcontrol.com
Fri Apr 1 13:09:00 GMT 2011


On 01/04/2011 14:54, VAUGHAN Jay wrote:
>> That would be my question too. I know a little (but not much)
>> about hardening code, and I am aware of some of the issues if there
>> can be unexpected outside influences on your program (such as
>> radiation or hardware issues causing changes to memory locations).
>> I can't see any way in which some sort of general duplication of
>> variables would help.
>
>
> The 'proper' way to do it is with C macro's that can be used to
> declare, increment, and decrement, values in a redundnat structure
> containing both the inverted value as well as non-inverted value, a
> macro for setting the value (which also sets the inverted value), and
> a macro (and error handling) for checking the value and ensuring that
> it is the inverse of the inverted-values before it is used ..
>

I am not sure if that is the "proper" way to do it - because I am far 
from convinced that there /is/ a good way to harden software against 
memory errors using only software.  It depends on what the OP is trying 
to achieve, which we don't know at the moment.  But certainly macros 
like you suggest could be one way to get some hardening effects.

"Real" solutions to hardening systems against unexpected errors in 
memory are done in hardware.  The most obvious case is to use ECC 
memory.  For more advanced reliability, you use two processor cores in 
lock-step (this is done in some car engine controllers, for example). 
The next step up is to do things in triplicate and use majority voting 
(common on satellites and other space systems).  For the most demanding 
systems you use three independently developed systems (hardware and 
software) using different components, technologies, and development 
tools, and use majority voting (you see this sort of thing in passenger 
plane control systems).

"Hardening" software by hacking the compiler to generate duplicate 
variables sounds like an academic exercise at best.

But maybe I am completely misunderstanding what the OP is doing - I'm 
reading a lot into a couple of short sentences.




More information about the Gcc-help mailing list