<html>
<head>
<base href="https://bugs.freedesktop.org/" />
</head>
<body>
<p>
<div>
<b><a class="bz_bug_link
bz_status_NEW "
title="NEW --- - [any/all(?) cards below nv50(?)] libdrm built with gcc4.8 causes crashes/lockups during normal operation, and resume from disk/memory"
href="https://bugs.freedesktop.org/show_bug.cgi?id=71116#c22">Comment # 22</a>
on <a class="bz_bug_link
bz_status_NEW "
title="NEW --- - [any/all(?) cards below nv50(?)] libdrm built with gcc4.8 causes crashes/lockups during normal operation, and resume from disk/memory"
href="https://bugs.freedesktop.org/show_bug.cgi?id=71116">bug 71116</a>
from <span class="vcard"><a class="email" href="mailto:bugs@mblankhorst.nl" title="Maarten Lankhorst <bugs@mblankhorst.nl>"> <span class="fn">Maarten Lankhorst</span></a>
</span></b>
<pre>Oops, so gcc is broken here after all, look at this..
0000000000003860 <nouveau_pushbuf_reloc>:
3860: 53 push %rbx
3861: 48 8b 5f 30 mov 0x30(%rdi),%rbx
3865: 48 8d 43 04 lea 0x4(%rbx),%rax
3869: 48 89 47 30 mov %rax,0x30(%rdi)
386d: e8 3e ea ff ff callq 22b0 <pushbuf_krel>
3872: 89 03 mov %eax,(%rbx)
3874: 5b pop %rbx
3875: c3 retq
Source:
void
nouveau_pushbuf_reloc(struct nouveau_pushbuf *push, struct nouveau_bo *bo,
uint32_t data, uint32_t flags, uint32_t vor, uint32_t tor)
{
*push->cur++ = pushbuf_krel(push, bo, data, flags, vor, tor);
}
gcc-4.8 evaluates it as:
void
nouveau_pushbuf_reloc(struct nouveau_pushbuf *push, struct nouveau_bo *bo,
uint32_t data, uint32_t flags, uint32_t vor, uint32_t tor)
{
push->cur++;
*push->cur[-1] = pushbuf_krel(push, bo, data, flags, vor, tor);
}</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are the assignee for the bug.</li>
</ul>
</body>
</html>