This is the mail archive of the systemtap@sourceware.org mailing list for the systemtap 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]

[Bug tapsets/11708] SDT on i686 is register-poor


------- Additional Comments From fche at redhat dot com  2010-06-16 15:29 -------
Actually, gazing at the assembly code generated from a less-restricted
"g" constraint, the problem is not exactly the shortage of registers.
The problem is that gcc -O2/-O3 was able to const-propagate/inline the
STAP_PROBE* parameters as literal integer constants.  The "ro" constraint
doesn't let those pass.

In the debuginfo-less case (STAP_SDT_V2), we could accept such literal integers
(thus a weaker constraint such as "ron"), if we parsed $NNN in the translator,
which we don't.

In the STAP_SDT_V1 case though, any place where dwarf location expressions
can extract a value would be good enough.  Modern gcc can encode literals
in dwarf, so "ron" or somesuch would work fine there.  Older gcc would
probably fail, but then again older (rhel5) gcc doesn't const-propagate
this aggressively.

The best option seems to:
* broaden the constraint to "ron" for all platforms
* teach the translator to accept "$NNN" literals in the STAP_SDT_V2 case

(Note that it's not enough to go back to "g" on i686.  We'd still get
literals in the STAP_SDT_V2 case that the translator currently fails
to parse.)


-- 


http://sourceware.org/bugzilla/show_bug.cgi?id=11708

------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.


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