This is the mail archive of the gcc-help@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: duplicate a variable!!!!


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.



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