Merge gcc 4.8.4

This commit is contained in:
Jérôme Duval
2014-12-21 12:11:47 +01:00
400 changed files with 68043 additions and 60108 deletions

View File

@@ -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.

View File

@@ -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

View File

@@ -1,3 +1,7 @@
2014-12-19 Release Manager
* GCC 4.8.4 released.
2014-05-22 Release Manager
* GCC 4.8.3 released.

View File

@@ -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;

View File

@@ -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