From: Samuel Thibault <samuel.thibault@ens-lyon.org>
To: libc-alpha@sourceware.org
Cc: Samuel Thibault <samuel.thibault@ens-lyon.org>
Subject: [hurd,commited] hurd: Avoid more libc.so local PLTs
Date: Tue, 03 Apr 2018 00:38:00 -0000 [thread overview]
Message-ID: <20180403003817.21337-1-samuel.thibault@ens-lyon.org> (raw)
* 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.
---
ChangeLog | 12 ++++++++++++
hurd/catch-signal.c | 4 ++--
hurd/hurdfault.c | 2 +-
include/setjmp.h | 3 +++
libio/iolibio.h | 1 +
libio/ioputs.c | 1 +
setjmp/longjmp.c | 2 ++
sysdeps/mach/hurd/sigwait.c | 2 +-
8 files changed, 23 insertions(+), 4 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 9e2dfa934d..0b54ed73b5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -396,6 +396,18 @@
_hurd_fd_error_signal): Add hidden prototype.
[_HURD_FD_H_HIDDEN_DEF] (_hurd_fd_error, _hurd_fd_error_signal): Add
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.
diff --git a/hurd/catch-signal.c b/hurd/catch-signal.c
index 56ce86532d..a00ccef4fb 100644
--- a/hurd/catch-signal.c
+++ b/hurd/catch-signal.c
@@ -32,7 +32,7 @@ __hurd_catch_signal (sigset_t sigset,
instance calling hurd_catch_signal again would then dump core. */
sigjmp_buf buf;
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 =
{
@@ -121,7 +121,7 @@ hurd_safe_memmove (void *dest, const void *src, size_t nbytes)
{
jmp_buf buf;
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 =
{
diff --git a/hurd/hurdfault.c b/hurd/hurdfault.c
index 39a4522811..c42d5e739a 100644
--- a/hurd/hurdfault.c
+++ b/hurd/hurdfault.c
@@ -152,7 +152,7 @@ faulted (void)
__libc_fatal ("BUG: unexpected fault in signal thread\n");
_hurdsig_fault_preemptor.signals = 0;
- longjmp (_hurdsig_fault_env, 1);
+ __libc_longjmp (_hurdsig_fault_env, 1);
}
static char faultstack[1024];
diff --git a/include/setjmp.h b/include/setjmp.h
index 263bc64b3d..682ff4b5a5 100644
--- a/include/setjmp.h
+++ b/include/setjmp.h
@@ -24,6 +24,9 @@ extern void __libc_siglongjmp (sigjmp_buf env, int val)
extern void __libc_longjmp (sigjmp_buf env, int val)
__attribute__ ((noreturn));
+libc_hidden_proto (__libc_siglongjmp)
+libc_hidden_proto (__libc_longjmp)
+
libc_hidden_proto (_setjmp)
libc_hidden_proto (__sigsetjmp)
diff --git a/libio/iolibio.h b/libio/iolibio.h
index 69e1c0e699..6c94fe6d62 100644
--- a/libio/iolibio.h
+++ b/libio/iolibio.h
@@ -41,6 +41,7 @@ extern char* _IO_gets (char*);
extern void _IO_perror (const char*) __THROW;
extern int _IO_printf (const char*, ...);
extern int _IO_puts (const char*);
+libc_hidden_proto (_IO_puts)
extern int _IO_scanf (const char*, ...);
extern void _IO_setbuffer (FILE *, char*, size_t) __THROW;
libc_hidden_proto (_IO_setbuffer)
diff --git a/libio/ioputs.c b/libio/ioputs.c
index 0a80fb7148..c9967c3883 100644
--- a/libio/ioputs.c
+++ b/libio/ioputs.c
@@ -46,3 +46,4 @@ _IO_puts (const char *str)
}
weak_alias (_IO_puts, puts)
+libc_hidden_def (_IO_puts)
diff --git a/setjmp/longjmp.c b/setjmp/longjmp.c
index a2a7065a85..0555d6d6b7 100644
--- a/setjmp/longjmp.c
+++ b/setjmp/longjmp.c
@@ -46,4 +46,6 @@ strong_alias (__libc_siglongjmp, __libc_longjmp)
weak_alias (__libc_siglongjmp, _longjmp)
weak_alias (__libc_siglongjmp, longjmp)
weak_alias (__libc_siglongjmp, siglongjmp)
+libc_hidden_def (__libc_longjmp)
+libc_hidden_def (__libc_siglongjmp)
#endif
diff --git a/sysdeps/mach/hurd/sigwait.c b/sysdeps/mach/hurd/sigwait.c
index ce17cce895..321ab46d14 100644
--- a/sysdeps/mach/hurd/sigwait.c
+++ b/sysdeps/mach/hurd/sigwait.c
@@ -59,7 +59,7 @@ __sigwait (const sigset_t *set, int *sig)
handler (int sig)
{
assert (sig == signo);
- longjmp (buf, 1);
+ __libc_longjmp (buf, 1);
}
wait = __mach_reply_port ();
--
2.14.0
next reply other threads:[~2018-04-03 0:38 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-03 0:38 Samuel Thibault [this message]
2018-04-03 8:10 ` Andreas Schwab
2018-04-03 8:20 ` Samuel Thibault
2018-04-03 9:02 ` Stefan Liebler
2018-04-03 19:26 ` H.J. Lu
2018-04-03 20:51 ` H.J. Lu
2018-04-03 21:08 ` Samuel Thibault
2018-04-03 21:16 ` H.J. Lu
2018-04-03 21:24 ` Samuel Thibault
2018-04-03 21:41 ` H.J. Lu
2018-04-03 21:55 ` Samuel Thibault
2018-04-03 22:14 ` H.J. Lu
2018-04-03 22:18 ` Samuel Thibault
2018-04-03 22:21 ` H.J. Lu
2018-04-03 22:30 ` Samuel Thibault
2018-04-03 22:21 ` Zack Weinberg
2018-04-03 22:28 ` Samuel Thibault
2018-04-03 22:33 ` Zack Weinberg
2018-04-04 7:20 ` Andreas Schwab
2018-04-03 22:39 ` Samuel Thibault
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180403003817.21337-1-samuel.thibault@ens-lyon.org \
--to=samuel.thibault@ens-lyon.org \
--cc=libc-alpha@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).