glibc/scripts
Joseph Myers cb7be1590e 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.
2018-12-10 22:56:59 +00:00
..
abi-versions.awk
abilist.awk scripts/abilist.awk: Handle special _end symbol for Hurd 2018-11-30 22:22:57 +01:00
backport-support.sh Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
build-many-glibcs.py posix: Do not include testcases.h, ptestcases.h in source tree 2018-11-29 13:51:25 +01:00
check-c++-types.sh Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
check-execstack.awk check-execstack: Permit sysdeps to xfail some libs 2018-07-20 03:28:14 +02:00
check-initfini.awk Mark _init and _fini as hidden [BZ #23145] 2018-06-08 10:28:52 -07:00
check-installed-headers.sh hurd: Fix inclusion of mach headers in all standards 2018-03-04 02:53:09 +01:00
check-local-headers.sh Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
check-localplt.awk
check-textrel.awk
config-uname.sh
config.guess Update miscellaneous files from upstream sources. 2018-12-06 17:21:47 +00:00
config.sub Update miscellaneous files from upstream sources. 2018-12-06 17:21:47 +00:00
cpp Make shebang interpreter directives consistent 2016-01-07 04:03:21 -05:00
cross-test-ssh.sh Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
documented.sh Make shebang interpreter directives consistent 2016-01-07 04:03:21 -05:00
evaluate-test.sh Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
firstversions.awk
gen-as-const.py Use gen-as-const.py to process .pysym files. 2018-12-10 22:56:59 +00:00
gen-libc-abis Make shebang interpreter directives consistent 2016-01-07 04:03:21 -05:00
gen-libc-modules.awk
gen-posix-conf-vars.awk
gen-rrtypes.py Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
gen-sorted.awk Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
gen-tunables.awk Fix range check in do_tunable_update_val 2017-09-27 02:44:09 +05:30
glibcextract.py Move tst-signal-numbers to Python. 2018-12-10 22:27:13 +00:00
haveversions.awk Don't build libnsl for new ABIs 2018-09-24 10:23:10 +02:00
install-sh Update miscellaneous files from upstream sources. 2018-12-06 17:21:47 +00:00
lib-names.awk
list-fixed-bugs.py Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
list-sources.sh
localplt.awk Support PLT and GOT references in local PIC check 2015-10-14 06:00:02 -07:00
merge-test-results.sh Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mkinstalldirs Update miscellaneous files from upstream sources. 2018-12-06 17:21:47 +00:00
move-if-change Update miscellaneous files from upstream sources. 2018-12-06 17:21:47 +00:00
output-format.sed
pylint
pylintrc pylintrc: disable reports 2015-11-11 13:41:57 -05:00
rellns-sh Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
soversions.awk
sysd-rules.awk sysd-rules: Cut down the number of rtld-% pattern rules 2016-09-20 10:41:05 +02:00
test_printers_common.py Disable lock elision for mutex pretty printer tests. 2018-04-19 12:45:11 +02:00
test_printers_exceptions.py Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
test-installation.pl Fix hardcoded /tmp paths in testing (bug 13888). 2018-06-26 21:48:48 +00:00
update-abilist.sh scripts/update-abilist.sh: Accept empty list of files to patch 2018-06-14 09:37:31 +02:00
update-copyrights Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
versionlist.awk Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
versions.awk Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00