dynamic tracing problem

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

 



I am attempting to use inline assembly to implement a tracing mechanism that
results in code something like this (asm syntax not meant to be exact):

"pre" C code...

/* via inline asm */
j trace
.pushsubsection 1000
trace:

"trace" C code...

/* via inline asm */
j post
.popsubsection
post:

"post" C code...

The idea is that the trace code can be nullified by changing the "j trace"
instruction to a NOP or activated by putting the jump back.

I have an implementation and it almost works.  It malfunctions when applied on a
large scale.  I assume it is malfunctioning because gcc has placed essential
side-effects in the trace block.

How can I tell gcc not to move anything past the first asm?

How can I tell it to not expect any computations in the trace block to get past
the second asm?

Both asm statements are currently volatile.  I have experimented a little with
"memory" clobbers without success.  I need some help from an expert here.

I am using gcc 4.1 and 4.3.3 if it matters.

Joe Buehler




[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