import glibc-2.28-101.el8.src.rpm
Signed-off-by: zhangbinchen <zhangbinchen@openanolis.org>
This commit is contained in:
commit
ba6a26df65
268 changed files with 59851 additions and 0 deletions
54
glibc-rh1410154-3.patch
Normal file
54
glibc-rh1410154-3.patch
Normal file
|
@ -0,0 +1,54 @@
|
|||
commit 2a764c6ee848dfe92cb2921ed3b14085f15d9e79
|
||||
Author: Florian Weimer <fweimer@redhat.com>
|
||||
Date: Thu Oct 31 13:23:06 2019 +0100
|
||||
|
||||
Enhance _dl_catch_exception to allow disabling exception handling
|
||||
|
||||
In some cases, it is necessary to introduce noexcept regions
|
||||
where raised dynamic loader exceptions (e.g., from lazy binding)
|
||||
are fatal, despite being nested in a code region with an active
|
||||
exception handler. This change enhances _dl_catch_exception with
|
||||
to provide such a capability. The existing function is reused,
|
||||
so that it is not necessary to introduce yet another function with
|
||||
a similar purpose.
|
||||
|
||||
Change-Id: Iec1bf642ff95a349fdde8040e9baf851ac7b8904
|
||||
|
||||
diff --git a/elf/dl-error-skeleton.c b/elf/dl-error-skeleton.c
|
||||
index d5f418ab1848f0c4..9cb002ccfed2c7b4 100644
|
||||
--- a/elf/dl-error-skeleton.c
|
||||
+++ b/elf/dl-error-skeleton.c
|
||||
@@ -173,6 +173,18 @@ int
|
||||
_dl_catch_exception (struct dl_exception *exception,
|
||||
void (*operate) (void *), void *args)
|
||||
{
|
||||
+ /* If exception is NULL, temporarily disable exception handling.
|
||||
+ Exceptions during operate (args) are fatal. */
|
||||
+ if (exception == NULL)
|
||||
+ {
|
||||
+ struct catch *const old = catch_hook;
|
||||
+ catch_hook = NULL;
|
||||
+ operate (args);
|
||||
+ /* If we get here, the operation was successful. */
|
||||
+ catch_hook = old;
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
/* We need not handle `receiver' since setting a `catch' is handled
|
||||
before it. */
|
||||
|
||||
diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h
|
||||
index 95dc87519b80e0ec..cc2484033fe0d902 100644
|
||||
--- a/sysdeps/generic/ldsodefs.h
|
||||
+++ b/sysdeps/generic/ldsodefs.h
|
||||
@@ -852,7 +852,9 @@ libc_hidden_proto (_dl_catch_error)
|
||||
|
||||
/* Call OPERATE (ARGS). If no error occurs, set *EXCEPTION to zero.
|
||||
Otherwise, store a copy of the raised exception in *EXCEPTION,
|
||||
- which has to be freed by _dl_exception_free. */
|
||||
+ which has to be freed by _dl_exception_free. As a special case, if
|
||||
+ EXCEPTION is null, call OPERATE (ARGS) with exception handling
|
||||
+ disabled (so that exceptions are fatal). */
|
||||
int _dl_catch_exception (struct dl_exception *exception,
|
||||
void (*operate) (void *), void *args);
|
||||
libc_hidden_proto (_dl_catch_exception)
|
Loading…
Add table
Add a link
Reference in a new issue