[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[SCM] gawk branch, gawk-5.2-stable, updated. gawk-4.1.0-4969-g8ef27c83
From: |
Arnold Robbins |
Subject: |
[SCM] gawk branch, gawk-5.2-stable, updated. gawk-4.1.0-4969-g8ef27c83 |
Date: |
Thu, 1 Dec 2022 14:54:50 -0500 (EST) |
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gawk".
The branch, gawk-5.2-stable has been updated
via 8ef27c83a23fea93cca0b4efc12521a5bb5b186f (commit)
from e0b7737930f8a677d3c509f8ce72b9130965ec0a (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://git.sv.gnu.org/cgit/gawk.git/commit/?id=8ef27c83a23fea93cca0b4efc12521a5bb5b186f
commit 8ef27c83a23fea93cca0b4efc12521a5bb5b186f
Author: Arnold D. Robbins <arnold@skeeve.com>
Date: Thu Dec 1 21:54:12 2022 +0200
Disallow using / not using -M for multiple invocations with PMA.
diff --git a/ChangeLog b/ChangeLog
index 0ae42e69..01923d60 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2022-12-01 Arnold D. Robbins <arnold@skeeve.com>
+
+ Disallow using / not using -M across invocations of gawk with
+ a persistent heap.
+
+ * awk.h (pma_mpfr_check): Add declaration.
+ * symbol.c (pma_mpfr_check): New function. Enhance root pointer
+ structure.
+ * main.c (parse_args): Call pma_mpfr_check() if using persisent
+ malloc.
+
2022-11-23 Arnold D. Robbins <arnold@skeeve.com>
* msg.c: Update to GPL 3. Thanks to Corinna Vinschen for
diff --git a/awk.h b/awk.h
index 5cdc53d3..221634dd 100644
--- a/awk.h
+++ b/awk.h
@@ -1794,6 +1794,7 @@ extern NODE **function_list(bool sort);
extern void print_vars(NODE **table, Func_print print_func, FILE *fp);
extern bool check_param_names(void);
extern bool is_all_upper(const char *name);
+extern void pma_mpfr_check(void);
/* floatcomp.c */
#ifdef HAVE_UINTMAX_T
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 2652982c..1d753f97 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,8 @@
+2022-12-01 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawktexi.in (Persistent Memory): Document that using / not using
+ -M across invocations doesn't work and issues a fatal error message.
+
2022-11-17 Arnold D. Robbins <arnold@skeeve.com>
* 5.2.1: Release tar ball made.
diff --git a/doc/gawk.info b/doc/gawk.info
index a2e84c77..937784cc 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -22171,12 +22171,12 @@ so:
If you see the 'PMA' with a version indicator, then it's supported.
As of this writing, persistent memory has only been tested on
-GNU/Linux, Cygwin, Solaris 2.11, macOS systems,(1) FreeBSD 13.1 and
-OpenBSD 7.1. On all others, persistent memory is disabled by default.
-You can force it to be enabled by exporting the shell variable
-'REALLY_USE_PERSIST_MALLOC' with a nonempty value before running
-'configure' (*note Quick Installation::). If you do so and all the
-tests pass, please let the maintainer know.
+GNU/Linux, Cygwin, Solaris 2.11, Intel architecture macOS systems,
+FreeBSD 13.1 and OpenBSD 7.1. On all others, persistent memory is
+disabled by default. You can force it to be enabled by exporting the
+shell variable 'REALLY_USE_PERSIST_MALLOC' with a nonempty value before
+running 'configure' (*note Quick Installation::). If you do so and all
+the tests pass, please let the maintainer know.
To use persistent memory, follow these steps:
@@ -22242,9 +22242,8 @@ the different verbosity levels are.
run, do not use it on any subsequent runs.
Mixing and matching MPFR mode and regular mode with the same
- backing file will lead to strange results and/or core dumps.
- 'gawk' does not currently detect such a situation and may not do so
- in the future either.
+ backing file is not allowed. 'gawk' detects such a situation and
+ issues a fatal error message.
Additionally, the GNU/Linux CIFS filesystem is known to not work
well with the PMA allocator. Don't use a backing file on a CIFS
@@ -22311,14 +22310,11 @@ otherwise undocumented.
persistent functions.
As noted earlier, support for persistent memory is _experimental_.
-If it becomes burdensome,(2) then the feature will be removed.
+If it becomes burdensome,(1) then the feature will be removed.
---------- Footnotes ----------
- (1) For reasons explained in 'README_d/README.macosx', 'gawk' is
-always built as an Intel architecture executable, even on M1 systems.
-
- (2) Meaning, there are too many bug reports, or too many strange
+ (1) Meaning, there are too many bug reports, or too many strange
differences in behavior from when 'gawk' is run normally.
@@ -37832,7 +37828,7 @@ Index
* Kahrs, Jürgen <1>: Contributors. (line 71)
* Kasal, Stepan: Acknowledgments. (line 60)
* Kelly, Terence: Persistent Memory. (line 71)
-* Kelly, Terence <1>: Persistent Memory. (line 117)
+* Kelly, Terence <1>: Persistent Memory. (line 116)
* Kelly, Terence <2>: Feature History. (line 508)
* Kenobi, Obi-Wan: Undocumented. (line 6)
* Kernighan, Brian: History. (line 17)
@@ -39628,245 +39624,244 @@ Ref: Two-way I/O-Footnote-2885054
Node: TCP/IP Networking885136
Node: Profiling888212
Node: Persistent Memory897518
-Ref: Persistent Memory-Footnote-1905824
-Ref: Persistent Memory-Footnote-2905963
-Node: Extension Philosophy906090
-Node: Advanced Features Summary907577
-Node: Internationalization909749
-Node: I18N and L10N911423
-Node: Explaining gettext912110
-Ref: Explaining gettext-Footnote-1918002
-Ref: Explaining gettext-Footnote-2918187
-Node: Programmer i18n918352
-Ref: Programmer i18n-Footnote-1923301
-Node: Translator i18n923350
-Node: String Extraction924144
-Ref: String Extraction-Footnote-1925276
-Node: Printf Ordering925362
-Ref: Printf Ordering-Footnote-1928148
-Node: I18N Portability928212
-Ref: I18N Portability-Footnote-1930668
-Node: I18N Example930731
-Ref: I18N Example-Footnote-1934006
-Ref: I18N Example-Footnote-2934079
-Node: Gawk I18N934188
-Node: I18N Summary934810
-Node: Debugger936151
-Node: Debugging937151
-Node: Debugging Concepts937592
-Node: Debugging Terms939401
-Node: Awk Debugging941976
-Ref: Awk Debugging-Footnote-1942921
-Node: Sample Debugging Session943053
-Node: Debugger Invocation943587
-Node: Finding The Bug944973
-Node: List of Debugger Commands951447
-Node: Breakpoint Control952780
-Node: Debugger Execution Control956474
-Node: Viewing And Changing Data959836
-Node: Execution Stack963377
-Node: Debugger Info965014
-Node: Miscellaneous Debugger Commands969085
-Node: Readline Support974147
-Node: Limitations975043
-Node: Debugging Summary977597
-Node: Namespaces978876
-Node: Global Namespace979987
-Node: Qualified Names981385
-Node: Default Namespace982384
-Node: Changing The Namespace983125
-Node: Naming Rules984739
-Node: Internal Name Management986587
-Node: Namespace Example987629
-Node: Namespace And Features990191
-Node: Namespace Summary991626
-Node: Arbitrary Precision Arithmetic993103
-Node: Computer Arithmetic994590
-Ref: table-numeric-ranges998356
-Ref: table-floating-point-ranges998850
-Ref: Computer Arithmetic-Footnote-1999509
-Node: Math Definitions999566
-Ref: table-ieee-formats1002542
-Node: MPFR features1003110
-Node: MPFR On Parole1003555
-Ref: MPFR On Parole-Footnote-11004384
-Node: MPFR Intro1004539
-Node: FP Math Caution1006190
-Ref: FP Math Caution-Footnote-11007262
-Node: Inexactness of computations1007631
-Node: Inexact representation1008662
-Node: Comparing FP Values1010022
-Node: Errors accumulate1011263
-Node: Strange values1012719
-Ref: Strange values-Footnote-11015307
-Node: Getting Accuracy1015412
-Node: Try To Round1018122
-Node: Setting precision1019021
-Ref: table-predefined-precision-strings1019718
-Node: Setting the rounding mode1021549
-Ref: table-gawk-rounding-modes1021923
-Ref: Setting the rounding mode-Footnote-11025855
-Node: Arbitrary Precision Integers1026034
-Ref: Arbitrary Precision Integers-Footnote-11029209
-Node: Checking for MPFR1029358
-Node: POSIX Floating Point Problems1030832
-Ref: POSIX Floating Point Problems-Footnote-11035485
-Node: Floating point summary1035523
-Node: Dynamic Extensions1037713
-Node: Extension Intro1039266
-Node: Plugin License1040532
-Node: Extension Mechanism Outline1041329
-Ref: figure-load-extension1041768
-Ref: figure-register-new-function1043334
-Ref: figure-call-new-function1044427
-Node: Extension API Description1046490
-Node: Extension API Functions Introduction1048203
-Ref: table-api-std-headers1050039
-Node: General Data Types1054289
-Ref: General Data Types-Footnote-11062995
-Node: Memory Allocation Functions1063294
-Ref: Memory Allocation Functions-Footnote-11067795
-Node: Constructor Functions1067894
-Node: API Ownership of MPFR and GMP Values1071547
-Node: Registration Functions1073080
-Node: Extension Functions1073780
-Node: Exit Callback Functions1079102
-Node: Extension Version String1080352
-Node: Input Parsers1081015
-Node: Output Wrappers1093736
-Node: Two-way processors1098248
-Node: Printing Messages1100513
-Ref: Printing Messages-Footnote-11101684
-Node: Updating ERRNO1101837
-Node: Requesting Values1102576
-Ref: table-value-types-returned1103313
-Node: Accessing Parameters1104422
-Node: Symbol Table Access1105659
-Node: Symbol table by name1106171
-Ref: Symbol table by name-Footnote-11109196
-Node: Symbol table by cookie1109324
-Ref: Symbol table by cookie-Footnote-11113509
-Node: Cached values1113573
-Ref: Cached values-Footnote-11117109
-Node: Array Manipulation1117262
-Ref: Array Manipulation-Footnote-11118353
-Node: Array Data Types1118390
-Ref: Array Data Types-Footnote-11121048
-Node: Array Functions1121140
-Node: Flattening Arrays1125925
-Node: Creating Arrays1132901
-Node: Redirection API1137668
-Node: Extension API Variables1140501
-Node: Extension Versioning1141212
-Ref: gawk-api-version1141641
-Node: Extension GMP/MPFR Versioning1143373
-Node: Extension API Informational Variables1145001
-Node: Extension API Boilerplate1146074
-Node: Changes from API V11150048
-Node: Finding Extensions1151620
-Node: Extension Example1152179
-Node: Internal File Description1152977
-Node: Internal File Ops1157057
-Ref: Internal File Ops-Footnote-11168407
-Node: Using Internal File Ops1168547
-Ref: Using Internal File Ops-Footnote-11170930
-Node: Extension Samples1171204
-Node: Extension Sample File Functions1172733
-Node: Extension Sample Fnmatch1180382
-Node: Extension Sample Fork1181869
-Node: Extension Sample Inplace1183087
-Node: Extension Sample Ord1186713
-Node: Extension Sample Readdir1187549
-Ref: table-readdir-file-types1188438
-Node: Extension Sample Revout1189506
-Node: Extension Sample Rev2way1190095
-Node: Extension Sample Read write array1190835
-Node: Extension Sample Readfile1194021
-Node: Extension Sample Time1195116
-Node: Extension Sample API Tests1196868
-Node: gawkextlib1197360
-Node: Extension summary1200278
-Node: Extension Exercises1203980
-Node: Language History1205222
-Node: V7/SVR3.11206878
-Node: SVR41209030
-Node: POSIX1210464
-Node: BTL1211845
-Node: POSIX/GNU1212574
-Node: Feature History1218491
-Node: Common Extensions1236230
-Node: Ranges and Locales1237513
-Ref: Ranges and Locales-Footnote-11242129
-Ref: Ranges and Locales-Footnote-21242156
-Ref: Ranges and Locales-Footnote-31242391
-Node: Contributors1242614
-Node: History summary1248611
-Node: Installation1249991
-Node: Gawk Distribution1250935
-Node: Getting1251419
-Node: Extracting1252382
-Node: Distribution contents1254020
-Node: Unix Installation1261518
-Node: Quick Installation1262322
-Node: Compiling with MPFR1264742
-Node: Shell Startup Files1265432
-Node: Additional Configuration Options1266521
-Node: Configuration Philosophy1268836
-Node: Compiling from Git1271232
-Node: Building the Documentation1271787
-Node: Non-Unix Installation1273171
-Node: PC Installation1273635
-Node: PC Binary Installation1274480
-Node: PC Compiling1275353
-Node: PC Using1276459
-Node: Cygwin1279955
-Node: MSYS1281179
-Node: OpenVMS Installation1281781
-Node: OpenVMS Compilation1282442
-Ref: OpenVMS Compilation-Footnote-11283865
-Node: OpenVMS Dynamic Extensions1283923
-Node: OpenVMS Installation Details1285535
-Node: OpenVMS Running1287830
-Node: OpenVMS GNV1291831
-Node: Bugs1292574
-Node: Bug definition1293486
-Node: Bug address1296988
-Node: Usenet1300507
-Node: Performance bugs1301696
-Node: Asking for help1304617
-Node: Maintainers1306584
-Node: Other Versions1307591
-Node: Installation summary1316170
-Node: Notes1317510
-Node: Compatibility Mode1318304
-Node: Additions1319086
-Node: Accessing The Source1320011
-Node: Adding Code1321448
-Node: New Ports1328263
-Node: Derived Files1332638
-Ref: Derived Files-Footnote-11338297
-Ref: Derived Files-Footnote-21338332
-Ref: Derived Files-Footnote-31338927
-Node: Future Extensions1339041
-Node: Implementation Limitations1339699
-Node: Extension Design1340909
-Node: Old Extension Problems1342053
-Ref: Old Extension Problems-Footnote-11343571
-Node: Extension New Mechanism Goals1343628
-Ref: Extension New Mechanism Goals-Footnote-11346992
-Node: Extension Other Design Decisions1347181
-Node: Extension Future Growth1349294
-Node: Notes summary1349900
-Node: Basic Concepts1351058
-Node: Basic High Level1351739
-Ref: figure-general-flow1352021
-Ref: figure-process-flow1352707
-Ref: Basic High Level-Footnote-11356009
-Node: Basic Data Typing1356194
-Node: Glossary1359522
-Node: Copying1391409
-Node: GNU Free Documentation License1428952
-Node: Index1454072
+Ref: Persistent Memory-Footnote-1905781
+Node: Extension Philosophy905908
+Node: Advanced Features Summary907395
+Node: Internationalization909567
+Node: I18N and L10N911241
+Node: Explaining gettext911928
+Ref: Explaining gettext-Footnote-1917820
+Ref: Explaining gettext-Footnote-2918005
+Node: Programmer i18n918170
+Ref: Programmer i18n-Footnote-1923119
+Node: Translator i18n923168
+Node: String Extraction923962
+Ref: String Extraction-Footnote-1925094
+Node: Printf Ordering925180
+Ref: Printf Ordering-Footnote-1927966
+Node: I18N Portability928030
+Ref: I18N Portability-Footnote-1930486
+Node: I18N Example930549
+Ref: I18N Example-Footnote-1933824
+Ref: I18N Example-Footnote-2933897
+Node: Gawk I18N934006
+Node: I18N Summary934628
+Node: Debugger935969
+Node: Debugging936969
+Node: Debugging Concepts937410
+Node: Debugging Terms939219
+Node: Awk Debugging941794
+Ref: Awk Debugging-Footnote-1942739
+Node: Sample Debugging Session942871
+Node: Debugger Invocation943405
+Node: Finding The Bug944791
+Node: List of Debugger Commands951265
+Node: Breakpoint Control952598
+Node: Debugger Execution Control956292
+Node: Viewing And Changing Data959654
+Node: Execution Stack963195
+Node: Debugger Info964832
+Node: Miscellaneous Debugger Commands968903
+Node: Readline Support973965
+Node: Limitations974861
+Node: Debugging Summary977415
+Node: Namespaces978694
+Node: Global Namespace979805
+Node: Qualified Names981203
+Node: Default Namespace982202
+Node: Changing The Namespace982943
+Node: Naming Rules984557
+Node: Internal Name Management986405
+Node: Namespace Example987447
+Node: Namespace And Features990009
+Node: Namespace Summary991444
+Node: Arbitrary Precision Arithmetic992921
+Node: Computer Arithmetic994408
+Ref: table-numeric-ranges998174
+Ref: table-floating-point-ranges998668
+Ref: Computer Arithmetic-Footnote-1999327
+Node: Math Definitions999384
+Ref: table-ieee-formats1002360
+Node: MPFR features1002928
+Node: MPFR On Parole1003373
+Ref: MPFR On Parole-Footnote-11004202
+Node: MPFR Intro1004357
+Node: FP Math Caution1006008
+Ref: FP Math Caution-Footnote-11007080
+Node: Inexactness of computations1007449
+Node: Inexact representation1008480
+Node: Comparing FP Values1009840
+Node: Errors accumulate1011081
+Node: Strange values1012537
+Ref: Strange values-Footnote-11015125
+Node: Getting Accuracy1015230
+Node: Try To Round1017940
+Node: Setting precision1018839
+Ref: table-predefined-precision-strings1019536
+Node: Setting the rounding mode1021367
+Ref: table-gawk-rounding-modes1021741
+Ref: Setting the rounding mode-Footnote-11025673
+Node: Arbitrary Precision Integers1025852
+Ref: Arbitrary Precision Integers-Footnote-11029027
+Node: Checking for MPFR1029176
+Node: POSIX Floating Point Problems1030650
+Ref: POSIX Floating Point Problems-Footnote-11035303
+Node: Floating point summary1035341
+Node: Dynamic Extensions1037531
+Node: Extension Intro1039084
+Node: Plugin License1040350
+Node: Extension Mechanism Outline1041147
+Ref: figure-load-extension1041586
+Ref: figure-register-new-function1043152
+Ref: figure-call-new-function1044245
+Node: Extension API Description1046308
+Node: Extension API Functions Introduction1048021
+Ref: table-api-std-headers1049857
+Node: General Data Types1054107
+Ref: General Data Types-Footnote-11062813
+Node: Memory Allocation Functions1063112
+Ref: Memory Allocation Functions-Footnote-11067613
+Node: Constructor Functions1067712
+Node: API Ownership of MPFR and GMP Values1071365
+Node: Registration Functions1072898
+Node: Extension Functions1073598
+Node: Exit Callback Functions1078920
+Node: Extension Version String1080170
+Node: Input Parsers1080833
+Node: Output Wrappers1093554
+Node: Two-way processors1098066
+Node: Printing Messages1100331
+Ref: Printing Messages-Footnote-11101502
+Node: Updating ERRNO1101655
+Node: Requesting Values1102394
+Ref: table-value-types-returned1103131
+Node: Accessing Parameters1104240
+Node: Symbol Table Access1105477
+Node: Symbol table by name1105989
+Ref: Symbol table by name-Footnote-11109014
+Node: Symbol table by cookie1109142
+Ref: Symbol table by cookie-Footnote-11113327
+Node: Cached values1113391
+Ref: Cached values-Footnote-11116927
+Node: Array Manipulation1117080
+Ref: Array Manipulation-Footnote-11118171
+Node: Array Data Types1118208
+Ref: Array Data Types-Footnote-11120866
+Node: Array Functions1120958
+Node: Flattening Arrays1125743
+Node: Creating Arrays1132719
+Node: Redirection API1137486
+Node: Extension API Variables1140319
+Node: Extension Versioning1141030
+Ref: gawk-api-version1141459
+Node: Extension GMP/MPFR Versioning1143191
+Node: Extension API Informational Variables1144819
+Node: Extension API Boilerplate1145892
+Node: Changes from API V11149866
+Node: Finding Extensions1151438
+Node: Extension Example1151997
+Node: Internal File Description1152795
+Node: Internal File Ops1156875
+Ref: Internal File Ops-Footnote-11168225
+Node: Using Internal File Ops1168365
+Ref: Using Internal File Ops-Footnote-11170748
+Node: Extension Samples1171022
+Node: Extension Sample File Functions1172551
+Node: Extension Sample Fnmatch1180200
+Node: Extension Sample Fork1181687
+Node: Extension Sample Inplace1182905
+Node: Extension Sample Ord1186531
+Node: Extension Sample Readdir1187367
+Ref: table-readdir-file-types1188256
+Node: Extension Sample Revout1189324
+Node: Extension Sample Rev2way1189913
+Node: Extension Sample Read write array1190653
+Node: Extension Sample Readfile1193839
+Node: Extension Sample Time1194934
+Node: Extension Sample API Tests1196686
+Node: gawkextlib1197178
+Node: Extension summary1200096
+Node: Extension Exercises1203798
+Node: Language History1205040
+Node: V7/SVR3.11206696
+Node: SVR41208848
+Node: POSIX1210282
+Node: BTL1211663
+Node: POSIX/GNU1212392
+Node: Feature History1218309
+Node: Common Extensions1236048
+Node: Ranges and Locales1237331
+Ref: Ranges and Locales-Footnote-11241947
+Ref: Ranges and Locales-Footnote-21241974
+Ref: Ranges and Locales-Footnote-31242209
+Node: Contributors1242432
+Node: History summary1248429
+Node: Installation1249809
+Node: Gawk Distribution1250753
+Node: Getting1251237
+Node: Extracting1252200
+Node: Distribution contents1253838
+Node: Unix Installation1261336
+Node: Quick Installation1262140
+Node: Compiling with MPFR1264560
+Node: Shell Startup Files1265250
+Node: Additional Configuration Options1266339
+Node: Configuration Philosophy1268654
+Node: Compiling from Git1271050
+Node: Building the Documentation1271605
+Node: Non-Unix Installation1272989
+Node: PC Installation1273453
+Node: PC Binary Installation1274298
+Node: PC Compiling1275171
+Node: PC Using1276277
+Node: Cygwin1279773
+Node: MSYS1280997
+Node: OpenVMS Installation1281599
+Node: OpenVMS Compilation1282260
+Ref: OpenVMS Compilation-Footnote-11283683
+Node: OpenVMS Dynamic Extensions1283741
+Node: OpenVMS Installation Details1285353
+Node: OpenVMS Running1287648
+Node: OpenVMS GNV1291649
+Node: Bugs1292392
+Node: Bug definition1293304
+Node: Bug address1296806
+Node: Usenet1300325
+Node: Performance bugs1301514
+Node: Asking for help1304435
+Node: Maintainers1306402
+Node: Other Versions1307409
+Node: Installation summary1315988
+Node: Notes1317328
+Node: Compatibility Mode1318122
+Node: Additions1318904
+Node: Accessing The Source1319829
+Node: Adding Code1321266
+Node: New Ports1328081
+Node: Derived Files1332456
+Ref: Derived Files-Footnote-11338115
+Ref: Derived Files-Footnote-21338150
+Ref: Derived Files-Footnote-31338745
+Node: Future Extensions1338859
+Node: Implementation Limitations1339517
+Node: Extension Design1340727
+Node: Old Extension Problems1341871
+Ref: Old Extension Problems-Footnote-11343389
+Node: Extension New Mechanism Goals1343446
+Ref: Extension New Mechanism Goals-Footnote-11346810
+Node: Extension Other Design Decisions1346999
+Node: Extension Future Growth1349112
+Node: Notes summary1349718
+Node: Basic Concepts1350876
+Node: Basic High Level1351557
+Ref: figure-general-flow1351839
+Ref: figure-process-flow1352525
+Ref: Basic High Level-Footnote-11355827
+Node: Basic Data Typing1356012
+Node: Glossary1359340
+Node: Copying1391227
+Node: GNU Free Documentation License1428770
+Node: Index1453890
End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index def8dc8a..5ff6b507 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -31076,9 +31076,7 @@ If you see the @samp{PMA} with a version indicator,
then it's supported.
@cindex @env{REALLY_USE_PERSIST_MALLOC} environment variable
@cindex environment variables @subentry @env{REALLY_USE_PERSIST_MALLOC}
As of this writing, persistent memory has only been tested on GNU/Linux,
-Cygwin, Solaris 2.11, macOS systems,@footnote{For reasons explained in
-@file{README_d/README.macosx}, @command{gawk} is always built as an Intel
-architecture executable, even on M1 systems.}
+Cygwin, Solaris 2.11, Intel architecture macOS systems,
FreeBSD 13.1 and OpenBSD 7.1.
On all others, persistent memory is disabled by default. You can force
it to be enabled by exporting the shell variable
@@ -31179,10 +31177,9 @@ of a program using persistent memory, you @emph{must}
continue
to use it on all subsequent runs. Similarly, if you don't use @option{-M}
on the first run, do not use it on any subsequent runs.
-Mixing and matching MPFR mode and regular mode with the same
-backing file will lead to strange results and/or core dumps.
-@command{gawk} does not currently detect such a situation and
-may not do so in the future either.
+Mixing and matching MPFR mode and regular mode with the same backing
+file is not allowed. @command{gawk} detects such a situation and issues
+a fatal error message.
Additionally, the GNU/Linux CIFS filesystem is known to not
work well with the PMA allocator.
diff --git a/doc/gawktexi.in b/doc/gawktexi.in
index 66b7dce6..8ef44e19 100644
--- a/doc/gawktexi.in
+++ b/doc/gawktexi.in
@@ -29958,9 +29958,7 @@ If you see the @samp{PMA} with a version indicator,
then it's supported.
@cindex @env{REALLY_USE_PERSIST_MALLOC} environment variable
@cindex environment variables @subentry @env{REALLY_USE_PERSIST_MALLOC}
As of this writing, persistent memory has only been tested on GNU/Linux,
-Cygwin, Solaris 2.11, macOS systems,@footnote{For reasons explained in
-@file{README_d/README.macosx}, @command{gawk} is always built as an Intel
-architecture executable, even on M1 systems.}
+Cygwin, Solaris 2.11, Intel architecture macOS systems,
FreeBSD 13.1 and OpenBSD 7.1.
On all others, persistent memory is disabled by default. You can force
it to be enabled by exporting the shell variable
@@ -30061,10 +30059,9 @@ of a program using persistent memory, you @emph{must}
continue
to use it on all subsequent runs. Similarly, if you don't use @option{-M}
on the first run, do not use it on any subsequent runs.
-Mixing and matching MPFR mode and regular mode with the same
-backing file will lead to strange results and/or core dumps.
-@command{gawk} does not currently detect such a situation and
-may not do so in the future either.
+Mixing and matching MPFR mode and regular mode with the same backing
+file is not allowed. @command{gawk} detects such a situation and issues
+a fatal error message.
Additionally, the GNU/Linux CIFS filesystem is known to not
work well with the PMA allocator.
diff --git a/main.c b/main.c
index ef0ab023..9443f5bc 100644
--- a/main.c
+++ b/main.c
@@ -1854,6 +1854,9 @@ parse_args(int argc, char **argv)
out:
do_optimize = (do_optimize && ! do_pretty_print);
+ if (using_persistent_malloc)
+ pma_mpfr_check();
+
return;
}
diff --git a/symbol.c b/symbol.c
index b74208d7..65e710e4 100644
--- a/symbol.c
+++ b/symbol.c
@@ -66,6 +66,16 @@ init_the_tables(void)
installing_specials = false;
}
+// using persistent memory, manage the root pointer
+// which holds this struct:
+struct root_pointers {
+ NODE *global_table;
+ NODE *func_table;
+ NODE *symbol_table;
+ bool first;
+ int mpfr;
+} *root_pointers = NULL;
+
/* init_symbol_table --- make sure the symbol tables are initialized */
void
@@ -77,14 +87,6 @@ init_symbol_table()
return;
}
- // using persistent memory, get the root pointer
- // which holds this struct:
- struct root_pointers {
- NODE *global_table;
- NODE *func_table;
- NODE *symbol_table;
- } *root_pointers = NULL;
-
root_pointers = (struct root_pointers *) pma_get_root();
if (root_pointers == NULL) {
@@ -98,6 +100,8 @@ init_symbol_table()
root_pointers->global_table = global_table;
root_pointers->func_table = func_table;
root_pointers->symbol_table = symbol_table;
+ root_pointers->first = true;
+ root_pointers->mpfr = 0;
pma_set_root(root_pointers);
} else {
// this is the next time, get the saved pointers and put them
back in place
@@ -112,6 +116,22 @@ init_symbol_table()
}
}
+/* pma_mpfr_check --- check that -M is same between invocations */
+
+void
+pma_mpfr_check(void)
+{
+ if (root_pointers->first) {
+ root_pointers->first = false;
+ root_pointers->mpfr = do_mpfr;
+ pma_set_root(root_pointers);
+ return;
+ }
+
+ if (root_pointers->mpfr != do_mpfr)
+ fatal(_("current setting of -M/--bignum does not match saved
setting in PMA backing file"));
+}
+
/*
* install_symbol:
* Install a global name in the symbol table, even if it is already there.
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 11 ++
awk.h | 1 +
doc/ChangeLog | 5 +
doc/gawk.info | 503 ++++++++++++++++++++++++++++----------------------------
doc/gawk.texi | 11 +-
doc/gawktexi.in | 11 +-
main.c | 3 +
symbol.c | 36 +++-
8 files changed, 305 insertions(+), 276 deletions(-)
hooks/post-receive
--
gawk
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [SCM] gawk branch, gawk-5.2-stable, updated. gawk-4.1.0-4969-g8ef27c83,
Arnold Robbins <=