mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-23 03:10:05 +00:00
hurd: Avoid more libc.so local PLTs
* hurd/catch-signal.c (__hurd_catch_signal): Call __libc_siglongjmp instead if siglongjmp. (hurd_safe_memmove): Call __libc_longjmp instead of longjmp. * hurd/hurdfault.c (faulted): Call __libc_longjmp instead of longjmp. * include/setjmp.h (__libc_siglongjmp, __libc_longjmp): New hidden prototypes. * libio/iolibio.h (_IO_puts): New hidden prototype. * libio/ioputs.c (_IO_puts): New hidden def. * setjmp/longjmp.c (__libc_longjmp, __libc_siglongjmp): New hidden defs. * sysdeps/mach/hurd/sigwait.c (__sigwait): Call __libc_longjmp instead of longjmp.
This commit is contained in:
parent
62108dbf61
commit
82dbf555a4
12
ChangeLog
12
ChangeLog
@ -396,6 +396,18 @@
|
|||||||
_hurd_fd_error_signal): Add hidden prototype.
|
_hurd_fd_error_signal): Add hidden prototype.
|
||||||
[_HURD_FD_H_HIDDEN_DEF] (_hurd_fd_error, _hurd_fd_error_signal): Add
|
[_HURD_FD_H_HIDDEN_DEF] (_hurd_fd_error, _hurd_fd_error_signal): Add
|
||||||
hidden def.
|
hidden def.
|
||||||
|
* hurd/catch-signal.c (__hurd_catch_signal): Call __libc_siglongjmp
|
||||||
|
instead if siglongjmp.
|
||||||
|
(hurd_safe_memmove): Call __libc_longjmp instead of longjmp.
|
||||||
|
* hurd/hurdfault.c (faulted): Call __libc_longjmp instead of longjmp.
|
||||||
|
* include/setjmp.h (__libc_siglongjmp, __libc_longjmp): New hidden
|
||||||
|
prototypes.
|
||||||
|
* libio/iolibio.h (_IO_puts): New hidden prototype.
|
||||||
|
* libio/ioputs.c (_IO_puts): New hidden def.
|
||||||
|
* setjmp/longjmp.c (__libc_longjmp, __libc_siglongjmp): New hidden
|
||||||
|
defs.
|
||||||
|
* sysdeps/mach/hurd/sigwait.c (__sigwait): Call __libc_longjmp instead
|
||||||
|
of longjmp.
|
||||||
|
|
||||||
* sysdeps/mach/hurd/localplt.data: New file.
|
* sysdeps/mach/hurd/localplt.data: New file.
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ __hurd_catch_signal (sigset_t sigset,
|
|||||||
instance calling hurd_catch_signal again would then dump core. */
|
instance calling hurd_catch_signal again would then dump core. */
|
||||||
sigjmp_buf buf;
|
sigjmp_buf buf;
|
||||||
void throw (int signo, long int sigcode, struct sigcontext *scp)
|
void throw (int signo, long int sigcode, struct sigcontext *scp)
|
||||||
{ siglongjmp (buf, scp->sc_error ?: EGRATUITOUS); }
|
{ __libc_siglongjmp (buf, scp->sc_error ?: EGRATUITOUS); }
|
||||||
|
|
||||||
struct hurd_signal_preemptor preemptor =
|
struct hurd_signal_preemptor preemptor =
|
||||||
{
|
{
|
||||||
@ -121,7 +121,7 @@ hurd_safe_memmove (void *dest, const void *src, size_t nbytes)
|
|||||||
{
|
{
|
||||||
jmp_buf buf;
|
jmp_buf buf;
|
||||||
void throw (int signo, long int sigcode, struct sigcontext *scp)
|
void throw (int signo, long int sigcode, struct sigcontext *scp)
|
||||||
{ longjmp (buf, scp->sc_error ?: EGRATUITOUS); }
|
{ __libc_longjmp (buf, scp->sc_error ?: EGRATUITOUS); }
|
||||||
|
|
||||||
struct hurd_signal_preemptor src_preemptor =
|
struct hurd_signal_preemptor src_preemptor =
|
||||||
{
|
{
|
||||||
|
@ -152,7 +152,7 @@ faulted (void)
|
|||||||
__libc_fatal ("BUG: unexpected fault in signal thread\n");
|
__libc_fatal ("BUG: unexpected fault in signal thread\n");
|
||||||
|
|
||||||
_hurdsig_fault_preemptor.signals = 0;
|
_hurdsig_fault_preemptor.signals = 0;
|
||||||
longjmp (_hurdsig_fault_env, 1);
|
__libc_longjmp (_hurdsig_fault_env, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
static char faultstack[1024];
|
static char faultstack[1024];
|
||||||
|
@ -24,6 +24,9 @@ extern void __libc_siglongjmp (sigjmp_buf env, int val)
|
|||||||
extern void __libc_longjmp (sigjmp_buf env, int val)
|
extern void __libc_longjmp (sigjmp_buf env, int val)
|
||||||
__attribute__ ((noreturn));
|
__attribute__ ((noreturn));
|
||||||
|
|
||||||
|
libc_hidden_proto (__libc_siglongjmp)
|
||||||
|
libc_hidden_proto (__libc_longjmp)
|
||||||
|
|
||||||
libc_hidden_proto (_setjmp)
|
libc_hidden_proto (_setjmp)
|
||||||
libc_hidden_proto (__sigsetjmp)
|
libc_hidden_proto (__sigsetjmp)
|
||||||
|
|
||||||
|
@ -41,6 +41,7 @@ extern char* _IO_gets (char*);
|
|||||||
extern void _IO_perror (const char*) __THROW;
|
extern void _IO_perror (const char*) __THROW;
|
||||||
extern int _IO_printf (const char*, ...);
|
extern int _IO_printf (const char*, ...);
|
||||||
extern int _IO_puts (const char*);
|
extern int _IO_puts (const char*);
|
||||||
|
libc_hidden_proto (_IO_puts)
|
||||||
extern int _IO_scanf (const char*, ...);
|
extern int _IO_scanf (const char*, ...);
|
||||||
extern void _IO_setbuffer (FILE *, char*, size_t) __THROW;
|
extern void _IO_setbuffer (FILE *, char*, size_t) __THROW;
|
||||||
libc_hidden_proto (_IO_setbuffer)
|
libc_hidden_proto (_IO_setbuffer)
|
||||||
|
@ -46,3 +46,4 @@ _IO_puts (const char *str)
|
|||||||
}
|
}
|
||||||
|
|
||||||
weak_alias (_IO_puts, puts)
|
weak_alias (_IO_puts, puts)
|
||||||
|
libc_hidden_def (_IO_puts)
|
||||||
|
@ -46,4 +46,6 @@ strong_alias (__libc_siglongjmp, __libc_longjmp)
|
|||||||
weak_alias (__libc_siglongjmp, _longjmp)
|
weak_alias (__libc_siglongjmp, _longjmp)
|
||||||
weak_alias (__libc_siglongjmp, longjmp)
|
weak_alias (__libc_siglongjmp, longjmp)
|
||||||
weak_alias (__libc_siglongjmp, siglongjmp)
|
weak_alias (__libc_siglongjmp, siglongjmp)
|
||||||
|
libc_hidden_def (__libc_longjmp)
|
||||||
|
libc_hidden_def (__libc_siglongjmp)
|
||||||
#endif
|
#endif
|
||||||
|
@ -59,7 +59,7 @@ __sigwait (const sigset_t *set, int *sig)
|
|||||||
handler (int sig)
|
handler (int sig)
|
||||||
{
|
{
|
||||||
assert (sig == signo);
|
assert (sig == signo);
|
||||||
longjmp (buf, 1);
|
__libc_longjmp (buf, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
wait = __mach_reply_port ();
|
wait = __mach_reply_port ();
|
||||||
|
Loading…
Reference in New Issue
Block a user