Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 17 Mar 2016 22:31:51 -0400
From:      anonymous <johnandsara2@cox.net>
To:        bugzilla-noreply@freebsd.org
Cc:        freebsd-bugs@FreeBSD.org
Subject:   Re: [Bug 207736] clang 3.8.0/powerpc's _Unwind_RaiseException code generation has messed up r31 (frame pointer) save/restore code (SEGV's can result)
Message-ID:  <56EB6897.4070804@cox.net>
In-Reply-To: <bug-207736-8@https.bugs.freebsd.org/bugzilla/>
References:  <bug-207736-8@https.bugs.freebsd.org/bugzilla/>

next in thread | previous in thread | raw e-mail | index | archive | help
bugzilla-noreply@freebsd.org wrote:
> https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=207736
> 
>             Bug ID: 207736
>            Summary: clang 3.8.0/powerpc's _Unwind_RaiseException code
>                     generation has messed up r31 (frame pointer)
>                     save/restore code (SEGV's can result)
>            Product: Base System
>            Version: 11.0-CURRENT
>           Hardware: ppc
>                 OS: Any
>             Status: New
>           Severity: Affects Only Me
>           Priority: ---
>          Component: bin
>           Assignee: freebsd-bugs@FreeBSD.org
>           Reporter: markmi@dsl-only.net
> 
> [This has been reported on llvm bugzilla: 26856.]
> 
> The below causes gdb difficulties for its stack handling: more than just
> exception handling is at issue. I just happened to notice it via exception
> handling.
> 
> Function _Unwind_RaiseException below is from a FreeBSD "buildworld" using
> clang 3.8.0.
> 
> Dump of assembler code for function _Unwind_RaiseException:
>    0x41b2ab80 <+0>:     mflr    r0
>    0x41b2ab84 <+4>:     stw     r31,-148(r1)
>    0x41b2ab88 <+8>:     stw     r30,-152(r1)
>    0x41b2ab8c <+12>:    stw     r0,4(r1)
>    0x41b2ab90 <+16>:    stwu    r1,-2992(r1)
>    0x41b2ab94 <+20>:    mr      r31,r1
> . . .
>    0x41b2abe0 <+96>:    stw     r31,2844(r31)
> (which replaces the earlier save of the old Frame pointer R31
> value with a copy of r1's current  value. Note the offset
> relationships with the r1 adjustment: -2992+2844=-148)
> . . .
>    0x41b2add0 <+592>:   lwz     r31,2844(r31)
> (This restores the r1 value that resulted from the "stwu r1,-2992(r1)" into
> R31.)
> . . .
>    0x41b2ae30 <+688>:   lwz     r31,-148(r1)
> (This restores the r1 value that resulted from the "stwu r1,-2992(r1)" into
> R31.)
> . . .
> 
> The wrong r31 value is present when _Unwind_RaiseException returns.
> 
> But before that while _Unwind_RaiseException is active the C++ exception
> handling infrastructure has been given bad r31 information for around
> _Unwind_RaiseException's frame.
> 

a little off topic but.  i almost downloaded BSD but didn't have time as 
  i was confused ...

BSD 4.3 still has "authentic compatible and fast C"

4.4 - 9.0 has GNU C, which is ok i'm a linux user, i'm used to it for 
better or worse; it's a dialect that keeps changing and causes many woes

but 9-10.0 uses C Lang - and i'm unsure if that isn't just another 
mutating dialect (ie, K&R already has issues, %100 not C to start with)

BEFORE I GO ON DISCUSSING THAT:

i go on freeBSD Forums to discuss or what: it never let's me on

does anyone know why freeBSD forums has stopped working for many people 
with their recent firefox web browsers (many are complaining) (i call 
ff-20.0 recent) ??



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?56EB6897.4070804>