mirror of
https://review.haiku-os.org/buildtools
synced 2026-02-04 07:53:14 +01:00
Merge gcc 4.8.4
This commit is contained in:
@@ -1,3 +1,27 @@
|
||||
2014-12-19 Release Manager
|
||||
|
||||
* GCC 4.8.4 released.
|
||||
|
||||
2014-12-09 Oleg Endo <olegendo@gcc.gnu.org>
|
||||
|
||||
Backport from mainline
|
||||
2014-11-30 Oleg Endo <olegendo@gcc.gnu.org>
|
||||
|
||||
PR target/55351
|
||||
* config/sh/lib1funcs.S: Check value of __SHMEDIA__ instead of checking
|
||||
whether it's defined.
|
||||
|
||||
2014-10-26 John David Anglin <danglin@gcc.gnu.org>
|
||||
|
||||
* config/pa/linux-unwind.h (pa32_read_access_ok): New function.
|
||||
(pa32_fallback_frame_state): Use pa32_read_access_ok to check if
|
||||
memory read accesses are ok.
|
||||
|
||||
2014-09-18 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* config/i386/sfp-machine.h (FP_TRAPPING_EXCEPTIONS): Treat clear
|
||||
bits not set bits as indicating trapping exceptions.
|
||||
|
||||
2014-05-22 Release Manager
|
||||
|
||||
* GCC 4.8.3 released.
|
||||
|
||||
@@ -59,7 +59,7 @@ void __sfp_handle_exceptions (int);
|
||||
__sfp_handle_exceptions (_fex); \
|
||||
} while (0);
|
||||
|
||||
#define FP_TRAPPING_EXCEPTIONS ((_fcw >> FP_EX_SHIFT) & FP_EX_ALL)
|
||||
#define FP_TRAPPING_EXCEPTIONS ((~_fcw >> FP_EX_SHIFT) & FP_EX_ALL)
|
||||
|
||||
#define FP_ROUNDMODE (_fcw & FP_RND_MASK)
|
||||
#endif
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
2014-12-19 Release Manager
|
||||
|
||||
* GCC 4.8.4 released.
|
||||
|
||||
2014-05-22 Release Manager
|
||||
|
||||
* GCC 4.8.3 released.
|
||||
|
||||
@@ -32,6 +32,17 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
#include <signal.h>
|
||||
#include <sys/ucontext.h>
|
||||
|
||||
/* Return TRUE if read access to *P is allowed. */
|
||||
|
||||
static inline long
|
||||
pa32_read_access_ok (void *p)
|
||||
{
|
||||
long ret;
|
||||
|
||||
__asm__ ("proberi (%1),3,%0" : "=r" (ret) : "r" (p) :);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Unfortunately, because of various bugs and changes to the kernel,
|
||||
we have several cases to deal with.
|
||||
|
||||
@@ -48,7 +59,12 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
tell us how to locate the sigcontext structure.
|
||||
|
||||
Note that with a 2.4 64-bit kernel, the signal context is not properly
|
||||
passed back to userspace so the unwind will not work correctly. */
|
||||
passed back to userspace so the unwind will not work correctly.
|
||||
|
||||
There is also a bug in various glibc versions. The (CONTEXT)->ra
|
||||
for the outermost frame is not marked as undefined, so we need to
|
||||
check whether read access is allowed for all the accesses used in
|
||||
searching for the signal trampoline. */
|
||||
|
||||
#define MD_FALLBACK_FRAME_STATE_FOR pa32_fallback_frame_state
|
||||
|
||||
@@ -73,14 +89,17 @@ pa32_fallback_frame_state (struct _Unwind_Context *context,
|
||||
e4008200 be,l 0x100(%sr2, %r0), %sr0, %r31
|
||||
08000240 nop */
|
||||
|
||||
if (pc[0] == 0x34190000 || pc[0] == 0x34190002)
|
||||
if (pa32_read_access_ok (pc)
|
||||
&& (pc[0] == 0x34190000 || pc[0] == 0x34190002))
|
||||
off = 4*4;
|
||||
else if (pc[4] == 0x34190000 || pc[4] == 0x34190002)
|
||||
else if (pa32_read_access_ok (&pc[4])
|
||||
&& (pc[4] == 0x34190000 || pc[4] == 0x34190002))
|
||||
{
|
||||
pc += 4;
|
||||
off = 10 * 4;
|
||||
}
|
||||
else if (pc[5] == 0x34190000 || pc[5] == 0x34190002)
|
||||
else if (pa32_read_access_ok (&pc[5])
|
||||
&& (pc[5] == 0x34190000 || pc[5] == 0x34190002))
|
||||
{
|
||||
pc += 5;
|
||||
off = 10 * 4;
|
||||
@@ -96,13 +115,16 @@ pa32_fallback_frame_state (struct _Unwind_Context *context,
|
||||
word boundary and we can then determine the frame offset. */
|
||||
sp = (unsigned long)context->ra;
|
||||
pc = (unsigned int *)sp;
|
||||
if ((pc[0] == 0x34190000 || pc[0] == 0x34190002) && (sp & 4))
|
||||
if ((sp & 4)
|
||||
&& pa32_read_access_ok (pc)
|
||||
&& (pc[0] == 0x34190000 || pc[0] == 0x34190002))
|
||||
off = 5 * 4;
|
||||
else
|
||||
return _URC_END_OF_STACK;
|
||||
}
|
||||
|
||||
if (pc[1] != 0x3414015a
|
||||
if (!pa32_read_access_ok (&pc[3])
|
||||
|| pc[1] != 0x3414015a
|
||||
|| pc[2] != 0xe4008200
|
||||
|| pc[3] != 0x08000240)
|
||||
return _URC_END_OF_STACK;
|
||||
|
||||
@@ -1248,7 +1248,7 @@ GLOBAL(sdivsi3_2):
|
||||
#endif
|
||||
ENDFUNC(GLOBAL(sdivsi3_2))
|
||||
#endif
|
||||
#elif defined __SHMEDIA__
|
||||
#elif __SHMEDIA__
|
||||
/* m5compact-nofpu */
|
||||
// clobbered: r18,r19,r20,r21,r25,tr0,tr1,tr2
|
||||
.mode SHmedia
|
||||
@@ -1598,7 +1598,7 @@ GLOBAL(udivsi3):
|
||||
add.l r18,r25,r0
|
||||
blink tr0,r63
|
||||
#endif
|
||||
#elif defined (__SHMEDIA__)
|
||||
#elif __SHMEDIA__
|
||||
/* m5compact-nofpu - more emphasis on code size than on speed, but don't
|
||||
ignore speed altogether - div1 needs 9 cycles, subc 7 and rotcl 4.
|
||||
So use a short shmedia loop. */
|
||||
@@ -1622,7 +1622,7 @@ LOCAL(udivsi3_dontsub):
|
||||
bnei r25,-32,tr1
|
||||
add.l r20,r63,r0
|
||||
blink tr2,r63
|
||||
#else /* ! defined (__SHMEDIA__) */
|
||||
#else /* ! __SHMEDIA__ */
|
||||
LOCAL(div8):
|
||||
div1 r5,r4
|
||||
LOCAL(div7):
|
||||
@@ -1688,7 +1688,7 @@ LOCAL(large_divisor):
|
||||
#endif /* L_udivsi3 */
|
||||
|
||||
#ifdef L_udivdi3
|
||||
#ifdef __SHMEDIA__
|
||||
#if __SHMEDIA__
|
||||
.mode SHmedia
|
||||
.section .text..SHmedia32,"ax"
|
||||
.align 2
|
||||
@@ -1816,7 +1816,7 @@ LOCAL(no_lo_adj):
|
||||
#endif /* L_udivdi3 */
|
||||
|
||||
#ifdef L_divdi3
|
||||
#ifdef __SHMEDIA__
|
||||
#if __SHMEDIA__
|
||||
.mode SHmedia
|
||||
.section .text..SHmedia32,"ax"
|
||||
.align 2
|
||||
@@ -1840,7 +1840,7 @@ GLOBAL(divdi3):
|
||||
#endif /* L_divdi3 */
|
||||
|
||||
#ifdef L_umoddi3
|
||||
#ifdef __SHMEDIA__
|
||||
#if __SHMEDIA__
|
||||
.mode SHmedia
|
||||
.section .text..SHmedia32,"ax"
|
||||
.align 2
|
||||
@@ -1969,7 +1969,7 @@ LOCAL(no_lo_adj):
|
||||
#endif /* L_umoddi3 */
|
||||
|
||||
#ifdef L_moddi3
|
||||
#ifdef __SHMEDIA__
|
||||
#if __SHMEDIA__
|
||||
.mode SHmedia
|
||||
.section .text..SHmedia32,"ax"
|
||||
.align 2
|
||||
@@ -3057,7 +3057,7 @@ GLOBAL(GCC_pop_shmedia_regs_nofpu):
|
||||
|
||||
#ifdef L_div_table
|
||||
#if __SH5__
|
||||
#if defined(__pic__) && defined(__SHMEDIA__)
|
||||
#if defined(__pic__) && __SHMEDIA__
|
||||
.global GLOBAL(sdivsi3)
|
||||
FUNC(GLOBAL(sdivsi3))
|
||||
#if __SH5__ == 32
|
||||
@@ -3130,7 +3130,7 @@ Defects for bias -330:
|
||||
#else /* ! __pic__ || ! __SHMEDIA__ */
|
||||
.section .rodata
|
||||
#endif /* __pic__ */
|
||||
#if defined(TEXT_DATA_BUG) && defined(__pic__) && defined(__SHMEDIA__)
|
||||
#if defined(TEXT_DATA_BUG) && defined(__pic__) && __SHMEDIA__
|
||||
.balign 2
|
||||
.type Local_div_table,@object
|
||||
.size Local_div_table,128
|
||||
|
||||
Reference in New Issue
Block a user