Re: How to use __attribute__((used))?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 17 Sep 2013, Paul Smith wrote:

On Tue, 2013-09-17 at 08:08 -0700, Ian Lance Taylor wrote:
In your example code you are using the attribute on a local variable.
The used attribute is only meaningful on a function or global
variable.

Aha.  OK thanks.  It would be very helpful if the manual made this more
clear: it simply says "variable" and I see no obvious way to infer that
it applies only to global variables or functions.

It's intended to be used to force the function or global variable to
be emitted even if it is not used.

It sounds like you are looking for the ability to disable optimization
for a local variable.  It doesn't make sense to say that you want to
force a local variable to exist even at high levels of optimization.
At high levels of optimization local variables more or less disappear,
though debug info is able to track some cases.  In any case, GCC has
no such ability.

IMO it is not nonsensical to ask the compiler to preserve a variable on
the stack even at high levels of optimization, so that its value can be
queried from a coredump or even live debugging.

The variables I'm referring to are typically of the type in my example
(although their value is not so simply reproduced obviously): they are
local variables which are assigned but never read.  They exist solely to
keep track of a value which may be interesting in a debugging session.
Ideally we'd not be debugging highly optimized code but real life is not
always ideal :-).

However, I understand that this capability is not currently available.

volatile or inline asm (or ...) can get you roughly what you want.

--
Marc Glisse




[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux