re PR bootstrap/6525 (libjava won't build on Red Hat Linux 6.2/sparc)
2002-05-02 David S. Miller <davem@redhat.com> PR bootstrap/6525 * include/dwarf2-signal.h (INIT_SEGV, INIT_FPE): Don't use __libc_sigaction on Sparc. From-SVN: r53055
This commit is contained in:
parent
1b6763cfb5
commit
fd84ba84a7
2 changed files with 94 additions and 2 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
2002-05-02 David S. Miller <davem@redhat.com>
|
||||||
|
|
||||||
|
PR bootstrap/6525
|
||||||
|
* include/dwarf2-signal.h (INIT_SEGV, INIT_FPE): Don't use
|
||||||
|
__libc_sigaction on Sparc.
|
||||||
|
|
||||||
2002-05-02 Jerome Marc <marcjero@yahoo.com>
|
2002-05-02 Jerome Marc <marcjero@yahoo.com>
|
||||||
|
|
||||||
* java/net/natPlainSocketImpl.cc: Include sys/ioctl.h and
|
* java/net/natPlainSocketImpl.cc: Include sys/ioctl.h and
|
||||||
|
|
|
@ -122,7 +122,93 @@ do \
|
||||||
while (0)
|
while (0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !(defined(__ia64__) || defined(__sparc__))
|
#if defined(__sparc__)
|
||||||
|
#if defined(__arch64__)
|
||||||
|
extern "C" {
|
||||||
|
static void __rt_sigreturn_stub(void)
|
||||||
|
{
|
||||||
|
__asm__("mov %0, %%g1\n\t"
|
||||||
|
"ta 0x6d\n\t"
|
||||||
|
: /* no outputs */
|
||||||
|
: "i" (__NR_rt_sigreturn));
|
||||||
|
}
|
||||||
|
struct kernel_sigaction
|
||||||
|
{
|
||||||
|
void (*k_sa_sigaction)(int,siginfo_t *,void *);
|
||||||
|
unsigned long k_sa_flags;
|
||||||
|
void (*k_sa_restorer)(void);
|
||||||
|
sigset_t k_sa_mask;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
#define INIT_SEGV \
|
||||||
|
do \
|
||||||
|
{ \
|
||||||
|
nullp = new java::lang::NullPointerException (); \
|
||||||
|
struct kernel_sigaction act; \
|
||||||
|
unsigned long stub = ((unsigned long)&__rt_sigreturn_stub); \
|
||||||
|
act.k_sa_sigaction = _Jv_catch_segv; \
|
||||||
|
sigemptyset (&act.k_sa_mask); \
|
||||||
|
act.k_sa_flags = SA_SIGINFO; \
|
||||||
|
act.k_sa_restorer = NULL; \
|
||||||
|
syscall (SYS_rt_sigaction, SIGSEGV, &act, NULL, \
|
||||||
|
stub - 8, _NSIG / 8); \
|
||||||
|
} \
|
||||||
|
while (0)
|
||||||
|
|
||||||
|
#define INIT_FPE \
|
||||||
|
do \
|
||||||
|
{ \
|
||||||
|
arithexception = new java::lang::ArithmeticException \
|
||||||
|
(JvNewStringLatin1 ("/ by zero")); \
|
||||||
|
struct kernel_sigaction act; \
|
||||||
|
unsigned long stub = ((unsigned long)&__rt_sigreturn_stub); \
|
||||||
|
act.k_sa_sigaction = _Jv_catch_fpe; \
|
||||||
|
sigemptyset (&act.k_sa_mask); \
|
||||||
|
act.k_sa_flags = SA_SIGINFO; \
|
||||||
|
act.k_sa_restorer = NULL; \
|
||||||
|
syscall (SYS_rt_sigaction, SIGFPE, &act, NULL, \
|
||||||
|
stub - 8, _NSIG / 8); \
|
||||||
|
} \
|
||||||
|
while (0)
|
||||||
|
#else /* __arch64__ */
|
||||||
|
|
||||||
|
extern "C" {
|
||||||
|
struct kernel_sigaction
|
||||||
|
{
|
||||||
|
void (*k_sa_sigaction)(int,siginfo_t *,void *);
|
||||||
|
unsigned long k_sa_mask, k_sa_flags;
|
||||||
|
void (*k_sa_restorer)(void);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
#define INIT_SEGV \
|
||||||
|
do \
|
||||||
|
{ \
|
||||||
|
struct kernel_sigaction act; \
|
||||||
|
nullp = new java::lang::NullPointerException (); \
|
||||||
|
act.k_sa_sigaction = _Jv_catch_segv; \
|
||||||
|
act.k_sa_mask = 0; \
|
||||||
|
act.k_sa_flags = SA_SIGINFO; \
|
||||||
|
act.k_sa_restorer = NULL; \
|
||||||
|
syscall (SYS_sigaction, -SIGSEGV, &act, NULL); \
|
||||||
|
} \
|
||||||
|
while (0)
|
||||||
|
|
||||||
|
#define INIT_FPE \
|
||||||
|
do \
|
||||||
|
{ \
|
||||||
|
arithexception = new java::lang::ArithmeticException \
|
||||||
|
(JvNewStringLatin1 ("/ by zero")); \
|
||||||
|
struct kernel_sigaction act; \
|
||||||
|
act.k_sa_sigaction = _Jv_catch_fpe; \
|
||||||
|
act.k_sa_mask = 0; \
|
||||||
|
act.k_sa_flags = SA_SIGINFO; \
|
||||||
|
act.k_sa_restorer = NULL; \
|
||||||
|
syscall (SYS_sigaction, -SIGFPE, &act, NULL); \
|
||||||
|
} \
|
||||||
|
while (0)
|
||||||
|
#endif
|
||||||
|
#elif !defined(__ia64__)
|
||||||
#define INIT_SEGV \
|
#define INIT_SEGV \
|
||||||
do \
|
do \
|
||||||
{ \
|
{ \
|
||||||
|
@ -155,7 +241,7 @@ while (0)
|
||||||
* go away once all systems have pthreads libraries that are
|
* go away once all systems have pthreads libraries that are
|
||||||
* compiled with full unwind info. */
|
* compiled with full unwind info. */
|
||||||
|
|
||||||
#else /* __ia64__ || __sparc__ */
|
#else /* __ia64__ */
|
||||||
|
|
||||||
// FIXME: We shouldn't be using libc_sigaction here, since it should
|
// FIXME: We shouldn't be using libc_sigaction here, since it should
|
||||||
// be glibc private. But using syscall here would mean translating to
|
// be glibc private. But using syscall here would mean translating to
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue