arch/tile: avoid ISO namespace pollution with <asm/sigcontext.h>
<asm/sigcontext.h> is used by glibc's <bits/sigcontext.h> from <signal.h>, which means that it can't clutter the namespace with random symbols or #defines. However, we use <arch/abi.h> to get a suitable type to hold a machine register. This change makes <arch/abi.h> safe to use in this kind of context if __need_int_reg_t is defined prior to including the file; in that case, it only defines a few symbols that are safe in the ISO namespace (prefixed with double underscores). <asm/sigcontext.h> then uses the __uint_reg_t type instead of the normal uint_reg_t. Signed-off-by: Chris Metcalf <cmetcalf@tilera.com>
This commit is contained in:
@ -15,6 +15,8 @@
|
||||
#ifndef _ASM_TILE_SIGCONTEXT_H
|
||||
#define _ASM_TILE_SIGCONTEXT_H
|
||||
|
||||
/* Don't pollute the namespace since <signal.h> includes this file. */
|
||||
#define __need_int_reg_t
|
||||
#include <arch/abi.h>
|
||||
|
||||
/*
|
||||
@ -22,14 +24,14 @@
|
||||
* but is simplified since we know the fault is from userspace.
|
||||
*/
|
||||
struct sigcontext {
|
||||
uint_reg_t gregs[53]; /* General-purpose registers. */
|
||||
uint_reg_t tp; /* Aliases gregs[TREG_TP]. */
|
||||
uint_reg_t sp; /* Aliases gregs[TREG_SP]. */
|
||||
uint_reg_t lr; /* Aliases gregs[TREG_LR]. */
|
||||
uint_reg_t pc; /* Program counter. */
|
||||
uint_reg_t ics; /* In Interrupt Critical Section? */
|
||||
uint_reg_t faultnum; /* Fault number. */
|
||||
uint_reg_t pad[5];
|
||||
__uint_reg_t gregs[53]; /* General-purpose registers. */
|
||||
__uint_reg_t tp; /* Aliases gregs[TREG_TP]. */
|
||||
__uint_reg_t sp; /* Aliases gregs[TREG_SP]. */
|
||||
__uint_reg_t lr; /* Aliases gregs[TREG_LR]. */
|
||||
__uint_reg_t pc; /* Program counter. */
|
||||
__uint_reg_t ics; /* In Interrupt Critical Section? */
|
||||
__uint_reg_t faultnum; /* Fault number. */
|
||||
__uint_reg_t pad[5];
|
||||
};
|
||||
|
||||
#endif /* _ASM_TILE_SIGCONTEXT_H */
|
||||
|
Reference in New Issue
Block a user