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 translator/11821] New: SDT_V2 dwarfless ambiguities with powerpc // -mno-regnames


On powerpc, the default assembly generation is -mno-regnames, which yields
SDT_V2 operand strings such as ....

extern int i;
void foo(int j) {
  asm volatile ("/* %0 %1 %2 %3 */" :: "g"(0), "g"(i), "g"("yo"), "g"(j));
}

 # 3 "foo.c" 1
        /* 0 i@l(9) .LC0 3 */
 # 0 "" 2

Note how the literal 0 looks like 0, and register 3 looks like 3.  No
punctuation like on x86 ($0 and %ecx respectively).

This ambiguity is not easy to get rid of.  SDT_V2 could use a single
constraint code such as "r", but that would lead to a lot of reload
instructions as everything's reloaded into a register.

Or SDT_V2 programs could be compiled with -mregnames, in which case we get 
        /* 0 i@l(%r9) .LC0 %r3 */        #, i,, j
with the "g" constraint.  This is great, except that sdt.h itself can't
know whether -mregnames is in effect (since there is no macro), so it can't
back down to "g".

Or SDT_V2 on powerpc could be doomed to debuginfo-only operation (in most
cases).

-- 
           Summary: SDT_V2 dwarfless ambiguities with powerpc // -mno-
                    regnames
           Product: systemtap
           Version: unspecified
            Status: NEW
          Severity: normal
          Priority: P2
         Component: translator
        AssignedTo: systemtap at sources dot redhat dot com
        ReportedBy: fche at redhat dot com


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

------- 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]