update to glibc-2.28-225.el8
Signed-off-by: anolis-bot <sam.zyc@alibaba-inc.com>
This commit is contained in:
parent
644b7d9a41
commit
63c96efbaa
176 changed files with 35958 additions and 17585 deletions
98
glibc-rh2109510-6.patch
Normal file
98
glibc-rh2109510-6.patch
Normal file
|
@ -0,0 +1,98 @@
|
|||
Partial backport of:
|
||||
|
||||
commit cb7be1590e9b18e272e72eb4e910a7ad06a53bd0
|
||||
Author: Joseph Myers <joseph@codesourcery.com>
|
||||
Date: Mon Dec 10 22:56:59 2018 +0000
|
||||
|
||||
Use gen-as-const.py to process .pysym files.
|
||||
|
||||
This patch eliminates the gen-py-const.awk variant of gen-as-const,
|
||||
switching to use of gnu-as-const.py (with a new --python option) to
|
||||
process .pysym files (i.e., to generate nptl_lock_constants.py), as
|
||||
the syntax of those files is identical to that of .sym files.
|
||||
|
||||
Note that the generated nptl_lock_constants.py is *not* identical to
|
||||
the version generated by the awk script. Apart from the trivial
|
||||
changes (comment referencing the new script, and output being sorted),
|
||||
the constant FUTEX_WAITERS, PTHREAD_MUTEXATTR_FLAG_BITS,
|
||||
PTHREAD_MUTEXATTR_FLAG_PSHARED and PTHREAD_MUTEX_PRIO_CEILING_MASK are
|
||||
now output as positive rather than negative constants (on x86_64
|
||||
anyway; maybe not necessarily on 32-bit systems):
|
||||
|
||||
< FUTEX_WAITERS = -2147483648
|
||||
---
|
||||
> FUTEX_WAITERS = 2147483648
|
||||
|
||||
< PTHREAD_MUTEXATTR_FLAG_BITS = -251662336
|
||||
< PTHREAD_MUTEXATTR_FLAG_PSHARED = -2147483648
|
||||
---
|
||||
> PTHREAD_MUTEXATTR_FLAG_BITS = 4043304960
|
||||
> PTHREAD_MUTEXATTR_FLAG_PSHARED = 2147483648
|
||||
|
||||
< PTHREAD_MUTEX_PRIO_CEILING_MASK = -524288
|
||||
---
|
||||
> PTHREAD_MUTEX_PRIO_CEILING_MASK = 4294443008
|
||||
|
||||
This is because gen-as-const has a cast of the constant value to long
|
||||
int, which gen-py-const lacks.
|
||||
|
||||
I think the positive values are more logically correct, since the
|
||||
constants in question are in fact unsigned in C. But to reliably
|
||||
produce gen-as-const.py output for constants that always (in C and
|
||||
Python) reflects the signedness of values with the high bit of "long
|
||||
int" set would mean more complicated logic needs to be used in
|
||||
computing values.
|
||||
|
||||
The more correct positive values by themselves produce a failure of
|
||||
nptl/test-mutexattr-printers, because masking with
|
||||
~PTHREAD_MUTEXATTR_FLAG_BITS & ~PTHREAD_MUTEX_NO_ELISION_NP now leaves
|
||||
a bit -1 << 32 in the Python value, resulting in a KeyError exception.
|
||||
To avoid that, places masking with ~ of one of the constants in
|
||||
question are changed to mask with 0xffffffff as well (this reflects
|
||||
how ~ in Python applies to an infinite-precision integer whereas ~ in
|
||||
C does not do any promotions beyond the width of int).
|
||||
|
||||
Tested for x86_64.
|
||||
|
||||
* scripts/gen-as-const.py (main): Handle --python option.
|
||||
* scripts/gen-py-const.awk: Remove.
|
||||
* Makerules (py-const-script): Use gen-as-const.py.
|
||||
($(py-const)): Likewise.
|
||||
* nptl/nptl-printers.py (MutexPrinter.read_status_no_robust): Mask
|
||||
with 0xffffffff together with ~(PTHREAD_MUTEX_PRIO_CEILING_MASK).
|
||||
(MutexAttributesPrinter.read_values): Mask with 0xffffffff
|
||||
together with ~PTHREAD_MUTEXATTR_FLAG_BITS and
|
||||
~PTHREAD_MUTEX_NO_ELISION_NP.
|
||||
* manual/README.pretty-printers: Update reference to
|
||||
gen-py-const.awk.
|
||||
|
||||
Only the gen-as-const.py changes are included downstream. We keep using
|
||||
gen-py-const.awk for the build.
|
||||
|
||||
diff --git a/scripts/gen-as-const.py b/scripts/gen-as-const.py
|
||||
index f85e359394acb1a4..2f1dff092b98e044 100644
|
||||
--- a/scripts/gen-as-const.py
|
||||
+++ b/scripts/gen-as-const.py
|
||||
@@ -75,6 +75,8 @@ def main():
|
||||
help='C compiler (including options) to use')
|
||||
parser.add_argument('--test', action='store_true',
|
||||
help='Generate test case instead of header')
|
||||
+ parser.add_argument('--python', action='store_true',
|
||||
+ help='Generate Python file instead of header')
|
||||
parser.add_argument('sym_file',
|
||||
help='.sym file to process')
|
||||
args = parser.parse_args()
|
||||
@@ -103,6 +105,13 @@ def main():
|
||||
sym_data.append('START')
|
||||
if args.test:
|
||||
print(gen_test(sym_data))
|
||||
+ elif args.python:
|
||||
+ consts = glibcextract.compute_c_consts(sym_data, args.cc)
|
||||
+ print('# GENERATED FILE\n'
|
||||
+ '\n'
|
||||
+ '# Constant definitions.\n'
|
||||
+ '# See gen-as-const.py for details.\n')
|
||||
+ print(''.join('%s = %s\n' % c for c in sorted(consts.items())), end='')
|
||||
else:
|
||||
consts = glibcextract.compute_c_consts(sym_data, args.cc)
|
||||
print(''.join('#define %s %s\n' % c for c in sorted(consts.items())), end='')
|
Loading…
Add table
Add a link
Reference in a new issue