id,summary,reporter,owner,description,type,status,priority,milestone,component,version,severity,resolution,keywords,cc,lang,patch,platform
364,"ptr_alignment 8 not honored, sparc 64bit broken",rurban,,"Sparc 64bit with strict ptr_alignment=8 breaks when reading frozen pmc's because of misalignment.

Any 64bit big-endian cpu with strict alignment is broken without '''-xmemalign=4s''' (the immediate workaround)
The default for all v9 architectures is '''-xmemalign=8s'''.

However, our goal should be to allow fast aligned code and not to skip this with a compiler relaxement.

{{{
t@1 (l@1) stopped in PF_fetch_integer at line 1076 in file ""pf_items.c""
 1076       ASSERT_ARGS(PF_fetch_integer)
(dbx) step
t@1 (l@1) stopped in PF_fetch_integer at line 1078 in file ""pf_items.c""
 1078       if (!pf || pf->fetch_iv == NULL)
(dbx) print *(*stream)
**stream = 4
(dbx) step
t@1 (l@1) stopped in PF_fetch_integer at line 1079 in file ""pf_items.c""
 1079           return *(*stream)++;
(dbx) print *(*stream) 
**stream = 4
(dbx) step
t@1 (l@1) signal BUS (invalid address alignment) in PF_fetch_integer at line 1079 in file ""pf_items.c""
 1079           return *(*stream)++;
(dbx) print *(*stream) 
**stream = 35
(dbx) print *stream
*stream = 0x100000dec
}}}

'''0x100000dec''' is not properly aligned. It must be '''0x100000df0'''.

Sparc cc manpage:[[BR]]
-xmemalign[=<a><b>] Controls memory alignment, <a>={1|2|4|8|16}, b={f|i|s}.[[BR]]
Accepted values for b are:[[BR]]
i Interpret access and continue execution.[[BR]]
s Raise signal SIGBUS. [[BR]]
f For variants of -xarch=v9 only. [reduced i] [[BR]]

Thanks to Rolf Grossmann for coming up with all this info and debugging, and to Andy Dougherty for correcting my wrong first analysis.

The fix for 1.0 will be a hints file update to add -xmemalign=4s to cc_flags, the goal for 2.6 will be a --64bitcompat argument to parrot to create 8-byte aligned values on 32-bit, not 4-byte as now.
",bug,new,minor,,core,trunk,low,,64bit,doughera rg@…,,,other
