public inbox for systemtap@sourceware.org
 help / color / mirror / Atom feed
* [Bug translator/11074] New: loc2c/vta: synthetic address range warning/error during -p4
@ 2009-12-09 17:24 fche at redhat dot com
  2009-12-09 17:27 ` [Bug translator/11074] loc2c/vta: synthetic address range warning/error during -p4 for dwarf const_value fche at redhat dot com
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: fche at redhat dot com @ 2009-12-09 17:24 UTC (permalink / raw)
  To: systemtap

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 1789 bytes --]

utrace/master git kernel build (commit #g938482e
git systemtap
gcc rawhide 4.4.2 20091027

./stap -p4 -e   'probe kernel.function("build_zonelists_node") {println($pgdat)}'
cc1: warnings being treated as errors
/var/tmp/stapaEBDoB/stap_e2d2cd60c17ba18011c161e1c932409d_1093.c: In function
‘function__dwarf_tvar_get_pgdat_0’:
/var/tmp/stapaEBDoB/stap_e2d2cd60c17ba18011c161e1c932409d_1093.c:148: error:
this decimal constant is unsigned only in ISO C90
make[1]: *** [/var/tmp/stapaEBDoB/stap_e2d2cd60c17ba18011c161e1c932409d_1093.o]
Error 1
make: *** [_module_/var/tmp/stapaEBDoB] Error 2
Pass 4: compilation failed.  Try again with another '--vp 0001' option.



static void function__dwarf_tvar_get_pgdat_0 (struct context* __restrict__ c) {
  struct function__dwarf_tvar_get_pgdat_0_locals *  __restrict__ l =
    & c->locals[c->nesting+1].function__dwarf_tvar_get_pgdat_0;
...
  {
    intptr_t addr;
    { // synthesized
    addr = 3231800064L;
    }
    { // synthesized
    { uint32_t value = addr; addr = value; }
    }
    THIS->__retvalue = addr;
  }


The addr literal is out of range for a signed 32-bit long.
Even with the needed cast inserted, such an address may need to be
relocated with _stp_relocate() at run time.

-- 
           Summary: loc2c/vta: synthetic address range warning/error during
                    -p4
           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=11074

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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug translator/11074] loc2c/vta: synthetic address range warning/error during -p4 for dwarf const_value
  2009-12-09 17:24 [Bug translator/11074] New: loc2c/vta: synthetic address range warning/error during -p4 fche at redhat dot com
@ 2009-12-09 17:27 ` fche at redhat dot com
  2009-12-09 18:42 ` mjw at redhat dot com
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: fche at redhat dot com @ 2009-12-09 17:27 UTC (permalink / raw)
  To: systemtap



-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|loc2c/vta: synthetic address|loc2c/vta: synthetic address
                   |range warning/error during -|range warning/error during -
                   |p4                          |p4 for dwarf const_value


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

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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug translator/11074] loc2c/vta: synthetic address range warning/error during -p4 for dwarf const_value
  2009-12-09 17:24 [Bug translator/11074] New: loc2c/vta: synthetic address range warning/error during -p4 fche at redhat dot com
  2009-12-09 17:27 ` [Bug translator/11074] loc2c/vta: synthetic address range warning/error during -p4 for dwarf const_value fche at redhat dot com
@ 2009-12-09 18:42 ` mjw at redhat dot com
  2009-12-09 18:51 ` fche at redhat dot com
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: mjw at redhat dot com @ 2009-12-09 18:42 UTC (permalink / raw)
  To: systemtap



-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |mjw at redhat dot com


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

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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug translator/11074] loc2c/vta: synthetic address range warning/error during -p4 for dwarf const_value
  2009-12-09 17:24 [Bug translator/11074] New: loc2c/vta: synthetic address range warning/error during -p4 fche at redhat dot com
  2009-12-09 17:27 ` [Bug translator/11074] loc2c/vta: synthetic address range warning/error during -p4 for dwarf const_value fche at redhat dot com
  2009-12-09 18:42 ` mjw at redhat dot com
@ 2009-12-09 18:51 ` fche at redhat dot com
  2009-12-09 21:04 ` mjw at redhat dot com
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: fche at redhat dot com @ 2009-12-09 18:51 UTC (permalink / raw)
  To: systemtap


------- Additional Comments From fche at redhat dot com  2009-12-09 18:51 -------
It appears as though the const_value encoded in dwarf is a pointer to global
data in the kernel, and thus subject to relocation even though vmlinux is
ET_EXEC.

(gdb) p/x 3231800064
$1 = 0xc0a15b00

% nm -S vmlinux | sort| grep c0a1
...
c0a13a34 00000004 D x86_cpu_to_apicid_early_ptr
c0a13a38 00000004 D x86_bios_cpu_apicid_early_ptr
c0a13a40 00002d80 D contig_page_data
c0a167c0 00000498 d pci_serial_quirks
c0a16c58 00000014 d pcmcia_bus_interface
c0a16c6c 0000000c d cpufreq_cpu_notifier
...

So it's as if we must infer a need for _stp_relocate for
such values for the kernel, but probably only if the 
dwarf type is that of a pointer.  Ugh.


-- 


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

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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug translator/11074] loc2c/vta: synthetic address range warning/error during -p4 for dwarf const_value
  2009-12-09 17:24 [Bug translator/11074] New: loc2c/vta: synthetic address range warning/error during -p4 fche at redhat dot com
                   ` (2 preceding siblings ...)
  2009-12-09 18:51 ` fche at redhat dot com
@ 2009-12-09 21:04 ` mjw at redhat dot com
  2009-12-09 21:10 ` fche at redhat dot com
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: mjw at redhat dot com @ 2009-12-09 21:04 UTC (permalink / raw)
  To: systemtap


------- Additional Comments From mjw at redhat dot com  2009-12-09 21:02 -------
See also https://bugzilla.redhat.com/show_bug.cgi?id=546017
Summary: DW_AT_const_value not using DW_FORM_addr for address constant
Component: gcc

Which at least explains why we are outputting a constant value instead of a
(relocatable) address in this case.

-- 


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

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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug translator/11074] loc2c/vta: synthetic address range warning/error during -p4 for dwarf const_value
  2009-12-09 17:24 [Bug translator/11074] New: loc2c/vta: synthetic address range warning/error during -p4 fche at redhat dot com
                   ` (3 preceding siblings ...)
  2009-12-09 21:04 ` mjw at redhat dot com
@ 2009-12-09 21:10 ` fche at redhat dot com
  2009-12-09 21:48 ` mjw at redhat dot com
  2009-12-09 22:53 ` roland at gnu dot org
  6 siblings, 0 replies; 8+ messages in thread
From: fche at redhat dot com @ 2009-12-09 21:10 UTC (permalink / raw)
  To: systemtap


------- Additional Comments From fche at redhat dot com  2009-12-09 21:09 -------
(In reply to comment #2)
> Which at least explains why we are outputting a constant value instead of a
> (relocatable) address in this case.

OTOH, we still need to emit sufficient casting goo to make real constants
pass into intptr_t's without complaint.


-- 


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

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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug translator/11074] loc2c/vta: synthetic address range warning/error during -p4 for dwarf const_value
  2009-12-09 17:24 [Bug translator/11074] New: loc2c/vta: synthetic address range warning/error during -p4 fche at redhat dot com
                   ` (4 preceding siblings ...)
  2009-12-09 21:10 ` fche at redhat dot com
@ 2009-12-09 21:48 ` mjw at redhat dot com
  2009-12-09 22:53 ` roland at gnu dot org
  6 siblings, 0 replies; 8+ messages in thread
From: mjw at redhat dot com @ 2009-12-09 21:48 UTC (permalink / raw)
  To: systemtap


------- Additional Comments From mjw at redhat dot com  2009-12-09 21:48 -------
(In reply to comment #3)
> OTOH, we still need to emit sufficient casting goo to make real constants
> pass into intptr_t's without complaint.

Yes, I don't have a real testcase for it yet though. Using data4 for real values
seems uncommon. The dwarf spec even warns about it:

  If one of the DW_FORM_data<n> forms is used to represent a signed or unsigned
integer, it can be hard for a consumer to discover the context necessary to
determine which interpretation is intended. Producers are therefore strongly
encouraged to use DW_FORM_sdata or DW_FORM_udata for signed and unsigned
integers respectively, rather than DW_FORM_data<n>.


-- 


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

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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug translator/11074] loc2c/vta: synthetic address range warning/error during -p4 for dwarf const_value
  2009-12-09 17:24 [Bug translator/11074] New: loc2c/vta: synthetic address range warning/error during -p4 fche at redhat dot com
                   ` (5 preceding siblings ...)
  2009-12-09 21:48 ` mjw at redhat dot com
@ 2009-12-09 22:53 ` roland at gnu dot org
  6 siblings, 0 replies; 8+ messages in thread
From: roland at gnu dot org @ 2009-12-09 22:53 UTC (permalink / raw)
  To: systemtap


------- Additional Comments From roland at gnu dot org  2009-12-09 22:53 -------
The sign issue for non-address (i.e. really integer) constants is really a
separate question worthy of its own PR.  I have at least three ideas about that
one, but it's not this one.

-- 


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

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

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2009-12-09 22:53 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-12-09 17:24 [Bug translator/11074] New: loc2c/vta: synthetic address range warning/error during -p4 fche at redhat dot com
2009-12-09 17:27 ` [Bug translator/11074] loc2c/vta: synthetic address range warning/error during -p4 for dwarf const_value fche at redhat dot com
2009-12-09 18:42 ` mjw at redhat dot com
2009-12-09 18:51 ` fche at redhat dot com
2009-12-09 21:04 ` mjw at redhat dot com
2009-12-09 21:10 ` fche at redhat dot com
2009-12-09 21:48 ` mjw at redhat dot com
2009-12-09 22:53 ` roland at gnu dot org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).