Fix sparc64 bits/setjmp.h namespace (bug 21261).
sysdeps/unix/sysv/linux/sparc/bits/setjmp.h defines 64-bit __jmp_buf with a load of identifiers that are not part of any standard namespace, resulting in conform/ tests failing. This patch fixes this by moving those identifiers to the implementation namespace, so enabling the conform/ tests to pass for sparc64. Tested (compilation only) for sparc64 with build-many-glibcs.py. [BZ #21261] * sysdeps/unix/sysv/linux/sparc/bits/setjmp.h [__WORDSIZE == 64 && !_ASM] (__sparc64_jmp_buf): Use reserved names for all fields. * sysdeps/sparc/sparc64/jmpbuf-unwind.h (_JMPBUF_UNWINDS): Update for jmp_buf field renaming. (_JMPBUF_UNWINDS_ADJ): Likewise.
This commit is contained in:
parent
22b72f356d
commit
19641dbd61
|
@ -1,5 +1,13 @@
|
||||||
2017-03-18 Joseph Myers <joseph@codesourcery.com>
|
2017-03-18 Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
|
[BZ #21261]
|
||||||
|
* sysdeps/unix/sysv/linux/sparc/bits/setjmp.h
|
||||||
|
[__WORDSIZE == 64 && !_ASM] (__sparc64_jmp_buf): Use reserved
|
||||||
|
names for all fields.
|
||||||
|
* sysdeps/sparc/sparc64/jmpbuf-unwind.h (_JMPBUF_UNWINDS): Update
|
||||||
|
for jmp_buf field renaming.
|
||||||
|
(_JMPBUF_UNWINDS_ADJ): Likewise.
|
||||||
|
|
||||||
* conform/conformtest.pl: Handle xfail[cond]- in header mentioned
|
* conform/conformtest.pl: Handle xfail[cond]- in header mentioned
|
||||||
with allow-header.
|
with allow-header.
|
||||||
|
|
||||||
|
|
|
@ -23,14 +23,15 @@
|
||||||
/* Test if longjmp to JMPBUF would unwind the frame
|
/* Test if longjmp to JMPBUF would unwind the frame
|
||||||
containing a local variable at ADDRESS. */
|
containing a local variable at ADDRESS. */
|
||||||
#define _JMPBUF_UNWINDS(jmpbuf, address, demangle) \
|
#define _JMPBUF_UNWINDS(jmpbuf, address, demangle) \
|
||||||
((unsigned long int) (address) < (jmpbuf)->uc_mcontext.mc_gregs[MC_O6] + 2047)
|
((unsigned long int) (address) \
|
||||||
|
< (jmpbuf)->__uc_mcontext.__mc_gregs[MC_O6] + 2047)
|
||||||
|
|
||||||
#define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \
|
#define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \
|
||||||
_JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj)
|
_JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj)
|
||||||
|
|
||||||
#define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \
|
#define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \
|
||||||
((uintptr_t) (_address) - (_adj) \
|
((uintptr_t) (_address) - (_adj) \
|
||||||
< (uintptr_t) (_jmpbuf)[0].uc_mcontext.mc_gregs[MC_O6] + 2047 - (_adj))
|
< (uintptr_t) (_jmpbuf)[0].__uc_mcontext.__mc_gregs[MC_O6] + 2047 - (_adj))
|
||||||
|
|
||||||
/* We use the normal lobngjmp for unwinding. */
|
/* We use the normal lobngjmp for unwinding. */
|
||||||
#define __libc_unwind_longjmp(buf, val) __libc_longjmp (buf, val)
|
#define __libc_unwind_longjmp(buf, val) __libc_longjmp (buf, val)
|
||||||
|
|
|
@ -29,30 +29,30 @@
|
||||||
#ifndef _ASM
|
#ifndef _ASM
|
||||||
typedef struct __sparc64_jmp_buf
|
typedef struct __sparc64_jmp_buf
|
||||||
{
|
{
|
||||||
struct __sparc64_jmp_buf *uc_link;
|
struct __sparc64_jmp_buf *__uc_link;
|
||||||
unsigned long uc_flags;
|
unsigned long __uc_flags;
|
||||||
unsigned long uc_sigmask;
|
unsigned long __uc_sigmask;
|
||||||
struct __sparc64_jmp_buf_mcontext
|
struct __sparc64_jmp_buf_mcontext
|
||||||
{
|
{
|
||||||
unsigned long mc_gregs[19];
|
unsigned long __mc_gregs[19];
|
||||||
unsigned long mc_fp;
|
unsigned long __mc_fp;
|
||||||
unsigned long mc_i7;
|
unsigned long __mc_i7;
|
||||||
struct __sparc64_jmp_buf_fpu
|
struct __sparc64_jmp_buf_fpu
|
||||||
{
|
{
|
||||||
union
|
union
|
||||||
{
|
{
|
||||||
unsigned int sregs[32];
|
unsigned int __sregs[32];
|
||||||
unsigned long dregs[32];
|
unsigned long __dregs[32];
|
||||||
long double qregs[16];
|
long double __qregs[16];
|
||||||
} mcfpu_fpregs;
|
} __mcfpu_fpregs;
|
||||||
unsigned long mcfpu_fprs;
|
unsigned long __mcfpu_fprs;
|
||||||
unsigned long mcfpu_gsr;
|
unsigned long __mcfpu_gsr;
|
||||||
void *mcfpu_fq;
|
void *__mcfpu_fq;
|
||||||
unsigned char mcfpu_qcnt;
|
unsigned char __mcfpu_qcnt;
|
||||||
unsigned char mcfpu_qentsz;
|
unsigned char __mcfpu_qentsz;
|
||||||
unsigned char mcfpu_enab;
|
unsigned char __mcfpu_enab;
|
||||||
} mc_fpregs;
|
} __mc_fpregs;
|
||||||
} uc_mcontext;
|
} __uc_mcontext;
|
||||||
} __jmp_buf[1];
|
} __jmp_buf[1];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue