This is the mail archive of the
systemtap@sourceware.org
mailing list for the systemtap project.
[Bug translator/17889] New: the translator does not understand arm64 constants in sdt markers
- From: "wcohen at redhat dot com" <sourceware-bugzilla at sourceware dot org>
- To: systemtap at sourceware dot org
- Date: Tue, 27 Jan 2015 21:27:57 +0000
- Subject: [Bug translator/17889] New: the translator does not understand arm64 constants in sdt markers
- Auto-submitted: auto-generated
https://sourceware.org/bugzilla/show_bug.cgi?id=17889
Bug ID: 17889
Summary: the translator does not understand arm64 constants in
sdt markers
Product: systemtap
Version: unspecified
Status: NEW
Severity: normal
Priority: P2
Component: translator
Assignee: systemtap at sourceware dot org
Reporter: wcohen at redhat dot com
Some of the tests using markers were failing on arm64 because when the compiler
optimization is enabled there will be constants for some of the marker probe
arguments and the constants are not prefixed with a '$'. This can be obervered
in the systemtap.base/sdt.exp tests:
Executing on host: gcc ./systemtap.base/sdt.c -g -isystem.
-isystem/root/systemtap_write/install/include -Wall -Wextra -Werror -O2 -lm
-o sdt.c.exe.0 (timeout = 300)
spawn -ignore SIGHUP gcc ./systemtap.base/sdt.c -g -isystem.
-isystem/root/systemtap_write/install/include -Wall -Wextra -Werror -O2 -lm -o
sdt.c.exe.0
PASS: compiling sdt.c -O2 uprobe
executing: stap -w ./systemtap.base/sdt.stp sdt.c.exe.0 -c ./sdt.c.exe.0
FAIL: sdt -O2 uprobe
line 1: expected "_"
Got "semantic error: unable to find local 'arg1', [man error::dwarf] dieoffset
0x460 in /root/systemtap_write/systemtap/testsuite/sdt.c.exe.0, near pc
0x4004d8 in call1 ./systemtap.base/sdt.c (alternatives: $a)): identifier
'$arg1' at ./systemtap.base/sdt.stp:8:18"
Executing on host: gcc ./systemtap.base/sdt.c -g -isystem.
-isystem/root/systemtap_write/install/include -Wall -Wextra -Werror -O3 -lm
-o sdt.c.exe.1 (timeout = 300)
spawn -ignore SIGHUP gcc ./systemtap.base/sdt.c -g -isystem.
-isystem/root/systemtap_write/install/include -Wall -Wextra -Werror -O3 -lm -o
sdt.c.exe.1
PASS: compiling sdt.c -O3 uprobe
executing: stap -w ./systemtap.base/sdt.stp sdt.c.exe.1 -c ./sdt.c.exe.1
FAIL: sdt -O3 uprobe
line 1: expected "_"
Got "semantic error: unable to find local 'arg1', [man error::dwarf] dieoffset
0x460 in /root/systemtap_write/systemtap/testsuite/sdt.c.exe.1, near pc
0x4004d8 in call1 ./systemtap.base/sdt.c (alternatives: $a)): identifier
'$arg1' at ./systemtap.base/sdt.stp:8:18"
Executing on host: gcc ./systemtap.base/sdt.c -g -isystem.
-isystem/root/systemtap_write/install/include -Wall -Wextra -Werror -std=c89
-lm -o sdt.c.exe.2 (timeout = 300)
Looking at the .s files generated by added '-save-temps' to the compiles show a
marker with just a raw literal in there:
.pushsection .note.stapsdt,"?","note"
.balign 4
.4byte 992f-991f,994f-993f,3
991: .asciz "stapsdt"
992: .balign 4
993: .8byte 990b
.8byte _.stapsdt.base
.8byte 0
.asciz "test"
.asciz "mark_a"
.asciz "-4@1"
994: .balign 4
.popsection
The unoptimized c89 version the marker below is getting the argument from
memory and the test passes:
.pushsection .note.stapsdt,"?","note"
.balign 4
.4byte 992f-991f,994f-993f,3
991: .asciz "stapsdt"
992: .balign 4
993: .8byte 990b
.8byte _.stapsdt.base
.8byte 0
.asciz "test"
.asciz "mark_a"
.asciz "-4@[sp,12]"
994: .balign 4
.popsection
Need to be a bit careful fixing this because the ppc doesn't prefix constants
either but also uses raw constants as register names. Careless changes for
arm64 could break things for ppc.
--
You are receiving this mail because:
You are the assignee for the bug.