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>
|
||||
|
||||
[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
|
||||
with allow-header.
|
||||
|
||||
|
|
|
@ -22,15 +22,16 @@
|
|||
|
||||
/* Test if longjmp to JMPBUF would unwind the frame
|
||||
containing a local variable at ADDRESS. */
|
||||
#define _JMPBUF_UNWINDS(jmpbuf, address, demangle) \
|
||||
((unsigned long int) (address) < (jmpbuf)->uc_mcontext.mc_gregs[MC_O6] + 2047)
|
||||
#define _JMPBUF_UNWINDS(jmpbuf, address, demangle) \
|
||||
((unsigned long int) (address) \
|
||||
< (jmpbuf)->__uc_mcontext.__mc_gregs[MC_O6] + 2047)
|
||||
|
||||
#define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \
|
||||
_JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj)
|
||||
|
||||
#define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _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. */
|
||||
#define __libc_unwind_longjmp(buf, val) __libc_longjmp (buf, val)
|
||||
|
|
|
@ -29,30 +29,30 @@
|
|||
#ifndef _ASM
|
||||
typedef struct __sparc64_jmp_buf
|
||||
{
|
||||
struct __sparc64_jmp_buf *uc_link;
|
||||
unsigned long uc_flags;
|
||||
unsigned long uc_sigmask;
|
||||
struct __sparc64_jmp_buf *__uc_link;
|
||||
unsigned long __uc_flags;
|
||||
unsigned long __uc_sigmask;
|
||||
struct __sparc64_jmp_buf_mcontext
|
||||
{
|
||||
unsigned long mc_gregs[19];
|
||||
unsigned long mc_fp;
|
||||
unsigned long mc_i7;
|
||||
unsigned long __mc_gregs[19];
|
||||
unsigned long __mc_fp;
|
||||
unsigned long __mc_i7;
|
||||
struct __sparc64_jmp_buf_fpu
|
||||
{
|
||||
union
|
||||
{
|
||||
unsigned int sregs[32];
|
||||
unsigned long dregs[32];
|
||||
long double qregs[16];
|
||||
} mcfpu_fpregs;
|
||||
unsigned long mcfpu_fprs;
|
||||
unsigned long mcfpu_gsr;
|
||||
void *mcfpu_fq;
|
||||
unsigned char mcfpu_qcnt;
|
||||
unsigned char mcfpu_qentsz;
|
||||
unsigned char mcfpu_enab;
|
||||
} mc_fpregs;
|
||||
} uc_mcontext;
|
||||
unsigned int __sregs[32];
|
||||
unsigned long __dregs[32];
|
||||
long double __qregs[16];
|
||||
} __mcfpu_fpregs;
|
||||
unsigned long __mcfpu_fprs;
|
||||
unsigned long __mcfpu_gsr;
|
||||
void *__mcfpu_fq;
|
||||
unsigned char __mcfpu_qcnt;
|
||||
unsigned char __mcfpu_qentsz;
|
||||
unsigned char __mcfpu_enab;
|
||||
} __mc_fpregs;
|
||||
} __uc_mcontext;
|
||||
} __jmp_buf[1];
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Reference in New Issue